CATEGORII DOCUMENTE |
Dezvoltarea programelor prin programare procedurala inseamna folosirea unor functii si proceduri pentru scrierea programelor. In limbajul C lor le corespund functiile care returneaza o valoare sau nu. Insa in cazul aplicatiilor mai mari ar fi de dorit sa putem realiza si o protectie corespunzatoare a datelor. Acest lucru ar insemna ca numai o parte a functiilor sa aiba acces la datele problemei, acelea care se refera la datele respective. Programarea modulara ofera o posibilitate de realizare a protectiei datelor prin folosirea clasei de memorie static. Daca intr-un fisier se declara o data apartinind clasei de memorie statica in afara functiilor, atunci ea poate fi folosita incepind cu locul declararii pana la sfarsitul modulului respectiv, dar nu si in afara lui.
Sa consideram urmatorul exemplu simplu referitor la prelucrarea vectorilor de numere intregi. Sa se scrie un modul referitor la prelucrarea unui vector cu elemente intregi, cu functii corespunzatoare pentru initializarea vectorului, eliberarea zonei de memorie ocupate si ridicarea la patrat, respectiv afisarea elementelor vectorului. O posibilitate de implementare a modulului este prezentata in fisierul vector1.cpp:
#include <iostream.h>
static int* e; //elementele vectorului
static int d; //dimensiunea vectorului
void init(int* e1, int d1) //initializare
void distr() //eliberarea zonei de memorie ocupata
void lapatrat() //ridicare la patrat
void afiseaza() //afisare
Modulul se compileaza separat obtinind un program obiect. De exemplu sub sistemul de operare Unix folosind comanda
CC -c vector1.cpp
obtinem programul obiect vector1.o. Un exemplu de program principal este prezentat in fisierul vector2.cpp:
extern void init( int*, int);//extern poate fi omis
extern void distr();
extern void lapatrat();
extern void afiseaza();
//extern int* e;
int main() ;
init(x, 5);
lapatrat();
afiseaza();
distr();
int y[] = ;
init(y, 6);
//e[1]=10; eroare, datele sunt protejate
lapatrat();
afiseaza();
distr();
return 0;
}
Sub sistemul de operare Unix prin comanda:
CC vector2.cpp vector1.o -o vector2
obtinem fisierul executabil vector2. Observam ca desi in programul principal se lucreaza cu doi vectori nu putem sa le folosim impreuna, deci de exemplu modulul vector1.cpp nu poate fi extins astfel incat sa realizeze si adunarea a doi vectori. In vederea inlaturarii acestui neajuns s-au introdus tipurile abstracte de date.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 826
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved