Subprograme
This presentation is the property of its rightful owner.
Sponsored Links
1 / 20

Subprograme PowerPoint PPT Presentation


  • 78 Views
  • Uploaded on
  • Presentation posted in: General

Subprograme. Ce este un subprogram …. Este o secven ţă de instruc ţ iuni care rezolv ă o anumit ă sarcin ă . Un subprogram poate fi lansat î n execu ţ ie ori de c â te ori este nevoie.

Download Presentation

Subprograme

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Subprograme

Subprograme


Ce este un subprogram

Ce este un subprogram…

  • Este o secvenţă de instrucţiuni care rezolvă o anumită sarcină.

  • Un subprogram poate fi lansat în execuţie ori de câte ori este nevoie.

  • Un subprogram poate fi apelat din programul principal, din alt subprogram, sau chiar autoapelat (subprograme recursive)


De ce sunt utile subprogramele

De ce sunt utile subprogramele ?!

  • Pentru că uneori o secvenţă de instrucţiuni (o parte dintr-un algoritm) se repetă.

  • Rezolvarea unei anumite sarcini este necesarăîn mai multe programe, şi astfel se ajunge la reutilizarea codului sursă.

  • Orice problemă poate fi descompusăîn subprograme, metoda de proiectare numindu-seproiectare Top-Down.


Avantajele folosirii subprogramelor

Avantajelefolosiriisubprogramelor…

  • Subprogramelesuntconcepute independent de restulaplicaţiilor, acestlucrucrescândportabilitateaprogramelor.

  • Elaborarea algoritmilor devine mai simplă şi mai uşor de înţeles

  • Subprogramele permit dezvoltarea rapidă a aplicaţiilor complexe, prin reutilizarealor

    >>


Avantajele folosirii subprogramelor1

Avantajelefolosiriisubprogramelor…

  • Datorită faptului că un program poate fi descompus în mai multe subprograme care pot fi concepute de mai mulţi programatori se favorizează lucrul în echipă, iar fiecare subprogram poate fi reutilizat de câte ori este nevoie .

  • O aplicaţie poate fi mai uşor modificată la nivelul subprogramului, decât în cadrul intregii aplicaţii


Alcatuire

Alcatuire:

  • a) Antetul Subprogramului

    b) Corpul Subprogramului

    -> Partea Declarativa

    -> Partea Executiva

<antetulsubprogramului>

<declaratiipropriisubprogramului>

<instructiuniproprii subprogramului>


Clasificare a subprogramelor

Clasificarea subprogramelor:

  • În funcţie de:

    1)modalitatea de apel

    subprogrameapelateca:

    a) instructiuni– subprograme de tip procedură

    b) operanzi – subprograme de tip funcţie

    2) autorul subprogramului

    a) Subprograme de sistem (predefinite)

    b) Subprogrameutilizator


Identifica i asem n rile i diferen ele ntre func ii i proceduri

Identificaţi asemănările şi diferenţele între funcţii şi proceduri !

Identificarea componentelor subprogramelor…

Function F(lista_parametrilor_formali): tip_rezultat;

Var lista_variabile_locale;

Begin

...

F:=expresie;

End;

Apelul se face prin: v:=F(lista_parametrilor_actuali);

write(F(lista_parametrilor_actuali));

Procedure P(lista_parametrilor_formali);

Var lista_variabile_locale;

Begin

...

End;

Apelul se face prin: P(lista_parametrilor_efectivi);


Asem n ri i deosebiri ntre func ii i proceduri

Asemănări şi deosebiri între funcţii şi proceduri


Parametri de comunicare

Parametri de comunicare

se folosescpentru a realiza legăturaîntre module. După rolul lor în procesul de comunicare, se clasifică în:

Parametri de intrare:sunt date care urmează să fie prelucrate de subprogram (SP) şi care îi suntcomunicate de cătremodululapelant (P),P SP

Parametri de ieşire: suntrezulateobţinute de subprogram în urmaprelucrăriişi pe care le comunicămodululuiapelant. Modululapelant le primeşte dupăcesubprogramulîşi terminăexecuţia: SP P

Parametri de intrare-ieşire: sunt date care participă la calcululdatelor de ieşire şi suntaccesibile atât modululuiapelant, cât şi modululuiapelat. Valoarelorpoate fi modificată atât de subprogram cât şi de modululapelant: P SP


Subprograme

Clasificarea parametrilor

1. după locul în care sunt declaraţi:

  • Formali– sunt parametri scrişi în antetul subprogramului;

  • Actuali– sunt parametri scrişi la apelul subprogramului

    2. după modul de transmitere:

  • Prin valoare – sunt parametri de intrare; modificarea valorii lor nu se transmite în modulul apelant

  • Prin adresă – sunt parametri de ieşire sau de intrare-ieşire; modificările valorilor lor se păstrează în modulul apelant


Reguli de folosire a parametrilor

Reguli de folosire a parametrilor

  • Parametri actuali (de la apel) trebuie să corespundă ca număr, tip de dată şi ordine cu parametri formali (scrişi în antet)

    Ex: function suma(a,b:integer):integer;

  • Parametri actuali corespunzători parametrilor formali transmişi prin valoare pot fi:

  • variabile sau expresii de tipul declarat al parametrului formal

  • Parametri actuali transmişi prin adresă nu pot fi decât variabile de tipul declarat al parametrului


Subprograme

----------------------------------------------------------------------- suma(a,b); --------------------------------------------------------------------------------------------- suma(2,3); ----------------------------------------------------------------------

  • Transferulparametrilorprin valoare

  • x  a

  • y  b

  • x  2

  • y  3

  • parametriactualiregula deparametriformali

  • corespondenţă

------------------------------------------------------------------------------------ proceduresuma (x,y: integer) ;------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Subprograme

-------------------------------------------------------------------- schimba(a,b); -------------------------------------------------------------------------------------------- schimba(2,3); --------------------------------------------------------------------

  • Transferul parametrilor prin adresă

  • x  a

  • y  b

  • parametri actuali regula de parametri formali

  • corespondenţă

---------------------------------------------------------------------------------- procedureschimbă (var x,y: integer) ;------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Subprograme

Criteriipentruclasificareavariabilelor de memorie

Domeniul de vizibilitate

Reprezintăzona din program în care estepermisaccesul la variabilă (textul programului)

Durata de viata

Reprezintaperioada de timp in care variabilei i se alocaspatiu in memorie (la rularea programului)

-> variabileglobale– tot progaramul

-> variabile locale – doarsubprogramulîn care au fostdeclarate

-> variabilelocale– durata de executie a blocului in care au fostdeclarate;

-> variabile cu duratastatica– durata de executie a programului;

-> variabiledinamice–

durata de alocare a memoriei in timpulexecutieiprogramului


Utilizarea stivei de c tre programe

Utilizareastivei de cătreprograme

În timpul rulării unui program memoria este împărţităîn 4zone astfel :

  • Zona de date – aici sunt memorate variabilele globale.

  • Zona stack (stiva sistemului de operare) – aici se lucrează pe durata întregului subprogram, se păstrează temporar informaţii despre subprogramul apelant. Aceste informaţii sunt introduse în stivă (zona stack) atunci când este apelat subprogramul.

  • Zona de cod – în aceasta zonă se codifica instrucţiunile programului principal.

  • Zona HEAP * – aici se memorează variabilele alocate dinamic, prin intermediul pointerilor (pointerii vor fi studiaţi într-un alt capitol)


Etapele executate la apelarea subprogramului sunt urmatoarele

Etapele executate la apelarea subprogramului sunt urmatoarele :

  • a) Se intrerupe executia modului apelant.

    b) Se pregateste stiva sistemului astfel :

    1) se introduce adresa de revenire in modul apelant;

    2) se introduc valorile parametrilor cu care a fost apelat

    subprogramul;

    3) se rezerva spatiu pentru variabilele locale declarate in

    subprogram.

    c)Se lanseaza in executie codul executabil al subprogramului apelat.


Etapele executate la terminarea subprogramului

Etapele executate la terminarea subprogramului :

  • Se efectuează în ordinea inversă de la apel:

  • Se elibereaza din stivaspatiul ocupat de variabilele locale si de parametrii;

  • Se extrage din stiva adresa de revenire in modulul apelant;

  • Se continua executia cu instructiunea de la adresa extrasa din stiva.


Aplica ii

Aplicaţii

  • Scrieţi o procedură care interschimbă valorile a două variabile a şi b transmise ca parametri.

  • Se citesc două numere naturale a şi b. Stabiliţi dacă a şi b au aceeaşi sumă a cifrelor. În caz afirmativ, se va tipări suma cifrelor, iar în caz contrar, se vor tipări cele două numere împreună cu suma cifrelor în ordine crescătoare a sumei. În program veţi folosi o funcţie care returnează suma cifrelor unui număr transmis ca parametru de intrare.

  • Se citesc două numere naturale a şi b. Stabiliţi dacă a şi b au acelaşi produs al cifrelor. În caz afirmativ, se va tipări produsul cifrelor, iar în caz contrar, se vor tipări cele două numere împreună cu produsul cifrelor în ordine crescătoare a produsului. În program veţi folosi o funcţie care returnează produsul cifrelor unui număr transmis ca parametru de intrare.


Diagrama vreau tiu pot

Diagrama vreau/ştiu/pot

  • Aranjaţi noţiunile din listă în coloana corespunzătoare:

  • subprogram, procedură, funcţie, parametru formal, parametru actual, transmitere prin valoare, transmitere prin adresă, apel de funcţie, apel de procedură, variabilă globală, variabilă locală, domeniu de vizibilitate, durata de viaţă a variabilelor, zona stivei sistemului


  • Login