TDDC76 Programmering och datastrukturer
Föreläsningar
Här hittar du information om vad som är planerat att tas upp på föreläsningarna, och vad som verkligen kom att behandlas på de föreläsningar som varit, dvs en kombination av föreläsningsplan och föreläsningsdagbok.
Utdelat och annat material
Överblivna kopior finns utanför: Tommy Olssons rum.
Föreläsning
Fö 1-2:
Introduktion kursen: Full storlek | 2x2
Introduktion till C++: Full storlek | 2x2
Fö 3-4:
Klasser: Full storlek | 2x2
Operatoröverlagring: Full storlek | 2x2
Introduktion till undantagshantering: Full storlek | 2x2
Fö 5-6:
Härledning/arv, Polymorfi, RTTI: Full storlek | 2x2
Undantag, fortsättning: Full storlek | 2x2
Fö 7:
Objektorienterad programutveckling i ett nötskal (utdelas Le 3)
Visade dia (utdelas ej) Full storlek | 2x2
Fö 8-14:
Häfte Datastrukturer och algoritmer (utdelas ej)
Föreläsnings-OH: svart-vita (2x2) färg (2x2) (utdelas Fö 7)
Kodexempel föreläsning
För fö 3-4: klassen String (utdelas Fö 1)
För fö 5-6: klasshierarkin Person-Employee-Manager-Consultant (utdelas Fö 2)
Period Ht1, vecka 35-41 |
|
|
Fö 1 30/8 |
Introduktion och översikt av kursen
Orientering de grundläggande delarna av C++. (OH 1-20) Grundläggande programstruktur. Grundläggande datatyper. Typomvandling. Variabler och konstanter. Deklarationer och definitioner. Uttryck och operatorer. Operatorers prioritet och associativitet, beräkningsordning för operander, sidoeffekter. Satser. |
|
Fö 2 5/9 |
Orientering de grundläggande delarna av C++, forts. (OH 21-34) Funktioner. Sammansatta datatyper: uppräkningstyper, fält, poster, pekare. Dynamiska datastrukturer, dynamisk minneshantering. De delar av C++ som genomgåtts översiktligt på Fö 1-2 motsvarar Laboration 1.1-1.4. Underlag för Laboration 1.5 kommer att behandlas på Fö 3-4. (OH 35-44, Strömbiblioteket, överlämnas till eget studium) |
|
Fö 3 13/9 |
Kort orientering om objektorienterad programmering och objektorienterade konstruktioner: klass/objekt, arv/härledning, polymorfi/dynamisk bindning. Föreläsning 7 tar upp mer om objektorienterad programutvecklinling. Klasser (OH 45-61) Grundläggande om syntax och semantik. Medlemmar (data- och funktionsmedlemmar). Åtkomst till klassmedlemmar (public, private). Olika alternativ för att deklarera och definiera medlemsfunktioner (definition i klassen, "in-class", medför underförstått "inline", separat definition, separat definition med uttrycklig "inline"-deklaration. const-deklaration av medlemsfunktioner. Konstruktorer. Destruktor. Defaultkonstruktor. Initierare. this-pekaren, Kopieringskonstruktor, typomvandlande konstruktor, explicit-deklaration av konstruktor. Kompilatorgenererade versioner av defaultkonstruktor, kopieringskonstruktor och kopieringstilldelning (operator=). Vikten av att korrekt kopiering och tilldelning är definierat för icke-triviala klasser (t.ex. klasser med datamedlemmar som är pekare till dynamiskt minne). |
|
Fö 4 17/9 |
Klasser, forts. (OH 62-67) Typomvandlande operatorfunktioner. Operatoröverlagring (OH 68-77) Operatorer som kan överlagras för klasser (de flesta fördefinierade operatorer). Syntax och semantik (försök normalt efterlikna språkets inbyggda operatorer). Frågan om operator ska/bör/måste vara klassmedlem eller fristående funktion. Exempel på operatorer som måste vara medlem (=, []), som inte kan vara medlem (<<) och som antingen kan vara medlem eller ej (==). Undantagshantering, introduktion (OH 78-81) |
|
Fö 5 26/9 |
Härledning, arv, polymorfi (OH 82-103) Härledning av klasser. protected som åtkomstskydd för ärvd klassmedlem. Olika former av arv (public, protected och private) och dessas innebörd. Virtuella medlemsfunktioner, rent virtuella ("pure virtual") medlemsfunktioner, dynamisk bindning (i detta sammanhang), Överskuggning ("overriding", inte att förväxla med överlagring, "overloading"). Orientering om olika typer av arv: enkelt arv, multipelt arv och repeterad arv samt virtuellt arv. Gränssnittsklasser. |
|
Fö 6 27/9 |
Dynamisk typkontroll och typomvandling (OH 104-109) RTTI (Run-Time Type Identification). Klassen type_info, typeid-uttryck och dynamic_cast. Standardundantag (OH 110-119) Orientering om C++11 (OH 120-127) |
Period Ht2, vecka 44-50 (sista föreläsningen v 47) |
|
|
Fö 7 29/10 |
Enkel objektorienterad programutvecklingsmetodik.
Introduktion till datastrukturer och algoritmer |
|
Fö 8 1/11 |
Sökning i listor
Allmänt om träd
Enkelt binärt sökträd. |
|
Fö 9 5/11 |
AVL-träd Röd-svarta träd: orientering enpass höjdbalanserat sökträd med "top-down"-balansering. AVL-trädet är tvåpass med "bottom-up"-balansering. Skiplista Tänkt att kunna konkurera med binära sökträd). Perfekt balanserad skiplista. Praktiskt balanserad skiplista. |
|
Fö 10 7/11 |
Splayträd Orientering om "flytta-till-början-lista" (listornas motsvarighet till splayträd).
B-träd
Introduktion: Definition.
Begrepp: fyllnadsgrad (M och L), överskott, underskott, noddelning,
nodsammanslagning, nodbalansering, lån/adoption. |
|
Fö 11 12/11 |
B-träd, forts.
Insättning (överskott, noddelning, nodbalansering, lån eller adoption?
Borttagning (underskott, lån, adoption, nodsammanslagning.
Hashtabeller |
|
Fö 12 14/11 |
Hashtabeller, forts.
Prioritetsköer
Binär heap Sortering med binär heap, Heapsort.
|
|
Fö 13 15/11 |
Intern sortering.
Introduktion. Olika klassificeringar och begrepp:
intern-extern, jämförande-distributiv, enkel-avancerad, stabil, naturlig.
Tekniker för jämförande sorteringsmetoder: urval, utbyte, insättning, samsortering. |
|
Fö 14 19/11 |
Intern sortering, forts
Extern sortering |
Sidansvarig: Tommy Olsson
Senast uppdaterad: 2012-10-23
