Lataa esitys
Esittely latautuu. Ole hyvä ja odota
JulkaistuAarno Härkönen Muutettu yli 9 vuotta sitten
1
1 Ehtolausekkeet Ehdot, valintalausekkeet Boolean-algebra
2
2 Vertailulauseet ==yhtäsuuruus !=erisuuruus <pienempi <=pienempi tai yhtäsuuri >suurempi >=suurempi tai yhtäsuuri Esimerkkejä: int i=7; int j=10; Jolloin: i < j == true i >= j == false i != j == true
3
3 Vertailulauseet Huomaa ero sijoitusoperaatiolla ja vertailuoperaatiolla: ”=” Sijoitusoperaatio ”==” Vertailuoperaatio Esimerkki j = 1; // j saa arvokseen yksi j == 1 // onko j:n arvo yksi?
4
4 Vertailulauseet Suuremmuutta ja pienemmyyttä tutkivilla operaatioilla voi vertailla vain numeerisia lausekkeita Yhtäsuuruus ja erisuuruus ovat käytössä muidenkin arvojen vertailuissa Esimerkki double d=0.1; double e=0.2; String auto(”Auto”); String bussi(”Bussi”); d < e == true // Sallittu auto < bussi // Ei sallittu! // Sallittu, mutta ei suositeltu sisällön // vertailuun auto != bussi
5
5 if-lauseke Ohjelmassa voi olla valintalauseita: if (ehto) { // tee jotain } else { // tee jotain muuta }
6
6 if-lauseke ehdon tulee aina olla jokin totuusarvo jos totuusarvo on tosi, suoritetaan if- lauseketta seuraava lohko jos totuusarvo on epätosi, suoritetaan else-lausekkeen jälkeinen lohko (jos sellainen on olemassa) else-osassa voi olla uusi if-lauseke (else if)
7
7 if-lauseke – esimerkki 1 public void isPositive(int i) { System.out.println(”Luku ” + i ); if (i>0) System.out.println(” on positiivinen.”); else if (i<0) System.out.println(” on negatiivinen.”); else System.out.println(” on nolla.”); }
8
8 Lohkot Jos valintavaihtoehto koostuu useammasta lauseesta, lauseet on koottava yhteen lohkoksi Lohko on merkkien ”{” ja ”}” välisten lauseiden jono Lohkon viimeisen aaltosulun jälkeen ei käytetä puolipistettä.
9
9 if-lauseke – esimerkki 2 public void isPositive(int i) { System.out.println(”Luku ” + i ); if (i>0) { System.out.println(” on positiivinen.”); doSomething(i); } else if (i<0) System.out.println(” on negatiivinen.”); else System.out.println(” on nolla.”); }
10
10 if-lauseke – moniselitteisyys? if-lauseeseen ei ole pakko liittyä else-osaa, jonka vuoksi tulee huomata mihin mikäkin else-osa liittyy Esimerkki if (a<b) if (c<d) e=f; else g=h; // Tarkoittaako tämä: if (a<b) if (a<b) if (c<d) if (c<d) e=f; e=f; else else g=h; g=h; Sääntö: else-osa liittyy aina lähimpään edeltävään if- lauseeseen
11
11 Totuusarvojen yhdistely Totuusarvoilla voi laskea: (a == b) // a ja b yhtäsuuret (a != b) // a erisuuri kuin b (a && b) // a ja b tosia (a || b) // a tai b (!a) // a epätosi Edellä esiteltyjä voi yhdistellä, esimerkiksi: (a || b) && (c || d) // a tai b ja c tai d
12
12 switch-lauseke switch-lausekkeella voi olla eri haaroja switch soveltuu paikkoihin, joissa on tarvetta käsitellä monia eri numeroarvoihin perustuvia haaroja switch-lausekkeessa voi olla default-haara, joka suoritetaan mikäli yksikään muu haara ei toteudu switch-lausekkeessa on muistettava break:n käyttö (kts. seuraava esimerkki). break:lla poistutaan switch-lauseesta.
13
13 switch-lauseke - esimerkki public void printNumber(int i) { switch(i) { case 0: System.out.println(”nolla”); break; case 1: System.out.println(”yksi”); break; default: System.out.println(”ei yksi eikä nolla”); break; }
14
14 boolean-perustietotyyppi Totuusarvo voidaan sijoittaa boolean- tyyppiseen perustietotyyppiin boolean isBigger = (a>b); if (isBigger) System.out.println(”a is bigger than b”); else System.out.println(”a isn’t bigger than b”);
15
15 Toisto Toistolausekkeet for, while(ehto){…} ja do {…} while(ehto) Toistorakenteista poistuminen ja niiden sisällä siirtyminen
16
16 Esiehtoinen toistorakenne while (ehto) { /* suoritettava koodi */ } Esimerkki: int powerOfTwo = 2; while (powerOfTwo < 10) { System.out.println(”Next power: ” + powerOfTwo); powerOfTwo *= 2; }
17
17 Esiehtoinen toistorakenne Toistorakennetta suoritetaan niin kauan kun annettu ehto on tosi ( true ) Mikäli ehto ei ole aluksikaan tosi, ei toistorakennetta suoriteta kertaakaan
18
18 Jälkiehtoinen toistorakenne do { /* suoritettava koodi */ } while (ehto); Esimerkki: boolean mayExit = false; do { System.out.println(”Syötä luku (1-9) : ”); int userValue = Lue.kluku(); if (userValue>0 && userValue<10) mayExit = true; } while (!mayExit);
19
19 Jälkiehtoinen toistorakenne Toistorakenne suoritetaan vähintään yhden kerran Seuraavalle suorituskerralle siirrytään, mikäli annettu ehto on tosi
20
20 for-toistorakenne for (alustus;jatkamisehto;lisäyslauseke) { /* suoritettava koodi */ } Käyttö järkevää kun toistojen lukumäärä on ennakkoon tiedossa Esimerkki for (int i=0;i<10;i++) { System.out.println(”Luku ” + i); }
21
21 for-toistorakenne 1)suoritetaan yhden kerran 2)suoritetaan joka kierroksella, jos totuusarvo on false, toistorakenteen suoritus päättyy 3)suoritetaan joka kierroksen lopuksi ennen seuraavan kierroksen kohdan (2) tarkastusta for (int i=0;i<10;i++) { System.out.println(”Luku ” + i); } (1)(2)(3) Tuloste Luku 0 Luku 1 Luku 2 Luku 3 Luku 4 Luku 5 Luku 6 Luku 7 Luku 8 Luku 9
22
22 break ja continue toistorakenteissa Kaikissa edellä esitellyissä toistorakenteissa voidaan käyttää break- ja continue -lausekkeita: break -lauseke poistuu toistorakenteesta continue -lauseke siirtyy suoraan seuraavalle suorituskerralle turhaa käyttöä kannattaa välttää
23
23 break ja continue - esimerkki for (int i=0;i<10;i++) { if (i==5) continue; else if (i==8) break; System.out.println(”Kierros ” + i); } hyppy seuraavalle kierrokselle, mikäli jatkoehto 1 toteutuu, lisäyslauseke 2 suoritetaan kuten normaalisti (1)(2) poistutaan suoraan for-lausekkeesta Tuloste: Kierros 0 Kierros 1 Kierros 2 Kierros 3 Kierros 4 Kierros 6 Kierros 7
24
24 ehtojen asettaminen Kaikissa toistorakenteissa käytetään jotakin ehtoa, joka kertoo milloin suoritus lopetetaan Ehdot kannattaa asettaa mahdollisimman rajaaviksi, esimerkiksi: public void printNumbers(int count) { for (int i=0;i<count;i++) { System.out.println(”Luku ” + i); } ei i!=count, koska silloin esim. luvulla –1 kutsuttaessa suoritus ei päättyisi ikinä Ikuisten toistojen välttäminen em. ohjelmointityylillä on hyvä tapa
25
25 Java 2 API Dokumentaatio Paketit Käyttö
26
26 Java 2 API Java 2 API (Application Programming Interface) tarjoaa runsaasti valmiita luokkia käytettäväksi ohjelmissa Math – lukujen käsittely String – merkkijono ja sen käsittely StringTokenizer – merkkijonon pätkiminen ... Luokkien käyttöohjeet löytyvät käytetyn Java- version API-dokumentaatiosta: http://java.sun.com/j2se/1.4.2/docs/api/ http://java.sun.com/j2se/1.4.2/docs/api/
27
27 Paketit Paketilla tarkoitetaan samantyyppisten luokkien muodostamaa kokonaisuutta Luokan (käännösyksikön) paketti määritellään tiedoston alussa: package paketin_nimi; Ellei tiedoston alussa ole package-määrettä, class-tiedosto asetetaan nimettömään pakkaukseen Luokan kuuluminen alipakettiin ilmaistaan: package paketin_nimi.alipaketti;
28
28 Paketit Pakettiin kuuluminen tarkoittaa että luokkaa käytettäessä sen edessä on käytettävä pakkauksen nimeä: pakkaus.Luokka x = new pakkaus.Luokka(); Käytännössä on järkevämpi käyttää aina import-lausekkeita // Sallii pakkaus1:n kaikkien luokkien käytön import pakkaus1.*; // Sallii pakkaus1:n luokan Auto käytön import pakkaus1.Auto; import-lausekkeet kirjoitetaan tiedoston alkuun mahdollisen package-määrityksen jälkeen Tiedostosta käy selkeästi ilmi mitä pakkauksia se käyttää
29
29 Java 2 API Kaikki Java 2 API:n luokat on sijoitettu paketteihin java.lang java.math java.io ... Paketti, johon luokka kuuluu selviää API- dokumentaatiosta Kaikkiin tiedostoihin tuodaan automaattisesti Javan pakkaus java.lang. (import java.lang.*;)
30
30 Metodit Metodin muoto Määreet Staattiset metodit ja attribuutit Arvotyyppi Parametrit Kuormittaminen Rekursio
31
31 Metodit Alialgoritmit (aliohjelmat) toteutetaan metodeissa Metodeilla voi olla parametreja (lähtötiedot) ja se voi palauttaa jonkin arvon Metodien käyttö olioiden luonti (konstruktori) piilossa olevan tiedon kysely ja käyttö (aksessorit) algoritmit pääohjelmametodi ”public static void main(String[] args)”
32
32 Metodit – Muoto määreet arvotyyppi nimi(parametrit) { algoritmi } Määreillä ohjataan metodin käyttömahdollisuuksia Arvotyyppi kertoo minkä tyyppisen arvon metodi palauttaa Nimi yksilöi metodin Parametrit ovat metodin muuttujia, jotka metodin kutsuja antaa Algoritmi toteuttaa metodin tehtävän Esimerkki: public static void printString(final String str) { System.out.println(str); }
33
33 Metodit – Muoto Konstruktoreilla ei ole paluuarvoa public Student(String name) {...} public Car() {...} Konstruktori ei voi olla staattinen (static) Konstruktori voi olla normaalin public- näkyvyysalueen lisäksi myös private Milloin järkevää käyttää?
34
34 Metodit - Määreet Määreitä ovat Näkyvyysalueet publicsallii metodin käytön kaikkialta protectedsallii metodin käytön luokalta perityissä luokissa privatesallii metodin käytön ainoastaan luokan sisällä Muut abstractmetodilla ei ole toteutusta (abstrakti) staticmetodin kutsumiseen ei tarvita oliota finalmetodia ei voi ylikirjoittaa perityissä luokissa syncronizedmetodia suoritetaan monisäikeisessä sovelluksessa yksi kutsu kerrallaan nativemetodilla ei toteutusta, kutsu esim. C/C++ Kurssilla tarvittavat määreet: public, private, static
35
35 Metodit - Määreet Esimerkkejä määreistä ”public static void main(String [] args)” ”private int solveSubProblem()” ”public int solveProblem()” ”public void initializeObject()”
36
36 Metodit – määreet – static Yleensä luokan sisään kirjoitetut metodit käyttävät jotain olion attribuuttia On olemassa kuitenkin myös metodeja, jotka eivät tarvitse olion attribuutteja tai kutsu toisia olion attribuutteja käyttäviä metodeja (esim. Math-luokan metodit) Kyseiset metodit eivät näin ollen tarvitse olemassa olevaa oliota suoritukseensa Tällaisia metodeja kutsutaan staattisiksi
37
37 Metodit – määreet – static Metodi määritellään staattiseksi static- määreellä: public static double sqrt(double num) static-määreellä määriteltyä metodia voidaan kutsua luokan ulkopuolelta ilman olion luontia: double result = Math.sqrt(16); Luokan nimi, jossa metodi on määritelty
38
38 Staattiset attribuutit Attribuutteja voidaan määrittää myös staattisiksi. Staattinen attribuutti on käytettävissä ilman olion luontia. Staattista attribuuttia voi käyttää kuten normaaliakin luokan attribuuttia. Staattinen attribuutti on sama joka paikassa (vrt. ei-staattiset attribuutit, jotka ovat yksilölliset jokaisella luodulla oliolla)
39
39 Staattiset metodit ja attribuutit Staattiset metodit/attribuutit ovat käyttöalueeltaan rajatumpia kuin ei- staattiset Hyvän ohjelmointitavan mukaista on määrittää metodi/attribuutti staattiseksi aina kun se on mahdollista Käytännössä varsinkin staattisten attribuuttien käyttö on harvinaista
40
40 Staattiset metodit ja attribuutit Esimerkkejä: main-metodin on aina oltava staattinen Vakiot määritetään yleensä staattisina: private final static int NUM_COLS = 5; Color-luokan määritellyt värit ovat staattisia public final static Color black = new Color(0,0,0); Math-luokan kaikki metodit ja attribuutit ovat staattisia
41
41 Staattiset metodit ja attribuutit public class TestApp { public static final int A = 1; public final int B = 2; private static int C = 3; private int D = 4; public TestApp() { } public static void setValues() { C = A; A = C; D = C; setMemberValues(); } public void setMemberValues() { C = A; D = C; setValues(); } Luokan ulkopuolelta: TestApp.setValues(); int i = TestApp.A; i = TestApp.B; i = (new TestApp()).B; (new TestApp()).setValues(); (new TestApp()).setMemberValues(); // Sallittu, koska A ja C staattisia // Ei sallittu, koska A on vakio (final) // Ei sallittu, koska D ei staattinen // Ei sallittu, koska ollaan staat. metodissa // Sallittu // Sallittu, koska ei olla staattisessa metodissa // Sallittu //OK //Ei sallittu //OK
Samankaltaiset esitykset
© 2024 SlidePlayer.fi Inc.
All rights reserved.