(C++) Cicli. Ciclo con parametro (per)


Loop nella programmazione
Immagina una situazione in cui dobbiamo visualizzare la stessa parola sullo schermo, diciamo la parola "CIAO", 10 volte. Cosa dobbiamo fare?
Puoi prendere e scrivere 10 volte cout << "CIAO";

Ma cosa succede se non hai bisogno di 10 volte, ma 20, 30, 40 volte? E se 200 volte? In questo caso, la copia richiederà molto tempo. E se è necessario che l'utente scelga quante volte visualizzare le informazioni sullo schermo? 

Per far fronte a questo compito, utilizzeremo una costruzione speciale chiamata loop.
 
Un cicloè una costruzione algoritmica in cui una certa sequenza di comandi viene ripetuta più volte.< /div>
Nel linguaggio di programmazione C++, ci sono due tipi di cicli: un ciclo variabile (for) e un ciclo condizionale (while e do...while)

Iniziamo la nostra conoscenza dei cicli dal primo tipo.
 
Ciclo con variabile (for)

Accade spesso che conosciamo il numero di ripetizioni di alcune azioni, oppure possiamo calcolare il numero di ripetizioni utilizzando i dati che conosciamo. Alcuni linguaggi di programmazione hanno un comando che in russo suona come repeat(number of times), che indica il numero esatto di ripetizioni tra parentesi. 

È interessante vedere come funziona questo ciclo a livello di macchina:
1. una determinata cella di memoria viene allocata in memoria e vi viene scritto il numero di ripetizioni;
2. quando il programma esegue il corpo del ciclo una volta, il contenuto di questa cella (contatore) viene decrementato di uno;
3. l'esecuzione del ciclo termina quando questa cella è zero.

Non esiste un tale costrutto nel linguaggio di programmazione C++, ma esiste un costrutto for.  

La forma generale dell'istruzione del ciclo for è la seguente: for (/*espressione1*/; /*espressione2*/; /*espressione3*/ ) { /*un'istruzione o un blocco di istruzioni - corpo del ciclo*/; } Questo design richiede che noi:
1. allocare esplicitamente una cella di memoria che sarà un contatore e impostarne il valore iniziale;
2. è stata scritta una condizione in base alla quale verrà eseguito il corpo del ciclo;
3. Specifica come cambierà il valore in questa cella.

Nella parte pratica, proveremo a visualizzare la parola "Ciao" 10 volte. Nelle seguenti attività, analizzeremo questa costruzione in modo più dettagliato.

for
ciclo
Un ciclo for è un mezzo per scorrere azioni ripetute. Diamo un'occhiata più da vicino a come funziona.

L'esecuzione del ciclo for consiste nei seguenti passaggi: 
1. impostazione del valore iniziale della variabile del ciclo (contatore);
2. controllando le condizioni per continuare il ciclo;
3. esecuzione di un passo (loop body); 
4. cambiando il valore della variabile del ciclo.
Inoltre, i passaggi 2-4 vengono ripetuti fino a quando la condizione al 2° passaggio diventa falsa. Non appena la condizione diventa falsa, il ciclo termina e viene eseguita l'istruzione che segue l'istruzione del ciclo for.
.

Torniamo alla forma generale dell'istruzione loop e analizziamo tutte le parti in modo più dettagliato.
for (/*espressione1*/; /*espressione2*/; /*espressione3*/ ) {       /*un'istruzione o un blocco di istruzioni - corpo del ciclo*/; }

Espressione 1 responsabile dell'impostazione del valore iniziale della variabile del ciclo (contatore), termina con un punto e virgola

Per esempio,

1)i=0;    // Assegna il valore iniziale uguale a zero alla variabile del ciclo i.
                 // Con questa notazione, la variabile i deve essere dichiarata prima del ciclo.

2) int i=0; //  La variabile i può essere dichiarata direttamente nell'intestazione del ciclo, ma
                     // in questo caso, dopo che il ciclo è stato cancellato dalla memoria

3) ;    // Nessuna inizializzazione e dichiarazione della variabile ciclo,
          //  in questo caso può essere definito prima del ciclo.


Espressione 2 è la condizione di continuazione del ciclo per che viene verificata per essere vera.

i<=10  // Il ciclo verrà eseguito finché la variabile i è minore o uguale a 10. La condizione può essere qualsiasi cosa.
 

Espressione 3 modifica il valore della variabile contatore. Senza questo valore, il ciclo sarà considerato infinito.

i++  // La variabile incrementerà di 1 ad ogni passaggio.
 

Se c'è un'istruzione nel corpo del ciclo

Se c'è solo un'istruzione nel corpo del ciclo, le parentesi possono essere omesse.

Cicla per -features

Possono esserci più istruzioni separate da virgole in ciascuna parte dell'intestazione.
 
Esempio
for ( i = 0, x = 1.; i < 10; i += 2, x *= 0.1 ) { ... } In questo caso, usiamo due variabili che cambieranno dopo l'esecuzione del corpo del ciclo - queste sono le variabili i e x. La variabile i cambia nei passaggi 2: i += 2 è una scorciatoia per i = i + 2. La variabile x aumenta di 0.1 volte ad ogni passo x = x * 0.1, x *= 0.1 in breve.

Ripeti N volte

Tutti i programmi con un ciclo for che abbiamo scritto finora non possono essere definiti universali. Perché ci siamo dati il ​​numero di ripetizioni del corpo del loop. Ma cosa succede se il numero di ripetizioni dipende da qualche altro valore? Ad esempio, l'utente stesso desidera impostare il numero di ripetizioni del ciclo.
Cosa fare in questo caso? Tutto è molto semplice. Invece di valori iniziali e finali numerici, possiamo utilizzare qualsiasi variabile che può essere calcolata o impostata dall'utente.

Ad esempio, dobbiamo visualizzare i quadrati dei numeri da 1 a N, dove il valore della variabile N viene inserito da tastiera da l'utente.
Il programma avrà questo aspetto:
  #include <iostream> utilizzando lo spazio dei nomi std; principale() { int i,N; // io – variabile loop, N - il numero massimo per il quale calcoliamo il quadrato cin>> N; for ( i = 1; i <= N; i ++) // ciclo: per tutti i da 1 a N. La variabile i assumerà in sequenza valori da 1 a N { cout << "Numero quadrato "<<i<<" è" <<i*i<<"\n"; // Emissione del quadrato di un numero in un formato specifico e passaggio a una nuova riga } } Quando si entra nel ciclo, viene eseguita l'istruzione i = 1, quindi la variabile i viene incrementata di uno ad ogni passo (i ++ ). Il ciclo viene eseguito mentre la condizione i <= N è vera. Nel corpo del ciclo, l'unica istruzione di output stampa il numero stesso e il suo quadrato sullo schermo secondo il formato specificato.
Per la quadratura o altri esponenti bassi, è meglio usare la moltiplicazione.

Esegui il programma e guarda il risultato del suo lavoro con diversi valori della variabile N.