16. Ohjelmoinnin tekniikkaa 16.1

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

16. Ohjelmoinnin tekniikkaa 16.1

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

11. Javan toistorakenteet 11.1

13. Loogiset operaatiot 13.1

12. Javan toistorakenteet 12.1

13. Loogiset operaatiot 13.1

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

12. Javan toistorakenteet 12.1

Ehto- ja toistolauseet

Sisällys. 15. Lohkot. Lohkot. Lohkot

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

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

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

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

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

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

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

Muuttujat ja kontrolli. Ville Sundberg

Tietotyypit ja operaattorit

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

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

14. Hyvä ohjelmointitapa 14.1

7. Näytölle tulostaminen 7.1

Harjoitus 3 -- Ratkaisut

13. Hyvä ohjelmointitapa (osa 1) 13.1

Ohjausrakenteet. Valinta:

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

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

Java-kielen perusteita

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

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

Ohjelmointiharjoituksia Arduino-ympäristössä

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

811120P Diskreetit rakenteet

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

Algoritmit 1. Demot Timo Männikkö

5/20: Algoritmirakenteita III

etunimi, sukunimi ja opiskelijanumero ja näillä

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

Java-kielen perusteet

Ohjelmoinnin perusteet Y Python

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

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

6. Muuttujat ja Java 6.1

19. Olio-ohjelmointia Javalla 19.1

Algoritmit 1. Demot Timo Männikkö

ITKP102 Ohjelmointi 1 (6 op)

Python-ohjelmointi Harjoitus 2

Ohjelmoinnin perusteet Y Python

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

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

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

OPPITUNTI 5 Ohjelman kulku

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

Ohjelmoinnin perusteet Y Python

7. Oliot ja viitteet 7.1

Kielioppia: toisin kuin Javassa

1. Omat operaatiot 1.1

Palautetta viime luennosta

Tietueet. Tietueiden määrittely

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

Ohjelmoinnin perusteet Y Python

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ä

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

815338A Ohjelmointikielten periaatteet

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

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

Harjoitustyön testaus. Juha Taina

Tietorakenteet, laskuharjoitus 2,

UML -mallinnus Viestiyhteyskaavio EERO NOUSIAINEN

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

Transkriptio:

16. Ohjelmoinnin tekniikkaa 16.1

Sisällys For-lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. If-else-lause vaihtoehtoisesti merkiten. Ohjelman optimointi. 16.2

For-lause lyhemmin Laskurin esittely voidaan tehdä alustuksen yhteydessä: for (laskurin esittely ja alustus; ehto; laskurin päivitys) { } lause 1;... lause n; Esimerkki: // 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ä. 16.3

Aritmetiikkaa toisin merkiten 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. Esimerkki: int i = 10; i = i + 2; i += 2; // 12 i = i - 2; i -= 2; // 10 i = i * 2; i *= 2; // 20 16.4

Aritmetiikkaa toisin merkiten Esimerkki: i = i / 2; i /= 2; // 10 i = i % 2; i %= 2;// 0 Esimerkki: int i = 10; i = i + 13 / 3; i += 13 / 3; // 14 Lyhyemmillä merkinnöillä saadaan helposti aikaiseksi vaikeaselkoista koodia. Esimerkki: int i = 10; int j = 2; i *= i + j; // 120 Edellinen lause ei ole i = i * i + j; vaan i = i * (i + j); 16.5

Aritmetiikkaa toisin merkiten 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--; Esimerkki: int i = 1; i = i + 1; i++; tai ++i; Esimerkki: // Tervehditään x kertaa. for (int i = 0; i < x; i++) System.out.println("Heippa!"); 16.6

Aritmetiikkaa toisin merkiten ++ 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.7

Aritmetiikkaa toisin merkiten Esimerkki: int i = 1; i++; ++i; // 2 i--; --i; // 1 Operaattoreita +=, -=, *=, /=, %=, ++ ja -- voidaan ajatella lausekelauseiksi: niitä voi käyttää sekä lauseina että lausekkeina. Esimerkki: i++; // lause i++ * 2 // lauseke 16.8

Aritmetiikkaa toisin merkiten Esimerkki: int i = 1; // Kasvatetaan ensin muuttujaa i yhdellä // ja kerrotaan vasta sitten. int j = ++i * 2; // i == 2, j == 4 Esimerkki: int i = 1; // Kerrotaan ensin ja kasvatetaan // muuttujaa i yhdellä kertomisen jälkeen. int k = i++ * 2; // i == 1, k == 2 16.9

Aritmetiikkaa toisin merkiten 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.10

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

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

If-else-lause toisin merkiten 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.13

If-else-lause toisin merkiten Esimerkki: kahden luvun minimin päättely if-elselauseella. // Apumuuttuja minimille. int min; // Vertailtavat luvut. int luku1 = 1; int luku2 = 2; // Minimin päättely. if (luku1 < luku2) min = luku1; else min = luku2; Esimerkki: 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; 16.14

If-else-lause toisin merkiten 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.15

If-else-lause toisin merkiten 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. 16.16

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

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