2. Definizione di ciclo
• Per gli algoritmi un ciclo è un blocco di istruzioni ripetuto
un certo numero di volte
• Quando il numero delle ripetizioni è prefissato o noto si
parla di ciclo iterativo
• Quando il numero delle ripetizioni è stabilito da una
condizione si parla di ciclo condizionato
3. Ciclo iterativo
• Ogni ciclo iterativo è caratterizzato dal fatto che deve
essere definito un indice detto contatore del ciclo. La
struttura algoritmica di un ciclo iterativo è riportata sotto.
In C++si ha:
for (c=inizio;c<=fine;c=c+passo)
{
istruzione 1;
istruzione 2;
istruzione 3;
}
4. Alcune note sul ciclo for
• Sono ammessi valori interi e reali del contatore;
• I valori di partenza e di arrivo del contatore possono
esseri in incremento o decremento.
In C++ se voglio incrementare di uno posso abbreviare
scrivendo c++. Mentre c-- decrementa di 1.
• Possono essere di esempio:
c=10;c<=20;c++ da 10 a 20 di passo 1;
c=-100;c<=0;c++ da -100 a 0 di passo 1;
c=0;c<=100;c=c+0.5 da 0 a 100 con passo 0.5.
5. Problema
• Scrivere una programma di C++ che stampa i multipli di
2,3 e da 0 a 100.
La codifica in C++ è:
#include <iostream>
using namespace std;
int main () {
for (c=0;c<=100;c=c+2) {
cout << c<<endl; }
for (c=0;c<=100;c=c+3) {
cout <<c<<endl; }
}
6. Alcune note sul problema
Nel codice sono svolti due cicli for uno per I multipli di 2 e
una per quelli di 3
Modifichiamo l'esercizio inserendo da tastiera che stampi i
multipli di k in un intervallo p,q con p<q.
8. Commento dell'algoritmo
• Devo verificare che sono inseriti P e Q, che P sia minore
di Q (multipli positivi);
• Stiamo cercando i multipli di K quindi utilizzando un ciclo
con contatore C che inizia da P e termina a Q, devo
verificare che il resto della divisione intera (modulo) fra C
e K è zero;
• In questo caso il numero C è multiplo di K e lo visualizzo;
9. Codifica in C++ del problema
#include <iostream>
using namepsace std;
int main (){
int c,p,q,k;
cout << “inserisci p e q”<<endl;
cin >> p;
cin >>q;
cout <<“inserisci k”<<endl;
cin >> k;
if (p<q) {
for c=p;c<=q;c++{
if (c%k=0)
cout <<c<<endl;}}
else
{cout << “Valori non validi !n”; return 0;}
system(“pause”};
10. Annotazioni sul codice C++
• L’operatore % controlla se il resto della divisione è 0 o meno,
se è zero il numero c compreso nell’intervallo (p,q) è divisibile
per k
• Viene controllato con un if se p è minore di q;
• In caso affermativo comincia il ciclo e si controlla dentro il ciclo
quando il contatore c è divisibile per k. Infatti solo in quel caso
c sarà multiplo di k.
11. Cicli condizionati
• Come già detto in precedenza trattasi di cicli il cui numero
delle ripetizioni è determinato da una condizione.
• Ne esistono due varianti: un ciclo con condizione iniziale
e uno con condizione finale.
• Nel primo caso il ciclo continua se la condizione è
verificata; mentre nel secondo caso se la condizione è
falsa.
12. Ciclo condizionato con
condizione iniziale
In C++ la ripetizione
mentre si codifica:
while (condizone) {
istruzione 1;
istruzione 2;
}
istruzione 3
13. Ciclo con condizione finale
In C++ la ripetizione
mentre si codifica:
do {
istruzione 1;
istruzione 2;
}
while (condizione)
istruzione 3
14. Ulteriore differenza fra cicli
condizionati
• Nel primo se la condizione è falsa il ciclo non viene
ripetuto;
• Nel secondo anche se la condizione non è già verificata il
corpo del ciclo viene eseguito almeno una volta;
• Sono molto utili quando l'utente deve fornire indicazioni in
merito al ciclo. Se ad esempio si devono inserire una
serie di prodotti allora è l'utente a stabilire quando
terminare.
15. Problema
In un negozio si vuole calcolare il valore della merce. Di ogni
prodotto sono noti il codice, la quantità e il prezzo. Calcolare
e visualizzare il totale del valore della merce.
Traccia di soluzione: Questo è un tipico problema che può
essere affrontato con i cicli condizionati. L'utente decide se
terminare l'inserimento mediante una variabile risposta che
vale S o N.