- 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
- Se evalueaza expresia logica
- Daca valoarea expresiei logice este 1 (adevarata) se executa instructiunea si se revine la pasul 1
- 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
ce greu..:(
RăspundețiȘtergereVa rog sa faceti cea mai "babeasca" explicatie posibila ca sa inteleg si eu ceva ok?
RăspundețiȘtergeream explicat EFECT-ul. instructiunea trebuia sa fie clara daca ai fi facut partea de algoritmica mai intai ( http://mchelariu.wordpress.com/2009/08/12/l5-instructiunea-repetitiva-cat-timp/ )
RăspundețiȘtergereIn sectiune scrie "cat timp conditia este adevarata execut un set de instructiuni" . Evident setul se repeta pana cand conditia este... falsa.
Cum pot face produsul elementelor unui vector fara a folosi operatorul " * " ???
RăspundețiȘtergereinceputul 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];
p=1;
RăspundețiȘtergerefor(i=0;i<n;i++) {cin>>a[i];p=produs(p,a[i]);}
cout<<p;
:D