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