Administratie | Alimentatie | Arta cultura | Asistenta sociala | Astronomie |
Biologie | Chimie | Comunicare | Constructii | Cosmetica |
Desen | Diverse | Drept | Economie | Engleza |
Filozofie | Fizica | Franceza | Geografie | Germana |
Informatica | Istorie | Latina | Management | Marketing |
Matematica | Mecanica | Medicina | Pedagogie | Psihologie |
Romana | Stiinte politice | Transporturi | Turism |
Programare modulara in limbajul C
Scopul lucrarii: Dezvoltarea si utilizarea unor module in limbajul
C.
Desfasurarea
lucrarii: Se va proiecta si implementa un
modul pentru gestionarea unor operatii specifice unui anumit domeniu. Se va utiliza acest modul pentru rezolvarea unei anumite
aplicatii. Se vor crea cel putin trei fisiere:
un fisier header pentru interfata modulului
un fisier sursa pentru implementarea modulului
un fisier sursa pentru aplicatia care utilizeaza modulul.
Notiuni teoretice
Un modul sursa este o parte a codului sursa al programului, care se poate compila independent de restul programului. In urma compilarii rezulta modulul obiect. In cadrul unui modul sursa exista seturi de date si functii inrudite, care rezolva o subproblema. Prin functii inrudite putem intelege functii care utilizeaza in coumun un set de date. Modulele unui program se obtin in urma procesului de descompunere a unei probleme in subprobleme mai simple.
Programarea modulara este paradigma de programare care are la baza utilizarea de module. Prin acest mod de programare se pun in valoare posibilitatile de "ascundere" a datelor si functiilor impotriva unor accese neautorizate din alte module. Astfel, datele statice declarate in afara functiilor modulului, pot fi utilizate in comun de acestea, dar nu pot fi accesate de catre functiile din alte module. Modularizarea unui program complex permite lucrul in echipa, permitand astfel o implementare si testare mai rapida. Modulele implementate pot fi utilizate ulterior pentru rezolvarea altor probleme.
In limbajul C, modulele sunt
fisiere text (cu extensia .h sau
.c) ce pot fi compilate separat. In
mod uzual interfata modulului este plasata intr-un fisier header
(extensii uzuale sunt: '.h' , '.hh'), in timp ce
implementarea acestuia se va regasi intr-un fisier sursa
(extensii uzuale sunt: '.cc', '.c'). Dependentele
intre module sunt exprimate prin folosirerea directivelor de preprocesare
'#include'.
Variabilele
globale se definesc fie la inceputul unui fisier sursa (.c), inaintea primei functii, fie
intr-un fisier header (.h). In
primul caz, variabilele sunt vizibile din locul in care au fost declarate
pana la sfarsitul fisierului sursa respectiv. Daca
programul are mai multe fisiere sursa, o variabila globala
astfel definita intr-un fisier sursa poate fi utilizata in
celelalte, daca este declarata ca externa. In cazul
declararii intr-un fisier header a unei variabile, aceasta este
vizibila in toate fisierele care includ fisierul header.
Variabilele declarate in cadrul corpului unei functii sunt vizibile numai in cadrul functiei. Ele pot fi:
- automatice, alocate pe stiva in momentul executiei. Ele isi pierd valabilitatea la revenirea din functie. Declararea acestora este cea uzuala (char a; int x;);
- statice, alocate la compilare intr-o zona speciala. Se declara cu ajutorul cuvantului cheie static inaintea tipului variabilei (static int x;);
- variabile registru, alocate in registrele procesorului. Ele pot fi numai variabile int, char si pointer. Pentru declararea variabilelor registru se foloseste ajutorul cuvantului cheie register (register int x).
Reguli de modularizare:
1. Structura fiecarui modul trebuie sa fie suficient de simpla
pentru a putea fi complet inteleasa.
2. Implementarea unui modul trebuie sa depinda doar de
interfetele altor module, existand posibilitatea modificarii
implementarii unui modul fara a avea cunostinte despre
implementarea celorlalte module si fara a afecta comportarea
acestora.
3. Detaliile sistemului care se presupune ca se vor modifica independent
vor fi plasate in module diferite.
4. Singurele legaturi intre module vor fi acelea a caror modificare
este improbabila.
5. Orice structura de date este incapsulata intr-un modul; ea poate
fi accesata direct din interiorul modulului, dar nu poate fi accesata din
afara modulului decat prin intermediul variabilelor globale continute in
acel modul.
Teme propuse:
Sa se dezvolte un modul pentru operatii cu matrici cu coeficienti reali. Sa se utilizeze acest modul pentru determinarea matricii A la puterea n.
Sa se realizeze un program care cere introducerea unui sir de caractere si furnizeaza un meniu pentru a realiza urmatoarele operatii:
conversia sirului la litere mari
conversia la litere mici
adaugarea unui subsir la sirul dat
Sa se dezvolte un modul pentru operatii cu polinoame. Sa se utilizeze acest modul pentru determinarea celui mai mic divizor comun a doua polinoame
Sa se dezvolte un modul pentru operatii cu numere complexe. Sa se utilizeze acest modul pentru efectuarea operatiei de impartire a doua numere complexe.
Sa se dezvolte un modul pentru operatii cu matrici rare. Sa se utilizeze acest modul pentru determinarea matricii A la puterea n.
Sa se dezvolte un modul pentru operatii cu liste. Sa se utilizeze acest modul pentru rezolvarea urmatoarei aplicatii: Pentru concurentii unui concurs de admitere se cunosc urmatoarele informatii: nume, nota obtinuta. Sa se scrie un program care sa permita urmatoarele operatii:
creare listei cu concurenti;
sortarea listei dupa nota;
cautare in lista dupa nume;
separarea in doua liste (concurenti admisi si respinsi);
afisarea listelor.
Acest document nu se poate descarca
E posibil sa te intereseze alte documente despre: |
Copyright © 2024 - Toate drepturile rezervate QReferat.com | Folositi documentele afisate ca sursa de inspiratie. Va recomandam sa nu copiati textul, ci sa compuneti propriul document pe baza informatiilor de pe site. { Home } { Contact } { Termeni si conditii } |
Documente similare:
|
ComentariiCaracterizari
|
Cauta document |