RSS

L10. Instructiunea DO – WHILE

12 Jan

Exista trei instructiuni (structuri) repetitive folosite in toate limbajele:

  • instructiunea repetitiva cu test initial CAT TIMP (WHILE) (se foloseste cand numarul de repetitii este nedefinit)
  • instructiunea repetitiva cu test final REPETA-PANA CAND (DO WHILE sau REPEAT) (se foloseste cand numarul de repetitii este nedefinit)
  • instructiunea repetitiva cu un numar cunoscut de pasi PENTRU (FOR) (se foloseste cand numarul de repetitii este cunoscut – un numar fix de ori.)

Instructiunea DO – WHILE

Sintaxa: do { instructiuni} while (conditie) ;

Efect:

  1. se executa secventa de instructiuni
  2. se evalueaza conditia
  3. daca valoarea conditiei este adevarata se revine la pasul 1
  4. daca valoarea conditiei este falsa se continua cu instructiunea de dupa punct si virgula

Observatii:

  • do-while se mai numeste instructiune cu test final sau conditionata posterior
  • observati ca intai se executa secventa de instructiuni (macar o data) si apoi se testeaza
  • succesiunea de operatii este instructiune, test, instructiune, test, ….. test, instructiune, test.

Exemplu:

O problema la care putem folosi DO-WHILE este prelucrarea cifrelor unui numar natural/intreg. Cifrele vor fi prelucrate pe rand, de la sfarsitul numarului catre inceput, de fiecare data taind ultima cifra (deja prelucrata). Algoritmul se reia pana cand nu mai sunt cifre in numar, adica valoarea N ajunge la valoarea zero.

Sesizati ca orice numar are o ultima cifra, motiv pentru care intai prelucrez  si tai , si apoi verific daca mai sunt cifre de prelucrat.

Scheletul algoritmului ar fi:

cin>>n;
do { //prelucrarea ultimei cifre
      ..............;
      // tai ultima cifra
     n=n/10;
    } while (n!=0);

Observatii: puteti determina intai ultima cifra (int uc=n%10; )  si apoi sa prelucrati variabila uc

Probleme. fie N un numar natural.

  1. Cate cifre are N?
  2. Care este suma cifrelor lui N?
  3. Care este cea mai mare cifra din numar? (valoarea maxima). Analog minima.
  4. Sa se determine prima cifra a numarului N.
  5. De cate ori apare o cifra data C, in numarul N?
  6. Sa se genereze “oglinditul” numarului N. (daca N=1987 atunci oglinditul va fi 7891)
  7. Folosind problema de mai sus, stabiliti daca numarul N este palindrom.
 
4 Comments

Posted by on 12/01/2010 in C2_2 Limbajul C/C++

 

4 responses to “L10. Instructiunea DO – WHILE

  1. alexandra

    11/02/2013 at 14:12

    nu imi place lectia asta

     
  2. alexandra

    12/05/2013 at 21:28

    tare lectia

     
  3. Alex.

    03/09/2013 at 16:50

    am scris programul unui algoritm ce contine stuctura do while in Codeblocks si nu mi se efectueaza decat o data secventa

     
  4. mchelariu71

    03/09/2013 at 22:14

    verifica conditia. o eroare uzuala este de genul A=5 in loc de A==5. Prima este o atribuire si se executa cu succes ntotdeauna, de unde si valoarea de adevar 1 (ADEVARAT). A doua este un test care verifica cazul in care valoarea lui A coincide (ca sa nu spun egal :D) cu valoarea expresiei din dreapta lui ==.

     

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: