Sunteți pe pagina 1din 6

Ministerul Educaiei al Republicii Moldova

Universitatea Tehnic a Moldovei

Catedra:Informatica Aplicat

RAPORT
Lucrarea de laborator Nr.1
La Structuri de Date i Algoritmi

A efectuat: st. gr. TI - 164

Ciobanu Alina

A verificat: dr., conf.univ.

Mihail Kulev

Chiinu 2017
Lucrare de laborator Nr.1

Tema: Implementarea tipului de date abstract Tablou de structuri n limbajul C

Scopul lucrrii: : Implementarea tipului de date abstract Lista simplu nlanuit n


limbajul C.

Sarcina de lucru: De scris trei fiiere-text n limbajul C pentru implementarea i


utilizarea TDA Lista simplu nlanuit:

1. Fiierul antet lista.h care conine:


a. specificaia structurei elementului listei simplu nlanuite (conform
variantei din lucrarea de laborator nr.1)
b. prototipurile funciilor care asigur operaiunile de prelucrare a listei
simplu nlanuite.
2. Fiierul lista.cpp sau lista.c care conine codurile (implementrile) tuturor funciilor
declarate n fiierul antet.
3. Fiierul utilizatorului lab2_3.cpp sau lab2_3.c care reprezint programul cu funcia
main ( ) pentru prelucrarea listei simplu nlanuite cu afiarea meniului de opiuni pe
ecran si anume:

pentru lucrarea de laborator nr.2:

crearea listei simplu nlnuite cu n elemente n memoria dinamic;


introducerea informaiei despre elementele listei de la tastatur;
afiarea informaiei despre elementele listei pe ecran (precum i afiarea
adreselor elementului curent i urmtor);
cutarea elementului listei dup un cmp informaional al structurei;
modificarea cmpurilor elementului listei;
interschimbarea a 2 elemente indicate ale listei;
determinarea lungimii listei;
sortarea elementelor listei dup un cmp;
determinarea adresei ultimului element al listei;
eliberarea memoriei dinamice alocate pentru lista;
ieire din program.

pentru lucrarea de laborator nr.3:

adugarea unui element nou la sfiritul listei,


adugarea unui element nou la nceputul listei,
inserarea unui element nou n lista dup elementul indicat,
inserarea unui element nou n lista nainte elementul indicat,
eliminarea unui element din lista,
divizarea listei simplu nlanuite n dou liste separate,
unirea a 2 liste simplu nlanuite ntr-o list,
salvarea informaiei despre elementele listei n fiier,
citirea informaiei despre elementele listei din fiier.

Mersul lucrrii:

Notiuni principale din teorie i metode folosite:[2]

Structurile sunt o facilitate oferit de limbajul C pentru a organiza mai bine datele cu
care lucreaz programele. Dac funciile ne permit s organizm mai
bine codul, structurile ne permit s organizm mai bine datele.

Structura este o mulime de date grupate, conform unei ierarhii, de obicei de tipuri
diferite. Structura poate fi comparat cu tabloul, ns tabloul conine date de un acelai
tip, iar elementele tabloului se acceseaz cu ajutorul indicilor, pe cnd accesarea
componentelor structurii are o form specific. Structura reprezint un tip de date definit
de utilizator prin utilizarea tipurilor deja existente.

Ex.: Utilizind instructiunea typedef si specificator de structura struct putem defeni


structura si un nou tip de date student:

typedef struct student


{ // definirea cimpurilor (membrilor) structurii
char nume[50];
int nr;
float nm;
} student;

Elementele structurii pot fi de tip predefinit sau definit de utilizator, excepie fiind tipul
structurii date. Pentru definirea variabilelor este suficient utilizarea numelui de structur
la fel ca tipurile predefinite: student s1, s2, s[10], *p; n acest caz s-au definit dou
variabile de tip student, un tablou din 10 studenti i un pointer spre student.

Referirea la componentele unei structuri se face utiliznd att numele structurii ct i a


componentei respective. Aceasta se realizeaz printr-o construcie de forma:

s1.nm = 9.5; s[i].nm = 8.5;

n cazul pointerilor:

p = &s1;
p->nm = 9.5;
O variabil structur poate fi iniializat la declarare prin precizarea ntre {} a valorilor
cmpurilor; cele neprecizate sunt implicit 0.De asemenea,o varibila structura poate fi
transmisa ca argument efectiv la apelarea unei funcii sau poate fi primita ca rezultat al
unei funcii, ntr-o instruciune return.

Un avantaj important al utilizrii structurilor este c atunci cnd atribuim o variabil de


tip structur unei alte variabile de acelai tip, se copiaz automat toate cmpurile
structurii.

n limbajul C putem specifica pentru cmpurile de tip integer sau char dimensiunea n bii
pe care s o ocupe. Dimensiunea n bii se specific plasnd imediat dup definirea
cmpului caracterul : urmat de numrul de bii pe care dorim s l ocupe cmpul.

Exemplu:
struct data_biti
{
unsigned int zi : 5;
unsigned int luna : 4;
int an : 15;
};

Dac urmrim (cu ajutorul operatorului sizeof) dimensiunea ocupat de structura


redefinit astfel, vom vedea c este ntr-adevr de 3 octei.

Fisiere:

Un fiier este o structur dinamic, situat n memoria secundar (pe disk-uri). Limbajul C
permite operarea cu fiiere:

de tip text - un astfel de fiier conine o succesiune de linii, separate prin NL ('\n')
de tip binar - un astfel de fiier conine o succesiune de octeti, fr nici o structur.

Prelucrarea unui fiier presupune asocierea acestuia cu un canal de I/E (numit flux sau
stream). Exist trei canale predefinite, care se deschid automat la lansarea unui program:

stdin - fiier de intrare, text, este intrarea standard tastatura


stdout - fiier de iesire, text, este ieirea standard - ecranul monitorului.
stderr fiier de iesire, text, este ieirea standard unde sunt scris mesajele de eroare -
ecran.

Pentru a prelucra un fiier, trebuie parcurse urmtoarele etape:

se definete o variabil de tip FILE * pentru accesarea fiierului; FILE * este un tip
structur definit n stdio.h, care conine informaii referitoare la fiier i la tamponul de
transfer de date ntre memoria central i fiier (adresa, lungimea tamponului, modul
de utilizare a fiierului, indicator de sfrsit, de poziie n fiier)
se deschide fiierul pentru un anumit mod de acces, folosind funcia de bibliotec fopen,
care realizeaz i asocierea ntre variabila fiier i numele extern al fiierului
se prelucreaz fiierul n citire/scriere cu funciile specifice
se inchide fiierul folosind funcia de bibliotec fclose.

FILE *fopen(const char *nume_fis, const char *mod);


Returneaz pointer la fiier sau NULL dac fiierul nu poate fi deschis; valoarea
returnat este memorat n variabila fiier, care a fost declarat pentru accesarea lui.

Modul de deschidere poate fi:

r - readonly , este permis doar citirea dintr-un fiier existent


w - write, creaz un nou fiier, sau dac exist deja, distruge vechiul continut
a - append, deschide pentru scriere un fiier existent ( scrierea se va face n
continuarea informaiei deja existente n fiier, deci pointerul de acces se plaseaz
la sfritul fiierului )
+ - permite scrierea i citirea - actualizare (ex: r+, w+, a+). O citire nu poate
fi direct urmat de o scriere i reciproc. nti trebuie repoziionat cursorul de acces
printr-un apel la fseek.
Analiza functiilor:

Codul sursa a programului

Fiierul antet:

Fiierul implementrilor:

Fiierul principal:

Analiza rezultatelor si concluzii:


1. Verificarea ne arata ca rezultatele obtinute sunt corecte si programul lucreaza corect.
2. Au fost obtinute deprinderi pentru scrierea unui program de prelucrare structurilor de
date si lucru cu fisiere
3. Am aplicat cunostintele obtinute anterior pentru a elabora un program mult mai complex.
4. Am importat datele din fisier.
5. Am exportat datele in fisier pentru a le salva.

AVANTAJE:
1. Utilizarea fiierului antet permite folosirea acestor funcii i n alte aplicaii.
2. Introducerea structurilor de date este limitata doar de memoria disponibila a HDD.
3. Programul contine functii,ceea ce ne va permite sa modificam programul mai usor dupa
dorinta sau sa adaugam alte functii pentru modificarea bazai de date.
4. Toate inregistrarile sunt pastrate in fisier,ceea ce ne permite sa nu pierdem datele la iesirea
din program.
5. Programele devin mai explicite dac se folosesc structuri n locul unor variabile separate.
6. Se pot defini tipuri de date specifice aplicaiei, iar programul reflect mai bine universul
aplicaiei.
7. Se poate reduce numrul de parametri al unor funcii prin gruparea lor n parametri de
tipuri structur i deci se simplific utilizarea acelor funcii.
8. Se pot utiliza structuri de date extensibile, formate din variabile structur alocate dinamic
i legate ntre ele prin pointeri (liste nlnuite, arbori .a).

DEZAVANTAJE:
1. Pot aparea exceptii in urma introducerii stringurilor cu whitespace.
2. Nu exista import din fisier *.txt in fisier binar.
3. In cazul stergerii unei inregistrati din mijloc, celelalte isi pastreaza ordinea si nu isi
schimba indicile cu i-1.

Bibliografie:
1. Carcea L.,Vlas S., Bobicev V. Informatica: Sarcini pentru lucrri de laborator.
Chiinu: UTM, 2005.
2. Conspectul prelegerilor cursului Programarea Calculatoarelor pentru studeni
Lector: dr., conf. univ. M.Kulev. Chiinu, UTM, 2017.
3. Tutorial in C language: http://www.tutorialspoint.com/cprogramming/, accesat
07.02.2017

S-ar putea să vă placă și