1 / 43

Inleiding Informatica

Inleiding Informatica. College 8, Brookshear hoofdstuk 7: Data Structures. 1. Arrays 2. Lijsten 3. Stapels (Stacks) 4. Wachtrijen (Queues) 5. Bomen (Trees) 6. WEL: Customized data types 7. NIET : Pointers in machinetaal. Overzicht college 8. Arrays. Eén-dimensionele arrays

jesus
Télécharger la présentation

Inleiding 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. Inleiding Informatica College 8, Brookshear hoofdstuk 7:Data Structures Basiscursus Informatica 98/99

  2. 1. Arrays 2. Lijsten 3. Stapels (Stacks) 4. Wachtrijen (Queues) 5. Bomen (Trees) 6. WEL: Customized data types 7. NIET: Pointers in machinetaal Overzicht college 8 Basiscursus Informatica 98/99

  3. Arrays • Eén-dimensionele arrays • bv studenten[4] • relatief adres versus absoluut adres • echte geheugenadres = • beginadres + nummer van de cel - 1 ! • Multi-dimensionele arrays • Verschillende rijen afbeelden op een aaneengesloten rij geheugencellen • ‘row major’ of ‘column major’ ordening 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, I-de rij, J-de kolom (5 x (3 -1)) + (4 -1) = 13 address polynomial Basiscursus Informatica 98/99

  5. Row major order • X staat op plaats 14 in het array, toch komt uit de address polynominal het getal 13. • Vraag: Hoe kan dat? • Oplossing: plaats 1 is het beginadres, tel daar 13 plaatsen bij op, je komt dan op plaats 14 uit. Basiscursus Informatica 98/99

  6. Ordening op kolommen • Omgekeerde telling: tel eerst de kolommen uit daarna de rijen • Vraag: staat X op het zelfde nummer? c1 c2 X Basiscursus Informatica 98/99

  7. Voordelen - nadelen array’s • Voordelen: • vaste vorm • vaste inhoudstype • nadelen: • niet dynamisch • geen inhoudsvariatie • alternatieve structuur: lijsten Basiscursus Informatica 98/99

  8. 1. Arrays 2. Lijsten 3. Stapels (Stacks) 4. Wachtrijen (Queues) 5. Bomen (Trees) 6. WEL: Customized data types 7. NIET: Pointers in machinetaal Overzicht college 8 Basiscursus Informatica 98/99

  9. Lijsten • 1. “Contiguous lists” • blok van aaneengesloten geheugencellen (array) • problemen • element uit midden lijst verwijderen • toevoegen niet aan begin of eind • verplaatsen van veel elementen • 2. “Linked lists” • data verspreid over verschillende blokken cellen • maakt gebruik van pointers Basiscursus Informatica 98/99

  10. Pointers • Geheugencel bevat het adres van andere geheugencel (ipv data) • Programmateller is ook een pointer • Flexibiliteit: data willekeurig verspreiden door het vrije 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

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

  12. 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

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

  14. 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 • Gevaar pointers: ‘chasing wild pointers’ Basiscursus Informatica 98/99

  15. Conceptuele lijst • Ideaal: abstractienivo hoger werken dan de fysieke lijst dmv alle noodzakelijke operaties op een lijst: inkijken, toevoegen, weglaten • Meeste programmeertalen komen met ingebouwde procedures voor standaard operaties op lijst • Object-oriëntatie: klasse List, feitelijke lijststructuur is verborgen Basiscursus Informatica 98/99

  16. 1. Arrays 2. Lijsten 3. Stapels (Stacks) 4. Wachtrijen (Queues) 5. Bomen (Trees) 6. WEL: Customized data types 7. NIET: Pointers in machinetaal Overzicht college 8 Basiscursus Informatica 98/99

  17. 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

  18. Toepassing stack • Recursief aanroepen van processen • nieuwe proces “gepushed” op stack, en wordt actief • als proces klaar, “popped” 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

  19. 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

  20. 1. Arrays 2. Lijsten 3. Stapels (Stacks) 4. Wachtrijen (Queues) 5. Bomen (Trees) 6. WEL: Customized data types 7. NIET: Pointers in machinetaal Overzicht college 8 Basiscursus Informatica 98/99

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

  22. Queue implementatie head pointer A kop tail pointer staart Invoegen bij de staartweglaten bij de kop A B B head head tail tail Basiscursus Informatica 98/99

  23. “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

  24. 1. Arrays 2. Lijsten 3. Stapels (Stacks) 4. Wachtrijen (Queues) 5. Bomen (Trees) 6. WEL: Customized data types 7. NIET: Pointers in machinetaal Overzicht college 8 Basiscursus Informatica 98/99

  25. Bomen • Knopen (nodes) • root node = top • leaf nodes (terminal) • Arcs (verbindingen tussen knopen) • Sub-bomen • Parent nodes, child nodes, sibling nodes • Binaire bomen Basiscursus Informatica 98/99

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

  27. 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

  28. 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

  29. 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

  30. Binaire lijst • Boomstructuur gemaakt voor recursief werken • structuur is op het oog niet inzichtelijk • gewone bewerkingen, zoals printen en toevoegen, vergen nogal wat uitleg • ook hier: abstracte operaties dienen gedefinieerd te zijn Basiscursus Informatica 98/99

  31. 1. Arrays 2. Lijsten 3. Stapels (Stacks) 4. Wachtrijen (Queues) 5. Bomen (Trees) 6. WEL: Customized data types 7. NIET: Pointers in machinetaal Overzicht college 8 Basiscursus Informatica 98/99

  32. 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

  33. Abstract Data Types (ADT) • 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

  34. Abstract Data Types (ADT) • ADT = opslagstructuur plus operaties die er op uitgevoerd kunnen worden • Abstractie = details van de implementatie hoeft men niet te kennen om de operaties te kunnen gebruiken • Encapsulation = bescherming van de datastructuur tegen onbedoelde wijzigingen Basiscursus Informatica 98/99

  35. Encapsulation • Operaties op data structuren kunnen alleen plaatsvinden via gedefinieerde procedures (methoden) • Public procedures (versus private data) • Helder programmeren en onderhoud • geen shortcuts naar private data mogelijk Basiscursus Informatica 98/99

  36. 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

  37. Object-georiënteerd (OO) • Klassen: nog meer flexibel dan ADT, uitbreiding met instantiëring en overerving • In plaats van procedures die data structuren manipuleren • Encapsuleer de data in de klasse en de procedures • Objecten manipuleren a.h.w. zichzelf: actieve objecten (Peter Coad: vend yourself) • Objecten zijn instanties van klassen Basiscursus Informatica 98/99

  38. data A Data B data C data D data E Imperatieve benadering Simulatie van globale economie Controlling algorithm Basiscursus Informatica 98/99

  39. Nation A Nation B Nation C Nation D Nation E Object-georiënteerd Basiscursus Informatica 98/99

  40. Creëren van objecten • Class • constructor = patroon/template voor creëren van objecten • Inheritance • klassen hiërarchisch structureren • attributen worden overgeërfd • Polymorfisme • bericht is polymorf: interpretatie hangt af van type object • vergelijk overloading Basiscursus Informatica 98/99

  41. Design pattern • Beschrijving van een probleem en de kern van de oplossing, zodanig dat de oplossing flexibel gebruikt kan worden • OO: oplossing in termen van objecten en interfaces: • beschrijving van communicerende klassen en objecten die aangepast worden om een algemeen probleem in een specifieke context op te lossen (Gamma, et al, p.3) Basiscursus Informatica 98/99

  42. Frameworks (Gamma, et al,, p28) • Design patterns are more abstract than frameworks • alleen voorbeelden van patronen mogelijk • Dp are smaller architectural elements than fw • vaak meerdere dp in een fw • Dp are less specialized than fw • fw alltijd voor specifiek toepassingsgebied Basiscursus Informatica 98/99

  43. OO paradigma • “Het lijkt erop dat het OO paradigma de software engineers eindelijk in staat stelt grote software systemen te construeren op basis van ge-prefabriceerde onderdelen, de klassen” (Brookshear, p.358) Basiscursus Informatica 98/99

More Related