JAVA-OHJELMOINNIN PERUSTEET. Sisältö 1. JAVA OHJELMOINTI... 2 2. LÄHTEITÄ... 19 3. HARJOITUKSET... 20 4. MUUTAMA MALLIRATKAISU...



Samankaltaiset tiedostot
Ohjausrakenteet. Valinta:

Java-kielen perusteet

Java-kielen perusteita

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

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

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

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

Java-kielen perusteet

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi

Java-kielen perusteita

12. Javan toistorakenteet 12.1

Java-kielen perusteita

11. Javan toistorakenteet 11.1

12. Javan toistorakenteet 12.1

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

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

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

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

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

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

12. Näppäimistöltä lukeminen 12.1

Ohjelmoinnin perusteet, syksy 2006

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

8. Näppäimistöltä lukeminen 8.1

Rajapinta (interface)

7. Näytölle tulostaminen 7.1

Metodien tekeminen Javalla

13. Loogiset operaatiot 13.1

5. HelloWorld-ohjelma 5.1

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

11. Javan valintarakenteet 11.1

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

ITKP102 Ohjelmointi 1 (6 op)

11. Javan valintarakenteet 11.1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin jatkokurssi, kurssikoe

5. HelloWorld-ohjelma 5.1

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

811120P Diskreetit rakenteet

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla

1. Kun käyttäjä antaa nollan, niin ei tulosteta enää tuloa 2. Hyväksy käyttäjältä luku vain joltain tietyltä väliltä (esim tai )

13. Loogiset operaatiot 13.1

1. Omat operaatiot 1.1

Ehto- ja toistolauseet

14. Hyvä ohjelmointitapa 14.1

Java kahdessa tunnissa. Jyry Suvilehto

Ohjelmointi 2 / 2010 Välikoe / 26.3

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

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

811120P Diskreetit rakenteet

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

Ehto- ja toistolauseet

Ohjelmoinnin perusteet, kurssikoe

Ohjelmointiharjoituksia Arduino-ympäristössä

4. Lausekielinen ohjelmointi 4.1

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

8. Näppäimistöltä lukeminen 8.1

Olio-ohjelmointi Javalla

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

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

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

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

// Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.

Listarakenne (ArrayList-luokka)

Ohjelmoinnin perusteet Y Python

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Java-kielen perusteet

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

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

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

ITKP102 Ohjelmointi 1 (6 op)

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

Python-ohjelmointi Harjoitus 2

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

5/20: Algoritmirakenteita III

Harjoitus 5 (viikko 48)

Ohjelmoinnin perusteet Y Python

Taulukoiden käsittely Javalla

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

Javan perusteita. Janne Käki

Ohjelmoinnin perusteet Y Python

17. Javan omat luokat 17.1

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

Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 26.2

Tietotyypit ja operaattorit

Kirjoita, tallenna, käännä ja suorita alla esitelty ohjelma, joka tervehtii käyttäjäänsä.

Sisällys. 15. Lohkot. Lohkot. Lohkot

13. Hyvä ohjelmointitapa (osa 1) 13.1

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu

14. Poikkeukset 14.1

Ohjelmoinnin peruskurssi Y1

Sisällys. 16. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. Aritmetiikkaa toisin merkiten

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

16. Ohjelmoinnin tekniikkaa 16.1

Sisältö. Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2

Ohjelmoinnin perusteet Y Python

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

20. Javan omat luokat 20.1

Luento 5. Timo Savola. 28. huhtikuuta 2006

Transkriptio:

1 JAVA-OHJELMOINNIN PERUSTEET Sisältö 1. JAVA OHJELMOINTI... 2 2. LÄHTEITÄ... 19 3. HARJOITUKSET... 20 4. MUUTAMA MALLIRATKAISU... 27

2 1. JAVA OHJELMOINTI Kurssin tavoite ensimmäinen ohjelmointikurssi Javalla ( 32h ) ohjelmien suunnittelun alkeet Java-kielisen ohjelmoinnin periaatteet Verkosta löytyy tietoa runsaasti ja myös paljon esimerkkejä. Javan omilta sivuilta löytyy erittäin runsaasti asiaan liittyvää dokumenttia, ohjelmia, päivityksiä jne. JAVA YLEISTÄ Helppo käyttää Standardointi: siirrettävyys Ohjelma on käännettävä konekieliseksi ennen kuin sitä voidaan suorittaa. Kääntäminen voidaan toteuttaa eri tavoin. Kääntäjä (compiler) ohjelma, joka saa syötteeksi lähdekoodin (ohjelmoijan kirjoittamaa koodia) ja tuottaa käännöksen tuloksena kohdekoodia, jota jokin cpu-ymmärtää- Kohdekoodi voi olla joko koneen cpu:n ymmärtämää koodia tai esimerkiksi Java-kielen tapauksessa ns. tavukoodia. Tavukoodia ei voi suoraan suorittaa missään prosessorissa vaan tarvitaan erillinen tulkkausohjelma, joka kääntää tavukoodin konekielelle ja suorittaa sen. Ohjelma tekee aina

3 sitä mitä sen käsketään tehdä, mutta tämä ei välttämättä ole sama kuin mitä ohjelman halutaan tekevän. Virheet Ohjelmassa voi olla kolmenlaisia virheitä kääntäjä löytää syntaksivirheet, eli virheet, jotka ovat kielen sääntöjen vastaisia jos ohjelmassa on syntaksivirheitä eli kääntäjä tuota suoritettavaa ohjelmaa Virhetilanne voi ilmetä myös ohjelman suorituksenaikana esimerkiksi nollalla jakaminen keskeyttää ohjelman suorituksen ohjelma voi toimia, mutta tuottaa silti vääriä tuloksia; loogiset virheet Lausekielet Lausekielen periaate: algoritmit + tietorakenteet = ohjelmat Algoritmi on yksiselitteinen ja äärellinen sarja toimintaohjeita tehtävän suorittamiseksi,ohjelmointikielestä riippumaton, mekaaninen, toteutettavissa koneellisesti. toimintaohje = lause = käsky

4 Algoritmi määrittelee toiminnot, joiden kohteina ovat tiedot esitettynä tietorakenteissa; tietojenkäsittely,kun algoritmit ja tietorakenteet kirjoitetaan ohjelmointikielellä saadaan ohjelma. Toiminnot Yleisesti ottaen kieli tarjoaa perustoiminnot ja välineet monimutkaisempien toimintojen rakentamiseen. Perustoiminnot: sijoituslauseet, aritmeettiset operaatiot, loogiset operaatiot, tekstin luku ja tulostaminen jne. Ohjausrakenteet monimutkaisempien toimintojen määrittämiseksi - peräkkäisyys: lause1; lause2;... lausen; - valinta (haarautuminen): if-then - toisto: while, repeat, for - toiminnan abstrahointi moduulien avulla: kutsutaan funktioiksi, metodeiksi, riippuen käytettävästä ohjelmointikielestä Lauseet suoritetaan peräkkäin yksi kerrallaan, jokainen lause suoritetaan täsmälleen yhden kerran. Suoritusjärjestys on sama kuin kirjoitusjärjestys, viimeisen lauseen päättäminen lopettaa algoritmin Milloin haku päättyy? Ei ole tietoa kuinka monta kertaavalinta pitäisi kirjoittaa. Ratkaisuna toisto-rakenne: esimerkiksi if kyseessä on annettu nimi

5 then lue vastaava osoite else tarkista listan seuraava Runko-osa toistetaan kunnes päättymisehto toteutuu. Ongelmaksi tulee toiston päättymisen takaaminen esim. jos unohdetaan ehto listan lopusta Eräs ratkaisu on myös toistorakenne while do esim.aseta suurimmaksi listan ensimmäinen numero while lista ei ole lopussa do tarkista listan seuraava numero N if N > suurin tähän saakka then aseta N suurimmaksi tulosta suurin numero Nyt lopetusehto on toistorakenteen alussa. Taustaa Sun Microsystems tutkimusprojekti 1991 koodinimeltään Green. Kieli kehitetty C/C++ -kielistä James Goslingin johdolla. Alunperin nimi oli Oak, mutta tämän niminen ohjelmointikieli oli jo olemassa -> uudeksi nimeksi Java Kieli julkaistiin virallisesti Toukokuussa 1995 Java on ns. olio-ohjelmointikieli. Java on tulkattava kieli Java-kielelle on asetettu seuraavat tavoitteet: 1. kielen pitäisi olla tutunnäköinen 2. kielen pitäisi olla oliopohjainen

6 3. kielen tulisi olla tehokas 4. kieli on siirrettävä 5. kieli on mahdollisimman yksinkertainen Esimerkki ohjelman kehityksestä Ohjelma kirjoitetaan tiedostoon tekstieditorilla. Tuloksena saadaan tekstitiedosto, joka sisältää ohjelman lähdekoodin. ohjelma.java Lähdekoodi Tekstitiedosto muutetaan tietokoneen ymmärtämään muotoon java-kääntäjällä (käytetään eclipse). code) Esimerkkejä verkosta vaikkapa hakusanalla: JAVA ohjelmoinnin perusteet. Ohjelma sisältää Informaatiota käsitteleviä tietoelementtejä; mitä nimiä käytämme muistipaikoista ja minkä tyyppistä tietoa niihin talletetaan; muuttujien määrittely Java-kielen lauseita, jotka vastaavat algoritmin käskyjä tai toimintaohjeita

7 Java-ohjelma koostuu yhdestä tai useammasta luokasta. Java-ohjelman alussa kerrotaan importlauseella mitä valmiita Javan luokkakirjastoja ohjelma käyttää (Java API kirjasto). Javan API luokat on eroteltu pakkauksiksi, joihin kuuluvat luokat liittyvät toisiinsa jollakin tavalla. Esim: import java.io.*; /* javan I/O */ import java.awt. Esimerkiksi println ja print metodit ( java.io pakkauksessa) ja ovat osa Java APIa, ne eivät ole Javakielen osia. Molemmat metodit tulostavat informaatiota näytölle, println tulostaa rivivaihdon mutta print ei. java.lang pakkaus otetaan automaattisesti mukaan jokaiseen Javaohjelmaan Näkymättömät välimerkit Välilyönnit, tyhjät rivit ja tabulaattoreita käytetään erottamaan ohjelman sanoja ja symboleja, näitä tulisi käyttää parantamaan ohjelman luettavuutta. Ylimääräisillä välilyönneillä ei ole merkitystä Kommentit Kommentteja käytetään ohjelman tarkoituksen selittämiseen ja ohjelma eri toimintojen kuvaamiseen Javan kommentteja on kahdenlaisia: // tämä kommentti on voimassa vain tämän rivin loppuun /* tämä kommentti on voimassa kunnesvastaan tulee kommentin loppumerkki (voi siis jatkua usealle riville ) */ (kommentin sisällä ei saa olla toista kommenttia) Tietotyypit

8 tietotyyppi on joukko arvoja ja operaatiot ko. arvoille, kullakin koneen muistiin talletetulla arvolla on jokin tyyppi Kokonaisluvut konaisluvuille on kahdeksan erilaista muotoa tarvittava muistin määrä erottaa eri kokonaislukutyypit toisistaan Tyyppi Muistitila Min arvo Max arvo Byte 8 bit - 128 127 short 16 bit - 32 768 32 767 int 32 bit - 2147483648 2 147 483 647 long 64 bit < -9 x 1018 > 9 x 1018 - normaalit aritmeettiset operaatiot; +, -, *, / -aritmeettiset operaatiot antavat kokonaislukutuloksen, lisäksi käytössä jakojäännös- operaattori % 3 / 15 = 0, 15 / 3 = 5, 18 / 3 = 5, 4 / 0 tulosta ei ole määritelty Reaaliluvut - normaalit aritmeettiset operaatiot; +, -, *, / 2.718f tai 2.718F -> vakio tyyppiä float 2.718d tai 2.718D -> vakio tyyppiä double Tyyppi Muistitila Min arvo n. Max arvo n. float 32 bit - 3.4 x 1038 3.4 x 1038 double 64 bit - 1.7 x 10308 1.7 x 10308 Muuttujien määrittely

9 Muuttuja on muistielementti, joka tallettaa ohjelman käsittelemää syöttö- ja tulostustietoa sekä välituloksia. Muuttujamäärittely kertoo talletettavan tiedon tyypin ja talletukseen käytettävän muistielementin nimen int vuosi; /* esimerkiksi kuluva vuosi */ char kirjain_1, kirjain_2, kirjain_3; /* kolme kirjainta */ Muuttujien (ja metodien) niminä käytetään tunnuksia, jotka ohjelmoija määrittelee muuttujan nimi voi koostua kirjaimista, numeroista, alaviivoista ja dollarimerkistä ($) -muuttuja nimi ei voi alkaa numerolla - varattua sanaa ei saa käyttää tunnuksena -Isot ja pienet kirjaimet eivät tarkoita samaa; Total ja total ovat kaksi eri tunnusta -tunnusten nimien tulee olla kuvaavia Javan varatut sanat abstaract default goto* operator* synchoronized boolean do if outer* this break double implements package throw byte else import private throws byvalue* extends inner* protected transient case false instanceof public true cast* final int rest* try catch finally interface return var*char float long short void class for native static volatile const* future* new super while continue generic* null switch Suoritettavat lauseet Ohjelman suoritettavat operaatiot (esim. aritmeettiset) 1. käännetään tavukoodiksi 2. ladataan tulkkiohjelmaan 3. tulkkausohjelmaa kääntää tavukoodin konekieliseksi ja suorittaa ohjelman

10 Sijoituslause tallettaa muuttujaan laskennan tuloksen (muuttujan entinen sisältö tuhoutuu) km = KM_MAILI * mailit; Yleinen muoto: tulos = lauseke; vasemmalla oleva muuttuja ottaa vastaan lausekkeen tuloksen lauseke Ohjelmoinnissa on mahdollista myös summa = summa + 1; Syöttö- ja tulostusoperaatiot Java I/O perustuu input ja output virtoihin (streams) Kolme valmiiksi määriteltyä standardivirtaa virta käyttötarkoitus oletuslaite System.in lukee syöttövirrasta näppäimistö System.out tulostaa tulostusvirtaan näyttö System.err virheilmoitukset näyttö print ja println tulostavat standarditulostusvirtaan Java API antaa mahdollisuuden luoda monenlaisia streameja erilaisia I/O tapahtumia varten, kun halutaan lukea merkkijonoja muutetaan System.in toisenlaiseksi syöttövirraksi BufferedReader stdin = new BufferdReader (new InputStreamReader (System.in)); luodaan uusi virta nimeltä stdin, josta voidaan lukea merkkijonoja Puskurit - kaikki näppäimistöltä syötetyt merkit talletetaan lukupuskuriin - enterin painallus käynnistää syötetyn datanprosessoinnin - kaikki tulostettava tieto talletetaan väliaikaisesti tulostuspuskuriin

11 Esimerkki: ohjelma kyselee lukuja ja kirjoitusta ja tulostaa tiedon // käyttäjä antaa vastauksen kysymyksen perään samalle riville import java.util.scanner; // Viisas ohjelma, AW-2005 public class Viisas { private static Scanner lukija = new Scanner(System.in); public static void main(string[] args) { String syottörivi; int kokonaisluku; double desimaaliluku; System.out.println("Mikä on nimesi?"); syottörivi = lukija.nextline(); System.out.println("Mitä kokonaislukua ajattelet?"); kokonaisluku = lukija.nextint(); System.out.println("Mitä desimaalilukua ajattelet?"); desimaaliluku = lukija.nextdouble(); System.out.print ("Tiedän, että nimesi on "+syottörivi); System.out.println(" ja että ajattelit lukuja "+ kokonaisluku+" ja "+ desimaaliluku+"."); System.out.println("Enkö olekin viisas!"); Ohjelman suoritus voi näyttää vaikkapa seuraavalta: Mikä on nimesi? Arto Mitä kokonaislukua ajattelet? 49 Mitä desimaalilukua ajattelet? 3,14 Tiedän, että nimesi on Arto ja että ajattelit lukuja 49 ja 3.14. Enkö olekin viisas! http://www.cs.helsinki.fi/u/wikla/ohjelmointi/sisalto/2/kilu.html Ohjausmerkit Javan tulostuksen ohjausmerkit \t tabulaattori \n rivinsiirto \ lainausmerkit

12 \ heittomerkki \\ takakenoviiva takakenoviiva ( \ ) ilmoittaa, että seuraava merkki tulkitaan tulostuksessa eri tavalla kuin normaalisti Peräkkäisyys Java-kielessä. valmiiden Java-luokkien esittely class uudenluokannimi { luokan muuttujien määrittelyt main-metodin aloitus { muuttujien määrittelyt lause 1; lause 2;... lause N; // main-metodin loppu // uudenluokanloppu Peräkkäisyys saavutetaan lohkorakenteella: { lause1;... lausen; Metodit Metodi ryhmittää ohjelmalauseet yhdeksi ohjelmayksiköksi. Metodit aktivoidaan suorittamalla metodin kutsu, joka on tavallinen Java-kielen suoritettava lause metodinnimi ( );

13 Kutsutaan samoin kuin esim. println- tai read- metodeja - metodin metodinnimi kutsu aloittaa metodin metodinnimi ohjelmalauseiden suorituksen, kun metodin sisältämät lauseet on suoritettu,palataan takaisin ylemmälle tasolle ja suoritetaanmetodin kutsua seuraava lause lause1; lause2; metodinnimi ( ); mlause1; mlause2; Etuja koodia ei tarvitse toistaa; virheet ja ohjelman koko uudelleen käytettävyys. Metodit välittävät tietoa aliohjelman ja pääohjelman välillä parametrien avulla (argumentti) Java-kielen metodeja voidaan käyttää myös matemaattisten funktioiden tapaan palauttamaan tulos. - toimivat kuten aritmeettiset operaattorit - metodin kutsu voidaan sijoittaa siihen, missä tulos tarvitaan (vrt. kutsu suoritettavana lauseena ) Esimerkiksi metodi sqrt ( java.lang.math -pakkauksessa ), joka laskee neliöjuuren y = sqrt ( x ); jos x on 16.0, niin sqrt ( 16.0) on 4.0 metodin arvo 4.0 sijoitetaan muuttujan y arvoksi Käytettävät valmiit metodit on kuvattu Java-kielen käsikirjoissa. Ohjausrakenteet

14 Ohjelmassa voidaan suorittaa vaihtoehtoisia tehtäviä valintarakenteiden avulla. 1. Valinta 2. Toisto if-rakenne sisäkkäiset if-rakenteet switch-rakenne useille vaihtoehdoille while-toistorakenne for-toistorakenne Javan vertailuoperaattorit: = = yhtä kuin! = erisuuri kuin < pienempi kuin <= pienempi tai yhtäsuuri > suurempi kuin >= suurempi tai yhtäsuuri Esimerkiksi: Operaattori Ehto Tulkinta Arvo <= x <= 5 x pien. tai yhtäs. kuin 5 true >= x >= z x suur. tai yhtäs. kuin z false > alkio > MIN alkio suurempi kuin MIN true = = kirjain = = P kirjain yhtäkuin P true! = num! = NUM num erisuuri kuin NUM false if-rakenteen perusmuoto Java-kielessä if ( ika > 19 )

15 System.out.println ( Tervetuloa! ); else System.out.println ( Liian nuori!!! ); if -rakenne ja peräkkäisyys Yleinen muoto: if ( ehto ) lause1; else lause2; Sisäkkäisyyttä käyttämällä, edellä olevat lauseet voidaan korvata muilla rakenteilla; esimerkiksi peräkkäisyys (lohko). Esimerkiksi kahden muuttujan x ja y arvon vaihto siten että pienempi arvo talletetaan muuttujaan x if ( x > y ) { temp = x; x = y; y = temp; Peräkkäisyys if-rakenteen sisällä saavutetaan kirjoittamalla suoritettavat lauseet aaltosulkeiden sisään ( tyyli on vapaa, mutta sisennys parantaa ohjelman luettavuutta ). Sisäkkäiset if-rakenteet

16 Esimerkiksi Oletetaan kolme kokonaislukumuuttujaa nimeltään Pos, Neg, Nolla, joiden arvoa kasvatetaan yhdellä riippumatta siitä onko muuttujan x arvo suurempi, pienempi tai vastaavasti yhtäsuuri kuin nolla. if ( x > 0 ) Pos = Pos + 1; else if ( x < 0 ) Neg = Neg + 1; else Nolla = Nolla + 1; Sama tehtävä voidaan vaihtoehtoisesti suorittaa peräkkäisellä if-rakenteilla seuraavasti if ( x > 0 ) Pos = Pos + 1; if ( x < 0 ) Neg = Neg + 1; if ( x == 0 ) Nolla = Nolla + 1; Switch - rakenne useille vaihtoehdoille Valintarakenne, jonka avulla ehtolausekkeen arvon perusteella voidaan valita yksi useammasta vaihtoehtoisesta toiminnasta. Yleinen muoto: switch ( ehtolauseke ) { case tunnus1: lauseet1; break; case tunnus2: lauseet2; break;

17... case tunnusn; lauseetn; break; default: lauseetd; Ehtolausekkeen arvoa ( joko tyyppiä char tai int ) verrataan ylhäältä lähtien case-rivien tunnuksiin(vakioita!!!) kunnes arvot täsmäävät. Seuraavaksi täsmäävän vaihtoehdon (case) jälkeiset lauseet suoritetaan järjestyksessä ensimmäiseen break-riviinsaakka, jonka kohdalla poistutaan rakenteesta. Jos täsmäävää vaihtoehtoa ei löydy, suoritetaan default vaihtoehdon lauseet (mikäli sellainen on) ja poistutaan rakenteesta. Esimerkki: switch-valintarakenne, joka tulostaa muuttujan vari arvoa vastaavan värin ( P =punainen, S= sininen ja K = keltainen) switch ( vari ) { case P : System.out.println ( Punainen \n ); break; case S : System.out.println ( Sininen \n ); break; cases K : System.out.println ( Keltainen \n ); break; // switch Muista tunnus voi olla vain tyyppiä char tai int, ei reaaliluku eikä merkkijono While-toistorakenne

18 Toiston käytön algoritmissa määrää tehtävän luonne, ratkaise tehtävä jossakin erityistapauksessa ja selvitä oliko ongelmanratkaisussa askeleita, joita toistettiin tiedettiinkö etukäteen, kuinka monta kertaa askel suoritettiin mistä tiedettiin, kuinka monta kertaa askel toistettiin Yleinen muoto while ( toistoehto ) lause; Toiminta: Toistoehto testataan ja jos se on tosi, niin runko-osan lause suoritetaan. Runko-osan lause suoritetaan uudelleen niin kauan kuin (while) toistoehto on tosi, kun toistoehto on epätosi, poistutaan silmukasta ja ohjelman suoritus jatkuu while-rakennetta seuraavasta lauseesta. while-rakenteen muunnos do - while do lause; while ( toistoehto ); Runko-osan lause suoritetaan ainakin yhden kerran. Testataan toistoehto ja jos se on tosi, niin runko-osan lause toistetaan. Runko-osan lauseen suoritusta jatketaan, kunnes toistoehto on epätosi. Kun toistoehto on epätosi, poistutaan silmukasta ja ohjelman suoritus jatkuu while- rakennetta seuraavasta lauseesta While ja do-while rakenteet ovat sopivia tilanteisiin kun ei etukäteen tiedetä kuinka monta kertaa toistettava lause suoritetaan.

19 For- toistorakenne Silmukan toiminnassa olennaista ohjausmuuttujan rooli ( esimerkeissä ohjausmuuttujia laskuri ja tulo). 1. silmukan ohjausmuuttujan alustus 2. toistoehto 3. ohjausmuuttujan päivitys for-rakenne sisältää ennaltamääritellyt paikat näille komponenteille. Yleinen muoto: for ( alustus; toistoehto; päivitys ) lause; 2. LÄHTEITÄ https://noppa.oulu.fi/noppa/kurssi/811192p/lisatty422/811192p_1_peruskasitteet.pdf http://www.cs.helsinki.fi/u/wikla/ohjelmointi/sisalto/2/kilu.html http://www.uta.fi/sis/tkt/laki/ohjelmointivalineita/java_jdk.html

20 3. HARJOITUKSET Harjoitus 1 Koodin kääntäminen, ohjelman suoritus, tekstin tulostus. /* Kirjoita eclipcellä koodi käännä ja totea toiminta lisää kommentointi, tutki mitä koodi tekee ohjelmassa Lisää ohjelmaan 5 erilaista uutta tekstiriviä ennen "Tassapa..." kommentoi ne ja käytä erilaisia rivinsiirtokomentoja */ import java.io.*; class Hello { public static void main(string[] args){ System.out.println ("\n\n\n\n"); System.out.println (" Tassapa rivi tekstia \n\n "); System.out.println (" hello wolrd \n\n ");

21 HARJOITUS 2 Muuttujat, laskut, syöttötiedot Tutki alla olevaa koodi, mieti mitä koodista puuttuu!! Muuta koodi toimivaksi. Kommentoi koodi. Muuta koodia siten, että se laskee double-tyyppisten (desimaali) lukujen summan ja jakolaskun. Luvut voi tietenkin syöttää käyttäjä (X + Y ) / Z. Alkuperäinen toimiva ohjelma talletetaan nimellä Summa ja uusi nimellä Summa2. import java.io.*; class Summa { public static void main (String args [ ]) { int luku1, luku2, summa; / System.out.println (" Anna kokonaisluku: "); luku1 = Integer.parseInt ( stdin.readline( ) ); System.out.println (" Anna toinen kokonaisluku: "); luku2 = Integer.parseInt ( stdin.readline( ) ); summa = luku1 + luku2; / System.out.println (" Lukujen summa on: " ); ;

22 Harjoitus 2.1 Laskuja,syöttötietojen antaminen, muuttujat Ohjelma pyyttää käyttäjältä lämpötilan fahrenheit-asteissa ja tulostaa vastaavan celsius-astelukeman. Täydennä koodi toimivaksi, kommentoi, käännä, testaa jne.??????????? class Lampotila {??????????????; //muuttujat tietojen tallettamiseen // pyydetään käyttäjältä lämpötila ja talletetaan lukema // reaalilukumuodossa???????????????????????? celsius = 5.0/9.0 * (fahrenheit - 32.0); System.out.println("\n\nReturn lopettaa ohjelman suorituksen"); // //

23 Harjoitus 3 If-rakenne ja erillinen metodi Ohjelma pyytää käyttäjältä kaksi reaalilukua ja kertoo kumpi syötetyitä luvuista on suurempi lukujen vertailu tehdään suurempiluvuista-metodilla. Täydennä koodista puuttuvat muuttujat + muu tarvittava. class Suurempi { public static void main ( String [] argv ) {????????????????? // pyydetään käyttäjältä kaksi reaalilukua ja talletetaan ne // muuttujiin lukuyksi ja lukukaksi System.out.println("Anna toinen luku >");???????????????????? System.out.println("Ohjelman suoritus päättyy tähän"); // // metodi tutkii kumpi parametrina saamistaan reaaliluvuista on // suurempi ja palauttaa suuremman luvun arvon reaalilukuna // metodin kutsujalle, joka tässä tapauksessa on main-metodi public static double suurempiluvuista( double l1, double l2) {???????????????????? // tutkitaan kumpi luvista l1, l2 on suurempi if( l1 > l2 ) { lopputulos = l1;

24 else { lopputulos = l2; // palautetaan lopputuloksen sisältö kutsujalle ( = main ) return?????????? // // Harjoitus 3.1 Case-rakenne, if-rakenne Rakenna ohjelma, joka kysyy oppilaan saaman tenttituloksen. Pistemäärä annetaan ja sen jälkeen ohjelma antaa oppilaan kokeesta saaman arvosanan (1 5). Täydennä alla olevaa ohjelmaa, siten että se toteuttaa yllä olevat tehtävät. Kommentoi jne.! Testaa..! Tee valmiiksi...!!! import java.io.*; class TentinTulos { public static void main (String args []) { xxxxxxxxxx System.out.print (" Anna kokeen pistemäärä >"); // onko koepisteet oikealla välillä (0-24)? if ((koepisteet >=0 ) &&...??????? )) {

25 switch ( koepisteet ) { case 11: case 12: System.out.println (" 1 "); break; xxxxxxxxx default:?????? break; // // else { // annetaan virheilmoitus koska..?????? System.out.println (" Pisteiden tulee olla välillä 0 ja 24!!!"); // // // Harjoitus 4 WHILE-silmukka Suunnittele ja toteuta ohjelma, jolla lasketaan käyttäjän antamien positiivisten kokonaislukujen summaa. Ohjelma laskee summaa, kunnes käyttäjä antaa tietyn luvun lopet-taakseen ohjelman. Lopetuskomennon muoto; final static int LOPETUS = -99;

26 Harjoitus 5 Taulukot (syöttö ja tulostus), for-silmukka Tutki allaolevaa koodia, lisää puuttuva koodi. Muuta taulukko lopuksi siten, tulostaa luvut 100 Ja 200väliltä. Kommentoi koodi. int[] luku = new int[101]; // luetaan 100 lukua: for (int i=1; i<=100; ++i) { System.out.println("Anna luku "+i); luku[i] = lukija.nextint(); // tulostetaan luvut käänteisessä järjestyksessä: System.out.println("Luvut lopusta alkuun:"); for (int i=100; i>=1; --i) System.out.println(luku[i]) Harjoitustyö Laskuja,syöttötietojen antaminen, muuttujat ja tulostus Suunnittele ja toteuta ohjelma, joka laskee neljän käyttäjältä pyydetyn desimaaliluvun keskiarvon, summan tai kertoo luvut. Itse laskeminen toteutetaan erillisellä metodilla. Aluksi ohjelma kertoo mitä käyttäjän on tehtävä (käyttöliittymä, josta valitaan haluttu toiminto). Lopputuloksena näytetään käyttäjälle hänen syöttämät luvut ja niiden antama tulos.

27 4. MUUTAMA MALLIRATKAISU public class HelloWorld { public static void main( String [] args ){ System.out.println ("\n\n\n\n");// neljä tyhjää riviä System.out.println (" Tassapa rivi tekstia \n\n "); System.out.println (" Tassapa rivi tekstia \n\n "); System.out.println (" Paina ENTER, niin paaset takaisin." ); System.out.println(" Ohjelman suoritus loppuu..."); System.out.println("Hello world!"); -------------------------------------------------------------------------------------------------------------------------- import java.util.scanner; public class Summa { private static Scanner lukija = new Scanner(System.in); public static void main(string[] args) { int luku1,luku2,summa; // double desimaaliluku; System.out.println("Anna ensimmäinen kokonaisluku; "); luku1 = lukija.nextint(); System.out.println("Anna toimem kokonaisluku;"); luku2 = lukija.nextint(); summa=luku1+luku2; System.out.println("lukujen summa on " +summa);