Ciclul Cît

Paragraful 4. Ciclul Cît
    Pînă acum Cangurul executa algoritmi unde era cunoscut din timp succesiunea de acțiuni. Cangurul execută 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ții 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 departe pînă cînd Cangurul nu va răspunde da. În așa fel noi nu știm din timp de cîte ori 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ă 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 etc. 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 timpul procesului î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 niciodată.
c)  După ce cilul 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 exemplfica 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). În figura 9 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 ciclul 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.


         Exemplu 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 (figura 10).


          Exemplul C:
          
          [
          cît e_linie
           rotire
           sfîrșitul ciclului
          ]
   Ciclul dat se va repeta de un număr nelimitat de ori deoarece condiția se respectă la fiecare dată. Nu există nici o linie în fața cangurului oricît nu s-ar roti el figura 11.


   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ătoare 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 tartina? 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ă să se joace. Un răufăcător fiind alături la sfătuit să se conducă de următorul algoritm:


         Cît nu sînt rezolvate toate problemele
         Rezolvi următoarea 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 cu temele pregătite.

1 комментарий: