Extras din curs
Paradigme de programare:
- programarea structurată – bazată pe Teorema de structură
- programarea procedurală – bazată pe proiectarea de funcţii separate
- programarea modulară – bazată pe alcătuirea de proiecte din mai multe fişiere
- programarea orientată obiect – bazată pe moştenire şi polimorfism
Un modul este constituit dintr-un set de funcţii înrudite împreună cu datele pe care
acestea le prelucrează, stocate într-un fişier care se compilează separat. Aplicaţia se
dezvoltă sub forma unui proiect prin intermediul căruia se ”leagă” (link-editează)
împreună diversele module componente, creându-se un executabil unic.
Programarea modulară ridică o serie de probleme legate de relaţia de interdependenţă
dintre modulele unui proiect precum şi de modul de comunicare dintre acestea.
Fiecare modul trebuie să aibă o interfaţă care să furnizeze compilatorului informaţii
necesare despre funcţiile pe care le conţine.
În limbajul C un identificator (nume) desemnează o funcţie, un tip de date, o variablă
sau o etichetă. În general un identificator este introdus printr-o declaraţie (excepţie fac
în C etichetele) care precizează implicit semnificaţia/modul de utilizare al acestuia .
În privinţa locurilor în care poate fi folosit identificatorul respectiv, trebuie lămurite
câteva aspecte :
- un identificator poate fi folosit numai într-o anumită zonă a textului sursă al
programului, numită domeniul de valabilitate al numelui.
- semnificaţia unui identificator depinde de locul în care se foloseşte numele
respectiv, semnificaţie precizată de aşa numitul domeniu de vizibilitate.
- un nume folosit în mai multe module ale aceluiaşi program poate sau nu să
refere acelaşi obiect, în funcţie de tipul de legătură (linkage) specificat în modulul
care îl utilizează.
- în ceea ce priveşte numele ce desemnează variabile, acestora li se asociază
implicit o zonă de memorie. Zona de memorie în care se face alocarea este definită de
clasa de alocare (memorie).
#include “f1.h”
#include “f2.h”
int i;
double x;
int main(void)
{
f1();
f2();
return 0;
}
#include “f1.h”
extern int i;
void f1(void)
{
….
….
}
void f1(void);
Diagrama ilustrează didactic o posibilă organizare a unui proiect
main.cpp
f1.h f2.h
f1.cpp f2.cpp
Obs. Evident, fişierele componente pot conţine mai multe funcţii !
#include “f2.h”
extern double x;
void f2(void)
{
….
….
}
void f2(void);
Domeniul de valabilitate al unui identificator
Domeniul de valabilitate al unui identificator reprezintă acea zonă de program
în care este cunoscută (valabilă) declaraţia sau definiţia unui nume şi în care, în cazul
variabilelor, există o zonă de memorie alocată acestuia .
În C există trei tipuri de domenii de valabilitate :
- local;
- funcţie;
- global (fişier).
În C se numeşte bloc o zonă de program ce conţine instrucţiunile cuprinse în
interiorul unei perechi de paranteze acolade.
Domeniul local
Un identificator definit în interiorul unui bloc se spune că are domeniul de
valabilitate local (acelui bloc). El este cunoscut şi se poate folosi doar în interiorul
blocului în cauză, mai precis, din punctul imediat ulterior declaraţiei sau definiţiei sale
şi până la paranteza } care se împerechează cu cea mai apropiată (textual) paranteză {
ce precede textul declaraţiei în cauză .
Preview document
Conținut arhivă zip
- Programare Modulara.pdf