(Java) Cicli. Ciclo con parametro (per)


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 il comando 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, ci aiuterà una costruzione speciale chiamata LOOP

Un ciclo è una costruzione algoritmica in cui una determinata sequenza di comandi viene ripetuta più volte.


Nel linguaggio di programmazione Java esistono due tipi di loop: un loop con una variabile (for) e un loop con una condizione (while e do...while)

Iniziamo la nostra conoscenza dei cicli dal primo tipo.

LOOP CON UNA VARIABILE O CON UN NUMERO DI PASSI NOTO (FOR)

Accade spesso che conosciamo il numero di ripetizioni di alcune azioni, oppure possiamo calcolare il numero di ripetizioni utilizzando i dati a noi noti. Alcuni linguaggi di programmazione hanno un comando che in russo suona come RIPETI (numero di volte), ovvero possiamo specificare il numero esatto di ripetizioni. 

È 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.

Nel linguaggio di programmazione Java, non esiste tale costrutto, ma il 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*/;
}
Questa costruzione 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. indicare 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.

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

In genere, le parti di un ciclo for eseguono i seguenti passaggi: 
1. Impostazione del valore iniziale. 
2. Esecuzione di un test delle condizioni per continuare il ciclo. 
3. Esegui azioni cicliche. 
4. Aggiorna i valori utilizzati nel test. 
e quindi i passaggi 2-4 vengono ripetuti finché la condizione non viene soddisfatta. 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 più in dettaglio tutte le parti
for (/*espressione1*/; /*espressione2*/; /*espressione3*/ )
{
      /*un'istruzione o un blocco di istruzioni - corpo del ciclo*/;
}

Espressione 1

responsabile dell'impostazione del valore iniziale della variabile di ciclo (contatore), termina con un punto e virgola
Per esempio :
opzione 1) i=0; //alla variabile di ciclo i viene assegnato il valore iniziale pari a zero. Con un record del genere,
//la variabile i deve essere dichiarata prima del ciclo

opzione 2) int i=0; //la variabile i può essere dichiarata immediatamente nell'intestazione del ciclo, ma
// in questo caso, dopo il ciclo verrà cancellato dalla memoria

opzione 3); //nessuna inizializzazione e dichiarazione della variabile del ciclo,
// in questo caso può essere dichiarato prima del ciclo
Espressione 2
questa è la condizione per continuare il ciclo  for, viene verificata la verità.

i<=10 // il ciclo verrà eseguito finché i è minore o uguale a 10.
La condizione può essere qualsiasi cosa
Espressione 3 
cambia il valore della variabile contatore. Senza questo valore, il ciclo sarà considerato infinito

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

Esercitiamoci a scrivere il titolo del ciclo for

Un'altra caratteristica della notazione è che se c'è un solo operatore nel corpo del ciclo, le parentesi possono essere omesse.

Possono esserci più istruzioni separate da virgole in ciascuna parte dell'intestazione.
Esempi di intestazioni:
for ( i = 0; i < 10; i ++ ) { ... }
        //titolo standard
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 con il passo 2 - i+=2 - scorciatoia per i=i+2
        // la variabile x aumenta di 0,1 volte ad ogni passo x=x*0.1 - abbreviato come x*=0.1

Tutti i programmi con un ciclo for che abbiamo scritto finora non possono essere definiti universali. Perché impostiamo noi stessi 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, abbiamo bisogno di visualizzare i quadrati dei numeri da 1 a N, dove il valore della variabile N viene inserito dalla tastiera dall'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; // inserisci N dalla tastiera
 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 << "Kvadrat chisla "<<i<<" corvo " <<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 (i ++) ad ogni passaggio. Il ciclo viene eseguito finché è vera la condizione i <= N. 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.