1 / 36

Basiscursus Informatica

Basiscursus Informatica. College 7, Data Structures Brookshear H7 Richard Benjamins. Arrays Lijsten Stacks Queues Bomen (trees). Customized data types Object-georienteerd programmeren Programmeur denkt in conceptuele data structuren Implementatie in centraal geheugen.

bracha
Download Presentation

Basiscursus Informatica

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Basiscursus Informatica College 7, Data Structures Brookshear H7 Richard Benjamins Basiscursus Informatica 98/99

  2. Arrays Lijsten Stacks Queues Bomen (trees) Customized data types Object-georienteerd programmeren Programmeur denkt in conceptuele data structuren Implementatie in centraal geheugen Overzicht college 7 Basiscursus Informatica 98/99

  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 Basiscursus Informatica 98/99

  4. Row major order rij1 Conceptueel rij2 rij3 X: 3de rij, 4de colom X rij4 Werkelijk rij3 rij4 rij2 rij1 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 Basiscursus Informatica 98/99

  5. Arrays Lijsten Stacks Queues Bomen (trees) Customized data types Object-georienteerd programmeren Overzicht college 7 Basiscursus Informatica 98/99

  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 Basiscursus Informatica 98/99

  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 Basiscursus Informatica 98/99

  8. Linked list head pointer pointer pointer data data NIL data Basiscursus Informatica 98/99

  9. Element verwijderen verwijderde element head pointer pointer pointer old data data new pointer NIL data Garbage collection: bijhouden en opruimen van verwijderde elementen Basiscursus Informatica 98/99

  10. Element toevoegen nieuw element head pointer pointer data new pointer new data pointer data old NIL data Basiscursus Informatica 98/99

  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 Basiscursus Informatica 98/99

  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) Basiscursus Informatica 98/99

  13. Arrays Lijsten Stacks Queues Bomen (trees) Customized data types Object-georienteerd programmeren Overzicht college 7 Basiscursus Informatica 98/99

  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 o o o o o Basiscursus Informatica 98/99

  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 Basiscursus Informatica 98/99

  16. Implementatie stack • Blok aaneengesloten geheugencellen • Een eind wordt de stack base • Ander eind (variabel) is de stack pointer gereserveerde groeiruimte X X X X X X stack base stack pointer Basiscursus Informatica 98/99

  17. Arrays Lijsten Stacks Queues Bomen (trees) Customized data types Object-georienteerd programmeren Overzicht college 7 Basiscursus Informatica 98/99

  18. Queues / Rijen • Operaties aan begin en aan eind van lijst • First-in, first-out (FIFO) • head en tail van een rij Basiscursus Informatica 98/99

  19. Queue implementatie head pointer A head tail poiter tail A B B head head tail tail Basiscursus Informatica 98/99

  20. “Lopende” rij A head pointer B head pointer C C D tail poiter E tail poiter F Circulair laten lopen in vast geheugenblok Basiscursus Informatica 98/99

  21. Arrays Lijsten Stacks Queues Bomen (trees) Customized data types Object-georienteerd programmeren Overzicht college 7 Basiscursus Informatica 98/99

  22. Bomen • Knopen (nodes) • root note • leaf notes (terminal) • Arcs (verbindingen tussen knopen) • Sub-bomen • Parent nodes, child nodes, sibling nodes • Binaire bomen Basiscursus Informatica 98/99

  23. Implementatie bomen • “Linked” bomen • data cel • left child pointer • rright child pointer • root pointer • NIL cell containing data left child pointer right child pointer Basiscursus Informatica 98/99

  24. A B C D E F Binaire boom met pointers root pointer A C NIL F NIL NIL D NIL B NIL E Basiscursus Informatica 98/99

  25. 1 2 3 4 5 6 7 A B C D E F A B C D 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 A B C D E E ongebalanceerde boom Boom in blok cellen A B C D E F gebalanceerde boom Linker kind in cel 2n Rechter kind in cel 2n + 1 Basiscursus Informatica 98/99

  26. G D K F B I M C E A H J L 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, L Basiscursus Informatica 98/99

  27. Arrays Lijsten Stacks Queues Bomen (trees) Customized data types Object-georienteerd programmeren Overzicht college 7 Basiscursus Informatica 98/99

  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; Name Age Skillrating EmployeeType Manager, Buyer Basiscursus Informatica 98/99

  29. Abstract data types • Als customized data type, maar plus operaties • zowel type als toegestane operaties • package StackPackagetype StackOfIntegersrecord 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 98/99

  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 Basiscursus Informatica 98/99

  31. Public procedures • package StackPackage is StackOfIntegersprocedure push(Value:in integer;Stack:in out StackOfIntegers);procedure pop(Value:out integer; Stack:in out StackOfIntegers);privatetype StackOfIntegersrecord 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 Basiscursus Informatica 98/99

  32. Arrays Lijsten Stacks Queues Bomen (trees) Customized data types Object-georienteerd programmeren Overzicht college 7 Basiscursus Informatica 98/99

  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 Basiscursus Informatica 98/99

  34. Nation A Nation B Nation C Nation D Nation E Imperatieve benadering Simulatie van globale economie Controlling algorithm Basiscursus Informatica 98/99

  35. Nation A Nation B Nation C Nation D Nation E Object-georienteerd Basiscursus Informatica 98/99

  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 Basiscursus Informatica 98/99

More Related