Kurt Nørmark ©
Institut for Datalogi, Aalborg Universitet
| Sammendrag Forrige lektion Næste lektion Stikord Referencer Indhold | I denne lektion ser vi først på endnu flere muligheder for dataabstraktion. Vi har tidligere studeret arrays. I denne lektion gælder det structs i C, også kendt som records i andre programmeringssprog. Vi introducerer også ideerne om dataabstraktion. |
| Datastrukturer |
| Datastrukturer (1) Slide Indhold Stikord Referencer Lærebog |
|
|
|
| Datastrukturer (2) Slide Indhold Stikord Referencer Lærebog |
|
| Figur. En illustration af arrays, structures og sammenkædede structures. | ![]() |
| Records/structures |
| Structures/records (1) Slide Indhold Stikord Referencer Lærebog |
|
| Figur. En skitse af en structure | ![]() |
|
| Structures/records (2) Slide Indhold Stikord Referencer Lærebog |
|
|
|
| Structures/records (3) Slide Indhold Stikord Referencer Lærebog |
|
| Program: Motivation for structures - logisk sammenhørende, men sideordnede variable. |
|
| Program: Introduktion af structures - sammenhørende data om en person. |
|
|
| Structures i C (1) Slide Indhold Stikord Referencer Lærebog |
| Syntax: En struct type specifikation |
|
|
|
| Structures i C (2) Slide Indhold Stikord Referencer Lærebog |
|
|
|
| Eksempel: Dato structure Slide Indhold Stikord Referencer Lærebog |
|
| Program: En struct for en dato. |
|
| Program: Et dato program med en funktion, date-before, der vurderer om en dato kommer før en anden dato. |
|
| Eksempel: Bog structure Slide Indhold Stikord Referencer Lærebog |
|
| Program: Et eksempel på en struct for en bog. |
|
| Program: Et program som kan lave og udskrive en bog. |
|
|
| Structures ved parameteroverførsel Slide Indhold Stikord Referencer Lærebog |
|
|
| Program: Et eksempel på overførsel og tilbageførsel af bøger per refererence - virker ikke. |
|
| Program: Et eksempel på overførsel og tilbageførsel af bøger per reference - OK. |
|
| Structures i structures Slide Indhold Stikord Referencer Lærebog |
|
| Program: Basalt eksempel på structures i structures. |
|
| Program: Et udvidet eksempel på structures i structures. |
|
| Arrays af structures |
| Array af bøger Slide Indhold Stikord Referencer Lærebog |
|
| Program: Et array af bøger i funktionen main. |
|
| Program: Hele programmet. |
|
| Arrays af datoer: Kalender Slide Indhold Stikord Referencer Lærebog |
|
| Program: Et program der laver en kalender - kun main funktionen. |
|
|
| Program: Hele kalenderprogrammet - bortset fra funktionen tomorrow. |
|
| Opgave 9.2. Funktionen tomorrow | Implementer funktionen tomorrow, som er illustreret på den omkringliggende side. Funktionen tager en dato som parameter, og den returnerer datoen på den efterfølgende dag. Hint: Lad i udgangspunktet resultatet være den overførte parameter, og gennemfør (pr. assignment til enkelte felter) de nødvendige ændringer. |
| Sammenkædede datastrukturer |
| Sammenkædede datastrukturer (1) Slide Indhold Stikord Referencer Lærebog |
|
| Begrebet self-referential structure: En 'self-referential structure' er en pointer repræsentation af en rekursiv datatype |
| Figur. En rekursiv struktur i forhold til en self-referential structure med pointere | ![]() |
|
|
| Sammenkædede datastrukturer (2) Slide Indhold Stikord Referencer Lærebog |
| Program: Structures for recursive and self referential structures. |
|
| Kædede lister ala Lisp Slide Indhold Stikord Referencer Lærebog |
|
| Program: Typen cons_cell. |
|
| Program: Funktionerne cons, head og tail. |
|
| Program: Et eksempel på en liste af punkter håndteret i funktionen main. |
|
| Program: Typen point og funktionen prnt_point(p). |
|
|
| Mutation af cons celler Slide Indhold Stikord Referencer Lærebog |
|
| Program: Funktionerne set_head og set_tail. |
|
| Program: Et eksempel på mutationer i en liste af punkter. |
|
| Funktioner på lister Slide Indhold Stikord Referencer Lærebog |
|
| Program: Funktionen list_length. |
|
| Program: Funktionen append. |
|
| Program: Funktionen member. |
|
| Program: Funktionen reverse. |
|
| Program: Eksempler på anvendelse af ovenstående funktioner i en main funktion. |
|
|
| Indsættelse og sletning af elementer i en liste Slide Indhold Stikord Referencer Lærebog |
|
| Billedserie: Skridt i indsættelse af et element i en kædet liste. | Skridt i indsættelse af et element i en kædet liste. |
| Billed nr. 1. Et nyt element ønskes indsat på pilens plads | ![]() |
| Billed nr. 2. Der er lavet et nyt kæde-objekt som skal kædes ind i listen efter den blå pil | ![]() |
| Billed nr. 3. Vi fastholder en reference til elementet efter det nye element | ![]() |
| Billed nr. 4. Der laves en reference til det nye element | ![]() |
| Billed nr. 5. ... og videre fra det nye element til resten af listen, via det huskede element | ![]() |
| Billedserie: Skridt i sletning af et element i fra kædet liste. | Skridt i sletning af et element i fra kædet liste. |
| Billed nr. 1. Data-objektet som er markeret med et kryds ønskes slettet | ![]() |
| Billed nr. 2. Kæde-objektet markeret med den blå pil skal ændres for at udføre sletningen | ![]() |
| Billed nr. 3. Data-objektet som er markeret med et kryds er fjernet fra den kædede liste. Kæde-objektet såvel som data-objektet kan nu fjernes af garbage collectoren | ![]() |
| Billed nr. 4. Situationen efter at kæde- og data-objekt er fjernet af funktionen free | ![]() |
| Program: Funktionen insert_after. |
|
| Program: Funktionen delete_after. |
|
| Program: Eksempler på anvendelse af insert_after og delete_after. |
|
|
| Abstrakte datatyper |
| Abstrakte datatyper Slide Indhold Stikord Referencer Lærebog |
| Begrebet abstrakt datatype: En abstrakt datatype er en mængde af værdier og en tilhørende mængde af operationer på disse værdier | Værdierne i en abstrakt datatype kaldes ofte objekter. Dette er specielt tilfældet i det objekt-orienterede programmeringsparadigme, hvor ideen om abstrakte datatyper er helt central. |
|
| Tal som en abstrakt datatype Slide Indhold Stikord Referencer Lærebog |
|
| Figur. En konkret og en abstrakt forståelse af heltal | ![]() |
|
| En cons celle som en ADT Slide Indhold Stikord Referencer Lærebog |
|
|
|
| En liste som en ADT Slide Indhold Stikord Referencer Lærebog |
|
|
|
| Fra structures til classes Slide Indhold Stikord Referencer Lærebog |
|
|
|
Kapitel 9: Datastrukturer og Dataabstraktion
Kursets hjemmeside Forfatteren's hjemmeside Om frembringelsen af disse sider Forrige lektion (top) Næste lektion (top) Forrige lektion (bund) Næste lektion (bund)
Genereret: 7. Juli 2010, 15:12:45