Algoritmi și pseudocod

Algoritmul și structurile de bază în pseudocod

Ce este un algoritm, cum citești notația din lucrare (săgeata, partea întreagă, restul, barele) și cele trei structuri de bază: liniară, alternativă, repetitivă, cu diferența dintre test inițial și test final.

  • 20 min
  • La BAC: Subiectul al II-lea, 1
  • Verificat pe bareme
Ilustrație: Algoritmul și structurile de bază în pseudocod
Ilustrație generată pentru ZECE (artistică, nu o planșă științifică: pentru detalii exacte vezi schemele din lecție).

ții minte doar fișa asta și ești acoperit

Fișa de aur

  1. 01

    Algoritm = pași finiți și clari, de la date de intrare la rezultat, valabili pentru orice date din domeniu.

  2. 02

    Atribuirea x←x+1 înseamnă: calculez dreapta cu valoarea veche, apoi o pun în x.

    Truc: Se citește de la dreapta la stânga.

  3. 03

    Două operații speciale: [a/b] este câtul, a%b este restul. Lucrarea le explică în enunț.

  4. 04

    Trei structuri: liniară, alternativă, repetitivă.

  5. 05

    cât timp verifică înainte și se poate executa de zero ori. repetă...până când se execută cel puțin o dată și se oprește când condiția devine adevărată.

    Truc: cât timp continuă pe adevărat; până când se oprește pe adevărat.

  6. 06

    pentru i←a,b se ocupă singur de i: nu-l mări tu în corp.

1 din 8

Pe scurt

1 minesențialul, de recitit oricând

Culorile din lecție:termenidee-cheie

  • Un algoritm este o succesiune finită și clară de pași, de la date de intrare la rezultat.
  • Variabilele păstrează valori, expresiile le calculează, atribuirea (←) le schimbă.
  • Orice algoritm se construiește din trei structuri: liniară, alternativă, repetitivă.
  • Lucrarea descrie algoritmii în pseudocod, cu o notație fixă. După această lecție o citești fără efort.

Ce este un algoritm

3 min

Când îi explici cuiva cum să ajungă la tine acasă, îi dai pași. Dacă pașii sunt bine dați, oricine ajunge, de oriunde pornește din zona stabilită, și ajunge într-un timp finit. Asta e ideea de algoritm.

Formal, un algoritm este o succesiune de operații care transformă datele de intrare în date de ieșire (rezultatul). Programa cere și caracteristicile lui, dar nu le enumeră. În materialele de curs apar de obicei acestea:

CaracteristicaPe scurt

Generalitate
funcționează pentru orice date din domeniul stabilit, nu pentru un singur caz
Finitudine
se termină după un număr finit de pași
Claritate
fiecare pas are un singur înțeles

Date, variabile, atribuire

2 min

O variabilă e o cutie cu nume. La un moment dat, are o singură valoare. Atribuirea pune în cutie o valoare nouă, iar cea veche dispare.

s←0
s←s+5
s←s+2

După prima linie s este 0, după a doua 5, după a treia 7. Linia s←s+5 se citește așa: iau valoarea actuală a lui s, adun 5, pun rezultatul în s.

Interschimbarea e un exemplu bun de ce contează ordinea. Vrei să schimbi valorile lui x și y:

aux←x
x←y
y←aux

Dacă ai scrie direct x←y; y←x, ambele ar ajunge la valoarea lui y.

Notația din lucrare

3 min

Lucrările au aceeași notație, iar enunțul II.1 explică de obicei simbolurile speciale.

citește x,y
Ce înseamnă
primește valori de la intrare
scrie n
Ce înseamnă
afișează valoarea
←
Ce înseamnă
atribuire
Exemplu
x←x+1
a%b
Ce înseamnă
restul împărțirii numărului natural a la b nenul
Exemplu
17%5 este 2
[c]
Ce înseamnă
partea întreagă a numărului real c
Exemplu
[17/5] este 3
=, ≠, ≤, ≥
Ce înseamnă
comparații
Exemplu
x%2=0
și, sau
Ce înseamnă
operatori logici în condiții
Exemplu
i>n sau nr≠0
bare │, colțuri ┌ └, pătrat ■
Ce înseamnă
ce conține o structură și unde se termină
1 / 8

Pereche des întâlnită: n%10 este ultima cifră a lui n, iar [n/10] e numărul fără ultima cifră. La fel, x%2=0 înseamnă „x este par”.

Cele trei structuri de bază

5 min 2 întrebări la final

Structura liniară înseamnă pași unul după altul, în ordinea scrierii.

Structura alternativă alege una dintre două ramuri, după o condiție:

┌dacă x%2=0 atunci
│ y←y*y
│altfel
│ x←x-1
└■

Ramura altfel poate lipsi: atunci, dacă nu e adevărată condiția, nu se întâmplă nimic.

Structura repetitivă repetă un corp de instrucțiuni. Are trei forme:

cât timp C execută
Când se verifică
înainte de corp
Când se oprește
când C devine falsă
De câte ori minimum
0
repetă ... până când C
Când se verifică
după corp
Când se oprește
când C devine adevărată
De câte ori minimum
1
pentru i←a,b execută
Când se verifică
numărul de pași e fixat de a și b
Când se oprește
după ce i trece de b
De câte ori minimum
0, dacă a>b
1 / 3

Diferența dintre primele două se vede pe un exemplu mic. Pornește cu x←0:

┌cât timp x>0 execută
│ x←x-1
└■

Corpul nu se execută niciodată. Dar aici se execută o dată, iar x devine -1:

┌repetă
│ x←x-1
└până când x≤0

Exact această diferență e punctată în barem la II.1 d, în lecția despre algoritmi echivalenți.

De câte ori se execută corpul pentru i←3,1?

Care structură repetitivă execută corpul cel puțin o dată?

Structuri una în alta

3 min o întrebare la final

Algoritmii din lucrare au de obicei o structură în alta. Numărul de bare din față îți spune cât de adâncă e o linie. Iată un fragment din rezerva 2026, var. 5, II.1:

┌pentru i←m,n execută
│ x←i
│┌repetă
││┌dacă x%10=k atunci
│││ nr←nr+1
││└■
││ x←[x/10]
│└până când x=0
└■

Citit în cuvinte: pentru fiecare număr de la m la n, iau pe rând cifrele lui și număr de câte ori apare cifra k. Pentru datele din enunț (120, 126 și k=2), baremul dă răspunsul 8: fiecare dintre cele 7 numere de la 120 la 126 are cifra 2 la zeci, iar 122 o mai are o dată la unități.

Când vezi un algoritm nou, încearcă să-l spui într-o propoziție, ca aici. Te ajută mult la cerința b).

Cât este [17/5] și cât este 17%5?

Ce se cere la BAC

1 mincum apare la examen

  • II.1 a: urmărești algoritmul (lecția următoare).
  • II.1 b: găsești date pentru un rezultat dat.
  • II.1 c: îl traduci în C/C++ (modulul despre limbaj).
  • II.1 d: îl rescrii cu altă structură repetitivă (lecția despre algoritmi echivalenți).

Greșeli care costă puncte

1 mincapcanele de evitat

  • [n/10] luat drept cifră: e numărul fără ultima cifră; cifra e n%10.
  • Ramură atașată greșit: nu urmărești barele și execuți o linie în afara structurii ei.
  • Corp executat în plus sau în minus, pentru că nu ai observat dacă testul e la început sau la sfârșit.
  • Condiția de la până când citită ca la cât timp.

Termeni-cheie

Algoritm
Succesiune finită și clară de pași care transformă datele de intrare în rezultat, pentru orice date din domeniul stabilit.
Variabilă
O locație cu nume, care memorează o valoare ce se poate schimba în timpul executării.
Atribuire
Operația prin care variabila primește valoarea unei expresii: x←x+1. Valoarea veche se pierde.
Structură liniară
Pași executați unul după altul, în ordinea scrierii.
Structură alternativă
Alegerea între două ramuri după o condiție: dacă...atunci...altfel.
Structură repetitivă cu test inițial
cât timp...execută: condiția se verifică înainte de pas; corpul se poate executa de zero ori.
Structură repetitivă cu test final
repetă...până când: corpul se execută întâi; deci cel puțin o dată.
Structură repetitivă cu număr cunoscut de pași
pentru i←a,b execută: contorul i ia pe rând valorile de la a la b.
Partea întreagă [c]
Cel mai mare număr întreg mai mic sau egal cu c; pentru numere naturale, [a/b] este câtul împărțirii.
Restul a%b
Restul împărțirii numărului natural a la numărul natural nenul b.

Notițele mele

Salvat local

Surse