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