Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

1 Ehtolausekkeet Ehdot, valintalausekkeet Boolean-algebra.

Samankaltaiset esitykset


Esitys aiheesta: "1 Ehtolausekkeet Ehdot, valintalausekkeet Boolean-algebra."— Esityksen transkriptio:

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


Lataa ppt "1 Ehtolausekkeet Ehdot, valintalausekkeet Boolean-algebra."

Samankaltaiset esitykset


Iklan oleh Google