Tehnici Programare

Laborator
8/10 (2 voturi)
Conține 5 fișiere: doc
Pagini : 19 în total
Cuvinte : 4498
Mărime: 33.65KB (arhivat)
Publicat de: Paraschiva Petrache
Puncte necesare: 0
Profesor îndrumător / Prezentat Profesorului: Prof. Claudia Botez

Extras din laborator

1. Recapitularea unor elemente ale limbajului C

1.1 Structuri

1.1.1 Definire

Se foloseste cuvantul cheie struct urmat de numele structurii si enumerarea membrilor acesteia:

struct X

{

int i;

char c;

};

1.1.2 Utilizare

Elementele membre ale variabilelor de tip structura pot fi accesate folosind operatorul .:

struct X x1, x2[4];

x1.i=4;

x2[2].c=getch();

1.2 Pointeri

1.2.1 Declarare

int *pi; /* pointer la o variabila de tip int */

char *pc; /* pointer la o variabila de tip char */

struct X *px; /* pointer la o variabila de tip struct X */

struct X x1, x2[4];

1.2.2 Utilizare

pi=&x1.i; /* atribuirea adresei unei variabile de */

px=&x2[2]; /* acelasi tip cu al pointerului */

pc=&px->c;

*pi=4; /* referirea zonei de memorie adresate de */

*pc=getch(); /* pointer cu ajutorul operatorului * */

1.3 Alocare dinamica

Exista aplicatii în care necesarul de memorie nu este cunoscut din faza de compilare si rezervarea unor zone de memorie de dimensiuni acoperitoare pentru toate datele ar depasi capacitatea memoriei disponibile. Singura solutie în acest caz o reprezinta alocarea/eliberarea interactiva de zone de memorie chiar în timpul executiei programului - alocarea dinamica de memorie. În acest scop, în programele C se folosesc functii de biblioteca ale caror prototipuri (descrieri ale tipului si argumentelor functiilor) se gasesc în fisierul header alloc.h. Cele mai utilizate functii pentru alocarea de memorie sunt:

void* malloc(unsigned size);

void* calloc(unsigned nelem, unsigned size);

Prima functie primeste ca unic argument numarul de octeti ce trebuie alocati si returneaza adresa de început a zonei de memorie alocate în caz de succes sau NULL (0) în caz de esec. A doua functie se comporta identic, încercând însa alocarea a nelem blocuri succesive de size octeti.

Toate alocarile dinamice se fac într-o zona de memorie destinata special acestui scop, zona numita heap (gramada). În functie de modelul de memorie folosit, dimensiunea heap-ului variaza de la dimensiunea unui segment (64KO) minus dimensiunea programului pâna la dimensiunea întregii memorii disponibile minus aceeasi dimensiune a programului.

Pentru eliberarea unei zone de memorie alocate dinamic se foloseste functia complementara

void free(void* addr);

unde addr reprezinta un pointer ce contine adresa de început a unei zone de memorie alocata dinamic.

int *pi;

struct X *px;

/* alocare memorie pentru o variabila de tip int */

pi = (int *)malloc(sizeof(int));

*pi=3;

/* alocare pentru un vector de 4 elemente de tip struct X */

px=(struct X *)calloc(4, sizeof(struct X));

px[2]->i=4;

/* eliberare memorie */

free(pi);

free(px);

Preview document

Tehnici Programare - Pagina 1
Tehnici Programare - Pagina 2
Tehnici Programare - Pagina 3
Tehnici Programare - Pagina 4
Tehnici Programare - Pagina 5
Tehnici Programare - Pagina 6
Tehnici Programare - Pagina 7
Tehnici Programare - Pagina 8
Tehnici Programare - Pagina 9
Tehnici Programare - Pagina 10
Tehnici Programare - Pagina 11
Tehnici Programare - Pagina 12
Tehnici Programare - Pagina 13
Tehnici Programare - Pagina 14
Tehnici Programare - Pagina 15
Tehnici Programare - Pagina 16
Tehnici Programare - Pagina 17
Tehnici Programare - Pagina 18
Tehnici Programare - Pagina 19
Tehnici Programare - Pagina 20

Conținut arhivă zip

  • Tehnici Programare
    • TPA_L1.DOC
    • TPA_L2.DOC
    • TPA_L3.DOC
    • TPA_L7.DOC
    • TPA_L8.DOC

Alții au mai descărcat și

Referințe și pointeri

In C++ exista doua modalitati de lucra cu adrese de memomorie: pointeri si referinte. Pointeri Pointerii sunt variabile care contin adresa unei...

Clase

Clasele reprezintă tipuri de data abstracte, asemănătoare structurilor, care încapsulează comportamentul şi datele asociate unei entităţi....

Probleme C++ Rezolvate

Problema 1: cmmdc(a, b) #include<stdio.h> #include<conio.h> //algoritmul lui Euclid //cel mai mare divizor comun pentru doua numere strict...

Vectori

Se citeste un vector v, format din n (0<n<100), valori numere intregi pozitive. Se cere: 1. Sa se determine maximul dintre valorile vectorului...

Matrici

Se citeste o matrice patratica formata din n linii si n coloane cu valori numere intregi. (2<n<20) Se cere: 1. Sa se determine maximul dintre...

Programe în C++

1. /* sa se scrie un program care cere introducerea unei cifre de la tastatura si afiseaza ziua corespunzatoare cifrei introduse, folosindu-se...

C++

/* Sa se scrie un program care citeste 2 numere intregi de la tastatura si testeaza daca suma celor doua numere este egala cu cea introdusa de la...

Te-ar putea interesa și

Strategii de Negociere pentru Soluționarea Conflictelor în Organizația Militară

Introducere Evoluţiile actuale ale organizării organizaţiilor în conexiune cu problematica funcţionalităţii lor au scos în evidenţă necesitatea...

Tehnici de Programare

PREZENTARE GENERALE In proiectul urmator am creat o baza de date cu referire la un hotel (ANGELA). Baza de date este impartita in doua fisiere:...

Înființarea unei Ferme de Caprine de Rasa Carpatină cu un Efectiv Rulat Anual de 295 de Capete

1.Memoriu justificativ 1.1 Importanţă, origine şi începutul creşterii caprinelor Importanţa creşterii şi exploatării caprinelor pe plan mondial...

Medii de Programare

MODULUL 1. INTRODUCERE IN STUDIUL LIMBAJELOR DE PROGRAMARE 1.1 Notiuni generale privind limbajele de programare 1.2 Clasificarea limbajelor de...

Multimedia - Canale, Tehnici, Programe

Multimedia reprezintă orice combinaţie de text,elemente de grafică ,sunete,animaţie şi secvenţe video care ajunge la public prin intermediul...

Algoritmi de Calcul

Capitolul I Sistem Informaţional – Sistem Informatic I.1. Sistemul Informaţional. Un sistem poate fi privit ca un ansamblu de elemente...

Algoritmi și Structuri de Date

Introducere: Semiotica se ocupã cu studiul semnelor în natura si în societate. Semnul nu este o calitate în sine a unui obiect, ci o functie pe...

Liste Liniare C++

I. ALOCAREA DINAMICA A MEMORIEI 1. VARIABILE DE TIP POINTER Def. MEMORIA interna poate fi privita ca o serie de octeti.Pentru a-i distinge...

Ai nevoie de altceva?