Scopo di questa sessione è di far pratica con le dichiarazioni di tipo, l' uso degli operatori, le regole dell' aritmetica per i vari tipi dati, le conversioni implicite e semplici costrutti for e if e if-else .
#include <stdio.h>
int main(void)
{
float fa,fb,fc,fd,fe,ff,fg,fh,fi;
double fl;
int ip,iq,ir,is,iu,iw,iz;
fa=2.0;
fi=2.777777777777777;
fl=2.777777777777777;
fb=1;
fc=3.9;
ip=2;
iq=3;
iz=fc;
fd = fa/fb + fc;
fe=fb/fc + fa;
ff=ip/iq;
fg=ip/iq*iq/ip;
ir=fa/fc*fc/fa;
iu=(fa/fc)*(fc/fa);
is=(ip/iq)*(iq/ip);
iw=fc*(1/2);
fh= (fa*fc < ip*iq);
printf("fa=2.0; fa e' float , il risultato e' %f \n",fa);
printf("fb=1; fb e' float , il risultato e' %f \n",fb);
printf("fc=3.9; fc e' float , il risultato e' %f \n",fc);
printf("fi=2.777777777777777; fi e' float , il risultato e' %f \n",fi);
printf("fl=2.777777777777777; fl e' double , il risultato e' %.15lf \n",fl);
printf("ip=2; ip e' int , il risultato e' %d \n",ip);
printf("iq=3; iq e' int , il risultato e' %d \n",iq);
printf("iz=fc; iz e' int , fc e' float, il risultato e' %d \n",iz);
printf("fd=fa/fb+fc; fd e' float , il risultato e' %f \n",fd);
printf("fe=fb/fc+fa; fe e' float , il risultato e' %f \n",fe);
printf("ff=ip/iq; ff e' float , il risultato e' %f \n",ff);
printf("fg=ip/iq*iq/ip; fg e' float , il risultato e' %f \n",fg);
printf("ir=fa/fc*fc/fa; ir e' int , il risultato e' %d \n",ir);
printf("iu=(fa/fc)*(fc/fa); iu e' int , il risultato e' %d \n",iu);
printf("is=(ip/iq)*(iq/ip);is e' int , il risultato e' %d \n",is);
printf("iw=fc*(1/2); iw e' int , il risultato e' %d \n",iw);
printf("fh= (fa*fc < ip*iq); fh e' float , il risultato e' %f \n",fh);
printf(" sizeof(int) = %d \n",sizeof(int));
printf(" sizeof(1) = %d \n",sizeof(1));
printf(" sizeof(char) = %d \n",sizeof(char));
printf(" sizeof('1') = %d \n",sizeof('1'));
printf(" sizeof(double) = %d \n",sizeof(double));
printf(" sizeof(float) = %d \n",sizeof(float));
printf(" sizeof(1.2) = %d \n",sizeof(1.2));
printf(" sizeof(fl-fi) = %d \n",sizeof(fl-fi));
if( (fl-fi) != 0 )
printf(" fl-fi = %f \n",fl-fi);
return 0;
}
int somma=0, i;
for(i=0;i<=10;i=i+1);
somma = somma + i;
i += 1 (al posto di i = i + 1)la stessa sintassi puo' essere usata con tutti gli altri operatori aritmetici. Inoltre, per il caso particolare di incrementi o decrementi unitari ci sono due operatori unari (++ e --) utilizzabili prima (forma prefissa) o dopo (forma suffissa) del nome della variabile:
somma += i (al posto di somma = somma + i)
i += 1 equivale a ++i o i++
#include <stdio.h>E se l' istruzione fosse: printf(" %d %d %d, %d, \n", i++, ++j , i++, j++); ?
int main(void)
{
int i=0,j=0;
printf(" %d %d \n", i++, ++j );
return 0;
}
Quanto vale x alla fine di ciascuno dei seguenti tre costrutti ?
1) if ( x >= 10 )
x = x + 6;
if ( x >= 16 )
x = x % 16;
2)
if ( x <= 10 )
x = x - 5;
if ( x <= 5 )
x = x - 5;
3)
if ( x >= 10 )
x = 10 + x % 10;
if ( x > 20 )
x = x / 16;
Verificare le previsioni compilando ed eseguendo un programma
che
implementi i 3 costrutti e scriva il valore di x (variabile intera) per
un
numero adeguato di valori di x. Verificare poi se non sia possibile
semplificare
il confronto usando un unica condizione per ciascuno dei tre.
#include <stdio.h>Un semplice modo per comprendere quello che succede nel ciclo for è di inserire nel corpo del for un' istruzione printf per farsi scrivere i valori delle variabili rilevanti ad ogni iterazione. Attenzione a mettere le parentesi graffe per raggruppare le istruzioni che vanno iterate.
int main(void)
{
int i=1;
int total = 0;
for (i=1; i < 50; i++)
total += i;
printf("%d \n",total);
return 0;
}
Cosa scrive il seguente frammento di programma se x=10 ? (verificare)
if (x > 12)
printf(" x e' maggiore di 12 \n");
else
printf(" x non e' maggiore di 12 \n");
Cosa scrive il seguente frammento di programma se x=10 e y=25 ? (verificare)
if (x > 12)
if(y > 20)
printf(" A \n");
else
printf(" B \n");