marți, 12 ianuarie 2010

L10. Instructiunea DO - WHILE

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.

Niciun comentariu:

Trimiteți un comentariu