1. Esitä seuraavan algoritmin tila jokaisen rivin jälkeen. Algoritmille annetaan syötteet 4, 5 ja 6.
a b c d var a = 1; var b = 2; var c = 3; 1 2 3 - var d = readInt 1 2 3 4 a = (b-d)*a -2 2 3 4 b = a+(b+(c+(d+1)*c)*b)*a -2 -78 3 4 a = readInt; c = readInt 5 -78 6 4 println(a-c) 5 -78 6 4 c = c+c*c 5 -78 42 4 println(c) 5 -78 42 4
2. Mitä seuraava algoritmi tulostaa? Perustele.
1. kierros 2. kierros 3. kierros 4. kierros 5. kierros 6. kierros 7. kierros 8. kierros 9. kierros e s a pr e s a pr e s a pr e s a pr e s a pr e s a pr e s a pr e s a pr e s a pr var e = 1; var s = 1; 1 1 - while (e < 25) { 1 1 - 1 2 - 2 3 - 3 5 - 5 8 - 8 13 - 13 21 - 21 34 - 34 55 - println(e); 1 1 - 1 1 2 - 1 2 3 - 2 3 5 - 3 5 8 - 5 8 13 - 8 13 21 - 13 21 34 - 21 var a = s; 1 1 1 1 2 2 2 3 3 3 5 5 5 8 8 8 13 13 13 21 21 21 34 34 s = e+s; 1 2 1 1 3 2 2 5 3 3 8 5 5 13 8 8 21 13 13 34 21 21 55 34 e = a; 1 2 1 2 3 2 3 5 3 5 8 5 8 13 8 13 21 13 21 34 21 34 55 34 }Algoritmi tulostaa Fibonaccin lukujonoon kuuluvat kahdeksan ensimmäistä lukua: 1, 1, 2, 3, 5, 8, 13, 21.
Algoritmista voi myös tehdä helpommin luettavan muuttamalla muuttujan e nimeksi edellinen, sekä muuttujan s nimeksi seuraava. Muuttujan a nimi voisi olla vaikkapa apu.
3. Minkä "reaalimaailman" ongelman seuraava algoritmi ratkaisee?
var a = 0.0 println("töttöröö") var b = readInt var c = b; while (c>0) { var d = readInt a = a + d; c = c - 1; } if (b==0) println("heissulivei") else println(a/b);Ohjelmalla voi laskea kokonaislukujen keskiarvon!
Ohjelmoijan elämä helpottuu, jos muuttujille annetaan kuvaavat nimet...
Järkevät tulosteet puolestaan parantavat käytettävyyttä, eli palvelevat ohjelman käyttäjää!
var summa = 0.0 println("Tervetuloa laskemaan keskiarvoja!") println("Kuinka monen luvun keskiarvon tahdot laskea?") var lukumaara = readInt var laskuri = lukumaara; while (laskuri > 0) { print("Annappa luku:") var luku = readInt summa = summa + luku; laskuri = laskuri - 1; } if (lukumaara==0) println("Haloo! Et voi laskea 0:n luvun keskiarvoa!") else { print("Antamiesi lukujen keskiarvo on: ") println(summa/lukumaara); }
4. Algoritmit
a) Laadi algoritmi, joka lukee 10 lukua ja tulostaa niiden summan.
var laskuri = 0 var summa = 0 while (laskuri < 10) { print("Anna luku:") var luku = readInt summa = summa + luku laskuri = laskuri + 1 } print("Lukujen summa:") println(summa)b) Laadi algoritmi, joka lukee ensin luvun n, sitten lukee n kappaletta lukuja ja tulostaa niiden summan.
var laskuri = 0 print("Anna summattavien lukujen määrä:") var lukumaara = readInt var summa = 0 while (laskuri < lukumaara) { print("Anna luku:") var luku = readInt summa = summa + luku laskuri = laskuri + 1 } print("Lukujen summa:") println(summa)