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