Domanda:
spiegazione ciclo for c++?
tarzanello
2010-12-14 05:58:42 UTC
ciao a tutti, il prof ha spiegato il ciclo for col c++;io però non lo capito molto bene(ad esempio cosa ci devo scrivere tra parentesi dopo il for,la sintassi,ecc...un po di tutto)mi potreste fare un chiarimento a 360° per favore?grazie 10 punti al migliore
Quattro risposte:
Discovery
2010-12-14 09:53:18 UTC
salve. Il ciclo for è il ciclo più potente fra i 3 e ora proverò a spiegartelo al meglio.



la sintassi è :



for (espressione1 ; espressione2 ; espressione3) istruzioni



facciamo subito un esempio cosi capiamo subito.

Il seguente esempio esegue un conto alla rovescia da 10 a 1.



for ( i = 10; i > 0; i--)

cout << "Conteggio : " << i << '\n';



ora ti spiego l' esempio.



allora per prima cosa il for da valore 10 alla variabile i.

Subito dopo controlla se i è maggiore di 0;

i ha il valore 10 ( prima abbiamo assegnato ad i 10 ) e quindi è maggiore di 0.

L' espressione è pertanto vera e quindi il for passa al cout e da in output

Conteggio : 10

successivamente si ritorna al for che decrementa di 1 il valore di i ( lo fa tramite l' istruzione i--).

ora i ha valore 9. i è ancora maggiore di 0? siiiii , quindi come output da Conteggio : 9 e cosi via fino a quando i vale 1 e i-- riduce i a 0;

una volta a zero chiederà ; i è ancora maggiore di 0 ; nooo e quindi si esce dal ciclo.



eccoti il for.

Calcola che esso è come un while ma molto più efficente.

Prendiamo l' esempio di prima



for ( i = 10; i > 0; i--)

cout << "Conteggio : " << i << '\n';



esso si può anche scrivere come



i = 10;

while( i > 0){

cout << "Conteggio : "<
i--;

}

capisci quindi che il for è molto più veloce.



Tuttavia ci sono alcuni casi dove è meglio usare il for in confronto ad altri casi

essi sono:

Il conteggio da 0 fino a n-1;

Il conteggio da 0 fino ad n;

Il conteggio da n-1 fino a 0;

Il conteggio da n fino ad 1;





Passiamo ad un altra caratteristica del for.

Come abbiamo visto prima , esso è solitamente composto da 3 espressioni.

Ma nulla ci vieta di ometterne 1;



diventerebbe quindi;



i = 10;

for( ; i > 0; i --)





e poi continui con il cout.

Da notare la presenza del ; nonostante manchi l' espressione. Quando ometti delle espressioni dal for , per mantere la sitassi di quest ' ultimo corretta i ; sono obbligatori.



Ancora , Possiamo omettere 2 espressioni? Certo!!! Omettiamo la terza espressione ( i--)



for( i = 10 ; i > 0;)

cout<<"Conteggio " << i--<< '\n';



abbiamo inserito i-- nel cout;



se ometti invece la prima e la 3 diventa for(; i > 0;) che è uguale ad un while( i > 0)



Ancora , Si possono omettere TUTTE le espressioni ? Siiiiii si può fare e diventerebbe for(;;)

ovvero un ciclo infinito perché l' espressione è sempre vera.





Per concludere volevo ancora aggiungere che quando te dichiari delle variabili all' inizio del programma , inseguito le puoi utilizzare in tutto il programma e quindi le puoi richiamare anche all' interno dei cicli.



con il for invece , è possibile dichiarare una variabile ( nel for ) che utilizzerai SOLO nel for , e non sarà possibile utilizzarla in altre parti del programa,



se te la variabile i la vuoi dichiarare nel for ( prima i era dichiarata all' inizio del programma) puoi fare cosi :



for ( int i = 0 ; i > n; i++){



cout<<" Utilizzo dell' i nel for "<
}



cout<<"Utilizzo dell' i fuori dal for <


puoi anche dichiarare più variabili nel for for( int i =0 , J = 1 , x = 3 ; i > n; i++)





beh io ho finito XD scusami per la lunghezza della risposta , ma è per far si che tu capisca bene.



Ciaoooooo!!!!!

PS. Perdonami eventuali errori grammaticali ^^

-----------------

ricordo sempre a colui o colei che pone la domanda di scegliere sempre una migliore risposta tra quelle ricevute che NON è assolutamente detto che sia la mia.
dade
2010-12-14 13:44:51 UTC
Mi sembra che ti abbiano dato sufficienti spiegazioni per quanto riguarda il ciclo for.

Posso solo aggiungere che è più potente del while, ma può essere utilizzato tranquillamente come un ciclo while.



Es. while(i > 0) ----------> for(; i>0;)



La sintassi è la seguente:



for(x;y;z)



con:



x: istruzione o insieme di istruzioni eseguito solo prima della prima iterazione. Viene abitualmente utilizzata per inizializzare le variabili utilizzate per iterare, ma può contenere qualsiasi istruzione tu voglia.



y: condizione o insieme di condizioni: finchè è rispettata si itera, appena viene violata il for termina.



z: istruzione o insieme di istruzioni eseguito ad ogni iterazione: solitamente si utilizza per incrementare le variabili utilizzate per iterare, ma può contenere quello che si vuole.



Ad es. il seguente ciclo for è perfettamente legale anche se non particolarmente utile e furbo:



int i = 0;

for(printf("Inizio ciclo for"); i < 20; printf("Iterazione: %d\n", (i++ + 1)));



Ah, per Axl Rose: z, ovvero l'ultima componente del costrutto tra parentesi, viene eseguita al termine di ogni iterazione e non solo a partire dalla seconda iterazione.
BluNotte
2010-12-14 07:53:52 UTC
Il for è un modo alternativo per scrivere un ciclo while. La sua sintassi è:



for (inizializzazione; condizione; incremento)

{istruzioni}



ed equivale a:



inizializzazione

while (condizione)

{

istruzioni

incremento

}



Così, per esempio, volendo stampare tutti i numeri da 1 a 100, puoi scrivere:

int i = 1;

while (i <= 100)

{

cout << i << endl;

i = i + 1;

}



oppure, con il for:

for (int i = 1; i <= 100; i = i + 1)

cout << i << endl;



Come vedi, è esattamente uguale al while, cambia solo l'ordine in cui scrivi le cose. Il for, in particolare, ha la caratteristica di rendere più evidente l'incremento, che, altrimenti, starebbe alla fine di un blocco di istruzioni potenzialmente lungo.



Così come, in un ciclo while, non sempre hai bisogno di tutti gli elementi, così puoi fare anche nel ciclo for, lasciando campi vuoti.

Quindi for (;;) equivale a while (1), per esempio.
anonymous
2010-12-14 06:07:10 UTC
Il ciclo for è da utilizzare in sostituzione di un ciclo iterativo while. La funzione è la stessa ma viene rappresentata in maniera più compatta (insomma è opzionale)



Viene rappresentato così:



for (int x=0 //esempio inizializzazione variabile; x>5 //condizione; x++ //x=x+1)

{

Varie istruzioni...

}

Allora.. la prima parte all'interno delle parentesi può inizializzare una variabile temporanea che viene utilizzata solo all'interno del cliclo.

La seconda parte è la condizione in cui viene ripetuto il ciclo e la terza parte (che viene eseguita dalla seconda volta) è un istruzione fondamentale per non rendere il ciclo infinito.



Comunque io personalmente ti consiglio l'utilizzo del ciclo while che è più semplice e funziona così:



While (condizione)

{

}

All'interno delle graffe varie istruzioni e la condizione come al solito x far terminare il ciclo.



Se sono stato abbastanza chiaro chiedi pure cercerò di essere più comprensibile



PS: Domani ho il compito xD


Questo contenuto è stato originariamente pubblicato su Y! Answers, un sito di domande e risposte chiuso nel 2021.
Loading...