Repetă o instrucțiune sau o mulțime de instrucțiuni cât timp este adevărată o condiție. Fiecare repetare a instrucțiunilor (adică fiecare pas) se numește iterație iar programul se numește iterativ. Mulțimea totală de iterații realizate pentru ajungerea la un rezultat se numește buclă.

Vom realiza un program care:
- Afișează primele n numere naturale.
- Face suma primelor n numere naturale și o afișează.
- Face produsul(factorialul) primelor n numere naturale și îl afișează.

În programul de mai sus:
- La liniile 6,14,23 expresia i=1 înseamnă că variabila i primește valoarea 1(este inițializată cu valoarea 1).
- La liniile 1,15,24 expresia while(i<=1) reprezintă cât timp iar între paranteze este condiția ca valoarea lui i să fie mai mic sau egal cu 1.
- La liniile 10,18,27 expresia i++ reprezintă adăugarea unei unități la valoarea lui i (i+1).
- La linia 13 se declară variabila suma care este inițializată cu valoarea 0 (zero) = element neutru pentru adunare.
- La linia 22 se declară variabila produs care este inițializată cu valoarea 1 (unu) = element neutru pentru înmulțire.
- Linia 17: suma+=i; înseamnă suma = suma +i; adică la variabila suma se adaugă conținutul variabilei i.
- Linia 26: produs*=i; înseamnă produs = produs*i; adică variabila produs se înmulțește cu conținutul variabilei i.
Realizarea programului este prezentată în video de mai jos:
Întrebări:
- Cât timp se repetă instrucțiunea sau o mulțime de instrucțiuni în bucla while()?
- Cum se numește o repetare a instrucțiunilor?
- Ce reprezintă expresia i++?
- Ce înseamnă în program suma+=i?
Temă:
Să se modifice programul de mai sus astfel încât să dispară variabila i. Instrucțiunea while() să fie așa cum îi spune numele „instrucțiunea repetitivă cu număr necunoscut de pași”.
Explicarea programului pas cu pas:
Am adăugat linia printf(„Dati numarul n=”);
#include <stdio.h>
int main()
{
int i,n;
printf("Dati numarul n=");
scanf("%d",&n);
i=1;
while(i<=n)
{
printf("%d",i);
i++;
printf(" ");
}
int suma = 0;
i=1;
while(i<=n)
{
suma+=i;
i++;
}
printf("\nSuma=");
printf("%d",suma);
unsigned int produs = 1;
i=1;
while(i<=n)
{
produs*=i;
i++;
}
printf("\nFactorial=");
printf("%u",produs);
return 0;
}
#include <stdio.h>
Aceasta este o directivă de preprocesare care include biblioteca standard de intrare/ieșire. Este necesară pentru a putea folosi funcțiile printf() și scanf().
int main()
Punctul de intrare al programului. Orice program C începe cu funcția main().
{
Începe blocul de cod al funcției main().
int i, n;
Se declară două variabile întregi:
iva fi folosită ca variabilă de control în bucle,nva reține numărul citit de la tastatură.
printf("Dati numarul n=");
Afișează mesajul pentru a cere utilizatorului să introducă un număr (n).
i = 1;
Inițializează i cu 1 înainte de prima buclă.
while(i <= n)
Inițiază o buclă care se execută cât timp i este mai mic sau egal cu n.
{
printf("%d", i);
Afișează valoarea curentă a lui i.
i++;
Incrementează i (i.e., trece la următorul număr).
printf(" ");
}
Afișează un spațiu între numere. Bucla se repetă până ce i > n.
Exemplu pentru n = 5:
1 2 3 4 5
int suma = 0;
Declară și inițializează o variabilă suma cu 0. Aceasta va reține suma numerelor de la 1 la n.
i = 1;
Reinițializează i la 1 pentru următoarea buclă.
while(i <= n)
{
suma += i;
i++;
}
Adună toate numerele de la 1 la n în variabila suma.
printf("\nSuma=");
printf("%d", suma);
Afișează rezultatul sumei. De exemplu, pentru n = 5:
Suma=15
unsigned int produs = 1;
Declară o variabilă produs (de tip unsigned int, adică fără semn) și o inițializează cu 1. Aceasta va reține factorialul lui n.
i = 1;
Reinițializează i la 1.
while(i <= n)
{
produs *= i;
i++;
}
Calculează factorialul lui n (adică 1 * 2 * 3 * ... * n) și îl salvează în produs.
printf("\nFactorial=");
printf("%u", produs);
Afișează factorialul. %u este folosit pentru a afișa un unsigned int.
return 0;
}
Marchează sfârșitul programului. return 0; înseamnă că programul s-a terminat cu succes.
Rezumat:
Programul:
- Citește un număr
nde la tastatură. - Afișează numerele de la 1 la
n. - Calculează și afișează suma numerelor de la 1 la
n. - Calculează și afișează factorialul lui
n.
Programul comentat linie cu linie pentru o înțelegere cât mai clară:
#include <stdio.h> // Include biblioteca standard de intrare/ieșire
int main()
{
// Declarăm două variabile întregi: i ptr bucle, n ptr valoarea introdusă de utilizator
int i, n;
printf("Dati numarul n="); // Cerem utilizatorului să introducă un număr
scanf("%d", &n); // Citim numărul și îl stocăm în variabila n
i = 1; // Inițializăm i cu 1
while(i <= n) // Cât timp i este mai mic sau egal cu n
{
printf("%d", i); // Afișăm valoarea lui i
i++; // Incrementăm i cu 1
printf(" "); // Afișăm un spațiu între numere
}
int suma = 0; // Inițializăm suma cu 0
i = 1; // Reîncepem de la i = 1
while(i <= n) // Cât timp i este mai mic sau egal cu n
{
suma += i; // Adunăm i la suma
i++; // Incrementăm i
}
printf("\nSuma="); // Afișăm textul "Suma="
printf("%d", suma); // Afișăm valoarea sumei
unsigned int produs = 1; // Inițializăm produsul (factorialul) cu 1
i = 1; // Reîncepem de la i = 1
while(i <= n) // Cât timp i este mai mic sau egal cu n
{
produs *= i; // Înmulțim produsul cu i
i++; // Incrementăm i
}
printf("\nFactorial="); // Afișăm textul "Factorial="
printf("%u", produs); // Afișăm valoarea factorialului
return 0; // Încheiem programul cu cod de succes
}
Exemplu de rulare:
Dacă utilizatorul introduce n = 4, programul va afișa:
Dati numarul n=1 2 3 4
Suma=10
Factorial=24
