70 Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
C - Strutture di controllo
while (<condizione>) {
<istruzioni>;
} Cicli iterativi
<Istruzione/i> sarà eseguito tante volte fintantoché <condizione> risulta vera
N.B. < condizione> è un’espressione di tipo intero (in C non esiste il tipo logico) ed essa è verificata se ha un valore diverso da zero
a condizione iniziale while (<condizione>)
<istruzione>;
71 Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
#include <stdio.h>
main () {
int Num;
printf( "immetti un numero \n”);
scanf(“%d” , &Num);
while (Num<=100) Num=Num+10;
printf ( ”Numero= %d \n”, Num);
}
Esempio Ciclo while
72 Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
C - Strutture di controllo
do {
<istruzioni>;
}
while <condizione>;
Cicli iterativi
<Istruzione/i> sarà eseguito tante volte fintantoché <condizione> risulta vera
N.B. < condizione> è un’espressione di tipo intero (in C non esiste il tipo logico) ed essa è verificata se ha un valore diverso da zero
a condizione finale do
<istruzione>;
while <condizione>;
73 Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
#include <stdio.h>
main () {
int Num;
printf( "immetti un numero \n”);
scanf(“%d” , &Num);
do
Num=Num+10;
while (Num <=100);
printf ( ”Numero= %d \n”, Num);
}
Esempio Ciclo do … while
74 Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
C - Strutture di controllo
Ciclo ripetitivo (a conteggio)
for (<espressione1>; <condizione>; <espressione2>) <istruzione>;
for (<espressione1>; <condizione>; <espressione2>) {
<istruzioni>;
}
<espressione1>: è l’espressione usata per inizializzare la variabile di controllo del ciclo
<condizione>: è l’espressione logica per verificare la terminazione del ciclo
<espressione2>: è l’espressione usata per determinare il passo di incremento della variabile di controllo
Es:
for (i=1; i<100; i++) printf(“%d “, i);
75 Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio
#include <stdio.h>
main () {
int Num;
printf( "immetti un numero \n”);
scanf(“%d” , &Num);
for (i=1;i<=10;i++)
printf ( “%d \n”, Num*i);
}
Esempio Ciclo for
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 76
Operatore di cast in C
C permette di forzare una variabile di un tipo a ‘comportarsi’ come una variabile di un altro tipo usando l'operatore di cast.
Il costrutto cast ha la seguente sintassi:
(<nome tipo da forzare>) <espressione>
Es. : int X=10; (float) X ==> 10.00 Es.
int numero_intero = 7;float num_reale;
num_reale = (float) numero_intero/2;
fa ‘vedere’ la variabile numero_intero come se fosse di tipo float
num_reale = 3.5000 Senza il cast:
num_reale = 3.0000
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 77
Operatore di cast in C
Esempio:
#include<stdio.h>
main ( )
/* programma esempio CAST */
{ int numero_intero = 7;
float num_reale;
printf("numero con formato decimale = %d\n", numero_intero);
printf("\nnumero intero con formato float = %f\n\n", numero_intero);
printf("numero intero con cast float = %f\n", (float) numero_intero );
num_reale = numero_intero/2;
printf("\n Risultato divisione senza cast : numero reale = %f \n", num_reale);
num_reale = (float) numero_intero/2;
printf("\n Risultato divisione applicando il cast : numero reale = %f \n", num_reale);
system("Pause");
}
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 78
Operatore di cast in C
il numero è un intero, ma formato è float … Stampato come float, riportati i decimali dopo la virgola
… divisione tra numeri interi, parte decimale troncata …
… il cast fa ‘vedere’ il numero come se fosse un float …
… come se fosse divisione tra float …
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 79
Operatore di cast in C
Alcune operazioni di cast di tipo sono fatte automaticamente, principalmente in relazione alle capacità dei numeri interi, ad esempio assegnando un valore float ad una variabile di tipo int (è automaticamente troncata la parte decimale)
E' opportuno eseguire esplicitamente operazioni di cast tutte le volte che si ha un dubbio sulla corrispondenza tra i tipi in operazioni di calcolo ed assegnazione.
E’ il caso delle divisioni: se abbiamo la divisione tra due numeri interi e vogliamo che il risultato sia un numero reale, allora deve essere eseguito il cast sui due numeri interi.
Esempio:
int dividendo= 13, divisore = 4;
float risultato;
risultato = (float) dividendo / (float) divisore;
… sarà: risultato = 3.25
… e NON risultato = 3.0 come risulterebbe dalla divisione intera:
risultato = dividendo / divisore;