Sunteți pe pagina 1din 7

Ministerul Educatiei si Tineretului Republicii Moldova

Universitatea Tehnica a Moldovei


Catedra: Calculatoare si Retele

RAPORT
Lucrare de laborator Nr.1
Programarea Calculatoarelor

A efectuat: St.gr.CR 192


Lungu Sergiu

A verificat:
Munteanu Silvia

Chişinău 2019
Lucrare de laborator Nr.2

Tema: Programarea proceselor cu cicluri şi ramificaţii

Scopul lucrării: Scopul lucrării: Studierea tehnicilor şi metodelor de


utilizare a instrucţiunilor de control a condiţiei şi a instrucţiunilor ciclice în
limbajul C pentru tabularea funcţiei.

Formularea condiţii problemei: Să se calculeze şi să se afişeze la ecran


valorile argumentului x şi valorile funcţiei F, definită prin 3 expresii date, pentru
intervalul х1 ≤ x ≤ х2 şi pasul px de incrementare a argumentului x. Valorile x1,
x2, px și parametrii a, b, c sunt date de intrare de tip real.

Varianta 13:
Datele iniţiale:

Mersul lucrării:

Se cunosc mai multe structuri de algoritmi, şi anume:


• Structura liniară
• Structura ramificată
• Structura iterativă (ciclică)
Ciclul este o parte a algoritmului care poate fi repetată de mai multe ori.
Fiecare ciclu trebuie să aibă condiţie. În dependenţă de aceasta ciclurile se
divizează în:
• ciclu precondiţionat (anterior)
• ciclu postcondiţionat (posterior)
Pentru crearea ciclurilor se utilizează următoarele 3 instrucţiuni:

Instrucţiunea while
Format:
while (expresie)
instrucţiune
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ă.

Instrucţiunea do
Format:
do instrucţiune while
(expresie);
Instrucţiunea se execută repetat pînă cînd valoarea expresiei devine zero.
Testul are loc după fiecare execuţie a instrucţiunii.

Instrucţiunea for
Format:
for (expresie-1; expresie-2; expresie-3)
instrucţiune

Această instrucţiune este echivalentă cu:


expresie-1; while
(expresie-2) {
instrucţiune;
expresie-3;
}

Expresie-1 constituie iniţializarea ciclului şi se execută o singură dată înaintea


ciclului. Expresie-2 specifică testul care controlează ciclul. El se execută înaintea
fiecărei iteraţii. Dacă condiţia din test este adevărată atunci se execută corpul
ciclului, după care se execută expresie-3, care constă de cele mai multe ori în
modificarea valorii variabilei de control al ciclului. Se revine apoi la reevaluarea
condiţiei. Ciclul se termină cînd condiţia devine falsă.
Oricare dintre expresiile instrucţiunii for sau chiar toate pot lipsi.
Dacă lipseşte expresie-2, aceasta implică faptul că clauza while este
echivalentă cu while (1), ceea ce înseamnă o condiţie totdeauna adevărată. Alte
omisiuni de expresii sînt pur şi simplu eliminate din expandarea de mai sus.
Instrucţiunile while şi for permit un lucru demn de observat şi anume,
ele execută testul de control la începutul ciclului şi înaintea intrării în corpul
instrucţiunii.
Dacă nu este nimic de făcut, nu se face nimic, cu riscul de a nu intra niciodată
în corpul instrucţiunii.

Analiza datelor:

• Date de intrare: a, b,c, x1,x2, px - variabile simple de tip real, variabile de


intrare de la tastatură.
• Date de ieşire: F,x - variabile simple de tip real, care vor afişa valorile
funcţiei şi argumentul la ecran, n variabilă simplă de tip întreg care va afişa
ordinea afişării.

Schema logica a programului:


Textul programului in limbajul „C”

#include <stdio.h>
#include <conio.h>
#include <math.h>
int main()
{
float x1,x2,px,a,b,c,x,F;
int n;
printf("Input x1 : "); scanf("%f", &x1);
printf("Input x2 : "); scanf("%f", &x2);
printf("Input px : "); scanf("%f", &px);
printf("Input xa : "); scanf("%f", &a);
printf("Input xb : ");scanf("%f", &b);
printf("Input x1 : ");scanf("%f", &c);
x=x1;
n=0;
printf("\n\tResults:\n");
while (x<x2)
{
n=n+1;
if ((x<b) || (b !=0))
{

F=c*log(a*x)-((x*x)/(a+c));
}
else if ((c+b>0) && (a ==0))
{
F=(x-log(x*x))/(b-cos(a*c)*2);
}
else
{
F=((a+x)/(c*c))+exp(3*x);
}
printf("%i:x=%.3f\t F= %.3f \n", n,x,F);
x=x+px;
}
getch();
return 0;
}
Rezultatele testării și funcţionării programului:
Am introdus datele : 4, 8 , 0.5, 5 ,6 ,7

• x=4 f=19.637
• x=4.5 f=20.107
• x=5 f=20.449
• x=5.5 f=20.628
• x=6 f=20.808
• x=6.5 f=20.848
• x=7 f=20.804
• x=7.5 f=20.683

Concluzie:
În această lucrare am elaborat un program ce conţine procese de calcul cu
cicluri şi ramificaţii realizate cu diferite instrucţiuni posibile. Din rezultatele
obţinute observăm că x se măreşte cu o unitate întrucît x1, adică pasul este 0.5, pe
cînd variabila de ieşire F îşi modifică valorile doar pîna în momentul cînd x
atinge valoarea 8.

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