PLA OHJELMOINTITEKNIIKKA. Syksy 2015 Mika Saari

Koko: px
Aloita esitys sivulta:

Download "PLA-31100 OHJELMOINTITEKNIIKKA. Syksy 2015 Mika Saari"

Transkriptio

1 PLA OHJELMOINTITEKNIIKKA Syksy 2015 Mika Saari

2 PLA Kurssin sisältö Suoritusperusteet Työvälineet ohjelmoinnin opiskeluun Algoritminen Ajattelu Javan kirjoitustyyli, Tietotyypit ja operaatiot Ohjausrakenteet (if, switch, for, while, jne ) Taulukko Ensimmäinen välitentti Merkkijonot Metodit(Funktiot tai aliohjelmat) Toinen välitentti 3

3 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ä. Tenttiohjelman arviointikriteerit ovat: kääntyy(2), tekee annetun tehtävän(3), ratkaisulogiikka(3), luettavuus(2). Harjoitus- ja tenttipisteet huomioidaan kevään 2016 uusintatenteissä. Uusintatenttejä on kaksi ja ne kattavat kurssin koko aihealueen. Yhdellä uusintatentillä voi korvata yhden tenttisuorituksen. Luentomateriaali, luennolla laaditut ohjelmat, harjoitustehtävät ja harjoitusten mallivastaukset löytyvät verkko-osoitteesta PISTEET ARVOSANA <15 0 4

4 Kurssin suoritus - harjoitukset Harjoituksen jokaisesta kolmesta tehdystä tehtävästä saa 1 pisteen (hyvä yritys riittää). Opiskelija lähettää harjoitusohjelmansa sähköpostin liitteenä osoitteeseen mika.saari@tut.fi eräpäivään mennessä. Harjoitus- ja tenttipisteet huomioidaan kevään 2016 uusintatenteissä. Harjoituksia ei voi korvata eräpäivän jälkeen. Harjoitustehtävien esimerkkiratkaisut käydään läpi harjoitustunneilla (eräpäivän jälkeen) Luentomateriaali, luennolla laaditut ohjelmat, harjoitustehtävät ja harjoitusten mallivastaukset löytyvät verkko-osoitteesta Luennoilla ja harjoituksissa ei ole läsnäolopakkoa. Palautetta omiin harjoitustehtäväratkaisuihin saa harjoitustuntien aikana. 5

5 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

6 Java-ohjelmointikielen yleisyys TIOBE Programming Community Index (ohjelmoijia, kursseja, toimijoita) 7

7 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

8 Ohjelmointikielten käytön kehitys 9

9 OHJELMANKEHITYS JAVA-YMPÄRISTÖSSÄ 10

10 Ohjelman suoritus tietokoneessa KESKUSYKSIKKÖ prosessori keskusmuisti levymuisti käskykanta compile execute Editori Ohjelma Kääntäjä/Tulkki open save tiedostot Ohjelma Tiedot 11

11 Java-kielen tulkitseminen AJAMINEN SYÖTTÖTIEDOT ohjelma.java JAVAC ohjelma.class JAVA OMA OHJELMA LAUSEKIELELLÄ KÄÄNTÄJÄ KONEKIELELLÄ OMA OHJELMA VÄLIKIELELLÄ (tavukoodi) TULKKI JVM:ssä (JRE) Editori JDK JAVAN KIRJASTOT TULOSTIEDOT 14

12 Työvälineiden asennus Java SE 8 (JDK, JRE) dokumentaatio Eclipse Mars NetBeans 8.0 Linkit kurssin sivuilla Käyttöopetus harjoituksissa 15

13 Editori ja dokumentaatio Projekti, lähdekielihakemistot, package, luokka, 16

14 ALGORITMINEN AJATTELU 17

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 18

16 Keskiarvo-vuokaavio KESKIARVO LUE LUKU LUKU >= 0 E K VASTAUS= VASTAUS+LUKU N=N+1 VASTAUS= VASTAUS / N TULOSTA VASTAUS LOPPU 19

17 Keskiarvo-puoliohjelma VASTAUS = 0, N = 0, LUKU PERÄKKÄISYYS LUVUT L: LUE LUKU JOS LUKU < 0 MENE LOPPU VALINTA Peräkkäin Valinta Toisto VASTAUS = VASTAUS + LUKU N = N + 1 MENE L TOISTO VASTAUS LOPPU: VASTAUS=VASTAUS / N TULOSTA VASTAUS 20

18 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); 21

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 22

20 Luentoharjoitus 1 Minkälaisia asioita teet päivittäin a) peräkkäin b) toistuvasti c) valitsemalla Eroaako ihminen tietokoneesta? 23

21 Luentoharjoitus 2 Tehdään ohjelma, joka antaa käyttäjän pelata sudokua. Minkälaisia tehtäviä ja missä järjestyksessä ne suoritetaan. 24

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

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 26

24 JAVAN KIRJOITUSTYYLI TIETOTYYPIT OPERAATIOT 28

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ä ); 29

26 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 */ 30

27 Kommentit /******************************************************************************* Kuvaus: Ohjelma laskee annetun luvun kertoman (tehtävä 22) Tekijä: Mika Saari pvm: (opiskelijanumero) Muutettu: ms Syöttötietojen tarkistus lisätty Julkiset metodit: public void lueluku() kysyy luvun public int tulostaluku() tulostaa kertoman *****************************************************************************/ 31

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

29 Lyhenteitä Eclipseen main-rivi: main ctrl+space+enter tulostus: syso ctrl+space Esisyöttö: ctrl+space delete line: ctrl+d duplicate line: alt+d format: ctrl+shift+f rename: alt+shift+r rivin siirto: alt+up/down importit: ctrl+shift+o 33

30 Tunnukset int laskuri, kuukaudennumero, palkkavero; for (int i=0; i<100; i++) Luokan nimi public class Auto { Vakiot final int KKLKM = 12; 34

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

32 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

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

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

35 Luentoharjoitus 5 Mitkä tietotyypit ovat sopivia seuraaville tiedoille? Nimi Palkka Ikä Syntymäaika Puhelinnumero Tieto luottokelpoisuudesta Google: java api String 39

36 Perusoperaatiot (presedenssi ja assosiatiivisuus) [ ]. ( ) e++ e-- ++e --e +e -e! ~ new (tyyppi)e * / % + - << >> >>> < > >= <= ==!= & ^ &&?: = += -= *= /= %= <<= >>= >>>= &= ^= = eka = toka = 6; >> säilyttää etumerkin << ja >>> lisää nollan 40

37 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); 41

38 Esimerkki (assosiatiivisuus) a b c a = 1; b = 5; c = 10; a--; a = a++ +b; c += a*--c; a = 2*c /(-a); b = c % (b-1); vähentää muuttujan arvoa yhdellä ++ lisää muuttujan arvoa yhdellä % jakojäännös 42

39 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 ); 43

40 Lukeminen (Scanner) 1. 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 45

41 Lukeminen (Lue.java) Lukeminen voidaan tehdä monella tasolla: 2. 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() Lue.totuus() lukee yhden merkin lukee totuusarvon KorkoWhile.java 46

42 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; 47

43 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)) 48

44 Luentoharjoitus public class Presedenssi { public static void main(string[ ] args) { int luku=5, tulos1, tulos2, tulos3, tulos4; tulos1 = luku++ + luku++; tulos2 = ++luku + ++luku; tulos3 = luku luku; tulos4 = ++luku + luku++; tulos1= 11 tulos2= 17 tulos3= 20 tulos4= 24 System.out.println(tulos1+ +tulos2+ +tulos3+ +tulos4); 49

45 OHJAUSRAKENTEET 50

46 IF-ehtolause if (ehto) lauseet else lauseet LOHKO ELI KOOTTU LAUSE if (ika>20) tulot=opintolaina; else tulot=100; if (ika>20) { tulot=opintolaina; vuokra=1000; else { tulot=100; karkkiin=30; 51

47 Ehto-osa VERTAILU- OPERAATIOT > >= < <= ==!= LOOGISET OPERAATIOT && ja tai ^ xor! ei Loogiset metodit 52

48 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? 53

49 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? 54

50 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 )); 55

51 switch (lauseke) { case vakio1: lauseet; break; case vakio2: case vakio3: lauseet; case vakio4: lauseet; break; default: lauseet; break; SWITCH-valintalause 56

52 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); 57

53 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("")); 58

54 WHILE-toistolause while (jatkamisehto) toistettavat lauseet jatkamisehto suoritetaan joka toistokerran alussa ja toistettavat lauseet suoritetaan jos jatkamisehto on tosi 59

55 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); 60

56 FOR-toistolause for (alkuasetus; jatkamisehto; etenemisaskel) toistettavat lauseet alkuasetus jatkamisehto suoritetaan kerran ennen toistojen aloittamista totuusarvoinen lauseke, joka tarkistetaan ennen jokaista toistokertaa ja jos se on tosi suoritetaan toistettavat lauseet etenemisaskel lause joka suoritetaan jokaisen toistokerran jälkeen 61

57 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ä? 62

58 FOREACH-tyyppinen toistolause for (tyyppi muuttuja: kokoelma) toistettavat lauseet tyyppi kokoelmasta poimittavan tiedon tyyppi muuttuja kokoelmasta poimittava tieto kokoelma kokoelma josta tietoalkiot poimitaan yksi kerrallaan ja sillä suoritetaan toistettavat lauseet 63

59 FOREACH-esimerkki for (int luku : taulu) System.out.println(luku); taulu

60 DO-toistolause do toistettavat lauseet while (jatkamisehto) Miten eroaa while-lauseesta? 65

61 DO-esimerkki do { System.out.println( Anna luku: ); luku = Lue.koko(); System.out.println(luku); while (luku!= 0); Mitä hyötyä vastaavaan while-lauseeseen? 66

62 BREAK-lause Break keskeyttää switch- tai toistolauseen suorituksen for (int i=1; i<100; i++) { if (i%5 == 0) break; System.out.println(i); 67

63 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; 68

64 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); 69

65 Luentoharjoitus 6 Tulosta kaikista syöttämistäsi luvuista suurin ja pienin. 70

66 Luentoharjoitus 7 Muunna korko-ohjelma for-silmukkaa käyttäväksi. Jäljitä ohjelman kulku debuggerilla. 71

67 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. 72

68 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ä. 73

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

70 TAULUKKO 76

71 Taulukko on olio int[ ] jono = new int[5]; jono

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

73 Taulukon alustus int[ ] jono = new int[5]; jono[3] = 8; jono jono int[ ] jono = {1,8,3,4,2;

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

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

76 Taulukon läpikäynti for (int i=0; i<6; i++){ for (int j=0; j<4; j++) System.out.print(taulu[i][j]); System.out.println(); for (int i : taulu[2]) System.out.println(i); for (int[] i: taulu) for (int j: i) System.out.println(j); taulu

77 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]; 83

78 Epätasaisen taulukon alustus Toimiiko molemmat? int[ ][ ] matriisi = {{1,2, {5,9,7, {3; taulu int[ ][ ] taulu = new int[3][ ]; taulu[0] = {1,2; taulu[1] = {5,9,7; taulu[2] = {3;

79 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] + " "); System.out.println(); 85

80 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. 86

81 Javan taulukkoluokkia System.arrayCopy ArrayList Arrays aslist binarysearch equals fill Sort tostring 87

82 Luentoharjoitus 11 Koskien yksiulotteista positiivisten kokonaislukujen taulukkoa tulosta a) alustettu taulukko b) taulukon arvojen summa c) ensimmäisen nollan indeksi d) taulukon suurin arvo ja sen indeksi e) taulukon arvojen prosentuaaliset osuudet (8.1) 88

83 Luentoharjoitus 12 Tee ohjelma, joka automaattisesti laajentaa taulukkoa, kun lisäät siihen liikaa lukuja. 89

84 Luentoharjoitus 13 Tee ohjelma, joka tarkastaa antamasi lottorivin satunnaisesti luodun lottorivin kanssa. (8.6) * Math.random() antaa satunnaisluvun väliltä [0,1[ 90

85 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ä [0,1[ 91

86 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,... 92

87 MERKKIJONO 96

88 Merkkijono-olion luonti Merkkijono String lemmikki = kissa ; Merkkitaulukko char[ ] eläin = { k, o, i, r, a ; Merkkijonotaulukko String[ ] tarha = { leijona, seepra, kameli ; 97

89 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) 98

90 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 ): 99

91 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()); 100

92 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. 101

93 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ä Mika Saari olet voittanut paljon rahaa! 102

94 String on muuttamaton // String-merkkijonoa ei voi muuttaa // mutta String-muuttujan voi kytkeä uuteen merkkijonoon // Markku Nevanranta public class Merkkijono { public static void main(string[] args) { String teksti = "Markku"; String nimi = "Harri"; teksti = "Liisa"; System.out.println(teksti); teksti = teksti+nimi; System.out.println(teksti); nimi = teksti; System.out.println(nimi); nimi = ""+123; System.out.println(nimi); 103

95 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); 104

96 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) 105

97 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); 106

98 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() 107

99 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(); 108

100 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ä 109

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

102 Säännölliset lausekkeet Säännöllisten lausekkeiden (regular expression, regexp) avulla määritetään merkkijonohahmoja, joita voidaan tunnistaa merkkijonosta String-luokassa on säännöllisiä lausekkeita käyttäviä metodeita 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 111

103 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) 112

104 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")); 113

105 Help Tutki merkkijonoja HELPistä String StringBuilder (StringBuffer) StringTokenizer Integer Is-alkuiset: isempty(), isalphapetic(), isdigit(),

106 Luentoharjoitus 16 Tulosta merkkijono käänteisenä. (7.3) 115

107 Luentoharjoitus 17 Laske syöttämäsi tekstin merkkien esiintymismäärät. a = 97 z = 122 ä = 228 å = 229 ö = 246 A = 65 Z = 90 Ä = 196 Å = 197 Ö =

108 Luentoharjoitus 18 Laadi ohjelma, joka tulostaa ryhmäsi opiskelijoiden nimet satunnaisjärjestyksessä. 117

109 Luentoharjoitus 19 Laadi henkilötunnuksen 1. muodon oikeellisuuden tarkistusohjelma 2. arvon oikeellisuuden tarkistusohjelma 3. sekä tulosta syntymäaika. (7.11) 118

110 Luentoharjoitus 20 Testaa, onko teksti ymmärrettävissä jos sekoitat seuraavasti. Sekoita tekstin jokaisen sanan merkit lukuunottamatta ensimmäistä ja viimeistä merkkiä.(7.14) 119

111 METODIT 120

112 Metodin muoto määreet palautetyyppi nimi (parametrit) { ohjelma määreet Näkyvyys: public, private Luokka-/oliokohtaisuus (static) palautetyyppipalautettavan arvon tyyppi on void jos ei palautettavaa arvoa parametrit Tyypit ja nimet muuttujille, jotka ottavat vastaan kutsussa annetut tiedot 121

113 Esimerkki (parametrit) public class Keskiarvo1 { public static void laskekeskiarvo(int eka, int toka){ double c; c = (eka+toka)/2.0; System.out.println("Keskiarvo on "+c); public static void main(string[] args){ int luku1, luku2; luku1 = Lue.koko("Anna luku1: "); luku2 = Lue.koko("Anna luku2: "); laskekeskiarvo(luku1, luku2); 122

114 Esimerkki (palautearvo) public class Keskiarvo2 { public static double laskekeskiarvo(int eka, int toka){ double c; public class Keskiarvo22 { c = (eka+toka)/2.0; public static double laskekeskiarvo(int eka, int toka){ return c; return (eka+toka)/2.0; public static void main(string[] args){ public static void main(string[] args){ int luku1, luku2; System.out.print("Anna luku1 ja luku2: "); double tulos1; System.out.println("Keskiarvo on "+ luku1 = Lue.koko("Anna luku1: "); laskekeskiarvo(lue.koko(), Lue.koko())); luku2 = Lue.koko("Anna luku2: "); tulos1 = laskekeskiarvo(luku1, luku2); System.out.println("Keskiarvo on "+tulos1); Javassa vain arvoparametreja (arvon kopiointi) 123

115 Esimerkki (taulukko) public class Taulukko1 { public static void rahamuunnin(double[] rahaa){ for (int i=0; i<rahaa.length; i++) rahaa[i] /= ; public static void main(string[] args){ double[] markat = {100,300,500,1000, ; rahamuunnin(markat); for (int i=0; i<markat.length; i++) System.out.println(markat[i]); Sama viitteen kopiointi -periaate toimii muissakin olioissa. 124

116 Esimerkki (taulukko) public class Taulukko2 { public static double[] rahamuunnin(double[] rahaa){ double[] muutetturaha = new double[rahaa.length]; for (int i=0; i<rahaa.length; i++) muutetturaha[i] = rahaa[i] / ; return muutetturaha; public static void main(string[] args){ double[] markat ={100,300,500,1000, ; double[] uusiraha; uusiraha = rahamuunnin(markat); for (int i=0; i<uusiraha.length; i++) System.out.println((int)markat[i]+"\t\t= "+(int)uusiraha[i]); 125

117 Esimerkki (vaihteleva) Vaihteleva määrä parametreja public class Vaihtuva { public static void main (String[] args){ int[] sarja = {3, 5, 7, 9; int summa = yhteen(sarja); int tulo = kerro(3,5,7,9); System.out.println("Summa: "+summa); System.out.println("Tulo: "+tulo); public static int yhteen (int[] sarja){ int summa = 0; for (int i=0; i<sarja.length; i++) summa += sarja[i]; return summa; samantyyppiset peräkkäiset parametrit voidaan ottaa vastaan metodissa sarjana sarjaa käytetään kuten taulukkoa sarjan oltava parametrilistan viimeisenä vain yksi sarja metodissa public static int kerro (int... luvut){ int tulo = 1; for (int i : luvut) // Huomaa uusi for tulo *= i; return tulo; 126

118 Esimerkki (kuormittaminen) public class Keskiarvo3 { private static double laskekeskiarvo (double eka, double toka){ return (eka+toka)/2.0; private static double laskekeskiarvo (int eka, int toka, int kolmas){ return (eka+toka+kolmas)/3.0; public static void main(string[] args){ int luku1, luku2, luku3; luku1 = Lue.koko("Anna 1. luku: "); luku2 = Lue.koko("Anna 2. luku: "); luku3 = Lue.koko("Anna 3. luku: "); System.out.println("Kolmen luvun keskiarvo on "+ laskekeskiarvo(luku1, luku2, luku3)); System.out.println("Kahden luvun keskiarvo on "+ laskekeskiarvo(luku1, luku2)); 127

119 Esimerkki (rekursiivisuus) public class Rekursio{ public static void main(string[] args){ String teksti="diplomi-insinööri"; tulosta(teksti, 0); public static void tulosta (String merkit, int i){ if (i < merkit.length()){ //pituus=17 System.out.print(merkit.charAt(i)); tulosta(merkit, i+1); System.out.print(merkit.charAt(i)); 128

120 Luokkamuuttujat public class Luokkamuuttujat { private static int summa = 3; private static int kpl; public static void main(string[] args){ lisaa (4); tulosta(); poista (5); tulosta(); private static void lisaa (int luku){ summa += luku; kpl++; private static void poista (int luku){ summa -= luku; kpl++; private static void tulosta (){ System.out.println("Summa: "+summa); System.out.println("Kappalemäärä: "+kpl); 129

121 Luentoharjoitus 21 Parametrit ja paluuarvo Tee metodi tutkiaksesi, montako satunnaislukua pitää luoda N:stä mahdollisesta ennen kuin tulee K samaa arvoa? Montako kertaa noppaa pitää heittää ennen kuin tulee kaksi samaa numeroa? Montako henkilöä pitää valita ennen kuin kahdella on sama syntymäpäivä? 130

122 Luentoharjoitus 22 Taulukko parametrina Tee taulukon sekoitusmetodi, joka sekoittaa saamansa taulukon mahdollisimman satunnaisesti ja nopeasti. Metodi palauttaa sekoitetun taulukon ja säilyttää alkuperäisen taulukon entisellään. Tulosta alkuperäinen ja sekoitettu taulukko tulosta-metodilla. 131

123 Luentoharjoitus 23 Valmiiden luokkien käyttö Alustus-metodi luo taulukon, jossa on miljoona satunnaista kokonaislukua. Lajittele-metodi lajittelee taulukon käyttäen Array-luokan sort-metodia. Sekoita-metodi sekoittaa taulukko. Mittaa metodien käyttämä aika Systemluokan currenttimemillis-metodilla. Tulosta ajat. 132

124 Luentoharjoitus 24 Kuormittaminen Tee Laina -luokka, jossa on kaksi lyhennys -nimistä metodia. Toinen metodi saa lähtötietona velan määrän, vuosikoron ja maksuerän suuruuden. Toinen saa lähtötietona velan määrän, vuosikoron ja maksuerien määrän. Metodit tulostavat taulukon, jossa on lyhennystietoja lyhennyserittäin (velka, koron osuus, lyhennyksen osuus). 133

125 Luentoharjoitus 25 Luokkamuuttujat Keksi tekstin salakirjoitusmenetelmä, joka salaamisen lisäksi osaa myös avata salatun sanoman. 134

126 Alkulukujen ominaisuuksia 2 on ainoa parillinen alkuluku Mikään alkuluku kuin 5 ei pääty numeroon 5 Alkulukujen 2,3,5,7 jälkeen kaikki alkuluvut päättyvät numeroihin 1,3,7,9 Kahden alkuluvun tulo ei ole neliö Jos alkulukuun, paitsi 2 ja 3, lisätään tai vähennetään 1 tulos on jaollinen luvulla 6 151

OHJELMOINTITEKNIIKKA 1

OHJELMOINTITEKNIIKKA 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

Lisätiedot

OHJELMOINTITEKNIIKKA

OHJELMOINTITEKNIIKKA 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

Lisätiedot

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

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

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti: 1 (7) Tiedon lukeminen näppäimistöltä Scanner-luokan avulla Miten ohjelma saa käyttöönsä käyttäjän kirjoittamaa tekstiä? Järjestelmässä on olemassa ns. syöttöpuskuri näppäimistöä varten. Syöttöpuskuri

Lisätiedot

Java-kielen perusteita

Java-kielen perusteita Java-kielen perusteita valintalauseet 1 Johdantoa kontrollirakenteisiin Tähän saakka ohjelmissa on ollut vain peräkkäisyyttä eli lauseet on suoritettu peräkkäin yksi kerrallaan Tarvitsemme myös valintaa

Lisätiedot

Java-kielen perusteita

Java-kielen perusteita Java-kielen perusteita Käyttäjän kanssa keskusteleva ohjelma 1 Kirjoittaminen konsolinäkymään //Java ohjelma, joka tulostaa konsoli-ikkunaan public class HeiMaailma { public void aja() { // kirjoitus ja

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, literaalivakio, nimetty vakio Tiedon merkkipohjainen tulostaminen 1 Tunnus Java tunnus Java-kirjain Java-numero

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

17. Javan omat luokat 17.1

17. Javan omat luokat 17.1 17. Javan omat luokat 17.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 17.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia.

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

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

Metodien tekeminen Javalla

Metodien tekeminen Javalla 1 Metodien tekeminen Javalla Mikä metodi on? Metodin syntaksi Metodi ja sen kutsuminen Parametreista Merkkijonot ja metodi Taulukot ja metodi 1 Mikä metodi on? Metodilla toteutetaan luokkaan toiminnallisuutta.

Lisätiedot

17. Javan omat luokat 17.1

17. Javan omat luokat 17.1 17. Javan omat luokat 17.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 17.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

Seuraavassa on esimerkki for-, while- ja do-while -lauseesta:

Seuraavassa on esimerkki for-, while- ja do-while -lauseesta: Ilkka Kiistala 30.9.2004 tehtävät: http://www.cs.helsinki.fi/u/wikla/johdohj/ohpe/harjs04/3/ kurssisivu http://www.cs.helsinki.fi/u/wikla/johdohj/ohpe/indexs04.html materiaali: http://www.cs.helsinki.fi/u/wikla/johdohj/sisalto/index.htm

Lisätiedot

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista. 1 Luokka Murtoluku uudelleen Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista. Sievennettäessä tarvitaan osoittajan ja nimittäjän suurin yhteinen tekijä (syt).

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

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

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

Ohjelmointi 1 / 2009 syksy Tentti / 18.12 Tentti / 18.12 Vastaa yhteensä neljään tehtävään (huomaa että tehtävissä voi olla useita alakohtia), joista yksi on tehtävä 5. Voit siis valita kolme tehtävistä 1 4 ja tehtävä 5 on pakollinen. Vastaa JOKAISEN

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

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

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen Metodit Metodien määrittely Metodin parametrit ja paluuarvo Metodien suorittaminen eli kutsuminen Metodien kuormittaminen 1 Mikä on metodi? Metodi on luokan sisällä oleva yhteenkuuluvien toimintojen kokonaisuus

Lisätiedot

Taulukot. Jukka Harju, Jukka Juslin 2006 1

Taulukot. Jukka Harju, Jukka Juslin 2006 1 Taulukot Jukka Harju, Jukka Juslin 2006 1 Taulukot Taulukot ovat olioita, jotka auttavat organisoimaan suuria määriä tietoa. Käsittelylistalla on: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti

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

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

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

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi 1 Javan perusteet Ohjelmointi IPO-malli Java lähdekoodista suoritettavaksi ohjelmaksi Vakio Muuttuja Miten Javalla näytetään tietoa käyttäjälle, miten Javalla luetaan käyttäjän antama syöte Miten Javalla

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

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu Taulukot Taulukon määrittely ja käyttö Taulukko metodin parametrina Taulukon sisällön kopiointi toiseen taulukkoon Taulukon lajittelu esimerkki 2-ulottoisesta taulukosta 1 Mikä on taulukko? Taulukko on

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

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4

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

Lisätiedot

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++? JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,

Lisätiedot

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

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4) 2. Lisää Java-ohjelmoinnin alkeita Muuttuja ja viittausmuuttuja Vakio ja literaalivakio Sijoituslause Syötteen lukeminen ja Scanner-luokka 1 Muuttuja ja viittausmuuttuja (1/4) Edellä mainittiin, että String-tietotyyppi

Lisätiedot

7. Näytölle tulostaminen 7.1

7. Näytölle tulostaminen 7.1 7. Näytölle tulostaminen 7.1 Sisällys System.out.println- ja System.out.print-operaatiot. Tulostus erikoismerkeillä. Edistyneempää tulosteiden muotoilua. 7.2 Tulostusoperaatiot System.out.println-operaatio

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

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

Taulukot. Taulukon käsittely. Tämän osan sisältö. Esimerkki. Taulukon esittely ja luonti. Taulukon alustaminen. Taulukon koko 5 Taulukot Tämän osan sisältö Taulukon esittely ja luonti Taulukon alustaminen Taulukon koko Taulukon käsittely indeksointi peräkkäiskäsittely hajakäsittely harva taulukko Taulukon järjestäminen Kaksiulotteinen

Lisätiedot

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma. Välikoe / 20.3 Vastaa neljään (4) tehtävään. Jos vastaat 5:een, 4 huonointa arvostellaan. Kunkin tehtävän vastaus eri konseptille. 1. Pöytätesti Pöytätestaa seuraava ohjelma. Tutki ohjelman toimintaa pöytätestillä

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

Java kahdessa tunnissa. Jyry Suvilehto

Java kahdessa tunnissa. Jyry Suvilehto Java kahdessa tunnissa Jyry Suvilehto Ohjelma Ohjelmointiasioita alkeista nippelitietoon n. 45 min Tauko 10 min Oliot, luokat ja muut kummajaiset n. 45 min Kysykää Sisältöä ei oikeasti ole 2x45 min täytteeksi,

Lisätiedot

Olio-ohjelmointi Javalla

Olio-ohjelmointi Javalla 1 Olio-ohjelmointi Javalla Olio-ohjelmointi Luokka Attribuutit Konstruktori Olion luominen Metodit Olion kopiointi Staattinen attribuutti ja metodi Yksinkertainen ohjelmaluokka Ohjelmaluokka 1 Olio-ohjelmointi

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 7. huhtikuuta 2017 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

Rajapinta (interface)

Rajapinta (interface) 1 Rajapinta (interface) Mikä rajapinta on? Rajapinta ja siitä toteutettu luokka Monimuotoisuus ja dynaaminen sidonta Rajapinta vs periytyminen 1 Mikä rajapinta on? Rajapintoja käytetään, kun halutaan määritellä

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

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes) Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes) Kääreluokista Javan alkeistietotyypit ja vastaavat kääreluokat Autoboxing Integer-luokka Double-luokka Kääreluokista Alkeistietotyyppiset muuttujat (esimerkiksi

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

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 12. huhtikuuta 2019 Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä. Yksi A4-kokoinen lunttilappu

Lisätiedot

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006 TURUN YLIOPISTO DEMO III Informaatioteknologian laitos tehtävät Olio-ohjelmoinnin perusteet / Salo 15.2.2006 1. Tässä tehtävässä tarkastellaan erääntyviä laskuja. Lasku muodostaa oman luokkansa. Laskussa

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

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Taulukot: Array Taulukko Javassa pitää aina perustaa (new) Yksinkertaisessa tilanteessa taulukon koko tiedetään etukäteen ja

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 20. huhtikuuta 2018 Vastaa kaikkiin tehtäviin. Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä.

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

// Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.

// Tulostetaan double-tyyppiseen muuttujaan hinta tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf(%.1f euros. Lue kukin tehtävänanto huolellisesti ja kokonaisuudessaan ennen kuin aloitat vastaamisen. Kustakin tehtävästä voi saada 0 6 pistettä. Tentin läpipääsyraja on 12 / 24 pistettä. Ratkaisut palautetaan WETO-järjestelmään

Lisätiedot

4. Luokan testaus ja käyttö olion kautta 4.1

4. Luokan testaus ja käyttö olion kautta 4.1 4. Luokan testaus ja käyttö olion kautta 4.1 Olion luominen luokasta Java-kielessä olio määritellään joko luokan edustajaksi tai taulukoksi. Olio on joukko keskusmuistissa olevia tietoja. Oliota käsitellään

Lisätiedot

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Kirjoita jokaiseen palauttamaasi konseptiin kurssin nimi, kokeen päivämäärä, oma nimi ja opiskelijanumero. Vastaa kaikkiin tehtäviin omille konsepteilleen.

Lisätiedot

Harjoitus 4 (viikko 47)

Harjoitus 4 (viikko 47) Kaikki tämän harjoituksen tehtävät liittyvät joko suoraan tai epäsuorasti kurssin toiseen harjoitustyöhön. Saa hyvän alun harjoitustyön tekoon, kun ratkaiset mahdollisimman monta tehtävää. Mikäli tehtävissä

Lisätiedot

Ohjelmassa on käytettävä funktiota laskeparkkimaksu laskemaan kunkin asiakkaan maksu. Funktio floor pyöristää luvun lähimmäksi kokonaisluvuksi.

Ohjelmassa on käytettävä funktiota laskeparkkimaksu laskemaan kunkin asiakkaan maksu. Funktio floor pyöristää luvun lähimmäksi kokonaisluvuksi. Tehtävä 24. Kallioparkki veloittaa 2 euroa kolmelta ensimmäiseltä pysäköintitunnilta. Yli kolmen tunnin pysäköinnistä veloitetaan lisäksi 0.5 euroa jokaiselta yli menevältä tunnilta. Kuitenkin maksimiveloitus

Lisätiedot

14. Hyvä ohjelmointitapa 14.1

14. Hyvä ohjelmointitapa 14.1 14. Hyvä ohjelmointitapa 14.1 Yleistä Ohjelman elinkaari ei tyypillisesti pääty sen toteuttamiseen; ohjelmaa voidaan käyttää ja ylläpitää jopa vuosikymmeniä. Jotta koodin muuttaminen on mahdollista, sen

Lisätiedot

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

Lauseet. Ehdollinen lause. Tämän osan sisältö. Ehdollinen lause. Esimerkkejä. Yksinkertainen ehto. Lohkosulut ja sisennys. Ehdollinen lause if 3 Lauseet Lue kirjasta s. 54-84 Tämän osan sisältö Ehdollinen lause if Looginen lauseke vertailut AND-operaattori &&, & OR-operaattori, NOT-operaattori! Valintalause switch Toistolauseet while for do while

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

Tässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ).

Tässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ). Tehtävä 1: Metodit, listat, alkuluvut (4p) Tässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ). Alkuluvut ovat lukuja, jotka ovat suurempia kuin yksi ja jotka ovat jaollisia

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

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti Tentaattori: Antti-Jussi Lakanen 8. kesäkuuta 2018 Yleistä Tentti 1 meni pistekeskiarvon (11.2) perusteella välttävästi. Omasta tehtäväpaperista saa kopion

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

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

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta 5. 1. Toteuta Pythonilla seuraava ohjelma: Kerta 2 Kerta 3 Kerta 4 Kerta 5 Kerta 2 1. Toteuta Pythonilla seuraava ohjelma: 2. Tulosta Pythonilla seuraavat luvut allekkain a. 0 10 (eli, näyttää tältä: 0 1 2 3 4 5 6 7 8 9 10 b. 0 100 c. 50 100 3.

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Standardi- ja tietorakenneluokkia

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Standardi- ja tietorakenneluokkia Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Standardi- ja tietorakenneluokkia Standardi- ja tietorakenneluokkia Javan API, ArrayList Ohjelmointirajapinta (Application Programming Interface, API)

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

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

8. Näppäimistöltä lukeminen 8.1

8. Näppäimistöltä lukeminen 8.1 8. Näppäimistöltä lukeminen 8.1 Sisällys Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. In-luokka, käännös ja tulkinta Scanner-luokka. 8.2 Yleistä Näppäimistöltä annettujen arvojen (syötteiden)

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

11. Javan valintarakenteet 11.1

11. Javan valintarakenteet 11.1 11. Javan valintarakenteet 11.1 Sisällys If- ja if-else-lauseet. Orpo else. Valintaa toisin: switch-lause. 11.2 If-lause Merkitään varatulla sanalla if. Kuvaa yksisuuntaisen päätöksen: rakenteen lauseet

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

1. Mitä tehdään ensiksi?

1. Mitä tehdään ensiksi? 1. Mitä tehdään ensiksi? Antti Jussi i Lakanen Ohjelmointi 1, kevät 2010/ Jyväskylän yliopisto a) Etsitään Googlesta valmis algoritmi b) Mietitään miten itse tehtäisiin sama homma kynällä ja paperilla

Lisätiedot

13. Hyvä ohjelmointitapa (osa 1) 13.1

13. Hyvä ohjelmointitapa (osa 1) 13.1 13. Hyvä ohjelmointitapa (osa 1) 13.1 Yleistä Ohjelman elinkaari ei tyypillisesti pääty sen toteuttamiseen tarvitaan ylläpitoa. Jotta koodin muuttaminen on mahdollista, on sen oltava myös muidenkin kuin

Lisätiedot

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: Harjoitus 7 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: class Lintu //Kentät private int _siivenpituus; protected double _aivojenkoko; private bool _osaakolentaa; //Ominaisuudet public int

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

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

Java-kielen perusteita

Java-kielen perusteita Java-kielen perusteita Toistorakenne (while, do-while, for) 1 While- lause while-lauseen rakenne on seuraava: while (ehtolauseke) lause Kun ehtolausekkeen arvo on totta, lause suoritetaan. Lause suoritetaan

Lisätiedot

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

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti C! Perusteet 19.1.2017 Palautteesta (1. kierros toistaiseksi) (Erittäin) helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Ei selvää että main funktion pitikin

Lisätiedot

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille:

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille: Merkkijonot C-kielessä merkkijono on taulukko, jonka alkiot ovat char -tyyppiä. Taulukon viimeiseksi merkiksi tulee merkki '\0', joka ilmaisee merkkijonon loppumisen. Merkkijono määritellään kuten muutkin

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

Python-ohjelmointi Harjoitus 2

Python-ohjelmointi Harjoitus 2 Python-ohjelmointi Harjoitus 2 TAVOITTEET Kerrataan tulostuskomento ja lukumuotoisen muuttujan muuttaminen merkkijonoksi. Opitaan jakojäännös eli modulus, vertailuoperaattorit, ehtorakenne jos, input-komento

Lisätiedot

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

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti C! Perusteet 19.1.2017 Palautteesta (1. kierros toistaiseksi) Toistaiseksi helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Vaikeaa eroavuudet Pythonin ja C:n

Lisätiedot

8. Näppäimistöltä lukeminen 8.1

8. Näppäimistöltä lukeminen 8.1 8. Näppäimistöltä lukeminen 8.1 Sisällys Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. In-luokka, käännös ja tulkinta Scanner-luokka. 8.2 Yleistä Näppäimistöltä annettujen arvojen (syötteiden)

Lisätiedot

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti Rinnakkaisohjelmointi kurssi Opintopiiri työskentelyn raportti Opintopiiri: Heikki Karimo, Jesse Paakkari ja Keijo Karhu Päiväys: 15.12.2006 Ohjelmointitehtävä C i C i : Säikeet ja kriittisen vaiheen kontrollointi

Lisätiedot

Harjoitus 2 (viikko 45)

Harjoitus 2 (viikko 45) Mikäli tehtävissä on jotain epäselvää, laita sähköpostia vastuuopettajalle (jorma.laurikkala@uta.fi). Muista lisätä static-määre operaatioidesi otsikoihin, jotta ohjelmasi kääntyvät. Muista noudattaa hyvän

Lisätiedot

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; } 15.3 15. Lohkot 15.1 Sisällys Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 15.2 Lohkot Aaltosulkeet

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

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

System.out.printf(%d / %d = %.2f%n, ekaluku, tokaluku, osamaara); Kysy Karilta tai Kimmolta, jos tehtävissä on jotain epäselvää. Kerro WETOon liittyvät ongelmat suoraan Jormalle sähköpostitse (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida ja

Lisätiedot

14. Poikkeukset 14.1

14. Poikkeukset 14.1 14. Poikkeukset 14.1 Sisällys Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla poikkeuksella? Poikkeusten heittäminen.

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

Ohjelmoinnin perusteet, syksy 2006

Ohjelmoinnin perusteet, syksy 2006 Ohjelmoinnin perusteet, syksy 2006 Esimerkkivastaukset 1. harjoituksiin. Alkuperäiset esimerkkivastaukset laati Jari Suominen. Vastauksia muokkasi Jukka Stenlund. 1. Esitä seuraavan algoritmin tila jokaisen

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

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

// Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.

// Tulostetaan double-tyyppiseen muuttujaan hinta tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf(%.1f euros. Lue kukin tehtävänanto huolellisesti ja kokonaisuudessaan ennen kuin aloitat vastaamisen. Kustakin tehtävästä voi saada 0 6 pistettä. Tentin läpipääsyraja on 12 / 24 pistettä. Ratkaisut palautetaan WETO-järjestelmään

Lisätiedot

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

System.out.printf(%d / %d = %.2f%n, ekaluku, tokaluku, osamaara); Mikäli tehtävissä on jotain epäselvää, laita sähköpostia vastuuopettajalle (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida ja sisentää koodisi. Ohjelmointitehtävien osalta palautetaan

Lisätiedot

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Sisällys. 14. Poikkeukset. Johdanto. Johdanto Sisällys 14. Poikkeukset Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla poikkeuksella? Poikkeusten heittäminen.

Lisätiedot

Sisällys JAVA-OHJELMOINTI Osa 3: Laskennan ohjaus. Lohkolause (block) Peräkkäinen laskenta. Lohkon käyttö. Esimerkki

Sisällys JAVA-OHJELMOINTI Osa 3: Laskennan ohjaus. Lohkolause (block) Peräkkäinen laskenta. Lohkon käyttö. Esimerkki Sisällys JAVA-OHJELMOINTI Osa 3: Laskennan ohjaus Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto Peräkkäinen laskenta Ehdollinen laskenta Laskennan toisto Laskennan hierarkisuus 10/19/99

Lisätiedot