C++ Modul I

Lecția 8

Structura condițională  WHILE 

Forma Cum funcționează


  while(condiție)
  {
      instrucțiune1;
      instrucțiune2;
  }
Se evaluează condiția.
Dacă rezultatul este true (adevărat, diferit de 0) atunci se execută blocul de instrucțiuni, după care se evaluează din nou condiția.

Cât timp condiția va fi adevărată, se vor executa instrucțiuniile, când condiția va fi falsă, se va ieși din while și se va continua programul.

Structura repetitivă cu test inițial: WHILE

continuă

programul

condiție

DA

NU

instrucțiune1

instrucțiune2

Cât timp condiția este adevărată, se vor executa instrucțiunile de pe ramura de 'DA'. Când condiția devine falsă, ieșim din ciclul repetitiv și continuăm programul.

Atenție! Dacă valoarea condiției nu va fi niciodată 0, programul va rula la infinit; structura se va numi buclă infinită.

(Recap) App: GuessN

Joc: "ghicește numărul"

 

Există o variabilă x pe care o setați în program, de la 1 la 1024, iar utilizatorul trebuie să o ghicească.

Utilizatorul are la început un număr de 10 vieți.

La fiecare tură, programul cere utilizatorului să introducă un număr, apoi spune dacă numărul acesta este "prea mic", "prea mare" sau "perfect !".

Dacă numărul este prea mic sau prea mare utilizatorul pierde o viață.

Jocul continuă cât timp jucătorul mai are vieți și încă nu a câștigat.

Exerciții clasice

1A  Se citesc numere naturale până la întâlnirea numărului 0. Câte numere am citit?

1B  Se citesc numere zecimale pana la intalnirea numarului 0, reprezentand mediile elevilor dintr-o clasă la matematică.

Câți elevi au promovat anul? (au media peste 5)
1C  Elsa se plimbă prin grădină. Ea se bucură de florile divers colorate, și ar vrea să știe câte flori sunt din fiecare culoare. (rosu, albastru, galben, alta)
Se citesc cuvinte reprezentând culori, pana la intalnirea cuvantului "gata".
Afișați câte flori au fost din fiecare culoare

Exerciții clasice

 

2 A. Se citesc numere naturale până la întâlnirea numărului 0. Afișați suma lor.

 

2 B. Se citesc numere naturale până la întâlnirea numărului 0. Afișați suma celor pare.

 

3. Se citesc numere naturale până la întâlnirea numărului 0. Afișați maximul dintre ele.

Să se execute de n ori anumite instrucțiuni (o bucată de program)

Exemplu:

să se afișeze de n ori textul: "am început să învăț while-ul".

bucata de program: cout << "am inceput sa invat while-ul"<<endl;

Soluția 1:

Se folosește o variabilă ( de obicei i ) care reprezintă "de câte ori am afișat până acum". Această variabilă are la început valoarea 0, Trebuie să creștem această variabilă cu 1 după fiecare afișare.

Cât timp numărul de afișări este mai mic decât n afișăm din nou.

Soluția 2:

Se folosește o variabilă care reprezintă "de câte ori mai trebuie să afișăm". Această variabilă are la început valoarea n. Trebuie să scădem această variabilă după fiecare afișare.

Cât timp numărul rămas este mai mare decât 0, afișăm din nou.

Aplicații

1. Scrieți un program care execută de 5 ori următoarele instrucțiuni:

Citește un număr x și afișează ultima lui cifră.

2. Scrieți un program care citește un număr natural n și execută de n ori următoarele instrucțiuni:

Citește un număr x și verifică dacă acesta are exact 2 cifre

Se vor alege soluții diferite pentru cele 2 aplicații.

Hint: Ultima cifră a unui număr a era a % 10.

Hint: Un nr are exact 2 cifre dacă este mai mare decât 9 și mai mic decât 100

Exerciții clasice 2

1. Se citește un număr natural n urmat de n  numere naturale. Să se calculeze suma numerelor citite;

 

2. Se citește un număr natural n urmat de n  numere naturale. Să se calculeze maximul dintre ele.

 

Exercitii clasice 3

1. Se citește un număr natural n urmat de n  numere naturale. Să se afișeze câte dintre ele erau mai mari decât 50.

 

2. Se citește un număr natural n urmat de n  numere naturale. Să se afișeze suma celor pare.

 

Aplicații

5. Se citește un număr natural k, urmat de un număr natural, n urmat de n numere naturale. Să se determine:

(a) câte numere sunt egale cu k;

(b) câte numere au aceeaşi ultimă cifră ca şi k;

(c) câte numere au aceeaşi paritate ca şi k (dacă k este par întrebarea devine "câte numere pare sunt?", iar dacă k este impar, întrebarea devine "câte numere impare sunt?").

 

Aplicații

6. Miruna, colega Elsei are n note la geografie. Ea vrea să știe ce medie are și dacă a trecut sau nu clasa. Pentru că nu îi place să calculeze, o roagă pe Elsa să facă un program pentru asta, dar Elsa nu are timp așa că vă roagă la rândul ei pe voi.

  • Se citește numărul n reprezentând numărul de note al Mirunei

  • Se citesc apoi n numere naturale, reprezentând aceste note

  • Se afișează pe prima linie media și pe a doua dacă a promovat sau nu

  • (**) Dacă nu are media peste 5, care este cea mai mică notă pe care trebuie să o mai ia ca să treacă.

Aplicații

7. (*) Elsa se juca de-a v-ați ascunselea cu Elif in Pădurea Naturală. În această pădure, fiecare copac se naşte însemnat cu un număr natural mai mic sau egal cu 2147483647. Din păcate, Elsa s-a ascuns atât de bine încât nu mai ştie nici ea unde este. Dar ea ştie de la bătrânul Switch că dacă urmează copacii în ordine descrescătoare a numerelor cu care sunt ei insemnaţi, va ajunge înapoi acasă.

Se citeşte un număr natural n (numărul de copaci pe care i-a urmărit Elsa), urmat de n numere naturale (numerele din naştere ale copacilor pe lângă care a trecut Elsa).

Să se afişeze "da" dacă Elsa a ajuns acasă sau "nu" dacă nu a reuşit încă să ajungă acasă. Ex:

n = 5; copaci = 24 5 7 4 3 -> "nu" (nu ajunge acasa pentru ca 7 e mai mare ca 5)

n = 6; copaci = 53 47 21 16 6 3 -> "da" (ajunge acasă pentru că toate numerele sunt în ordine descrescătoare)

to be continued...

CppM1L8

By Academia de Informatică