Parto con una piccola introduzione sul come è costituito un costrutto iterativo (ciclo) in modo da usare un linguaggi comprensibile e non ambiguo.
Un costrutto iterativo è essenzialmente costituito da due componenti:
1. condizione del ciclo, detta anche condizione di guardia, è una espressione booleana che viene valutata ad ogni iterazione e determina il continuo o meno dell'esecuzione del corpo del ciclo;
2. corpo del ciclo, è un gruppo di istruzioni che vengono eseguiti ogni qual volta la condizione di guardia risulta vera.
Esistono due tipologie di cicli, distinti da quando la condizione di guardia viene controllata, e sono i cicli pre-condizionali e post-condizionali.
I cicli pre-condizionali sono identificati con l'istruzione Java
while e sono così chiamati perché viene valutata
prima la condizione e solo dopo, se questa risulta vera, viene eseguito il corpo. Differentemente i cicli post-condizionali eseguono almeno una volta il corpo e solo
dopo valutano la condizione prima di proseguire. Questi sono identificati con l'istruzione
do...while.
Un aspetto assai importante di cui tener conto quando si scrivono le condizioni di guardia è che queste possano diventare false, quindi permettere che ci sia un momento in cui si esca dal ciclo e l'esecuzione del programma possa proseguire e terminare più in la, non andando quindi in un
ciclo infinito.
Facciamo alcuni esempi.
Supponiamo di voler scrivere un programma che calcoli l'n-esima potenza di un certo valore
v e che per calcolarla usiamo la sola operazione prodotto.
Nota: Presumo che la gestione dell'input non sia un argomento che hai avuto modo di affrontare, quindi immaginiamo che tale valore sia scelto dall'utente in qualche modo, non ci interessa quale. Nella partica tale valore è immediatamente inizializzato nel nostro codice sorgente.
Java:
public static void main(String []args){
int v = 5; // un presunto valore inserito dall'utente
int power = 3; // effettuerà l'elevamento al cubo
int result = 1;
while(power > 0){
result = result * v;
power--;
}
System.out.println("out: " + result);
}
In questo codice puoi osservare come è
fondamentale che vi sia l'istruzione di decremento
power-- poiché altrimenti la condizione non sarebbe mai falsa e l'istruzione di stampa non verrebbe mai eseguita. Fa un tentativo tu stesso.
I cicli vengono impiegati ogni qual volta vi un comportamento di un programma che ti interessa iterare, alcuni esempi possono essere:
1. far ripetere l'input da tastiera dall'utente
2. eseguire stampe successive (immagina un count down partendo da un certo valore n)
3. scansionare tutte le posizioni di una struttura dati (malgrado suppongo tu non le abbia viste è un comportamento molto frequente)
4. validare un input (controllare se un certo valore inserito è corretto in base a delle specifiche interne, eg. il valore deve essere necessariamente positivo)
Se ti dovessero servire ulteriori chiarimenti o esempi non esitare a chiedere.