lettura facile

Come fare un ciclo while su Octave

In questa lezione ti spiego come fare un ciclo/loop while su Octave

Cos'è un ciclo while? E' una struttura ciclica che ti permette di ripetere un blocco di istruzioni più volte (iterazioni) finché una condizione logica iniziale è soddisfatta.

Il loop while verifica una condizione logica iniziale prima di eseguire un blocco di istruzioni.

Il ciclo termina quando la condizione iniziale non è soddisfatta.

 

while condizione
blocco di istruzioni
endwhile

Se la condizione iniziale non è soddisfatta fin dall'inizio, il ciclo non compie nemmeno un'iterazione.

Il loop while è un ciclo indeterminato perché potresti non conoscere a priori il numero di iterazioni.

Nota. A differenza di altri linguaggi di programmazione come Java o C non devi scrivere il codice tra parentesi graffe. Non è necessaria nemmeno l'indentazione come in Python. Tuttava, per rendere più leggibile il codice ti consiglio di scrivere il blocco di istruzioni un po' più a destra le istruzioni rispetto all'istruzione while.

Ti faccio un esempio pratico.

Questo loop calcola il quadrato dei numeri da 1 a 9.

x=1;
while x<10
disp(x**2);
x=x+1;
endwhile

Il risultato in output è

1
4
9
16
25
36
49
64
81

In questo caso il loop while compie un ciclo determinato perché conosci a priori il numero delle iterazioni.

Tuttavia non è detto che sia sempre così. Il ciclo while può compiere anche un numero di iterazioni non predefinito a priori.

Il rischio del loop infinito

Se non conosci il numero di iterazioni di un loop, il programma potrebbe iterare anche all'infinito.

Per questa ragione ti consiglio sempre di aggiungere una condizione forzata di uscita dopo un numero massimo di iterazioni

Ad esempio, questo script genera un numero casuale tra 1 e 100 e chiede all'utente di indovinarlo

numero=randi(100);
x=0;
while x!=numero
x = input("quale numero ho estratto? ")
if (x!=numero)
disp("sbagliato")
else
disp("hai indovinato")
break;
endif
endwhile

E' un ciclo indeterminato perché non conosci a priori il numero di iterazioni.

Il loop termina soltanto quando l'utente indovina il numero. Tuttavia, l'utente potrebbe anche non indovinarlo mai (loop infinito).

Per evitare il problema devi introdurre nel ciclo un numero massimo di iterazioni.

Aggiungi una variabile contatore t che si incrementa dopo ogni iterazione t=t+1.

Quando la variabile t è uguale a 10 il loop termina anche se l'utente non ha ancora indovinato.

numero=randi(100);
x=0;
t=0;
while x!=numero
x = input("quale numero ho estratto? ")
if (x!=numero)
disp("sbagliato")
else
disp("hai indovinato")
break;
endif
t=t+1
if (t==10)
disp("hai fatto troppi tentativi")
break;
endif

endwhile

In questo modo puoi sempre introdurre un limite massimo alle iterazioni del ciclo while.




Se qualcosa non ti è chiaro, scrivi la tua domanda nei commenti.




FacebookTwitterLinkedinLinkedin