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

Samankaltaiset tiedostot
16. Ohjelmoinnin tekniikkaa 16.1

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

16. Ohjelmoinnin tekniikkaa 16.1

11. Javan toistorakenteet 11.1

13. Loogiset operaatiot 13.1

13. Loogiset operaatiot 13.1

12. Javan toistorakenteet 12.1

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

12. Javan toistorakenteet 12.1

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

Ehto- ja toistolauseet

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

Sisällys. 16. Lohkot. Lohkot. Lohkot

Sisällys. 15. Lohkot. Lohkot. Lohkot

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

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

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

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

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

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

Java-kielen perusteita

11. Javan valintarakenteet 11.1

Java-kielen perusteet

Ehto- ja toistolauseet

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

3. Muuttujat ja operaatiot 3.1

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

11. Javan valintarakenteet 11.1

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

Java-kielen perusteet

Tietotyypit ja operaattorit

Muuttujat ja kontrolli. Ville Sundberg

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

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

Harjoitus 3 -- Ratkaisut

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

14. Hyvä ohjelmointitapa 14.1

7. Näytölle tulostaminen 7.1

Java-kielen perusteita

13. Hyvä ohjelmointitapa (osa 1) 13.1

Ohjausrakenteet. Valinta:

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

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit:

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva

6. Muuttujat ja Java 6.1

811120P Diskreetit rakenteet

Ohjelmoinnin peruskurssi Y1

Ohjelmointiharjoituksia Arduino-ympäristössä

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

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

811120P Diskreetit rakenteet

Algoritmit 1. Demot Timo Männikkö

5/20: Algoritmirakenteita III

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

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

Luento 5. Timo Savola. 28. huhtikuuta 2006

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

Java-kielen perusteet

Ohjelmoinnin perusteet Y Python

Algoritmit 1. Luento 4 Ke Timo Männikkö

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 12 (opetusmoniste, kappaleet )

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

etunimi, sukunimi ja opiskelijanumero ja näillä

Algoritmit 1. Demot Timo Männikkö

19. Olio-ohjelmointia Javalla 19.1

ITKP102 Ohjelmointi 1 (6 op)

Python-ohjelmointi Harjoitus 2

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva

6. Muuttujat ja Java 6.1

Ohjelmoinnin perusteet Y Python

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


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

Ohjelmoinnin perusteet Y Python

Tietueet. Tietueiden määrittely

Osa. Toimintojen toteuttaminen ohjelmissa vaatii usein haarautumisia ja silmukoita. Tässä luvussa tutustummekin seuraaviin asioihin:

Tietorakenteet (syksy 2013)

Ohjelmoinnin perusteet Y Python

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

OPPITUNTI 5 Ohjelman kulku

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

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

7. Oliot ja viitteet 7.1

Kielioppia: toisin kuin Javassa

Palautetta viime luennosta

Java kahdessa tunnissa. Jyry Suvilehto

1. Omat operaatiot 1.1

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

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

815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä

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

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

815338A Ohjelmointikielten periaatteet

Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Ta

4. Olio-ohjelmoinista lyhyesti 4.1

Ohjelmoinnin perusteet Y Python

Transkriptio:

Sisällys 17. Ohjelmoinnin tekniikkaa for-lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. if-else-lause vaihtoehtoisesti merkiten. Ohjelman optimointi. 17.1 17.2 for-lause lyhemmin Laskurin esittely voidaan tehdä alustuksen yhteydessä: for (laskurin esittely ja alustus; ehto; laskurin päivitys) { Esim. lause 1;... lause n; // Tervehditään x kertaa. for (int i = 0; i < x; i = i + 1) System.out.println("Heippa!"); Laskuri käytettävissä nyt vain silmukan sisällä. Aritmeettisten operaattoreiden (+, -, *, /, %) tuloksen sijoitus voidaan merkitä lyhyemmin yhdistetyillä sijoitusoperaattorilla +=, -=, *=, /= ja %=. Yleisesti: muuttuja = muuttuja operaatio arvo; muuttuja operaatio= arvo; missä arvo voi olla myös muuttujan, vakion tai lausekkeen arvo. Esim. int i = 10; i = i + 2; i += 2; // 12 i = i - 2; i -= 2; // 10 i = i * 2; i *= 2; // 20 17.3 17.4

Esim. i = i / 2; i /= 2; // 10 i = i % 2; i %= 2; // 0 Esim. int i = 10; i = i + 13 / 3; i += 13 / 3; // 14 Lyhyemmillä merkinnöillä saadaan helposti aikaiseksi vaikeaselkoista koodia. Esim. int i = 10; int j = 2; i *= i + j; // 120 Edellinen lause ei ole i = i * i + j; vaan i = i * (i + j); Lisäys- ja vähennysoperaatioille on vielä yksi merkintätapa, jolla voidaan kasvattaa (++) tai vähentää (--) muuttujan arvoa yhdellä. Erittäin kätevää erityisesti silmukoiden yhteydessä. Yleisesti: muuttuja = muuttuja + 1; ++muuttuja; tai muuttuja++; muuttuja = muuttuja - 1; --muuttuja; tai muuttuja--; i = i + 1; i++; tai ++i; 17.5 17.6 ++ ja -- operaattoreiden paikka säätelee muuttujan arvon lisäystä tai vähennystä suhteessa lausekkeeseen, jossa operaatio esiintyy. Muuttujaa edeltävä operaatio suoritetaan ennen lausekkeen laskemista. Muuttujan jälkeen oleva operaatio suoritetaan lausekkeen laskemisen jälkeen. Jos lauseen ainoa operaatio on ++ tai --, niin lopputulos on sama. i++; ++i; // 2 i--; --i; // 1 Operaattoreita +=, -=, *=, /=, %=, ++ ja -- voidaan ajatella lausekelauseiksi: niitä voi käyttää sekä lauseina että lausekkeina. Esim. i++; // lause i++ * 2 // lauseke 17.7 17.8

// Kasvatetaan ensin muuttujaa i yhdellä // ja kerrotaan vasta sitten. int j = ++i * 2; // i == 2, j == 4 // Kerrotaan ensin ja kasvatetaan // muuttujaa i yhdellä kertomisen jälkeen. int k = i++ * 2; // i == 1, k == 2 Esim. final int YLARAJA = 3; int i = 0; // Laskurin arvo muuttuu ennen lauseketta. while (++i < YLARAJA) System.out.print(i + " "); // 1 2 System.out.println(); // Laskurin arvo muuttuu lausekkeen jälkeen. int j = 0; while (j++ < YLARAJA) // 1 2 3 System.out.print(j + " "); 17.9 17.10 Esittely ja alustaminen yhdellä lauseella Esittely ja alustaminen yhdellä lauseella Samassa lauseessa voidaan esitellä ja alustaa useita samantyyppisiä muuttujia pilkulla erottaen. Yhtä lausetta käyttäen voi ohjelmoida hieman nopeammin, mutta erillisillä lauseilla ohjelma on usein selkeämpi. Esim. // Esitellään ja alustetaan. int i; int j; int k = 1; int l = 2; int m; // Esitellään ja alustetaan. int i, j, k = 1, l = 2, m; Alustaminen on mahdollista merkitä lyhemmin, kun samantyyppisen muuttujien alkuarvo on sama. Esim. double a = 3.14, b = 3.14, c = 3.14; double a, b, c; a = b = c = 3.14; Huom! Javassa ei voi esitellä ja alustaa samaan arvoon yhdessä lauseessa. Esimerkiksi lause double a = b = c = 3.14; on virheellinen, koska muuttujia b ja c ei ole esitelty. 17.11 17.12

Yksinkertaiseen arvonvalintaan kirjoitettu if-elselause voidaan esittää ehto-operaattorin (?:, conditional operator) avulla. Yleisesti: ehtolauseke? lauseke 1 : lauseke 2 Javan ainoa kolmioperadinen operaattori. Jos ehto on tosi (true), suoritetaan ensimmäinen lauseke ja palautetaan sen arvo. Jos ehto on epätosi (false), suoritetaan toinen lauseke ja palautetaan sen arvo. Esim. kahden luvun minimin päättely if-else-lauseella. // Apumuuttuja minimille. int min; // Vertailtavat luvut. int luku1 = 1; int luku2 = 2; // Minimin päättely. if (luku1 < luku2) min = luku1; else min = luku2; Esim. kahden luvun minimin päättely ehto-operaattorilla. // Muuttujat minimille // ja vertailtaville luvuille. int min; int luku1 = 1, luku2 = 2; // Minimin päättely. min = luku1 < luku2? luku1 : luku2; 17.13 17.14 Esim. Lämpötilan luonnehdinta kahdella tavalla. // Lämpötila Celsius-asteina. double lampo = 24.2; // Päätellään if-else-lauseen avulla. if (lampo > 25) System.out.println("Helle"); else System.out.println("Kylmempää"); // Päätellään ehto-operaattorin avulla. System.out.println(lampo > 25? "Helle" : "Kylmempää"); Ehto-operaatio joskus hankalasti ymmärrettävissä, joten sen käyttöä syytä välttää lausekkeiden osana. Melko heikko operaatio ja tästä syystä suljetaan usein lausekkeissa sulkujen sisään: Aritmeettisia, vertailu- ja loogisia operaatioita heikompi. Sijoitusoperaatiota ja yhdistettyä sijoitusta vahvempi. 17.15 17.16

Ohjelman optimointi Ohjelman optimointi Optimoimalla pyritään yleensä nopeuttamaan ohjelman suoritusta tai vähentämään muistin käyttöä. Nopeuttaminen voi vaatia lisää muistia tai päinvastoin. Pitkälle optimoitu ohjelma on vaikeaselkoinen. Perustekniikoita: Pysäytä silmukka heti, kun on selvää ettei lisälaskentaa tarvita. Kutsu laskennallisesti raskaita operaatioita harvoin. Vältä tarpeettomia muistivarauksia. Kääntäjät osaavat optimoida lähdekoodin pieniä yksityiskohtia hyvin. Optimoimaton ohjelma: // Silmukan ehdossa // kutsutaan tarpeettomasti // (raskasta) operaatiota. while (i < laskeylaraja()) {... Optimoitu ohjelma: // Lasketaan yläraja // ennen silmukkaa, // jolloin ohjelma nopeutuu. int ylaraja = laskeylaraja(); while (i < ylaraja) {... 17.17 17.18