0% au considerat acest document util (0 voturi)
9 vizualizări4 pagini

PCLP Laborator6

Documentul prezintă structuri de decizie în limbajul C, inclusiv instrucțiunile if și switch. Sunt prezentate exemple de programe care utilizează aceste structuri pentru a rezolva probleme precum determinarea maximului din trei numere sau afișarea zilelor săptămânii în funcție de o cifră citită. De asemenea, sunt propuse probleme care implică structuri de decizie, cum ar fi calcularea volumului unor corpuri geometrice sau rezolvarea unei ecuații de gradul doi.

Încărcat de

Florina Pop
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
9 vizualizări4 pagini

PCLP Laborator6

Documentul prezintă structuri de decizie în limbajul C, inclusiv instrucțiunile if și switch. Sunt prezentate exemple de programe care utilizează aceste structuri pentru a rezolva probleme precum determinarea maximului din trei numere sau afișarea zilelor săptămânii în funcție de o cifră citită. De asemenea, sunt propuse probleme care implică structuri de decizie, cum ar fi calcularea volumului unor corpuri geometrice sau rezolvarea unei ecuații de gradul doi.

Încărcat de

Florina Pop
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd

Laboratorul 6 Structuri de decizie (alternative, de selecţie)

6. Structuri de decizie (alternative, de selecţie)

6.1 Structura de decizie: instrucţiunea if

Aceasta corespunde cazurilor când în algoritmul problemei intervine o decizie.


Este instrucţiunea principală în C care descrie structura alternativă. Pentru un pseudocod
de forma:
dacă (<condiţie>) atunci <instrucţiune>
instrucţiunea if este:
if (<condiţie>) <instrucţiune>;
iar pentru un pseudocod de forma:
dacă (<condiţie>) atunci <instr1> altfel <instr2>
instrucţiunea if este:
if (<condiţie>) <instr1>; else <instr2> ;
OBSERVAŢIE: Dacă una din instrucţiunile de pe ramura "if" sau "else" este o instrucţiune
compusă, atunci ea se încadrează între acolade:
{ <instr1>; <instr2>; ... }
şi nu se mai termină cu punct-virgulă. În caz contrar programul va executa numai prima
instrucţiune de pe ramură.

6.2 Structura de selecţie cu ramuri multiple:


instrucţiunea switch

În unele cazuri este necesară o decizie multiplă specială.


Instrucţiunea switch permite acest lucru. test expr

DACĂ expresie=expr_const_1
instrucţiune1;
[ieşire;] instrucţiune1
ALTFEL DACĂ expresie=expr_const_2
break
instrucţiune2;
[ieşire;]
… instrucţiune2
ALTFEL DACĂ expresie=expr_const_n-1
instrucţiune_n-1; break
[ieşire;]
ALTFEL instrucţiune_n;

Se testează dacă valoarea pentru expresie este una instrucţiune_n


dintre constantele specificate (expr_const_1,
expr_const_2, etc.) şi se execută instrucţiunea de pe
ramura corespunzătoare. În schema logică test_expresie este una din condiţiile:
expresie=expr_const_1, expresie=expr_const_2, etc.
Sintaxa:

27
Laboratorul 6 Structuri de decizie (alternative, de selecţie)

switch (expresie)
{
case expresie_const_1: instructiune_1; [break;]
case expresie_const_2: instructiune_2; [break;]
. . . . . . . . . . . . . .
case expresie_const_n-1: instructiune_n-1;[break;]
[ default: instructiune_n; ]
}

6.3 Exemple if, switch

6.3.1 Maximul a trei numere

[Link] Pseudocodul: void main()


{
[Link]şte a,b,c int cod=1; float x,y,z; char op;
[Link]ă a>b atunci max=a altfel max=b while(cod)
[Link]ă c>max atunci max=c {
[Link] max printf("\nIntroduceti expresia
Start (valoare operator valoare): ");
scanf("%f %c %f",&x,&op,&y);
switch(op)
Citeşte
a, b, c
{
case '+':z=x+y;break;
case '-':z=x-y;break;
Nu Dacă Da
case '*':z=x*y;break;
a>b
case '/':z=x/y;break;
max=b max=a default: printf("\nOperator
eronat"); cod=0; z=0;
}
Da printf("%.2f %c %.2f=
Dacă %.2f",x,op,y,z);
c>max max=c }
}
Scrie “Max =” , max Să se scrie un program care citeşte o cifră
din intervalul [1,7] şi afişează denumirea
Stop
zilei din săptămînă corespunzătoare cifrei
respective (1-luni, 2-marţi etc).
[Link] Programul: //PROGRAMUL BIV25
#include<iostream.h> #include <stdio.h>
main() #include <stdlib.h>
{ void main( )
int a,b,c,max; /* citestc o cifra din intervalul
cout<<"Dati a b c"; cin>>a>>b>>c; [1,7] si afiseaza denumirea zilei
if(a>b) max=a; din saptamina corespunzatoare
else max=b; cifrei respective */
if(c>max) max=c; {
cout<<"maximul="<<max; int i;
} scanf("%d", &i);
switch(i)
{
6.3.2 Calculator de buzunar case 1: puts("luni");break;
//Instruc de selectie switch case 2: puts("marti");break;
#include<stdio.h> case 3: puts("miercuri"); break;

28
Laboratorul 6 Structuri de decizie (alternative, de selecţie)

case 4: puts("joi"); break; default: puts("Valoare gresita


case 5: puts("vineri"); break; !");exit(1);
case 6: puts("simbata"); break; }
case 7: puts("duminica"); break; }

6.4 Probleme propuse

Să se alcătuiască programe care să rezolve următoarele probleme:

6.4.1 Calculul volumului unui corp geometric


Să se scrie un program care afişează un mesaj de tip meniu şi în funcţie de un caracter citit
de la tastatură (1 pentru paralelipiped, 2 - Cilindru, 3 - Con, 4 - Sferă, 0 - terminare program)
citeşte dimensiunile necesare şi calculează şi afişează în cadrul unui mesaj volumul corpului
respectiv (Vp = H·B·L; Vcil = π·R2·H; Vcon = π·R2·H/3; Vsf = π·D3/6).

Start

Citeşte
a, b, c

Nu Da
Dacă
a=0

Δ = b2 – 4ac

Da
Nu

Dacă
Da
i<iter
Scrie “Ec
are rad x
x0=x
Nu Dacă Da
Δ>0 b=0

Scrie “Ec e de
gradul unu
x1 = -c/b

Nu Dacă Da Nu Daca Da
Δ<0 c=0

-b
-b± Δ -b re = 2a
x1,2 = x1,2 = 2a
2a

im = 2a

Scrie “Ec are Scrie “Ec are Scrie “Ec are Scrie “Ec nu Scrie “Ec are
doua rad dif” rad dubla” rad compl” are nici o o infinit ate de
x1 şi x2 x1 = x2 x1,2 = re±i⋅im solutie” solutii”

Stop

[Link] scrie "[Link] o infinitate de


6.4.2 Ecuaţia de gradul 2 (vezi şi schema sol."
logică) [Link] altfel scrie "[Link] are sol"
[Link]şte a,b,c 2.1.2 altfel scrie "[Link] [Link]ă x=",-c/b
[Link]ă a=0 atunci altfel
[Link]ă b=0 atunci 2.2 d=b*b-4*a*c
[Link]ă c=0 atunci 2.2.1 dacă d>0 atunci
[Link].x1=(-b- d )/(2*a)

29
Laboratorul 6 Structuri de decizie (alternative, de selecţie)

x2=(-b+ d )/(2*a) 3.1.2 altfel arg = -pi/2


scrie "x1=",x1,"x2=",x2 3.2 altfel
[Link] altfel dacă re>0 atunci
dacă d=0 atunci 3.2.1 arg=arctg(im/re)
[Link].1 scrie "[Link] 3.2.2 altfel arg=-arctg(im/re)
[Link] x=",-b/(2*a) [Link] re,im
altfel
[Link].2 re = -b/(2*a) 6.4.4 Rezolvarea unui sistem de două
ecuaţii cu două necunoscute x,y
im = -d /(2*a)
scrie "[Link] [Link]şte a11,a12,a21,a22,b1,b2
[Link] re = ", re," im = ",im [Link] = a11*a22-a21*a12
[Link] = b1*a22-b2*a12
6.4.3 Modulul şi argumentul unui număr [Link] = a11*b2-a21*b1
complex 5.x = detx/det; y = dety/det
[Link]şte re,im
6.4.5 Sa se calculeze şi sa se afişeze
[Link] = re*re+im*im valoarea funcţiei f pentru un x dat:
[Link]ă re=0 atunci
3.1 4x3 + 5x2 - 2x + 1, x<0
dacă im>=0 atunci f(x)= 100, x=0
x
3.1.1 arg=pi/2 e - ln x, x>0

Start

Citeşt
e

modul= re ⋅ re + im ⋅ im

N Dacă
D
re=0

N Dacă D D Dacă N
re>0 im>=0

arg=- arg=arct(im/r arg=pi/2 arg=-pi/2

scrie re,im

Stop

30

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