Subprograme

Disciplina:Informatica Clasa a XI-a C G.S.T Videle VIDEANU RADUCU_IONUT

Procedurile B.CUPRINS A.Functiile .

scrieri) si care poate fi utilizat (rulat) doar daca este apelat de un program sau de un alt subprogram.SUBPROGRAME Definitie Prin subprogram se intelege un ansamblu alcatuit din tipuri de date. Observatie . variabile si instructiuni scrise in vederea unei anumite prelucrari (calcule. citiri.

. Definitie In esenta un subprogram este alcatuit din: 1) ANTET – acesta contine mai multe informatii importante necesare compilatorului: a) numele subprogramului b )lista de parametri (parametri formali) -in cazul functiilor contine si tipul rezultatului (valoarea intoarsa de functie) 2) CORPUL SUBPROGRAMULUI – acesta cuprinde definirea tipurilor de variabile ale subprogramului. pentru fiecare parametru precizandu-se numele si tipul acestuia Definitie -acesti parametri precizati la scrierea procedurii sunt niste simboluri. Observatie .l2:t2. prin modul in care pot fi apelate. pe langa care pot exista alte module numite subprograme. rewrite Avantajele utilizarii subprogramelor: 1) reutilizarea codului – o data scris un subprogram poate fi utilizat de mai multe subprograme 2) elaborarea algoritmilor prin descompunere problemei in altele mai simple 3) reducerea numarului de erori care pot aparea la scrierea subprogramelor 4) depistarea cu usurinta a erorilor Observatie -modulul apelant poate sa transmita subprogramului pe care il apeleaza niste date numite parametri si ii foloseste atunci cand se executa (in urma apelului). precum si prin tipul rezultatului intors de ele. de subprograme folosite: a) matematice: sin. Definitie Modulul din care se face apelarea se numeste modul apelant (acesta poate fi programul principal sau chiar un subprogram).. Ex. pos. Observatie -pana in prezent am fost doar utilizatori de subprograme. identificatori si se numesc parametri formali (se gasesc in antetul procedurii) . . reset. acesta trebuie apelat din modulul principal sau din interiorul altui subprogram. precum si o instructiune compusa begin-end. begin <instructiuni> end. int. trunc b) de prelucrare a sirurilor de caractere: length. Procedurile Sintaxa unei proceduri: procedure <nume procedura> (l1:t1 . -pentru a se executa instructiunile cuprinse intr-un subprogram. <zona de declaratii a variabilelor locale>.ln:tn). exp.la definirea procedurii se declara parametri.val c) de manipulare a fisierelor:assign. cos. structura sa este identica cu cea a programului principal A. -in Pascal subprogramele sunt de doua tipuri: A) proceduri B) functii -ele difera prin antet.-un program va contine un modul numit modul principal. -orice subprogram are un identificator (adica numele dat subprogramului de catre utilizator) si eventual un set de date (parametri).

end. readln(b). Calculul mediei aritmetice a 2 numere folosind o procedura.b).variabila locala acunde variabila globala (in timpul executiei programului este vazuta valoarea variabilei locale.i ar in afara subprogramului este cunoscuta variabila globala). Program exemplu. .valori returnate de functii.b0.cand se apeleaza procedura. Ex.b:real). calcul_media (a0.valori ale unor variabile obtinute prin atribuire sau citire.subprogramele se pot plasa in cadrul programului intre declaratiile de variabile si instructiunea compusa begin-end. begin calcul_media (2. procedure calcul_media(a. in subprogramul in care a fost declarata . end. b0:=-4. modulul apelant este abandonat temporal si se executa procedura. m:6:2).a.la apel controlul programului este transferat la prima instructiune a procedurii . atunci valoarea ei va fi cunoscuta numai in interiorul subprogramului respectiv (in timpul executiei acestuia) b) variabila globala – daca este declarata la inceputul unui program. Domeniul de vizibilitate al variabilelor(sau constantelor) Definitie 1) Prin domeniu de vizibilitate al unei variabile/constante se intelege zona de program in care este “vazuta” declaratia acesteia. writeln(‘media este=’. .valorile parametrilor care se transmit la apel se numesc parametri actuali sau efectivi. write(‘b=’). Ex. var x:integer. Observatie . a0:=5.apelul unei proceduri este o instructiune numita instructiune de apel . readln.a0. calcul_media (abs(a0).orice variabila a programului principal este si variabila a procedurii (invers nu este adevarat).. . . in timpul executiei procedurii parametri formali sunt inlocuiti in tot corpul procedurii cu parametri actuali (valori concrete). tip si ordine cu parametri formali .b0). In concluzie parametri actuali pot fi : . . calcul_media(a.i n acest caz. . abs(b0)). Program medie. var m. aceasta trebuie apelata -la apel se precizeaza numele procedurii si valorile concrete ale parametrilor intre paranteze rotunde separate prin virgula Definitie . adica zona din program in care este cunoscuta valoarea sa.valori ale unor expresii.pentru a se executa procedura.b : real.parametri actuali trebuie sa corespunda ca numar. .putem avea o variabila locala si una globala cu acelasi nume. begin m:=(a+b)/2. 2) Exista 2 tipuri de variabile/constante a) variabila locala – daca este declarata intr-un subprogram.dupa incheierea executiei procedurii se revine automat in modulul apelant la linia imediat urmatoare celei care a facut apelul.constante. readln(a).3). atunci ea este “vazuta” in intreg programul (inclusiv in subprogram) Observatie . write(‘a=’).

transmiterea prin valoare se utilizeaza atunci cand suntem interesati ca subprogramul sa lucreze cu acea valoare. 1) program ex_1.putem sa transmitem prin referinta un parametru “gol”(doar numele lui. end. 2) program ex_2. begin x:=3.sunt parametri a caror modificare este vazuta numai in interior subprogramului respectiv. program ex_ref. x:=x+1. Ex. procedure a. var a. fara valoare). begin writeln(‘eu sunt a’). end. nu si in afara acestuia . Declararea unui subprogram Observatie . (un subprogram nedeclarat nu poate fi folosit) – un suprogram trebuie plasat in cadrul programului inaintea programului care-l apeleaza – pentru a scrie subprogramul dupa modulul apelant trebuie sa facem o asa numita declaratie anticipata a subprogramului folosind directiva FORWARD in zona de declaratii a programului.sunt parametri a caror modificare in interiorul subprogramului este “vazuta” si la nivelul modulului apelant . end. valoare care mai apoi este este recunoscuta si de modulul apelant . 2) Ex.procedure t(x:integer). Dupa mecanismul de transmitere a parametrilor distingem 2 cazuri: 1) parametri transmisi prin valoare 2) parametri transmisi prin referinta 1) . writeln(x). begin writeln(‘eu sunt a’). b.la declararea subprogramului numele acestor parametri vor fi precedate de cuvantul cheie “var”. procedure a. t. . procedure a. begin a. begin writeln(x). integer.b. in acest caz parametru poate sa primeasca valoare in corpul subprogramului.se pot transmite prin valoare : valorile retinute de variabile . forward. forward. procedure b. begin writeln(‘eu sunt b’). procedure b. begin a.c . end. dar in prelucrare nu ne intereseaza ca parametru efectiv (cel din blocul apelat) sa retina valoarea modificata in subprogram .declara un subprogram inseamna a-l anunta. end. end. end.

b.’ ‘ . intre begin si end trebuie sa existe cel putin o instruciune de atribuire care are ca membru stang numele functiei. writeln(a.y)/2.y)).c). b:=a+c. calcul(a. end. c:=a+b. function medie (a. readln(y). begin write(‘x=’).n:real.n).iar rezultat intors de functie poate fi afisat. m.apelul unei procedure se face prin numele ei ..c). c:=3. begin medie:=(a+b)/2. begin a:=b+c. folosit in expresii (calcule). deci toate precizarile facute pentru proceduri sunt valabile si in cazul functiei Sintaxa unei functii este Function <nume functie> (i1:t1.b. write(‘y=’)..tn): tr. <zona de declaratii locale a functiei> Begin <instructiuni> <nume_functie>:=e. y. b:=2. de aceea se spune ca o functie returneaza o valoare prin numele sau. pe cand o procedura poate returna mai multe sau nici un rezultat functia lucreaza la fel ca si procedura. m:= medie(x.i2:t2. var x. end.b:integer.in. write (medie(x.b:integer) : real. readln x).’ ‘. writeln(m. {se va afisa 1 2 13} B. dar in plus. . Functiile ca si procedurile functiile fac si ele parte din categoria subprogramelor ele efectueaza anumite operatii. program medie_aritmetica. atribuit unei alte variabile Ex. end. begin a:=1. n:=m. unde tr reprezinta tipul valorii returnate de catre functie.var c:integer). o functie “intoarce”(returneaza) o anumita valoare o functie returneaza un singur rezultat. end.integer. Observatie .procedure calcul(a. end.

Caiet Informatica 3.Manual Informatica 2.WWW.ORG .BIBLIOGRAFIE 1.WIKIPEDIA.