5.2. Instrucţiunea vidă
Instrucţiunea vidă se reduce la caracterul “;”. Ea nu are nici un efect. Adesea este nevoie de ea la construcţii în care se cere prezenţa unei instrucţiuni, dar nu este necesar să se execute nimic în punctul respectiv.
5.3. Instrucţiunea expresie
Instrucţiunea expresie se obţine scriind punct şi virgulă după o expresie, deci:
expresie;
Există cazuri particulare ale instrucţiunii expresie:
-
expresia de atribuire, care de altfel este cel mai important caz particular al instrucţiunii expresie:
v = expresie;
-
apelul unei funcţii:
nume_funcţie (par1, par2, . . . parn);
-
incrementările şi decrementările pre şi post fixate:
variabilă++; ++variabilă;
variabilă- -; - - variabilă;
Exemplu:
void main (void)
{ int i;
float f;
double d;
i=10; // instructiune de atribuire
i++; // i se mareste cu 1
f=i; // instructiune de atribuire (valoarea lui i se converteste in float)
d=++f; // incrementare lui f si atribuirea valorii lui d
putchar(‘a’); // instructiune de apel
}
5.4. Instrucţiunea compusă
Instrucţiunea compusă este o succesiune de declaraţii urmate de instrucţiuni, succesiune inclusă între acolade:
{
declaraţii
instrucţiuni
}
Pot lipsi declaraţiile sau instrucţiunle dar nu în acelaşi timp. Dacă declaraţiile sunt prezente, atunci ele definesc variabile care sunt valabile numai în instrucţiunea compusă respectivă.
Exemplu:
. . .
{ int i=100; // variabila i este definita in aceasta instructiune compusa
i++; // i are valabilitate doar intre acolade; dupa acolada inchisa i isi
printf (“i=%d\n”,i); // pierde valabilitatea
}
Observaţii:
1o. După acolada inchisă a unei instrucţiuni compuse nu se pune ”;”.
2o. Corpul unei funcţii are aceeaşi structură ca şi instrucţiunea compusă, deci o funcţie are formatul:
antetul funcţiei
instrucţiune compusă
5.5. Instrucţiunea if
Instrucţiunea if permite să realizăm o ramificare a execuţiei în funcţie de valoarea unei expresii. Ea are două formate ce permit aplicarea structurii de alternativă simplă şi compusă.
Formatul 1:
if (expresie) instructiune;
Efectul:
-
se evaluează expresia din paranteze;
-
dacă valoarea expresiei este diferită de zero (deci conform convenţiei are valoarea adevărat), atunci se execută instructiune, altfel se trece la instrucţiunea următoare.
Formatul 2:
if (expresie) instructiune_1;
else instructiune_2;
Efectul:
-
se evaluează expresia din paranteze;
-
dacă valoarea expresiei este diferită de zero (deci conform convenţiei are valoarea adevărat), atunci se execută instructiune_1, altfel se execută instructiune_2; apoi în ambele cazuri se trece la instrucţiunea următoare.
Observaţii:
1o. Se pot folosi instrucţiuni if imbricate, nivelul de imbricare fiind oarecare (deci nu există o limitare a numărului de imbricări).
2o. Pentru mai multe imbricări se foloseşte regula asocierii if-lui cu else astfel:
un else se pune în corespondenţă cu primul if care se află înaintea lui în textul sursă şi nu este inclus în instrucţiunea care îl precede pe el şi nici nu îi corespunde deja un else.
Exemple
void main (void)
{ float x,y,a;
x=-5;
y=10;
if (x<0) // ultimul else se asociaza cu primul if iar
if (y<0) a=1; // penultimul else se asociaza cu cel de-al doilea if
else a=2;
else a=0;
}
void main (void)
{ float x,y,a;
x=-5;
y=10;
if (x<0) // ultimul else se asociaza cu primul if deoarece cel de-al
{ if (y<0) a=1; } // de-al doilea if este inclus in instructiunea compusa care
else a=0; // il precede pe else
}
void main (void) // citeste trei intregi si scrie minimul dintre ei
{int i,j,k,min;
scanf (“\ndati i=%d”, &i);
scanf (“\ndati j=%d”, &j);
scanf (“\ndati k=%d”, &k);
if (i>j) min=j;
else min=i;
if (k
printf (“min(%d,%d,%d)= %d\n”,i,j,k,,min);
}
5.6. Instrucţiunea while
Instrucţiunea while are următorul format:
while (expresie) instructiune;
Cu ajutorul instrucţiunii while se realizează structura repetitivă pretestată (condiţionată anterior).
Efectul:
se evaluează valoarea expresiei din paranteze;
dacă expresia are valoarea diferită de zero, atunci se execută instructiune şi se reia punctul 1), altfel se trece la instrucţiunea următoare instrucţiunii while.
Deci instructiune se execută repetat atâta timp cât expresia din paranteză este diferită de zero. Se observă că dacă expresia are valoarea zero de la început, atunci instructiune nu se execută niciodată.
Antetul ciclului while este construcţia while (expresie) iar instructiune formează corpul ciclului. În cazul în care este necesar să se execute repetat mai multe instrucţiuni, se utilizează o instrucţiune compusă formată din instrucţiunile respective.
Exemplu:
Vom crea un program care citeşte un întreg n şi scrie n!. Algoritmul în pseudocod:
Citeste n
f=1
i=2
CâtTimp i<=n execută
f=f*i;
i=i+1
SfârşitCâtTimp
Scrie n,f
Programul în C este:
#include
void main (void)
{ int n,i;
double f;
f=1.0;
i=2;
printf(“\n dati n= “);
scanf(“%d”,&n);
while (i<=n)
{ f=f*i;
i++;
}
printf(“\nn=%d, iar n!=%g\n”,n,f);
}
Corpul ciclului while se poate scrie mai compact astfel:
while (i<=n) f*=i++;
Dostları ilə paylaş: |