RSS

L11. Instructiunea WHILE

12 Nov

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 WHILE

Sintaxa :

  • while (expL) instructiune;

Efect

  1. Se evalueaza expresia logica
  2. Daca valoarea expresiei logice este 1 (adevarata) se executa instructiunea si se revine la pasul 1
  3. daca valoarea expresiei logice este zero (falsa) se continua cu instructiunea de dupa punct-virgula

Observatii:

  • in esenta, cat timp valoarea expresiei logice este adevarata, se executa instructiunea
  • daca valoarea expresiei logice este falsa de la inceput atunci instructiunea nu se mai executa
  • daca WHILE trebuie sa repete mai mult de o instructiune, acestea se vor incadra intre acolade;
  • instructiunea WHILE se mai numeste “repetitiva cu test initial” sau “conditionata anterior”, pentru ca intai verifica valoarea conditiei si apoi executa secventa ce trebuie repetata

Problema exemplu. Fie A si B doua valori naturale. Sa se simuleza impartirea cu rest a lui A la B (prin scaderi repetate) si sa se determine catul si restul impartirii.

#include <iostream.h>
void main()
{//declararea
int A, B, C=0;
//citirea
cin>>A>>B;
//prelucrarea
while(A>=B) {A=A-B; C++;};
//Afisarea rezultatelor
cout<<"catul este :"<<C<<endl;
cout<<"restul este : "<<A;
}

Explicatii. Cand impartim pe A la B cautam “de cate ori se cuprinde” B in A, altfel spus cate scaderi ale lui B din a se pot face.

Un tip e problema ce necesita folosirea instructiunii WHILE este prelucrarea unui sir de valori ce se incheie cu zero.

Ideea : Se citeste fiecare valoare si daca este nenula se prelucreaza; Acest pas se repeta pana citim valoarea zero. (Ex: 23, -4, 5, 12, 79, 0).

Codul corespunzator este:

cin>>x;
While (x!=0) { //prelucrez valoarea X citita;
               ..............................
               //citesc urmatoarea valoare din sir
               cin>>x;};

Probleme ce folosesc acest algoritm pot umari:

  • numarul de valori din sir
  • valoarea maxima/minima
  • numarul de aparitii a unei valori K
 
13 Comments

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

 

13 responses to “L11. Instructiunea WHILE

  1. zigici

    07/12/2011 at 16:03

    ce greu..:(

     
  2. Radu

    15/12/2011 at 20:16

    Va rog sa faceti cea mai “babeasca” explicatie posibila ca sa inteleg si eu ceva ok?

     
  3. Mihai Chelariu

    16/12/2011 at 15:11

    am explicat EFECT-ul. instructiunea trebuia sa fie clara daca ai fi facut partea de algoritmica mai intai ( https://mchelariu.wordpress.com/2009/08/12/l5-instructiunea-repetitiva-cat-timp/ )
    In sectiune scrie “cat timp conditia este adevarata execut un set de instructiuni” . Evident setul se repeta pana cand conditia este… falsa.

     
  4. Andreiii

    04/10/2012 at 10:00

    Cum pot face produsul elementelor unui vector fara a folosi operatorul ” * ” ???
    inceputul trebuie sa arate astfel
    #include
    int produs (int a, int b)
    {
    return a*b;
    }
    int main ()
    {
    int a[35],n, p,i;
    cout<>n;
    cout<<"dati elementele vectorului"
    for (i=0; i>a[i];

     
  5. mchelariu71

    05/10/2012 at 08:32

    p=1;
    for(i=0;i<n;i++) {cin>>a[i];p=produs(p,a[i]);}
    cout<<p;😀

     
  6. Kris

    30/03/2013 at 12:22

    Invat Informatics la scoala si mam saturat de Turbo Pascal , e mai vechi CA Pentium 1 , dece trebue sa insusec , sunt programe mai noi si simple ?

     
  7. mchelariu71

    31/03/2013 at 22:49

    @Kris. Daca esti in gimnaziu, Pascalul e binevenit. E destul e strict si disciplineaza. Daca esti un entuziast, poti sa inveti in paralel si C-ul. Conceptele sunt identice, doar exprimarea difera. Oricum, sunt firme care cer la angajare sa stii Dephi ( Pascal orientat obiect). In aceste conditii, tu ai fi avantajat. Scoala are in vedere cunostintele generale si va poate da referinte despre unde ar trebui sa se situeze un elev interesat. In rest e muuuuulta munca personala. Succes!

     
  8. Emilian Simion

    08/12/2014 at 11:03

    Hei vreau sa muncesc in c++ …..ce mi recomandati sa citesc/lucrez?

     
  9. mchelariu71

    08/12/2014 at 16:59

    trecand peste modul de apelare, incepe cu manualele (poti alege intre varianta Cerchez&Serban si varianta MIlosescu). La Cerchez&Serban ai si cartile din seria “Programarea in limbajul C/C++”. Daca dupa lucrul lor inca mai ai chef de ceva “picant” poti incerca campion.edu.ro sau infoarena.ro

     
  10. Izabela Dan

    24/10/2015 at 13:30

    Ce trebuie sa instalez daca vreau sa lucrez programele pe calculator?

     
  11. Izabela Dan

    24/10/2015 at 13:45

    Se afiseaza urmatoarea secventa
    I==9
    While(I>=0)
    {j==0;
    While(j <I)
    j=j+1
    cout<<j<< ;
    I=I-1;
    }

     
  12. mchelariu71

    26/10/2015 at 09:07

     
  13. mchelariu71

    26/10/2015 at 09:22

    1. == se foloseste doar la teste, atunci cand intrebi daca ce este in stanga sete la fel cu ceea ce este in dreapta
    2. ai un I care incepe de la valoarea 9 si muncesti cat timp I este mai mare decat zero. Practic, te opresti cand devine -1.Stim asta si de la ultima operatie I=I-1; , operatia de decrementare – scaderea cu 1 a valorii unei variabile
    Secventa i=9; While (i>=0){ceva…; i= i-1;}
    il plimba pe i de la 9 la 0. Pentru fiecare situatie fiind ceva de facut.
    3. secventa din interior este asemanatoare
    j=0; While(j <I) j=j+1; cout<<j;
    Ia un J egal cu zero si il tot creste cu 1 cat timp este mai mic dacat I. J va iesi din repetitie cand va fi egal cu I, valoare care se si afiseaza.
    4. In consecinta secventa afiseaza cate o valoare egala cu I , adica descrescator, toate cifrele de la 9 la 0.

     

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: