45 Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
C - Strutture di controllo
Sequenza o blocco
{
<istruzioni>
}
{ printf("Immetti un numero intero: ");
scanf("%d", &i);
a = i * 4 + b - c;
printf("%d", a);
} Esempio:
C - Strutture di controllo
Selezione
if (<condizione>)
<istruzione>;
se <condizione> è vera è eseguita <istruzione>
dove <istruzione> è formata da 1 sola istruzione altra forma:
if (<condizione>) {
<istruzioni>;
}
se <condizione> è vera sono eseguite le <istruzioni>
dove <istruzioni> è più di 1 istruzione
47 Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
………
if (i<100) {
a = b - i;
printf(”%f”, a);
} ………
C - Strutture di controllo
Esempi : Selezione
………
if (a>100)
printf(”%f”, a);
………
#include<stdio.h>
main ( )
/* questo programma calcola l’area di un rettangolo */
{
float base, altezza, area;
printf ("immetti base \n");
scanf ("%f" , &base);
printf("immetti altezza \n");
scanf("%f" , &altezza);
if ((base > 0) && (altezza > 0)) { area = base * altezza;
printf("Area= %f \n", area);
} }
Un semplice programma esempio
49 Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
#include<stdio.h>
main ( )
/* questo programma calcola l’area di un rettangolo */
{
float base, altezza, area;
printf ("immetti base \n");
scanf ("%f" , &base);
printf("immetti altezza \n");
scanf("%f" , &altezza);
if ((base > 0) && (altezza > 0)) { area = base * altezza;
printf("Area= %f \n", area);
}
if ((base <= 0) || (altezza <= 0))
printf("Errore: base e/o altezza non maggiori di zero \n");
}
Un semplice programma esempio
Programma esempio in C
#include<stdio.h>
main ( )
{ // calcola il volume di un parallelepipedo float LBase, ABase, H, Area_Base, Volume;
printf ("immetti valore della lunghezza di base \n");
scanf ("%f" , &LBase);
printf("immetti valore altezza di base \n");
scanf("%f" , &ABase);
printf("immetti valore altezza parallelepipedo\n");
scanf("%f" , &H);
Area_Base = LBase* ABase;
Volume=Area_Base*H;
printf ("Volume= %f \n",Volume);
... Modificare il programma C del calcolo del volume del parallelepipedo
per verificare il rispetto delle precondizioni ...
51 Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
#include<stdio.h>
main ( )
{ // programma per il calcolo del volume di un parallelepipedo float LBase, ABase, H, Area_Base, Volume;
printf ("immetti valore della lunghezza di base \n");
scanf ("%f" , &LBase);
printf("immetti valore altezza di base \n");
scanf("%f" , &ABase);
printf("immetti valore altezza parallelepipedo\n");
scanf("%f" , &H);
if ((LBase>0)&&(ABase>0)&&(H>0)) {Area_Base = LBase* ABase;
Volume=Area_Base*H;
printf ("Volume = %f \n",Volume);
}
if ((LBase<=0)||(ABase<=0)||(H<=0))
printf("\nErrore:almeno una dimensione non maggiore di zero\n");
}
Programma esempio in C
... il programma C del calcolo del volume del parallelepipedo modificato per verificare il rispetto delle precondizioni ...
C - Strutture di controllo
Selezione
if (<condizione>)
<istruzione1>;
else
<istruzione2>;
se <condizione> è vera è eseguita <istruzione1> (è 1 sola istruzione) altrimenti, se <condizione> è falsa, è eseguita <istruzione2> (è 1 sola istruzione)
53 Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
C - Strutture di controllo
Selezione altra forma:
if (<condizione>) {
<istruzioni1>;
} else {
<istruzioni2>;
}
se <condizione> è vera sono eseguite le <istruzioni1>
altrimenti se, <condizione> è falsa, sono eseguite le <istruzioni2>
dove <istruzioni1> e <istruzioni1> sono formate da più di 1 istruzione
C - Strutture di controllo
Esempio : Selezione
………
if (numero > 1000) {
a = b * numero;
printf(”%f”, a);
} else
c = b - numero;
………
55 Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
Program area_rettangolo;
// questo programma calcola l’area di un //
// rettangolo
FLOAT base, altezza, area;
begin
write (“immetti base”);
read (“%f” base);
write (“immetti altezza “);
read (“%f” altezza);
if ((base > 0) and (altezza > 0)) then begin
area = base * altezza;
write (“Area= “, “%f” area);
end else
write (“Errore: base o altezza = <0”);
endif end.
#include<stdio.h>
main ( )
/* questo programma calcola l’area di un rettangolo */
{
float base, altezza, area;
printf (“immetti base \n”);
scanf (“%f” , &base);
printf(“immetti altezza \n“);
scanf(“%f” , &altezza);
if ((base > 0) && (altezza > 0)) {
area = base * altezza;
printf(“Area= %f \n”, area);
} else
printf(“Errore: base o altezza = <0 \n”);
}
Un semplice programma esempio
LDP C
#include<stdio.h>
main ( )
/* questo programma calcola l’area di un rettangolo */
{
float base, altezza, area;
printf (“immetti base \n”);
scanf (“%f” , &base);
printf(“immetti altezza \n“);
scanf(“%f” , &altezza);
if ((base > 0) && (altezza > 0)) {
area = base * altezza;
printf(“Area= %f \n”, area);
} else
printf(“Errore: base o altezza = <0 \n”);
}
Un semplice programma esempio
57 Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
#include<stdio.h>
main ( )
/* questo programma calcola l’area di un rettangolo */
{
float base, altezza, area;
printf (“immetti base \n”);
scanf (“%f” , &base);
printf(“immetti altezza \n“);
scanf(“%f” , &altezza);
if ((base > 0) && (altezza > 0)) {
area = base * altezza;
printf(“Area= %f \n”, area);
} else
printf(“Errore: base e/o altezza = <0 \n”);
}
… if ( ) … … if ( ) … else …
#include<stdio.h>
main ( )
/* questo programma calcola l’area di un rettangolo */
{
float base, altezza, area;
printf ("immetti base \n");
scanf ("%f" , &base);
printf("immetti altezza \n");
scanf("%f" , &altezza);
if ((base > 0) && (altezza > 0)) {
area = base * altezza;
printf("Area= %f \n", area);
}
if ((base <= 0)||(altezza <= 0)) printf("Errore: base e/o altezza =<0 \n");
}
… confronto tra le due versioni …
59 Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
Selezione a più vie in C Struttura switch in C:
switch (<espressione>) {
case c1:
S1;
break;
case c2:
S2;
break;
…
case cN:
Sn;
break;
[ default: Sdefault; break;
] }
semantica
Valuta valore <espressione>
caso valore c1 esegui S1; esci dalla struttura switch (break);
caso valore c2 esegui S2; esci dalla struttura switch (break);
…
caso valore cN esegui Sn; esci dalla struttura switch (break);
[caso valore diverso da c1 ,..., cN )
esegui Sdefault; esci dalla struttura switch (break);
] …. (è opzionale)
N.B. :break provoca l’uscita immediata dalla struttura switch
#include<stdio.h>
main ( )
/* questo programma stampa da 1 a 3 stelle o un ! */
{ ...
scanf("%d", &num);
switch (num) {
case 1: {printf("*\n"); break;}
case 2: {printf("**\n"); break;}
case 3: {printf("***\n"); break;}
default: {printf("!\n"); break;}
}
Esempio: stampa da 1, 2, o 3 stelle in base al numero (compreso tra 1 e 3) immesso , altrimenti stampa un ‘!’
Selezione a più vie in C
Struttura switch in C:
61 Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
#include<stdio.h>
main ( )
/* questo programma stampa da 1 a 3 stelle o un ! */
{ ...
scanf("%d", &num);
if(num==1) printf("*\n");
else
if(num==2) printf("**\n");
else
if(num==3) printf("***\n");
else
printf("!\n");
}
Esempio: stampa da 1, 2, o 3 stelle in base al numero (compreso tra 1 e 3) immesso , altrimenti stampa un ‘!’
Selezione a più vie in C
La struttura switch può essere sostituita con una serie di strutture if else if
#include<stdio.h>
main ( )
/* questo programma stampa da 1 a 3 stelle o un ! */
{ ...
scanf("%d", &num);
if(num==1) printf("*\n");
else
if(num==2)
printf("**\n");
else
if(num==3)
printf("***\n");
else
printf("!\n");
}
Selezione a più vie in C
#include<stdio.h>
main ( )
/* questo programma stampa da 1 a 3 stelle o un ! */
{ ...
scanf("%d", &num);
switch (num) {
case 1:{printf("*\n");
break;}
case 2: {printf("**\n");
break;}
case 3: {printf("***\n");
break;}
default: {printf("!\n");
break;}
63 Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
Esercizio:
Scrivere un programma che letto un carattere in ingresso stampa un messaggio indicante se il carattere immesso è una lettera minuscola o maiuscola
… LPD …
// stampa se il carattere immesso è una cifra o una lettera minuscola o maiuscola
…..
char c;
read(“%c”, c);
switch ( c ) begin
case '0' : case '1' : case ’2' : case ’3' : case ’4' : case ’5' : case ’6' : case ’7' : case ’8' : case '9' : write( ‘Cifra ‘); break;
case 'a' : ...… : case 'z' : write( ‘ Lettera minuscola ‘); break;
case 'A' : ...… :case 'Z' : write( ‘ Lettera maiuscola ‘ ); break;
default : write( ‘ Altro Carattere ‘);
end
Selezione: switch
Program cifra_Lettera;
// stampa se il carattere immesso è una cifra o una lettera minuscola o maiuscola
char c;
begin read(“%c”, c);
if ((c >= ‘0’) and (c <= ‘9’)) then
write ( ‘Cifra’);
else
if ((c >= ‘a’) and (c <= ‘z’)) then
write( ‘ Lettera minuscola‘);
else
if (c >= ‘A’ and c <= ‘Z’) then
write( ‘ Lettera maiuscola ‘ );
else
write( ‘ Altro Carattere\n ‘);
endif endif endif
Soluzione con if then else if LPD
La struttura switch può essere
sostituita con una serie di
strutture if else if
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 65
#include <stdio.h>
main()
{// stampa se il carattere immesso è una cifra o una lettera minuscola o maiuscola char c;
scanf(“%c”, &c);
if ((c >= ‘0’) && (c <= ‘9’)) printf( "Cifra \n”);
else
if ((c >= ‘a’) && (c <= ‘z’))
printf( ‘ Lettera minuscola\n ‘);
else
if (c >= ‘A’ && c <= ‘Z’)
printf( ‘ Lettera maiuscola \n‘ );
else
printf( ‘ Altro Carattere\n ‘);
}
Soluzione con if else if in C
#include <stdio.h>
main() {
// stampa se il carattere immesso è una cifra o una lettera minuscola o maiuscola char c;
scanf(“%c”, c);
if ((c >= ‘0’) && (c <= ‘9’)) printf( ‘Cifra\n ‘);
else if ((c >= ‘a’) && (c <= ‘z’))
{ printf( ‘ Lettera minuscola\n ‘);
}
else if (c >= ‘A’ && c <= ‘Z’)
{ printf( ‘ Lettera maiuscola\n ‘ );
}
else printf( ‘ Altro Carattere\n ‘);
}
Soluzione con if else if
H
Lettera maiuscola
Schermo del video l’utente digita H
c = H
FALSO
FALSO
Vero