Subprograme

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

Functiile .Procedurile B.CUPRINS A.

variabile si instructiuni scrise in vederea unei anumite prelucrari (calcule. Observatie . 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. citiri.

precum si o instructiune compusa begin-end. cos. precum si prin tipul rezultatului intors de ele. exp.. Procedurile Sintaxa unei proceduri: procedure <nume procedura> (l1:t1 . -pentru a se executa instructiunile cuprinse intr-un subprogram.ln:tn). Ex.l2:t2. pos. 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). de subprograme folosite: a) matematice: sin. pentru fiecare parametru precizandu-se numele si tipul acestuia Definitie -acesti parametri precizati la scrierea procedurii sunt niste simboluri. Observatie -pana in prezent am fost doar utilizatori de subprograme. prin modul in care pot fi apelate. Observatie . int. <zona de declaratii a variabilelor locale>. acesta trebuie apelat din modulul principal sau din interiorul altui subprogram. Definitie Modulul din care se face apelarea se numeste modul apelant (acesta poate fi programul principal sau chiar un subprogram). -orice subprogram are un identificator (adica numele dat subprogramului de catre utilizator) si eventual un set de date (parametri). reset.-un program va contine un modul numit modul principal. trunc b) de prelucrare a sirurilor de caractere: length. identificatori si se numesc parametri formali (se gasesc in antetul procedurii) . . 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.val c) de manipulare a fisierelor:assign. -in Pascal subprogramele sunt de doua tipuri: A) proceduri B) functii -ele difera prin antet.la definirea procedurii se declara parametri. structura sa este identica cu cea a programului principal A. pe langa care pot exista alte module numite subprograme. begin <instructiuni> end..

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

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

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

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

Sign up to vote on this title
UsefulNot useful