Sunteți pe pagina 1din 7

Ministerul Educaţiei, Culturii și Cercetării al Republicii Moldova

Universitatea Tehnică a Moldovei


Departamentul Informatică și Ingineria Sistemelor

RAPORT
Lucrarea de laborator nr.4
la Programarea Calculatoarelor
TEMA: Alocarea dinamică a memoriei pentru tablourile
bidimensionale. Utilizarea funcţiilor şi a pointerilor

A efectuat: st. Crupa Grigore gr. TI-201 FR


A verificat: dr. conf.univ. Lucia Stadler

Chişinău -2020
Lucrarea de laborator nr.4

Tema: Alocarea dinamică a memoriei pentru tablourile bidimensionale. Utilizarea funcţiilor şi a


pointerilor
Scopul lucrării: Programarea algoritmilor de prelucrare a tablourilor bidimensionale prin
utilizarea funcţiilor, pointerilor şi alocarea dinamică a memoriei pentru tablou.
Formularea condiții problemei: Pentru tabloul bidimensional dat din n linii şi m coloane să se
afişeze la ecran următorul meniu de opţiuni:

1. Alocarea dinamică a memoriei pentru tablourile bidimensionale


2. Introducerea elementelor tabloului de la tastatură
3. Completarea tabloului cu valori aleatorii
4. Să se sorteze a doua şi penultima linie ale tabloului în ordine descendentă cu ajutorul metodei
de sortare prin selecţie şi schimb.
5. Afișarea elementelor tabloului la ecran
6. Eliberarea memoriei alocate pentru tablou
0. Ieșire din program
Să se elaboreze funcţiile pentru realizarea opţiunilor meniului.

Variante pentru sortare (pentru opțiunea 4 din meniu):


Varianta 17. Să se sorteze coloanele impare ale tabloului în ordine descendentă cu ajutorul
metodei de sortare prin selecție liniară.

Mersul lucrării:
Noţiuni principale din teorie şi metode folosite:
Mărimea exactă a unui tablou este necunoscută până la momentul compilării. Mărimea tabloului
alocată inițial poate fi sau insuficientă pentru cerințele utilizatorului, sau poate fi mai mare decât
este necesar, ceea ce implică utilizarea non-economă a memoriei. Alocarea dinamică permite
programului să obțină mai mult spațiu în timp de programul se execută, sau să elibereze spațiul
ce nu mai este necesar.
malloc() – alocă numărul de octeți solicitatm și returnează un pointer de tip void la primul octet
din memoria alocată. Acest pointer poate fi convertit la orice tip de date necesar. Dacă spațiul
este insuficient, malloc returnează NULL.
calloc() – alocă spațiu pentru un tablou de elemente, le inițializează la 0, apoi returnează un
pointer la memorie.
free() – dealocarea memoriei anterior alocate.
realloc() – modificarea dimensiunii spațiului alocat anterior.

1
Schema logică:

2
3
Codul programului în limbajul C:

4
5
Rezultatele obținute:

Analiza rezultatelor și concluzii:

1. În urma verificăriii se poate constata că rezultatele obținute sunt corecte și programul


funcționează conform așteptărilor.
2. Funcțiile create pot fi reutilizate prin apelarea repetată a acestora, ceea ce economisește
destul de mult timp ce ar fi utilizat la scrierea funcțiilor separate pentru fiecare sarcină.
3. Variabilele de tip pointer sunt destul de utile pentru accesarea valorilor variabilelor
declarate în alte funcții. Pentru acest scop pot fi utilizate variabilele globale (declarate în
afara funcțiilor), însă acest lucru nu este recomandabil.
4. Prin utilizarea funcțiilor malloc, realloc, calloc din biblioteca stdlib, memoria poate fi
alocată în mod dinamic, conform cerințelor utilizatorului. Astfel se evită alocarea unei
porțiuni prea mari de memorie, atunci când utilizatorul introduce o matrice mică, și se evită
depășirea memoriei atunci când utilizatorul are nevoie să prelucreze un tablou, ce ocupă mai
multă memorie decât a fost prevăzută de programator.

Bibliografie:

1. Carcea L.,Vlas S., Bobicev V. Informatica:Sarcini pentru lucrări de laborator. Chișinău:


UTM, 2005. - 19p.

2.Conspectul prelegerilor cursului Programarea Calculatoarelor pentru studenți gr. TI-154,


SI-151. Lector: dr., conf. univ. M.Kulev. Chișinău, UTM, 2015.

3.Multi-dimensional arrays in C,
http://www.tutorialspoint.com/

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