![Page 1: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/1.jpg)
Daniele Loiacono
Strutture di ControlloFondamenti di Informatica
![Page 2: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/2.jpg)
Daniele Loiacono
Effettuare una scelta in un programma
![Page 3: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/3.jpg)
Daniele Loiacono
Istruzioni condizionali
#include<stdio.h>int main(){
char c;printf("Inserire il carattere maiuscolo: ");scanf("%c", &c);printf("La traduzione e' %c\n",c+32);return 0;
}
q Cosa succede se il carattere inserite non è una lettera maiuscola?
Istruzioni in sequenza
![Page 4: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/4.jpg)
Daniele Loiacono
Istruzione condizionale if
q Consente di effettuare scelte nel flusso di esecuzione
if (anni>65)printf(”Biglietto ridotto\n");
if (vel > 55)printf(”Limite superato\n");
q Semantica: lo statement viene eseguito solo se la condizione è vera
if (<condizione>)statement;
![Page 5: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/5.jpg)
Daniele Loiacono
Istruzione condizionale if
q Consente di effettuare scelte nel flusso di esecuzione
if (anni>65);printf(”Biglietto ridotto\n");
if (vel > 55);printf(”Limite superato\n");
q Semantica: lo statement viene eseguito solo se la condizione è vera
q L’istruzione condizionale if non deve essere seguita da un ;
if (<condizione>)statement;
![Page 6: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/6.jpg)
Daniele Loiacono
Condizioni in C
![Page 7: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/7.jpg)
Daniele Loiacono
Vero e falso in C
q In C non esiste un tipo di dato specifico per rappresentare i concetti vero e falso
q Una condizione assume un valore intero pari a0 se la condizione è falsa1 se la condizione è vera
q In generale, ogni valore diverso da zero è considerato vero( 3 ) à VERO( 1 ) à VERO( a – a ) à FALSO
![Page 8: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/8.jpg)
Daniele Loiacono
q Gli operatori relazionali operano su valori numerici e carattere
q a e b possono essere espressioni aritmetiche, variabili, o costanti
q OP può essere> maggiore< minore>= maggiore o uguale<= minore o uguale== uguale!= diverso
Operatori relazionali
a OP b
![Page 9: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/9.jpg)
Daniele Loiacono
Operatori relazionali: esempi
if (5>=4) /* vero */…
if (3!=3) /* falso */…
if (2e12 < 3.42) /* falso */…
if ('c'=='d') /* falso */…
if ('a' < 'c') /* vero */…
![Page 10: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/10.jpg)
Daniele Loiacono
Operatori logici
q Gli operatori logici consentono di costruire delle condizioni complesse a partire da condizioni più semplici
q I quattro operatori logici principali sono: AND, OR, NOT e XORq AND, OR e XOR sono operatori binari, NOT è un operatore unarioq Gli operatori vengono definiti attraverso una tavola della verità:
A B A AND B A OR B A XOR B
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0
A NOT A
0 1
1 0
![Page 11: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/11.jpg)
Daniele Loiacono
q Sintassi operatori logici<condizione> && <condizione> AND<condizione> || <condizione> OR! <condizione> NOT
q Dove <condizione>:può contenere a sua volta sotto-condizioni definite sia attraverso operatori relazionali che logicidovrà avere comunque un valore intero: se tale valore è 0 verrà valutata come falsa, altrimenti verrà valutata come vera.
Operatori logici in C
![Page 12: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/12.jpg)
Daniele Loiacono
Operatori logici: esempio
int a;char c;
if ( a>=5 && a<9) /* vero se 5 <= a < 9 */
if ( !( c >= 'a' && c<='z' ) )printf ("%c non è una lettera minuscola\n",c);
if ( c < 'a' || c >'z' )printf ("%c non è una lettera minuscola\n",c);
![Page 13: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/13.jpg)
Daniele Loiacono
q Un’espressione viene valutata nel seguente ordine:Operatori ++ e –!operatori aritmetici operatori relazionali&& ||
q È possibile utilizzare le parentesi tonde per specificare la precedenza desiderata
Non si possono usare altri tipi di parentesi per questo scopoÈ possibile inserire diversi livelli di parentesi (tonde) uno dentro l’altro
Ordine tra gli operatori
![Page 14: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/14.jpg)
Daniele Loiacono
Esempio
/* Programma assicurazione.c */#include <stdio.h>
int main(){
int anni, cc, giovane,altaCC;printf("Inserire l'eta': "); scanf("%d",&anni);printf("Inserire cilindarata: "); scanf("%d",&cc);giovane = (anni<=20);altaCC = (cc>1400);if (giovane && altaCC)
printf("Incremento: 70 per cento\n");if (giovane && !altaCC)
printf("Incremento: 40 per cento\n");if (!giovane && altaCC)
printf("Incremento: 10 per cento\n");if (!giovane && !altaCC)
printf("Incremento: nessuno\n");
return 0;}
![Page 15: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/15.jpg)
Daniele Loiacono
Assegnamento ≠ Confronto
q Assegnamento
int a = 0, b = 4;a = b;printf( "%d", a );
q Confronto
int a = 0, b = 4;if ( a == b )printf( "uguali" );
int a = 0, b = 4;if ( a = b )printf( "uguali" );
1) a=4
2) (a=b) à 4 à vero
![Page 16: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/16.jpg)
Daniele Loiacono
Costrutti condizionali
![Page 17: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/17.jpg)
Daniele Loiacono
Istruzione if: esempio
#include<stdio.h>int main(){
char c;printf("Inserire il carattere maiuscolo: ");scanf("%c", &c);printf("La traduzione e' %c\n",c+32);
return 0;}
q Se il carattere inserito non è una lettera maiuscola?
![Page 18: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/18.jpg)
Daniele Loiacono
Istruzione if: esempio
#include<stdio.h>int main(){
char c;printf("Inserire il carattere maiuscolo: ");scanf("%c", &c);if (c>=‘A' && c<=‘Z')
printf("La traduzione e' %c\n",c+32);return 0;
}
q Se c è una lettera maiuscola eseguo la traduzione, altrimenti?
![Page 19: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/19.jpg)
Daniele Loiacono
Istruzione condizionale if-else
q Consente di scegliere fra due alternative nel flusso di esecuzione
if (anni>=18)printf("Hai diritto al voto\n");
elseprintf("Non puoi votare\n");
if ( a==b )printf("a e b sono uguali\n");
elseprintf("a e b sono diversi\n");
q Semantica: il primo statement viene eseguito solo se la condizione è vera, il secondo statement viene eseguito solo se lacondizione è falsa
if (<condizione>)
statement;else
statement;
![Page 20: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/20.jpg)
Daniele Loiacono
Istruzione if-else: esempio
#include<stdio.h>
int main(){
char c;printf("Inserire il carattere maiuscolo: ");scanf("%c", &c);if (c>='A' && c<='Z')
printf("La traduzione e' %c\n",c+32);else
printf ("Il carattere inserito non e' una lettera maiuscola\n");
return 0;}
![Page 21: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/21.jpg)
Daniele Loiacono
Statement composti
q Scrivere un programma che, letti due numeri individua quello maggiore e quello minore
#include<stdio.h>
int main(){
float max, min, temp;printf("Inserire il primo numero: ");scanf("%f", &max);printf("Inserire il secondo numero: ");scanf("%f", &min);if (max<min)
temp = min;min = max;max = temp;
printf("max=%f - min=%f\n",max,min);return 0;
}
![Page 22: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/22.jpg)
Daniele Loiacono
Statement composti
q Scrivere un programma che, letti due numeri individua quello maggiore e quello minore
#include<stdio.h>
int main(){
float max, min, temp;printf("Inserire il primo numero: ");scanf("%f", &max);printf("Inserire il secondo numero: ");scanf("%f", &min);if (max<min){
temp = min;min = max;max = temp;
}printf("max=%f - min=%f\n",max,min);return 0;
}
![Page 23: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/23.jpg)
Daniele Loiacono
Scegliere fra molte alternative
#include<stdio.h>
int main(){
int pesoMoneta;scanf("%d",&pesoMoneta);if (pesoMoneta==9)
printf ("5 centesimi\n");if (pesoMoneta==16)
printf ("10 centesimi\n");if (pesoMoneta==19)
printf ("20 centesimi\n");if (pesoMoneta==35)
printf ("50 centesimi\n");return 0;
}
Se non si verifica nessuna condizione?
![Page 24: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/24.jpg)
Daniele Loiacono
Scegliere fra molte alternative
#include<stdio.h>
int main(){
int pesoMoneta;scanf("%d",&pesoMoneta);if (pesoMoneta==9)
printf ("5 centesimi\n");else if (pesoMoneta==16)
printf ("10 centesimi\n");else if (pesoMoneta==19)
printf ("20 centesimi\n");else if (pesoMoneta==35)
printf ("50 centesimi\n");else
printf("Non riconusciuta!");
return 0;}
Poco leggibile
![Page 25: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/25.jpg)
Daniele Loiacono
Scegliere fra molte alternative
#include<stdio.h>
int main(){
int pesoMoneta;scanf("%d",&pesoMoneta);if (pesoMoneta==9)
printf ("5 centesimi\n");else if (pesoMoneta==16)
printf ("10 centesimi\n");else if (pesoMoneta==19)
printf ("20 centesimi\n");else if (pesoMoneta==35)
printf ("50 centesimi\n");else
printf("Non riconusciuta!");
return 0;}
Esiste un costrutto specifico per le selezioni multiple!
![Page 26: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/26.jpg)
Daniele Loiacono
Scegliere fra molte alternative: switch
switch (<expr>){case <v1>: statement;
statement;...break;
...case <vN>: statement;
statement;...break;
default: statement;...
}
q Il break serve a terminare la sequenza di istruzioni da eseguire
q Se non viene specificato il break, l’esecuzione prosegue al caso successivo
q Il default è opzionale e viene eseguito se non si verifica nessuno dei prec
![Page 27: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/27.jpg)
Daniele Loiacono
Scegliere fra molte alternative: switch
switch (<expr>){case <v1>: statement;
statement;...break;
...case <vN>: statement;
statement;...break;
default: statement;...
}
q Il break serve a terminare la sequenza di istruzioni da eseguire
q Se non viene specificato il break, l’esecuzione prosegue al caso successivo
q Il default è opzionale e viene eseguito se non si verifica nessuno dei prec
![Page 28: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/28.jpg)
Daniele Loiacono
Lo switch: distributore automatico
#include<stdio.h>
int main(){
int pesoMoneta;scanf("%d",&pesoMoneta);switch(pesoMoneta){
case 9: printf ("5 centesimi\n"); break;case 16: printf ("10 centesimi\n"); break;case 19: printf ("20 centesimi\n"); break;case 35: printf ("50 centesimi\n"); break;
}
return 0;}
![Page 29: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/29.jpg)
Daniele Loiacono
Lo switch: distributore automatico
#include<stdio.h>
int main(){
int pesoMoneta;scanf("%d",&pesoMoneta);switch(pesoMoneta){
case 9: printf ("5 centesimi\n"); break;case 16: printf ("10 centesimi\n"); break;case 19: printf ("20 centesimi\n"); break;case 35: printf ("50 centesimi\n"); break;default: printf("Moneta non riconosciuta\n");
}
return 0;}
![Page 30: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/30.jpg)
Daniele Loiacono
Cicli
![Page 31: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/31.jpg)
Daniele Loiacono
Ripetere le istruzioni più volte…
q Supponiamo di voler trasformare 3 lettere maiuscole in minuscole:...printf("Inserire il carattere maiuscolo: ");scanf("%c", &c);if (c>=‘A' && c<=‘Z')
printf("La traduzione e' %c\n",c+32);printf("Inserire il carattere maiuscolo: ");scanf("%c", &c);if (c>=‘A' && c<=‘Z')
printf("La traduzione e' %c\n",c+32);printf("Inserire il carattere maiuscolo: ");scanf("%c", &c);if (c>=‘A' && c<=‘Z')
printf("La traduzione e' %c\n",c+32);...
È proprio necessario ripetere più volte lo stesso pezzo di codice?
![Page 32: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/32.jpg)
Daniele Loiacono
Il ciclo for
for (<iniz>;<term>;<agg>)
{
statement1;
…
statementN;
}
Corpo
del ciclo
![Page 33: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/33.jpg)
Daniele Loiacono
Il ciclo for
for (<iniz>;<term>;<agg>)
{
corpo
}<term>
corpo
<agg>
F
V
INIZIO
FINE
<iniz>
int cont;for (cont = 0; cont < N; cont ++){
…}
Esempio
![Page 34: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/34.jpg)
Daniele Loiacono
Il ciclo for: esempio
q Scrivere un programma per trasformare tre lettere maiuscole in minuscole
#include<stdio.h>
int main(){
char c;int cont;
for (cont = 0; cont < 3; cont ++){
printf("Inserire il carattere maiuscolo: ");scanf("%c", &c);if (c>='A' && c<='Z')
printf("La traduzione e' %c\n",c+32);}
return 0;}
![Page 35: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/35.jpg)
Daniele Loiacono
Il ciclo for: esempio (2)
#include<stdio.h>
int main(){
char c;int cont,N;printf("Quante lettere vuoi convertire? ");scanf("%d",&N);for (cont = 0; cont < N; cont ++){
printf("Inserire il carattere maiuscolo: ");scanf("%c", &c);if (c>='A' && c<='Z')
printf("La traduzione e' %c\n",c+32);else
cont--;}return 0;
}
Il ciclo for consente di eseguire un numero di iterazioni definito run-time!
![Page 36: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/36.jpg)
Daniele Loiacono
Il ciclo while
while (<condizione>)
{
corpo
} <condizione>
corpoF
V
INIZIO
FINE
int cont = 0;while (cont < N){
…cont ++;
}
Esempio
![Page 37: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/37.jpg)
Daniele Loiacono
Il ciclo while: esempio
#include<stdio.h>
int main(){
char c;
printf("Inserire una lettera maiuscola: ");scanf("%c", &c);
while (c>='A' && c<='Z'){
printf("La traduzione e' %c\n",c+32);printf("Inserire una lettera maiuscola: ");
scanf("%c", &c);
}return 0;
}
![Page 38: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/38.jpg)
Daniele Loiacono
Il ciclo do-while
do
{
corpo
} while (<condizione>);
<condizione>
corpo
F
V
INIZIO
FINE
int cont = 0;do {
…cont ++;
} while (cont < N);
Esempio
![Page 39: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/39.jpg)
Daniele Loiacono
Il ciclo do-while: esempio
#include<stdio.h>
int main(){
char c;
do{
printf("Inserire una lettera maiuscola: ");scanf("%c", &c);if (c>='A' && c<='Z')
printf("La traduzione e' %c\n",c+32);}while (c>='A' && c<='Z');
return 0;}
![Page 40: Fondamenti di Informatica - Politecnico di Milanohome.deib.polimi.it/loiacono/uploads/Teaching/... · Vero e falso in C qIn C non esiste un tipo di dato specifico per rappresentare](https://reader034.vdocuments.site/reader034/viewer/2022042403/5f174ed0d2918a30ee25aeb6/html5/thumbnails/40.jpg)
Daniele Loiacono
Istruzioni break e continue
q L’istruzione break all’interno di un ciclo lo interrompe immediatamente:for (i=0; i<10; i++) {
scanf("%d",&x);if (x < 0)
break;}
q L’istruzione continue passa direttamente all’iterazione seguentefor (i=0; i<10; i++) {
scanf("%d",&x);if (x < 0)
continue;}