Sunteți pe pagina 1din 2

Şef lucrări dr. ing. Morariu-Gligor Radu PUC – Laborator nr.

6 1/2

LABORATOR NR. 6 - INSTRUCŢIUNEA DE CICLARE FOR


Instrucţiunea de ciclare for este folosită pentru programarea ciclurilor care au o variabilă conducătoare, şi
are forma generală:
…..
for ( expr1 ; expr2 ; expr3 )
instrucţiune ;
…..
expr1 – se evaluează o singură dată, la intrarea în instrucţiunea for, înaintea Intrare
primei iteraţii şi reprezintă expresia în cadrul căreia se iniţializează variabila
conducătoare de ciclu. În această expresie mai pot fi iniţializate şi alte variabile. expr1
expr2 – corespunde testului din schema logică. De obicei este o expresie logică,
de valoarea acesteia depinzând execuţia corpului ciclului.
expr3 – este expresia prin care se modifică valoarea variabilei conducătoare de
ciclu. Aceasta se evaluează de fiecare dată după executarea instrucţiunii ce expr2
DA
formează corpul ciclului. Este în general o expresie de incrementare sau
decrementare. instructiune
NU
instrucţiune – poate fi o instrucţiune simplă sau compusă şi reprezintă corpul Iesire
ciclului.
expr3
Funcţionare : La întâlnirea cuvântului cheie for se realizează următoarele:
1. se evaluează expresia expr1;
2. se evaluează expr2. Dacă aceasta este adevărată ( 0) se execută corpul ciclului. Dacă expresia este falsă (= 0)
se părăseşte ciclul, execuţia programului continuând cu următoarea instrucţiune care urmează după ciclul for;
3. după executarea corpului ciclului se evaluează expr3 după care se revine la punctul 2 (evaluarea expresiei
expr2).
Exemplu nr. 1: Calculul factorialului: n! = 1 * 2 * 3 * … * n
Vom folosi o variabilă ajutătoare “i”, aceasta va lua valori de la 1 la n, factorialul calculându-se astfel:

for (fact = 1, i = 1 ; i < = n ; i++ )
fact *= i;

Exemplu nr. 2: Calculul valorilor funcţiei y  3,4  x3  5,25  x 2  3  x  1,6 în intervalul [a,b] parcurs cu
pasul h.

for( x = a ; x <= b ; x += h)
{ y = 3.4 * pow(x,3) + 5.25*x*x + 3*x + 1.6;
printf(“\n x=%6.3lf \t y=%6.3lf”,x,y);
}

Observaţii :

1. Corpul ciclului for nu se execută niciodată dacă expresia expr2 are valoarea zero de la început;
2. Dacă expr2 lipseşte din antetul instrucţiunii, ea se consideră adevărată (ciclu for infinit);
3. Oricare din cele trei expresii poate lipsi, însă caracterele ; trebuie scrise.

fact = 1; i = 1;
for ( ; i < = n ; )
{ fact *= i; i++; }

4. Oricare din cele trei expresii pot fi compuse din mai multe instrucţiuni separate prin caracterul ,

for (fact=1, i=1 ; i < = n ; i++ )
fact *= i;

Şef lucrări dr. ing. Morariu-Gligor Radu PUC – Laborator nr. 6 2/2

Program exemplu nr. 1: Program exemplu nr. 2:


Calculul sumei elementelor unui şir format din Calculul sumei:
“n” elemente reale a0, a1, a2, … , an-1. Suma S = (1)+ (1+2)+ (1+2+3)+ (1+2+3+4) + ...
elementelor şirului este: S = a0 + a1 + a2 + … + an-1.
Pentru calculul sumei vom iniţializa valoarea luând în considerare n termeni (maxim 25 de termeni).
acesteia cu 0 (S = 0). Vom utiliza o relaţie de forma S Pentru calculul sumei se va utiliza o formulă
= S + ai, unde i = 0 … n-1; de recurenţă: t[i] = t[i-1] + i. În această situaţie se
Vom utiliza instrucţiunea for de două ori: iniţializează suma cu valoarea primului element,
prima dată pentru introducerea elementelor şirului, a calculul sumei realizându-se pornind de la al doilea
doua oară pentru calcularea sumei elementelor şirului. element.

#include <stdio.h> #include<stdio.h>


#include <conio.h> #include<conio.h>
main (void) main(void)
{ int n,i; double a[20],s; { int i, n, t[25]; long int s;
printf(“\n Nr. de elemente, n=”); printf("\n Introdu n : n =");
scanf(“%d”,&n); scanf("%d",&n);
for( i = 0 ; i < n ; i++ ) t[1] = 1; s = t[1];
{ printf(“\n \t a[%2d]=”,i); for( i = 2 ; i <= n ; i++)
scanf(“%lf”, &a[i]); } { t[i] = t[i-1] + i;
for( s=0, i=0 ; i<n ; i++ ) s += t[i];
s += a[i]; }
printf(“\n Suma este S=%10.3lf”,s); printf("\n Suma este: s = %3d",s);
getch(); getch();
} }

Teme propuse:
1. Calculaţi valorile funcţiilor:
 x 2  2 x  3 daca x  1
 x  8 daca x  1 
y  2  x3  4  x 2  6  x  9; y 2 ; y  x  8 daca  1  x  1
 x  2 x  3 daca x  1  x 3  6 x  8 daca x  1

pentru valori a lui x[a, b], parcurs cu pasul h.
2. Se consideră un şir de numere reale, cu maxim 25 de elemente. Se cere să se scrie un program C pentru calculul
sumei elementelor negative (exprimate în modul) ale şirului.
Exemplu: Pt. şirul: -2, 0, 3, -5, 4, 7, 0, -1, 9 S   2   5  1  2  5  1  8

3. Se consideră un şir de numere reale, cu maxim 30 de elemente. Se cere să se calculeze produsul elementelor
strict pozitive ale şirului, precum şi media aritmetică a elementelor divizibile cu 3.
Exemplu: Pt. şirul: -2, 0, 3, -5, 4, 7, 0, -1, 9 P = 3 * 4 * 7 * 9 = 756, Ma = (3 + 9) / 2 = 6
4. Se consideră un şir de numere întregi, cu maxim 20 de elemente. Se cere să se scrie un program C pentru
determinarea numărului de apariţii a valorii “b” în şirul dat.
Exemplu: Pt. şirul: -2, 0, 3, -5, 4, 7, 0, -1, 9 Na (0) = 2
5. Să se calculeze suma S = 1 + 11 + 111 + 1111 + …. luând în considerare primii “n” termeni ai sumei (2
variante).
Exemplu: S(6) = 123456
1 1 1 n 1 1
6. Se consideră dezvoltarea: Sn  1    ...  1 . Se cere să se determine şi să se afişeze n, Tn, Sn
2! 3! 4! n!
pentru care un număr de “n” termeni luaţi în considerare.

x x3 x5 x 7
7. Se consideră dezvoltarea: sin( x)      ... . Se cere să se determine şi să se afişeze valoarea
1! 3! 5! 7!
aproximativă calculată pentru n termeni şi să se compare valoarea obţinută cu valoarea calculată a funcţiei sinus cu
ajutorul funcţiei de bibliotecă.
Succes!!!

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