Sei sulla pagina 1di 6

Ministerul Educaiei i Tineretului al Republicii Moldova

Universitatea Tehnic a Moldovei

Catedra: Automatica si Tehnologii Informationale

RAPORT
Lucrare de laborator Nr.2
la Programarea Calculatoarelor

A efectuat:

St. gr. TI-141


Bitca Roman

A verificat:

lect.univ.
M. Potlog

Chiinu 2014
0

Lucrare de laborator Nr.2


Tema: Programarea proceselor cu cicluri i ramificaii
Scopul lucrrii: Elaborarea programelor ce conin procese de calcul cu
cicluri i ramificaii realizate cu diferite instruciuni posibile.
Formularea condiii problemei: De calculat valorile variabilelor indicate
dup formulele de calcul i datele iniiale indicate. De afiat rezultatele obinute pe
ecran.
Varianta VII:
Datele iniiale:
a ln x
2
pentru x - 2 > 0 si a = 0
sin c b
x sin( x 1)
F
pentru x - 2 < 0 si a 0
b

ax c

cos 2 x
in alte cazuri

Mersul lucrrii:
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 condiie. n dependen de aceasta ciclurile se divizeaz n:
1.
ciclu precondiionat (anterior)
2.
ciclu postcondiionat (posterior)
Pentru crearea ciclurilor se utilizeaz urmtoarele 3 instruciuni:
Instruciunea while
Format:
while (expresie)
instruciune
Instruciunea se execut repetat atta timp ct valoarea expresiei este diferit de
zero. Testul are loc naintea fiecrei execuii a instruciunii. Prin urmare ciclul este
urmtorul: se testeaz condiia din paranteze dac ea este adevrat, deci expresia
din paranteze are o valoare diferit de zero, se execut corpul instruciunii while,
se verific din nou condiia, dac ea este adevrat se execut din nou corpul
instruciunii. Cnd condiia devine fals, adic valoarea expresiei din paranteze este

zero, se face un salt la instruciunea de dup corpul instruciunii while, deci


instruciunea while se termin.
Instruciunea do
Format:
do instruciune while
(expresie);
Instruciunea se execut repetat pn cnd valoarea expresiei devine zero. Testul
are loc dup fiecare execuie a instruciunii.
Instruciunea for
Format:
for (expresie-1opt; expresie-2opt; expresie-3opt)
instruciune
Aceast instruciune este echivalent cu:
expresie-1;
while (expresie-2) {
instruciune;
expresie-3;
}
Expresie-1 constituie iniializarea ciclului i se execut o singur dat naintea
ciclului. Expresie-2 specific testul care controleaz ciclul. El se execut naintea
fiecrei iteraii. Dac condiia din test este adevrat 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
condiiei. Ciclul se termin cnd condiia devine fals.
Oricare dintre expresiile instruciunii for sau chiar toate pot lipsi.
Dac lipsete expresie-2, aceasta implic faptul c clauza while este
echivalent cu while (1), ceea ce nseamn o condiie totdeauna adevrat. Alte
omisiuni de expresii snt pur i simplu eliminate din expandarea de mai sus.
Instruciunile while i for permit un lucru demn de observat i anume,
ele execut testul de control la nceputul ciclului i naintea intrrii n corpul
instruciunii.
Dac nu este nimic de fcut, nu se face nimic, cu riscul de a nu intra niciodat
n corpul instruciunii.
Analiza datelor:
a)

Date de intrare: x, b, xi,xf, xd - variabile simple de tip real, variabile de


intrare de la tastatur.
b)
Date de ieire: F,x - variabile simple de tip real, care vor afia valorile
funciei i argumentul la ecran, n variabil simpl de tip ntreg care va afia
ordinea afirii. Schema logic a programului:
2

Start

clrscr();

Introduceti datele
a,b,c,xi,xf,dx

a,b,c,xi,xf,dx

y=y1;
n=0;

Rezultatele
obtinute

x<=xf

NO
x-2<0 && a!=0

x-2>0 && a=0

YES

F = (a+log(x))/(sin(c))-b*b

NO
YES

F = (a*x+c)/(cos(2*x))

F= (x-sin(x+1)/b)

n=n+1

"x= f=" ,n ,x, F

x=x+dx;

Stop

Textul programului in limbajul C


#include <stdio.h>
#include <conio.h>
#include <math.h>
int main()
{
//Declaram variabilile
float x,a,b,c,xi,xf,dx,F;
int n;
//Curatirea ecranului
clrscr();
//Afisarea propozitiei de dialog si introducerea datelor
printf("Introduceti datele initiale a,b,c,xi,xf,dx \n");
scanf("%f%f%f%f%f%f",&a,&b,&c,&xi,&xf,&dx);
x=xi;
n=0;
printf("Rezultatele obtinute: \n");
//Calcularile
while (x<=xf)
{
if (x-2>0 && a==0)
{F = (a+log(x))/(sin(c))-b*b;}
else if (x-2<0 && a!=0) F= (x-sin(x+1)/b);
else F = (a*x+c)/(cos(2*x));
n=n+1;
printf("%d x=%.3f f=%.3f \n",n,x,F);
x=x+dx;
}
//Retinerea rezultatelor pe ecran
getch();
return 0;
}

Rezultatele obtinute:
Am introdus datele:
a=2 , b=4, c=2, xi=2, xf=32, dx=4
1. x=2
2. x=6
3. x=10
4. x=14
5. x=18
6. x=22
7. x=26
8. x=30

f=-12.239
f=23.701
f=78.416
f=-45.789
f=-437.624
f=68.011
f=-490.825
f=-96.597

Concluzie:
n aceast lucrare am elaborat un program ce conine procese de calcul cu
cicluri i ramificaii realizate cu diferite instruciuni posibile. Din rezultatele
obinute observm c x se mrete cu o unitate ntruct xi, adic pasul este 4, pe
cnd variabila de ieire F i modific valorile doar pna n momentul cnd x atinge
valoarea 32.
Bibliografie:

Liberty Jess, Teach Yourself C++ in 21 Days, SAMS Publishing,


Indianapolis, 1994

Oualline Steve, Practical C++ Programming, O'Reilly & Associates,


Sebastopol, 1997

Brian W Kernigham, Dennis M Ritchie - The C Programming


Language
Prentice-Hall Software Series, 1978

Catrina Octavian, Cojocaru Iuliana, Turbo C++, Teora, 1993


5

Potrebbero piacerti anche