Sunteți pe pagina 1din 8

Ministerul Educaţiei al Republicii Moldova

Universitatea Tehnică a Moldovei

RAPORT
Lucrarea de laborator nr.2
la Programarea Calculatoarelor

A efectuat:
st. gr. SI-181 Mazureanu Gheorghe

A verificat: Buzurniuc Ștefan

Chişinău -2018
Lucrarea de laborator nr.2
Tema: Algoritm cu structura ciclică

Scopul lucrării: Însuşirea, folosirea şi obţinerea deprinderii practice de


elaborare şi depanare a programelor ciclice (for, while, do-while).

𝑁+𝑁 𝑚𝑜𝑑(23)
Sarcina lucrării: Se consideră funcția: 𝐹(𝑥) = ∙ 𝑦 . Să se calculeze valoarea
𝑁+25
funcției pentru 10 iterații ale lui x, ∈ [𝑎. 𝑏] . Parametrul N este egal cu numărul anului concatenat
cu valoarea lunii nașterii studentului (N=199908) . În program să se utilizeze
instrucţiunile: ”while”, if” şi ”else”. Să se afișeze valorile variabilelor x, y, F .

Varianta 15

Expresia:

cos(𝑥)3 + sin(𝑥 3 ) log(|𝑎𝑥 4 − 𝑏 exp(𝑥)| + 1, pentru 𝑥 < 0.5(𝑎 + 𝑏)

𝑥4
[ √√√𝑥 2+5 + 𝑎2 + |𝑏| + √ cosh(𝑥)] − tan(exp(−3𝑥)) , pentru 0.5(𝑎 + 𝑏) ≤ 𝑥 < 1.75(𝑎 + 𝑏)
𝑦= 𝑎2+1

𝑠𝑖𝑛𝑎𝑥 + 𝑐𝑜𝑠𝑏𝑥
+ 0.75exp(0.5), 𝑝𝑒𝑛𝑡𝑟𝑢 𝑥 ≥ 1.75(𝑎 + 𝑏)
1 + (log(2 + 𝑐𝑜𝑠𝑎𝑥 + log(4 + 𝑠𝑖𝑛𝑏𝑥
{ 1+
1

Mersul lucrarii:
1. Familiarizarea cu notiunile principale din teorie și metodele pe care le vom utiliza.
2. Analiza datelor.
3. Efectuarea codului (programului).
4. Efectuarea schemei logice.
5. Analiza rezulatelor și concluzii.
6. Bibliografie.

1
1.Noţiuni principale din teorie şi metode folosite:

Structură repetitivă sau ciclul asigură executarea în mod repetat a unor operaţii. Un ciclu este o
repetare a acelorași acțiuni (pași). O secvență de pași care se repetă într-un ciclu, numit corpul
buclei. Există mai multe tipuri de algoritmi de structură ciclică.

Clasificarea ciclurilor
1. în funcţie de numărul de repetări:
- cu număr necunoscut de paşi
- cu număr cunoscut de paşi (cu contor)
2. în funcţie de poziţionarea condiţiei:
- cu test iniţial - structura repetitiva conditionata anterior
- cu test final - structura repetitiva conditionata posterior.

Algoritmii care conţin cicluri senumesc algoritmi ciclici.

Instructiunea while:

Instrucţiunea se execută repetat atîta timp cît valoarea expresiei este diferită de zero. Testul are
loc înaintea fiecărei execuţii a instrucţiunii. Prin urmare ciclul este următorul: se testează condiţia
din paranteze dacă ea este adevărată, deci expresia din paranteze are o valoare diferită de zero, se
execută corpul instrucţiunii while, se verifică din nou condiţia, dacă ea este adevărată se execută
din nou corpul instrucţiunii. Cînd condiţia devine falsă, adică valoarea expresiei din paranteze este
zero, se face un salt la instrucţiunea de după corpul instrucţiunii while, deci instrucţiunea while se
termină.

Instructiunea do-while:

2
Instrucţiunea se execută repetat pînă cînd valoarea expresiei devine zero. Testul are loc după
fiecare execuţie a instrucţiunii. Funcţionarea unei astfel de instrucţiuni se bazează pe executarea
repetată a instrucţiunii cât timp condiţia este îndeplinită.

Instructiunea for :

exp1 – reprezintă secvenţa de iniţializarea a ciclului


exp2 – reprezintă condiţia de terminare a ciclului
exp3 – reprezintă secvenţa de reiniţializare a ciclului
instrucţiuni - corpul ciclului

Funcţionarea unei astfel de instrucţiuni se bazează:


*Pe executarea repetată a instrucţiunii
*Verificarea exp2
*Executarea exp3
Cat timp exp2 este îndeplinită.
Funcţionarea instrucţiunii for are loc astfel:
• Se porneşte ciclul repetitv prin iniţializarea sa, adică prin execuţia exp1.
• Apoi se evaluează exp2 şi dacă este adevărată se execută corpul ciclului, adică
instrucţiunea.
• După aceea se execută exp3, şi se reia evaluarea exp2, ş.a.m.d.

3
2.Analiza datelor:

a) date de intrare:
a,b,c,N,x - variabilă simplă de tip real
b) date de ieşire:
x, y, F - variabile simple de tip real, valorile expresiilor date (de afişat pe ecran).

3. Efectuarea codului (programului):


#include <stdio.h>
#include <conio.h>
#include <math.h>
int main()
{
int a=-2, b=3;
float c=10.0 , h, x, y, F;
long N=381999;
h=fabs(b-a)/c;
x=a;
printf("\n |==========================================================|");
while (x<b)
{
if (x<0.5*(a+b)) y=(cos(x)*cos(x)*cos(x)+sin(pow(x,3))*(log(fabs(a*pow(x,4)-
b*exp(x))+1))); else if ((x>=0.5*(a+b))&&(x<1.75*(a+b)))
y=(sqrt(sqrt(sqrt(pow(x,2)+5))+pow(a,2))+abs(b)+sqrt((x*x*x*x)/(pow(a,2)+1)*cosh(x))-
tan(exp(-3*x)));
else y=((sin(x)*a)+cos(x)*b)/(1+(log(2+(cos(x)*a))+log(4+(sin(x)*b))/1+(0.75*exp(0.5))));
F=(N + N % 23)/(N+25.)*y;
printf("\n | x=%f \t y=%f \t F=%f \t | \n",x,y,F);
printf(" |==========================================================|");
x=x+h;
}

return 0;
}

4
4. Schema-bloc a programului: Start

a,b,c,h,x,y,F
,n

a=-2.0 , b=3.0 , |𝑏−𝑎|


c=10 , ℎ= , x=a
𝑐
N=381999

x<b

da
„𝑦 = cos(𝑥)3 + sin(𝑥 3 ) log(|𝑎𝑥 4 − 𝑏 exp(𝑥)| + 1 𝑥 < 0.5(𝑎 + 𝑏)

nu

𝑥4
𝑦 = [ √√√𝑥 2+5 + 𝑎 2 + |𝑏| + √ cosh(𝑥)] da
𝑎2 + 1 𝑥 < 1.75(𝑎 + 𝑏)
− tan(exp(−3𝑥))

nu

𝑠𝑖𝑛𝑎𝑥 + 𝑐𝑜𝑠𝑏𝑥
𝑦= + 0.75exp(0.5)
1 + (log(2 + 𝑐𝑜𝑠𝑎𝑥 + log(4 + 𝑠𝑖𝑛𝑏𝑥
1+
1
𝑛
𝑛 + 23
𝐹= ∙𝑦
𝑛 + 25

x,y,F

stop

5. Analiza rezultatelor si concluzii:


5
1. În această lucrare am elaborat un program ce conţine procese de calcul cu cicluri şi
ramificaţii.
2. Fiind cunoscute cele 3 instrucțiuni ciclice for, while și do-while le putem folosi în diferite
scopuri aparte sau împreună pentru cazuri concrete.
3. În cazul în care cunoștem numarul de repetări al ciclului și in cazul în care nu cunoaștem,
pasul indexului fiind =1 folosim instrucțiunea ciclică for.
4. În cazul în care numarul de repetări al ciclului e cunoscut sau necunoscut, dar corpul
ciclului trebuie să fie executat măcar o singură dată, folosim instrucțiunea ciclică do-
while.
5. În cazul în care este cunoscut sau necunoscut numarul de repetări al ciclului, iar corpul
ciclului e necesar să fie executat de 0 sau mai multe ori, în dependență de o condiție
folosim instrucțiunea ciclică while.
6. Avantajul algoritm cu structură ramificată este faptul că ne dă posibilitatea să facem mai
multe operațiuni repetitive.
7. Dezavantajul algoritmului cu structură ciclică este faptul că este complicat și necesită
cunoștințe avansate.

8. Bibliografie:

1. ”Inițiere în limbajul C” , Buzurniuc Ștefan , Chișinău, editura ”Evrica” 2004


2. Programare Indicații de laborator Partea I , Chișinău, editura “Tehnica-UTM” 2014
3. http://www.runceanu.ro/adrian/wp-content/cursuri/S1progr2013/curs6-PC.pdf
4. https://www.slideshare.net/SergheiUrban/limbajul-c
5. http://tminfo.ro/upload/files/289724621CE.pdf
6. http://kjn.scrieunblog.com/articles/structura-ciclica-algoritmi.htmlx
6
7.

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