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 ed esplicite e semplici costrutti for e if / if-else .
#include <stdio.h>
int main()
{
float a,b,c,d,e,f,g,h,i;
int p,q,r,s,u,w,z;
a=2.0;
b=1;
c=3.9;
p=2;
q=3;
z=c;
d=a/b+c;
e=b/c+a;
f=p/q;
g=p/q*q/p;
r=a/c*c/a;
u=(a/c)*(c/a);
s=(p/q)*(q/p);
w=c*(1/2);
h= (a*c < p*q);
printf("a=2.0; a e' float , il risultato e' %f \n",a);
printf("b=1; b e' float , il risultato e' %f \n",b);
printf("c=3.9; c e' float , il risultato e' %f \n",c);
printf("p=2; p e' int , il risultato e' %d \n",p);
printf("q=3; q e' int , il risultato e' %d \n",q);
printf("z=c; z e' int , c e' float, il risultato e' %d \n",z);
printf("d=a/b+c; d e' float , il risultato e' %f \n",d);
printf("e=b/c+a; e e' float , il risultato e' %f \n",e);
printf("f=p/q; f e' float , il risultato e' %f \n",f);
printf("g=p/q*q/p; g e' float , il risultato e' %f \n",g);
printf("r=a/c*c/a; r e' int , il risultato e' %d \n",r);
printf("u=(a/c)*(c/a); u e' int , il risultato e' %d \n",u);
printf("s=(p/q)*(q/p);s e' int , il risultato e' %d \n",s);
printf("w=c*(1/2); w e' int , il risultato e' %d \n",w);
printf("h= (a*c < p*q); h e' float , il risultato e' %f \n",h);
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++
#includeE se l' istruzione fosse: printf(" %d %d %d, %d, \n", i++, ++j , i++, j++); ?
int main()
{
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.
Cosa scrive il seguente frammento di programma se x=10 e y=25 ? (verificare)
if (x > 12)
if(y > 20)
printf(" Hello \n");
else
printf(" Hi! \n");
#include <stdio.h>
#define MAX 50
int main()
{
int i=1;
int total = 0;
for (i=1; i < MAX; i++)
total += i;
printf("%d \n",total);
return 0;
}
Se si include, oltre a stdio.h anche il file math.h e si
compila con l' opzione -lm di gcc ( gcc -ansi -pedantic -lm -o
nomefile.x nomefile.c) si può utilizzare la funzione di libreria
sqrt(x) per calcolare la radice quadrata di x.