Jos käytät Scalan rakenteita, joita ei ole vielä luennoilla käsitelty, kommentoi ohjelmasi kunnolla! Varaudu myös selittämään, miten olet ohjelmoinut ja mitä ohjelmatekstisi tarkoittaa!
val lista = for (i <- 1 to 5; j <- i to 5; if i*j%2 != 0) yield(i*j) lista.foreach(println)
val l = List(1,2,3,4,5) val m = Array(5,6,7,8,9) var a = 0; var b = 0 l.foreach(x => {m(b)+=x; b+=1}) m.foreach(println _)
val a=1; val b=2; val c=3; { val b=4; val c=5; { val c=6; println(a +"/"+ b +"/"+ c); } println(a +"/"+ b +"/"+ c); } println(a +"/"+ b +"/"+ c)
def f(n: String, i: Int) {println(n + ": " + i)}Selitä, mistä on kysymys ja anna myös esimerkit f:n ja g:n kutsusta.
Kielen käyttäjälle opetetaan lisäksi muuttujan määrittely, sijoitusoperaatioita ja loogisia vertailuja. Ainoa aloittelijalle opetettava tietotyyppi on kokonaisluku. Tulostamista varten myös merkkijonokatenaatiot on syytä opettaa. Esimerkki alla havainnollistaa ohjelmointia tällä aloittelijakielellä.
Kieli toteutetaan ainokaisen funktioina, jotka saadaan käyttöön käännösyksikköön import-ilmauksella. Jos ainokaisen nimi on vaikkapa Kieli, ilmauksen muoto on import Kieli._. Tarvittava(-t), class-tiedostot sijoitetaan samaan hakemistoon sovelluksen kanssa
Tässä tehtävässä on siis tarkoitus käyttää Scalan tekniikoita kontrolliabstraktioiden rakenteluun, ei ohjelmoida kääntäjää tai tulkkia! Jos intoa riittää, voit toki täydentää kieltä haluamallasi tavalla.
Ohjelmointiesimerkki:
import Kieli._ // Ohjelmointiesimerkki: jos (1<2) {kirjoita("kissa")} // Aaltosulkeet ovat pakolliset! kirjoita(1+2) kirjoita(1<2) kirjoita("Montako onnittelua?") var onLkm = lue toista (onLkm) {kirjoita("Onnea!")} var lkm = 6 toistaEhdolla (lkm > 0) {kirjoita(lkm); lkm -= 1} kirjoita("Mihin saakka tutkitaan lukujen parillisuutta?") var montako = lue lkm = 1 toistaEhdolla (lkm <= montako) { jos (lkm % 2 == 0) { kirjoita(lkm + " on parillinen") } lkm += 1 } kirjoita("Lasketaan lukujen summa a:sta b:hen:") kirjoita("Anna a") var a = lue kirjoita("Anna b") var b = lue jos (a>b) { var apu = a a = b b = apu } var summa = 0 var laskuri = a toistaEhdolla (laskuri <= b) { summa += laskuri laskuri += 1 } kirjoita("Lukujen summa " + a + " ... " + b + " on " + summa)
Kielen ominaisuuksia:
0:00 Laa, laa, laulukappale 3:52 Soo, soo soittojuttu 7:32 Kissanviikset pakkasessa huurtuu 10:11 Noo oonkos tullut keesäää 14:07 Joo joutui armas aaiikaa Kokonaiskesto 17:36