Operatori logici
>» Fie expresia relationala "a < b". Daca valoarea lui a este
mai mica decat valoarea lui b, atunci expresia va avea
valoarea 1, pe care 0 gandim ca fiind “adevarata’("true’).
Daca valoarea lui a este mai mare decat valoarea lui b,
atunci expresia va avea valoarea 0, pe care o gandim ca
Sind “falsa” ("faise’).
» Folosind precedenta operatorilor aritme' "a » Se mai spune cA operatorii && gi || sunt lazy (lenesi).if, if-else
> Instructiunea "if-else" este foarte apropiata de instructiunea "if"
Forma sa general:
if (expresie)
instructiunel
else
instructiune2
ff Ge =< y)
else
min = yi
printf£("Valoarea minima = %f\n", mindz
while
>» while, for gi do suntcele trei instructiuni repetitive
din limbajul C.
while (expresie)
instructiune
instructiunea_urmatoare
» Intai se evalueazd expresice. Corpul buclei se executa atata
vreme cat expres ie se evalueaza la "true". Terminarea buclei
are loc cand expresie ia valoarea zero (adica "false"). In acest
punct, controlul se paseaza catre
instructiunea_urmatoare.
while (i <= 10)
eis
5
while()
» Exemplu: adunarea numerelor intregi de la 1 la 10.
#include
main()
{
while (i<=10)
‘
suma = suma + i;
eaitay
}
printf ("Suma primelor 10 numere intregi este $d\n",suma);
,for
» Casi while, instructiunea for se foloseste pentru
descrierea structurilor iterative (repetitive).
for (expresiel; expresie2; expresie3)
instructiune
instructiunea_urmatoare
este semantic echivalenta (ca inteles si ca rezultat) cu
expresiel;
while (expresie2)
{
instructiune;
expresie3;
}
instructiunea_urmatoare;
for
» Se va evalua expresiel (de obicei, aceasta se foloseste pentru
initializarea buctei). Apoi, se evalueazi expresie2. Daci
aceasta este "true" atunci se executd instruct iune, se
evalueaz4 expresie3, si controlul se transmite la
fnceputul buclei (unde NU se mai evalueaza iar expres iei). Acest
proces continua pana cand expresie2 este 0 (false), punct in
care se transmite controlul cdtre
instructiunea_urmatoare.
factorial=l;
for (i = 1; i <= ne its)
factorial *-for
» Oricare dintre expresiile unei instructiuni for pot lipsi (por
lipsi toate!!. Nu pot lipsi cele doua semne “;”.
i z
suma = 0;
for (
i <= 10; i++)
» Echivalent:
suma
for (47 i <= 10; )
suma += itt;
» Daca lipseste expresie2, atunci obtinem o bucla infinita.
for
» Operatorul "," are cea mai mica prioritate dintre toti
operatorii din C. Intr-o expresie de forma
expresiel , expre
se evalueazd expresiel, apoi expresie2. Expresia
intoarce valoarea si tipul operandului din dreapta.
>» De exemplu dac& a si b sunt intregi, atunci
os 0 b= 2
intoarce valoarea 1 de tipul int.
» Operatorul "," este deseori folosit in for.
for (factorial
factorial
ns itt)
for
» Revenim asupra unui exemplu precedent (suma primelor N
numere naturale)
for (suma = 0, i = 1; i <= nz ++i)
suma
> se poate scrie, echivalent, in
for (suma = 0, i = 1; i <= n; suma += i,do
» do poate fi considerata o varianta a instructiunii while.
Deosebirea consta in faptul cé pentru while testul se face
la inceputul ciclului, iar pentru do la sfarsit.
ao
instructiune
while (expresie);
uctiun rmatoare
dot
scanf("%a", si);
}while (i > 0);
goto
» goto (salt neconditionat) este considerata opusa
programiarii structurate. Sfatul general valabil este
evitarea acestei instructiuni. 0 instructiune de etichetare
are forma:
eticheta : instructiune
unde eticheta este un identificator.
bye: exit(1);
etichetal: a= b+ c;break si continue
> break si continue intrerup controlul normal al
programelor. break va cauza iesirea din bucla in care se
afla sau din switch.
continue poate aparea numai in for, while sau do. Are
rolul de a trasmite controlul la sfarsitul buclei.
while (1)
{
scanf("$1f£", &x);
if (x < 0.0)
break;
print£("$1£\n", sqrt (x));
d
while(conter < n)
{
scant ("$1f",
Af (x<0)
continue;
8x) 7
+tcontor;
suma +
}