Ce este o procedură?
Definiția unei proceduri
Printr-o procedură (sau subprogram) vom înțelege un ansamblu alcătuit din declarări și instrucțiuni scrise în vederea unei anumite prelucrări, ansamblu creat separat și identificat printr-un nume sugestiv.
Astfel, vei putea să-ți înveți Țestoasa noi instrucțiuni și să-i extinzi limbajul pe care implicit îl cunoaște. Spre exemplu, nu ar fi super ca prin apelul unei instrucțiuni numite "
curcubeu
", aceasta să traseze imediat unul? Oricând?
Definirea unei noi proceduri
Pentru a defini o procedură utilizăm instrucțiunea "
procedura
" (în engleză, "to
"/"end
" la final) care are forma generală:
procedura numele_ei parametri_optionali
lista_instructiuni
sfarsit
Exemplul trasării unui dreptunghi
Da, știm! Puteți trasa un dreptunghi imediat cu ajutorul comenzii "
d_dreptunghi
", cu Țestoasa în centrul său.
Totuși, cum putem face ca Țestoasa să îl deseneze efectiv?
Exemplul 1. Să analizăm în continuare procedura de mai jos:
procedura dreptunghi1
inainte 100
stanga 90
inainte 200
stanga 90
inainte 100
stanga 90
inainte 200
stanga 90
sfarsit
dreptunghi1
Am definit procedura "
dreptunghi1
" care trasează un dreptunghi cu dimensiunile (100 x 200
), apoi am apelat-o direct cu numele ei.
Dacă sunteți autentificat, Țestoasa a reținut definiția procedurii și de acum înainte o puteți apela oricând, fără a o mai defini.
A învățat o comandă nouă! Fantastic!
Exemplul 2. Optimizarea procedurii anterioare: observăm că se repetă 4 instrucțiuni de 2 ori, deci folosim "
repeta
":
procedura dreptunghi1
repeta 2 [
inainte 100
stanga 90
inainte 200
stanga 90
]
sfarsit
dreptunghi1
Exemplul 3. Optimizăm mai mult: o procedură care trasează același dreptunghi de fiecare dată e ok, însă ce facem dacă ne dorim să modificăm dimensiunile? Simplu. Folosim parametrii opționali:
procedura dreptunghi :lat1 :lat2
repeta 2 [
inainte :lat1
stanga 90
inainte :lat2
stanga 90
]
sfarsit
dreptunghi 200 90
După cum veți vedea, Țestoasa a învățat un cuvânt nou (procedură nouă) și anume "
dreptunghi
", care este urmat de cei doi parametri
(:lat1
și :lat2
). De acum, de fiecare dată când veți apela această procedură, cu dimensiunile corespunzătoare,
Țestoasa va ști ce are de făcut:
Observați faptul că la definirea parametrilor am folosit semnul două puncte (":
") înaintea numelor acestora, precum și în cadrul listei de instrucțiuni.
Avantajele utilizării procedurilor
Pe lângă extinderea limbajului Țestoasei tale, beneficiile folosirii procedurilor sunt multiple:
- reutilizarea codului – odată scris, un subprogram poate fi utilizat de către mai multe alte programe Logo;
- elaborarea algoritmilor prin descompunerea problemei în altele mai simple – astfel, puteți rezolva cu mult mai ușor problema;
- reducerea numărului de erori care pot apărea la scrierea programelor;
- depistarea cu ușurință a erorilor – verificăm de la bun început subprogramele, apoi modul în care le-am asamblat (le-am apelat din cadrul programului);
- realizarea unor programe ușor de urmărit/citit (lizibile).
Să nu uităm de curcubeu...
Deși un pic mai complicată, analizați și testați procedura de mai jos:
procedura curcubeu
grosimecreion 20
creion_sus
inapoi 20
creion_jos
directia 270
culoarecreion 4
arc 180 200
culoarecreion 14
arc 180 180
culoarecreion 6
arc 180 160
culoarecreion 2
arc 180 140
culoarecreion 1
arc 180 120
culoarecreion 13
arc 180 100
sfarsit
Detalii. Am setat dimensiunea creionului ca fiind de 20 de pixeli. Deoarece vreau să mă deplasez fără să trasez, merg înapoi 20 de pixeli (fix dimensiunea de trasare). Setez orientarea (direcția Țestoasei) ca fiind 270 de grade, deci o rotesc spre stânga 90 de grade. De ce? Vezi instrucțiunea
arc
(trasează un arc de cerc în sensul acelor de ceasornic). Aleg prima culoare pentru creion (4, roșu). Trasez primul arc (180 de grade - jumătate de cerc, raza de 200 de pixeli).
Apoi, aleg altă culoare și următorul arc îl trasez cu raza de dimensiune mai mică fix cu 20 de pixeli...
Exercițiu. Modificați procedura astfel încât să primească ca parametru dimensiunea arcului/creionului.