Cicli iterativi
L’iterazione è un algoritmo che ripete una sequenza di istruzioni fin quando cessa il verificarsi di una determinata condizione. Nella sua forma generale esso può essere così schematizzato:
Figura 1 – Ciclo WHILE
Fin tanto che la condizione specificata nel rombo è vera, viene eseguita la sequenza presente nel ramo SI, in genere l’ultima istruzione contenuta nella sequenza è un incremento di una variabile che determinerà poi il controllo successivo. Nel momento in cui la condizione risulta falsa, l’esecuzione segue il ramo NO e procede con l’istruzione che viene dopo lo schema.
Uno schema del genere si chiama anche “ciclo iterativo”. La sequenza presente nel ramo SI si chiama “contenuto del ciclo”. La condizione che determina la ripetizione o meno del ciclo si chiama “controllo del ciclo”.
Esistono fondamentalmente tre tipi di cicli iterativi, Il ciclo while, il ciclo do while, e il ciclo for.
CICLO WHILE
E’ chiamato anche ciclo con controllo in testa, perché il controllo del ciclo è posto prima del contenuto del ciclo. Lo schema che lo descrive è quello sopra riportato.
while(condizione){
//istruzioni del ciclo
}
CICLO DO WHILE
A differenza del ciclo while, in questo tipo di iterazione viene eseguita prima l’istruzione (o il gruppo di istruzioni) e soltanto dopo si verifica la condizione che determina o meno la ripetizione del ciclo. In questo modo le istruzioni del ciclo vengono eseguite almeno una volta. A causa della sua struttura questo ciclo è chiamato ciclo con controllo in coda. Può essere così schematizzato:
Figura 2 – Ciclo DO-WHILE
do{
//istruzioni del ciclo
}while(condizione);
CICLO FOR
Sostanzialmente il ciclo for, dal punto di vista sintattico è identico al ciclo while. È stato introdotto, perché fornisce una maggior compattezza sintattica, e quindi il suo uso risulta più appropriato quando il ciclo iterativo svolge la funzione di eseguire un conteggio. La sua implementazione è:
for(int indice;condizione;incremento indice)
{
//istruzioni del ciclo
ESEMPIO
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 |
#include <cstdlib> //funzioni della libreria standard del C #include <iostream> //stream cin, cout e getline #include <ctime> //rand #include <cmath> //funz matematiche #include <stdio.h> //getchar() #include <windows.h> //Sleep(), PlaySound() #include <iomanip> // std::setw #include <time.h> #include <fstream> #include <string> #include <sstream> #include "def.h" #include "screen.h" #include "map.h" #include "ttime.h" #include "fkey.h" #include "file.h" #include "vet.h" using namespace std; void mediavotiFOR(){ int voto, somma=0, conta=0, media, NUMVOTI; cout<<"Quanti voti da mediare: "; cout<<NUMVOTI; for(int conta=0; conta<NUMVOTI; conta++){ cout<<"Inserisci un voto: "; cin>>voto; somma=somma+voto; } media=somma/conta; cout<<"Media: "<<media<<endl; } void mediavotiDOWHILE(){ int esci=0; int voto, somma=0, media, conta=0; do{ cout<<"Inserisci un voto o Premi 0 per uscire: "; cin>>voto; if(voto==0){ esci=1; } else{ somma=somma+voto; conta++; } }while(esci==0); if(conta>0){ media=somma/conta; cout<<"Media: "<<media<<endl; } else cout<<"Nessun voto inserito\n"; } void mediavotiFOR(){ int esci=0; int voto, somma=0, media, conta=0; cout<<"Inserisci un voto o Premi 0 per uscire: "; cin>>voto; if(voto==0){ esci=1; } else{ somma=somma+voto; conta++; } while(esci==0){ cout<<"Inserisci un voto o Premi 0 per uscire: "; cin>>voto; if(voto==0){ esci=1; } else{ somma=somma+voto; conta++; } } if(conta>0){ media=somma/conta; cout<<"Media: "<<media<<endl; } else cout<<"Nessun voto inserito\n"; } int main(int argc, char *argv[]) { mediavotiWHILE(); //system("pause"); return 0; } |