Sunteți pe pagina 1din 4

CURS NR.

Instrucţiuni (1)
INSTRUCŢIUNI SECVENŢIALE. INSTRUCŢIUNI DE DECIZIE
6.1. Introducere
Instrucţiunile unui program controlează execuţia acestuia. În general, ordinea de execuţie a
instrucţiunilor este cea secvenţială. Unele instrucţiuni se execută în mod repetat iar altele alternativ.
Pe lângă cele trei posibilităţi de execuţie a instrucţiunilor (secvenţială, repetitivă şi alternativă) mai
este permisă şi instrucţiunea selectivă.
O instrucţiune poate fi compusă din: cuvinte cheie, expresii şi apeluri de funcţii.
Instrucţiunile pot fi grupate în:
- instrucţiuni simple;
- instrucţiuni compuse (bloc);
- instrucţiuni de ciclare (bucle);
- instrucţiuni de decizie (alternative);
- instrucţiuni de întrerupere şi salt.

6.2. Instrucţiuni simple


6.2.1. Instrucţiunea expresie: este cea mai utilizată în cadrul programelor, Cosntă dintr-o
expresie urmată de caracterul ;. Forma generală este:
expresie;
unde expresie poate fi:
- o expresie de atribuire (situaţie în care instrucţiunea se numeşte instrucţiune de atribuire);
- un apel de funcţie (situaţie în care instrucţiunea se numeşte instrucţiune de apel de funcţie);
Exemple:
y = 3 * x * x – 4 * x + 5; // instrucţiune de atribuire
getch(); // instrucţiune de apel de funcţie
6.2.2. Instrucţiunea vidă: este formată doar din caracterul ; , nu are nici un efect şi se
utilizează acolo unde sintaxa limbajului solicită utilizarea unei instrucţiuni dar nu este necesară
efectuarea unei acţiuni.

6.3. Instrucţiunea compusă (blocul)


Constă dintr-o succesiune de instrucţiuni şi declaraţii cuprinse între acolade. Are forma
generală:
{ declaraţii;
Instrucţiuni;
}
În interiorul unei instrucţiuni compuse pot fi utilizate alte instrucţiuni compuse, numărul
maxim al instrucţiunilor fiind de 15.

6.4. Instrucţiuni de decizie


Sunt utilizate atunci când executarea unor instrucţiuni depinde de îndeplinirea unei condiţii.
Limbajul C are trei instrucţiuni decizionale: if, if … else şi switch.

1
6.4.1. Instrucţiunea if:
Are forma generală:
if (expresie)
instrucţiune;
unde: expresie reprezintă de cele mai multe ori o expresie logică, iar instrucţiune poate fi o
instrucţiune expresie sau o instrucţiune compusă.
Mod de lucru:
- se evaluează expresie;
- dacă are valoare diferită de zero (adevărată) se execută instrucţiune, iar dacă are valoare
nulă (falsă) nu se execută instrucţiune.
Exemplu: Suma elementelor pare dintr-un şir de numere.

if( a[i]%2 == 0 )
S+=a[i];
...

6.4.2. Instrucţiunea if … else:


Are următoarea formă generală:
if (expresie)
instrucţiune_1;
else
instrucţiune_2;
unde: expresie reprezintă de cele mai multe ori o expresie logică, iar instrucţiune_1 şi
instrucţiune_2 pot fi instrucţiuni expresie sau compuse.
Mod de lucru:
- se evaluează expresie;
- dacă are valoare diferită de zero (adevărată) se execută instrucţiune_1, iar dacă are
valoare nulă (falsă) se execută instrucţiune_2.
După executarea uneia din cele două variante se trece la următoarea instrucţiune din
program.
Observaţie: Limbajul C nu operează cu tipul boolean, valorile de adevăr fiind codificate
numeric, după următoarea regulă: o valoare nulă este echivalentă cu fals iar o valoare ne-nulă cu
adevărat.
Exemple:

⎧ x daca x >= 0
Explicitarea modulului: mx = ⎨
⎩− x daca x < 0

if( x >= 0 )
mx = x;
else
mx=-x;

⎧ x 2 + 3x − 4 daca x >= 2
Calculul valorii funcţiei: y = ⎨
⎩x − 7 daca x < 2
2

if( x >= 2 )
y = x * x + 3 * x - 4;
else
y = x - 7;

Observaţie: În cazul în care alternativele de prelucrare se codifică prin secvenţe de
instrucţiuni, acestea trebuie grupate în instrucţiuni compuse.
Exemplu:
Calculul sumei şi a numărului de elemente pozitive dintr-un şir:

if( a[i] > 0 ) { s += a[i]; np++; }

În situaţia în care, dacă din greşeală, instrucţiunea s-ar fi scris în modul următor:

if( a[i] > 0 ) s += a[i]; np++;

incrementarea valorii np se realizează în afara instrucţiunii decizionale adică se efectuează în orice
situaţie.
Deoarece alternativa else a unei instrucţiuni decizionale este opţională, poate să apară o
ambiguitate legată de asocierea acesteia în cazul unor instrucţiuni de decizie imbricate.
Exemplu:

⎧ x 2 + 3x − 4 daca x >= 2
Calculul valorii funcţiei: y = ⎨ pentru valori pare ale lui x;
⎩x − 7 daca x < 2
...
if ( x % 2 == 0 )
if ( x >= 2 )
y = x * x + 3 * x - 4;
else
y = x - 7;
...
În aceste situaţii, regula este următoarea: alternativa else se asociază ultimei decizii
incomplete. Dacă se doreşte o altă asociere se pot folosi acoladele:
...
if ( x % 2 == 0 )
{ if ( x >= 2 )
y = x * x + 3 * x - 4; }
else
y = x - 7;
...
Observaţie: Această variantă nu este cea corectă, corespunzătoare rezolvării problemei, este doar
un exemplu!!!

sau se poate completa alternativa else a instrucţiunii decizionale interioare cu o instrucţiune vidă:
...
if ( x % 2 == 0 ) if ( x >= 2 ) y = x * x + 3 * x - 4; else y = x - 7;
else ;
...

3
6.5. Instrucţiunea de decizie multiplă
O selecţie multiplă se poate realiza cu mai multe instrucţiuni decizionale în cascadă. În cazul
general în care există „n” alternative posibile selectate pe baza a „n-1” condiţii, se recomandă
folosirea acestei structuri. Forma generală este:
...
if( expr_1 )
instructiune_1
else if( expr_2 )
instructiune_2
...
else if( expr_n-1 )
instructiune_n-1
else
instructiune_n
...
Expresiile se evaluează în ordinea în care sunt scrise. Dacă se întâlneşte o expresie
adevărată, atunci se execută instrucţiunea care-i este asociată şi astfel se încheie întregul lanţ.
Instrucţiunea de după ultimul else se execută doar când nici una dintre expresii nu a fost adevărată.
Exemplu:
⎧ x3 − 4 x 2 + 5 x − 9 x>3
⎪ 2
Calculul valorii funcţiei: y = ⎨ x + 8 x − 17 −3≤ x ≤3
⎪ x − 25 x < −3

...
if ( x > 3 )
y = x*x*x-4*x*x+5*x-9;
else if ( x >= -3 )
y = x*x+8*x-17;
else
y = x -25;
...
Program exemplu nr. 1:
⎧ x3 − 4 x 2 + 5 x − 9 x>3

Calculul valorilor funcţiei y = ⎨ x 2 + 8 x − 17 − 3 ≤ x ≤ 3 pentru un x introdus de utilizator de
⎪ x − 25 x < −3

la tastatură.
#include <stdio.h>
#include <conio.h>
void main( void )
{ float x, y; clrscr();
printf(“\n Introduceti o valoare pentru x:”); scanf (“%f”,&x);
if ( x > 3 ) y = x * x * x – 4 * x * x + 5 * x - 9;
else if ( x >= -3 ) y = x * x + 8 * x – 17;
else y = x - 25;
printf(“\n x = %7.3f \t y = %7.3f”,x,y);
getch();
}

S-ar putea să vă placă și