Sunteți pe pagina 1din 6

Implementarea structurilor de control

Unitatea de învăţare nr. 8

IMPLEMENTAREA STRUCTURILOR REPETITIVE (CICLICE)

Cuprins Pagina

Obiectivele unităţii de învăţare nr. 8 2

8.1 Implementarea structurilor ciclice cu test final 2

8.2 Exemple 3

Test de autoevaluare 4

Lucrare de verificare – unitatea de învăţare nr. 6 4

Răspunsuri şi comentarii la întrebările din testele de autoevaluare 5

Recapitulare 5

Bibliografie – unitatea de învăţare nr. 6 6

1
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Implementarea structurilor de control

OBIECTIVELE unităţii de învăţare nr. 8

Principalele obiective ale Unităţii de învăţare nr. 8 sunt:

 Înţelegerea utilizării structurilor fundamentale pe


care se bazează programarea structurată
 Familiarizarea cu utilizarea structurilor repetitive
 Recunoaşterea situațiilor când se folosește un
anumit tip de structură repetitivă
 Aplicarea cu succes a operațiilor studiate în
rezolvarea problemelor

8.1. Implementarea structurilor ciclice cu test iniţial

 Instrucţiunea do-while
Sintaxa:
do instructiune;
while (expresie);

Se execută instrucţiune. Se evaluează apoi expresie. Dacă aceasta are valoarea 1,


se execută instrucţiune. Se testează din nou valoarea expresiei. Se repetă instrucţiune
cât timp valoarea expresiei este 1 (condiţia este îndeplinită). În cazul instrucţiunii do-
while, corpul ciclului se execută cel puţin o dată.
Observaţii:
1. Instrucțiunea repetitivă, în acest caz, se execută cel puțin o dată, chiar dacă
expresia evaluată, este falsă, încă de la prima execuție.

8.2. Exemple:

1. Se citeşte un număr întreg,n. Aflaţi câte cifre conţine.


De exemplu, pentru n=4568, numărul calculate va fi k=4 cifre
#include<conio.h>
#include<iostream.h>
void main()
{clrscr(); long int n, nrc=0;
cout<<"introduceti nr:";cin>>n;
do { n=n/10; nrc++ ; }
while (n!=0);
cout<<"nr. cifrelor este"<<nrc<<endl; getch(); }
2
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Implementarea structurilor de control

Aceeași problemă, rezolvată cu instrucțiunea repetitivă cu test inițial, conduce la


următoarea descriere:
#include<conio.h>
#include<iostream.h>
void main()
{clrscr( ); long int n, nrc=0;
cout<<"introduceti nr:";cin>>n;
while (n!=0) { n=n/10; nrc++ ; }
cout<<"nr. cifrelor este"<<nrc<<endl; getch(); }
Acest algoritm, însă conduce la un rezultat eronat, dacă se introduce n=0, deoarece
nrc nu se incrementează niciodată.

2. Se afişează, pe ecran, cifra minimă a unui număr natural nenul n. Numărul n


se citeşte de la tastatură.

#include <iostream.h>
#include <conio.h>
void main( ) { unsigned int n, min = 9, c;
cout<<” n = „; cin>>n;
do
{ c = n% 10;
if ( c < min) min = c;
n = n/10; }
while (n != 0);
cout<<” Cifra minima = „<<min<<endl; getch(); }

3. Se citesc numere întregi de la tastatură, până la introducerea valorii 0. Aflați


maximul valorilor citite.

De exemplu, pentru şirul de intrare 2,56,78,4,0, rezultatul va fi max=78

#include<conio.h>
#include<iostream.h>
#include<values.h>
void main( ) { clrscr( ); long int n, max=MINLONGINT;
do { cout<<"introduceti n:";cin>>n;
if (n>max) max=n; }
while (n != 0)
cout<<"maximul este"<<max<<endl;
getch( );}

3
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Implementarea structurilor de control

Test de autoevaluare 8
1. Se citește un număr natural, n. Calculați și afișați numărul
obținut prin inversarea cifrelor sale. Rezolvați problema folosind
ambele instrucțiuni repetitive (cu test inițial și cu test final)
Exemplu:
Date de intrare n=2371
Date de ieșire: ninv=1732

Lucrare de verificare la Unitatea de învăţare nr. 8


1. Se citește un număr natural, n. Aflați cifra maximă a acestuia:
#include <iostream.h>
#include<iostream.h>
void main()
{ unsigned int n, max = 0, c;
cout<<” n = ”; cin>>n;
do
{ c = n% 10;
if ( c > max) max = c;
n = n/10; }
while (n != 0);
cout<<” Cifra maxima = „<<max<<endl; getch(); }

2. Se citește un număr de trei cifre. Aflați numerele obținute


prin eliminarea, pe rând, a unei cifre din număr. Se va utiliza o
structură repetitivă cu test final, pentru preluarea unei valori
numerice de tre cifre.
#include <iostream.h>
#include <conio.h>
void main( ) { int n, max = 0, c;
do { cout<<” n = ”; cin>>n; }
while ((n <= 99) or (n>999);
a=n%10; b=(n/10)%10; c=n%100;
ab=a*10+b;
bc=b*10+c;
ac=a*10+c;
cout<<ab<<endl;
cout<<bc<<endl;
cout<<ac<<endl;
getch( ); }

4
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Implementarea structurilor de control

Răspunsuri şi comentarii la întrebările din testele de


autoevaluare

1.1. #include <iostream.h>


#include<iostream.h>
void main()
{ unsigned int n, ninv=0, c;
cout<<” n = „; cin>>n;
do
{ c = n% 10;
ninv=ninv*10+c ;
n=n/10; }
while (n != 0);
cout<<”Numarul invers = „<<ninv<<endl; getch(); }

1.2. #include <iostream.h>


#include<iostream.h>
void main()
{ unsigned int n, ninv=0, c;
cout<<” n = „; cin>>n;
while (n != 0)
{ c = n% 10;
ninv=ninv*10+c ;
n=n/10; }
cout<<”Numarul invers = „<<ninv<<endl; getch(); }

Recapitulare
Structura ciclică cu test final este implementată prin
 do-while
Sintaxa:
do instructiune;
while (expresie);
În multe cazuri, instrucțiunea repetitivă cu test final o poate înlocui pe
cea cu test inițial.

5
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Implementarea structurilor de control

Bibliografie

6
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii

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