Extras din proiect
Capitolul 1
1.1 Introducere
Inauntrul oricariu program care dureaza exista un
program concentrat care incearca sa iasa de acolo.
Legea programelor mari(a lui Hoare)
Ca programatori ne gasim de mai multe ori in situatia de a efectua o secventa de instructiuni de mai multe ori (de exemplu un calcul) pentru
date diferite sau pentru aceleasi date.In aceste situatii este de dorit ca respectiva secventa de instructiuni sa fie scrisa separat sub forma unui subprogram care va fi indentificat prin nume.
Un subprogram este format din doua parti din care una este declarativa,
iar cealalta executabila.Partea declarativa este indentica cu partea declarativa a unui program,aceasta continand declaratii de variabilitate,constante,tipuri de date etc.
Partea executabila este formata dintr-o secventa de instructiuni asemanatoare secventei “begin – end.” cu singura diferenta ca un subprogram se termina intotdeauna cu “;” .
Instructiunile programului principal se succed in ordine de sus in jos.In momentul unui apel de subprogram se vor executa instructiunile acestuia,iar,dupa terminarea subprogramului,se va reveni la executia instructiunilor din programul principal.
Un subprogram poate apela la randul sau un alt subprogram,sau se poate apela pe sine(procedeu ce se numeste recursivitate).
Cazuri in care este utila folosirea de subprograme:
1. Este eficient sa folosim subprograme daca avem de efectuat aceeasi operatie de mai multe ori.Vom scrie astfel o portiune de programe pe care o vom apela de cate ori avem nevoie.In consecinta vom tasta mai putin.programul fiind mult mai usor de urmarit si corectat;in plus,se obtine o reducere a lungimii programului si a dimensiunii memoriei ocupate.
2. In cazul in care un program rezolva o problema complicata este util sa folosim subprograme pentru “a sparge” respective problema in mai multe probleme mai simple si mai usor de rezolvat.Astfel.in programele lungi este inevitabila folosirea subprogramelor,acestea putand fi realizate independent,ceea ce conduce la cresterea fiabilitatii programelor.
Mai multe subprograme ce rezolva probleme din acelasi domeniu (ex. functii grafice,matematice) pot fi grupate in unitati.Ele vor putea fi utilizate cu usurinta fara a fi necesara rescrierea lor pentru fiecare program.
Limbajul Pascal pune la dispozitie doua tipuri de subprograme:proceduri si functii.Procedurile calculeaza si furnizeaza nici unul,unul sau mai multe rezultate,iar functiile calculeaza o singura valoare pe care o returneaza la sfarsitul executiei.
1.2 Proceduri fara parametri
Cele mai simple subprograme sunt procedurile fara parametri.
Sa consideram urmatorul exemplu in care se doreste calcularea ariei a doua triunghiuri ale caror laturi sunt cunoscute:
program ProceduraFaraParametri;
var a ,b ,c ,p ,arie: real;
procedure CalculArie;
begin
p:=(a+b+c)/2;
arie:=sqrt(p*(p-a)*(p-b)*(p-c));
writeln(‘Aria este:’,arie:5:2);
end;
begin
Writeln(‘Introduceti laturile primului triunghi:’)
Readln(a ,b, c);
CalculArie;
Writeln(‘Introduceti laturile celui de-al doilea triunghi:’);
Readln(a ,b, c);
CalculArie;
end.
Programul incepe cu declaratiile variabilelor ce urmeaza a fi folosite.Definirea subprogramului care calculeaza aria incepe cu cuvantul cheie procedure urmat de numele sau de identificare CalculArie.Mai departe se poate vedea corpul subprogramului,reprezentat de o instructiune compusa(este formata dintr-o secventa de instructiuni inchise intr-o structura de tipul begin-end) care calculeaza semiperimetrul,apoi aria,si o afiseaza pe aceasta din urma.
In programul principal dupa citirea variabilelor a, b si c de la consola,observam instructiunea CalculArie.Aceasta instructiune se numeste instructiune procedura si are ca efect apelul subprogramului cu acelasi nume.Deci prin aceasta instructiune se va executa instructiunea compusa ce formeaza corpul procedurii CalculArie.
Trebuie remarcat ca in cazul in care nu se folosesc subprograme,blocul de instructiuni pentru calculul si afisarea ariei ar fi trebuit scris de doua ori(cate o data pentru fiecare triunghi).
Executia instructiunii procedurare pentru o procedura fara parametrii decurge astfel:
1. se retine,la o locatie speciala din memorie,adresa de revenire din procedura;
2. se executa subprogramul;
3. se revine in programul apelant,executia continuand de la adresa salvata in prealabil.
Preview document
Conținut arhivă zip
- Subprograme.doc