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.

#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.

#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 );
}

4.3. Instructiunea compusa