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

Samankaltaiset tiedostot
16. Ohjelmoinnin tekniikkaa 16.1

16. Ohjelmoinnin tekniikkaa 16.1

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

11. Javan toistorakenteet 11.1

13. Loogiset operaatiot 13.1

13. Loogiset operaatiot 13.1

12. Javan toistorakenteet 12.1

12. Javan toistorakenteet 12.1

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

Sisällys. 15. Lohkot. Lohkot. Lohkot

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

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

Sisällys. 16. Lohkot. Lohkot. Lohkot

Ehto- ja toistolauseet

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

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

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

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

Java-kielen perusteita

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 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

11. Javan valintarakenteet 11.1

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

Java-kielen perusteet

Muuttujat ja kontrolli. Ville Sundberg

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

Tietotyypit ja operaattorit

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

14. Hyvä ohjelmointitapa 14.1

7. Näytölle tulostaminen 7.1

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

13. Hyvä ohjelmointitapa (osa 1) 13.1

Ohjausrakenteet. Valinta:

811120P Diskreetit rakenteet

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

Harjoitus 3 -- Ratkaisut

Java-kielen perusteita

811120P Diskreetit rakenteet

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

Algoritmit 1. Demot Timo Männikkö

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

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

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

Luento 5. Timo Savola. 28. huhtikuuta 2006

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

6. Muuttujat ja Java 6.1

Ohjelmointiharjoituksia Arduino-ympäristössä

Java-kielen perusteet

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

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

Ohjelmoinnin peruskurssi Y1

5/20: Algoritmirakenteita III

Algoritmit 1. Demot Timo Männikkö

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

ITKP102 Ohjelmointi 1 (6 op)

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

Ohjelmoinnin perusteet Y Python

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

OPPITUNTI 5 Ohjelman kulku

Ohjelmoinnin perusteet Y Python

1. Omat operaatiot 1.1

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

Ohjelmoinnin perusteet Y Python

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

Ohjelmoinnin perusteet Y Python

7. Oliot ja viitteet 7.1

Kielioppia: toisin kuin Javassa

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

Palautetta viime luennosta

Java kahdessa tunnissa. Jyry Suvilehto

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

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

19. Olio-ohjelmointia Javalla 19.1

Python-ohjelmointi Harjoitus 2

815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

Ohjelmoinnin perusteet Y Python

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

815338A Ohjelmointikielten periaatteet

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

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

etunimi, sukunimi ja opiskelijanumero ja näillä

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

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

6. Muuttujat ja Java 6.1

Harjoitustyön testaus. Juha Taina

UML -mallinnus Viestiyhteyskaavio EERO NOUSIAINEN

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

Ohjelmoinnin perusteet Y Python

1. luento. Ohjelmointi (C) T0004 Syksy luento. 1. luento. 1. luento. 1. luento. kurssin sisältö ja tavoitteet työmuodot.

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

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

Python-ohjelmointi Harjoitus 5

JavaScript alkeet Esimerkkikoodeja moniste 2 ( Metropolia)

Transkriptio:

Sisällys 16. Ohjelmoinnin tekniikkaa Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. For-lause lyhemmin. If-else-lause vaihtoehtoisesti merkiten. Ohjelman optimointi. 16.1 16.2 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. i = i + 2; i += 2; // 12 i = i - 2; i -= 2; // 10 i = i * 2; i *= 2; // 20 Esimerkki: i = i / 2; i /= 2; // 10 i = i % 2; i %= 2;// 0 i = i + 13 / 3; i += 13 / 3; // 14 Lyhyemmillä merkinnöillä saadaan helposti aikaiseksi vaikeaselkoista koodia. int j = 2; i *= i + j; // 120 Edellinen lause ei ole i = i * i + j; vaan i = i * (i + j); 16.3 16.4

Muuttujan arvoa voidaan kasvattaa yhdellä (++) tai vähentää (--) yhdellä nopealla, mutta vaarallisella tavalla. 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; ++ 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. 16.5 16.6 i++; ++i; // 2 i--; --i; // 1 // 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 Esimerkki: 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 + " "); 16.7 16.8

For-lause lyhemmin For-lause lyhenee esittelemällä laskuri otsikossa: for (laskurin esittely ja alustus; ehto; laskurin päivitys) { lause 1;... lause n; ja käyttämällä ++- tai ---operaattoreita laskurin päivitykseen. Laskuri on käytettävissä nyt vain silmukan sisällä. Esimerkki: // Tervehditään x kertaa. for (int i = 0; i < x; i++) { System.out.println("Heippa!"); 16.9 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; 16.10 Esittely ja alustaminen yhdellä lauseella Alustaminen on mahdollista merkitä lyhemmin, kun samantyyppisen muuttujien alkuarvo on sama. Esimerkki: double a = 3.14, b = 3.14, c = 3.14; double a, b, c; a = b = c = 3.14; 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. Yksinkertaiseen arvonvalintaan kirjoitettu if-else-lause 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. 16.11 16.12

// Kahden luvun minimin // päättely if-else-lauseella. int min; int luku1 = 1; int luku2 = 2; // Minimin päättely. if (luku1 < luku2) { min = luku1; else { min = luku2; // Kahden luvun minimin päättely // ehto-operaattorilla. int min; int luku1 = 1, luku2 = 2; // Minimin päättely. min = luku1 < luku2? luku1 : luku2; 16.13 Esimerkki: 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ää"); 16.14 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. 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. 16.15 16.16

Ohjelman optimointi 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) {... 16.17