Aceasta e o versiune anterioară a paginii.
Structura repetitivă while
De multe ori avem nevoie să repetăm anumite instrucţiuni. Când acesta este cazul, putem folosi un while
care se va executa cât timp o condiţie este adevărată.
Sintaxa generală este:
while (conditie) { instructiuni; }
La fel ca la structura if, condiţia trebuie să fie o valoare booleană (true sau false), iar instrucţiunile pot fi oricât de multe.
int k = 0; while (k < 30) { System.out.println(k); k++; } // se vor afisa primele 30 de numere, incepand cu 0
Putem avea mai multe mecanisme şi condiţii mai complexe la while, dar pentru moment nu intrăm în detalii. Singurul mecanism care mai este prezentat este cel pentru while(true)
care execută ceva la infinit. Acesta poate fi oprit la apelul instrucţiunii break;
, în cazul în care punem o condiţie ce rezultă în ceva adevărat.
Codul de mai sus rescris cu un astfel de mecanism arată în felul următor.
int k = 0; while (true) { if (k == 30) { break; // opreste executia lui while } System.out.println(k); k++; } // se vor afisa primele 30 de numere, incepand cu 0
Exerciţii
1. Salvează o valoare între 1 şi 10 într-o variabilă. Încearcă să ghiceşti numărul prin introducerea unei valori de la tastatură. Afişează mesaje diferite dacă numărul este mai mare, mai mic sau dacă l-ai ghicit.
Exemplu consolă
Ghiciti un numar intre 1 si 10. Introduceti numarul: 3 Numarul cautat este mai mare! Introduceti numarul: 8 Numarul cautat este mai mic! Introduceti numarul: 6 Felicitari! Ati ghicit numarul!
2. Scrie un program care să facă suma unor numere întregi introduse de la tastatură. Suma va fi afişată la fiecare pas. Programul se va opri când se va introduce valoarea 0.
3. Introdu un număr întreg de la tastatură. Afişează cifrele acestuia.
Discussion
A se vedea mai jos o rezolvare ptr exercitiul 3, dar mai putin matematica :
Buna seara, v-as ruga sa imi explicati logica celor ultime randuri din Solutia exercitiului al 3 - lea: "int cifra = numar % 10;
Multumesc
Ca sa separam cifrele unui numar, sa zicem 1234, cea mai simpla metoda este operatia modulo (%), care ne returneaza doar restul unei impartiri. Astfel, cu % 10, vom obtine intotdeauna ultima cifra:
1234 % 10 = 4
Pentru a obtine toate cifrele unui numar, trebuie sa repetam operatiunea si este necesar sa eliminam ultima cifra, pe care am obtinut-o anterior cu modulo. Pentru a "sterge" ultima cifra, folosim acum operatia de impartire la 10, cu care obtinem numarul intreg, fara rest:
1234 / 10 = 123
Iar de acum trebuie doar repetati pasii modulo, respectiv impartire, pana la prima cifra. In acel moment, cand numarul ajunge la 1, operatia de impartire va returna 0, iar astfel, conditia buclei while nemaifiind "true", bucla se intrerupe.