Ciclul Cît


 Ciclul Cît

Pînă acum cangurul executa algoritmi unde era cunoscut din timp succesiunea de acţiuni. Cangurul executa numai instrucţiunile dar nicidecum nu analiza situaţia din cîmpul de lucru.
Închipuiţivă un şef care dă ordine dar nu primeşte nici o înştiinţare despre rezultatele îndeplinirii lor; un şofer care conduce un transport cu ochii închişi. E clar, că în aşa fel departe nu ajungi. Pentru a alcătui algoritmi de rezolvare a problemelor mai complicate este nevoie şi de a analiza situaţiile posibile. Pentru aciasta cangurul are 4 instrucţiuni de analiză: e_margine, nu e_margine, e_linie, nu e_linie.
Fie că cangurul se află la o careva distanţă de la margine. Este nevoie de a aduce cangurul la margine. Cum de făcut?
Vom întreba cangurul “e margine?” Dacă cangurul răspunde nu el va îndeplini un salt şi din nou vom întreba “e margine?”, dacă răspunde din nou nu din nou va executa un salt şi aşa mai de parte pînă cînd cangurul nu va răspunde da. În aşa fel noi nu ştim din timp de cîte or vom întreba cangurul. Totul depinde la ce distanţă de la margine se află cangurul.
Scopul nostru e ca cangurul să îndeplinească instrucţiunile din calculator. Deaceea instrucţiunile de mai sus trebuie înscrise în limbajul algoritmic pentru cangur. Algoritmul trebuie să fie universal, adică să nu depindă de distanţa de la cangur pînă la margine. Pentru aceasta în limbajul algoritmic este instrucţiunea de ciclu – cît.
[
cît nu e_margine
salt
sfîrşitul ciclului
]
În caz general ciclul cît are forma:
Cît condiţie

Succesiune de instrucţiuni

Sfîrşitul ciclului


La îndeplinirea ciclului executantul la început verifică dacă se îndeplineşte condiţia. Dacă da atunci se îndeplineşte succesiunea de instrucţiuni, după care din nou se verifică condiţia ş.a.m.d. Dacă condiţia nu se îndeplineşte executantul îndeplineşte instrucţiunile ce urmează după sfîrşitul ciclului.
Vom ţine cont de următoarele proprietăţi ale ciclului cît:
a)      Condiţia nu se verifică în procesul îndeplinirii succesiunii de instrucţiuni
b)      Dacă condiţia nu se îndeplineşte de la început atunci succesiunea de instrucţiuni nu se va îndeplini nici odată.
c)      După ce ciclul cît a luat sfîrşit, independent de numărul de repetări, condiţia nu se mai îndeplineşte.
d)     Îndeplinirea ciclului cît poate să nu ia sfîrşit dacă condiţia are loc tot timpul (aşa numita ciclare)
Vom eximplifica prin cîteva exemple aceste proprietăţi.
Exemplul A
[
cît nu e_margine
salt
salt                                                       
sfîrşitul ciclului
]
Cît nu e margine cangurul va efectua cîte două salturi după care va verifica din nou condiţia(condiţia nu se verifică după fiecare salt).  Cangurul va verifica condiţia şi răspunsul va fi da după care va efectua două salturi, va verifica din nou condiţia, răspunsul fiind din nou da şi va încerca din nou să efectueze două salturi ceea ce este imposibil. Vom avea o eroare de tip refuz. Şi deci în procesul de îndeplinire a instrucţiunilor din ciclu condiţia nu se verifică, şi despre neîndeplinirea condiţiei executantul nu poate afla şi va încerca să îndeplinească instrucţiunile din ciclu pînă la sfîrşit.
Exemplul B.
[
cît e_linie
salt
sfîrşitul ciclului                                                                      
]
Ciclul dat nu se va efectua nici odată deoarece cangurul în faţa sa nu are nici o linie şi deci răspunsul la întrebarea “e_linie?” va fi de la bun început nu
Exemplul D:
[
cît nu e_linie
rotire
sfîrşitul ciclului
]                                                                                              
Ciclul dat se va repeta de un număr nelimitat de ori deoarece condiţia se respectă de fiecare dată. Nu există nici o linie în faţa cangurului oricît nu s-ar roti el
 


Exerciţii şi probleme:
1.       Folosind forma generală a ciclului cît, scrieţi următorul algoritm de îndeplinire a temei pentru acasă la limba străină, pentru a traduce un text:
Găsim prima propoziţie.
Traducem propoziţia.
Înscriem propoziţia tradusă.
Găsim următoarea propoziţie.
Traducem propoziţia.
Înscriem propoziţia tradusă…

2.       Aflînduse în oraş şi fiind flămînd Costel a întrat într-o cantină pentru a procura o tartină. Un răufăcător fiind alături la sfătuit să se conducă de următorul algoritm:
Cît simţi că eşti flămînd
Cumperi o tartină
Sfîrşitul ciclului
Mănînci tartina.
Va avea posibilitatea oare Costică să mănînce tartine?. Corectaţi algoritmul în aşa fel ca Costică să iasă sătul din cantină.

3.       Lui Ionel i-au fost date pentru acasă la matematică cîteva probleme. Venind acasă el hotărî mai întîi să îndeplinească tema pentru acasă după care pînă la cină sa se joace. Un răufăcător fiind alături l-a sfătuit să se conducă de următorul algoritm:
Cît nu sînt rezolvate toate problemele
Rezolvi următoare problemă.
Pleci şi te joci pînă la cină.
Sfîrşitul ciclului.
A doua zi Ionel a primit la matematică nota “doi”. Lămuriţi de ce. Corectaţi algoritmul în aşa fel ca Ionel să vină a doua zi ci temele pregătite.

4.       Alcătuiţi un algoritm pentru depistarea unei monede false cu ajutorul unei balanţe dacă e cunoscut că moneda falsă e mai grea.
5.       Ce va executa cangurul la îndeplinirea următorului algoritm
[
Cît e_linie
Salt
Rotire
Sfîrşitul ciclului
]                                                           
6.       Alcătuiţi un algoritm pentru a desena o linie pînă la margine dintr-un punct oarecare.

7.       Alcătuiţi un algoritm pentru a desena o linie pînă la margine după care cangurul se întoarce la poziţia iniţială.



Niciun comentariu:

Trimiteți un comentariu