Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Ohjausrakenteet:



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

12. Javan toistorakenteet 12.1

12. Javan toistorakenteet 12.1

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

11. Javan valintarakenteet 11.1

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

11. Javan toistorakenteet 11.1

4. Lausekielinen ohjelmointi 4.1

14. Hyvä ohjelmointitapa 14.1

13. Hyvä ohjelmointitapa (osa 1) 13.1

Sisällys. Kaavioiden rakenne. Kaavioiden piirto symboleita yhdistelemällä. Kaavion osan toistaminen silmukalla. Esimerkkejä. 2.2

13. Loogiset operaatiot 13.1

Ehto- ja toistolauseet

13. Loogiset operaatiot 13.1

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

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

16. Ohjelmoinnin tekniikkaa 16.1

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat ja operaatiot

16. Ohjelmoinnin tekniikkaa 16.1

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

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

11. Javan valintarakenteet 11.1

Ohjausrakenteet. Valinta:

Java-kielen perusteita

811120P Diskreetit rakenteet

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit.

3. Muuttujat ja operaatiot 3.1

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

Sisällys. 15. Lohkot. Lohkot. Lohkot

811120P Diskreetit rakenteet

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

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

5. HelloWorld-ohjelma 5.1

etunimi, sukunimi ja opiskelijanumero ja näillä

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


Java-kielen perusteet

Ohjelmoinnin perusteet Y Python

Java-kielen perusteet

Ohjelmoinnin perusteet Y Python

Muistutus aikatauluista

5. HelloWorld-ohjelma 5.1

Zeon PDF Driver Trial

Sisällys. 16. Lohkot. Lohkot. Lohkot

Java-kielen perusteita

Ohjelmoinnin perusteet Y Python

Python-ohjelmointi Harjoitus 5

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

Ohjelmoinnin perusteet Y Python

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

OPPITUNTI 5 Ohjelman kulku

2.2 Neliöjuuri ja sitä koskevat laskusäännöt

Ohjelmointiharjoituksia Arduino-ympäristössä

Ohjelmoinnin perusteet Y Python

Tutoriaaliläsnäoloista

Algoritmit 1. Demot Timo Männikkö

Ohjelmoinnin peruskurssi Y1

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

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

Ohjelmoinnin perusteet Y Python

4. Lausekielinen ohjelmointi 4.1

Harjoitus 5 (viikko 41)

Ohjelmoinnin perusteet Y Python

Harjoitus 2 (viikko 45)

Harjoitus 3 -- Ratkaisut

5/20: Algoritmirakenteita III

ITKP102 Ohjelmointi 1 (6 op)

Ohjelmoinnin perusteet, syksy 2006

Luento 5. Timo Savola. 28. huhtikuuta 2006

Harjoitus 4 (viikko 47)

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

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

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

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

Ohjelmoinnin perusteet Y Python

15. Suorakulmaisen kolmion geometria

Harjoitus 5. Esimerkki ohjelman toiminnasta: Lausekielinen ohjelmointi I Kesä 2018 Avoin yliopisto 1 / 5

Palautetta viime luennosta

Harjoitus 5 (viikko 41)

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Java kahdessa tunnissa. Jyry Suvilehto

2.3 Juurien laatu. Juurien ja kertoimien väliset yhtälöt. Jako tekijöihin. b b 4ac = 2

Ohjelmoinnin perusteet Y Python

Yhtälönratkaisusta. Johanna Rämö, Helsingin yliopisto. 22. syyskuuta 2014

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

Python-ohjelmointi Harjoitus 2

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

1 2 x2 + 1 dx. (2p) x + 2dx. Kummankin integraalin laskeminen oikein (vastaukset 12 ja 20 ) antaa erikseen (2p) (integraalifunktiot

Metropolia ammattikorkeakoulu TI00AA : Ohjelmointi Kotitehtävät 3

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään

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

Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen:

LOGIIKKA johdantoa

Ohjelmoinnin perusteet Y Python

Ctl160 Tekstikorpusten tietojenkäsittely Kolmas luento,

C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. Operaatioiden suoritusjärjestys

Transkriptio:

3. Pseudokoodi 3.1

Sisällys Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Ohjausrakenteet: Valinta if- ja if-else-rakenteilla. Toisto while-, do-while- ja for-rakenteilla. 3.2

Johdanto Pseudokoodi (pseudocode) on algoritmin tekstimuotoinen esitys. Selvästi lähempänä ohjelmointikieltä kuin vuokaaviot, mutta ei oikea ohjelmointikieli. Luonnollisen kielen (esim. suomi tai englanti) ja jonkin tunnetun ohjelmointikielen (esim. Java, C++ tai Pascal) sekoitus. Ei siis yleismaailmallista standardia. 3.3

Johdanto Kirjoitetaan nyt suomeksi käyttäen Javan kielioppia, jolle on varattu joitakin sanoja englannin kielestä. Vuokaavioiden tapaan pseudokoodin osat suoritetaan peräkkäin ja suoritusta voidaan ohjata päätösten avulla. Vuokaavioiden päätöksiä ja silmukoita vastaavat tietyt valinta- ja toistorakenteet. Voidaan esittää vapaamuotoisena tekstinä tai tarkemmin muuttujien ja operaatioiden avulla. 3.4

Esimerkki: Hypotenuusan pituus Pythagoraan lause: Suorakulmaisen kolmion kateettien neliöiden summa on yhtä suuri kuin hypotenuusan neliö. Tehtävänä kirjoittaa ohjelma hypotenuusan pituuden c laskemiseksi. 2 2 c = a + 2 c = a + c a b 2 b 2 b 3.5

Esimerkki: Hypotenuusan pituus Alku Lue 1. luku Lue 2. luku Neliöi 1. luku Neliöi 2. luku Oletetaan, että käyttäjä antaa algoritmille nollaa suurempia lukuja. Summaa neliöt Ota summan neliöjuuri Tulosta neliöjuuri Loppu 3.6

Esimerkki: Hypotenuusan pituus Ensimmäisellä rivillä on algoritmin otsikko, joka kertoo kyseessä olevan Hypotenuusa-nimisen algoritmin esitys. Otsikon jälkeiset rivit muodostavat algoritmin rungon. Algoritmi suoritetaan rivi kerrallaan, otsikosta alkaen ja ylhäältä alas. Algoritmi Hypotenuusa Lue 1. luku Lue 2. luku Neliöi 1. luku Neliöi 2. luku Summaa neliöt Ota summan neliöjuuri Tulosta neliöjuuri Koodi pysähtyy, kun viimeinen rivi on suoritettu. 3.7

Esimerkki: Hypotenuusan pituus Myös pseudokoodina annettu algoritmi voidaan esittää tarkemmin muuttujia ja operaatioita käyttäen. pow-operaatio korottaa parametrinsa annettuun potenssiin. sqrt-operaatio ottaa parametrinsa neliöjuuren. Algoritmi Hypotenuusa akatpit lue() bkatpit lue() akatpit2 pow(akatpit, 2) bkatpit2 pow(bkatpit, 2) summa akatpit2 + bkatpit2 hyppit sqrt(summa) tulosta(hyppit) 3.8

Lauseet Vuokaavion laatikot erottavat selkeästi algoritmin vaiheet toisistaan. Edellisissä pseudokoodiesimerkeissä kukin vaihe oli kirjoitettu vastaavasti omalle rivilleen. Algoritmin kuvaaminen ei ole aina yhtä helppoa: teksti voi mennä useammalle riville tai on järkevää esittää useampia vaiheita yhdellä rivillä. Tarvitaan tapa jakaa algoritmin teksti yksiköihin. 3.9

Lauseet Kirjoitetun luonnollisen kielen yksiköitä: Virke: Alkaa isolla alkukirjaimella ja päättyy isoon välimerkkiin. Sisältää yhden tai useamman lauseen. Lause: Ilmaisee ajatuksen. Rakentuu verbin ympärille. Lauseke: Lauseen läheisesti yhteenkuuluvia sanoja. Lauseohjelmointikielissä: virkkeet lauseen (statement) mittaisia, välimerkki usein puolipiste (;). Ohjelmointikielissä lauseiden laskentaa sisältäviä osia sanotaan lausekkeiksi (expression). 3.10

Lauseet Erotetaan jatkossa myös pseudokoodin vaiheet puolipisteellä lauseiksi. Tällöin yksi pseudokoodin vaihe voidaan esittää usealla rivillä ja useita vaiheita mahtuu samalle riville. Algoritmi Hypotenuusa Lue 1. luku; Lue 2. luku; Neliöi 1. luku; Neliöi 2. luku; Summaa neliöt; Ota summan neliöjuuri; Tulosta neliöjuuri; Samalla rivillä olevat lauseet suoritetaan vasemmalta oikealle. 3.11

Kommentointi ja sisentäminen Ohjelman tulisi olla helposti ymmärrettävä, koska ihmiset sekä kirjoittavat että lukevat ohjelmia, jotka voivat olla omaa tai muiden tuotantoa: Ohjelmia tehdään usein ryhmissä. Ohjelmat vaativat ylläpitoa. Itse tehdynkin ohjelman idea unohtuu nopeasti. Ohjelman toimintaa voi selkeyttää pienellä vaivalla koodin rivejä kommentoimalla ja sisentämällä. Huom! Edelleen syytä käyttää myös kuvaavia nimiä. 3.12

Kommentit Kommentit ovat luonnollisella kielellä kirjoitettuja, ohjelman toimintaa selventäviä lauseita. Ongelma: Kuinka erottaa suoritettavaksi tarkoitetut lauseet kommenteista? Ratkaisu: Oma merkintätapa kommenteille. Kurssin pseudokoodissa kahdella kauttamerkillä (/) aloitettu rivi katsotaan kommentiksi. Esim. // Näitä rivejä ei suoriteta, koska ne // alkavat kahdella kauttamerkillä. 3.13

Kommentit Kommentti liittyy yleensä seuraavaan lauseeseen tai riviin. Kommentilla voidaan kattaa joskus useampiakin lauseita tai rivejä. Algoritmin tarkoitus voidaan esittää kommenttina. // Lasketaan hypotenuusan pituus. Algoritmi Hypotenuusa // Luetaan kateetit. Lue 1. luku; Lue 2. luku; // Neliöidään. Neliöi 1. luku; Neliöi 2. luku; // Lasketaan pituus. Summaa neliöt; Ota summan neliöjuuri; // Tulos käyttäjälle. Tulosta neliöjuuri; 3.14

Sisentäminen Sisentäminen tarkoittaa muutaman välilyönnin sijoittamista peräkkäisten ja loogisesti yhteenkuuluvien rivien alkuun siten, että rivit alkavat samalta tasalta. Vaihtoehtoisesti rivejä voidaan sisentää tabulaattorilla, mutta tällöin koodin ulkoasu riippuu tekstieditorista. Välilyöntejä ja tabulaattoria ei saa käyttää sekaisin! Edellä Hypotenuusa-algoritmin rungon rivit on sisennetty, jotta lukijalle on selvää, että juuri sisennetyt rivit muodostavat rungon. 3.15

Esimerkki: Hypotenuusan pituus Huonoa pseudokoodia: Algoritmi Hypotenuusa a lue(); b lue(); tulosta(sqrt(pow(a, 2) + pow(b, 2))); Parempaa pseudokoodia: // Lasketaan suorakulmaisen // kolmion hypotenuusan pituus. Algoritmi Hypotenuusa // Luetaan kateettien // pituudet muuttujiin. akatpit lue(); bkatpit lue(); // Neliöidään kateettien pituudet // pow-operaatiolla. akatpit2 pow(akatpit, 2); bkatpit2 pow(bkatpit, 2); // Lasketaan neliöiden summa. summa akatpit2 + bkatpit2; // Lasketaan hypotenuusan // pituus eli summan neliöjuuri. hyppit sqrt(summa); // Tulostetaan näytölle. tulosta(hyppit); 3.16

Ohjausrakenteet Päätöksiin ja toistoon liittyvä logiikka voidaan esittää niin sanotuilla ohjausrakenteilla (valinta- ja toistorakenteet), jotka ovat tietyn muotoisia lauseita. Pseudokoodin ohjausrakenne koostuu: Javan kieliopin mukaisesta englanninkielisestä sanasta, joka kertoo mikä rakenne on kyseessä. Kaarisulkujen (( )) sisään sijoitetusta ehdosta, joka saa joko totuusarvon tosi (true, T) tai epätosi (false, F). Yhdestä tai useammasta ohjausrakenteeseen liittyvästä, lauseesta, jotka suoritetaan vain, jos ehto on tosi. 3.17

Ohjausrakenteet Rakenteelle varattu sana ja rakenteen ehto kirjoitetaan samalle riville. Rakenteeseen liittyvät lauseet alkavat seuraavalta riviltä. Usean lauseen (n > 1) liittyminen ilmaistaan kokoamalla yksittäiset lauseet kootuiksi lauseiksi aaltosulkeiden ({ }) avulla. Esim. sana (ehto) lause 1; sana (ehto) { lause 1; lause n; } Pseudokoodin rakennetta selkeytetään sisentämällä kootun lauseen sisältö. Koottua lausetta ei päätetä puolipisteellä. 3.18

Ohjausrakenteet Ohjausrakenteet voivat olla sisäkkäisiä. Esim. sana (ehto) { lause 1; sana (ehto) { lause 1;... lause m; } lause n; } Myös toiseen rakenteeseen sisältyvän rakenteen koottu lause sisennetään. Ohjausrakenteet ovat äärimmäisen ilmaisuvoimaisia: Peräkkäisyyteen lisätty valinta ja toisto riittävät minkä tahansa laskettavissa olevan tehtävän ratkaisuun! 3.19

Valintarakenteet Valintarakenteilla ilmaistaan formaalisti, kuinka algoritmin suoritus voi haarautua ehdosta riippuen. Tässä tärkein työkalu on if-lause, jolla kuvataan mitä täytyy tehdä, jos lauseen ehto on tosi. If-lauseen laajennos, if-else-lause, kuvaa kuinka algoritmi toimii, kun ehto on tosi ja epätosi. If-lause kuvaa yksi- ja else-lause kaksihaaraista päätöstä. Sisäkkäisillä valintarakenteilla voidaan kuvata näitä monimutkaisempia päätöksiä. 3.20

Valintarakenteet: if-lause Kuvaa yksittäisen päätöshaaran: lauseet suoritetaan vain ehdon toteutuessa. Sulkujen sisällä olevan ehto (esim. painava esine tai paino > 50 ) palauttaa totuusarvon true toteutuessaan. Huom! Jos n = 1, voidaan aaltosulkeet jättää pois. Yleisesti: if (ehto) { lause 1;... lause n; } F ehto T Esim. if (painava esine) Kilauta kaverille; T paino>50 F 3.21

Valintarakenteet: if-lause Algoritmi KeitäTeetä if (teepussit lopussa) Osta teepusseja; Kuumenna pannullinen vettä; Laita teepusseja pannuun; Hauduta 2-3 minuuttia; Ota teepussit pannusta; T Osta teepusseja Alku Teepussit lopussa? Kuumenna pannullinen vettä Laita teepusseja pannuun F Hauduta 2-3 minuuttia Ota teepussit pannusta Loppu 3.22

Valintarakenteet: if-else-lause Kuvaa kaksihaaraisen päätöksen. Lauseet suoritetaan vaihtoehtoisesti: ehdon ollessa tosi suoritetaan if-osa, muuten else-osa. Huom! Jos n = 1 tai m = 1, voidaan aaltosulkeet jättää pois. Yleisesti: if (ehto) { lause 1;... lause n; } else { lause 1;... lause m; } F T ehto Esim. if (painava esine) Kilauta kaverille; else Ala kiskoa; 3.23

Valintarakenteet: if-else-lause Algoritmi KeitäTeetä if (teepussit lopussa) Osta teepusseja; else { Huokaise helpotuksesta; Laita ostoslistalle; } Ota teepussit pannusta; T Osta teepusseja Alku Teepussit lopussa? Kuumenna pannullinen vettä Loppu F Huokaise helpotuksesta Laita ostoslistalle 3.24

Sisäkkäiset valintarakenteet if- ja if-elselauseita voidaan yhdistää monimutkaisemmiksi valinnoiksi. else-osa liittyy aina lähimpään vapaaseen ifosaan. Sisennys auttaa sisäkkäisyyden ymmärtämistä. Algoritmi PolttaaPolttaa lämpö lue(); if (lämpö > 15) if (lämpö < 25) else tulosta("sopiva!"); else tulosta("alkaa olla liian kuuma!"); tulosta("alkaa olla liian kylmä!"); 3.25

Sisäkkäiset valintarakenteet // Sanotaan luku sisäkkäisillä // if-else lauseilla. Algoritmi SanoLukujaA numero lue(); if (numero = 1) tulosta("yksi!"); else if (numero = 2) tulosta("kaksi!"); else if (numero = 3) tulosta("kolme!"); else tulosta("en osaa!"); // Sanotaan luku peräkkäisillä // if-lauseilla. Algoritmi SanoLukuB numero lue(); if (numero = 1) tulosta("yksi!"); if (numero = 2) tulosta("kaksi!"); if (numero = 3) tulosta("kolme!"); if (numero < 1) tulosta("en osaa!"); if (numero > 3) tulosta("en osaa!"); 3.26

Toistorakenteet Toistorakenteilla formalisoidaan toistuva suoritus. Toisto voidaan ilmaista yhtäpitävästi while-, do-while- tai forlauseilla, mutta yleensä jokin näistä on tietyssä tilanteessa luonnollisempi kuin toiset. Toistorakennetta kutsutaan lyhyesti silmukaksi. Silmukan suoritusta ohjataan usein laskurimuuttujalla, jonka avulla pysytään selvillä siitä, monesko kierros on meneillään. Myös lippumuuttujia käytetään ohjaukseen. Virheellinen logiikka voi johtaa silmukan loputtomaan toistoon (ikuinen silmukka). 3.27

Toistorakenteet: while-lause Yleisesti: Esim. while (ehto) { lause 1;... lause n; } F ehto T while (jaksat) Lue tenttiin; Lauseita suoritetaan niin kauan kuin ehto on tosi. Suoritus on esiehtoinen, koska ehto on lauseen alussa. Voi siis olla, että ehto on epätosi jo lauseeseen tultaessa. Tällöin while-lause ohitetaan. 3.28

Toistorakenteet: while-lause Algoritmi Heippa1 // Alustetaan laskuri. i 0; // Luetaan toistojen lkm. lkm lue(); // Silmukoidaan lkm kertaa. while (i < lkm) { tulosta("heippa!"); i i + 1; } Alku i 0 lkm lue() i < lkm F Loppu T tulosta ("Heippa") i i + 1 3.29

Toistorakenteet: do-while-lause Yleisesti: Esim. do { lause 1;... lause n; } while (ehto); ehto F T do { Lue tenttiin; } while (jaksat); Jälkiehtoinen toisto: Lauseet suoritetaan ainakin kerran, mikäli tätä ei estetä valintarakenteella. Yhdistettyä lausetta ei voi poistaa, kun n = 1. 3.30

Toistorakenteet: do-while-lause Algoritmi Heippa2 // Alustetaan laskuri. i 0; // Luetaan toistojen lkm. lkm lue(); // Silmukoidaan, jos tarpeen. if (lkm > 0) do { tulosta("heippa!"); i i + 1; } while (i < lkm); Alku i 0 F lkm lue() lkm > 0 T tulosta ("Heippa") i i + 1 i < lkm F Loppu T 3.31

Toistorakenteet: for-lause for (laskurin alustus; ehto; laskurin päivitys) { lause 1;... lause n; } Lauseiden toisto laskurimuuttujan avulla. Kätevä, kun toistojen lukumäärä tiedetään. Voidaan korvata helposti while-lauseella. Huom! Jos n = 1, aaltosulkeet voidaan jättää pois. 3.32

Toistorakenteet: for-lause Alusta laskuri ehto T... Päivitä laskuri F Ensin: Alustetaan laskuri ja tarkistetaan ehto. Sitten: Jos ehto oli tosi, niin suoritetaan lauseet ja päivitetään laskuria, kunnes ehto on epätosi. 3.33

Toistorakenteet: for-lause Algoritmi Heippa3 Alku lkm lue(); for (i 0; i < lkm; i i+1) tulosta("heippa!"); lkm lue() i 0 Olkoon lkm = 3. Suoritus: i i < 3 Mitä tehdään? 0 true Alustus, 1. kierros 1 true 2. kierros 2 true 3. kierros 3 false Lopetetaan suoritus i < lkm F Loppu T tulosta ("Heippa") i i + 1 3.34

Esimerkki: Oven avaaminen // Aikaisemmin vuokaavion // avulla esitetty algoritmi // oven avaamiseen // pseudokoodina. Algoritmi AvaaOvi // Alustetaan avauskulmaa // esittävä muuttuja. kulma 0; // Otetaan kahvasta kiinni. tartu(kahva); // Ovi vedettävää mallia. if (vedettävä(ovi)) // Vedetään kunnes auki. while (kulma < 70º) vedä(kahva); // Ovi työnnettävää mallia else // Työnnetään kunnes auki. while (kulma > -70º) työnnä(kahva); 3.35

Esimerkki: Keskiarvon laskeminen // Keskiarvoalgoritmi tarkempana // pseudokoodina. Algoritmi LaskeKeskiarvo // Alustetaan muuttujia. summa 0; i 1; // Luetaan lukujen lukumäärä. lkm lue(); // Luetaan luvut silmukassa. while (i lkm) { x lue(); summa summa + x; i i + 1; } // Voitiin laskea keskiarvo. if (lkm > 0) { ka summa / lkm; tulosta(ka); } // Lukuja ei luettu. else tulosta("ei lukuja!"); 3.36

Kertaus Koodi jaetaan lauseiksi välimerkillä. Sisentäminen ja kommentointi tärkeää. Ohjausrakenteilla peräkkäisyyteen liitetään valintoja ja toistoa. Valinta: if- ja if-else. Toisto: while, do-while ja for. Näillä tiedoilla voidaan tehdä pieniä ohjelmia - nyt pitäisi opetella kuinka tämä tapahtuu käytännössä Java-kielellä. 3.37