Sunteți pe pagina 1din 6

PROGRAMAREA CALCULATOARELOR ____________________________________________ Laborator Nr.

Pentru nici una din problemele care se vor rezolva la disciplina Programarea Calculatoarelor
NU SE FOLOSESC VARIABILE GLOBALE

LABORATOR NR. 3
Elemente de bază ale limbajului C. Instrucțiuni de decizie.

1. Valori logice în limbajul C


În limbajul C valoarea numerică egală cu 0 se consideră a fi valoarea logică Fals, iar orice valoare
numerică diferită de 0 (zero) se consideră a fi valoarea logică Adevărat.
Dacă se evaluează o expresie logică și rezultatul este Fals, acest lucru este echivalent cu un rezultat a
cărei valoare este 0; iar dacă rezultatul este Adevărat, acest lucru este echivalent cu un rezultat a cărei valoare
este 1.
Începând cu C99 (standardul de C publicat în 1999) s-a introdus tipul de dată
_Bool
pentru valori logice.
Dacă în program este inclus fișierul header stdbool.h, atunci putem folosi pentru valori logice tipul bool
și putem lucra cu valorile true și false (care sunt de fapt valori de tip întreg egale cu 0, respectiv 1).

2. Instrucțiunea if
Este instrucțiunea care implementează o structură care permite ramificarea programului și
continuarea prelucrării datelor pe una dintre cele două ramuri posibile în funcție de rezultatul unui test
(îndeplinirea sau neîndeplinirea unei condiții). Acest test este o expresie a cârei evaluare conduce la un
rezultat logic (din punctul de vedere al logicii matematice), astfel rezultatul acestui test poate fi Adevărat
sau Fals (după cum condiția din test este sau nu îndeplinită). Pentru că avem două căi posibile de continuare
a programului spunem că avem o decizie cu două alternative.
Reprezentarea prin schemă logică a deciziei cu două alternative este dată în Figura 1.
Instrucțiunea corespunzătoare, în limbajul C, este instrucțiunea if.

Figura 1. Decizia cu două alternative – instrucțiunea if

1
PROGRAMAREA CALCULATOARELOR ____________________________________________ Laborator Nr. 3

Forma generală a instrucțiunii if este:

if(test)
{
Secventa A //Se execută dacă rezultatul testului este Adevărat
}
else
{
Secventa B //Se execută dacă rezultatul testului este Fals
}

Putem avea și cazul în care programul trebuie să execute o anumită secvență numai în cazul în care
rezultatul testului este Adevărat și nu trebuie să execute nimic în cazul în care rezultatul testului este Fals. În
acest caz vorbim de selecție cu o singură alternativă. Schema logică este cea prezentată în Figura 2.

Figura 2. Decizia cu o singură alternativă – instrucțiunea if

În acest caz forma instrucțiunii if este:

if(test)
{
Secventa A //Se execută dacă rezultatul testului este Adevărat
}

În cazul general, oricare dintre cele două secvențe (A sau B) poate conține la rândul ei alte blocuri de
decizie. În acest caz vorbim de decizia multiplă. Instrucțiunea care implementează această structură este tot
instrucțiunea if.
Un exemplu de schemă logică pentru o decizie multiplă este dat în Figura 3.

2
PROGRAMAREA CALCULATOARELOR ____________________________________________ Laborator Nr. 3

Figura 3. Exemplu de schema logică pentru selecția multiplă

Implementarea schemei logice din Figura 3 este următoarea:

if(test1)
{
if(test2)
{
Secventa A2
}
else
{
Secventa B2
}
}
else
{
Secventa B1
if(test3)
{
Secventa A3
}
else
{
Secventa B3
}
}

3
PROGRAMAREA CALCULATOARELOR ____________________________________________ Laborator Nr. 3

3. Instrucțiunea switch
Există situații în care trebuie să parcurgem o ramură a programului sau alta în funcție de o
valoare obținută ca rezultat al unei expresii. În limbajul C expresia pe care o evaluăm trebuie să aibă
un rezultat de tip întreg.
De exemplu: vrem să scriem un program în care să citim o valoare întreagă de la tastatură și
să afișăm mesajul Primavara, dacă am tastat valoarea 1, Vara dacă am introdus valoarea 2, Toamna
dacă s-a introdus valoarea 3, Iarna dacă s-a tastat valoarea 4 și mesajul Anotimp necunoscut dacă
am introdus orice valoare în afară de cele 4 indicate.
Putem apela la o selecție multiplă (instrucțiunea if) pentru rezolvarea problemei, dar putem
folosi și instrucțiunea switch pentru acest lucru. (Vom numi în continuare instrucțiunea switch
instrucțiune de alegere).
Forma generală a schemei logice pentru o instrucțiune switch este cea dată în Figura 4.

Figura 4. Schema logică generală pentru instrucțiunea switch

Implementarea instrucțiunii switch corespunzătoare schemei logice din Figura 4 este următoarea:
switch(expresie)
{
case val1: secventa_1
break;
case val2: secventa_2
break;
case val3: secventa_3
break;
--------------------------------
case valn: secventa_n
break;
default: secventa_n+1
}

Această instrucțiune lucrează în modul următor:


1) se evaluează expresie (rezultatul trebuie să fie de tip întreg)
2) se sare la cazul corespunzător rezultatului, astfel dacă rezultatul este val3 se face saltul la secventa_3
și se execută codul de acolo în jos până la întâlnirea unei instrucțiunii break sau până la terminarea
instrucțiunii switch (terminare marcată de }).

4
PROGRAMAREA CALCULATOARELOR ____________________________________________ Laborator Nr. 3

Observație: există cazuri în care această instrucțiune poate să lipsească.


3) Dacă rezultatul calculat al expresiei nu coincide cu niciuna din valorile val1, …, valn, atunci se face
saltul la eticheta default și se execută secventa_n+1.

TEMA 1
Problema nr. 1.1.
Să se scrie un program care citește de la tastatură trei numere întregi și afișează valoarea maximă
introdusă.

Problema nr. 1.2.


Fie următoarea funcție:

ì x 2 + 3x + 5, x Î (- ¥,2]
ï
f (x ) = í3x, x Î (2,8)
ïe x + 2, x Î [8, ¥ )
î
Să se calculeze valoarea funcției f pentru un x citit de la tastatură.

Problema nr. 1.3.


Să scrie un program care citește două numere reale de la tastatură și, în funcție de o opțiune specificată
prin intermediul unui meniu, calculează suma, diferența, produsul sau rezultatul împărțirii primului număr la
cel de al doilea.
Se va folosi instrucțiunea switch pentru alegerea opțiunii.

Problema nr. 1.4.


Se citesc de la tastatură 3 numere reale care reprezintă coeficienții unei ecuații de gradul 2. Să se
determine rădăcinile acestei ecuații. În cazul în care ecuația nu poate fi rezolvată se vor afișa mesaje
corespunzătoare.

Problema nr. 1.5.


Un punct din plan este dat prin coordonatele sale (x, y). Să se stabilească poziția punctului prin
indicarea cadranului (1, 2, 3, 4) în care este plasat. Pentru un punct situat pe una din semiaxe se vor preciza
cadranele separate de semiaxa respectivă (de exemplu 2-3).

Problema nr. 1.6.


Să se calculeze durata unei conexiuni Internet cunoscându-se momentul conectării (dat prin oră, minut
și secundă) și momentul deconectării (de asemenea dat prin oră, minut și secundă). Trebuie să se ia în
considerare cazul în care o conexiune începe într-o zi și se încheie în ziua următoare. Atenție: rezultatul
trebuie afișat sub forma ore, minute, secunde, deci pentru calcul NU se va transforma totul în secunde.

Problema nr. 1.7.


Să se calculeze momentul întreruperii unei conexiuni Internet dacă se cunoaște momentul de
conectare (dat prin oră, minut și secundă) și durata totală a conexiunii (dată prin ore, minute și secunde). Se
ia în considerare și cazul în care o conexiune începută într-o anumită i se poate încheia în ziua următoare.
Atenție: rezultatul trebuie afișat sub forma ore, minute, secunde, deci pentru calcul NU se va transforma
totul în secunde.

5
PROGRAMAREA CALCULATOARELOR ____________________________________________ Laborator Nr. 3

Problema nr. 1.8.


Să se scrie un program care citește de la tastatură trei numere întregi și determină dacă aceste numere
pot reprezenta lungimile laturilor unui triunghi. În caz afirmativ, programul trebuie să determine și tipul
triunghiului. Se vor scrie 4 funcții, fiecare dintre ele trebuie să returneze un rezultat de tip _Bool și care vor
verifica dacă cele trei numere întregi pot fi lungimile laturilor unui triunghi, dacă triunghiul poate fi
echilateral, isoscel sau dreptunghic. În cazul în care nu este îndeplinită niciuna dintre condiții pentru un tip
particular de triunghi se va afișa mesajul „Triunghi oarecare”.

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