Structura repetitivă condiționată posterior
Clasa a VI-a – Informatică și TIC
Într-un algoritm, unele instrucțiuni trebuie repetate. Uneori știm exact de câte ori se repetă, iar alteori nu știm de la început numărul de pași necesari.
Structura repetitivă condiționată posterior se folosește atunci când repetarea depinde de o condiție, dar condiția este verificată după executarea instrucțiunilor.
1. Ce este structura repetitivă condiționată posterior?
Structura repetitivă condiționată posterior este o structură repetitivă cu număr necunoscut de pași, în care instrucțiunile se execută mai întâi, iar condiția se verifică la final.
Diferența importantă față de structura condiționată anterior este că aici corpul repetării se execută cel puțin o dată.
Reține!
La structura repetitivă condiționată posterior, nu este posibil ca instrucțiunile din interior să nu se execute deloc. Ele se execută prima dată, apoi se verifică dacă repetarea continuă sau se oprește.
2. Forma generală
Forma generală a structurii este:
Repetă
instrucțiuni
Până când condiție
Instrucțiunile se repetă până când condiția devine adevărată. Când condiția este adevărată, algoritmul se oprește.
3. Cum funcționează pas cu pas?
- Se execută instrucțiunile din corpul structurii repetitive.
- Se verifică valoarea condiției.
- Dacă această condiție nu este îndeplinită, instrucțiunile se repetă.
- Dacă această condiție este îndeplinită, repetarea se oprește.
- Algoritmul continuă cu instrucțiunea următoare.
4. Exemplu din viața reală
Imaginează-ți că ai de învățat o poezie. O citești cel puțin o dată, apoi verifici dacă ai reținut-o. Dacă nu ai reținut-o, o citești din nou.
Repetă
Citește poezia
Încearcă să o spui fără ajutor
Până când știi poezia
Prima citire se face obligatoriu. Abia după aceea verifici dacă ai învățat poezia.
5. Comparație cu structura condiționată anterior
| Structura repetitivă | Când se verifică starea? | Se execută cel puțin o dată? | Formă simplificată |
|---|---|---|---|
| Condiționată anterior | La început | Nu întotdeauna | Cât timp condiție execută |
| Condiționată posterior | La final | Da | Repetă ... până când condiție |
6. Exemplu: afișarea numerelor de la 1 la 10
Problemă
Să se afișeze numerele de la 1 la 10, folosind structura repetitivă condiționată posterior.
Algoritm în pseudocod
i ← 1
Repetă
Scrie i
i ← i + 1
Până când i > 10
Explicație
Variabila i pornește de la valoarea 1. Se afișează valoarea ei, apoi se mărește cu 1.
Repetarea se oprește când i devine mai mare decât 10.
Se vor afișa:
1 2 3 4 5 6 7 8 9 10
7. Există acest bloc în Scratch?
În Scratch nu există un bloc special pentru structura:
Repetă
instrucțiuni
Până când condiție
Totuși, această structură poate fi simulată. Pentru simulare, instrucțiunile care trebuie
executate cel puțin o dată se pun înaintea blocului repetă până când, apoi se repetă și în interiorul lui.
Ideea de simulare în Scratch
Structura teoretică:
Repetă
instrucțiuni
Până când condiție
Simulare în Scratch, descrisă textual:
instrucțiuni
repetă până când condiție
instrucțiuni
Astfel, instrucțiunile se execută o dată înainte de verificarea condiției, apoi se repetă până când condiția devine adevărată.
8. Exemplu în Scratch: ghicește numărul
Problemă
Simona alege un număr secret, iar Andrei trebuie să îl ghicească. Programul trebuie să ceară un răspuns cel puțin o dată și să continue până când răspunsul este corect.
Algoritm în cuvinte
- Se stabilește numărul secret.
- Utilizatorul este întrebat care este numărul.
- Dacă răspunsul este greșit, programul întreabă din nou.
- Când răspunsul este corect, programul afișează un mesaj de felicitare.
Algoritm Scratch, descris textual
când se dă click pe stegulețul verde
setează secret la 27
întreabă "Ghicește numărul:" și așteaptă
setează raspuns_utilizator la răspuns
repetă până când raspuns_utilizator = secret
spune "Nu ai ghicit. Mai încearcă!" pentru 2 secunde
întreabă "Ghicește numărul:" și așteaptă
setează raspuns_utilizator la răspuns
spune "Bravo! Ai ghicit numărul!"
Prima întrebare este pusă înainte de blocul repetă până când, deoarece structura condiționată posterior
trebuie să execute instrucțiunile cel puțin o dată.
9. Exemplu: câte cifre are un număr
Problemă
Se citește un număr natural n. Să se afișeze câte cifre are numărul.
Algoritm în pseudocod
Citește n
nr ← 0
Repetă
nr ← nr + 1
n ← [n / 10]
Până când n = 0
Scrie nr
Explicație
La fiecare pas, eliminăm ultima cifră a numărului prin împărțire întreagă la 10.
Variabila nr numără câte cifre au fost eliminate.
Pentru n = 7013, pașii sunt:
| Pas | Valoarea lui n | Valoarea lui nr |
|---|---|---|
| Inițial | 7013 | 0 |
| Pasul 1 | 701 | 1 |
| Pasul 2 | 70 | 2 |
| Pasul 3 | 7 | 3 |
| Pasul 4 | 0 | 4 |
La final se afișează:
4
10. Simulare în Scratch: câte cifre are un număr
În Scratch, algoritmul poate fi descris astfel:
când se dă click pe stegulețul verde
întreabă "Dă un număr natural:" și așteaptă
setează n la răspuns
setează nr la 0
modifică nr cu 1
setează n la partea întreagă din n / 10
repetă până când n = 0
modifică nr cu 1
setează n la partea întreagă din n / 10
spune unește "Numărul de cifre este: " cu nr
Primele două instrucțiuni de prelucrare se execută înaintea blocului repetă până când,
pentru a imita structura repetitivă condiționată posterior.
11. Exemplu: citire până la introducerea valorii 0
Problemă
Se citesc numere până când se introduce valoarea 0.
Să se afișeze câte numere au fost introduse înainte de 0.
Algoritm în pseudocod
nr ← 0
Repetă
Citește x
Dacă x ≠ 0 atunci
nr ← nr + 1
Până când x = 0
Scrie nr
Valoarea 0 are rol de semnal de oprire. Algoritmul citește cel puțin o valoare,
apoi verifică dacă trebuie să se oprească.
12. Bucla infinită
O buclă infinită apare atunci când repetarea nu se mai oprește niciodată. Acest lucru se întâmplă dacă instrucțiunile din interior nu modifică variabilele din condiție.
Exemplu greșit:
i ← 1
Repetă
Scrie i
Până când i > 10
Algoritmul este greșit deoarece i rămâne mereu 1.
Condiția i > 10 nu devine niciodată adevărată.
Varianta corectă:
i ← 1
Repetă
Scrie i
i ← i + 1
Până când i > 10
13. Greșeli frecvente
- Se uită că instrucțiunile se execută cel puțin o dată.
- Se confundă structura condiționată posterior cu structura condiționată anterior.
- Se formulează greșit condiția de oprire.
- Nu se modifică variabila din condiție, iar algoritmul intră în buclă infinită.
- Se încearcă folosirea directă a unui bloc Scratch care nu există pentru această structură.
- La simularea în Scratch, se uită copierea primei execuții înainte de blocul
repetă până când.
14. Exerciții
- Scrie un algoritm care citește o parolă până când utilizatorul introduce parola corectă.
- Scrie un algoritm care afișează numerele de la
1laN, folosind structura repetitivă condiționată posterior. - Scrie un algoritm care afișează câte cifre are un număr natural
n. - Scrie un algoritm care citește numere până când se introduce
0și afișează suma numerelor citite. - Realizează în Scratch o simulare pentru jocul „Ghicește numărul”.
- Realizează în Scratch un algoritm care cere numele utilizatorului până când acesta introduce un text nenul.
Pe scurt
Structura repetitivă condiționată posterior execută mai întâi instrucțiunile și verifică apoi condiția. De aceea, instrucțiunile se execută cel puțin o dată.
În Scratch nu există un bloc dedicat pentru această structură, dar o putem simula executând o dată
instrucțiunile înainte de blocul repetă până când, apoi repetându-le în interiorul blocului.
repetă până când.