Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Cicli

Kotlin supporta due tipologie di cicli: for e while. Entrambi riprendono concetti comuni a molti altri linguaggi di programmazione: eccone i dettagli.
Kotlin supporta due tipologie di cicli: for e while. Entrambi riprendono concetti comuni a molti altri linguaggi di programmazione: eccone i dettagli.
Link copiato negli appunti

Per quanto riguarda i cicli, Kotlin offre per lo più due alternative:

  • il ciclo while, che ripete l'esecuzione di un blocco di codice finchè una determinata condizione booleana rimane vera (valore logico true);
  • il ciclo for, che viene interpretato per lo più come un for-each, in quanto destinato all'iterazione su strutture dati.

Uno dei tipici utilizzi del ciclo while sfrutta una variabile come contatore:

var contatore=1
while (contatore<10)
{
   println(contatore)
   contatore++
}

Questo primo esempio stamperà a video una sequenza di numeri da 1 a 9.

È contemplata anche la forma del do...while, che permette di eseguire una iterazione del blocco di codice e solo successivamente verificare la condizione: in questo tipo di ciclo, l'iterazione verrà eseguita sicuramente almeno una volta. Ad esempio, il seguente ciclo while parte da una premessa falsa - la
condizione che impostiamo non è soddisfatta in partenza - e pertanto non eseguirà nemmeno un'iterazione:

var contatore=1
while (contatore>10)
{
   println(contatore)
   contatore++
}

Un'analoga implementazione mediante do...while, al contrario, eseguirà prima il blocco di codice, stampando il valore 1, per poi arrestarsi alla prima verifica della condizione:

do
 {
    println(contatore)
    contatore++
 }
while (contatore>10)

Il ciclo for permette di attraversare qualsiasi struttura iterabile. In questo esempio, iteriamo su una stringa e stampiamo in output solo le sue lettere maiuscole:

val s="Giovanni e Elisa sono andati a Roma per Natale"
for (x in s)
{
   if (x.isUpperCase())
       println(x)
}

Verranno stampate, su righe separate, le lettere 'G', 'E', 'R' e 'N', le uniche che hanno restituito true per la funzione isUpperCase. Un uso molto comune riguarda l'iterazione su un range di valori:
ciò rappresenta un'alternativa all'uso del while con contatore. Con il seguente esempio eseguiamo un ciclo che calcola il fattoriale di un numero: ad ogni iterazione il nuovo valore verrà moltiplicato per il totale sinora ottenuto:

val valore=5
var totale=1
for (i in 1..valore)
{
   totale*=i
}
println("Fattoriale di ${valore} equivale a ${totale}")

Anche in Kotlin sono disponibili le parole chiave break e continue, che permettono, rispettivamente,
di interrompere ed uscire dal ciclo, e interrompere l'iterazione corrente saltando direttamente a quella successiva. Proviamo break creando un "sommatore
interattivo", che continua a sommare valori immessi in input finchè non viene scritta la parola "fine",
indifferentemente con lettere maiuscole o minuscole:

var totale=0
while(true)
{
   print(">> ")
   val numero=readLine()
   if (numero?.toLowerCase().equals("fine"))
      break
   totale+= numero?.toIntOrNull()?: continue
}
println("Totale ottenuto è ${totale}")

Con readLine() richiediamo un numero di volta in volta e verifichiamo se la sua conversione in minuscolo equivale a "fine": se è così, usiamo il break per uscire dal ciclo; altrimenti, proseguiamo ed eseguiamo la somma. In un esercizio simile è importante evitare eccezioni qualora
il valore immesso non sia un numero. A tale scopo, ci vengono incontro il metodo toIntOrNull, che
restituisce null se la conversione non è possibile, e l'operatore Elvis (?:) che, in caso di nullità,
esegue il continue.

Nella prossima lezione metteremo in pratica i concetti appena visti, imparando ad utilizzarli con gli array.

Ti consigliamo anche