duminică

ALGORITMI ŞI EXECUTANŢI


Algoritmi şi executanţi
În timpul vieţii sale omul este pus în diverse situaţii de problemă, de la cele mai simple pînă la cele mai complicate. Dar pentru a-i reuşi să le rezolve, el îşi planifică acţiunile, încearcă să prevadă, să ia în consideraţie toate variantele posibile de desfăşurare a procesului care ar duce la rezultatul scontat. În context, să examinăm o situaţie cunoscută de mai mulţi.
De exemplu, vrem să cumpărăm o pîine de secară. Dar fiind preocupaţi de alte treburi, îl trimitem pe copil la magazin, pentru prima oară. Cum vom proceda în cazul dat? La început îi explicăm, cu destulă claritate, succesiunea acţiunilor pe care le va avea de făcut:
– mergi la magazinul “X”;
– intri în magazinul “X”;
– iei un coş gol;
– intri în secţia “produse de panificaţie”;
– pui în coş o pîine de secară;
– achiţi costul la casă;
– muţi pîinea din coş în punga noastră;
– pui coşul la loc;
– ieşi din magazin şi revii acasă.
De fapt, ce am făcut noi?
Am elaborat un plan de acţiuni, realizarea căruia duce la rezolvarea problemei. Aşadar, pentru a soluţiona o problemă, trebuie să cunoaştem succesiunea de acţiuni, de paşi care ar conduce la rezultatul scontat. Această succesiune de acţiuni poate fi elaborată sau cunoscută din timp (experienţă proprie, literatură) şi aplicată; ea nu este altceva decît un algoritm, prin a cărui executare se rezolvă “problema pîinii”. Aceeaşi succesiune de acţiuni este utilizată de copil şi în cazul în care îl trimitem să cumpere două pîini, lapte, sare sau alte produse. Am putea spune chiar că acelaşi algoritm se utilizează pentru rezolvarea unei întregi clase de probleme asemănătoare (deşi datele de intrare diferă, ele au totuşi afinităţi). În exemplul de mai sus părintele a elaborate algoritmul, iar copilul l-a urmat (îndeplinit).
Prin algoritm se înţelege o prescripţie (indicaţie) precisă şi clară pentru executant, ca acesta să efectueze o succesiune de operaţii orientate spre atingerea scopului indicat sau spre rezolvarea problemei formulate.
Termenul algoritm provine de la Algorithmi – numele marelui matematician persan scris (în latină) Abu Ja’far ibn Musa al Khowarizmi (din oraşul Khowarazm – astăzi Khiva din Uzbekistan), care a formulat regulile de efectuare a operaţiilor aritmetice în sistemul zecimal de numeraţie. La început, noţiunea de algoritm îngloba numai regulile de efectuare a celor patru operaţii aritmetice cu numere de mai multe cifre. Ulterior, această noţiune a început să fie folosită în general pentru notarea succesiunilor de operaţii care duceau la rezolvarea problemei formulate.
Ca un algoritm pot fi concepute şi reţeta de preparare a bucatelor, şi regulile de utilizare a casetofonului, a maşinii de spălat ş.a.
Executarea algoritmului poate avea un caracter mecanic, adică nu e
obligatoriu să cunoşti arta culinară pentru a găti o budincă, dacă ai la îndemînă reţeta cu un set de acţiuni simple şi clare pentru oricine. Dacă urmărim prescripţia indicată pas cu pas, ajungem neapărat la rezultatul scontat. Observăm că algoritmul e alcătuit din acţiuni, numite instrucţiuni. Fiecare instrucţiune îi prescrie executantului să îndeplinească o acţiune elementară. Executarea succesivă a mai multor acţiuni de acest fel duce la rezolvarea problemei. Orice acţiune trebuie terminată de executant înainte de a se trece la îndeplinirea operaţiei următoare. Sus-numita proprietate a algoritmului se numeşte discontinuitate. Îndeplinind o instrucţiune de algoritm, executantul ştie cu certitudine care trebuie efectuată ulterior. Respectiva proprietate a algoritmului se numeşte exactitate.
Cea mai importantă particularitate a algoritmului se numeşte finititudine. Prin intermediul aceluiaşi algoritm pot fi rezolvate mai multe probleme de acelaşi tip. Această proprietate a algoritmului se numeşte universalitate. Universalitatea sporeşte considerabil valoarea practică a algoritmilor.
Fiecare algoritm este elaborat pentru un anumit executant. Important e ca executantul să poată efectua fiece acţiune prescrisă în algoritm, pentru a rezolva problema conform acestuia.
De exemplu:
dacă pentru un matur e înţeleasă prescripţia “adăugăm o lingură de bicarbonat”, pentru un minor ar trebui să scriem: “într-o lingură mare se pune o linguriţă de bicarbonat de sodiu, se toarnă în lingură oţet (ca să fie plină), conţinutul lingurii se toarnă în cratiţă etc.”.
Executantul algoritmului poate fi nu numai omul, ci şi vreun animal dresat, o maşină, un computer. Setul de instrucţiuni pe care le poate îndeplini executantul dat se numeşte repertoriul de instrucţiuni al executantului. La elaborarea algoritmului se vor folosi numai instrucţiunile din repertoriul executantului ales. Deci in contintinuare vom utiliza executantul CANGUR.





REPERTORIUL DE INSTRUCŢIUNI AL EXECUTANTULUI CANGUR

Cangurul poate executa următoarele instruc- ţiuni simple:
PAS – se mişcă în direcţia în care se “uită”, cu un pătrăţel, şi trage o linie de unde a pornit;
SALT – se mişcă în direcţia în care se “uită”, cu un pătrăţel, dar nu trage linie de unde a pornit;
ROTIRE – se roteşte cu 90 o după acele ceasornicului.
Pentru algoritmi mai complicaţi se folosesc procedeele care pot fi scrise cu ajutorul cuvîntului
rezervat PROCEDURE şi, respectiv, apelat cu EXECUTĂ .
De asemenea, sînt două instrucţiuni de ciclu
REPETĂ N ORI Secvenţă
SFÎRŞITUL
REPETĂRII
CIT <>
Secvenţă
SFÎRŞITUL CICLULUI
Unde în calitate de condiţie se folosesc:
E_ MARGINE,
NU E_ MARGINE,
E_ LINIE,
NU E_ LINIE.
Instrucţiunea de ramificare:
DACĂ ATUNCI
ALTFEL
.


Cîteva exemple de algoritmi pentru executantul CANGUR:

Executantul nu ştie nimic despre scopul final al algoritmului. El execută instrucţiunile din algoritm fără amedita care-i sensul şi scopul executării instrucţiunii date.

Un comentariu: