De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Inleiding Informatica, 2000-2001 College 7, H 7, sheet nr. 117 October 2000 - 14:29 Basiscursus Informatica 98/991 Inleiding Informatica College 8, Brookshear.

Verwante presentaties


Presentatie over: "Inleiding Informatica, 2000-2001 College 7, H 7, sheet nr. 117 October 2000 - 14:29 Basiscursus Informatica 98/991 Inleiding Informatica College 8, Brookshear."— Transcript van de presentatie:

1 Inleiding Informatica, College 7, H 7, sheet nr. 117 October :29 Basiscursus Informatica 98/991 Inleiding Informatica College 8, Brookshear hoofdstuk 7: Data Structures

2 Inleiding Informatica, College 7, H 7, sheet nr. 217 October :29 Basiscursus Informatica 98/992 Overzicht college 8 n 1. Arrays n 2. Lijsten n 3. Stapels (Stacks) n 4. Wachtrijen (Queues) n 5. Bomen (Trees) n 6. WEL: Customized data types n 7. NIET: Pointers in machinetaal

3 Inleiding Informatica, College 7, H 7, sheet nr. 317 October :29 Basiscursus Informatica 98/993 Arrays n Eén-dimensionele arrays ä bv studenten[4] ä relatief adres versus absoluut adres ä echte geheugenadres = –beginadres + nummer van de cel - 1 ! n Multi-dimensionele arrays ä Verschillende rijen afbeelden op een aaneengesloten rij geheugencellen –‘row major’ of ‘column major’ ordening

4 Inleiding Informatica, College 7, H 7, sheet nr. 417 October :29 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, I-de rij, J-de kolom (5 x (3 -1)) + (4 -1) = 13address polynomial

5 Inleiding Informatica, College 7, H 7, sheet nr. 517 October :29 Basiscursus Informatica 98/995 Row major order n X staat op plaats 14 in het array, toch komt uit de address polynominal het getal 13. n Vraag: Hoe kan dat? n Oplossing: plaats 1 is het beginadres, tel daar 13 plaatsen bij op, je komt dan op plaats 14 uit.

6 Inleiding Informatica, College 7, H 7, sheet nr. 617 October :29 Basiscursus Informatica 98/996 Ordening op kolommen n Omgekeerde telling: tel eerst de kolommen uit daarna de rijen n Vraag: staat X op het zelfde nummer? c1c2 X

7 Inleiding Informatica, College 7, H 7, sheet nr. 717 October :29 Basiscursus Informatica 98/997 Voordelen - nadelen array’s n Voordelen: ä vaste vorm ä vaste inhoudstype n nadelen: ä niet dynamisch ä geen inhoudsvariatie n alternatieve structuur: lijsten

8 Inleiding Informatica, College 7, H 7, sheet nr. 817 October :29 Basiscursus Informatica 98/998 Overzicht college 8 n 1. Arrays n 2. Lijsten n 3. Stapels (Stacks) n 4. Wachtrijen (Queues) n 5. Bomen (Trees) n 6. WEL: Customized data types n 7. NIET: Pointers in machinetaal

9 Inleiding Informatica, College 7, H 7, sheet nr. 917 October :29 Basiscursus Informatica 98/999 Lijsten n 1. “Contiguous lists” ä blok van aaneengesloten geheugencellen (array) ä problemen –element uit midden lijst verwijderen –toevoegen niet aan begin of eind –verplaatsen van veel elementen n 2. “Linked lists” ä data verspreid over verschillende blokken cellen ä maakt gebruik van pointers

10 Inleiding Informatica, College 7, H 7, sheet nr October :29 Basiscursus Informatica 98/9910 Pointers n Geheugencel bevat het adres van andere geheugencel (ipv data) ä Programmateller is ook een pointer n Flexibiliteit: data willekeurig verspreiden door het vrije geheugen n bv 8 cellen voor data en 1 voor pointer ä begin van de lijst: head pointer ä eind van de lijst: NIL pointer

11 Inleiding Informatica, College 7, H 7, sheet nr October :29 Basiscursus Informatica 98/9911 Linked list head pointer data NIL pointer

12 Inleiding Informatica, College 7, H 7, sheet nr October :29 Basiscursus Informatica 98/9912 Element verwijderen head pointer data NIL pointer old new pointer verwijderde element Garbage collection: bijhouden en opruimen van verwijderde elementen

13 Inleiding Informatica, College 7, H 7, sheet nr October :29 Basiscursus Informatica 98/9913 Element toevoegen head pointer data NIL pointer old data pointer new nieuw element

14 Inleiding Informatica, College 7, H 7, sheet nr October :29 Basiscursus Informatica 98/9914 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 Gevaar pointers: ‘chasing wild pointers’

15 Inleiding Informatica, College 7, H 7, sheet nr October :29 Basiscursus Informatica 98/9915 Conceptuele lijst n Ideaal: abstractienivo hoger werken dan de fysieke lijst dmv alle noodzakelijke operaties op een lijst: inkijken, toevoegen, weglaten n Meeste programmeertalen komen met ingebouwde procedures voor standaard operaties op lijst n Object-oriëntatie: klasse List, feitelijke lijststructuur is verborgen

16 Inleiding Informatica, College 7, H 7, sheet nr October :29 Basiscursus Informatica 98/9916 Overzicht college 8 n 1. Arrays n 2. Lijsten n 3. Stapels (Stacks) n 4. Wachtrijen (Queues) n 5. Bomen (Trees) n 6. WEL: Customized data types n 7. NIET: Pointers in machinetaal

17 Inleiding Informatica, College 7, H 7, sheet nr October :29 Basiscursus Informatica 98/9917 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

18 Inleiding Informatica, College 7, H 7, sheet nr October :29 Basiscursus Informatica 98/9918 Toepassing stack n Recursief aanroepen van processen ä nieuwe proces “gepushed” op stack, en wordt actief ä als proces klaar, “popped” 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

19 Inleiding Informatica, College 7, H 7, sheet nr October :29 Basiscursus Informatica 98/9919 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

20 Inleiding Informatica, College 7, H 7, sheet nr October :29 Basiscursus Informatica 98/9920 Overzicht college 8 n 1. Arrays n 2. Lijsten n 3. Stapels (Stacks) n 4. Wachtrijen (Queues) n 5. Bomen (Trees) n 6. WEL: Customized data types n 7. NIET: Pointers in machinetaal

21 Inleiding Informatica, College 7, H 7, sheet nr October :29 Basiscursus Informatica 98/9921 Queues / Rijen n Operaties aan begin én aan eind van lijst n First-in, first-out (FIFO) n head en tail van een rij

22 Inleiding Informatica, College 7, H 7, sheet nr October :29 Basiscursus Informatica 98/9922 Queue implementatie head pointer tail pointer head tail head tail kop staart A A BB Invoegen bij de staart weglaten bij de kop

23 Inleiding Informatica, College 7, H 7, sheet nr October :29 Basiscursus Informatica 98/9923 “Lopende” rij head pointer tail poiter head pointer tail poiter A B C C D E F Circulair laten lopen in vast geheugenblok

24 Inleiding Informatica, College 7, H 7, sheet nr October :29 Basiscursus Informatica 98/9924 Overzicht college 8 n 1. Arrays n 2. Lijsten n 3. Stapels (Stacks) n 4. Wachtrijen (Queues) n 5. Bomen (Trees) n 6. WEL: Customized data types n 7. NIET: Pointers in machinetaal

25 Inleiding Informatica, College 7, H 7, sheet nr October :29 Basiscursus Informatica 98/9925 Bomen n Knopen (nodes) ä root node = top ä leaf nodes (terminal) n Arcs (verbindingen tussen knopen) n Sub-bomen n Parent nodes, child nodes, sibling nodes n Binaire bomen

26 Inleiding Informatica, College 7, H 7, sheet nr October :29 Basiscursus Informatica 98/9926 Implementatie bomen n “Linked” bomen ä data cel ä left child pointer ä right child pointer ä root pointer ä NIL cell containing data left child pointer right child pointer

27 Inleiding Informatica, College 7, H 7, sheet nr October :29 Basiscursus Informatica 98/9927 Binaire boom met pointers root pointer NIL A B C F D E D E A B C F

28 Inleiding Informatica, College 7, H 7, sheet nr October :29 Basiscursus Informatica 98/9928 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

29 Inleiding Informatica, College 7, H 7, sheet nr October :29 Basiscursus Informatica 98/9929 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

30 Inleiding Informatica, College 7, H 7, sheet nr October :29 Basiscursus Informatica 98/9930 Binaire lijst n Boomstructuur gemaakt voor recursief werken n structuur is op het oog niet inzichtelijk n gewone bewerkingen, zoals printen en toevoegen, vergen nogal wat uitleg n ook hier: abstracte operaties dienen gedefinieerd te zijn

31 Inleiding Informatica, College 7, H 7, sheet nr October :29 Basiscursus Informatica 98/9931 Overzicht college 8 n 1. Arrays n 2. Lijsten n 3. Stapels (Stacks) n 4. Wachtrijen (Queues) n 5. Bomen (Trees) n 6. WEL: Customized data types n 7. NIET: Pointers in machinetaal

32 Inleiding Informatica, College 7, H 7, sheet nr October :29 Basiscursus Informatica 98/9932 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

33 Inleiding Informatica, College 7, H 7, sheet nr October :29 Basiscursus Informatica 98/9933 Abstract Data Types (ADT) 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)

34 Inleiding Informatica, College 7, H 7, sheet nr October :29 Basiscursus Informatica 98/9934 Abstract Data Types (ADT) n ADT = opslagstructuur plus operaties die er op uitgevoerd kunnen worden n Abstractie = details van de implementatie hoeft men niet te kennen om de operaties te kunnen gebruiken n Encapsulation = bescherming van de datastructuur tegen onbedoelde wijzigingen

35 Inleiding Informatica, College 7, H 7, sheet nr October :29 Basiscursus Informatica 98/9935 Encapsulation n Operaties op data structuren kunnen alleen plaatsvinden via gedefinieerde procedures (methoden) ä Public procedures (versus private data) n Helder programmeren en onderhoud ä geen shortcuts naar private data mogelijk

36 Inleiding Informatica, College 7, H 7, sheet nr October :29 Basiscursus Informatica 98/9936 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

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

38 Inleiding Informatica, College 7, H 7, sheet nr October :29 Basiscursus Informatica 98/9938 Imperatieve benadering data AData Bdata Cdata Ddata E Controlling algorithm Simulatie van globale economie

39 Inleiding Informatica, College 7, H 7, sheet nr October :29 Basiscursus Informatica 98/9939 Object-georiënteerd Nation ANation BNation CNation DNation E

40 Inleiding Informatica, College 7, H 7, sheet nr October :29 Basiscursus Informatica 98/9940 Creëren van objecten n Class ä constructor = patroon/template voor creëren van objecten n Inheritance ä klassen hiërarchisch structureren ä attributen worden overgeërfd n Polymorfisme ä bericht is polymorf: interpretatie hangt af van type object ä vergelijk overloading

41 Inleiding Informatica, College 7, H 7, sheet nr October :29 Basiscursus Informatica 98/9941 Design pattern n Beschrijving van een probleem en de kern van de oplossing, zodanig dat de oplossing flexibel gebruikt kan worden n 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)

42 Inleiding Informatica, College 7, H 7, sheet nr October :29 Basiscursus Informatica 98/9942 Frameworks (Gamma, et al,, p28) n Design patterns are more abstract than frameworks ä alleen voorbeelden van patronen mogelijk n Dp are smaller architectural elements than fw ä vaak meerdere dp in een fw n Dp are less specialized than fw ä fw alltijd voor specifiek toepassingsgebied

43 Inleiding Informatica, College 7, H 7, sheet nr October :29 Basiscursus Informatica 98/9943 OO paradigma n “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)


Download ppt "Inleiding Informatica, 2000-2001 College 7, H 7, sheet nr. 117 October 2000 - 14:29 Basiscursus Informatica 98/991 Inleiding Informatica College 8, Brookshear."

Verwante presentaties


Ads door Google