luni

Algoritmi repetitivi.Ciclu cu condiţie.

Pîna în prezent, toţi algoritmii elaboraţi de noi nu analizau situaţia din mediul de lucru al executantului. De aici rezultă că, centrul de comandă al executantului dirijează executarea comenzilor făra verifica dacă este înstare să execute comenzile primite.Acest mod de eleaborare a algoritmilor complică esenţial soluţionarea problemelor întîlnite în practica.
Pentru a evita astfele de situaţie executanţii sunt dotaţi cu senzori, care comunica centrului de comandă anumite informaţii din mediul de lucru al executantului.
În cazul algoritmilor repetitivi, analiza din mediul de lucru se realizează cu ajutorul instrucţiunii compuse Cît Această instrucţiune asigură execuţia ciclică a unei segvenţe de instrucţiuni atîta timp, cît în mediul de lucru se respectă anumite condiţii. Formatul instrucţiunii Cît:
CÎT Condiţie
Instrucţiunea 1
Instrucţiunea 2
...
Instrucţiunea 1
SFÎRŞITUL CICLULUI
· Condiţiile reprezintă expresii logice care indică anumite situaţii din mediul de lucru al executantului.
Expresii logice folosite de executntul Cangurul:
E_LINIE ; E_MARGINĂ;
NU E_LINIE; NU E_MARGINĂ
· Instrucţiunea Cît se numeste Ciclu cu condiţie,deoarece la execuţia ei se repetă ciclic aceeaşi segvenţă de instrucţiuni,iar numărul de repetări se stabileşte în procesul derulării programului.
Implicarea instrucţiunii Cît pesupune existenţa între Centrul de comandă şi executant a doua canale de transmisie a informaţiei:
-Canal direct destinat transmiterii comenzilor de la Centrul de comandă la executant ;
- Canal invers.
· Algoritmii ce conţin segvenţe de instrucţiuni, execuţia cărora depinde de informaţiile colectate în mediul de lucru al executantului, se numesc algoritmi cu conexiune inversă.
Eroare de execuţie apare atunci cînd în procesul de execuţie unui program executantul nu poate îndeplini comanda .
Exemple:
1.

[
CIT NU E_LINIE
CIT NU E_LINIE
PAS
SFIRSITUL CICLULUI
ROTIRE
SFIRSITUL CICLULUI
]
2.
[
REPETA 4 ORI
CIT NU E_MARGINE
PAS
SFIRSITUL CICLULUI
ROTIRE
SFIRSITUL REPETARII
]

Algoritmi repetitivi.Ciclu cu contor.Exemple

Deci în continuare vor fi propuse cîteva exeple de algoritmi în care e folosit ciclu cu contor .
Exemple:

1.
PROCEDURA Linie

REPETA 7 ORI

PAS

SFIRSITUL REPETARII

SFIRSITUL PROCEDURII

[

EXECUTA Linie

ROTIRE

SALT

ROTIRE

EXECUTA Linie

ROTIRE

ROTIRE

ROTIRE

SALT

ROTIRE

ROTIRE

ROTIRE

EXECUTA Linie

ROTIRE

SALT

ROTIRE

EXECUTA Linie

ROTIRE

SALT

SALT

SALT

ROTIRE

SALT

SALT

SALT

SALT

SALT

SFIRSITUL REPETARII

]

2.

[

REPETA 4 ORI

PAS

ROTIRE

PAS

ROTIRE

PAS

ROTIRE

PAS

ROTIRE

PAS

PAS

ROTIRE

PAS

ROTIRE

PAS

ROTIRE

PAS

ROTIRE

PAS

ROTIRE

PAS

PAS

ROTIRE

PAS

PAS

ROTIRE

PAS

ROTIRE

PAS

ROTIRE

PAS

ROTIRE

PAS

ROTIRE

PAS

PAS

ROTIRE

SALT

SALT

SALT

SALT

SFIRSITUL REPETARII

]

3.

[

REPETA 4 ORI

SALT

ROTIRE

PAS

SALT

ROTIRE

SALT

ROTIRE

SALT

SALT

ROTIRE

SALT

SALT

ROTIRE

PAS

PAS

ROTIRE

SALT

ROTIRE

SALT

SALT

ROTIRE

SALT

SFIRSITUL REPETARII

]

marți

Subalgoritmi

Ca şi în cazul limbajelor folosite de oameni, un limbaj de programare este alcătuit dintr-un set de reguli ce guvernează alcătuirea propoziţiilor şi un set de reguli care determină înţelesul, semnificaţia propoziţiilor alcătuite.
În cazul limbajelor de programare echivalentul propoziţiei este programul.
Sintaxa programelor poate fi descrisă de diverse modele de utilizare a instrucţiunilor, a simbolurilor şi a cuvintelor auxiliare.


În urama unei analize sa depistat, că unele problem practice conţin instructiuni sau segvenţe de instrucţiuni ce execută aceleaşi operaţii. De exemplu, dorim sa desenăm opt pătrate aranjate in ordinea urmatoare:

Deci pentru a excuta acest program noi trebie să introducem de OPT ori urmatorul algoritm:
ÎNCEPUT
PAS
ROTIRE
PAS
ROTIRE
PAS
ROTIRE
PAS
ROTIRE
SALT
SALT
SFÎRŞIT
Respectiv programul dat va fi foarte lung, iar scriera lui va reprezenta o muncă deosebinta. Şi nu este exclus faptul că în timpul elaborarii programului să scapăm careva instrucţiuni, şi respective la execuţie ne va da erore şi vom fi neviţi sa revedem programul.O soluţie a aceste problem sete elaborarea unui program auxiliar pentru desenarea unui pătrat de dimensiunile dorite şi folosirea ulterioară a acestui program pentru desenarea unui numar necesar de pătrate.
Programl auxiliar se numeşte subprogram, iar programul ce îl apeleaza se numeşte program principal.
în cazul executantului cagurul subprogramul se numeste procedură şi are următoarea structură:



Exemple:
1) PROCEDURA PATRAT

PAS
ROTIRE
PAS
ROTIRE
PAS
ROTIRE
PAS
ROTIRE
SALT
SALT
SFIRSITUL PROCEDURII
[
EXECUTA PATRAT
EXECUTA PATRAT
EXECUTA PATRAT
EXECUTA PATRAT
EXECUTA PATRAT
EXECUTA PATRAT
EXECUTA PATRAT
EXECUTA PATRAT
]
Rzultatul executării:


2) PROCEDURA patrat
PAS
ROTIRE
PAS
ROTIRE
PAS
ROTIRE
PAS
ROTIRE
ROTIRE
SALT
ROTIRE
ROTIRE
ROTIRE
SFIRSITUL PROCEDURII
PROCEDURA TRECERE
ROTIRE
ROTIRE
ROTIRE
SALT
SALT
SALT
ROTIRE
SALT
SALT
SFIRSITUL PROCEDURII
[
EXECUTA patrat
EXECUTA patrat
EXECUTA patrat
EXECUTA TRECERE
EXECUTA patrat
EXECUTA patrat
EXECUTA patrat
EXECUTA TRECERE
EXECUTA patrat
EXECUTA patrat
EXECUTA patrat
]
Rzultatul executării:

3) PROCEDURA Dreptunghi
PAS
ROTIRE
PAS
PAS
ROTIRE
PAS
ROTIRE
PAS
PAS
ROTIRE
SALT
SALT
SFIRSITUL PROCEDURII
[
EXECUTA Dreptunghi
EXECUTA Dreptunghi
EXECUTA Dreptunghi
]
Rzultatul executării:

4) PROCEDURA Linie
PAS
PAS
PAS
PAS
PAS
SFIRSITUL PROCEDURII
[
EXECUTA Linie
ROTIRE
SALT
ROTIRE
EXECUTA Linie
ROTIRE
ROTIRE
ROTIRE
SALT
ROTIRE
ROTIRE
ROTIRE
EXECUTA Linie
ROTIRE
SALT
ROTIRE
EXECUTA Linie
ROTIRE
SALT
SALT
SALT
ROTIRE
SALT
SALT
SALT
SALT
SALT
SFIRSITUL REPETARII
]
Rzultatul executării:


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.