Sunteți pe pagina 1din 30

Universitatea

Politehnica
Bucureşti

"States of Matter", by D.L. Goodstein

Structuri de Date:
Introducere
alexandru.olteanu@upb.ro
STRUCTURI DE DATE – CURSUL 1 – Introducere

De ce aceasta facultate?

Ce face aceasta facultate? Ce NU face aceasta facultate?

?? ??!?!?!

2
Februarie 2020
STRUCTURI DE DATE – CURSUL 1 – Introducere

People profile

Gasiti cat mai multe modalitati Ce urmeaza in urmatoarea secventa?


de a folosi un pantof 1, 2, 5, 10, 17, 26, ?
3
Februarie 2020
STRUCTURI DE DATE – CURSUL 1 – Introducere

Sistemele de calcul au nevoie de structură

The Matrix

4
Februarie 2020
STRUCTURI DE DATE – CURSUL 1 – Introducere

De ce acest curs?

5
Februarie 2020
STRUCTURI DE DATE – CURSUL 1 – Introducere

Situarea cursului

6
Februarie 2020
STRUCTURI DE DATE – CURSUL 1 – Introducere

C vs C++
C C++
Object-Oriented no yes
Learning curve quick recap PC min. 3 weeks
mai simplu: de ce nu imi mai complex: de ce nu imi
iese structura de date  compileaza programul 
Clean code void*  data structures as classes 
char arrays  string 
Libraries several: link STL and many more
Aplicatii Embedded Gaming

7
Februarie 2020
STRUCTURI DE DATE – CURSUL 1 – Introducere

Despre cursul de SD

8
Februarie 2020
STRUCTURI DE DATE – CURSUL 1 – Introducere

Cum obținem aceste competente?

9
Februarie 2020
STRUCTURI DE DATE – CURSUL 1 – Introducere

Lessons Learned - Team Work

10
Februarie 2020
STRUCTURI DE DATE – CURSUL 1 – Introducere

Lessons Learned – Work Ethics

11
Februarie 2020
STRUCTURI DE DATE – CURSUL 1 – Introducere

Lessons Learned – Teorie vs Cod

Teorie Cod

12
Februarie 2020
Universitatea
Politehnica
Bucureşti

C Programming
STRUCTURI DE DATE – CURSUL 1 – Introducere

C Programming
• Inclusion of headers
• Definition of types
• Declaration of global variables #include <stdio.h>
• Definition of functions // global variables should be avoided
• The main function char* name = "Joe";

void sayHello(char* name) {


printf("Hello %s\n",name);
}

int main() {
char* name = "Joe";
sayHello(name);
return 0;
}

Global variables should be avoided when unnecessary


http://c2.com/cgi/wiki?GlobalVariablesAreBad
14
Februarie 2020
STRUCTURI DE DATE – CURSUL 1 – Introducere

C Compiling process

https://www.geeksforgeeks.org/compiling-a-c-program-behind-the-scenes/

15
Februarie 2020
Universitatea
Politehnica
Bucureşti

Alocarea Memoriei
STRUCTURI DE DATE – CURSUL 1 – Introducere

Alocare statica si dinamica

Alocare statica Alocare dinamica


Tipuri de baza
Date omogene
Struct

• Alocare statica:
• memoria este alocata de compilator, nu se mai poate modifica la runtime
• pe Stack
• Alocare dinamica:
• memoria este alocata la runtime
• pe Heap

17
Februarie 2020
STRUCTURI DE DATE – CURSUL 1 – Introducere

Tipuri de baza – alocare statica

Alocare statica Alocare dinamica


Tipuri de baza
Struct
Date omogene

int a;
a = 10;

sizeof(a)
sizeof(int)
18
Februarie 2020
STRUCTURI DE DATE – CURSUL 1 – Introducere

Tipuri de baza – alocare dinamica

Alocare statica Alocare dinamica


Tipuri de baza
Struct
Date omogene

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


*ptr = 10;

free(ptr);

memory leaks; no garbage collector


19
Februarie 2020
STRUCTURI DE DATE – CURSUL 1 – Introducere

Struct – alocare statica

Alocare statica Alocare dinamica


Tipuri de baza
Struct
Date omogene

struct Masina {
char* culoare;
int cai_putere;
long pret;
};

struct Masina o_masina;


o_masina.pret;
20
Februarie 2020
STRUCTURI DE DATE – CURSUL 1 – Introducere

Struct – alocare dinamica

Alocare statica Alocare dinamica


Tipuri de baza
Struct
Date omogene

struct Masina {
char* culoare;
int cai_putere;
long pret;
};

struct Masina* o_masina = malloc(sizeof(struct Masina));


o_masina->pret = 15;
free(o_masina);
21
Februarie 2020
STRUCTURI DE DATE – CURSUL 1 – Introducere

Array – alocare statica

Alocare statica Alocare dinamica


Tipuri de baza
Struct
Date omogene

char name[10] = “Mike";


char name[] = “Mike";

22
Februarie 2020
STRUCTURI DE DATE – CURSUL 1 – Introducere

Array – alocare dinamica

Alocare statica Alocare dinamica


Tipuri de baza
Struct
Date omogene

int *ptr = malloc(10 * sizeof (int));


int *ptr = calloc(10,sizeof (int));

free(ptr);

23
Februarie 2020
STRUCTURI DE DATE – CURSUL 1 – Introducere

Metode de alocare dinamica

24
Februarie 2020
STRUCTURI DE DATE – CURSUL 1 – Introducere

Alocarea dinamica a matricelor


Care este diferenta intre array1 si array2? 

int **array1 = malloc(nrows * sizeof(int *));


for(i = 0; i < nrows; i++)
array1[i] = malloc(ncolumns * sizeof(int));

int **array2 = malloc(nrows * sizeof(int *));


array2[0] = malloc(nrows * ncolumns * sizeof(int));
for(i = 1; i < nrows; i++)
array2[i] = array2[0] + i * ncolumns;

25
Februarie 2020
STRUCTURI DE DATE – CURSUL 1 – Introducere

Alocarea dinamica a matricelor


Care este diferenta intre array1 si array2? 

int **array1 = malloc(nrows * sizeof(int *));


for(i = 0; i < nrows; i++)
array1[i] = malloc(ncolumns * sizeof(int));

int **array2 = malloc(nrows * sizeof(int *));


array2[0] = malloc(nrows * ncolumns * sizeof(int));
for(i = 1; i < nrows; i++)
array2[i] = array2[0] + i * ncolumns;

Dar ce parere aveti de array3 si array4? 

int *array3 = malloc(nrows * ncolumns * sizeof(int));

int (*array4)[NCOLUMNS] = malloc(nrows * sizeof(*array4));

http://c-faq.com/aryptr/dynmuldimary.html

26
Februarie 2020
STRUCTURI DE DATE – CURSUL 1 – Introducere

Bibliografie

• Cap 3 din Cormen, Thomas H. Introduction to algorithms.


MIT press, 2009.
• Cap 3 din Kleinberg, Jon, and Eva Tardos. Algorithm design.
Pearson Addison-Wesley, 2006, disponibil la acest link
• Cap 4 din Manber, Udi. Introduction to algorithms: a
creative approach. Addison-Wesley Longman Publishing Co.,
Inc., 1989, disponibil la acest link
• The C Programming Language, Kernighan, Brian; Ritchie,
Dennis
• https://www.learn-c.org/

27
Februarie 2020
STRUCTURI DE DATE – CURSUL 1 – Introducere

Start with the Why

Simon Sinek, “Start with the Why” TED Talk

28
Februarie 2020
STRUCTURI DE DATE – CURSUL 1 – Introducere

Red Team – student vs professional

Michael Seibel on advice and bias

29
Februarie 2020
STRUCTURI DE DATE – CURSUL 1 – Introducere

The pressure on college students

Sir Ken Robinson, “Bring on the learning revolution” TED Talk

30
Februarie 2020

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