Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus...

36
Basiscursus Informatica 9 8/99 1 Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard Benjamins

Transcript of Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus...

Page 1: Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard.

Basiscursus Informatica 98/99 1Basiscursus Informatica, 98-99 College 7, H 7 1

Basiscursus InformaticaCollege 7, Data Structures

Brookshear H7

Richard Benjamins

Page 2: Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard.

Basiscursus Informatica 98/99 2Basiscursus Informatica, 98-99 College 7, H 7 2

Overzicht college 7

Arrays

Lijsten

Stacks

Queues

Bomen (trees)

Customized data types

Object-georienteerd programmeren

Programmeur denkt in conceptuele data structuren

Implementatie in centraal geheugen

Page 3: Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard.

Basiscursus Informatica 98/99 3Basiscursus Informatica, 98-99 College 7, H 7 3

Arrays

Een-dimensionale arrays studenten[4] echte geheugenadres?

– eerste cel + (4-1)– 13 + (4-1) = 16

Multi-dimensionale arrays Verschillende rijen afbeelden op een

aaneengesloten rij geheugencellen– row major order– column major order

Page 4: Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard.

Basiscursus Informatica 98/99 4Basiscursus Informatica, 98-99 College 7, H 7 4

Row major order

Conceptueel

Werkelijk

rij1

rij2

rij3

rij4

rij1 rij2 rij3 rij4

X: 3de rij, 4de colomX

X

Algemeen: geheugenadres van bepaalde entry in array(C x (I - 1)) + (J - 1) C = #colommen, Ide rij, Jde colom(5 x (3 -1)) + (4 -1) = 13 address polynomial

Page 5: Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard.

Basiscursus Informatica 98/99 5Basiscursus Informatica, 98-99 College 7, H 7 5

Overzicht college 7

Arrays

Lijsten

Stacks

Queues

Bomen (trees)

Customized data types

Object-georienteerd programmeren

Page 6: Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard.

Basiscursus Informatica 98/99 6Basiscursus Informatica, 98-99 College 7, H 7 6

Lijsten

“Contiguous lists”

blok van aaneengesloten geheugencellen (array) problemen

– element uit midden lijst verwijderen

– toevoegen niet aan begin of eind

– verplaatsen van veel elementen

“Linked lists” data is verspreid over verschillende blokken cellen maakt gebruik van pointers

Page 7: Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard.

Basiscursus Informatica 98/99 7Basiscursus Informatica, 98-99 College 7, H 7 7

Pointers

Geheugencel bevat het adres van andere geheugencel (ipv data)

Programmateller is ook een pointer

Daarom kan data verspreid worden door geheugen

bv 8 cellen voor data en 1 voor pointer

begin van de lijst: head pointer eind van de lijst: NIL pointer

Page 8: Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard.

Basiscursus Informatica 98/99 8Basiscursus Informatica, 98-99 College 7, H 7 8

Linked list

head pointer

datadata

data NIL

pointerpointer

Page 9: Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard.

Basiscursus Informatica 98/99 9Basiscursus Informatica, 98-99 College 7, H 7 9

Element verwijderen

head pointer

datadata

data NIL

pointerpointer

old

new pointer

verwijderde element

Garbage collection: bijhouden en opruimen van verwijderde elementen

Page 10: Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard.

Basiscursus Informatica 98/99 10Basiscursus Informatica, 98-99 College 7, H 7 10

Element toevoegen

head pointer

data

data

data NIL

pointer

pointer

old

data

pointer

new

new

nieuw element

Page 11: Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard.

Basiscursus Informatica 98/99 11Basiscursus Informatica, 98-99 College 7, H 7 11

Lijsten versus arrays

Probleem: als je een element wilt toevoegen aan array en het is vol

Bij een lijst hoef je van te voren niet de lengte te bepalen

Als je een element uit een array verwijdert dan blijft er een gat over. Om dat te vullen moeten alle elementen een plaats opschuiven

Page 12: Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard.

Basiscursus Informatica 98/99 12Basiscursus Informatica, 98-99 College 7, H 7 12

Operaties op lijst

Meeste programmeertalen komen met ingebouwde procedures voor standaard operaties op lijst

insert(“Beys”, “BC-Informatica-98.99”) printlist(“BC-Informatica-98.99)

Page 13: Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard.

Basiscursus Informatica 98/99 13Basiscursus Informatica, 98-99 College 7, H 7 13

Overzicht college 7

Arrays

Lijsten

Stacks

Queues

Bomen (trees)

Customized data types

Object-georienteerd programmeren

Page 14: Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard.

Basiscursus Informatica 98/99 14Basiscursus Informatica, 98-99 College 7, H 7 14

Stacks

Een ‘contiguous’ lijst waar operaties alleen aan het eind van de lijst worden uitgevoerd toevoegen: push operatie verwijderen: pop operatie

Last-in, first-out (LIFO)

Vergelijk stapel boeken

Behoud efficientie van contiguous list en reduceer nadelen

ooo

o

o

Page 15: Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard.

Basiscursus Informatica 98/99 15Basiscursus Informatica, 98-99 College 7, H 7 15

Toepassing stack

Recursief aanroepen van processen

nieuwe proces “gepushed” op stack, en wordt actief

als proces klaar, “poped” van stack en gaat door met oude proces

Lijst in omgekeerde volgorde printen

loop lijst af en push elementen op stack als aan eind van lijst, pop elementen van

stack en print ze

Page 16: Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard.

Basiscursus Informatica 98/99 16Basiscursus Informatica, 98-99 College 7, H 7 16

Implementatie stack

Blok aaneengesloten geheugencellen

Een eind wordt de stack base

Ander eind (variabel) is de stack pointer

stack baseX X X X X X

stack pointer

gereserveerde groeiruimte

Page 17: Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard.

Basiscursus Informatica 98/99 17Basiscursus Informatica, 98-99 College 7, H 7 17

Overzicht college 7

Arrays

Lijsten

Stacks

Queues

Bomen (trees)

Customized data types

Object-georienteerd programmeren

Page 18: Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard.

Basiscursus Informatica 98/99 18Basiscursus Informatica, 98-99 College 7, H 7 18

Queues / Rijen

Operaties aan begin en aan eind van lijst

First-in, first-out (FIFO)

head en tail van een rij

Page 19: Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard.

Basiscursus Informatica 98/99 19Basiscursus Informatica, 98-99 College 7, H 7 19

Queue implementatie

headpointer

tailpoiter

head

tail

head

tail

head

tail

A

AB B

Page 20: Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard.

Basiscursus Informatica 98/99 20Basiscursus Informatica, 98-99 College 7, H 7 20

“Lopende” rij

headpointer

tailpoiter

headpointer

tailpoiter

ABC C

DEF

Circulair laten lopen in vast geheugenblok

Page 21: Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard.

Basiscursus Informatica 98/99 21Basiscursus Informatica, 98-99 College 7, H 7 21

Overzicht college 7

Arrays

Lijsten

Stacks

Queues

Bomen (trees)

Customized data types

Object-georienteerd programmeren

Page 22: Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard.

Basiscursus Informatica 98/99 22Basiscursus Informatica, 98-99 College 7, H 7 22

Bomen

Knopen (nodes)

root note leaf notes (terminal)

Arcs (verbindingen tussen knopen)

Sub-bomen

Parent nodes, child nodes, sibling nodes

Binaire bomen

Page 23: Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard.

Basiscursus Informatica 98/99 23Basiscursus Informatica, 98-99 College 7, H 7 23

Implementatie bomen

“Linked” bomen

data cel left child pointer rright child pointer root pointer NIL

cell containingdata

left childpointer

right childpointer

Page 24: Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard.

Basiscursus Informatica 98/99 24Basiscursus Informatica, 98-99 College 7, H 7 24

Binaire boom met pointers

rootpointer

NIL

NIL

NILNIL

NILA

B

C

FD

E

DE

AB

C

F

Page 25: Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard.

Basiscursus Informatica 98/99 25Basiscursus Informatica, 98-99 College 7, H 7 25

Boom in blok cellen

DE

AB

C

F

Linker kind in cel 2nRechter kind in cel 2n + 1

gebalanceerde boom

1 2 3 4 5 6 7

A B C D E F

1 2 3 4 5 6 7

A B C D Eongebalanceerde boom

AB

C

D

E

8 9 101112131415

Page 26: Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard.

Basiscursus Informatica 98/99 26Basiscursus Informatica, 98-99 College 7, H 7 26

Lijst als binaire boom

Binair zoeken

middelste element is root middelste van linker helft is linker kind midddelste van rechter helft is rechter kind

A, B, C, D, E, F, G, H, I, J, K, M, LG

D K

B

A CI M

H J LE

F

Page 27: Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard.

Basiscursus Informatica 98/99 27Basiscursus Informatica, 98-99 College 7, H 7 27

Overzicht college 7

Arrays

Lijsten

Stacks

Queues

Bomen (trees)

Customized data types

Object-georienteerd programmeren

Page 28: Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard.

Basiscursus Informatica 98/99 28Basiscursus Informatica, 98-99 College 7, H 7 28

Customized data types

User-defined types

primitieve data types en data structuren kunnen als bouwstenen dienen voor complexe data typen

definieert nieuw type dat vanaf dan gebruikt kan worden

typedef struct {char Name[8]; int Age; float Skillrating; } EmployeeType;

EmployeeType Manager, Buyer

Name Age Skillrating

Page 29: Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard.

Basiscursus Informatica 98/99 29Basiscursus Informatica, 98-99 College 7, H 7 29

Abstract data types

Als customized data type, maar plus operaties

zowel type als toegestane operaties package StackPackage

type StackOfIntegers record StackEntries: array[1..25] of integer; StackPointer: integer; end record; procedure push(Value:in integer;Stack:in out StackOfIntegers); procedure pop(Value:out integer; Stack:in out StackOfIntegers);end StackPackage;

MyStack: StackOfIntegerspush(106, MyStack)pop(OldValue, MyStack)

Page 30: Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard.

Basiscursus Informatica 98/99 30Basiscursus Informatica, 98-99 College 7, H 7 30

Encapsulation

Operaties op data structuren kunnen alleen plaatsvinden via gedefinieerde procedures (methoden)

Public procedures (versus private)

Helder programmeren en onderhoud

geen shortcuts

Object-georienteerd

Page 31: Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard.

Basiscursus Informatica 98/99 31Basiscursus Informatica, 98-99 College 7, H 7 31

Public procedures

package StackPackage is StackOfIntegers procedure push(Value:in integer;Stack:in out StackOfIntegers); procedure pop(Value:out integer; Stack:in out

StackOfIntegers);private type StackOfIntegers record StackEntries: array[1..25] of integer; StackPointer: integer; end record; end StackPackage;

Niet direct naar StackEntries[3] verwijzen

Moet via 2 maal “pop” van element

Page 32: Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard.

Basiscursus Informatica 98/99 32Basiscursus Informatica, 98-99 College 7, H 7 32

Overzicht college 7

Arrays

Lijsten

Stacks

Queues

Bomen (trees)

Customized data types

Object-georienteerd programmeren

Page 33: Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard.

Basiscursus Informatica 98/99 33Basiscursus Informatica, 98-99 College 7, H 7 33

Object-Georienteerd

In plaats van procedures die data structuren manipuleren

Encapsuleer procedure in de data tot objecten

Objecten manipuleren zichzelf: actieve objecten

Objecten geassocieerd met methoden

Page 34: Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard.

Basiscursus Informatica 98/99 34Basiscursus Informatica, 98-99 College 7, H 7 34

Imperatieve benadering

Nation A Nation B Nation C Nation D Nation E

Controlling algorithm

Simulatie van globale economie

Page 35: Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard.

Basiscursus Informatica 98/99 35Basiscursus Informatica, 98-99 College 7, H 7 35

Object-georienteerd

Nation A

Nation B

Nation C

Nation D

Nation E

Page 36: Basiscursus Informatica, 98-99 College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard.

Basiscursus Informatica 98/99 36Basiscursus Informatica, 98-99 College 7, H 7 36

Creeren van objecten

Class patroon/template voor creeren van objecten

Inheritance klassen hierarchisch structureren attributen worden overgeerfd

Polymorphism bericht is polymorf: interpretatie hangt af

van type object vergelijk overloading