- 0 Discussione
-
Le strutture iterative
Indice |
Introduzione
Modifica
Quando si parla di strutture iterative, non si parla altro che di cicli, ovvero, delle porzioni di codice che vengono ripetute N volte; esistono vari costrutti per eseguire dei cicli iterativi e sono: il while, do-while, for e foreach
Il while
Modifica
E' il costrutto iterativo più semplice, la sua sintassi è la seguente
while(condizione)
{
/* Codice da ripetere fino a quando condizione non è più soddisfatta
* quindi restituisce false o 0
*/
}
Quindi, il while ha una condizione, se questa condizione da true, verrà eseguito il codice all'interno delle graffe ripetutamente fino a quando condizione non restituisce false.
Ecco un esempio che spiega praticamente l'utilizzo del while:
import std.stdio; int main(string[] args) { int i = 0; //Variabile-contatore while(i < 10) //Condizione, esegue il codice fino a quando i < 10 { writefln("i = %d", i); i++; //IMPORTANTE: Incrementiamo la variabile se no il loop non finirà mai } return 0; }
Il do-while
Modifica
Il do-while è una piccola variante del while classico, il do che sta all'inizio fa sì che il codice all'interno della struttura iterativa venga eseguito SEMPRE la prima volta, la condizione viene controllata alla fine del ciclo (e non all'inizio come succede in tutti gli altri casi).
La struttura del do-while è la seguente:
do
{
/* Codice da eseguire se la condizione è stata soddisfatta
* ATTENZIONE: IL CODICE ALL'INTERNO DEL DO VERRA ESEGUITO SEMPRE LA PRIMA VOLTA
*/
}
while(condizione); //La condizione verrà controllata alla fine del do (true: ripete, false: esce)
Ecco un esempio pratico sull'utilizzo del do-while:
import std.stdio; int main(string[] args) { int i = 0; //Assegno una variabile-contatore do { //Questa parte di codice verrà eseguita SEMPRE la prima volta writefln("%d", i); i++; } while(i < 10); //Alla fine del do controlla se la condizione è true o false. return 0; }
Il for
Modifica
E' la struttura iterativa più utilizzata, perchè risulta più compatta ed elegante del while, anche se all'inizio la sua sintassi può generare confusione. Una delle particolarità del for sta nel fatto che la variabile contatore, il suo incremento/decremento e la condizione, fanno parte del costrutto stesso, quindi diventa tutto più compatto ed elegante, perchè non avremo così delle "variabili volanti" nel nostro codice.
La sintassi del for è la seguente:
for(variabileContatore; condizione; incrementoVariabileContatore)
{
//Codice da eseguire fino a quando 'condizione' non restituisce false...
}
Quindi, sta tutto su una riga (condizione, variabile.....), quì sotto riporto un esempio pratico sull'utilizzo del for
import std.stdio; int main(string[] args) { //Stampa i numeri da 1 a 9 for(int i = 0; i < 10; i++) { writefln("%d", i); } return 0; }
Il for (come le altre strutture iterative) può essere usato per scorrere un array e stamparlo sullo schermo:
import std.stdio; int main(string[] args) { //Array di 10 elementi int mioArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; //Stampo il contenuto dell'array sullo schermo for(int i = 0; i < mioArray.length; i++) { /* La variabile 'i' verrà incrementata per ogni iterazione eseguita (da 0 a mioArray.length - 1) * quindi può essere presa per leggere ogni index dell'array */ writefln("%d", mioArray[i]); } return 0; }
Il foreach
Modifica
E' il "fratello minore" del for, si trova nei linguaggi nati di recente, è molto più elegante e compatto del for, si usa soprattutto per scorrere collezioni di elementi (come array o altro).
La sintassi del foreach è la seguente:
foreach(tipoElemento; arrayDiElementi)
{
/* Codice da eseguire fino a quando non viene raggiunta
* la fine della collezione di elementi
*/
}
- tipoElemento: è come se facessimo arrayDiElementi[i].
- arrayDiElementi: è la classica collezione di oggetti, può essere anche un array.
Ecco un utilizzo pratico del foreach:
import std.stdio; int main(string[] args) { //Array di 10 elementi int mioArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; //Per ogni int, nell'array di tipo int... foreach(int num; mioArray) { //num è come se fosse mioArray[i], cambia per ogni iterazione eseguita. writefln("%d", num); } return 0; }