close

Per ciclo

Vai alla navigazione Vai alla ricerca

Il ciclo for è una struttura di controllo nella programmazione in cui è possibile indicare in anticipo il numero massimo di iterazioni .

Elementi del ciclo

  • Variabile di controllo : praticamente un mandato imposto dall'uso comune consiste nell'utilizzare la lettera i Iterator come variabile di controllo, o i suoi successori nel caso di loop annidati. L'uso di questa lettera criptica, forse a prima vista, è comunque un ottimo modo per aggiungere leggibilità al codice visto il suo ampio uso. Poiché i cicli annidati raramente superano le tre dimensioni (per una semplice questione di esplosione esponenziale), le lettere i, j e k sono solitamente le uniche coinvolte in questo utilizzo. In C è definito nel primo parametro dell'istruzione insieme all'inizializzazione (opzionale).
  • Inizializzazione della variabile di controllo : in pseudolinguaggio viene richiesto di esplicitarla (è la sezione := InitialValue ), tuttavia altri linguaggi più permissivi come il C non lo richiedono in maniera obbligatoria. Tuttavia, la pratica dell'utilizzo di variabili di controllo non inizializzate nel ciclo non è consigliata per la leggibilità del codice. In C è definito nel primo parametro del loop insieme alla variabile di controllo.
  • Condizione di controllo : in pseudolinguaggio è rappresentato dal valore finale che la variabile di controllo può assumere (sezione A FinalValue ). In C è il secondo parametro e può essere qualsiasi condizione (la variabile di controllo non è nemmeno richiesta, anche se questa non è considerata una buona pratica).
  • Increment : in pseudolinguaggio, il valore 1 è preso di default, anche se può essere esplicitato tramite la frase PASO = ValorPaso qualsiasi intero (leggi bene intero, cioè tecnicamente possiamo decrementare). In C è l'ultimo parametro.
  • Corpo : è ciò che verrà fatto in ogni iterazione, può essere una o più istruzioni. Nello pseudolinguaggio c'è il vincolo di non poter alterare il valore della variabile di controllo; questo non è richiesto in C, ma non è considerata una buona pratica.

Usi

Il suo utilizzo principale è orientato ai vettori , potendo modificare, aggiungere, cancellare o consultare i dati trovati in base all'indice. Per quest'ultimo una condizione minima del vettore è che debba essere ordinato, perché se si tenta di leggere un dato inesistente si genera un errore di programmazione .

In pseudolinguaggio

La principale differenza tra un ciclo FOR e i cicli WHILE AND REPEAT è che può essere determinato all'inizio del ciclo quante volte il ciclo verrà ripetuto, il che può spesso portare all'ottimizzazione del codice da parte dei compilatori. I condizionali, insieme ai loop, costituiscono i pilastri della programmazione strutturata e il loro utilizzo è un'evoluzione di un'istruzione in linguaggio assembly che eseguiva la riga successiva o meno a seconda del valore di una condizione.

Il ciclo FOR è diventato il ciclo più utilizzato nella programmazione, poiché con l'evoluzione dei linguaggi la maggior parte delle condizioni finali


È lo stesso dire:

DA i=0 a NumberRecords(tabella) - 1, PASSO = 1
 NextRecord(tabella)
 Fai qualcosa(CurrentItem(table))
FINE PER

Un altro uso comune è usare i cicli FOR per attraversare vettori di due o più dimensioni, nel qual caso queste iterazioni sono annidate.

LINGUA PSEUDO

Vettore a[3][4][2]. // Stiamo indicando un vettore di 3 dimensioni e 24 elementi in totale.
PER i:= 0 A 2 FARE
  PER j:= DA 0 A 3 FARE
    PER k:= 0 A 1 FARE
      Fai qualcosa(a[i][j][k])
    FINE PER
  FINE PER
FINE PER

Esempio di pseudocodice

Per ControlVariable := StartValue TO EndValue, STEP = Incrementa

  Istruzioni
FINE Per

dove ControlVariable , StartValue , EndValue e Step sono numeri interi. Le istruzioni nel corpo verranno eseguite (EndValue - InitialValue + 1) volte, ovvero vanno da InitialValue a EndValue incluso.

Esempio in C++

#includi <iostream>
#include <cono.h>
usando lo spazio dei nomi std;

intmain(){
   vettore int[10];
   for(int i=0; i<10; i++){
      vettore[i] = io;
      cout<<i<<endl;
   }  
   sistema("PAUSA");
   restituire 0;
}

Nella definizione for , abbiamo che la variabile di controllo i viene inizializzata ad un valore 0, quindi viene data la condizione di controllo che deve essere falsa durante la sua esecuzione, per completare il ciclo; e infine, abbiamo l'incrementatore in un'unità.

Se, ad esempio, nella condizione mettiamo i < 11, allora il ciclo for verrà eseguito da [0...10], il quale, tentando di accedere all'elemento vector[10], genererà un errore, poiché il vettore (per definizione ) va da [0..(n-1)].

Qualsiasi componente tra parentesi può essere omesso, ma i separatori punto e virgola devono sempre essere visualizzati. Il risultato è un ciclo infinito.

Esempio sopra scritto in lessico

compito
{
vector[10] oggetti, io sono quantità
variando i da 0 a 9 do
         copia i su vettore[i]
}

Per ogni ciclo

Questo ciclo è un'evoluzione del concetto di ciclo For in alcune lingue. Viene utilizzato per attraversare strutture di dati ripetitive in un modo più semplice e agile. Il ciclo For Each può essere descritto genericamente (in pseudolinguaggio) come segue:

PER OGNI elemento DI tipo IN set DO
  Corpo
FINE PER CIASCUNO
  • Elemento : è il nome della variabile o dell'oggetto che prende l'elemento iterato nel corpo del ciclo.
  • Tipo di dati : è il tipo di variabile o la classe a cui appartiene l'oggetto da iterare.
  • Set : è la struttura dati su cui si desidera eseguire l'iterazione. L'uso più tipico è con vettori o -nella programmazione orientata agli oggetti- classi del tipo Collection.
  • Corpo : è ciò che verrà fatto in ogni iterazione, può essere una o più istruzioni. Sebbene non venga imposto alcun obbligo al riguardo, il più comune è che in questo Organismo vi sia qualche operazione sull'elemento iterato.

Una delle caratteristiche importanti dei computer che possono essere sfruttate è proprio la loro capacità di ripetere l'esecuzione di sequenze di istruzioni ad alta velocità e con un alto grado di affidabilità. A tal fine, le strutture di controllo iterativo sono definite con precisione nei linguaggi di programmazione. L'obiettivo di queste strutture è quello di consentire l'espressione della ripetizione di una sequenza di istruzioni, queste strutture sono chiamate ciclo, loop o loop.

Riepilogo 1 Strutture di controllo iterative 2 Istruzione while 3 Istruzione do/while 4 Struttura di controllo for 5 Caso di studio 5.1 GCF() 5.2 QtyDigits() 5.3 Factorial() 6 Loop nidificati 7 Fonti Strutture di controllo iterative nella vita Quotidianamente, ci sono situazioni che frequentemente si risolvono effettuando una certa sequenza di passaggi che possono essere ripetuti più volte, ad esempio:

Il processo che seguiamo per mangiare, mentre il cibo non è finito. Il processo di inserimento delle monete, fino al pagamento dell'importo necessario. Le operazioni che svolgiamo per chiamare telefonicamente, mentre la comunicazione non viene raggiunta. Come si vede, si tratta di algoritmi che vengono eseguiti quotidianamente, ma hanno la particolarità che l'esecuzione di alcuni loro passaggi può essere ripetuta più volte, fintanto che l'obiettivo prefissato non viene raggiunto. Questo tipo di algoritmo è noto come algoritmi iterativi o ripetitivi. In C#, le istruzioni while, do/while e for consentono di eseguire iterazioni, cicli o cicli. In ogni caso, viene eseguito un blocco di istruzioni mentre la condizione valutata è vera. Si evidenzia che una qualsiasi delle 3 istruzioni soddisfa lo stesso obiettivo, ovvero eseguire una sequenza di passaggi, più di una volta.

L'istruzione while L'istruzione while ha la seguente sintassi:

MentreStatement.JPG

La semantica dell'affermazione è la seguente:

<condizione>. È rappresentato da un'espressione booleana e finché è soddisfatta, il ciclo verrà eseguito. [Blocco istruzione] Il blocco istruzione può essere costituito da una o più istruzioni ed è l'insieme di passaggi che verranno eseguiti in ogni iterazione del ciclo. Per una migliore comprensione, la sua rappresentazione è mostrata in un diagramma di attività.

DiagramWhile.JPG

Questa struttura di controllo consente di ripetere o iterare il [Blocco di istruzioni] mentre la condizione è vera o, in altre parole, queste iterazioni termineranno quando la condizione è falsa e quindi è possibile eseguire l'istruzione successiva dopo il tempo.

È bene precisare che in questa istruzione la condizione viene valutata all'inizio del ciclo, quindi se la prima volta che viene valutata la condizione è falsa, il ciclo non verrà eseguito.

L'istruzione do/while La struttura di controllo do/while è un'altra istruzione di iterazione in cui la condizione viene valutata per la prima volta dopo l'esecuzione di [Statement Block] e ha la seguente sintassi:

DoWhileStatement.JPG

La sua semantica è la stessa di quella dell'istruzione while e la sua rappresentazione in un diagramma di attività è la seguente:

DiagramDoWhile.JPG

In questa struttura ripetitiva, il blocco di istruzioni viene sempre eseguito almeno una volta perché la condizione viene valutata per ultima. Una volta eseguita la valutazione, se il risultato è vero, il [Blocco Istruzione] viene eseguito nuovamente, altrimenti vengono eseguite le istruzioni successive, uscendo dal ciclo. La funzionalità di questo metodo sarà la stessa dell'esempio while. L'unica differenza è il modo in cui il loop è controllato. In pratica, scoprirai che l'istruzione while viene utilizzata più spesso dell'istruzione do - while. La scelta di un'istruzione rispetto all'altra è una scelta personale. Un aspetto molto importante da tenere a mente nei cicli condizionali è la necessità di contemplare almeno un blocco di istruzioni all'interno del blocco di istruzioni, che in qualche modo altera – ad un certo punto – il risultato dell'espressione booleana. La spiegazione è semplicemente data dal fatto che se questa istruzione non esistesse una volta entrato nel ciclo, non finirebbe mai, quindi cadrebbe in un ciclo infinito.

La struttura di controllo per I processi iterativi che abbiamo visto finora termina con una condizione. In molte situazioni le iterazioni vengono eseguite un certo numero di volte, molti autori le chiamano cicli contando perché si sa in anticipo quante volte verrà eseguito il processo che si ripete. In questo tipo di iterazione, è sempre necessaria una variabile per tenere traccia di quante volte il processo viene ripetuto, motivo per cui sono anche noti come cicli con una variabile di controllo. Uno dei cicli più conosciuti e più utilizzati nella maggior parte dei linguaggi di programmazione è l'istruzione for, che di solito è controllata da una variabile contatore o di controllo e ha la seguente sintassi:

Istruzioni per.JPG

La semantica dell'affermazione è la seguente:

<istruzioni 1>. Verrà eseguito una sola volta all'inizio del ciclo, di solito vengono eseguite inizializzazioni e dichiarazioni di variabili poiché, come detto in precedenza, viene eseguito una sola volta. Se si desidera eseguire o eseguire più di un'istruzione in questo momento, queste istruzioni devono essere separate da virgole ("."). <espressione>. Viene valutato in ogni iterazione e, a seconda del valore che restituisce, dipenderà dal fatto che il ciclo continui a essere eseguito (valore dell'espressione vero) o meno (falso). Nota che se non viene inserito nulla in questa parte, il ciclo assumerà il valore dell'espressione come vero, quindi in linea di principio il ciclo può essere ripetuto all'infinito. <istruzioni 2>. Viene sempre eseguito in ogni ciclo al termine dell'esecuzione di tutte le istruzioni che appartengono al ciclo for in questione. Di solito può contenere alcuni aggiornamenti per le variabili di controllo. Analogamente a <istruzioni 1>, se si desidera eseguire più di un'istruzione in questo momento, queste devono essere separate da virgole. Si noti che è obbligatorio separare ogni termine che compone l'istruzione for usando un punto e virgola (;) altrimenti il ​​compilatore visualizzerà un errore di tipo semantico. Ribadiamo che <istruzione 1> viene eseguita una sola volta all'inizio, che <istruzione 2> è quella che generalmente viene utilizzata per modificare la variabile di controllo sebbene possa essere modificata anche nel ciclo, e che <espressione> è quella che garantisce la finitezza del ciclo, il for verrà eseguito fintanto che <espressione> viene valutata e assume il valore true.

Vedi anche

Riferimenti

Collegamenti esterni