Lecții · BAC · Informatica
Structuri repetitive: for, while și repeat
Tema din testele ANCE: Structuri repetitive
Subiectul II cere să urmărești ce afișează un ciclu, să transformi un for în while și să scrii un program cu repetare. Aici ai cele trei instrucțiuni în Pascal și C++, tehnica tabelului de urmărire și punctele pe care le dă baremul.
- Ce trebuie să știi
- Cum apare la examen
- Exemplu rezolvat
- Greșeli tipice
- Verifică-te
Ce trebuie să știi
Cele trei instrucțiuni repetitive
| Ce face | Pascal | C++ |
|---|---|---|
| repetare cu contor | for i := 1 to n do | for (i = 1; i <= n; i++) |
| repetare cât timp | while cond do | while (cond) |
| repetare până când | repeat ... until cond; | do { ... } while (cond); |
Instrucțiunea for are contorul, valoarea inițială și cea finală scrise în antet, iar numărul de repetări este cunoscut dinainte: de la la se execută ori. while verifică înainte de fiecare repetare, deci poate să nu se execute niciodată. repeat verifică la sfârșit, deci corpul lui se execută cel puțin o dată; atenție că until oprește când condiția devine adevărată, iar while continuă cât timp este adevărată.
Corpul ciclului
Dacă repeți mai mult de o instrucțiune, ai nevoie de begin ... end; în Pascal și de acolade în C++. Fără ele se repetă doar prima instrucțiune, iar restul se execută o singură dată, după ciclu.
Transformarea unui for în while
Aceasta este cerința care apare în teste și baremul o punctează pe elemente:
- 1)atribuirea valorii inițiale a contorului, înainte de ciclu
- 2)condiția din
while, cu aceeași limită ca înfor - 3)instrucțiunea compusă, cu toate instrucțiunile din corp
- 4)incrementarea contorului, în interiorul corpului
Dacă lipsește incrementarea, ciclul nu se mai oprește; dacă lipsește atribuirea inițială, contorul pornește de la o valoare nedefinită.
for i := 1 to 5 do
begin
read(x);
s := s + x;
end;i := 1;
while i <= 5 do
begin
read(x);
s := s + x;
i := i + 1;
end;Tabelul de urmărire
Când se cere ce afișează programul, scrie un tabel cu o coloană pentru fiecare variabilă și un rând pentru fiecare repetare. Notează și ce se afișează, în ordine. Este singura metodă care nu te lasă să pierzi o iterație.
Tipare care revin în teste
- suma sau numărarea:
s := s + x,k := k + 1 - cifrele unui număr:
n mod 10dă ultima cifră,n div 10taie ultima cifră, iar ciclul mergewhile n > 0; pentru ciclul nu se execută deloc, de aceea numărul de cifre se tratează separat - puterile succesive:
p := 1și apoip := p * acât timpp <= Q - înaintare și alunecare (melcul din fântână): în fiecare zi
dist := dist + x, iar noaptea, dacă nu a ieșit,dist := dist - y - afișarea pe coloane:
write(i:5)aliniază la cinci poziții,writelntrece la rând nou
Ce afișează, exactwrite lasă cursorul pe același rând, writeln trece la rândul următor. Dacă programul scrie write('s=', s), răspunsul cerut cuprinde și prefixul s=, nu doar valoarea; formatul face parte din răspuns.
Restul lecției e în abonament
Itemii reali ANCE în care apare tema, exemplul rezolvat pas cu pas, greșelile tipice și cele 7 întrebări de verificare se deschid cu abonamentul. „Ce trebuie să știi” rămâne gratuit.
Se deschide cu abonamentul
- Cum apare la examen
- Exemplu rezolvat
- Greșeli tipice
- Verifică-te
