Snabbreferens för Scala-turtle
Denna kod är provkörd på online-miljön kojo-js för Scala.
Kom igång
Kojo är en miljö för programspråket Scala och med stöd för “turtle graphics”. Här är ett program som ritar en liten figur.
forward(20) // Paddan går 20 steg framåt
right(60) // Paddan vrider sig 60 grader åt höger
forward(30) // Paddan går 20 steg framåt
Styr sköldpaddan
Styr med relativa kommandon
forward(20) // Paddan går 20 steg framåt
back(20) // Paddan går 20 steg framåt
right(45) // Paddan vrider sig 45 grader åt höger
left(45) // Paddan vrider sig 45 grader åt vänster
hop(20) // Paddan hoppar 20 steg framåt, utan att rita
hop(-20) // Paddan hoppar -20 steg framåt, dvs 20 steg bakåt, utan att rita
arc(50, 90) // Paddan ritar en båge med radien 50 och vinkeln 90
circle(50) // Paddan ritar en cirkel med radien 50
Styr med absoluta koordinater
setPosition(50,80) // Paddan hoppar till läget (50, 80) utan att rita
setHeading(45) // Paddan vrider nosen till vinkeln 45 grade
moveTo(10,10) // Paddan vrider sig och går till läget (10, 10)
Sätt färger, penntjocklek, etc.
setPenColor(pink) // Sätter pennans färg till rosa
setFillColor(purple) // Sätter ifyllnadfärgen till lila
setPenThickness(20) // Sätter pennans bredd till 20
Låt paddan skriva text
write("hello") // Paddan skriver texten "hello"
setPenFontSize(20) // Paddan kommer nästa gång att skriva text med storlek 20
Sätt hastigheten på paddan
setAnimationDelay(0) // Paddan ritar så snabbt som möjligt
setAnimationDelay(10000) // Paddan ritar väldigt långsamt
Spara/återställ position och riktning
savePosHe() // Spara paddans position och riktning
restorePosHe() // Återställ tidigare sparad position och riktning
Annat du kan göra i Kojo
Läs in och skriv ut
Du kan skriva ut text i paddans fönster:
println("Hello!")
Du kan läsa in inmatning från användaren med följande funktioner. De skriver alla ut en ledtext och väntar sedan på inmatning. Det som användaren skrev hamnar i värdet s
respektive i
och d
.
val s = readln("Skriv en sträng: ") // läs in en sträng
val i = readInt("Skriv ett heltal: ") // läs in ett heltal
val d = readDouble("Skriv ett double-tal") // läs in ett decimaltal
Typen double används för decimaltal. Man använder punkt i stället för komma: 3.14
i stället för 3,14
.
Obs! I kojo-js kommer du inte att se vad paddan ritar eller vad println
skrivit ut förrän programmet kört klart, dvs efter alla reads.
Sätta ihop strängar
När du skriver ut är det ofta praktiskt att sätta ihop strängar. Det kan man göra med +
. Men tal och andra värden som inte är strängar från början behöver då omvandlas till strängar med hjälp av funktionen toString
:
println("En vecka har " + 7.toString + " dagar.")
Dra slumptal
Du kan använda slumptal på följande sätt:
random(100) // Ger ett slumptal mellan 0 och 99
randomDouble(100) // Ger ett slumptal mellan 0 och 99.9999
randomBoolean // Ger slumpmässigt värdet true eller false
randomFrom(Seq(1,3,5)) // Drar ett värde slumpmässigt från sekvensen
Konstruktioner i Scala
Kojo är en miljö för språket Scala. Här är några enkla exempel på Scala-konstruktioner.
Definiera en funktion
Med en def
kan du göra egna funktioner som kan användas som byggblock:
def step(length:Int) = { // Definera funktionen step
forward(length)
left(90)
forward(length)
right(90)
}
step(20) // Anropa funktionen
step(30) // med olika parametrar
Deklarera värden och variabler
val
används för att namnge värden. var
används för att namnge variabler. Man kan ändra värdet på en variabel.
val v = 10 // v är ett namn på värdet 10
println(v) // 10 skrivs ut
var w = 20 // w är en variabel som ges värdet 10
println(w) // 20 skrivs ut
w = w + 1 // värdet på w ändras till 20 + 1
println(w) // 21 skrivs ut
Repetition
Med en for-loop kan vi repetera ett visst antal varv:
var a = 0 // deklarera en loop-variabel a
for( a <- 1 to 5){ // repetera 5 gånger
println(a) // a har olika värden i varje varv
}
Med en while-loop kan vi repetera tills ett uttryck är sant:
var a = 1
while (a <= 5) { // loopa så länge a är mindre eller lika med 5
println(a)
a = a + 1 // öka a med 1
}
Alternativ
Med en if-sats kan man göra alternativa saker beroende på värdet på ett uttryck:
val a = readInt("Skriv ett heltal: ")
if (a < 10) {
println("Det var mindre än 10")
}
else if (a == 10) {
println("Det var lika med 10")
}
else {
println("Det var större än 10")
}
Mer information
- Lalit Pants snabbreferens till Kojo Obs! Alla kommandon i kojo fungerar inte ännu på kojo-js miljön.