Seuraavassa on esimerkki for-, while- ja do-while -lauseesta:

Samankaltaiset tiedostot
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 )

Java-kielen perusteita

Ohjelmassa on käytettävä funktiota laskeparkkimaksu laskemaan kunkin asiakkaan maksu. Funktio floor pyöristää luvun lähimmäksi kokonaisluvuksi.

Java-kielen perusteet

Java-kielen perusteet

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

13. Loogiset operaatiot 13.1

Tietuetyypin määrittely toteutetaan C-kielessä struct-rakenteena seuraavalla tavalla:

11. Javan valintarakenteet 11.1

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

Java-kielen perusteita

13. Loogiset operaatiot 13.1

7. Näytölle tulostaminen 7.1

Metodien tekeminen Javalla

Ohjelmoinnin perusteet, syksy 2006

Rajapinta (interface)

Ohjelmoinnin perusteet, kurssikoe

Taulukot. Taulukon käsittely. Tämän osan sisältö. Esimerkki. Taulukon esittely ja luonti. Taulukon alustaminen. Taulukon koko

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

Java-kielen perusteita

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

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

Metropolia ammattikorkeakoulu TI00AA : Ohjelmointi Kotitehtävät 3

Mitä poikkeuskäsittely tarkoittaa?

public static void main (String [] args)

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

12. Javan toistorakenteet 12.1

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

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

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta 5 Kerta 6 Kerta Toteuta Pythonilla seuraava ohjelma:

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta Toteuta Pythonilla seuraava ohjelma:

Tietorakenteet (syksy 2013)

Ohjelmoinnin perusteet Y Python

Algoritmit 1. Demot Timo Männikkö

Ohjelmoinnin perusteet (Java)

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

811120P Diskreetit rakenteet

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

Ehto- ja toistolauseet

Python-ohjelmointi Harjoitus 5

Ohjelmoinnin perusteet Y Python

12. Javan toistorakenteet 12.1

11. Javan toistorakenteet 11.1

Ohjelmoinnin perusteet Y Python

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

Ehto- ja toistolauseet

Kaavioiden rakenne. Kaavioiden piirto symboleita yhdistelemällä. Kaavion osan valitseminen päätöksellä ja toistaminen silmukalla.

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

811120P Diskreetit rakenteet

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

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

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Harjoitus 3 (viikko 39)

Maahan on pudonnut omenoita, ja Uolevi aikoo poimia niitä. Tiedät jokaisesta omenasta, kuinka painava se on.

Muuttujat ja kontrolli. Ville Sundberg

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

Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

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

Python-ohjelmointi Harjoitus 2

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

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

1. Ohjelmoinnin perusteet, kesä Aloittaminen Tulostaminen Muuttujat if-rakenne Metodit

16. Ohjelmoinnin tekniikkaa 16.1

14. Hyvä ohjelmointitapa 14.1

Metropolia ammattikorkeakoulu TI00AA : Ohjelmointi Kotitehtävät 3 opettaja: Pasi Ranne

4. Lausekielinen ohjelmointi 4.1

3. Kirjoita seuraavat joukot luettelemalla niiden alkiot, jos mahdollista. Onko jokin joukoista tyhjä joukko?

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

16. Ohjelmoinnin tekniikkaa 16.1

Datatähti 2019 alku. task type time limit memory limit. A Kolikot standard 1.00 s 512 MB. B Leimasin standard 1.00 s 512 MB

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

Sisällys. 17. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. for-lause lyhemmin

Algoritmit 1. Demot Timo Männikkö

Java-kielen perusteet

Ohjelmoinnin peruskurssi Y1

Kaavioiden rakenne. Kaavioiden piirto symboleita yhdistelemällä. Kaavion osan toistaminen silmukalla. Esimerkkejä:

ITKP102 Ohjelmointi 1 (6 op)

Lista luokan sisällä

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

Tutoriaaliläsnäoloista

Ohjelmointi 1 C#, kevät 2013,

Ohjelmointityö 3. Mikko Laamanen

Ohjelmointiharjoituksia Arduino-ympäristössä

OHJELMOINTITEKNIIKKA

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

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

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

Sisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen.

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

c) 22a 21b x + a 2 3a x 1 = a,

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

Algoritmit 2. Luento 7 Ti Timo Männikkö

Tekijä Pitkä Matematiikka 11 ratkaisut luku 2

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

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

13. Hyvä ohjelmointitapa (osa 1) 13.1

Ohjelmointi 2 / 2010 Välikoe / 26.3

Taulukoiden käsittely Javalla

Transkriptio:

Ilkka Kiistala 30.9.2004 tehtävät: http://www.cs.helsinki.fi/u/wikla/johdohj/ohpe/harjs04/3/ kurssisivu http://www.cs.helsinki.fi/u/wikla/johdohj/ohpe/indexs04.html materiaali: http://www.cs.helsinki.fi/u/wikla/johdohj/sisalto/index.htm tämä sivu: http://www.cs.helsinki.fi/u/ikiistal/harjoitus/ohjelmoinnin_perusteet/03.harj/2004s-op-harj03.html harjoitusryhmä 3: Vesa Vainio, TI 16-18 C221 Harjoitukset 3 Aiheita: valintaa ja toistoa, if-, for-, while- ja do-lause 12. Seuraavassa on esimerkki for-, while- ja do-while -lauseesta: /* a */ for (int i=0; i<300; i+=3) System.out.println(i); /* b */ int a = 79; while (a > 1) System.out.println(a); a = 2*a/3; /* c */ double d=3.14; do System.out.println(d); d = d/3; while(d > 0.001); Toteuta esimerkki (a) sekä while-lauseella että do-while-lauseella. Toteuta esimerkki (b) sekä for-lauseella että do-while-lauseella. Toteuta esimerkki (c) sekä while-lauseella että for-lauseella. public class WhileLauseita_a /* a */ for (int i=0; i<300; i+=3) System.out.println(i); // sama while-lauseella int j = 0; while (j<300) System.out.println(j); j += 3; // sama do-while-lauseella int k = 0; do 1 of 6 5.10.2004 13:15

System.out.println(k); k += 3; while (k<300); public class WhileLauseita_b /* b */ int a = 79; while (a > 1) System.out.println(a); a = 2*a/3; // sama for-lauseella for (int b=79; b>1; b=2*b/3) System.out.println(b); // sama do-while-lauseella int c = 79; do System.out.println(c); c = 2*c/3; while (c > 1); public class WhileLauseita_c /* c */ double d=3.14; do System.out.println(d); d = d/3; while(d > 0.001); // sama while-lauseella double e=3.14; while (e > 0.001) System.out.println(e); e = e/3; // sama for-lauseella for (double f=3.14; f > 0.001; f=f/3) System.out.println(f); 2 of 6 5.10.2004 13:15

Miten yleisessä tapauksessa: /* a */ while (ehto1) lause1 /* b */ do lause2 while (ehto2); while- ja do-while-toistolauseet voidaan korvata toisillaan? Vinkki: Tarvitset avuksi myös if-lausetta! Kysymys: Vaikka vain yhdelläkin toistolausetyypillä tultaisiin toimeen, miksi on hyödyllistä, että kielessä on niitä erilaisia? Toistolausetyypin valinnalla voidaan kertoa koodin lukijalle lisätietoa. 13. Tee vuorovaikutteinen ohjelma Joulukuusi, joka pyytää kuusen korkeuden ja tulostaa "*"-merkeistä muodostuvan "kuusen" tasakylkisenä kolmiona. Jos korkeus on esimerkiksi 5, ohjelma tulostaa: * *** ***** ******* ********* Jos käyttäjä yrittää syöttää korkeudeksi sopimattoman luvun, ohjelma antaa virheilmoituksen ja pyytää uutta lukua kunnes saa kelvollisen. public class Joulukuusi System.out.println("Joulukuusen tulostus"); System.out.print("Anna korkeus: "); // Lue-luokka hoitaa virheilmoitukset int korkeus = Lue.kluku(); for (int i=1;i<=korkeus; i++) // tulostetaan välilyöntejä for (int k = korkeus-i; k>=0; k--) System.out.print(" "); // tulostetaan tähtirivi for (int j=1+(i-1)*2; j>0; j--) System.out.print("*"); 3 of 6 5.10.2004 13:15

// lopuksi rivinvaihto System.out.println(); 14. Fibonaccin lukujono on 1, 1, 2, 3, 5, 8, 13, 21, 34,... (seuraava on aina kahden edellisen summa). Tee sovellus, joka a) tulostaa 14 ensimmäistä Fibonaccin lukua /* tulostaa 14 ensimmäistä Fibonaccin lukua */ public class Fibonacci14 System.out.println("tulostetaan 14 ensimmäistä Fibonaccin lukua"); int lkm = 1; int luku = 1; int edluku = 0; int ededluku = 0; while (lkm <= 14) System.out.println(lkm + ". " + luku); ededluku = edluku; edluku = luku; luku = edluku + ededluku; lkm++; b) tulostaa kaikki 500 pienemmät Fibonaccin luvut. /* tulostaa 500 pienemmät Fibonaccin luvut */ public class Fibonacci500 System.out.println("tulostetaan 500 pienemmät Fibonaccin luvut"); int luku = 1; int edluku = 0; int ededluku = 0; while (luku < 500) System.out.println(luku); ededluku = edluku; 4 of 6 5.10.2004 13:15

edluku = luku; luku = edluku + ededluku; Mikä oleellinen ero näissä kahdessa tapauksessa on? Mikä toistolausetyyppi sopii luontevimmin näihin tapauksiin? Miksi? Ensimmäisessä tiedetään toistojen määrä, joten for-lausetta voisi käyttää siinä. 15. Vuosi on karkausvuosi, jos se on jaollinen 4:llä, mutta ei sadalla. 400:lla jaolliset kuitenkin ovat karkausvuosia. Laadi vuorovaikutteinen sovellus, joka tulostaa karkausvuodet käyttäjän pyytämältä vuosilukuväliltä. Alku- ja loppuvuoden saa syöttää kummassa tahansa järjestyksessä. Voit itse päättää, onko käyttäjän antamalla järjestyksellä jokin vaikutus ohjelman käyttäytymiseen. public class Karkausvuodet System.out.print("Anna aloitusvuosi: "); int vuosi1 = Lue.kluku(); System.out.print("Anna lopetusvuosi: "); int vuosi2 = Lue.kluku(); int suunta = 1; if (vuosi1 > vuosi2) suunta = -1; int vuosi = vuosi1; while (vuosi!= vuosi2 + suunta) if ( ( vuosi % 4 == 0 && vuosi % 100!= 0) (vuosi % 400 == 0) ) System.out.println(vuosi); // siirrytään seuraavaan vuoteen vuosi = vuosi + suunta; 16. Toteuta seuraava tietokonepeli: Tietokone arpoo jonkin kokonaisluvun 0, 1, 2,..., 9. Käyttäjä saa yrittää korkeintaan kolme kertaa arvata koneen arpoman luvun. Jos arvaa ensimmäisellä, voittaa 30 virtuaalieuroa, jos toisella, voitto on 20 virtuaalieuroa. Jos vasta kolmas osuu oikeaan, voittona saa 10 virtuaalieuroa. Jos ei arvaa kolmannellakaan, häviää 8.60 virtuaalieuroa. Ratkaisuksi riittää toteuttaa yhden luvun arvaaminen, ts. yksi pelikerta. 5 of 6 5.10.2004 13:15

Satunnaisluvun väliltä 0-9 saa seuraavasti: int koneenluku = (int)(10*math.random()); (Ei tuota lauseketta vielä tarvitse ymmärtää, kunhan vaan käyttää...) /* Arvuutuspeli */ public class Arvuutuspeli double saldo = 0.0; double palkkio = 30; int arvaus = 10; int koneenluku = (int)(10*math.random()); System.out.println("Olen arvonut kokonaisluvun väliltä 0-9. Nyt sinun pitää arvata luku."); int i = 0; while (i < 3 && arvaus!= koneenluku) i++; System.out.print(i + ". arvaus: "); arvaus = Lue.kluku(); if (arvaus == koneenluku) System.out.println("Arvasit oikein."); palkkio = palkkio - (i-1)*10; else System.out.println("Et arvannut lukua."); palkkio = -8.60; saldo += palkkio; System.out.println("Arvottu luku oli " + koneenluku + "."); System.out.println("Sinulla on nyt " + saldo + " virtuaalieuroa."); 17. Mitä näiden harjoitustehtävien avulla oli tarkoitus oppia? Luettele mielestäsi tärkeitä periaatteita, käsitteitä ja ideoita. Vastaus jätetään kirjallisena ohjaajalle! Vastauksen pituus voisi olla 1-2 sivua. Tarkoituksena oli oppia käyttämään eri toistolauserakenteita ja ymmärtämään niiden erot ja siten oppia soveltamaan niitä oikeissa tilanteissa. 6 of 6 5.10.2004 13:15