OHJELMOINTITEKNIIKKA

Koko: px
Aloita esitys sivulta:

Download "OHJELMOINTITEKNIIKKA"

Transkriptio

1 OHJELMOINTITEKNIIKKA 1 Kurssin suoritus Kurssin kahdesta tentistä saa kummastakin enintään 10 pistettä ja harjoituksista enintään 10 pistettä eli kurssin maksimipistemäärä on 30. Arvosana määräytyy oheisen taulukon mukaan. Tentit ovat ohjelmointitehtäviä. Harjoituksen jokaisesta kolmesta tehdystä tehtävästä saa 1 pisteen (hyvä yritys riittää). Opiskelija lähettää harjoitusohjelmansa sähköpostin liitteenä osoitteeseen eräpäivään mennessä. Tenttiohjelman arviointikriteerit ovat: kääntyy(2), tekee annetun tehtävän(3), ratkaisulogiikka(3), luettavuus(2). Harjoitus- ja tenttipisteet huomioidaan kevään 2015 uusintatenteissä. Uusintatenttejä on kaksi ja ne kattavat kurssin koko aihealueen. Yhdellä uusintatentillä voi korvata yhden tenttisuorituksen. Harjoituksia ei voi korvata eräpäivän jälkeen. Luentomateriaali, luennolla laaditut ohjelmat, harjoitustehtävät ja harjoitusten mallivastaukset löytyvät verkko-osoitteesta PISTEET ARVOSANA < Ohjelmointitekniikka - Markku Nevanranta 1

2 Java-kirjoja Mika Vesterholm, Jorma Kyppö: Java-ohjelmointi, Talentum 2008, ISBN Simo Silander, Vesa Ollikanen, Juha Peltomäki: Java, WSOY 2010, ISBN Jukka Harju, Jukka Juslin: Java-ohjelmointi opas ammattimaiseen osaamiseen, Readme.fi 2009, ISBN Java-ohjelmointikielen yleisyys TIOBE Programming Community Index (ohjelmoijia, kursseja, toimijoita) kieli % %muutos 1 2 C Java Objective-C C Basic C# Python PHP Perl JavaScript Visual Basic Visual Basic.NET Ruby F# Pascal Transact-SQL ActionScript Delphi Lisp PL/SQL Ohjelmointitekniikka - Markku Nevanranta 2

3 Ohjelmointikielten käytön kehitys 7 OHJELMANKEHITYS JAVA-YMPÄRISTÖSSÄ 8 Ohjelmointitekniikka - Markku Nevanranta 3

4 Ohjelman suoritus tietokoneessa prosessori keskusmuisti levymuisti käskykanta compile execute Editori Ohjelma Kääntäjä/Tulkki open save tiedostot Ohjelma Tiedot 9 Java-kielen tulkitseminen AJAMINEN SYÖTTÖTIEDOT ohjelma.java ohjelma.class OMA OHJELMA LAUSEKIELELLÄ KÄÄNTÄJÄ KONEKIELELLÄ OMA OHJELMA VÄLIKIELELLÄ (tavukoodi) TULKKI JVM:ssä (JRE) Editori JDK JAVAN KIRJASTOT TULOSTIEDOT 12 Ohjelmointitekniikka - Markku Nevanranta 4

5 Työvälineiden asennus Java SE 8 (JDK, JRE) dokumentaatio Eclipse Luna NetBeans 8.0 JCreator jgrasp JBuilder Linkit kurssin sivuilla Käyttöopetus harjoituksissa 13 Editori ja dokumentaatio Projekti, lähdekielihakemistot, package, luokka, 14 Ohjelmointitekniikka - Markku Nevanranta 5

6 ALGORITMINEN AJATTELU 15 Ongelman hahmottaminen ohjelmaksi PALVELU Input Output TOIMINTA Prosessi TIEDOT Muuttujat 4 8 LUVUT LUKU1 LUKU2 KESKIARVO Puoliohjelma Peräkkäin Toisto Valinta Tiedot toiminnan kuvauksesta 1. Lisää summaan annetut luvut 2. Jaa summa lukujen määrällä 6 VASTAUS VASTAUS Hahmottamisprosessi ongelmasta ratkaisuun: toiminnan ymmärtäminen + algoritmin keksiminen + tekniikan osaaminen + ohjelmointitekniikkaa 16 Ohjelmointitekniikka - Markku Nevanranta 6

7 Keskiarvo-vuokaavio KESKIARVO LUE LUKU LUKU >= 0 E K VASTAUS= VASTAUS+LUKU N=N+1 VASTAUS= VASTAUS / N TULOSTA VASTAUS LOPPU 17 Keskiarvo-puoliohjelma PERÄKKÄISYYS VASTAUS = 0, N = 0, LUKU LUVUT Peräkkäin Valinta Toisto L: LUE LUKU JOS LUKU < 0 MENE LOPPU VALINTA VASTAUS = VASTAUS + LUKU N = N + 1 VASTAUS MENEL LOPPU: VASTAUS=VASTAUS / N TULOSTA VASTAUS TOISTO 18 Ohjelmointitekniikka - Markku Nevanranta 7

8 Java-ohjelman rakenne L: PUOLIOHJELMA VASTAUS = 0, N = 0, LUKU LUE LUKU JOS LUKU < 0 MENE LOPPU JAVA-OHJELMA public class Keskiarvo { public static void main(string[] args) { double vastaus=0, luku; int n=0; VASTAUS = VASTAUS + LUKU N = N + 1 MENE L LOPPU: VASTAUS=VASTAUS / N TULOSTA VASTAUS luku = Lue.desi( ); while (luku!= 0) { vastaus = vastaus + luku; vastaus += luku; n = n + 1; n++; luku = Lue.desi( ); vastaus = vastaus / n; vastaus /= n; System.out.println( Keskiarvo on +vastaus); 19 Ohjelman laatimisen vaiheet Editori kuntoon Perspektiivit, working setit, workspacet, Projektit Lähdekoodikansiot (java) Package-kansiot Tuloskoodikansio (class) Koodin kirjoitus editorilla Kääntäminen Virheen jäljitys Välitulosteet Debuggaus Testaus Integrointi järjestelmään Käyttöönotto 20 Ohjelmointitekniikka - Markku Nevanranta 8

9 Luentoharjoitus 1 Minkälaisia asioita teet päivittäin a) peräkkäin b) toistuvasti c) valitsemalla Eroaako ihminen tietokoneesta? 21 Luentoharjoitus 2 Tehdään ohjelma, joka antaa käyttäjän pelata sudokua. Minkälaisia tehtäviä ja missä järjestyksessä ne suoritetaan. 22 Ohjelmointitekniikka - Markku Nevanranta 9

10 Luentoharjoitus 3 Muuttuja SALDO = euroa. Muuttuja KORKO = 4 %. Muuttuja VUODET = 5 vuotta. Laadi (puoli)ohjelma, joka kertoo, kuinka paljon rahaa tilillä on VUODET-muuttujan osoittaman vuosimäärän kuluttua. KorkoWhile.java 23 Luentoharjoitus 4 Laadi radioaktiivisen aineen puoliintumisen laskeva (puoli)ohjelma siten, että ohjelma ilmoittaa, milloin radioaktiivisuuden taso on laskenut alle annetun arvon. Mitä muuttujia ohjelmassa tarvitaan? Puoliintumisaika.java 24 Ohjelmointitekniikka - Markku Nevanranta 10

11 JAVAN KIRJOITUSTYYLI TIETOTYYPIT OPERAATIOT 25 Tekstin jako riveille Sisennykset Välilyönnit Sijoittelu while (paaoma > 0) { velkamarkat = paaoma - lyhennys; if (velkamarkat <= 0) System.out.println( Laina maksettu ); else{ paaoma = velkamarkat; System.out.println( Lainaa jäljellä ); 26 Ohjelmointitekniikka - Markku Nevanranta 11

12 Kommentit /* Usearivisiä kommentteja voi rajata näin */ // Loppurivi tulkitaan kommentiksi lyhennys=paaoma; // Tässä kommentoin yhtä riviä /** Javadoc-ohjelma näyttää tämän dokumentoinnissa */ 27 Kommentit /******************************************************************************* Kuvaus: Ohjelma laskee annetun luvun kertoman (tehtävä 22) Tekijä: Markku Nevanranta (opiskelijanumero) Muutettu: mn Syttötietojen tarkistus lisätty Julkiset metodit: public void lueluku() kysyy luvun public int tulostaluku() tulostaa kertoman *****************************************************************************/ 28 Ohjelmointitekniikka - Markku Nevanranta 12

13 Tunnukset Tunnukseksi kutsutaan nimeä, jonka ohjelmoija antaa jollekin nimettävälle asialle: muuttujalle, metodille, vakiolle, luokalle, Tunnusten nimet ovat pituudeltaan rajoittamattomia merkkejä, numeroita Unicode: å, ä, ö pienet ja isot kirjaimet ovat eri merkkejä (palkka, Palkka) luokkien nimissä ei å, ä, ö merkkejä Muuttujien nimet on hyvä alkaa pienellä kirjaimella Monisanaiset muuttujien toinen, kolmas jne. sanat alkavat isoilla kirjaimilla Silmukkalaskureina käytetään lyhyitä (yksikirjaimisia) muuttujanimiä Luokkien nimet alkavat isolla kirjaimella Vakiot kirjoitetaan kokonaan isolla 29 Tunnukset int laskuri, kuukaudennumero, palkkavero; for (int i=0; i<100; i++) Luokan nimi public class Auto { Vakiot final int KKLKM = 12; 31 Ohjelmointitekniikka - Markku Nevanranta 13

14 Biteistä tietotyypeiksi luku=arvo+2 OHJELMA ASIAKAS string etunimi string sukunimi int luku string osoite TIEDOT Kalle Kehveli 45 Kotikuja 5 ADD R1,123 KalleKehveli45Kotikuja 5 tulkinta/koodaus? Muuttujan rakenne Yksi kenttä: muuttuja = arvo Rakenne eli monta kenttää: muuttuja = osoite Esimerkiksi: Asetus summa = palkka; henkilö = asiakas; Vertailu summa == palkka; henkilö == asiakas; KESKUSMUISTI OHJELMA palkka Asiakas nimi kunta saldo kuukaudet[ ] 9500 KALLE VIRTANEN PORI Ohjelmointitekniikka - Markku Nevanranta 14

15 Perustietotyypit TYYPPI BITTEJÄ ARVOALUE byte short int long float * *10 38 (7 tarkkuus) double * * (15 tarkkuus) char 16 a \n \\ numero (Unicode koodi) boolean enum true, false {arvoluettelo 34 Tyyppimuunnokset AUTOMAATTINEN MUUNNOS int a; long b; b = a; byte 8 short 16 char 16 int 32 float 32 long 64 double 64 OHJELMOIJAN TEKEMÄ TYYPPIMUUNNOS int a; long b; a = (int) b; Järkevissä tapauksissa tehdään järkeviä katkaisuja. Järjettömissä tapauksissa vastuu on ohjelmoijalla. 35 Ohjelmointitekniikka - Markku Nevanranta 15

16 Luentoharjoitus 5 Mitkä tietotyypit ovat sopivia seuraaville tiedoille? Nimi Palkka Ikä Syntymäaika Puhelinnumero Tieto luottokelpoisuudesta 36 Perusoperaatiot (presedenssi ja assosiatiivisuus) [ ]. ( ) e++ e-- ++e --e +e -e! ~ new (tyyppi)e * / % + - << >> >>> < > >= <= ==!= eka = toka = 6; >> säilyttää etumerkin << ja >>> lisää nollan & ^ &&?: = += -= *= /= %= <<= >>= >>>= &= ^= = 37 Ohjelmointitekniikka - Markku Nevanranta 16

17 Esimerkki (operaatioita) /*Keskiarvon laskentaohjelma Markku Nevanranta */ public class Keskiarvo { public static void main(string[] args) { double vastaus=0, n=0, luku; luku = Lue.desi( ); while (luku!= 0) { vastaus += luku; //kerätään summaa n++; //lasketaan lukujen määrä luku = Lue.desi( ); vastaus /= n; System.out.println( Keskiarvo on +vastaus); 38 Esimerkki (bittioperaatiot) public class Maski { public static void main(string[] args) { final int LUKU = 1; //001 final int KIRJOITUS = 2; //010 final int SUORITUS = 4; //100 int liput = 0; liput = LUKU; //liput = 001 liput = KIRJOITUS; //liput = 011 if ((liput & KIRJOITUS) == KIRJOITUS) System.out.println( On oikeus kirjoittaa ); 40 Ohjelmointitekniikka - Markku Nevanranta 17

18 Lukeminen (Lue) Lukeminen voidaan tehdä monella tasolla: 1. Lue-luokkaa käyttäen Rakennetaan itse omaan tarpeeseen sopiva luokka luku = Lue.koko( Anna luku: ); Lue.koko() lukee kokonaisluvun Lue.desi() lukee desimaaliluvun Lue.rivi() lukee rivin tekstiä Lue.merkki() lukee yhden merkin Lue.totuus() lukee totuusarvon KorkoWhile.java 42 Lukeminen (Scanner) 2. Scanner-luokkaa käyttäen Käsittelee tietovirrasta tulevaa merkkijonoa import java.util.scanner; Scanner lukija = new Scanner(System.in); System.out.println( Anna luku: ); luku = lukija.nextint(); KorkoScanner.java 43 Ohjelmointitekniikka - Markku Nevanranta 18

19 Lukeminen (tietovirta) 3. Tietovirtoja käyttäen static BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); public static int kluku(){ int arvo=-1; boolean ok; do{ try{ arvo=integer.parseint(stdin.readline()); ok=true; catch (Exception e) { System.out.println("Kelvoton kokonaisluku. Anna uusi!"); ok=false; while (!ok); return arvo; 44 Tulostus System-luokan out-tietovirtaluokan metodeita* Muotoilematon System.out.println ( tulostuva teksti ja rivinvaihto ); System.out.print ( teksti ilman rivinvaihtoa ); System.out.println ( hinta on +maksu+ euroa ); System.out.println ( hinta on +(maksu+1.5*vero)+ euroa ); Muotoiltu System.out.printf( vakioteksti ja mutoilut,muuttujaluettelo); System.out.printf( hinta on %d euroa\n, maksu); System.out.printf( hinta on %5d euroa\n, maksu); System.out.printf( hinta on %.2f euroa\n, maksu*vero); System.out.printf( hinta on %10.2f euroa\n, maksu*vero); //pyöristys System.out.printf( Tässä teksti\n %s\nteksti loppui, teksti); * katso dokumentaatiota (Formatter-luokka tai System.out.printf (format string syntax)) 45 Ohjelmointitekniikka - Markku Nevanranta 19

20 OHJAUSRAKENTEET 47 if (ehto) else lauseet lauseet LOHKO ELI KOOTTU LAUSE IF-ehtolause if (ika>20) tulot=opintolaina; else tulot=100; if (ika>20) { tulot=opintolaina; vuokra=1000; else { tulot=100; karkkiin=30; 48 Ohjelmointitekniikka - Markku Nevanranta 20

21 Ehto-osa VERTAILU- OPERAATIOT LOOGISET OPERAATIOT > >= < <= ==!= && ja tai ^ xor! ei Loogiset metodit 49 Monitasoinen IF if (koulutus.equals( DI )) { if (ohjelmointitaito== k ) palkka=20000; else palkka=15000; if (koulutus.equals( DI )) if (ohjelmointitaito== k ) palkka=20000; else palkka=15000; if (koulutus.equals( DI )) { if (ohjelmointitaito== k ) palkka=20000; else palkka=15000; palkka=15000; if (koulutus.equals( DI ) && ohjelmointitaito== k ) palkka=20000; Huomaa! Ulompi if sisältää yhden lauseen ei sulkeita Vastaako valkoista tai vihreää ehtoa? 50 Ohjelmointitekniikka - Markku Nevanranta 21

22 IF-esimerkkejä Onko samat? if (ika<=20 && omaisuus>= ) if (ika>20 omaisuus< ) Kumpi ehto-lauseke valitsee nuoren miljonäärin? Onko jälkimmäinen sama kuin edellinen jos edessä! Kuka saa seuraavissa tapauksissa halvan pääsylipun? if (ika<15 ika>65 && opiskelija== k ) if ((ika<15 ika>65) && opiskelija== k ) Miten korjaisit lauseen siten, että nuori, vanha tai opiskelija saa halvan pääsylipun? 51 Esimerkki (ehto-operaattori) if (arvosana>0) System.out.println( Tentti on hyväksytty ); else System.out.println( Tentti on hylätty ); System.out.println( Tentti on + (arvosana>0? hyväksytty : hylätty )); 52 Ohjelmointitekniikka - Markku Nevanranta 22

23 switch (lauseke) { case vakio1: lauseet; break; case vakio2: case vakio3: lauseet; case vakio4: lauseet; break; default: lauseet; break; SWITCH-valintalause 53 SWITCH-esimerkki1 int kk; do{ kk=lue.koko(); switch (kk) { case 1: System.out.println( Tammikuu ); break; case 2: System.out.println( Helmikuu ); break; case 3: System.out.println( Maaliskuu ); break; case 4: System.out.println( Huhtikuu ); break; case 5: System.out.println( Toukokuu ); break; case 6: case 7: case 8: System.out.println( Kesä ); break; case 9: System.out.println( Syyskuu ); break; case 10: System.out.println( Lokakuu ); break; case 11: System.out.println( Marraskuu ); break; case 12: System.out.println( Joulukuu ); break default: System.out.println( Virheellinen kuukausinumero ); while (kk!= 0); 54 Ohjelmointitekniikka - Markku Nevanranta 23

24 SWITCH-esimerkki2 String kk; do{ kk=lue.rivi(); switch (kk) { case "Maaliskuu": case "Huhtikuu": case "Toukokuu": System.out.println("Kevät"); break; case "Kesäkuu": case "Heinäkuu": case "Elokuu": System.out.println("Kesä"); break; case "Syyskuu": case "Lokakuu": case "Marraskuu": System.out.println("Syksy"); break; case "Joulukuu": case "Tammikuu": case "Helmikuu": System.out.println("Talvi"); break; default: System.out.println("Virheellinen kuukausi"); while (kk.equals("")); 55 WHILE-toistolause while (jatkamisehto) toistettavat lauseet jatkamisehto suoritetaan joka toistokerran alussa ja toistettavat lauseet suoritetaan jos jatkamisehto on tosi 56 Ohjelmointitekniikka - Markku Nevanranta 24

25 WHILE-esimerkkejä int i=0; while (i<5) { System.out.println(i); i++; int i=0; while ( i<5) System.out.println(i++); int luku=lue.koko(); while (luku!= 0) { System.out.println(luku); luku=lue.koko(); int luku; while ((luku=lue.koko())!= 0) System.out.println(luku); 57 FOR-toistolause for (alkuasetus; jatkamisehto; etenemisaskel) toistettavat lauseet alkuasetus suoritetaan kerran ennen toistojen aloittamista jatkamisehto totuusarvoinen lauseke, joka tarkistetaan ennen jokaista toistokertaa ja jos se on tosi suoritetaan toistettavat lauseet etenemisaskel lause joka suoritetaan jokaisen toistokerran jälkeen 58 Ohjelmointitekniikka - Markku Nevanranta 25

26 FOR-esimerkkejä for (int i=0; i<6; i++) System.out.println(i*i); for (int i=0, j=10, k=1; i<6 && j>2; i++, j--) { System.out.println(i*j*k); k++; Onko jatkamisehto järkevä? 59 FOR-esimerkkejä for (int i=0; i<4; i++) System.out.println(taulu1[i]); taulu for (int i=0; i<6; i++) for (int j=0; j<4; j++) System.out.println(taulu2[i][j]); Mikä on läpikäyntijärjestys? taulu Ohjelmointitekniikka - Markku Nevanranta 26

27 FOREACH-tyyppinen toistolause for (tyyppi muuttuja: kokoelma) toistettavat lauseet tyyppi muuttuja kokoelma kokoelmasta poimittavan tiedon tyyppi kokoelmasta poimittava tieto kokoelma josta tietoalkiot poimitaan yksi kerrallaan ja sillä suoritetaan toistettavat lauseet 61 FOREACH-esimerkki for (int luku : taulu) System.out.println(luku); taulu Ohjelmointitekniikka - Markku Nevanranta 27

28 DO-toistolause do toistettavat lauseet while (jatkamisehto) Miten eroaa while-lauseesta? 63 DO-esimerkki do { System.out.println( Anna luku: ); luku = Lue.koko(); System.out.println(luku); while (luku!= 0); Mitä hyötyä vastaavaan while-lauseeseen? 64 Ohjelmointitekniikka - Markku Nevanranta 28

29 BREAK-lause Break keskeyttää switch- tai toistolauseen suorituksen for (int i=1; i<100; i++) { if (i%5 == 0) break; System.out.println(i); 65 BREAK-lause Pelkkä break keskeyttää vain sisemmän rakenteen suorituksen for (int i=0; i<3; i++) for (int j=0; j<3; j++) { if (i == j) break; System.out.println(taulu[i][j]); Osoitteellinen break keskeyttää rakenteen, johon osoite viittaa ulompi: for (int i=1; i<9; i++) // sudokuruudukon täyttö for (int j=1; j<9; j++) if (vapaa(i,j)){ asetapuuttuvanumero(i,j); break ulompi; 66 Ohjelmointitekniikka - Markku Nevanranta 29

30 CONTINUE-lause Keskeytetään toiston meneillään oleva kierros ja aletaan seuraava kierros for (int i=1; i<1000; i++) { if (i%7 == 0) continue; System.out.println(i); keskeytetään ulomman silmukan meneillään oleva kierros ja aletaan seuraava kierros ulompi: for (int i = 0; i < 10; i+=2) { for (int j = 0; j < 20; j++) if (taulu[i][j] == 0) continue ulompi; System.out.println("Löytyi riviltä " + i); 67 Luentoharjoitus 6 Tulosta kaikista syöttämistäsi luvuista suurin ja pienin. Esittele Format 68 Ohjelmointitekniikka - Markku Nevanranta 30

31 Luentoharjoitus 7 Muunna korko-ohjelma for-silmukkaa käyttäväksi. Jäljitä ohjelman kulku debuggerilla. 69 Luentoharjoitus 8 Tee ohjelma, joka antaa halutun määrän alkulukuja* yhdestä lähtien. * Alkuluku on 1 suurempi luonnollinen luku (positiivinen kokonaisluku), joka on jaollinen vain 1:llä ja itsellään. 70 Ohjelmointitekniikka - Markku Nevanranta 31

32 Luentoharjoitus 9 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ä. 71 Luentoharjoitus 10 Tutki, paljonko sinulla on rahaa 30 vuoden päästä, jos sijoitat nyt 1000 euroa kasvuosakkeeseen ja vuosittainen tuotto on 8 prosenttia ja pankin vuosittainen hallinnointikustannus on a) 0 prosenttia b) 2 prosenttia. Kasvuosake = vuosittain tuotto lisätään pääomaan 72 Ohjelmointitekniikka - Markku Nevanranta 32

33 TAULUKKO 73 Taulukko on olio int[ ] jono = new int[5]; jono Ohjelmointitekniikka - Markku Nevanranta 33

34 Moniulotteiset taulukot int[ ] jono = new int[5]; double[ ][ ] taulu = new double[3][5]; char[ ][ ][ ] merkit = new char[3][5][4]; \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 75 Taulukon alustus int[ ] jono = new int[5]; jono[3] = 8; jono jono int[ ] jono = {1,8,3,4,2; Ohjelmointitekniikka - Markku Nevanranta 34

35 Taulukon alustus String[ ] nimet = { Liisa, Aki, Ville, Juha-Matti, Mia ; L i i s a A k i V i l l e J u h a M a t t i M i a boolean[ ][ ] totuus = {{true,true,false, {false,true,false; true true false false true false 77 Taulukkosääntöjä Taulukon alkiot ovat samaa tyyppiä Indeksi int-tyyppinen Ensimmäisen alkion indeksi on 0 Vasta suoritusvaiheessa huomataan indeksin ylitys Rivien määrä: taulu.length Sarakkeiden määrä: taulu[3].length Taulukot alustetaan aina (olio) Taulukkomuuttuja voi osoittaa eri taulukko-olioihin kunhan ne ovat samanmuotoisia ja -tyyppisiä Taulukot eivät automaattisesti kasva suorituksen aikana, mutta ohjelmoija voi pidentää taulukkoa 78 Ohjelmointitekniikka - Markku Nevanranta 35

36 Taulukon läpikäynti for (int i=0; i<6; i++) for (int j=0; j<4; j++) System.out.println(taulu[i][j]); for (int i : taulu[2]) System.out.println(i); for (int[] i: taulu) for (int j: i) System.out.println(j); taulu Epätasainen taulukko Tasainen taulukko int[ ][ ] taulu = new int[3][2]; int[ ][ ] taulu = {{1,2, {5,9, {3,2; Epätasainen taulukko taulu int[ ][ ] taulu = new int[3][ ]; taulu[0] = new int[2]; taulu[1] = new int[3]; taulu[2] = new int[1]; 80 Ohjelmointitekniikka - Markku Nevanranta 36

37 Epätasaisen taulukon alustus Toimiiko molemmat? int[ ][ ] matriisi = {{1,2, {5,9,7, {3; int[ ][ ] taulu = new int[3][ ]; taulu[0] = {1,2; taulu[1] = {5,9,7; taulu[2] = {3; taulu Esimerkkejä public class Taulu { public static void main(string[] args) { int[ ] jono= {3,0,7,2,9; int[ ][ ] taulu= {{2,4,6,{20,40,60; for(int i=0; i<jono.length; i++) System.out.print(jono[i]+" "); System.out.println(); for(int i=0; i<taulu.length; i++) for(int j=0; j<taulu[i].length; j++) System.out.print(taulu[i][j] + " "); 82 Ohjelmointitekniikka - Markku Nevanranta 37

38 Esimerkkejä int[ ] jono = new int[5]; int[ ] sarja = {2,4,6,8,3; sarja = jono; Mitä tapahtuu alemmalle taulukolle? Voit muuttaa tietoa toisen viitteen kautta ja muutos näkyy toisenkin viitteen kautta. 83 Javan taulukkoluokkia System.arrayCopy ArrayList Arrays aslist binarysearch equals fill Sort tostring 84 Ohjelmointitekniikka - Markku Nevanranta 38

39 Luentoharjoitus 11 Koskien yksiulotteista positiivisten kokonaislukujen taulukkoa tulosta (8.1) a) alustettu taulukko b) taulukon arvojen summa c) ensimmäisen nollan indeksi d) taulukon suurin arvo ja sen indeksi e) taulukon arvojen prosentuaaliset osuudet 85 Luentoharjoitus 12 Tee ohjelma, joka automaattisesti laajentaa taulukkoa, kun lisäät siihen liikaa lukuja. 86 Ohjelmointitekniikka - Markku Nevanranta 39

40 Luentoharjoitus 13 Tee ohjelma, joka tarkastaa antamasi lottorivin satunnaisesti luodun lottorivin kanssa. (8.6) * Math.random() antaa satunnaisluvun väliltä Luentoharjoitus 14 Tutki, montako satunnaislukua * suunnilleen pitää tuottaa välillä 1-10, jotta kaikkia lukuja alkaa tulla suunnilleen sama määrä. (8.12) * Math.random() antaa satunnaisluvun väliltä Ohjelmointitekniikka - Markku Nevanranta 40

41 Luentoharjoitus 15* Yksiulotteinen taulukko kuvaa joukko-opin joukkoa, jossa sama luku ei esiinny kahdesti. Laadi kahden joukon välille vähintään seuraavat kolme joukko-opin operaatiota, joista kukin palauttaa tulosjoukon 1. YHDISTE yhdistää joukot tulosjoukoksi. LEIKKAUS palauttaa tulosjoukon, jossa on vain yhteiset alkiot. EROTUS palauttaa tulosjoukossa vain ne ensimmäisen joukon alkiot, joita ei ole toisessa joukossa. 1) Voi käyttää tyypillisiä taulukon toimintoja: poista duplikaatit, tiivistä, lajittele, MERKKIJONO 93 Ohjelmointitekniikka - Markku Nevanranta 41

42 Merkkijono-olion luonti Merkkijono String lemmikki = kissa ; Merkkitaulukko char[ ] eläin = { k, o, i, r, a ; Merkkijonotaulukko String[ ] tarha = { leijona, seepra, kameli ; 94 Merkkijono metodit public int length() antaa merkkijonon pituuden String jono = kissa ; int pituus = jono.length(); // pituus=5 public boolean equals(string) palauttaa true jos merkkijonot samat do { System.out.println( Jatkatko (kyllä tai ei) ); String vastaus = Lue.rivi(); while (vastaus.equals( kyllä )); public boolean equalsignorecase(string) 95 Ohjelmointitekniikka - Markku Nevanranta 42

43 Merkkijono metodit public int compareto(string) Palauttaa numeron, joka ilmaisee merkkijonojen aakkosjärjestyksen: <0 verrattava merkkijono on ennen parametrimerkkijonoa == 0 merkkijonot ovat samat >0 verrattava merkkijono on parametrimerkkijonon jälkeen System.out.print( Anna eka merkkijono ); String eka = Lue.rivi(); System.out.print( Anna toka merkkijono ); String toka = Lue.rivi(); int jarjestys= eka.compareto(toka); if (jarjestys < 0) System.out.println( Eka ensin ); if (jarjestys == 0) System.out.println( Yhtäsuuret ) if (jarjestys > 0) System.out.println( Toka ensin ): 96 Merkkijono metodit public String tolowercase() Muuttaa merkkijonon pieniksi kirjaimiksi. public String touppercase() Muuttaa merkkijonon isoiksi kirjaimiksi. String lemmikki = Kissa ; lemmikki = lemmikki.tolowercase(); System.out.println(lemmikki+lemmikki.toUpperCase()); public String trim() Poistaa merkkijonon alusta ja lopusta välilyönnit. String lemmikki = Kissa ; lemmikki = lemmikki+ eläin ; System.out.println(lemmikki.trim()); 97 Ohjelmointitekniikka - Markku Nevanranta 43

44 Merkkijono metodit public char charat(int index) Palauttaa merkkijonon yhden merkin. Huomaa kuvaava parametrin nimi. String lemmikki = Kissa ; for (int i=0; i<lemmikki.length(); i++) System.out.println(lemmikki.charAt(i)); Mitä tekee alla olevat metodit? public int indexof(int char) public int indexof(int char, int fromindex) public int indexof(string) public int indexof(string, int fromindex) Huomaa metodin kuormittaminen. 98 Merkkijono metodit public String substring(int startind, int endind) Palauttaa merkkijonosta osamerkkijonon lähtien merkkipaikasta startind merkkiin endind-1 asti. String lemmikki= lemmikkikissa ; String suosikki=lemmikki.substring(3,8); //mikki String teksti = Hyvä? olet voittanut paljon rahaa! ; String nimi = Lue.rivi(); String kirje = teksti.substring(0,5)+nimi+teksti.substring(6); Hyvä Markku Nevanranta olet voittanut paljon rahaa! 99 Ohjelmointitekniikka - Markku Nevanranta 44

45 Merkit merkkijonoksi Muunna merkkijonon A-merkit a-merkeiksi. public class MerkkiMuunnos{ public static void main(string[] args){ String teksti, tulos; teksti = Lue.rivi ("Anna merkkijono "); // Merkkijono merkkitaulukoksi char[] mtaulu = teksti.tochararray(); for (int i=0; i<mtaulu.length; i++) if (mtaulu[i] == 'A') mtaulu[i] = 'a'; tulos = new String(mtaulu); System.out.println(tulos); // Toinen tapa tulos = teksti.replace('a','a');//parametrit voivat olla myös merkkijonoja System.out.println(tulos); 100 Merkkijonoista Unicode-merkistö \uxxxx Escape-esitys (esim. \n, \t, \\, \ ) Merkkijonon pituus tallessa merkkijono-oliossa Merkkien vertailu: vastaus == k Merkkijonojen vertailu: lemmikki== kissa (väärin) lemmikki.equals( kissa ) (oikein) Perustietotyyppi merkkijonoksi: numero +luku+ tekstiksi String.valueOf(luku) Merkkijono perustietotyypiksi: Integer.parseInt(mjono) // JDK 1.2 new Integer(mjono) // JDK 1.5 (Byte, Short, Integer, Long, Float, Double, Boolean, Char kääreluokissa vastaavat xvalue()- ja parsex-metodit) 101 Ohjelmointitekniikka - Markku Nevanranta 45

46 Merkkijonomuunnos esimerkki String luku = "123"; // Jos ei muistuta kokonaislukua syntyy keskeytys int a, b, c; // Numero tekstiksi String teksti = String.valueOf(12.34); System.out.println(teksti); // JDK 1.1 int a = Integer.valueOf(luku).intValue(); System.out.println(a); // JDK 1.2 int b = Integer.parseInt(luku); System.out.println(b); // JDK 1.5 int c = new Integer(luku); System.out.println(c); System.out.println(a+b+c); 102 StringBuilder Käytä StringBuilder-merkkijonoa jos Stringmerkkijonoa muutetaan paljon StringBufferin synkronoimaton versio Metodeja: length(), setlength(int) append(perustietotyyppi), insert(int paikka, perustietotyyppi) replace(int, int, String), delete(int, int) charat(int), setcharat(int, char) substring(int, int) tostring() reverse() 103 Ohjelmointitekniikka - Markku Nevanranta 46

47 StringBuilder esimerkki String kjono = "kenkä"; StringBuilder sb = new StringBuilder(kjono); sb.insert(0,"puu"); //Puukenkä sb.append("kö"); //Puukenkäkö sb.delete(4,6); //Puukkäkö sb.replace(5,8,"o"); //Puukko String jono3 = sb.tostring(); //jono3 = "Puukko" StringBuilder buf = new StringBuilder(); String jono = buf.append("puu").append(kjono).tostring(); 104 StringTokenizer Pätkii merkkijonon osajonoiksi (token). Metodeja: StringTokenizer(String) StringTokenizer(String, String delimiters) counttokens() hasmoretokens() nexttoken(), nexttoken(string delimiters) String.split() metodilla saadaan myös pätkittyä 105 Ohjelmointitekniikka - Markku Nevanranta 47

48 StringTokenizer esimerkki String pätkittävä = "Matti,Kalle,,Maija"; StringTokenizer st = new StringTokenizer(pätkittävä, ",", false); while ( st.hasmoretokens() ) System.out.println(st.nextToken()); st = new StringTokenizer(pätkittävä, ",", true); while ( st.hasmoretokens() ) System.out.println(st.nextToken()); Matti Kalle Maija Matti, Kalle,, Maija 106 Säännölliset lausekkeet Säännöllisten lausekkeiden (regular expression, regexp) avulla määritetään merkkijonohahmoja, joita voidaan tunnistaa merkkijonosta Hahmoa etsitään matches-metodilla, joka palauttaa true-arvon jos hahmo löytyy muuten false Merkkijono voidaan pilkkoa split-metodilla hahmoon täsmäävissä kohdissa ja pilkotut merkkijonopalaset palautetaan merkkijonotaulukkona replaceall-metodi korvaa kaikki hahmoon täsmäävät osat annetulla merkkijonolla ReplaceFirst-metodi korvaa vain ensimmäisen hahmoon täsmäävän merkkijonon annetulla merkkijonolla Pattern ja Matcher luokissa lisää metodeja 107 Ohjelmointitekniikka - Markku Nevanranta 48

49 Hahmon muodostaminen Yksinkertainen hahmo: mikä tahansa hakasulkeissa oleva merkki kelpaa rahayksikkö [ $ ], [ahjmprsv]aha Arvoväli: mikä tahansa arvovälillä oleva merkki kelpaa [A-E] ajokortti, arvot [ ] Yhdiste, leikkaus ja erotus: ehto sisällytetään toiseen ehtoon [a-c[1-3]] luokat, [1-5&&[3-9]] luokat, [1-5&&[^3-9]] luokat Merkkiluokat: mikä tahansa merkki (.), numerot 0-9 (\\d), muu merkki paitsi 0-9 (\\D), kaikki tyhjämerkit (\\s), ei-tyhjä merkki (\\S), mikä tahansa numero tai merkki (\\w), \\w negaatio (\\W) Ryhmittely ja takaisinviittaus: () merkitään yhdessä käsiteltävä ryhmä, \\numero kertoo montako kertaa ryhmää pitää toistua (.)\\1 (merkki toistuu kaksi kertaa peräkkäin) ((.)\\3 )\\3 (luottokorttinumeron muodon tarkistus) Lukumäärät: esiintyy kerran (?), nolla tai useamman kerran (*), kerran tai useamman kerran (+), täsmälleen n kertaa {n, vähintään n kertaa {n,, vähintään n tai enintään m kertaa {n,m Paikkamääreet: rivin alku (^), rivin loppu ($), sanan alku tai loppu (\\b), \\b negaatio (\\B), syötteen alku (\\A), syötteen loppu (\\z) 108 Esimerkki: säännöllinen lauseke public class SaannollinenLauseke { public static void main(string[] args) { // Luottokortin tarkistus String luottokortti = " "; if (luottokortti.matches("\\d{4( \\d{4){3")) System.out.println("kortti oikein"); else System.out.println("kortissa virhe"); // Päivämäärän tarkistus String pvm = " "; if (pvm.matches("(\\d{1,2.){2\\d{4")) System.out.println("päivämäärä oikein"); else System.out.println("päivämäärässä virhe"); // Päivämäärän pilkkominen String[] sanat = pvm.split("\\."); for (int i=0; i<sanat.length; i++) System.out.println(sanat[i]); // Osamerkkijonon tarkistus String yhteys = "Puhelinnumeroni on työpuhelimeen"; System.out.println("Tekstissä "+(yhteys.matches(".*[0-9]{2,\\w\\d{4,.*")?"on puhelinnumero ":"ei ole puhelinnumeroa")); 109 Ohjelmointitekniikka - Markku Nevanranta 49

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet String-merkkijonoluokka 1 Ohjelmointikielten merkkijonot Merkkijonot ja niiden käsittely on välttämätöntä ohjelmoinnissa Valitettavasti ohjelmointikielten tekijät eivät tätä ole ottaneet

Lisätiedot

20. Javan omat luokat 20.1

20. Javan omat luokat 20.1 20. Javan omat luokat 20.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 20.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang Sisällys 20. Javan omat luokat Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 20.1 20.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, Vakio Tiedon merkkipohjainen tulostaminen Ohjelmointi (ict1tx006) Tunnus (5.3) Javan tunnus Java-kirjain Java-numero

Lisätiedot

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

Sisältö. 22. Taulukot. Yleistä. Yleistä Sisältö 22. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 22.1 22.2 Yleistä

Lisätiedot

11. Javan toistorakenteet 11.1

11. Javan toistorakenteet 11.1 11. Javan toistorakenteet 11.1 Sisällys Laskuri- ja lippumuuttujat. Sisäkkäiset silmukat. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin

Lisätiedot

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

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma. 2. Taulukot 2.1 Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.2 Yleistä

Lisätiedot

Listarakenne (ArrayList-luokka)

Listarakenne (ArrayList-luokka) Listarakenne (ArrayList-luokka) Mikä on lista? Listan määrittely ArrayList-luokan metodeita Listan läpikäynti Listan läpikäynti indeksin avulla Listan läpikäynti iteraattorin avulla Listaan lisääminen

Lisätiedot

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

Sisältö. 2. Taulukot. Yleistä. Yleistä Sisältö 2. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.1 2.2 Yleistä

Lisätiedot

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

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen Ohjelmointitaito (ict1td002, 12 op) Kevät 2009 Raine Kauppinen raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-kehitysympäristö Java-ohjelma ja luokka

Lisätiedot

12. Javan toistorakenteet 12.1

12. Javan toistorakenteet 12.1 12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu

Lisätiedot

13. Loogiset operaatiot 13.1

13. Loogiset operaatiot 13.1 13. Loogiset operaatiot 13.1 Sisällys Loogiset operaatiot AND, OR, XOR ja NOT. Operaatioiden ehdollisuus. Bittioperaatiot. Loogiset operaatiot ohjausrakenteissa. Loogiset operaatiot ja laskentajärjestys.

Lisätiedot

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

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004 Vertailulauseet Ehtolausekkeet Ehdot, valintalausekkeet Boolean-algebra == yhtäsuuruus!= erisuuruus < pienempi suurempi >= suurempi tai yhtäsuuri Esimerkkejä: int i=7; int j=10;

Lisätiedot

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public)

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public) Tietorakenteet JAVA-OHJELMOINTI Osa 5: Tietorakenteita Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto Olioita ja tietoja voidaan organisoida määrämuotoisiksi tietorakenteiksi Hyödyllisiä

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 22. huhtikuuta 2016 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille! Kirjoittamasi luokat, funktiot ja aliohjelmat

Lisätiedot

Taulukoiden käsittely Javalla

Taulukoiden käsittely Javalla 1 Taulukoiden käsittely Javalla Mikä taulukko on? Taulukon syntaksi Merkkijonotaulukko Lukutaulukko Taulukon kopiointi 1 Mikä taulukko on? Taulukko on rakenne, minne saadaan talteen usea saman tyyppinen

Lisätiedot

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

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5) Alkuarvot ja tyyppimuunnokset (1/5) Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int luku = 123; Alkuarvon on oltava muuttujan tietotyypin mukainen, esimerkiksi int-muuttujilla kokonaisluku,

Lisätiedot

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

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla Tietojen syöttäminen ohjelmalle Tähän mennessä on käsitelty Javan tulostuslauseet System.out.print ja System.out.println sekä ohjelman perusrakenneosat (muuttujat, vakiot, lauseet). Jotta päästään tekemään

Lisätiedot

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

12. Näppäimistöltä lukeminen 12.1 12. Näppäimistöltä lukeminen 12.1 Sisällys Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit.

Lisätiedot

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

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä Sisällys 11. Javan toistorakenteet Laskuri- ja lippumuuttujat.. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin lopettaminen break-lauseella.

Lisätiedot

Ohjelmoinnin perusteet, kurssikoe

Ohjelmoinnin perusteet, kurssikoe Ohjelmoinnin perusteet, kurssikoe 18.6.2014 Kirjoita jokaiseen konseptiin kurssin nimi, kokeen päivämäärä, nimi, TMC-tunnus ja opiskelijanumero tai henkilötunnus. Vastaukset palautetaan tehtäväkohtaisiin

Lisätiedot

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

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin. 2. Ohjausrakenteet Ohjausrakenteiden avulla ohjataan ohjelman suoritusta. peräkkäisyys valinta toisto Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet

Lisätiedot

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

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat Sisällys 12. Javan toistorakenteet Ylstä toistorakentsta. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirhtä. Silmukan rajat asetettu kierroksen

Lisätiedot

5/20: Algoritmirakenteita III

5/20: Algoritmirakenteita III Ohjelmointi 1 / syksy 2007 5/20: Algoritmirakenteita III Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/17 Tämän

Lisätiedot

Ehto- ja toistolauseet

Ehto- ja toistolauseet Ehto- ja toistolauseet 1 Ehto- ja toistolauseet Uutena asiana opetellaan ohjelmointilauseet / rakenteet, jotka mahdollistavat: Päätösten tekemisen ohjelman suorituksen aikana (esim. kyllä/ei) Samoja lauseiden

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.4.2009 T-106.1208 Ohjelmoinnin perusteet Y 1.4.2009 1 / 56 Tentti Ensimmäinen tenttimahdollisuus on pe 8.5. klo 13:00 17:00 päärakennuksessa. Tämän jälkeen

Lisätiedot

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 )

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 ) Tehtävä do while + Viikko 1 Tehtävä 27. Salasana (MOOC) Viikko 1 Tehtävä 28. Lämpötilat (MOOC) Tehdään ohjelma, joka kysyy käyttäjältä lukua. Luku kerrotaan aina seuraavalla käyttäjän antamalla luvulla

Lisätiedot

1. Omat operaatiot 1.1

1. Omat operaatiot 1.1 1. Omat operaatiot 1.1 Sisällys Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

Lisätiedot

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

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista Sisällys 1. Omat operaatiot Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

Lisätiedot

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

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa(); Sisällys 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden käsittelyä: sijoitus, vertailu ja varautuminen null-arvoon. Viite metodin paluuarvona.. 7.1 7.2 Olio

Lisätiedot

Tietotyypit ja operaattorit

Tietotyypit ja operaattorit Tietotyypit ja operaattorit Luennossa tarkastellaan yksinkertaisten tietotyyppien int, double ja char muunnoksia tyypistä toiseen sekä esitellään uusia operaatioita. Numeeriset tietotyypit ja muunnos Merkkitieto

Lisätiedot

Ohjelmointi 2 / 2010 Välikoe / 26.3

Ohjelmointi 2 / 2010 Välikoe / 26.3 Ohjelmointi 2 / 2010 Välikoe / 26.3 Välikoe / 26.3 Vastaa neljään (4) tehtävään ja halutessa bonustehtäviin B1 ja/tai B2, (tuovat lisäpisteitä). Bonustehtävät saa tehdä vaikkei olisi tehnyt siihen tehtävään

Lisätiedot

Ehto- ja toistolauseet

Ehto- ja toistolauseet Ehto- ja toistolauseet 1 Ehto- ja toistolauseet Uutena asiana opetellaan ohjelmointilauseet / rakenteet, jotka mahdollistavat: Päätösten tekemisen ohjelman suorituksen aikana (esim. kyllä/ei) Samoja lauseiden

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 2 vastaukset Harjoituksen aiheena on BNF-merkinnän käyttö ja yhteys rekursiivisesti etenevään jäsentäjään. Tehtävä 1. Mitkä ilmaukset seuraava

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2016-2017 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen

Lisätiedot

Muuttujat ja kontrolli. Ville Sundberg

Muuttujat ja kontrolli. Ville Sundberg Muuttujat ja kontrolli Ville Sundberg 14.9.2007 Alkeistyyppi Alin abstraktiotaso josta tarvitsee välittää Yksittäinen, jakamaton tiedonjyvä Tavallaan kaikki alkeistyypit ovat lukuja arvojoukko vaihtelee

Lisätiedot

7/20: Paketti kasassa ensimmäistä kertaa

7/20: Paketti kasassa ensimmäistä kertaa Ohjelmointi 1 / syksy 2007 7/20: Paketti kasassa ensimmäistä kertaa Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,

Lisätiedot

11. Javan valintarakenteet 11.1

11. Javan valintarakenteet 11.1 11. Javan valintarakenteet 11.1 Sisällys If- ja if--lauseet. Orpo. Valintaa toisin: switch-lause. 11.2 Valintarakenteet Valintarakenteilla ilmaistaan formaalisti, kuinka algoritmin suoritus voi haarautua

Lisätiedot

Luokan muodostimet (Constructors)

Luokan muodostimet (Constructors) Mikä on muodostin? Luokan muodostimet (Constructors) Millaisia muodostimia on? Oletusmuodostin (Default Constructor) Parametrillinen muodostin Kopiointimuodostin (Copy Constructor) this-muuttuja Miten

Lisätiedot

Mitä poikkeuskäsittely tarkoittaa?

Mitä poikkeuskäsittely tarkoittaa? Poikkeuskäsittely Mitä poikkeuskäsittely tarkoittaa? Poikkeuskäsittelyluokkien hierakkia Poikkeuksen sieppaaminen Mihin järjestykseen try-catch-lauseen ExceptionType-poikkeukset laitetaan? Poikkeuksen

Lisätiedot

Sisällys. 15. Lohkot. Lohkot. Lohkot

Sisällys. 15. Lohkot. Lohkot. Lohkot Sisällys 15. Lohkot Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 15.1 15.2 Lohkot Aaltosulkeet

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 30.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 30.9.2015 1 / 27 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

7. Oliot ja viitteet 7.1

7. Oliot ja viitteet 7.1 7. Oliot ja viitteet 7.1 Sisällys Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden sijoitus. Viitteiden vertailu. Varautuminen null-arvoon. Viite metodin paluuarvona. Viite metodin

Lisätiedot

Ohjelmointiharjoituksia Arduino-ympäristössä

Ohjelmointiharjoituksia Arduino-ympäristössä Ohjelmointiharjoituksia Arduino-ympäristössä Yleistä Arduino-sovelluksen rakenne Syntaksi ja käytännöt Esimerkki ohjelman rakenteesta Muuttujat ja tietotyypit Tietotyypit Esimerkkejä tietotyypeistä Ehtolauseet

Lisätiedot

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

C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. Operaatioiden suoritusjärjestys Loogisia operaatioita - esimerkkejä Tänään on lämmin päivä ja perjantai Eilen satoi ja oli keskiviikko tai tänään on tiistai. On perjantai ja kello on yli 13 Ei ole tiistai tai ei sada. Ei pidä paikkaansa,

Lisätiedot

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

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä Sisälls 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen.. Viitteiden vertailu. Varautuminen null-arvoon. Viite metodin paluuarvona.. Muuttumattomat ja muuttuvat merkkijonot.

Lisätiedot

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset Harjoituksen aiheena ovat aliohjelmat ja abstraktit tietotyypit sekä olio-ohjelmointi. Tehtävät tehdään C-, C++- ja Java-kielillä.

Lisätiedot

on ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä

on ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä LUOKAN MÄÄRITTELY Luokka, mitä se sisältää Luokan määrittely Olion ominaisuudet eli attribuutit Olion metodit Olion muodostimet ja luonti Olion tuhoutuminen Metodin kutsu luokan ulkopuolelta Olion kopioiminen

Lisätiedot

public static void main (String [] args)

public static void main (String [] args) HAAGA-HELIA OHJELMOINTI 1(5) OHJELMALUOKKA Ohjelma-luokan käynnistää public static void main (String [] args) main-metodiin voi koodata 1. ohjelman logiikan tai 2. luoda ohjelma-olion ja kutsua metodia,

Lisätiedot

Harjoitustyö: virtuaalikone

Harjoitustyö: virtuaalikone Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely Poikkeukset Poikkeuksella tarkoitetaan yllättävää ajonaikaista tilannetta, joka

Lisätiedot

Ohjelmointi 1 Taulukot ja merkkijonot

Ohjelmointi 1 Taulukot ja merkkijonot Ohjelmointi 1 Taulukot ja merkkijonot Jussi Pohjolainen TAMK Tieto- ja viestintäteknologia Johdanto taulukkoon Jos ohjelmassa käytössä ainoastaan perinteisiä (yksinkertaisia) muuttujia, ohjelmien teko

Lisätiedot

Poikkeustenkäsittely

Poikkeustenkäsittely 1 Poikkeustenkäsittely Mitä poikkeustenkäsittely tarkoittaa? Poikkeuksen käsitteleminen Poikkeusluokkien hierarkia Poikkeuksen heittäminen 1 Mitä poikkeustenkäsittely tarkoittaa? Poikkeus (Exception) on

Lisätiedot

Metodit Arvotyyppi. Metodit Arvotyyppi. Metodit Parametrit. Metodit Parametrit. Metodit Kuormittaminen. Metodit Kuormittaminen. Javan perusteet

Metodit Arvotyyppi. Metodit Arvotyyppi. Metodit Parametrit. Metodit Parametrit. Metodit Kuormittaminen. Metodit Kuormittaminen. Javan perusteet Metodit Arvotyyppi Ellei metodi palauta arvoa, sen arvotyyppi on void Tällöin return; -lauseke ei ole metodissa pakollinen, vaikka sen käyttö on sallittua Metodi voi palauttaa alkeistyypin tai olion Tällöin

Lisätiedot

Merkkien ja merkkijonojen käsittelyä Javalla

Merkkien ja merkkijonojen käsittelyä Javalla 1 Merkkien ja merkkijonojen käsittelyä Javalla char String Merkkijonon lukeminen käyttäjältä String-luokan metodeja matches-metodi ja esimerkkejä säännöllisistä lausekkeista (engl. regular expressions)

Lisätiedot

812341A Olio-ohjelmointi, 2016. Olio-ohjelmoinnin peruskäsitteet ja Java-kieli

812341A Olio-ohjelmointi, 2016. Olio-ohjelmoinnin peruskäsitteet ja Java-kieli 812341A Olio-ohjelmointi, 2016 Olio-ohjelmoinnin peruskäsitteet ja Java-kieli Sisältö 1. Java-kieli 2. Luokka 3. Luokkakaaviot 4. Lisää Javaa Javalla 2 Java-kieli n Sun Microsystems tutkimusprojekti 1991

Lisätiedot

Muuttujien roolit Kiintoarvo cin >> r;

Muuttujien roolit Kiintoarvo cin >> r; Muuttujien roolit Muuttujilla on ohjelmissa eräitä tyypillisiä käyttötapoja, joita kutsutaan muuttujien rooleiksi. Esimerkiksi muuttuja, jonka arvoa ei muuteta enää kertaakaan muuttujan alustamisen jälkeen,

Lisätiedot

5. HelloWorld-ohjelma 5.1

5. HelloWorld-ohjelma 5.1 5. HelloWorld-ohjelma 5.1 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi. Tavukoodin suorittaminen. Virheiden korjaaminen 5.2

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print

Lisätiedot

YHTEYSSUHDE (assosiation)

YHTEYSSUHDE (assosiation) YHTEYSSUHDE (assosiation) -Mikä on yhteyssuhde? -Miten toteutan yhteyssuhteen? 1 Mikä on yhteyssuhde? Yhteyssuhde kuvaa kahden olion välistä suhdetta: Esim. Auto Henkilö, omistussuhde Tili Asiakas, omistussuhde

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 4 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten lauseisiin, lausekkeisiin ja aliohjelmiin liittyvät kysymykset. Tehtävä 1. Mitä

Lisätiedot

1 Tehtävän kuvaus ja analysointi

1 Tehtävän kuvaus ja analysointi Olio-ohjelmoinnin harjoitustyön dokumentti Jyri Lehtonen (72039) Taneli Tuovinen (67160) 1 Tehtävän kuvaus ja analysointi 1.1 Tehtävänanto Tee luokka, jolla mallinnetaan sarjaan kytkettyjä kondensaattoreita.

Lisätiedot

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

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva Sisällys 6. Muuttujat ja Java Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut, merkit, totuusarvot. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi

Lisätiedot

6. Muuttujat ja Java 6.1

6. Muuttujat ja Java 6.1 6. Muuttujat ja Java 6.1 Sisällys Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut, merkit, totuusarvot. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi

Lisätiedot

Taulukot, silmukat ja muut joka koodin pikku veijarit

Taulukot, silmukat ja muut joka koodin pikku veijarit Taulukot, silmukat ja muut joka koodin pikku veijarit Janne Käki 7.9.6 MERKKI liikenne jono METRI para laku MOGARI ATRI psyki buutti ESINE pelottelu ellistäminen runsauden kuono TUNTI SARVI kusi assistentti

Lisätiedot

Osio2: Taulukot Jukka Juslin

Osio2: Taulukot Jukka Juslin Osio2: Taulukot Jukka Juslin Jukka Juslin 1 Taulukot Taulukot ovat olioita, jotka auttavat meitä organisoimaan suuria määriä tietoa Seuraavassa keskitymme näihin: Taulukon tekeminen ja käyttö Rajojen tarkastus

Lisätiedot

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

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva Sisällys 6. Muuttujat ja Java Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut. boolean- ja char-tyypit. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi

Lisätiedot

6. Muuttujat ja Java 6.1

6. Muuttujat ja Java 6.1 6. Muuttujat ja Java 6.1 Sisällys Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut. boolean- ja char-tyypit. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi

Lisätiedot

Lista luokan sisällä

Lista luokan sisällä Lista luokan sisällä Luokan sisällä on lista Joukkue-luokka, joka sisältää listän joukkueen pelaajista Pelaaja Joukkueen metodit, jotka käyttävät listaa Ohjelmaluokka Luokan sisällä on lista Tarkoitta

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 16.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 16.2.2010 1 / 41 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen 1 List-luokan soveltamista List-luokan metodeja Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen 1 List-luokan metodeja List-luokan

Lisätiedot

Mikä yhteyssuhde on?

Mikä yhteyssuhde on? 1 Yhteyssuhde Mikä yhteyssuhde on? Yhteyssuhde Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma 1 Mikä yhteyssuhde on? Tili - : String - : double * 1 Asiakas - hetu: String - : String

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 19.1.2011 T-106.1208 Ohjelmoinnin perusteet Y 19.1.2011 1 / 39 Haluatko antaa palautetta luennoista? Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti Vast

Lisätiedot

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

Tietuetyypin määrittely toteutetaan C-kielessä struct-rakenteena seuraavalla tavalla: KERTAUSTEHTÄVIÄ Tietue Tietuetyypin määrittely toteutetaan C-kielessä struct-rakenteena seuraavalla tavalla: struct henkilotiedot char nimi [20]; int ika; char puh [10]; ; Edellä esitetty kuvaus määrittelee

Lisätiedot

Periytyminen (inheritance)

Periytyminen (inheritance) 1 Periytyminen (inheritance) Mitä periytyminen on? Yli- ja aliluokka Konstruktorit Get- ja set-metodi Muut metodit tostring Yksinkertainen pääohjelma 1 Mitä periytyminen on? Periytymisen avulla olemassa

Lisätiedot

Pakkauksen kokoaminen

Pakkauksen kokoaminen 13. Pakkaukset 13.1 Sisällys Pakkauksen kokoaminen (package). Pakkaukset ja hakemistorakenne. Pakkauksen luokkien käyttö muissa pakkauksissa (import). Pakkaukset ja näkyvyys. 13.2 Pakkauksen kokoaminen

Lisätiedot

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

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

Lisätiedot

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

812341A Olio-ohjelmointi Peruskäsitteet jatkoa 812341A Olio-ohjelmointi 2106 Peruskäsitteet jatkoa Luokkakohtaiset piirteet n Yhteisiä kaikille saman luokan olioille n Liittyvät luokkaan, eivät yksittäiseen olioon n Kaikki ko. luokan oliot voivat käyttää

Lisätiedot

KOHDELUOKAN MÄÄRITTELY

KOHDELUOKAN MÄÄRITTELY KOHDELUOKAN MÄÄRITTELY Kohdeluokka, mitä se sisältää Luokan määrittely Olion ominaisuudet eli attribuutit Olion metodit Olion luonti Olion tuhoutuminen Metodin kutsu luokan ulkopuolelta Taulukon alkiona

Lisätiedot

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

Maahan on pudonnut omenoita, ja Uolevi aikoo poimia niitä. Tiedät jokaisesta omenasta, kuinka painava se on. Datatähti 2015 A: Omenat Aikaraja: 2 s Maahan on pudonnut omenoita, ja Uolevi aikoo poimia niitä. Tiedät jokaisesta omenasta, kuinka painava se on. Uolevi haluaa saada mahdollisimman monta omenaa, mutta

Lisätiedot

Javan GUI Scratchaajalle

Javan GUI Scratchaajalle Javan GUI Scratchaajalle Kertausta Javan perusteista Java-luokan muotoilu public class Kissa { private String nimi; public Kissa(String annettunimi) { this.nimi = annettunimi; yksi class = yksi hahmo =

Lisätiedot

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

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

Lisätiedot

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit Liite E - Esimerkkiprojekti E Esimerkkiprojekti Olet lukenut koko kirjan. Olet sulattanut kaiken tekstin, Nyt on aika soveltaa oppimiasi uusia asioita pienen, mutta täydellisesti muotoiltuun, projektiin.

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 17.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 17.2.2010 1 / 41 Sanakirja Monissa sovelluksissa on tallennettava rakenteeseen avain arvo-pareja. Myöhemmin rakenteesta

Lisätiedot

58131 Tietorakenteet ja algoritmit (syksy 2015)

58131 Tietorakenteet ja algoritmit (syksy 2015) 58131 Tietorakenteet ja algoritmit (syksy 2015) Harjoitus 2 (14. 18.9.2015) Huom. Sinun on tehtävä vähintään kaksi tehtävää, jotta voit jatkaa kurssilla. 1. Erään algoritmin suoritus vie 1 ms, kun syötteen

Lisätiedot

16. Ohjelmoinnin tekniikkaa 16.1

16. Ohjelmoinnin tekniikkaa 16.1 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

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 23.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 23.2.2009 1 / 44 Debuggeri Tyypillinen tilanne: ohjelma on kirjoitettu, Python-tulkki ei valita virheistä, mutta

Lisätiedot

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

Sisällys. 17. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. for-lause lyhemmin Sisällys 17. Ohjelmoinnin tekniikkaa for-lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. if-else-lause vaihtoehtoisesti

Lisätiedot

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 27. lokakuuta 2009

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 27. lokakuuta 2009 TIE448 Kääntäjätekniikka, syksy 2009 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 27. lokakuuta 2009 Sisällys Sisällys Seuraava deadline Vaihe D tiistai 10.11. klo 10 välikielen generointi Kääntäjän rakenne

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 10.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 10.2.2010 1 / 43 Kertausta: listat Tyhjä uusi lista luodaan kirjoittamalla esimerkiksi lampotilat = [] (jolloin

Lisätiedot

Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency, Date, Object, String, Variant (oletus)

Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency, Date, Object, String, Variant (oletus) VISUAL BASIC OHJEITA Kutsuttava ohjelma alkaa kometoparilla Sub... End Sub Sub ohjelmanimi()...koodia... End Sub Muuttujat Muuttujan esittely Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency,

Lisätiedot

Luokat ja oliot. Ville Sundberg

Luokat ja oliot. Ville Sundberg Luokat ja oliot Ville Sundberg 12.9.2007 Maailma on täynnä olioita Myös tietokoneohjelmat koostuvat olioista Σ Ο ω Μ ς υ φ Ϊ Φ Θ ψ Љ Є Ύ χ Й Mikä on olio? Tietokoneohjelman rakennuspalikka Oliolla on kaksi

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 6 Vastaukset Harjoituksen aiheena on funktionaalinen ohjelmointi Scheme- ja Haskell-kielillä. Voit suorittaa ohjelmat osoitteessa https://ideone.com/

Lisätiedot

Javan perusteita. Janne Käki

Javan perusteita. Janne Käki Javan perusteita Janne Käki 20.9.2006 Muutama perusasia Tietokone tekee juuri (ja vain) sen, mitä käsketään. Tietokone ymmärtää vain syntaksia (sanojen kirjoitusasua), ei semantiikkaa (sanojen merkitystä).

Lisätiedot