4.2. Instructiunea expresie
2019/02/07 in Programare in C
Instructiunea expresie se obtine scriind punct si virgula dupa o expresie. Ea are formatul:
expresie;
In cazul in care expresia din compunerea unei instructiuni expresie este o expresie de atribuire, se spune ca instructiunea respectiva este o instructiune de atribuire.
Un alt caz utilizat frecvent este acela cand expresia este un operand ce reprezinta apelul unei functii. In acest caz, instructiunea expresie este o instructiune apel a functiei respective.
Exemple:
1.
int x;
...
x=10;
Este o instructiune de atribuire. Variabilei x i se atribuie valoarea 10.
2.
double y;
...
y = y + 4; /* sau y += 4; */
Este o instructiune de atribuire, care mareste cu 4 valoarea lui y.
3.
putch(c - 'a' + 'A')
Este o instructiune de apel a functiei putch.
4.
double a;
...
a++;
Este o instructiune expresie, care mareste valoarea lui a cu 1.
5.
double a;
...
++a;
Are acelasi efect ca si instructiunea expresie din exemplul precedent.
Observatie: Nu orice expresie urmata de punct si virgula formeaza o instructiune expresie efectiva. De exemplu, constructia:
a;
, desi este o instructiune expresie, ea nu are niciun efect.
Exercitii:
4.1. Sa se scrie un program care citeste trei intregi si afiseaza maximul dintre ei.
- Programul 054 - Maximul a trei intregi
#include <stdio.h>
main()
{
int a, b, c, d;
scanf("%d %d %d", &a, &b, &c);
d = a > b ? a : b; // d = max(a, b)
printf("a = %d\t b = %d\t c = %d\t max(a, b, c) = %d\n", a, b, c, d > c ? d : c );
}
4.2. Sa se scrie un program care citeste valorile variabilelor a, b, c, d, x de tip double si afiseaza valoarea expresiei (ax2 + bx + c)/(ax3 + bx + d) daca numitorul este diferit de zero si 0 in caz contrar.
- Programul 055 - Calcul valoare expresie impartire polinoame
#include <stdio.h>
main()
{
double a, b, c, d, x;
double y, z, u;
printf("a = ");
scanf("%lf", &a);
printf("b = ");
scanf("%lf", &b);
printf("c = ");
scanf("%lf", &c);
printf("d = ");
scanf("%lf", &d);
printf("x = ");
scanf("%lf", &x);
y = a*x*x;
z = b*x;
u = y*x + z + d;
printf("(a*x*x + b*x + c) / (a*x*x*x + b*x + d) = %g\n", u ? (y + z + c)/u : u );
}