Sunteți pe pagina 1din 5

Ministerul Educației, Culturii și Cercetării al Republicii Moldova

Universitatea Tehnică a Moldovei

Departamentul Informatică și Ingineria Sistemelor

RAPORT
Lucrare de laborator nr.2
la Programarea Calculatoarelor

A efectuat
sr. gr. SI-191

A verificat Buzurniuc Șt.


prof. univ.

Chișinău 2020
Lucrare de laborator nr.2
Tema: Procese ciclice de calcul
Scopul lucrării: Însușirea, folosirea și obținerea deprinderii practice de elaborare și depanare a
programelor cu intrucțiuni ciclice.
¿ ¿
Sarcina lucrării: Să se calculeze valorile funcției y=f(x) pe intervalul [a,b] cu pasul h=¿ a−b∨
12 .
Se va afișa x și y în fiecare punct.

Varianta 1
•Expresia:

Varianta y a b

{
11 -1 3
2
−0,001 x + sinx
ae , pentru x <0.5( a+b)


4
x
√5 x 3 +b+ −x
−2,45 e , pentru 0.5(a+ b)≤ x <0.75(a+ b)
2
y= a +1
2 2 x
ln(3 x +b )+exp(2 x)+ arccos , pentru x ≥ 0.75(a+b)
¿ x∨+1
.

•Valorile datelor inițiale:


a= -1
b=3

x ∈[a,b]

N=22091

Mersul lucrării
Instrucţiunile de ciclare (repetitive, iterative, etc) sunt utilizate în situaţia în care o anumită secvenţă de
cod trebuie executată de mai multe ori în mod consecutiv, numărul de repetiţii fiind fix, stabilit iniţial, sau
variabil, depinzând de rezultatul acţiunii repetate

Limbajul C pune la dispoziţia programatorilor trei instrucţiuni de ciclare: while, do-while şi for, toate trei
utilizând pentru continuarea ciclării o condiţie de tip “cât timp este adevărat că …”, diferenţa dintre ele
fiind dată, în principal, de momentul testării condiţiei de ciclare: în cazul instrucţiunii while testarea are
loc înaintea fiecărei execuţii a acţiunii repetate (testare anterioară), în cazul do-while testarea se face la
reluare, după fiecare execuţie (testare posterioară), iar în cazul instrucţiunii for testarea se face analog
cazului while, instrucţiunea for având însă prevăzută şi evaluarea unei anumite expresii înainte de fiecare
reluare, precum şi o secvenţă iniţială, executată înaintea intrării în ciclare.
Schema logică.

Start

a,b “Intervalul a,b


=>”

h=¿ a−b∨ ¿ ¿
12 “h=”, h
x=a

i=1; i<=12; i++

x=x+h
“x=”, x

X<0,5*(a+b)

y = a * exp(-0.001 * pow(x, 2) + sin(x));


x>=0,75*(a+b)

Y=pow(pow(x, 3) + 1, 1. / 5) + sqrt(pow(x, 4) / (pow(a, 2) + 1)) - 2.45 *


exp(-x);
“Y= cazul 1”, Y Y=log(3 * pow(x, 2) + pow(b, 2)) + exp(2*x) +
acos(x / (fabs(x) + 1));

“Y= cazul 2”, Y


“Y= cazul 3”,
Y

Stop
Codul programului în limbajul C:

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main()
{
int a, b;
float h, y, x;
printf(" intervalul a,b =>");
scanf("%d %d", &a, &b);
h = fabs(a - b) / 12;
printf("h=%f\n", h);
x = a;
for (int i = 1; i <= 12; i++)
{
x = x + h;
printf("x= %f\n", x);

if (x < 0.5 * (a + b))


{
y = a * exp(-0.001 * pow(x, 2) + sin(x));
printf("\t y=%f \t cazul 1 \n", y);
}
else if (x >= 0.5 * (a + b) && x < 0.75 * (a + b))
{
y = pow(pow(x, 3) + 1, 1. / 5) + sqrt(pow(x, 4) / (pow(a, 2) + 1)) - 2.45 * exp(-x);
printf("\t y=%f \t cazul 2 \n ", y);
}
else if (x >= 0, 75 * (a + b))
{

y = log(3 * pow(x, 2) + pow(b, 2)) + exp(2*x) + acos(x / (fabs(x) + 1));


printf("\t y=%f \t cazul 3 \n", y);
}
}

return 0;
}
Rezultatele testării și funcționării programului (screenshot-uri):

Analiza rezultatelor și concluzii:

• În această lucrare de laborator a fost elaborat un program bazat pe funcții ciclice (prin instrucțiunile
while,do-while și for) ce calculează valoarea funcției y=f(x) pe intervalul [a,b] cu pasul h=(b-a)/12 care
este definită de x valoarea căruia este citită de la tastatură și acest program afişează valorile: x,y. Care la
rândul său depind de valorile introduse a variabilelor a, b.
• Au fost obținute deprinderi de elaborare, compilare, rulare şi testare a unui program cu ciclu în limbajul
de programare C.
• Verificarea şi validarea rezultatelor obținute confirmă că programul elaborat lucrează corect.

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