Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004



Samankaltaiset tiedostot
Java-kielen perusteita

Listarakenne (ArrayList-luokka)

Ehto- ja toistolauseet

20. Javan omat luokat 20.1

11. Javan toistorakenteet 11.1

17. Javan omat luokat 17.1

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

12. Javan toistorakenteet 12.1

Olio-ohjelmointi Javalla

12. Javan toistorakenteet 12.1

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Sisällys JAVA-OHJELMOINTI Osa 3: Laskennan ohjaus. Lohkolause (block) Peräkkäinen laskenta. Lohkon käyttö. Esimerkki

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Metodien tekeminen Javalla

17. Javan omat luokat 17.1

16. Javan omat luokat 16.1

11. Javan valintarakenteet 11.1

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Mikä yhteyssuhde on?

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Java-kielen perusteet

Ehto- ja toistolauseet

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

Rajapinta (interface)

Metodit Arvotyyppi. Metodit Arvotyyppi. Metodit Parametrit. Metodit Parametrit. Metodit Kuormittaminen. Metodit Kuormittaminen. Javan perusteet

1. Omat operaatiot 1.1

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

P e d a c o d e ohjelmointikoulutus verkossa

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

13. Loogiset operaatiot 13.1

Kurssin suoritus. Javan perusteet Kurssimateriaali. Kurssin aikataulu. Harjoitukset. Kurssin sisältö. Javan perusteet

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat

11. Javan valintarakenteet 11.1

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

1 Tehtävän kuvaus ja analysointi

Java-kielen perusteet

Java-kielen perusteet

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

5/20: Algoritmirakenteita III

public static void main (String [] args)

7. Näytölle tulostaminen 7.1

13. Loogiset operaatiot 13.1

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

ITKP102 Ohjelmointi 1 (6 op)

OutputStream ja InputStream. Tietovirrat ja niiden suunnat. Tietovirtojen käyttö. FileInputStream esimerkki. DataOutputStream ja DataInputStream

Sisältö. 22. Taulukot. Yleistä. Yleistä

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Javan perusteita. Janne Käki

Lauseet. Ehdollinen lause. Tämän osan sisältö. Ehdollinen lause. Esimerkkejä. Yksinkertainen ehto. Lohkosulut ja sisennys. Ehdollinen lause if

Java kahdessa tunnissa. Jyry Suvilehto

Sisältö. 2. Taulukot. Yleistä. Yleistä

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Pakkaukset ja määreet

Ohjelmointi 2 / 2010 Välikoe / 26.3

7/20: Paketti kasassa ensimmäistä kertaa

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

on ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.

4. Luokan testaus ja käyttö olion kautta 4.1

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

9. Periytyminen Javassa 9.1

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Standardi- ja tietorakenneluokkia

A) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys)

Ohjelmoinnin jatkokurssi, kurssikoe

Java-API, rajapinnat, poikkeukset, UML,...

Ohjelmointi 2, välikoe

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely

9. Periytyminen Javassa 9.1

Pakkauksen kokoaminen

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2

Muuttujat ja kontrolli. Ville Sundberg

Luokan sisällä on lista

812341A Olio-ohjelmointi, Olio-ohjelmoinnin peruskäsitteet ja Java-kieli

1. ohjelman selitystä Muutamien ohjelman yksityiskohtien läpikäyntiä

ITKP102 Ohjelmointi 1 (6 op)

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public)

Luokat ja oliot. Ville Sundberg

Ohjelmointiharjoituksia Arduino-ympäristössä

Sisällys. 19. Olio-ohjelmointia Javalla. Yleistä. Olioiden esittely ja alustus

ITKP102 Ohjelmointi 1 (6 op)

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

7. Oliot ja viitteet 7.1

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä

Javan GUI Scratchaajalle

Poikkeustenkäsittely

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

Ohjelmoinnin perusteet, kurssikoe

YHTEYSSUHDE (assosiation)

2. Olio-ohjelmoinista lyhyesti 2.1

Ohjelmoinnin perusteet Y Python

Transkriptio:

Vertailulauseet Ehtolausekkeet Ehdot, valintalausekkeet Boolean-algebra == 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 1 2 Vertailulauseet Huomaa ero sijoitusoperaatiolla ja vertailuoperaatiolla: = Sijoitusoperaatio == Vertailuoperaatio Esimerkki j = 1; // j saa arvokseen yksi j == 1 // onko j:n arvo yksi? 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 3 4 if-lauseke Ohjelmassa voi olla valintalauseita: if (ehto) // tee jotain // tee jotain muuta if-lauseke ehdon tulee aina olla jokin totuusarvo jos totuusarvo on tosi, suoritetaan iflauseketta seuraava lohko jos totuusarvo on epätosi, suoritetaan -lausekkeen jälkeinen lohko (jos sellainen on olemassa) -osassa voi olla uusi if-lauseke ( if) 5 6

if-lauseke esimerkki 1 public void ispositive(int i) System.out.println( Luku + i ); if (i>0) System.out.println( on positiivinen. ); if (i<0) System.out.println( on negatiivinen. ); System.out.println( on nolla. ); 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ä. 7 8 if-lauseke esimerkki 2 public void ispositive(int i) System.out.println( Luku + i ); if (i>0) System.out.println( on positiivinen. ); dosomething(i); if (i<0) System.out.println( on negatiivinen. ); System.out.println( on nolla. ); if-lauseke moniselitteisyys? if-lauseeseen ei ole pakko liittyä -osaa, jonka vuoksi tulee huomata mihin mikäkin -osa liittyy Esimerkki if (a<b) if (c<d) e=f; g=h; // Tarkoittaako tämä: if (a<b) if (a<b) if (c<d) if (c<d) e=f; e=f; g=h; g=h; Sääntö: -osa liittyy aina lähimpään edeltävään iflauseeseen 9 10 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 11 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. 12

switch-lauseke - esimerkki public void printnumber(int i) switch(i) case 0: System.out.println( nolla ); case 1: System.out.println( yksi ); default: System.out.println( ei yksi eikä nolla ); 13 boolean-perustietotyyppi Totuusarvo voidaan sijoittaa booleantyyppiseen perustietotyyppiin boolean isbigger = (a>b); if (isbigger) System.out.println( a is bigger than b ); System.out.println( a isn t bigger than b ); 14 Esiehtoinen toistorakenne Toisto Toistolausekkeet for, while(ehto) ja do while(ehto) Toistorakenteista poistuminen ja niiden sisällä siirtyminen while (ehto) /* suoritettava koodi */ Esimerkki: int poweroftwo = 2; while (poweroftwo < 10) System.out.println( Next power: + poweroftwo); poweroftwo *= 2; 15 16 Esiehtoinen toistorakenne Toistorakennetta suoritetaan niin kauan kun annettu ehto on tosi (true) Mikäli ehto ei ole aluksikaan tosi, ei toistorakennetta suoriteta kertaakaan 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); 17 18

Jälkiehtoinen toistorakenne Toistorakenne suoritetaan vähintään yhden kerran Seuraavalle suorituskerralle siirrytään, mikäli annettu ehto on tosi 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); 19 20 for-toistorakenne (1) (2) (3) for (int i=0;i<10;i++) System.out.println( Luku + i); Tuloste 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 Luku 0 Luku 1 Luku 2 Luku 3 Luku 4 Luku 5 Luku 6 Luku 7 Luku 8 Luku 9 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ää 21 22 break ja continue - esimerkki for (int i=0;i<10;i++) if (i==5) continue; if (i==8) System.out.println( Kierros + i); Tuloste: Kierros 0 Kierros 1 Kierros 2 Kierros 3 (1) (2) Kierros 4 Kierros 6 Kierros 7 hyppy seuraavalle kierrokselle, mikäli jatkoehto 1 toteutuu, lisäyslauseke 2 suoritetaan kuten normaalisti poistutaan suoraan for-lausekkeesta 23 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, ikinä Ikuisten toistojen välttäminen em. ohjelmointityylillä on hyvä tapa koska silloin esim. luvulla 1 kutsuttaessa suoritus ei päättyisi 24

Java 2 API Java 2 API Dokumentaatio Paketit Käyttö 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 Javaversion API-dokumentaatiosta: http://java.sun.com/j2se/1.4.2/docs/api/ 25 26 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; 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ää 27 28 Java 2 API Kaikki Java 2 API:n luokat on sijoitettu paketteihin java.lang java.math java.io... Paketti, johon luokka kuuluu selviää APIdokumentaatiosta Kaikkiin tiedostoihin tuodaan automaattisesti Javan pakkaus java.lang. (import java.lang.*;) Metodit Metodin muoto Määreet Arvotyyppi Parametrit Kuormittaminen Rekursio 29 30

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) 31 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); 32 Metodit Muoto Konstruktoreilla ei ole paluuarvoa public Student(String name)... public Car()... Konstruktori ei voi olla staattinen (static) Konstruktori voi olla normaalin publicnäkyvyysalueen lisäksi myös private Milloin järkevää käyttää? Metodit - Määreet Määreitä ovat Näkyvyysalueet public sallii metodin käytön kaikkialta protected sallii metodin käytön luokalta perityissä luokissa private sallii metodin käytön ainoastaan luokan sisällä Muut abstract metodilla ei ole toteutusta (abstrakti) static metodin kutsumiseen ei tarvita oliota final metodia ei voi ylikirjoittaa perityissä luokissa syncronized metodia suoritetaan monisäikeisessä sovelluksessa yksi kutsu kerrallaan native metodilla ei toteutusta, kutsu esim. C/C++ Kurssilla tarvittavat määreet: public, private, static 33 34 Metodit - Määreet Esimerkkejä määreistä public static void main(string [] args) private int solvesubproblem() public int solveproblem() public void initializeobject() 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 35 36

Metodit määreet static Metodi määritellään staattiseksi staticmää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 37 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) 38 Staattiset metodit/attribuutit ovat käyttöalueeltaan rajatumpia kuin eistaattiset 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 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 39 40 Luokan ulkopuolelta: public class TestApp public static final int A = 1; TestApp.setValues(); public final int B = 2; int i = TestApp.A; private static int C = 3; i = TestApp.B; private int D = 4; i = (new TestApp()).B; (new TestApp()).setValues(); public TestApp() //Ei sallittu (new TestApp()).setMemberValues(); public static void setvalues() C = A; // Sallittu, koska A ja C staattisia A = C; // Ei sallittu, koska A on vakio (final) D = C; // Ei sallittu, koska D ei staattinen setmembervalues(); // Ei sallittu, koska ollaan staat. metodissa public void setmembervalues() C = A; // Sallittu D = C; // Sallittu, koska ei olla staattisessa metodissa setvalues(); // Sallittu 41