Referat Programare 2
Mai jos puteti citi fragmente din
Referat Programare 2 si de asemenea puteti face
Download Referat Programare 2Citeste fragmente din Referat Programare 2
Cuprins:
Intoducere
-------------------------------------------------------------------3
Sarcină
------------------------------------------------------------------------
-
Schemă logică a programului (schema-bloc)---------------------------4
Listing-ul
programului----------------------------------------------------21
Descrierea
programului---------------------------------------------------27
Rezultatele
obţinute-------------------------------------------------------33
Concluzii---------------------------------------------------------------
----34
Lista literaturii
utilizate--------------------------------------------------35
I. INTRODUCERE
ţie universală. El este utilizat în rezolvarea problemelor
ştiinţifice şi tehnico-inginereşti, în prelucrări 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 apărut în
legătura cu implementarea sistemului de operare UNIX pe
minicalculatoarele firmei DEC, seria PDP-11.
Sistemul de operare UNIX, compilatorul C şi în esenţă toate
aplicaţiile sub sistemul
UNIX sunt scrise în C într-o proporţie 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,
însăşi compilatorul C este scris în C în proporţie de 80%. În
felul acesta limbajul C asigură o portabilitate bună pentru programele
scrise în el.
Noţiunea de portabilitate nu este încă definită riguros. În mod
intuitiv, spunem că un program este portabil daca el poate fi
transferat uÅŸor de la un tip de calculator la altul.
Portabilitatea mare a programelor scrise în C a condus la o raspândire
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, începând
cu microcalculatoarele personale şi terminând 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 conţine structurile proprii programării structurate.
Succesul ei s-a dovedit din plin odată cu apariţia limbajului Pascal.
De asemenea, limbajul C dispune şi de facilităţi oferite de limbajele
de asamblare, cum sunt lucrul pe biţi ş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 decât alte limbaje de
programare. El realizează un număr mai redus de controale la
compilarea textului sursă. Din această cauză programarea în limbajul
C este mai expusă la erori decât programarea în alte limbaje, cum ar
fi de exemplu, limbajul Pascal.
III. SCHEMA-BLOC
1.Programul principal:
4.ÃŽNSCRIEREA BAZEI ÃŽN FIÅžIER
5.CITIREA BAZEI DIN FIÅžIER
6.AFIÅžAREA BAZEI LA MONITOR
8.CĂUTĂRILE DUPĂ NUME,NUMĂRUL PAŞAPORTULUI ŞI ANUL NAŞTERII:
9.ARANJAREA ÃŽN ORDINEA ALFABETICÄ‚
IV. LISTING-UL PROGRAMULUI:
#include
#include
#include
#include
#include
//variabile globale
int z=0,zz=0;
int n,i; char w,v,c;
char baza[20]="c:/baza.txt",bazanouă[20]="c:/bazanouă.txt";
float t;//an căutat
struct pas {
char nume[15],pr[22];
float nr,an;
}adi;
struct pas x[50];
//afişarea condiţiilor iniţiale
void conditii (void) {
clrscr();
gotoxy(20,2);textcolor(11);
cprintf("Lucrare de curs la disciplina programare");
gotoxy(29,4);textcolor(15);
cprintf("Condiţiile problemei:");
gotoxy(10,5);textcolor(11);
cprintf("De alcătuit o baza de date cu N înscrieri care ar conţine
informaţia");
gotoxy(10,6);
cprintf("despre paÅŸapoartele unui grup de persoane.");
gotoxy(5,7);
cprintf("Sa fie posibilitatea de a cauta orice persoana dupa:");
gotoxy(5,8);
cprintf(" numarul paÅŸaportului,numele persoanei ÅŸi anul de
naÅŸtere
");
gotoxy(5,10);
cprintf("b)De aranjat înscrierile în ordine alfabetică după
familii.");
gotoxy(5,wherey()+2);
printf("Ãâ„¢ÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÛÃÂÃÂÃÂÃÂÃÂÃÂ
ÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÛÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂ
û");gotoxy(5,wherey()+1);
printf("цNumele persoanei цNumărul paşaportului цAnul
naÅŸterii Ñâ€");gotoxy(5,wherey()+1);
printf("ÃÅ“ÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÞÃÂÃÂÃÂÃÂÃÂÃÂ
ÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÞÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂ
ÃÂâ„–");gotoxy(5,wherey()+1);
printf("ццÑâ€
Ñâ€");gotoxy(5,wherey()+1);
printf("ццÑâ€
Ñâ€");gotoxy(5,wherey()+1);
printf("ццÑâ€
Ñâ€");gotoxy(5,wherey()+1);
printf("ццÑâ€
Ñâ€");gotoxy(5,wherey()+1);
printf("ццÑâ€
Ñâ€");gotoxy(5,wherey()+1);
printf("ÃËœÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÅ¡ÃÂÃÂÃÂÃÂÃÂÃÂ
ÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÅ¡ÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂ
ÃÂј");
textcolor(15);gotoxy(5,wherey()+2);
cprintf("Pentru iesire în meniu culegeţi ");
getch(); }
//completarea bazei de date
int completare(void) {
int i,k; float a,b;zz=1;
clrscr(); gotoxy(15,2);
printf("Culegeti cantitatea de înscrieri in bază "); scanf("%d",&k);
for(i=0;i");
getch(); return(k); }
//________________înscrierea bazei in fisier
void scrie_fisier(int k, char numef[20]) {
FILE *f; int i;
if((f=fopen(numef,"w"))==NULL) {
clrscr();gotoxy(15,2);textcolor(15);
cprintf("Fisierul nu poate fi deschis"); goto exit;}
for(i=0;i");
getch(); }
//___________________citirea bazei din fisier
int citire_fisier(char numef[20]) {
FILE *f; int i; clrscr();
if((f=fopen(numef,"r"))==NULL) {
clrscr();gotoxy(15,2);textcolor(15);
cprintf("Fisierul nu poate fi deschis"); z=1; goto exit;} i=0; z=0;
while( fread(&x[i],sizeof(x[i]),1,f)==1 ) i++;
fclose(f);
exit: return(i);}
//________________________afiÅŸarea bazei la monitor
void afisare (int k, char numef[20]) {
int i;
if (z==1) {clrscr(); gotoxy(5,2); textcolor(15);
cprintf ("Baza de date n-a fost citita din fisier"); goto exit;}
else { clrscr(); gotoxy(5,2); textcolor(15);
cprintf("Baza de date citita din fisierul %s este:",numef);
gotoxy(5,wherey()+2);
textcolor(15);
printf("Ãâ„¢ÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÛÃÂÃÂÃÂÃÂÃÂÃÂ
ÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÛÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂ
û");gotoxy(5,wherey()+1);
printf("цNumele persoanei цNum†rul pa$aportului цAnul
na$terii Ñâ€");gotoxy(5,wherey()+1);
printf("ÃÅ“ÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÞÃÂÃÂÃÂÃÂÃÂÃÂ
ÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÞÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂ
ÃÂâ„–");gotoxy(5,wherey()+1);
for(i=0;i");
getch();}
//_______________________adăugare______________________
void add (char numef[20]) {
struct pas s; float a,b;
FILE *f; int i; char q;
if((f=fopen(numef,"a"))==NULL) {
clrscr();gotoxy(5,2);textcolor(15);
cprintf("Fisierul nu poate fi deschis"); goto exit;}
ad: clrscr();gotoxy(5,wherey()+2);textcolor(15);
cprintf("Doriti sa ad†ugati inca o inscriere in baza de date? y/n ");
q=getch(); if ((q== y )||(q== Y )) {
gotoxy(10,wherey()+2); textcolor(15);
cprintf("Indicati familia persoanei "); scanf("%s",s.nume);
gotoxy(10,wherey()+1);
cprintf("Indicati prenumele "); scanf("%s",s.pr);
gotoxy(10,wherey()+1);
cprintf("Indicati nr. pasaportului ");scanf("%f",&a); s.nr=a;
gotoxy(10,wherey()+1);
cprintf("Indicati anul na$terii ");scanf("%f",&b); s.an=b;
f=fopen(numef,"a");
fwrite(&s,sizeof(s),1,f); fclose(f); goto ad;}
exit: gotoxy(5,wherey()+2); textcolor(15);
cprintf("Pentru iesire in meniu culegeti ");
getch(); }
//______ cautare dupa nume, numarul pasaportului $i anul
void cautare(int k,char caut[22])
{
int i,g; char Z[22],B[22];float R, Npc;
if (z==1) {clrscr(); gotoxy(5,2); textcolor(15);
cprintf ("Baza de date n-a fost citita din fisier"); goto exit;
}
else {
clrscr(); gotoxy(5,2); textcolor(15);
if (strcmp(caut,"nume")==0) {g=1;
cprintf("Culege familia persoanei "); scanf("%s",Z);}
if (strcmp(caut,"pa$aport")==0) {g=2;
cprintf("Culege num†rul pa$aportului c†utat"); scanf("%f",&Npc);}
if (strcmp(caut,"an")==0) {g=3;
cprintf("Culege anul c†utat "); scanf("%f",&t); }
}
gotoxy(5,wherey()+1); textcolor(15);
cprintf("Rezultatul cautarii dupa %s este:",caut);gotoxy(5,wherey()+1);
printf("Ãâ„¢ÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÛÃÂÃÂÃÂÃÂÃÂÃÂ
ÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÛÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂ
û");gotoxy(5,wherey()+1);
printf("цNumele - prenumele цNum†rul pa$aportului цAnul
na$terii Ñâ€");gotoxy(5,wherey()+1);
printf("ÃÅ“ÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÞÃÂÃÂÃÂÃÂÃÂÃÂ
ÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÞÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂ
ÃÂâ„–");gotoxy(5,wherey()+1);
for(i=0;i");
getch();
}
//____________________ aranjare in ordine alfabetică
void aranjare (int k) {
int i,j;
for (i=0;i0)
{
strcpy(adi.nume,x[i].nume);
strcpy(x[i].nume,x[j].nume);
strcpy(x[j].nume,adi.nume);
}
}
}
clrscr(); gotoxy(5,2);textcolor(15);
cprintf("Baza de date a fost citita din fisierul
c:\baza.txt");gotoxy(5,3);
cprintf("Înscrierile au fost aranjate in ordine alfabetică după
famile");
gotoxy(5,5); cprintf("Pentru a vedea rezultatul accesaţi punctul 9 din
meniu");
gotoxy(5,6); cprintf("Pentru iesire in meniu culegeti ");
getch();
}
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$
void main(void) {
meniu: clrscr();
textcolor(15); gotoxy(15,2);
cprintf("Alege din meniu:"); gotoxy(5,wherey()+2);
cprintf("1: Afisarea conditiilor initiale"); gotoxy(5,wherey()+1);
cprintf("2: Completarea bazei de date"); gotoxy(5,wherey()+1);
cprintf(" si inscrierea ei in fisierul TC\BIN\baza.txt");
gotoxy(5,wherey()+1);
cprintf("3: Citirea bazei de date din fisierul TC\BIN\baza.txt");
gotoxy(5,wherey()+1);
cprintf(" si afisarea ei la monitor"); gotoxy(5,wherey()+1);
cprintf("4: Ad†ugarea unei inscrieri in baza de date");
gotoxy(5,wherey()+1);
ăutarea după numărul paşaportului"); gotoxy(5,wherey()+1);
cprintf("6: Cautarea după numele persoanei"); gotoxy(5,wherey()+1);
cprintf("7: Cautarea după anul de naştere a persoanei");
gotoxy(5,wherey()+1);
cprintf("8: Aranjarea înscrierilor in ordine alfabetică după
familii"); gotoxy(5,wherey()+1);
cprintf(" Şi înscrierea bazei de date in fişierul
TC\BIN\bazanoua.txt"); gotoxy(5,wherey()+1);
cprintf("9: AfiÅŸarea bazei de date finale la monitor");
gotoxy(5,wherey()+1);
cprintf("0: IeÅŸire");
w=getch();
switch (w) {
case 1 : {conditii(); goto meniu;}
case 2 : {
if(zz==1)
{clrscr();printf("Doriţi sa reintroduceti ?!!?!!?!!??!!?? y/n");
c=getch(); if ((c== n )||(c== N )) goto out; }
n=completare(); scrie_fisier(n,baza);out: goto meniu;}
case 3 : {n=citire_fisier(baza); afisare(n,baza); goto meniu;}
case 4 : {add(baza); goto meniu;}
case 5 : {n=citire_fisier(baza); cautare(n,"nume"); goto meniu;}
case 6 : {n=citire_fisier(baza); cautare(n,"paÅŸaport"); goto meniu;}
case 7 : {n=citire_fisier(baza); cautare(n,"an"); goto meniu;}
case 8 : { n=citire_fisier(baza);aranjare(n);
scrie_fisier(n,bazanoua); goto meniu;}
case 9 : {n=citire_fisier(bazanoua); afisare(n,bazanoua); goto
meniu;}
case 0 : goto m0;
default : goto meniu;}
m0: clrscr();
gotoxy(15,2); textcolor(15);
cprintf("Doriti iesirea din program ?!! y/n");
v=getch(); if ((v== n )||(v== N )) goto meniu;
gotoxy(15,4); textcolor(15);
cprintf("Tastati ");
getch();
}
V. Descrierea programului
Programul dat constă în prelucrarea unei baze de date. Pentru
comoditate s-a creat un meniu operativ cu ajutorul căruia se poate
trece din orice etapă în alta, astfel uşurând procesul de lucru a
utilizatorului.
Ca şi oricare alt program în acest limbaj,mai întîi de toate este
nevoie de a in-clude bibliotecile necesare pentru funcţiile care vor fi
folosite :
1. Biblioteca funcţiilor de prelucrarea a informaţiei de
intare_ieÅŸire
(getch(),gotoxy(),textcolor(),clrscr())
2. Bibilioteca funcţiilor de intrare_ieşire standard
(printf();scanf();fopen()ÅŸ.a.)
3. Bibioteca funcţiilor utilare (randomize();)
După declararea bibiotecilor s-au declarat variabile ce vor fi folosite
pe parcursul programului.Variabilele reprezintă spaţii în memoria
calculatorului avînd acelaşi rol în timp.Limbajul C++ recunoaşte 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(fără 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 funcţia principală main() .
2
4
6
8
J
4
6
8
Ãâ€
Ö
Ø
J
N
`
â€Â
Ã’
Ãâ€
Ö
Ø
ê
"
.
/
8
9
:
;
+Ø
-
.
摧䜫-᠀.
/
h7
à ¨€&䘋
h7
h7
h7
h7
h7
h7
1ci când se lansează în execuţie programul.Parametrul void
înaitea funcţiei arată că fun-cţia nu întoarce valori, void între
paranteze arată că funcţia nu foloseşte parameti.
Întregul program e construit pe subprograme (funcţii) fiecare avînd
numele său şi rol în program.
Prima funcţie ce se excută după lansarea programului este menu() care
duce apel la desenarea meniului.Această funcţie curăţă ecranul (cu
clrscr();) apoi atribuie o cu-loare (15 albă) textului care va apărea
pe ecran(textcolor(15);),după aceasta cu aju-torul funcţiei de
poziţionare a cursorului (gotoxy();) aşează acesta pe poziţia
(15.2) Urmează funcţia de afişare a informaţiei cu fomat şi
culoare cprintf()
Prototipul funcţiei: int cprintf( const char *format ,argument,...);
Descrierea funcţiilor
În programul dat se conţin diferite funcţii destinate prelucrării
şirurilor de ca-ractere. Aceste funcţii sunt standarte, adică
declarate cu prototip într-o bibliotecă spe-cială. Toate funcţiile
sunt declarate în biblioteca: .
În timpul rezolvării acestei lucrări ne-am întâlnit cu situaţii
când era necesară prelucrarea şi păstrarea unei informaţii mai
complexe care conţinea date de diferite ti-puri. Gruparea acestor date
într-o variabilă complexă a fost posibilă datorită tipului de date
Structură.
De asemenea trebuie de menţionat faptul că un rol important în
această lucrare au avut-o funcţiile şi fişierele în C. Funcţiile
le-am folosit în scopul evidenţierii unor sarcini concrete şi
încapsularea lor în module aparte, pentru a preveni probabilitatea de
apariţie a erorilor atât logice cât şi sintactice. Deci acum voi
încerca pe scurt să descriu programul pe care l-am realizat:
AFISAREA_CONDIÅ¢IILOR INIÅ¢IALE.
Mai întâi am creat un meniu cu ajutorul instrucţiunii Goto:
Sintaxa: goto eticheta;
unde eticheta este un identificator C ataşat unei instrucţiuni. O
etichetă constă dintr-un nume şi două puncte.
Instrucţiunea de salt necondiţionat transmite controlul execuţiei
programului la instrucţiunea marcată cu eticheta (în cazul meu
eticheta este: meniu).
În continuare cu ajutorul funcţiei de intrare în C : getch()
Sintaxa:var=getch() – unde var este numele variabilei căreia îi va
fi atribuit caracterul cules de la tastatură (în cazul meu var este
caracterul W).
Ca să putem verifica condiţiile din meniu am folosit instrucţiunea
de selectare Switch:
Sintaxa: switch(expresie)
{case expresie const1: instructiunea 1;break;
...
case expresie constN:instructiunea N;brak;
default:instructiune;
}
Atunci când un program întâlneşte o instrucţiune switch, testează
condiţia asociată (expresie). Pe baza valorii întregi a acesteia, el
va transfera execuţia către blocul case, etichetat cu acea expresie
const corespunzătoare. În cazul când nici o expresie const nu este
egală cu expresia după switch, se îndeplineşte instrucţiunea din
ramura default.
În continuare utilizatorului i se propune să aleagă orice punct din
meniu. Când alegem punctul “1†atunci are loc aplul la funcţia:
Condiţii, deci de aici se începe lucrul cu funcţiile:
Sintaxa : tip_f nume_-f (lista parametri)
{ declararea variabilei;
operatori;}
unde: tip-f - tipul funcţiei numit tipul valorii returnate ;
nume-f – numele funcţiei;
lista parametri – conţine tipul şi numele fiecărui parametru, în
cazul nostru când compilatorul va întâlni funcÅ£ia “condiÅ£iiâ€Â
în acel moment el verifică dacă corespund tipul valorii returnate,
cantitatea şi poziţia parametrilor funcţiei. După aceea cu ajutorul
instrucţiunii Goto ieşim iarăşi în meniu.
a) COMPLETAREA BAZEI DE DATE:
Dacă utilizatorul testează tasta “2†atunci are loc apelul la
funcÅ£ia cu tip “Com-pletareâ€Â:
Sintaxa: tip_f nume_f(Lista_parametri);
Unde tip_f – tipul funcţiei şi tipul valorii returnate ;
Nume_f – numele funcţiei.
Funcţiile în C++ întorc valori cu ajutorul operatorului Return, lipsa
acestui operator în cadrul funcţiei cu tip duce la eroare. Aici cu
ajutorul lui Return, se face atribuirea valorii din variabila locală
funcÅ£iei â€Âcompletare†K în valiabila N din funcÅ£ia main.
2. b)ÃŽNSCRIEREA EI ÃŽN FIÅžIERUL BAZA.TXT:
Tot în acest punct se cere şi înscrierea bazei de date în fişierul
baza.txt. În continuare se face apel tot la o funcţie
„scrie_fişier†care conţine parametri, dar nu întoarce valori.
Sintaxa: tip-f nume-P ;
Unde tip-p – tipul parametrului;
Nume-P – numele parametrului.
Dacă funcţia conţine câţiva parametri ei vor fi descrişi
împreună între „()†şi vor fi despărÅ£iÅ£i prin „,â€Â.
Parametru - informaţia iniţială transmisă din program în funcţie
la momentul apelului acestuia.
În cazul nostru urmează instrucţiunea de apel la funcţie, în acest
caz se efectuiază controlul corespunderii parametrilor actuali şi
parametrilor formali după cantitate, poziţie şi tip.
Parametru actual - variabila transmisă în funcţie în tipul
apelării acesteia (în cazul nostru sunt: n şi baza) .
Parametru formal - variabila descrisă ca parametru în timpul
declarării funcţiei şi folosite în corpul funcţiei la calculele
necesare (în cazul nostru sunt: K şi numef).
În continuare pentru a înscrie baza în fişier trebuie să o facem
cu ajutorul indicatorilor la fiÅŸier:
Declararea: FILE *f ;
Unde FILE – cuvântul cheie rezervat pentru fişier;
f – numele indicatorului la fişier.
Mai întâi de toate trebuie să deschidem fişierul, aceasta se face
cu ajutorul funcţiei fopen:
Sintaxa: f=fopen(„nume-fâ€Â, „modâ€Â);
Unde f – numele indicatorului la fişier;
Nume-f – numele fişierului pe disc;
Mod- modul de deschidere a fiÅŸierului.
Deoarece din cele trei modalităţi de acces de deschidere a
fişierului am ales cea de a înscrie , atunci scriem în lo de
„mod†– „wâ€Â. ÃŽn caz că fiÅŸierul nu există se va returna
valoare NULL. Pentru a scrie date într-un fişier deschis vom utiliza
funcţia fwrite, care are următorul prototip în biblioteca stdio.h:
Sintaxa: fwrite(&Nume, sizeof (structNume),1,pPointerFiÅŸier).
După ce va fi baza înscrisă fişierul trebuie închis, aceasta se
face cu ajutorul funcţiei flose:
Sintaxa: fclose(f)
Unde f- numele indicatorului la fiÅŸier
a) CITIREA BAZEI DE DATE DIN FIÅžIERUL BAZA.TXT:
ÃŽn continuare dacă utilizatorul testează „3â€Â, programul apelează
la o funcÅ£ie cu tip „citire-fiÅŸierâ€Â. De asemenea se deschide
întâi fişierul, iar pentru a fi posibilă citirea folosim funcţia
fread :
Sintaxa: fread(&Nume, sizeof struct(Nume), 1,pPointerFiÅŸier)
Se foloseşte operatorul sizeof deoarece acesta asigură că este citit
numărul corect de octeţi.
Aici am mai folosit instrucţiunea ciclică While , care se foloseşte
în cazul când nu-i cunoscut numărul de repetări şi este necesar ca
ciclul să fie îndeplinit de 0 sau mai multe ori.
Sintaxa:While(expresie) instrucţiune;
Modul de lucru: la început este controlată expresia dacă este
diferită de 0 sau TRUE apoi se îndeplineşte instrucţiunea şi
continuă până când expresia este egală cu 0.
b) AFIÅžAREA EI LA MONITOR:
Aici am folosit fmod(x,y) - care întoarce restul de la împărţire
a două numere.
În cazul nostru vede dacă este par sau nu numărul.
În rest am folosit aceleaşi funcţii care au fost descrise mai sus.
ADĂUGAREA UNEI ÎNSCRIERI_
După executarea cifrei „4†din meniu programul apelează la
funcţia cu parametri „void add†, care permite adăugarea 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 – câmpul structurii.
În cazul nostru adi este variabilă de tip structură.
5.6.7. CĂUTĂRILE DUPĂ:
numărul paşaportului, numele persoanei şi anul de naştere:
În toate aceste puncte am folosit aceleaşi funcţii pe care le-am
descris mai sus.
8.ARANJAREA ÃŽNSCRIERILOR ÃŽN ORDINE ALFABETICÄ‚:
Pentru aranjarea înscrierilor am folosit instrucţiunea ciclică FOR:
Caracteristici:
Numărul de repetări sunt cunoscute de la începutul lui;
Conducerea ciclului este efectuată de o variabilă de tip întreg
numită parametrul ciclului, care în acest proces primeşte valori
consecutive de la valoarea iniţială la valoarea finală.
Sintaxa: Expr 1 – de iniţializare a parametrului;
Expr 2 – de control;
Expr 3 – de incrementare sau de corecţie.
Se continuă până expr 2 devine 0 sau Falsă.
9. AFIÅžAREA BAZEI DE DATE FINALE LA MONITOR:
În acest punct se foloseşte funcţia 3, numai că are loc citirea şi
afişarea bazei din fişierul bazanouă.txt.
IEÅžIRE:
Pentru a putea ieşi din program, utilizatorul trebuie să tasteze tasta
Enter.
DESCRIEREA BIBILIOTECILOR:
stdio.h
printf (control, par1, par2, ..., parn ) - funcţia pentru a realiza
ieÅŸiri cu format
control - parametrul ce conţine:
- 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) - funcţia pentru scriere
cu format într-un fişier
scanf (control, par1, par2, ..., par n) - funcţia pentru citirea
datelor sub controlul cu format
fis= fopen (nf , mod) - funcţia pentru deschiderea unui fişier
fis - un pointer spre tipul FILE
nf - specificatorul fiÅŸierului care se deschide
mod - un sir de caractere care defineşte modul în care se deschide
fiÅŸierul
fclose (FILE *fis ) - funcţia pentru închiderea fişierului
conio.h
getch ( ) - funcţia pentru citirea unui caracter fară al afişa la
ecran
cprintf (control, par1, par2, ..., par n ) - funcţia pentru scriere
color cu format
gotoxy (int coloana, int linie) - funcţia pentru poziţionarea
cursorului la coordonatele
indicate
coloana - coordonata x a ecranului
linie - coordonata y a ecranului
clrscr ( ) - funcţia penru ştergerea ecranului
textcolor (int culoarea) - funcţia pentru setarea culorii caracterului
culoarea - valoare cuprinsă intre [0,15]
textbackground (int culoarea) - funcţia pentru setarea culorii fondului
string.h
char *strcpy(char *dest, const char *sursa) - funcţia pentru copierea
şirului sursa în şirul dest.
VI. REZULTATELE OBÅ¢INUTE
Arbuz – Vasile !!!!! 2364532 !!!!! 1978
!!!!!
Cojoc – Irina !!!!! 6486753 !!!!!
1799 !!!!!
Rotaru – Vitalie !!!!! 1758034 !!!!! 1980
!!!!!
Tiron – Alexandru !!!!! 1979432 !!!!! 1958
!!!!!
Untilă – Svetlana !!!!! 5307054 !!!!! 1999
!!!!!
Voloc – Sergiu !!!!! 4043005 !!!!! 1982
!!!!!
Zubcu – Cornel !!!!! 0364786 !!!!! 2000
!!!!!
VII. Concluzii
În fine menţionăm că caracteristicile distinctive ale limbajului
“Câ€Âsunt:
Portabilitatea maximă
Strucrurarea
Posibilitatea efectuării operaţiilor la nivelul maşinii, cu
păstrarea trăsăturilor unui limbaj evoluat
În urma efectuării acestei lucrări am căpătat experienţa de a
percepe lucrul cu baza de date în “C†. De asemenea am depistat
modul de lucru cu diferite funcţii ale programului şi ne-am convins
că acest limbaj are a mare eficacitate de programare.
Mi-a plăcut modalitatea de aranjare a bazei de date la monitor şi
faptul că aici poţi să aranjezi totul după placul tău.
Bibliografie:
Catrina Octavian “Turbo C++†Bucureşti 1994
Constantin A. Sevici “Programarea în C†Bucureşti 1995
Clint Hicks - “Utilizarea Câ€Â, Teora , BucureÅŸti 1995
PAGE
PAGE 35
m
START
1
ì¥Â`