Basiscursus Informatica, College 7, H 7 1 Basiscursus Informatica 98/991 Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard Benjamins
Basiscursus Informatica, College 7, H 7 2 Basiscursus Informatica 98/992 Overzicht college 7 n Arrays n Lijsten n Stacks n Queues n Bomen (trees) n Customized data types n Object-georienteerd programmeren n Programmeur denkt in conceptuele data structuren n Implementatie in centraal geheugen
Basiscursus Informatica, College 7, H 7 3 Basiscursus Informatica 98/993 Arrays n Een-dimensionale arrays ä studenten[4] ä echte geheugenadres? –eerste cel + (4-1) –13 + (4-1) = 16 n Multi-dimensionale arrays ä Verschillende rijen afbeelden op een aaneengesloten rij geheugencellen –row major order –column major order
Basiscursus Informatica, College 7, H 7 4 Basiscursus Informatica 98/994 Row major order Conceptueel Werkelijk rij1 rij2 rij3 rij4 rij1 rij2 rij3 rij4 X: 3de rij, 4de colom X 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) = 13address polynomial
Basiscursus Informatica, College 7, H 7 5 Basiscursus Informatica 98/995 Overzicht college 7 n Arrays n Lijsten n Stacks n Queues n Bomen (trees) n Customized data types n Object-georienteerd programmeren
Basiscursus Informatica, College 7, H 7 6 Basiscursus Informatica 98/996 Lijsten n “Contiguous lists” ä blok van aaneengesloten geheugencellen (array) ä problemen –element uit midden lijst verwijderen –toevoegen niet aan begin of eind –verplaatsen van veel elementen n “Linked lists” ä data is verspreid over verschillende blokken cellen ä maakt gebruik van pointers
Basiscursus Informatica, College 7, H 7 7 Basiscursus Informatica 98/997 Pointers n Geheugencel bevat het adres van andere geheugencel (ipv data) ä Programmateller is ook een pointer n Daarom kan data verspreid worden door geheugen n bv 8 cellen voor data en 1 voor pointer ä begin van de lijst: head pointer ä eind van de lijst: NIL pointer
Basiscursus Informatica, College 7, H 7 8 Basiscursus Informatica 98/998 Linked list head pointer data NIL pointer
Basiscursus Informatica, College 7, H 7 9 Basiscursus Informatica 98/999 Element verwijderen head pointer data NIL pointer old new pointer verwijderde element Garbage collection: bijhouden en opruimen van verwijderde elementen
Basiscursus Informatica, College 7, H 7 10 Basiscursus Informatica 98/9910 Element toevoegen head pointer data NIL pointer old data pointer new nieuw element
Basiscursus Informatica, College 7, H 7 11 Basiscursus Informatica 98/9911 Lijsten versus arrays n Probleem: als je een element wilt toevoegen aan array en het is vol n Bij een lijst hoef je van te voren niet de lengte te bepalen n Als je een element uit een array verwijdert dan blijft er een gat over. Om dat te vullen moeten alle elementen een plaats opschuiven
Basiscursus Informatica, College 7, H 7 12 Basiscursus Informatica 98/9912 Operaties op lijst n Meeste programmeertalen komen met ingebouwde procedures voor standaard operaties op lijst ä insert(“Beys”, “BC-Informatica-98.99”) ä printlist(“BC-Informatica-98.99)
Basiscursus Informatica, College 7, H 7 13 Basiscursus Informatica 98/9913 Overzicht college 7 n Arrays n Lijsten n Stacks n Queues n Bomen (trees) n Customized data types n Object-georienteerd programmeren
Basiscursus Informatica, College 7, H 7 14 Basiscursus Informatica 98/9914 Stacks n Een ‘contiguous’ lijst waar operaties alleen aan het eind van de lijst worden uitgevoerd ä toevoegen: push operatie ä verwijderen: pop operatie n Last-in, first-out (LIFO) n Vergelijk stapel boeken n Behoud efficientie van contiguous list en reduceer nadelen o o o o o
Basiscursus Informatica, College 7, H 7 15 Basiscursus Informatica 98/9915 Toepassing stack n Recursief aanroepen van processen ä nieuwe proces “gepushed” op stack, en wordt actief ä als proces klaar, “poped” van stack en gaat door met oude proces n 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
Basiscursus Informatica, College 7, H 7 16 Basiscursus Informatica 98/9916 Implementatie stack n Blok aaneengesloten geheugencellen n Een eind wordt de stack base n Ander eind (variabel) is de stack pointer stack base XXXXXX stack pointer gereserveerde groeiruimte
Basiscursus Informatica, College 7, H 7 17 Basiscursus Informatica 98/9917 Overzicht college 7 n Arrays n Lijsten n Stacks n Queues n Bomen (trees) n Customized data types n Object-georienteerd programmeren
Basiscursus Informatica, College 7, H 7 18 Basiscursus Informatica 98/9918 Queues / Rijen n Operaties aan begin en aan eind van lijst n First-in, first-out (FIFO) n head en tail van een rij
Basiscursus Informatica, College 7, H 7 19 Basiscursus Informatica 98/9919 Queue implementatie head pointer tail poiter head tail head tail head tail A A BB
Basiscursus Informatica, College 7, H 7 20 Basiscursus Informatica 98/9920 “Lopende” rij head pointer tail poiter head pointer tail poiter A B C C D E F Circulair laten lopen in vast geheugenblok
Basiscursus Informatica, College 7, H 7 21 Basiscursus Informatica 98/9921 Overzicht college 7 n Arrays n Lijsten n Stacks n Queues n Bomen (trees) n Customized data types n Object-georienteerd programmeren
Basiscursus Informatica, College 7, H 7 22 Basiscursus Informatica 98/9922 Bomen n Knopen (nodes) ä root note ä leaf notes (terminal) n Arcs (verbindingen tussen knopen) n Sub-bomen n Parent nodes, child nodes, sibling nodes n Binaire bomen
Basiscursus Informatica, College 7, H 7 23 Basiscursus Informatica 98/9923 Implementatie bomen n “Linked” bomen ä data cel ä left child pointer ä rright child pointer ä root pointer ä NIL cell containing data left child pointer right child pointer
Basiscursus Informatica, College 7, H 7 24 Basiscursus Informatica 98/9924 Binaire boom met pointers root pointer NIL A B C F D E D E A B C F
Basiscursus Informatica, College 7, H 7 25 Basiscursus Informatica 98/9925 Boom in blok cellen D E A B C F Linker kind in cel 2 n Rechter kind in cel 2 n + 1 gebalanceerde boom ABCDEF ABCDE ongebalanceerde boom A B C D E
Basiscursus Informatica, College 7, H 7 26 Basiscursus Informatica 98/9926 Lijst als binaire boom n Binair zoeken ä middelste element is root ä middelste van linker helft is linker kind ä midddelste van rechter helft is rechter kind n A, B, C, D, E, F, G, H, I, J, K, M, L G D K B A C IM HJ L E F
Basiscursus Informatica, College 7, H 7 27 Basiscursus Informatica 98/9927 Overzicht college 7 n Arrays n Lijsten n Stacks n Queues n Bomen (trees) n Customized data types n Object-georienteerd programmeren
Basiscursus Informatica, College 7, H 7 28 Basiscursus Informatica 98/9928 Customized data types n 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 NameAgeSkillrating
Basiscursus Informatica, College 7, H 7 29 Basiscursus Informatica 98/9929 Abstract data types n Als customized data type, maar plus operaties ä zowel type als toegestane operaties n 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: StackOfIntegers push(106, MyStack) pop(OldValue, MyStack)
Basiscursus Informatica, College 7, H 7 30 Basiscursus Informatica 98/9930 Encapsulation n Operaties op data structuren kunnen alleen plaatsvinden via gedefinieerde procedures (methoden) ä Public procedures (versus private) n Helder programmeren en onderhoud ä geen shortcuts n Object-georienteerd
Basiscursus Informatica, College 7, H 7 31 Basiscursus Informatica 98/9931 Public procedures n 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; n Niet direct naar StackEntries[3] verwijzen n Moet via 2 maal “pop” van element
Basiscursus Informatica, College 7, H 7 32 Basiscursus Informatica 98/9932 Overzicht college 7 n Arrays n Lijsten n Stacks n Queues n Bomen (trees) n Customized data types n Object-georienteerd programmeren
Basiscursus Informatica, College 7, H 7 33 Basiscursus Informatica 98/9933 Object-Georienteerd n In plaats van procedures die data structuren manipuleren ä Encapsuleer procedure in de data tot objecten n Objecten manipuleren zichzelf: actieve objecten n Objecten geassocieerd met methoden
Basiscursus Informatica, College 7, H 7 34 Basiscursus Informatica 98/9934 Imperatieve benadering Nation ANation BNation CNation DNation E Controlling algorithm Simulatie van globale economie
Basiscursus Informatica, College 7, H 7 35 Basiscursus Informatica 98/9935 Object-georienteerd Nation ANation BNation CNation DNation E
Basiscursus Informatica, College 7, H 7 36 Basiscursus Informatica 98/9936 Creeren van objecten n Class ä patroon/template voor creeren van objecten n Inheritance ä klassen hierarchisch structureren ä attributen worden overgeerfd n Polymorphism ä bericht is polymorf: interpretatie hangt af van type object ä vergelijk overloading