Sunteți pe pagina 1din 8

Tema: Programe ciclice

Scopul lucrarii: Elaborarea unui program în limbajul de programare C/C++ și


afișarea rezultatelor unor expresii. Însuşirea, folosire și obținerea deprinderii practicee
de elaborare și depanare a programelor ramificate (for, while, do-while).

Descrierea temei:

Instrucțiunea for

Una dintre cele mai puternice instructiuni iterative ale limbajului C/C++
(si nu numai) este instructiunea for, care are urmatoarea sintaxă:

Modul de functionare: Procesul de executie a ciclului incepe cu calcularea


expresiei de initializare (expl), dupá care se trece la expresia de control (exp2) si
se verifica veridicitatea acesteia. In cazul când aceasta e adeväratà, se trece la
executarea instructiunilor din interiorul corpului lui for. Dupá indeplinirea acestora
se trece la expresia de incrimentare/decrementare (exp3) si din nou se controleaza
expresia de control (exp2), justețea careia duce la indeplinirea repetată a ciclului.
Instructiunea for va cicla de atâtea ori, pána cánd expresia de control fi adevarată.
În caz contrar se va trece la urmatoarea instructiune dupa corpul lui for.

Instrucțiunea while SDE 525.1 081 01 ME


Mod Coala Nr. document. Semnat. Data
Elaborat Dascal Daniel Litera Coala Coli
V. Derevlenco 2 Coli 6
Verificat
Programe ramificate
UTM.FIMET.RST-181
Ciclul while este utilizat in cazul in care nu se cunoaşte numarul de repetări ale
ciclului şi nu exista necesitatea ca ciclul fie executat cel putin o singurå dată.
Sintaxa instructiunii while este urmatoarea:

Modul de functionare: Mai întâi se evaluează ,,expresie", daca aceasta este


adevărată, atunci se executa toate instructiunile din corpul ciclului şi controlul
trece la inceputul buclei while. Astfel, corpul se executa ori de câte ori ,,expresie"
se evalueazà la "adevăr". Terminarea buclei are loc când ,,expresie" ia valoarea
fals.

Instrucțiunea do while

Coala
SDE 525.1 081 01 ME
Mod Coala Nr. document Semnat. Data 3
Ciclul do while este utilizat in cazul când nu se cunoaşte numărul de repetări ale
ciclului şi există necesitatea ca ciclul să fie cel putin o singură dată. Sintaxa
instructiunii do while este urmatoarea:

Modul de functionare: La început se execută instructiunile din corpul lui do, apoi
se evaluează expresie. Dacã valoarea lui expresie este diferită de 0 ("adevărat"),
atunci controlul se paseazã la începutul instructiunii do şi procesul se repetă. Dacă
expresie se evaluează la 0 ("fals"), atunci controlul se pasează la instructiunile
urmatoare după while.

Varianta 3- Să se scrie un prog ram ce va calcula valoarea expresie:

Coala
SDE 525.1 081 01 ME
Mod Coala Nr. document Semnat. Data 3
a−b2 +t
D= +t-1 ; X +1=t<Y interval min=12.
|a−2|

Listingul programului:
#include<conio.h>
#include<stdio.h>
#include<math.h>
void main()
{
clrscr();
int a,b,t,x,y,k,interval=0;
float S,sum=0;
printf("Introdu a=");
scanf("%d",&a);
printf("Introdu b=");
scanf("%d",&b);
printf("Interval min 12:\n");
scanf("%d%d",&x,&y);
printf("Introdu cazul:");
scanf("%d",&k);
switch(k)
{
case 1 : //for
{
printf ("\n -----Result-----");
printf ("\n Interval ---Rez---\n");
for(t=x+1;t<y;t++)
{
float S=(a-pow(b,2)+t)/(abs(a-2))+t-1;
printf (" | %d ",t);
printf (" - ");
printf (" %f \n", sum); interval++;
sum+=S;
}
printf ("\n-------------\n");
printf ("Interval: %d", interval);

Coala
SDE 525.1 081 01 ME
Mod Coala Nr. document Semnat. Data 3
printf ("\nTotal S: %f",sum);
break;
} //end case 1
case 2 : //while
{
printf ("\n -----Result-----");
printf ("\n Interval ---Rez---\n");
t=x+1;
while (t<y)
{
S=(a-pow(b,2)+t)/(abs(a-2))+t-1;
t++;
printf (" | %d ",t);
printf (" - ");
printf (" %f \n", S); interval++;
sum+=S;
}
printf ("\n-------------\n");
printf ("Interval: %d", interval);
printf ("\nTotal S: %f",sum);
break;
} //end case 2
case 3: //do while
{
printf ("\n -----Result-----");
printf ("\n Interval ---Rez---\n");
t=x+1;
do
{
S=(a-pow(b,2)+t)/(abs(a-2))+t-1;
printf (" | %d ",t);
printf (" - ");
printf (" %f \n", S); interval++;
sum+=S;
t++;
}

Coala
SDE 525.1 081 01 ME
Mod Coala Nr. document Semnat. Data 3
while(t<y);
printf ("\n-------------\n");
printf ("Interval: %d", interval);
printf ("\nTotal S: %f",sum);
break;
} //end case 3
}
getch ();
}
Rezultatul executiei:

Fig.1 Rezultatul execuției cazului 1 pentru instrucțiunea “for”

Coala
SDE 525.1 081 01 ME
Mod Coala Nr. document Semnat. Data 3
Fig.2 Rezultatul execuției cazului 2 pentru instrucțiunea “while”

Fig.3 Rezultatul execuției cazului 3 pentru instrucțiunea “do while”

Coala
SDE 525.1 081 01 ME
Mod Coala Nr. document Semnat. Data 3
Concluzie:
In aceasta lucrare am scris un program in limbajul de programare C/C++ care sa ne
calculeze rezultatul expresiilor de mai sus. Conditia data era ca aceste expresii sa fie introduse
intr-un singur program. Şi să se scrie un program care va calcula valoarea expresiei matematice
pe un interval introdus de la tastatură. În program să se utilizeze instrucțiunele:
‘‘switch’’,‘‘for’’,‘‘while’’,‘‘do while’’,‘‘if’’și‘‘else’’.Programul este prezentat mai sus , la fel si
rezultatul sau obtinut in urma scrierii acestui program.Programul incepe prin decalarea
bibliotecilor principale <conio.h> , <stdio.h> si <math.h> precum si prin functia principala
main() si deschiderea/inchiderea programului prin { }.
Aici am utilizat functia printf care are scopul de a permite afisarea datelor de orice tip si
scanf de a alege si a memora in memoria programului, getch este functia care pastreaza rezultatul
la ecran. Declararea bibliotecilor se incepe cu semnul #. Aici am utilizat și instructiunea for, una
dintre cele mai puternice instructiuni iterative ale limbajului C/C++ (si nu numai). Ciclul while
este utilizat in cazul in care nu se cunoaşte numarul de repetări ale ciclului şi nu exista
necesitatea ca ciclul fie executat cel putin o singurå dată. Ciclul do while este utilizat in cazul
când nu se cunoaşte numărul de repetări ale ciclului şi există necesitatea ca ciclul să fie cel putin
o singură dată. Mai întîi am utilizat switch-ul şi in fiecare din cele trei cazuri am introdus
instrucţiunile de mai sus.În primul caz am utilizat for-ul, în cazul 2 while şi în cazul 3 do while,
care ne-a calculat expresia matematica S=(a-pow(b,2)+t)/(abs(a-2))+t-1.For-ul
este o instructiune ciclica, deoarece ciclul se repeat de atitea ori pîna cînd expresia 2 este
adevarata, la fel şi while,iar ciclul instructiunii do while se va repeat atitea ori pina cind valoarea
conditiei va fi adevarata.Intervalul minim in acest program este 12, iar numarul iteratiilor este
calculat din diferenta lui y de x.

Coala
SDE 525.1 081 01 ME
Mod Coala Nr. document Semnat. Data 3