Documentazione Kojo in italiano
1 Kojo
Kojo è sviluppato da Lalit Pant (Himjyoti school, Dehradun - India) ed è utilizzato in varie scuole indiane, statunitensi, inglesi e svedesi. L'approccio usato nella piattaforma Kojo (http://www.kogics.net/kojo) è più ampio dei soliti ambienti per l'insegnamento. Può essere rivolto a più livelli di apprendimento ed è dotato di parti specifiche, per esempio per la sperimentazione in ambito matematico con un laboratorio basato su GeoGebra (http://www.geogebra.org/cms/it/). Il linguaggio utilizzato è Scala (http://www.scala-lang.org/). Scala è un linguaggio estremamente potente e multiparadigma (Orientato agli oggetti, funzionale) che può essere utilizzato a vari livelli, sufficientemente semplice nelle sue basi da poter essere insegnato in età scolare (dalla classe 4° primaria). La sua caratteristica di linguaggio funzionale lo fa particolarmente utile nella risoluzione di problemi matematici.
2 Documentazione funzioni in italiano
Alcune funzioni sono relative alla versione 2.4.09
2.1 Ambiente
- pulisci() - Pulisce l'area di disegno.
- pulisciOutput() - Pulisce l'area di output.
2.2 Tartaruga
- nuovaTartaruga() - Costruisce una nuova Tartaruga nel punto centrale.
- nuovaTartaruga(x: Double = 0, y: Double = 0, costume: String = "/images/turtle32.png") - Costruisce una nuova Tartaruga in base ai dati forniti.
- rimuovi() - Elimina la tartaruga.
- visibile() - Rende la tartaruga visibile.
- invisibile() - Rende la tartaruga invisibile.
- salvaStile() - Salva lo stile della tartaruga.
- ripristinaStile() - Ricarica lo stile della tartaruga salvato con salvaStile().
- assi() - Mostra degli assi cartesiani sulla tartaruga.
- rimuoviAssi() - Elimina gli assi cartesiani dalla tartaruga.
- indossaCostume(nomeDelFile: String) - Imposta l'immagine della tartaruga.
- indossaCostumi(nomeDelFile: String\)* - Imposta le immagini della tartaruga.
- indossaImmagine(immagine: java.awt.Image) - Imposta l'immagine della tartaruga.
- indossaImmaginei(immagini: java.awt.Image\)* - Imposta le immagini della tartaruga.
- prossimoCostume() - Indossa il prossimo costume dalla lista delle immagini.
- scalaCostume(fattore: Double) - Scala la dimensione del costume.
2.3 Movimento
- avanti() - Sposta la tartaruga in avanti per 25 passi.
- avanti(passi: Double) - Sposta la tartaruga in avanti per il numero di passi fornito.
- indietro(passi: Double) - Sposta la tartaruga indietro per il numero di passi fornito.
- destra(angolo: Double) - Gira la tartaruga a destra dell'angolo fornito.
- destra() - Gira la tartaruga a destra di 90°.
- sinistra(angolo: Double) - Gira la tartaruga a sinistra dell'angolo fornito.
- sinistra() - Gira la tartaruga a sinistra di 90°.
- saltaVerso(x: Double, y: Double) - Fa saltare la tartaruga verso le coordinate fornite.
- muoviVerso(x: Double, y: Double) - Fa muovere la tartaruga verso le coordinate fornite.
- cambiaPosizione(x: Double, y: Double) - Cambia la posizione della tartaruga alle coordinate fornite.
- salta() - Fa saltare la tartaruga di 25 passi.
- salta(n: Double) - Fa saltare la tartaruga del valore fornito.
- casa() - Riporta la tartaruga nel punto di creazione.
- verso(x: Double, y: Double) - Fa puntare la tartaruga verso le coordinate fornite.
- impostaDirezione(angolo: Double) - Sposta la testa della tartaruga dei gradi forniti.
- direzione - Legge quale sia l'inclinazione della testa della tartaruga.
- posizione - Legge la posizione della tartaruga.
- est() - Posiziona la testa della tartaruga ad EST.
- ovest() - Posiziona la testa della tartaruga ad OVEST.
- nord() - Posiziona la testa della tartaruga ad NORD.
- sud() - Posiziona la testa della tartaruga ad SUD.
- salvaPosizioneDirezione() - Salva la posizione e la direzione della tartaruga.
- ripristinaPosizioneDirezione() - Ricarica la posizione e la direzione della tartaruga salvati con salvaPosizioneDirezione().
- ultimaLinea - Ritorna le coordinate dell'ultima linea come Option.
- ultimaSvolta - Ritorna le coordinate dell'ultima svolta come Option.
2.3.1 Direzioni
- Destra - Tipo di dato per la direzione
- Sinistra - Tipo di dato per la direzione
- Alto - Tipo di dato per la direzione
- Basso - Tipo di dato per la direzione
2.4 Animazione
- ritardo(n: Long) - Rallenta il movimento della tartaruga.
- valoreRitardo - Legge il valore di ritardo della tartaruga.
2.5 Figure geometriche
- arco(raggio: Double, angolo: Double) - Disegna un arco dato il raggio.
- arco2(raggio: Double, angolo: Double) - Disegna un arco dato il raggio.
- cerchio(raggio: Double) - Disegna un cerchio dato il raggio.
- punto(diametro: Int) - Disegna un punto dato il diametro.
- quadrato(passi: Double = 100, direzione: Direzione = Destra) - Disegna un quadrato girando nella direzione fornita Destra o Sinistra.
- triangolo(lato: Double, direzione: Direzione = Destra) - Disegna un triangolo girando nella direzione fornita Destra o Sinistra.
- superficie - Legge la superficie della figura disegnata
- perimetro - Legge il perimetro della figura disegnata
2.6 Disegno
- scrivi(t: Any) - Fa scrivere del testo alla tartaruga.
- impostaCarattere(font: java.awt.Font) - Imposta il carattere di scrittura.
- impostaGrandezzaCarattere(dimensione: Int) - Imposta la dimensione del carattere di scrittura.
- abbassaPenna() - Abbassa la penna sull'area di disegno per disegnare.
- alzaPenna() - Alza la penna sull'area di disegno per smettere di disegnare.
- èLaPennaAbbassata - Legge se la penna è abbassata o no.
- colorePenna(colore: Color) - Imposta il colore della penna.
- coloreRiempimento(colore: Color) - Imposta il colore del riempimento.
- impostaSpessorePenna(n: Double) - Imposta lo spessore della penna.
- sfondo(c: Color) - Imposta il colore dello sfondo dell'area di disegno.
- gradiente(c1: Color, c2: Color) - Imposta il gradiente dello sfondo dell'area di disegno.
2.6.1 Colori predefiniti
- blu - Colore predefinito
- rosso - Colore predefinito
- giallo - Colore predefinito
- verde - Colore predefinito
- porpora - Colore predefinito
- rosa - Colore predefinito
- marrone - Colore predefinito
- nero - Colore predefinito
- bianco - Colore predefinito
- senzaColore - Colore predefinito
2.7 Audio
- suona(voce: Voice) - Esegue uno spartito Voice
2.8 Cicli
- fai(fn: Tartaruga => Unit) - Ripete il blocco di codice una volta, self è il riferimento alla tartaruga.
- rifai(fn: Tartaruga => Unit) - Ripete il blocco di codice 30 volte al secondo, self è il riferimento alla tartaruga.
- ripeti(n: Int)(block: => Unit) - Ripete il numero n di volte un blocco fornito.
- ripetizione(n: Int)(block: Int => Unit) - Ripete il numero n di volte un blocco fornito fornedo al blocco il valore corrente.
- ripetiFinché(condizione: => Boolean)(block: => Unit) - Ripete il blocco fornito finché la condizione è vera.
- ripetiPerOgniElementoDi[T](sequenza: Iterable[T])(block: T => Unit) - Ripete il blocco di codice per ogni elemento di una lista di elementi.
2.9 Condizioni
- se(condizione) { blocco1 } altrimenti { blocco2 } - Se condizione è vera sarà eseguito blocco1 altrimenti blocco2.
- seVero(condizione) {blocco } - Se condizione è vera sarà eseguito blocco1.
- espressione1 oppure espressione2 - Se expressione1 è vera allora espressione1 altrimenti espressione2
2.9.1 operatori binari e ternari
- espressione1 ?: espressione2 - Elvis Operator, simile a oppure ma lavora su valori nulli.
- (condizione) ?? (blocco1) :: (blocco2) - Se condizione è vera sarà eseguito blocco1 altrimenti blocco2.
2.10 Input e Output
- leggiLinea(pronto: String = "") - Legge una linea di testo in input.
- scriviLinea(data: Any) - Scrive il testo fornito.
- scriviLinea() - Scrive una linea di testo vuota.
2.11 Matematica
- arrotonda(numero: Number, cifre: Int = 0): Double - Arrotonda un valore al suo valore più prossimo.
- numeroCasuale(limitiSuperiori: Int) - Genera un numero casuale.
- numeroDecimaleCasuale(limitiSuperiori: Int) - Genera un numero decimale casuale.
2.11.1 tipi di dati
- Intero - Un numero intero.
- Decimale - Un numero decimale.
- Stringa - Un dato testuale.
2.12 Esempi
pulisci() ritardo(200) colorePenna(blu) coloreRiempimento(verde) ripeti(4) { avanti(100) destra(90) }
pulisci() ritardo(200) colorePenna(gray) var colore = Color(255, 0, 0, 150) ripeti(15) { coloreRiempimento(colore) ripeti(4) { avanti(100) destra(90) } colore = hueMod(colore, 0.05) destra(360 / 15) }
pulisci() ritardo(20) colorePenna(gray) var colore = Color(255, 0, 0, 150) ripeti(18) { coloreRiempimento(colore) ripeti(5) { avanti(100) destra(72) } colore = hueMod(colore, 0.05) destra(360 / 18) }
pulisci() def quadrato(t: Tartaruga, n: Int, delay: Int) { t.ritardo(delay) repeat(4) { t.avanti(n) t.destra() } } def occhi(t: Tartaruga, n: Int, delay: Int) { quadrato(t, n, delay) t.alzaPenna() t.avanti(n / 4) t.destra() t.avanti(n / 4) t.sinistra() t.abbassaPenna() t.coloreRiempimento(darkGray) quadrato(t, n / 2, delay) } val viso = nuovaTartaruga(-100, -100) val occhioSinistro = nuovaTartaruga(-75, 25) val occhioDestro = nuovaTartaruga(25, 25) val bocca = nuovaTartaruga(-50, -50) val naso = nuovaTartaruga(0, -25) val capelli = nuovaTartaruga(-110, 100) val corpo = nuovaTartaruga(25, -125) val gambe = nuovaTartaruga(0, -150) viso.fai { self => self.coloreRiempimento(red) quadrato(self, 200, 200) self.invisibile() } occhioSinistro.fai { self => self.coloreRiempimento(verde) occhi(self, 50, 800) self.invisibile() } occhioDestro.fai { self => self.coloreRiempimento(giallo) occhi(self, 50, 800) self.invisibile() } bocca.fai { self => self.ritardo(2000) self.colorePenna(yellow) self.impostaSpessorePenna(14) self.destra() self.avanti(100) self.invisibile() } naso.fai { self => self.ritardo(4000) self.colorePenna(yellow) self.impostaSpessorePenna(20) self.avanti(50) self.invisibile() } capelli.fai { self => self.ritardo(200) self.destra() self.colorePenna(black) self.impostaSpessorePenna(30) self.avanti(220) self.sinistra() repeat(10) { self.avanti(25) self.indietro(25) self.sinistra() self.avanti(22) self.destra() } self.avanti(25) self.invisibile() } corpo.fai { self => self.coloreRiempimento(yellow) self.cerchio(25) self.invisibile() } gambe.fai { self => self.ritardo(3000) self.colorePenna(black) self.impostaSpessorePenna(30) self.destra(180) self.salvaPosizioneDirezione() self.destra(30) self.avanti(30) self.ripristinaPosizioneDirezione() self.sinistra(30) self.avanti(30) self.invisibile() }