L’aspetto dominante di qualsiasi tecnologia di programmazione consiste nella gestione del flusso di esecuzione comprendendo con tale espressione sia la programmazione condizionale (ambito dominato tipicamente dal costrutto if) sia la gestione iterativa delle operazioni, il cui re è il ciclo for. Stiamo per vedere entrambi questi aspetti al lavoro in Kotlin: gli esempi sono scaricabili qui.
Programmazione condizionale: if … else if … else
La sintassi del costrutto if è equivalente a quella di Java e, di conseguenza, particolarmente affine al linguaggio C. Innanzitutto, è importante conoscere:
- gli operatori di confronto che permetteranno di comparare valori ed ottenere un risultato di tipo booleano (true o false ossia “vero” o “falso”). Gli operatori di confronto sono: > (maggiore), < (minore), == (uguale), >= (maggiore o uguale), <= (minore o uguale) e != (diverso);
- gli operatori logici che permettono di concatenare più valori booleani o risultato di confronti: && (and logico) che restituisce “vero” solo se viene usato con operandi equivalenti entrambi al valore booleano true; || (or logico) che per fornire un risultato true richiede che almeno uno dei due operandi coinvolti nel confronto rappresenti il valore “vero”; ! (not) un operatore unario che inverte il valore booleano che lo segue.
Il costrutto if determina se devono essere eseguite le operazioni indicate, in base ad un valore booleano contenuto in una variabile o restituito come risultato di un’espressione. Per porre condizioni alternative si può utilizzare la parola chiave else (alternativa incondizionata) o else if che pone un’ulteriore condizione da valutare.
Passiamo subito ad un esempio: realizziamo una funzione che in base all’età dello spettatore o all’esistenza di un abbonamento decide a quanto ammonta il prezzo del biglietto. Queste le regole: gratuito per spettatori abbonati, 5 euro per minorenni e ultra-sessantacinquenni, 7 euro (prezzo intero) per tutti gli altri.
Questo è il codice della funzione che determina il prezzo del biglietto da pagare:
fun prezzoBiglietto(etaSpettatore: Int, abbonato: Boolean): Float
{
if (abbonato)
{
// spettatore abbonato non paga
return 0.0f;
}
else if (etaSpettatore<18 || etaSpettatore>=65)
return 5.0f
return 7.0f;
}
Nella funzione main viene utilizzata prezzoBiglietto e coinvolta nella valutazione di tre diversi spettatori.
fun main(args : Array<String>) {
// condizioni Spettatore1
val etaSpettatore1=45
val abbonatoSpettatore1=true
// condizioni Spettatore2
val etaSpettatore2=70
val abbonatoSpettatore2=false
// condizioni Spettatore3
val etaSpettatore3=45
val abbonatoSpettatore3=false
println("Lo spettatore1 paga ${prezzoBiglietto(etaSpettatore1, abbonatoSpettatore1)}")
println()
println("Lo spettatore2 paga ${prezzoBiglietto(etaSpettatore2, abbonatoSpettatore2)}")
println()
println("Lo spettatore3 paga ${prezzoBiglietto(etaSpettatore3, abbonatoSpettatore3)}")
}
Notare ancora l’uso dei template all’interno di stringhe per una formattazione dell’output che non richiede concatenazioni.
Il ciclo for
Il ciclo for è il costrutto basilare per eseguire operazioni iterative. Lo scopo può essere vario: dalla semplice ripetizione di attività all’analisi di una struttura dati fino ad un’elaborazione che necessiti della ricorsione di alcuni passi.
Per una delle modalità di impiego basilari, Kotlin offre una sintassi del ciclo for molto essenziale in cui chiederemo che una variabile contatore assuma ogni valore di un intervallo specifico, ognuno dei quali sarà reso disponibile in una diversa iterazione del ciclo.
Il nostro esempio offre tre conteggi effettuati utilizzando il ciclo for: il primo stampa tutti i numeri da 1 a 10, il secondo la medesima sequenza ma in ordine inverso, il terzo tutti i numeri da 18 a 45 saltandone due:
fun main(args : Array<String>) {
println("Contare da 1 a 10...")
for (x in 1..10) {
println(x)
}
println("\nContare a ritroso da 10 a 1")
for (x in 10 downTo 1) {
println(x)
}
println("\nContare da 18 a 45 saltandone 2")
for (x in 18..45 step 3) {
println(x)
}
}
Conclusioni
Come si sa, cicli e costrutti condizionali sono tematiche onnipresenti nei progetti informatici, pertanto è indispensabile imparare ad usarli bene. Kotlin ci viene incontro sfruttando la sintassi di Java, particolarmente conosciuta, oltre a sue innovazioni che la rendono più snella.
Continueremo il nostro viaggio in Kotlin e di sorprese ne arriveranno ancora molte!












No Responses to “Kotlin: costrutto if e cicli for con il nuovo linguaggio Android”