Tematică științifică · 1.3
Structurile fundamentale
Structura secvențială, structura alternativă cu formele ei și structura repetitivă cu cele trei variante, în pseudocod și în C++, cu procesul de control, criteriul de alegere a variantei și compunerea structurilor prin succesiune și imbricare.
Structurile fundamentale sunt structura secvențială, structura alternativă și structura repetitivă. Teorema lui Böhm și Jacopini arată că ele sunt suficiente: orice algoritm se poate exprima într-o formă structurată folosind numai aceste trei structuri.
Fiecare structură are un singur punct de intrare și un singur punct de ieșire. După încheierea ei, execuția continuă cu prima instrucțiune aflată după structură.
Fiecare structură este dată mai jos în pseudocod, apoi în C++ și în Python. În C++, corpul unei structuri se delimitează cu acolade; în Python, prin indentare.
Structura secvențială
Fiecare pas predă controlul pasului următor, fără nicio decizie și fără revenire la un pas anterior. Structura secvențială se mai numește structură liniară și cuprinde operațiile de citire, de scriere și de atribuire.
P₁
P₂
…
Pₙ
Exemplu. Interschimbarea valorilor a două variabile se face cu ajutorul unei a treia variabile, numită variabilă de manevră.
Algoritm
aux ← a
a ← b
b ← aux
C++
aux = a;
a = b;
b = aux;
Python
aux = a
a = b
b = aux
Structura alternativă
Ea se mai numește structură decizională.
Forma completă. Pe fiecare ramură se execută o prelucrare:
dacă condiție atunci
P₁
altfel
P₂
sfdacă
C++
if (a > b)
cout << a;
else
cout << b;
Python
if a > b:
print(a)
else:
print(b)
Cuvântul altfel se scoate din pseudocod.
dacă n < 0 atunci
n ← -n
sfdacă
Când algoritmul cere ca acțiunea să se execute pe ramura falsă, condiția se neagă.
Structuri alternative imbricate
O structură alternativă poate fi cuprinsă în interiorul alteia. Când imbricarea se face pe ramura
altfel, se obține alegerea între mai multe prelucrări:
C++
if (nota < 5)
cout << "insuficient";
else if (nota < 7)
cout << "suficient";
else if (nota < 9)
cout << "bine";
else
cout << "foarte bine";
Python
if nota < 5:
print("insuficient")
elif nota < 7:
print("suficient")
elif nota < 9:
print("bine")
else:
print("foarte bine")
În Python, imbricarea pe ramura altfel se scrie cu cuvântul elif, care ține locul perechii
else if.
Structura alternativă generalizată
Selectorul ia valori dintr-o mulțime ordonată de elemente de
același tip cu el. Fiecărei valori îi corespunde un caz, iar cazului îi corespunde o acțiune. Când
selectorul nu are valoarea niciunui caz, se execută acțiunea de pe ramura altfel.
Algoritm
în cazul că cifra
cazul 0:
scrie "zero"
cazul 1:
scrie "unu"
altfel
scrie "altceva"
sfârșit_în_cazul
C++
switch (cifra) {
case 0:
cout << "zero";
break;
case 1:
cout << "unu";
break;
default:
cout << "altceva";
}
Python
match cifra:
case 0:
print("zero")
case 1:
print("unu")
case _:
print("altceva")
Instrucțiunea match există în Python începând cu versiunea 3.10. Spre deosebire de switch din
C++, execuția nu trece de la un caz la următorul, deci nu este nevoie de break. Aceeași selectare
se poate scrie și cu if … elif … else.
Structura alternativă generalizată cu n cazuri este echivalentă cu n structuri alternative simple imbricate, în care condiția fiecăreia compară selectorul cu valoarea cazului. Ea nu este a patra structură fundamentală, ci o formă a structurii alternative.
Structura repetitivă
Structura repetitivă se mai numește structură iterativă.
Procesul de control
Repetarea este condusă de un proces de control, ale cărui acțiuni sunt date în tabelul următor.
| Acțiunea | Ce face |
|---|---|
| inițializarea | stabilește starea de dinaintea primei parcurgeri a corpului ciclului |
| testarea | compară starea curentă cu starea care încheie repetarea |
| modificarea | schimbă starea curentă către starea finală; la structurile cu test inițial și cu test final face parte din corpul ciclului, iar la structura cu număr cunoscut de repetări este scrisă în antet |
La structurile cu test inițial și cu test final, corpul ciclului trebuie să modifice cel puțin una dintre variabilele care apar în condiție, astfel încât testarea să încheie repetarea la un moment dat.
De exemplu, dacă repetarea se încheie la valoarea 20, iar variabila pornește de la 0 și crește din 3 în 3, ea ia valorile 0, 3, 6, 9, 12, 15, 18, 21 și nu atinge niciodată valoarea 20. Un ciclu infinit presupune executarea unui număr infinit de pași, ceea ce contrazice definiția algoritmului.
Materialul acesta se citește pe educamp.ro și nu se tipărește.
S-a încheiat minutul de citit liber.
Ce cuprinde subcapitolul
- Structura secvențială
- Structura alternativă
- Structura repetitivă
- Compunerea structurilor
Continuă lectura ca și cursant
Cel puțin un subcapitol din fiecare capitol este disponibil gratuit și integral. Pentru a citi toate celelalte subcapitole ale disciplinei, te înscrii la cursul de pregătire.
Te înscrii, alegi în cont când începe cursul și plătești prima lună prin transfer bancar. Pentru a vedea mai întâi cum este prezentată materia, poți reveni la primul subcapitol al capitolului.
Acces la suportul de curs
25 RON / lună, fără ședințe
Ce cuprinde:
- Acces la toate lecțiile disponibile
- Suport de curs pentru tematica științifică și metodică
- Exemple, explicații și exerciții
- Acces la materialele noi adăugate pe platformă
- Posibilitatea de a adresa întrebări
Poți alege și variante cu ședințe online, în grup sau individuale. Le vezi pe pagina cursului.
Ai întrebări sau o problemă? Scrie-mi pe WhatsApp, la 0745 874 576.
Surse (5)
- Blaga, A., Botezan, C.-M., Pătrașcu, D., Tătaru, D. I., „Informatică și TIC. Manual pentru clasa a VI-a”, Editura CD Press, București
- Cosman, C. D., Coriteac, M. E., „Informatică și TIC. Manual pentru clasa a VI-a”, Editura Sigma, București
- Miloșescu, M., „Informatică. Manual pentru clasa a IX-a, profilul real, intensiv”, Editura Didactică și Pedagogică, București, 2005
- Niță, A., Popescu, C., Chirilă, D. N., Niță, M., „Informatică și TIC. Manual pentru clasa a V-a”, Editura Corint Logistic, București, 2022
- „Tutorialul de Python”, documentația oficială a limbajului Python, https://docs.python.org/ro/3/tutorial/index.html