Sunteți pe pagina 1din 4

I.

INTRODUCERE

Limbajul C este un limbaj de programare care are o destinaie universal. El este utilizat n rezolvarea
problemelor tiinifice i tehnico-inginereti, n prelucrri de date, precum i n scrierea programelor de sistem.
El a aparut n anul 1972. Autorul principal al limbajului este Dennis Ritchie de la firma BELL
LABORATORIES.Limbajul C a aprut n legtura cu implementarea sistemului de operare UNIX pe
minicalculatoarele firmei DEC, seria PDP-11.
Sistemul de operare UNIX, compilatorul C i n esen toate aplicaiile sub sistemul UNIX sunt scrise n C
ntr-o proporie mare. Astfel, din cele 13000 linii surs ale sistemului de operare UNIX, numai 800 linii sunt scrise
n limbaj de asamblare, restul fiind scrise n C. De asemenea, nsi compilatorul C este scris n C n proporie de
80%. n felul acesta limbajul C asigur o portabilitate bun pentru programele scrise n el.
Noiunea de portabilitate nu este nc definit riguros. n mod intuitiv, spunem c un program este portabil daca el
poate fi transferat uor de la un tip de calculator la altul.
Portabilitatea mare a programelor scrise n C a condus la o raspndire mare a limbajului C i a sistemului de
operare UNIX.
n prezent limbajul C este implementat i sub alte sisteme de operare. Practic el este disponibil pe toate
calculatoarele, ncepnd cu microcalculatoarele personale i terminnd cu supercalculatoarele. Pe calculatoarele de
tip IBM PC este implementat o variant a limbajului C numit TURBO C. Aceast variant dispune de un mediu
de programare menit s ajute utilizatorul n scrierea i punerea la punct a programelor. De asemenea, pe acelasi tip
de calculatoare este implementat varianta quickC, care dispune i ea de un mediu de programare dezvoltat.
Limbajul C conine structurile proprii programrii structurate. Succesul ei s-a dovedit din plin odat cu
apariia limbajului Pascal. De asemenea, limbajul C dispune i de faciliti oferite de limbajele de asamblare, cum
sunt lucrul pe bii i utilizarea adreselor.
El este considerat ca fiind un intermediar ntre limbajele de nivel nalt i cele de asamblare. Compilatorul C ofer
programatorului o flexibilitate mai mare n scrierea programelor dect alte limbaje de programare. El realizeaz un
numr mai redus de controale la compilarea textului surs. Din aceast cauz programarea n limbajul C este mai
expus la erori dect programarea n alte limbaje, cum ar fi de exemplu, limbajul Pascal.


II. Descrierea programului

Programul dat const n prelucrarea unei baze de date. Pentru comoditate s-a creat un meniu operativ cu ajutorul
cruia se poate trece din orice etap n alta, astfel uurnd procesul de lucru a utilizatorului.
Ca i oricare alt program n acest limbaj,mai nti de toate este nevoie de a in-clude bibliotecile necesare pentru
funciile care vor fi folosite :
1.<conio.h> Biblioteca funciilor de prelucrarea a informaiei de intare_ieire
(getch(),gotoxy(),textcolor(),clrscr())
2.<stdio.h> Bibilioteca funciilor de intrare_ieire standard
(printf();scanf();fopen().a.)
3.<stdlib.h> Bibioteca funciilor utilare (randomize();)

Dup declararea bibiotecilor s-au declarat variabile ce vor fi folosite pe parcursul programului.Variabilele
reprezint spaii n memoria calculatorului avnd acelai rol n timp.Limbajul C++ recunoate 5 tipuri de variabile:
Caracter: char (rang -127 ..+128)
ntreg : int (rang -32768..+32767)
Tip de variabil neprecizat sau inexistent:void
Real n virgul mobil n simpl precizie:float (10-37..10+37)
Real n virgul mobil n dubl precizie:double(10-308..10+308)

Modul de memorare a acestor tipuri de date depinde de tipul calculatorului i de varianta limbajului C++. Moduri
de implementare:
Signed(cu semn)
Unsigned(fr semn)
Long(lung)
Short(scurt)
S-au folosit variabile globale deoarece ele sunt recunoscute pe parcursul ntegului
program.
Orice program n C se compileaz de la funcia principal main() .
Funcia main() este aceea ctre care sistemul de operare transfer controlul atunci cnd se lanseaz n execuie
programul.Parametrul void naitea funciei arat c fun-cia nu ntoarce valori, void ntre paranteze arat c funcia
nu folosete parameti.
ntregul program e construit pe subprograme (funcii) fiecare avnd numele su i rol n program.
Prima funcie ce se excut dup lansarea programului este menu() care duce apel la desenarea meniului.Aceast
funcie cur ecranul (cu clrscr();) apoi atribuie o cu-loare (15 alb) textului care va aprea pe
ecran(textcolor(15);),dup aceasta cu aju-torul funciei de poziionare a cursorului (gotoxy();) aeaz acesta pe
poziia (15.2) Urmeaz funcia de afiare a informaiei cu fomat i culoare cprintf()
Prototipul funciei: int cprintf( const char *format ,argument,...);

Descrierea funciilor

n programul dat se conin diferite funcii destinate prelucrrii irurilor de ca-ractere. Aceste funcii sunt
standarte, adic declarate cu prototip ntr-o bibliotec spe-cial. Toate funciile sunt declarate n biblioteca:
<string.h>.
n timpul rezolvrii acestei lucrri ne-am ntlnit cu situaii cnd era necesar prelucrarea i pstrarea unei
informaii mai complexe care coninea date de diferite ti-puri. Gruparea acestor date ntr-o variabil complex a
fost posibil datorit tipului de date Structur.
De asemenea trebuie de menionat faptul c un rol important n aceast lucrare au avut-o funciile i fiierele n C.
Funciile le-am folosit n scopul evidenierii unor sarcini concrete i ncapsularea lor n module aparte, pentru a
preveni probabilitatea de apariie a erorilor att logice ct i sintactice. Deci acum voi ncerca pe scurt s descriu
programul pe care l-am realizat:

AFISAREA_CONDIIILOR INIIALE.

Mai nti am creat un meniu cu ajutorul instruciunii Goto:
Sintaxa: goto eticheta;
unde eticheta este un identificator C ataat unei instruciuni. O etichet const dintr-un nume i dou puncte.
Instruciunea de salt necondiionat transmite controlul execuiei programului la instruciunea marcat cu eticheta (n
cazul meu eticheta este: meniu).
n continuare cu ajutorul funciei de intrare n C : getch()
Sintaxa:var=getch() unde var este numele variabilei creia i va fi atribuit caracterul cules de la tastatur (n
cazul meu var este caracterul W).
Ca s putem verifica condiiile din meniu am folosit instruciunea de selectare Switch:
Sintaxa: switch(expresie)
{case expresie const1: instructiunea 1;break;
...
case expresie constN:instructiunea N;brak;
default:instructiune;
}
Atunci cnd un program ntlnete o instruciune switch, testeaz condiia asociat (expresie). Pe baza valorii
ntregi a acesteia, el va transfera execuia ctre blocul case, etichetat cu acea expresie const corespunztoare. n
cazul cnd nici o expresie const nu este egal cu expresia dup switch, se ndeplinete instruciunea din ramura
default.
n continuare utilizatorului i se propune s aleag orice punct din meniu. Cnd alegem punctul 1 atunci
are loc aplul la funcia: Condiii, deci de aici se ncepe lucrul cu funciile:
Sintaxa : tip_f nume_-f (lista parametri)
{ declararea variabilei;
operatori;}
unde: tip-f - tipul funciei numit tipul valorii returnate ;
nume-f numele funciei;
lista parametri conine tipul i numele fiecrui parametru, n cazul nostru cnd compilatorul va ntlni
funcia condiii n acel moment el verific dac corespund tipul valorii returnate, cantitatea i poziia
parametrilor funciei. Dup aceea cu ajutorul instruciunii Goto ieim iari n meniu.

a) COMPLETAREA BAZEI DE DATE:

Dac utilizatorul testeaz tasta 2 atunci are loc apelul la funcia cu tip Com-pletare:
Sintaxa: tip_f nume_f(Lista_parametri);
Unde tip_f tipul funciei i tipul valorii returnate ;
Nume_f numele funciei.
Funciile n C++ ntorc valori cu ajutorul operatorului Return, lipsa acestui operator n cadrul funciei cu tip duce
la eroare. Aici cu ajutorul lui Return, se face atribuirea valorii din variabila local funciei completare K n
valiabila N din funcia main.
2. b)NSCRIEREA EI N FIIERUL BAZA.TXT:

Tot n acest punct se cere i nscrierea bazei de date n fiierul baza.txt. n continuare se face apel tot la o funcie
scrie_fiier care conine parametri, dar nu ntoarce valori.
Sintaxa: tip-f nume-P ;
Unde tip-p tipul parametrului;
Nume-P numele parametrului.
Dac funcia conine civa parametri ei vor fi descrii mpreun ntre () i vor fi desprii prin ,.
Parametru - informaia iniial transmis din program n funcie la momentul apelului acestuia.
n cazul nostru urmeaz instruciunea de apel la funcie, n acest caz se efectuiaz controlul corespunderii
parametrilor actuali i parametrilor formali dup cantitate, poziie i tip.
Parametru actual - variabila transmis n funcie n tipul apelrii acesteia (n cazul nostru sunt: n i baza) .
Parametru formal - variabila descris ca parametru n timpul declarrii funciei i folosite n corpul funciei la
calculele necesare (n cazul nostru sunt: K i numef).
n continuare pentru a nscrie baza n fiier trebuie s o facem cu ajutorul indicatorilor la fiier:
Declararea: FILE *f ;
Unde FILE cuvntul cheie rezervat pentru fiier;
f numele indicatorului la fiier.
Mai nti de toate trebuie s deschidem fiierul, aceasta se face cu ajutorul funciei fopen:
Sintaxa: f=fopen(nume-f, mod);
Unde f numele indicatorului la fiier;
Nume-f numele fiierului pe disc;
Mod- modul de deschidere a fiierului.
Deoarece din cele trei modaliti de acces de deschidere a fiierului am ales cea de a nscrie , atunci scriem
n lo de mod w. n caz c fiierul nu exist se va returna valoare NULL. Pentru a scrie date ntr-un fiier
deschis vom utiliza funcia fwrite, care are urmtorul prototip n biblioteca stdio.h:
Sintaxa: fwrite(&Nume, sizeof (structNume),1,pPointerFiier).
Dup ce va fi baza nscris fiierul trebuie nchis, aceasta se face cu ajutorul funciei flose:
Sintaxa: fclose(f)
Unde f- numele indicatorului la fiier


a) CITIREA BAZEI DE DATE DIN FIIERUL BAZA.TXT:

n continuare dac utilizatorul testeaz 3, programul apeleaz la o funcie cu tip citire-fiier. De asemenea se
deschide nti fiierul, iar pentru a fi posibil citirea folosim funcia fread :
Sintaxa: fread(&Nume, sizeof struct(Nume), 1,pPointerFiier)
Se folosete operatorul sizeof deoarece acesta asigur c este citit numrul corect de octei.
Aici am mai folosit instruciunea ciclic While , care se folosete n cazul cnd nu-i cunoscut numrul de
repetri i este necesar ca ciclul s fie ndeplinit de 0 sau mai multe ori.
Sintaxa:While(expresie) instruciune;
Modul de lucru: la nceput este controlat expresia dac este diferit de 0 sau TRUE apoi se ndeplinete
instruciunea i continu pn cnd expresia este egal cu 0.

b) AFIAREA EI LA MONITOR:

Aici am folosit fmod(x,y) - care ntoarce restul de la mprire a dou numere.
n cazul nostru vede dac este par sau nu numrul.
n rest am folosit aceleai funcii care au fost descrise mai sus.

ADUGAREA UNEI NSCRIERI_


Dup executarea cifrei 4 din meniu programul apeleaz la funcia cu parametri void add , care permite
adugarea unei noi nscrieri. Aici am recurs la structura pas:
Sintaxa: Struct pas {
Tip1 nume1;
Tip 2 nume2;
... .... ..... .... ...
Tip N numeN; }
Unde pas tip nregistrare;
NumeN cmpul structurii.
n cazul nostru adi este variabil de tip structur.

5.6.7. CUTRILE DUP:
numrul paaportului, numele persoanei i anul de natere:

n toate aceste puncte am folosit aceleai funcii pe care le-am descris mai sus.



8.ARANJAREA NSCRIERILOR N ORDINE ALFABETIC:

Pentru aranjarea nscrierilor am folosit instruciunea ciclic FOR:
Caracteristici:
Numrul de repetri sunt cunoscute de la nceputul lui;
Conducerea ciclului este efectuat de o variabil de tip ntreg numit parametrul ciclului, care n acest proces
primete valori consecutive de la valoarea iniial la valoarea final.
Sintaxa: Expr 1 de iniializare a parametrului;
Expr 2 de control;
Expr 3 de incrementare sau de corecie.
Se continu pn expr 2 devine 0 sau Fals.
9. AFIAREA BAZEI DE DATE FINALE LA MONITOR:

n acest punct se folosete funcia 3, numai c are loc citirea i afiarea bazei din fiierul bazanou.txt.
IEIRE:

Pentru a putea iei din program, utilizatorul trebuie s tasteze tasta Enter.

DESCRIEREA BIBILIOTECILOR:

stdio.h
printf (control, par1, par2, ..., parn ) - funcia pentru a realiza ieiri cu format
control - parametrul ce conine:
- texte de scris;
- specificatori de format pentru datele care se scriu
par n - Sunt expresii. Valorile lor se scriu conform specificatorilor de format prezent n parametrul de control
fprintf (fis, control, par1, par2, ..., par n) - funcia pentru scriere cu format ntr-un fiier
scanf (control, par1, par2, ..., par n) - funcia pentru citirea datelor sub controlul cu format
fis= fopen (nf , mod) - funcia pentru deschiderea unui fiier
fis - un pointer spre tipul FILE
nf - specificatorul fiierului care se deschide
mod - un sir de caractere care definete modul n care se deschide fiierul
fclose (FILE *fis ) - funcia pentru nchiderea fiierului
conio.h
getch ( ) - funcia pentru citirea unui caracter far al afia la ecran
cprintf (control, par1, par2, ..., par n ) - funcia pentru scriere color cu format
gotoxy (int coloana, int linie) - funcia pentru poziionarea cursorului la coordonatele
indicate
coloana - coordonata x a ecranului
linie - coordonata y a ecranului
clrscr ( ) - funcia penru tergerea ecranului
textcolor (int culoarea) - funcia pentru setarea culorii caracterului
culoarea - valoare cuprins intre [0,15]
textbackground (int culoarea) - funcia pentru setarea culorii fondului
string.h
char *strcpy(char *dest, const char *sursa) - funcia pentru copierea irului sursa n irul dest.