Skip to content

Commit e9e751f

Browse files
author
avihavai
committed
osa 9
1 parent 7ceb4c3 commit e9e751f

6 files changed

Lines changed: 25 additions & 102 deletions

data/osa-9/1-kokoelmien-kasittely-arvojen-virtana.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ Lyhyt yhteenveto tähän mennessä tutuiksi tulleista virtaan liittyvistä metod
145145
</table>
146146

147147

148-
<programming-exercise name='Lukujen keskiarvo'>
148+
<programming-exercise name='Lukujen keskiarvo' tmcname='osa09-Osa09_01.LukujenKeskiarvo'>
149149

150150
Toteuta ohjelma, joka lukee käyttäjältä syötteitä. Jos käyttäjä syöttää merkkijonon "loppu", lukeminen lopetetaan. Muut syötteet ovat lukuja. Kun käyttäjä syöttää merkkijonon "loppu", ohjelman tulee tulostaa syötettyjen lukujen keskiarvo.
151151

@@ -178,7 +178,7 @@ Lukujen keskiarvo: 0.6666666666666666
178178
</programming-exercise>
179179

180180

181-
<programming-exercise name='Tiettyjen lukujen keskiarvo'>
181+
<programming-exercise name='Tiettyjen lukujen keskiarvo' tmcname='osa09-Osa09_02.TiettyjenLukujenKeskiarvo'>
182182

183183
Toteuta ohjelma, joka lukee käyttäjältä syötteitä. Jos käyttäjä syöttää merkkijonon "loppu", lukeminen lopetetaan. Muut syötteet ovat lukuja. Kun käyttäjä syöttää merkkijonon "loppu", syötteiden lukeminen lopetetaan.
184184

@@ -332,7 +332,7 @@ ArrayList<Integer> luvut = lista.stream()
332332
```
333333

334334

335-
<programming-exercise name='Positiiviset luvut'>
335+
<programming-exercise name='Positiiviset luvut' tmcname='osa09-Osa09_03.PositiivisetLuvut'>
336336

337337
Toteuta tehtäväpohjaan luokkametodi `public static List<Integer> positiiviset(List<Integer> luvut)`, joka saa parametrinaan lukulistan ja jonka tulee palauttaa uusi lukulista, joka sisältää parametrina saadun listan sisältämät positiiviset luvut.
338338

@@ -418,10 +418,10 @@ positiiviset.stream()
418418
</sample-output>
419419

420420

421-
<quiznator id='5bddfffadefd072a63becc50'></quiznator>
421+
<quiznator id='5c816449c41ed4148d97162b'></quiznator>
422422

423423

424-
<programming-exercise name='Jaolliset'>
424+
<programming-exercise name='Jaolliset' tmcname='osa09-Osa09_04.Jaolliset'>
425425

426426
Tehtäväpohjassa on annettuna metodirunko `public static ArrayList<Integer&gt jaolliset(ArrayList<Integer> luvut)`. Toteuta metodirunkoon toiminnallisuus, joka kerää parametrina saadulta listalta kahdella, kolmella tai viidellä jaolliset luvut, ja palauttaa ne uudessa listassa. Metodille parametrina annetun listan ei tule muuttua.
427427

@@ -579,7 +579,7 @@ henkilot.stream()
579579
Yllä kuvattu `distinct`-metodi hyödyntää olioiden `equals`-metodia yhtäsuuruuden tarkasteluun. Metodi `sorted` taas osaa järjestää olioita, joilla on tieto siitä, miten olio tulee järjestää -- näitä ovat esimerkiksi luvut ja merkkijonot.
580580

581581

582-
<programming-exercise name='Luettujen arvojen tulostaminen'>
582+
<programming-exercise name='Luettujen arvojen tulostaminen' tmcname='osa09-Osa09_05.LuettujenArvojenTulostaminen'>
583583

584584
Kirjoita ohjelma, joka lukee käyttäjältä merkkijonoja. Lukeminen tulee lopettaa kun käyttäjä syöttää tyhjän merkkijonon. Tulosta tämän jälkeen käyttäjän syöttämät merkkijonot.
585585

@@ -598,7 +598,7 @@ kolmas
598598
</programming-exercise>
599599

600600

601-
<programming-exercise name='Rajatut luvut'>
601+
<programming-exercise name='Rajatut luvut' tmcname='osa09-Osa09_06.RajatutLuvut'>
602602

603603
Kirjoita ohjelma, joka lukee käyttäjältä lukuja. Kun käyttäjä syöttää negatiivisen luvun, lukeminen lopetetaan. Tulosta tämän jälkeen ne luvut, jotka ovat välillä 1-5.
604604

@@ -619,7 +619,7 @@ Kirjoita ohjelma, joka lukee käyttäjältä lukuja. Kun käyttäjä syöttää
619619
</programming-exercise>
620620

621621

622-
<programming-exercise name='Uniikit sukunimet'>
622+
<programming-exercise name='Uniikit sukunimet' tmcname='osa09-Osa09_07.UniikitSukunimet'>
623623

624624
Tehtäväpohjaan on hahmoteltu ohjelmaa, joka lukee käyttäjältä syötteenä henkilötietoja. Täydennä ohjelmaa siten, että tietojen lukemisen jälkeen ohjelma tulostaa henkilöiden uniikit sukunimet aakkosjärjestyksessä.
625625

@@ -755,7 +755,7 @@ kirjat.stream()
755755
```
756756

757757

758-
<programming-exercise name='Painon laskemista (2 osaa)'>
758+
<programming-exercise name='Painon laskemista (2 osaa)' tmcname='osa09-Osa09_08.PainonLaskemista'>
759759

760760
Tehtäväpohjassa on tutuhko tehtävä "Tavara, Matkalaukku ja Lastiruuma". Tässä tehtävässä tarkoituksenasi on muuttaa toistolausetta käyttävät metodit virtaa käyttäviksi metodeiksi. Lopputuloksessa ei tule esiintyä `while (...)` tai `for (...)`-toistolauseita.
761761

@@ -788,7 +788,7 @@ Virhe: tiedosto.txt (No such file or directory)
788788

789789
</sample-output>
790790

791-
<programming-exercise name='Tiedoston rivit'>
791+
<programming-exercise name='Tiedoston rivit' tmcname='osa09-Osa09_09.TiedostonRivit'>
792792

793793
Toteuta tehtäväpohjaan staattinen metodi `public static List<String> lue(String tiedosto)`, joka lukee parametrina annetun merkkijonon nimisestä tiedostosta rivit ja palauttaa ne merkkijonolistana.
794794

@@ -838,7 +838,7 @@ try {
838838
// nyt presidentit ovat listalla henkilöolioina
839839
```
840840

841-
<programming-exercise name='Kirjat tiedostosta'>
841+
<programming-exercise name='Kirjat tiedostosta' tmcname='osa09-Osa09_10.KirjatTiedostosta' nocoins='true'>
842842

843843
Toteuta tehtäväpohjaan luokkametodi `public static List<Kirja> lueKirjat(String tiedosto)`, joka lukee parametrina annetun tiedoston ja muodostaa tiedoston riveistä kirjoja.
844844

data/osa-9/2-rajapinta-comparable.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -115,17 +115,17 @@ matti (187)
115115
</sample-output>
116116

117117

118-
<quiznator id='5bde0033c6014229d5b536f9'></quiznator>
118+
<quiznator id='5c81648cc41ed4148d97162d'></quiznator>
119119

120120

121-
<programming-exercise name='Palkkajärjestys'>
121+
<programming-exercise name='Palkkajärjestys' tmcname='osa09-Osa09_11.Palkkajarjestys'>
122122

123123
Saat valmiin luokan Ihminen. Ihmisellä on nimi- ja palkkatiedot. Toteuta Ihminen-luokassa `Comparable`-rajapinta siten, että `compareTo`-metodi lajittelee ihmiset palkan mukaan järjestykseen isoimmasta palkasta pienimpään.
124124

125125
</programming-exercise>
126126

127127

128-
<programming-exercise name='Opiskelijat nimijärjestykseen'>
128+
<programming-exercise name='Opiskelijat nimijärjestykseen' tmcname='osa09-Osa09_12.OpiskelijatNimijarjestykseen'>
129129

130130
Saat valmiin luokan Opiskelija. Opiskelijalla on nimi. Toteuta Opiskelija-luokassa `Comparable`-rajapinta siten, että `compareTo`-metodi lajittelee opiskelijat nimen mukaan aakkosjärjestykseen.
131131

@@ -294,7 +294,7 @@ Mary Coombs
294294
</sample-output>
295295

296296

297-
<programming-exercise name='Lukutaitovertailu (2 osaa)'>
297+
<programming-exercise name='Lukutaitovertailu (2 osaa)' tmcname='osa09-Osa09_13.Lukutaitovertailu'>
298298

299299
Käytetään tässä tehtävässä UNESCOn avointa dataa lukutaidosta. Data sisältää tilastot eri maiden arvioiduista tai raportoiduista lukutaidoista viimeisen kahden vuoden ajalta. Tehtäväpohjassa mukana oleva tiedosto `lukutaito.csv` sisältää arviot sekä yli 15-vuotiaiden naisten että yli 15-vuotiaiden miesten lukutaidosta. Tiedoston lukutaito.csv yksittäisen rivin muoto on seuraava: teema, ikäryhmä, sukupuoli, maa, vuosi, lukutaitoprosentti. Alla on esimerkkinä tiedoston viisi ensimmäistä riviä.
300300

@@ -405,7 +405,7 @@ C (2001)
405405
</sample-output>
406406

407407

408-
<programming-exercise name='Kirjallisuutta (3 osaa)'>
408+
<programming-exercise name='Kirjallisuutta (3 osaa)' tmcname='osa09-Osa09_14.Kirjallisuutta'>
409409

410410
Tee ohjelma, joka lukee käyttäjältä kirjoja ja niiden minimikohdeikiä. Minimikohdeiällä tarkoitetaan pienintä ikää vuosina, jolle kyseistä kirjaa suositellaan.
411411

data/osa-9/3-yleishyodyllisia-tekniikoita.md

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -152,9 +152,9 @@ System.out.println(luvut.toString());
152152

153153
StringBuilderin käyttö on suurien merkkijonojen luomisessa tehokkaampaa kuin merkkijonojen luominen `+`-operaatiolla.
154154

155-
<quiznator id='5bded8c283601b299c268708'></quiznator>
155+
<quiznator id='5c81657dddb6b814af328109'></quiznator>
156156

157-
<quiznator id='5bded9a8e921f629a8dfd8dc'></quiznator>
157+
<quiznator id='5c8165c814524713f95a7607'></quiznator>
158158

159159

160160
## Säännölliset lausekkeet
@@ -383,10 +383,10 @@ Samassa säännöllisessä lausekkeessa voi käyttää myös useampia toistomerk
383383
Merkkiryhmän avulla voi määritellä lyhyesti joukon merkkejä. Merkit kirjoitetaan hakasulkujen sisään, ja merkkivälin voi määrittää viivan avulla. Esimerkiksi merkintä `[145]` tarkoittaa samaa kuin `(1|4|5)` ja merkintä `[2-36-9]` tarkoittaa samaa kuin `(2|3|6|7|8|9)`. Vastaavasti merkintä `[a-c]*` määrittelee säännöllisen lausekkeen, joka vaatii että merkkijono sisältää vain merkkejä `a`, `b` ja `c`.
384384

385385

386-
<quiznator id='5bde0106e8e5d029fd781ab3'></quiznator>
386+
<quiznator id='5c8166fcfd9fd71425c68dbd'></quiznator>
387387

388388

389-
<programming-exercise name='Säännölliset lausekkeet (3 osaa)'>
389+
<programming-exercise name='Säännölliset lausekkeet (3 osaa)' tmcname='osa09-Osa09_15.SaannollisetLausekkeet'>
390390

391391
Harjoitellaan hieman säännöllisten lausekkeiden käyttöä. Tehtävissä haetut metodit tehdään luokkaan `Tarkistin`.
392392

@@ -603,9 +603,7 @@ System.out.println(Vari.VIHREA.getKoodi());
603603
```
604604

605605
<sample-output>
606-
607606
#00FF00
608-
609607
</sample-output>
610608

611609

@@ -714,7 +712,7 @@ public class Kasi {
714712
```
715713

716714

717-
<programming-exercise name='Enum ja Iteraattori (4 osaa)' nocoins='true'>
715+
<programming-exercise name='Enum ja Iteraattori (4 osaa)' tmcname='osa09-Osa09_16.EnumJaIteraattori' nocoins='true'>
718716

719717
Tehdään ohjelma pienen yrityksen henkilöstön hallintaan.
720718

@@ -791,7 +789,7 @@ Elina, FT
791789
</programming-exercise>
792790

793791

794-
<programming-exercise name='Kortit ojennukseen (6 osaa)'>
792+
<programming-exercise name='Kortit ojennukseen (6 osaa)' tmcname='osa09-Osa09_17.KortitOjennukseen'>
795793

796794
Tehtäväpohjan mukana on luokka, jonka oliot kuvaavat pelikortteja. Kortilla on arvo ja maa. Kortin arvo on esitetään numerona *2, 3, ..., 14* ja maa *Risti, Ruutu, Hertta* tai *Pata*. Ässä on siis arvo 14. Arvo esitetään kokonaislukuna ja maa enum-tyyppisenä oliona. Kortilla on myös metodi toString, jota käyttäen kortin arvo ja maa tulostuvat "ihmisystävällisesti".
797795

data/osa-9/4-yhteenveto.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,12 @@ title: 'Yhteenveto'
44
hidden: true
55
---
66

7-
TODO
87

98
Yhdeksännessä osassa eli Ohjelmoinnin jatkokurssin toisessa osassa tutustuimme tietokokoelmien läpikäyntiin virran avulla ja olioiden järjestämiseen Javan valmista Comparable-rajapintaa hyödyntäen. Tämän lisäksi tutustuimme muutamaan yleishyödylliseen tekniikkaan kuten perinteiseen for-toistolauseeseen, säännölliseen lausekkeeseen, lueteltuun tyyppiin sekä iteraattoriin.
109

1110

1211
Vastaa vielä alla olevaan kyselyyn.
1312

1413

15-
<quiznator id='5bde01608138f12a7e5373f6'></quiznator>
14+
<quiznator id='5c816762ddb6b814af32810c'></quiznator>
1615

data/osa-9/5-vertaisarviointi.md

Lines changed: 0 additions & 74 deletions
This file was deleted.

data/osa-9/index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ hidden: true
77

88
<deadline>25.3.2019</deadline>
99

10-
TODO:
11-
Osaat käsitellä tietokokoelmia virran avulla. Osaat rajata virran arvoja (filter) sekä muuntaa virran arvojen tyyppiä (map). Tunnet käsitteen lambda-lauseke. Osaat järjestää olioita Javan valmista Comparable-rajapintaa hyödyntäen. Tunnet käsitteet säännöllinen lauseke, lueteltu tyyppi, ja iteraattori, ja osaat hyödyntää näitä ohjelmissasi.
10+
11+
Tässä osassa syvennytään tietokokoelmien käsittelyyn virtojen avulla. Opit luomaan virran tietokokoelmasta, rajaamaan virran arvoja, muuntamaan virran arvoja muodosta toiseen, ja keräämään virran arvoja toiseen tietokokoelmaan. Tutustut käsitteeseen lambdalauseke ja opit käyttämään sitä ohjemissasi. Opit järjestämään olioita Javan valmista Comparable-rajapintaa hyödyntäen ja tutustut muutamaan muuhunkin yleishyödylliseen työvälineeseen kuten säännöllinen lauseke, lueteltu tyyppi, ja iteraattori.
1212

1313
<please-login></please-login>
1414

0 commit comments

Comments
 (0)