Sunteți pe pagina 1din 13

INSTRUCȚIUNI REPETITIVE

- BUCLE -
Repetă de câteva ori o porțiune a codului program
până când procesarea datelor respective este completă.

Exemplu de buclă din viața reală:


un atlet are de alergat pe o pistă circulară până când totalizeaza un anumit număr de km.
Instrucțiunea DO-WHILE

Instrucţiune ce permite repetarea unei secvenţe de instrucţiuni atâta timp cât o condiţie este îndeplinită.

Permite implementarea unei bucle ( ciclu ) cu test final, deci instrucţiunile din interiorul buclei se execută
sigur cel puţin o dată.
Instrucțiunea WHILE

Instrucţiune ce oferă posibilitatea de a repeta o anumită secvenţă de program cât timp o anumită condiţie
predefinită este îndeplinită.
WHILE - cât timp -
Problema 1 rezolvată:
Să se realizeze o tablă a înmulţirii de la 0 până la un număr dat de operatorul PC.
Exemplu dacă se introduce 5 se va afişa: 0x5=0, 1x5=5, 2x5=10,....5x5=25

Problema 2 rezolvată:
Să se realizeze un program care calculează suma primelor numere întregi, cu numar de întregi dat de la tastatură:
Enunţ:
Să se citească un număr natural n. Să se scrie un algoritm care afişează toţi divizorii numărului dat.
Exemplu: Pentru n = 12, mulţimea divizorilor este formată din valorile 1, 2, 3, 4, 6, 12.

Pas 1: Stabilim care sunt datele de intrare, împreună cu datele de ieşire.


În cazul problemei date, avem:
Date de intrare: n număr natural
Date de ieşire: divizorii numărului n
Pas 2: Analiza problemei

În cadrul problemei pe care o avem de rezolvat, verificăm condiţia ca un număr să fie divizor al altui
număr şi anume:
i este divizor al numărului n dacă se împarte exact la el, adică se va verifica dacă este adevărată
expresia următoare: n % i =0.
Pentru a găsi toţi divizorii numărului n dat, vom atribui valori lui i, pornind de la valoarea 1 până la
valoarea n.
Deci vom utiliza o structură repetitivă. WHILE este o structură repetitivă!

Pas 3: Scrierea algoritmului în pseudocod:


Enunţ:
Să se citească un număr natural n. Să se scrie un algoritm care
verifică dacă numărul dat este sau nu număr prim. Un număr n
este prim dacă are ca divizori doar valorile 1 şi n.
Exemplu:
Pentru n = 7, se va afişa mesajul ‘numărul este prim’,
iar pentru n = 22, se va afişa mesajul ‘numărul NU este prim’.

Pas 1: Stabilim care sunt datele de intrare, adică cele care vor fi
prelucrate cu ajutorul algoritmului, împreună cu datele de ieşire.
În cazul problemei date, avem:
Date de intrare: n număr natural
Date de ieşire: număr prim sau nu
Pas 2: Analiza problemei
Vom presupune, la începutul problemei, că numărul
n dat este prim, şi vom specifica acest lucru cu ajutorul
unei variabile de tip logic, căreia îi vom da valoarea
‘adevărat’.
Apoi vom evalua, pe rând, toate valorile începând cu
valoarea 2 şi până la n-1, ca să determinăm dacă sunt
divizori ai numărului n dat.
Dacă găsim un singur divizor printre aceste numere,
atunci vom acorda valoarea ‘fals’ variabilei de tip logic.
La sfârşit vom verifica care este valoarea variabilei
de tip logic şi vom afişa un mesaj corespunzător.
Exemple de programe C++
natural n, i
logic p
citeşte n
p <- adevărat
Pas 3: i <- 2
cât timp i <= n-1 execută
Scrierea dacă n % i = 0 atunci
algoritmului în p <- fals
sfârşit dacă
pseudocod: i <- i + 1
sfârşit cât timp
dacă p = adevărat atunci
scrie ‘Numarul este prim’
altfel
scrie ‘Numarul NU este prim’
sfârşit dacă
stop
Instrucțiunea FOR
Instrucţiunea for permite repetarea unei secvenţe de instrucţiuni pentru un set de condiţii, adică avem
posibilitatea execuţiei unei expresii de iniţializare (înainte de a începe bucla) şi a unei alte expresii la
sfârşitul fiecărei iteraţii (fiecărui pas).

Instrucțiunea repetitivă FOR este cea mai utilizată deoarece condițiile și pașii sunt definite de la bun început.
Algoritmi esențiali în programe rezolvate

Prelucrarea cifrelor unui număr


/*1.se se afiseze cifrele unui numar în ordinea inversa citirii lor.*/
#include<iostream>
using namespace std;

int main(){
int x;
cout<<"x="; cin>>x;
cout<<"nr schimbat: x= ";
while(x!=0){//cat timp
cout<<x%10;
x/=10;}
cout<<endl;
}

/*2.sa se formeze si sa se afiseze numarul obtinut din cifrele scrise in ordine inversa ale unui nr.*/
-?-?-?-?-?-?-
int main(){
int x;
cout<<"x="; cin>>x;
int p=1,y=0;
while(x!=0){
y=x%10+y*10;
x=x/10;}
cout<<"numarul obtinut :"<<y<<endl;
return 0:
}
/*3..sa se elimine cifrele impare dintr-un numar*/
-?-?-?-?-?-?-
cout<<"x=";cin>>x;
p=1;y=0;
while(x!=0){
if(x%10%2==0){
y=y+x%10*p;
p=p*10;}
x=x/10;}
cout<<"numarul fara cifre impare este :"<<y;
-?-?-?-?-?-?-

/*4.sa se verifice daca cifrele unui numar natural x sunt distincte*/


-?-?-?-?-?-?-
int main(){
cout<<"x=";cin>>x;
y=x;a=x%10;x=x/10;ok=1;
while(x!=0){
if(a==x%10) ok=0;
a=x%10;
x=x/10;}
cout<<"numarul "<<y;
if(ok==1){ cout<<" are cifrele distincte .";}
else cout<<" nu are cifre distincte .";

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