Göm menyn

TDIU06 Programmering, grundkurs

Föreläsning


Referenser till kursboken C++ direkt avser den andra upplagan, 2000.


Period Ht1

Fö 1   
28/8

Datorintroduktion

Introduktion till kursen. Orientering om introduktionen till datorsystemet och STONE, det webbaserade kursverktyget som ska användas för detta.


Fö 2   
5/9

Datorintroduktion

Mer om datorsystem, kommandon, etc.


Fö 3   
12/9

C++

Grundläggande begrepp och konstruktioner. Språkets element, variabler, grundläggande datatyper, deklarationer, uttryck och operatorer.

Variabler: deklaration, datatyp, initiering, tilldelning (=). Konstanter.

Grundläggande datatyper: int (heltal), double (reella tal, flyttal), char (tecken), bool (logiska värden, sant/falskt), void (inget värde).

Läsanvisningar: C++ direkt kap 1, 2.1-2.6 (speciellt 2.1-2.2, 2.4), 2.9, 5.1-5.2, 5.7.1.

Visades:
Programexempel Fö 3-4 OH

Utdelades:
Källkod för programexempel Fö 1-2
Enkel stilguide för C och C++


Fö 4  
15/9

C++

Uttryck: Operatorer och operander. Beräkningsregler för uttryck.
Aritmetiska uttryck, operatorerna +, -, *, /, %. Automatiska typomvandlingar.
Beräkningsordning för sammansatts uttryck: prioritet och associativitet, operanders beräkningsordning.
Tilldelning: =
Stegningsoperatorena ++ och - -
Relationsoperatorer: ==, !=, <, <=, >, >=
Logiska operatorer: &&, ||, !

Satser: Sekvens, val (selektion) och repetition (iteration).
Sammansatta satser: satsblock {...}, if, if-else, switch, while, do-while, for.
Uttryckssatser.

std::vector (<vector>). En endimensionell datastruktur som anpassar sin storlek efter behovet. Se vector.

Tecken och texter, strängar.
Datatypen char för att hantera tecken, teckenlitteraler (t.ex. 'A', '+', '?', '\n', '\t'). Teckenhanteringsfunktioner (<cctype>).
std::string (<string>), deklaration, initiering, exempel på operationer.

Läsanvisningar: C++ direkt avsnitt 2.3, 2.5-2.6, (2.7 som orientering) 2.8, 15.6-15.7, 3.1-3.3 (3.4 som orientering). Se även: Klassificering och omvandling av tecken, string.


Fö 5  
28/9

C++

Funktioner

Funktionsdeklaration. Funktionsdefinition. Funktionsanrop.
Parametrar. Resultatvärde, eller void. Lokala variabler.
Parameteröverföring. Begreppen parameter-argument. Värdeanrop, referensanrop.

Fält är speciella i och med att fältnamn är en adress (till första elementet i ett fält). Värdeanrop innebär kopiering av den adressen, vilket i praktiken ger referensanrop då det gäller elementen i ett fält.

Användning av const och referens för inparametrar som är av komplicerad typ, t.ex. i samband med överföring av objekt av typ string eller vector - effektivt och säkert.

Läsanvisningar: C++ direkt kap 4.1-4.7.

Visades:
Programexempel Fö 5 OH

Utdelades:
Källkod för utdelade programexempel


Period Ht2

Fö 6  
24/10

C++

Strömmar och filer

Strömmar. Strömtyperna istream, ostream, stream. Standardströmmarna cin, cout, cerr och clog. Strömflaggor (failbit, badbit, eofbit) och funktioner för att operera på dessa för att undersöka strömmars tillstånd, eof(), good(), fail(), bad(), clear(). Formaterad inmatning med >> och olika manipulatorer (t.ex. setw). Oformaterad utmatning med t.ex. get(), get(c), getline(c-sträng), get(c-sträng), peek(), ignore(), ungetc(), etc. Formaterad utmatning med << och put(c), manipulatorer av olika slag för att bestämma utmatningformat för tal och text. (C++ direkt 11.1-11.3)

Filströmmar: deklaration (ifstream, ofstream, fstream), öppning, läsning, skrivning och stängning av filströmmar. Textfil kontra binärfil. (C++ direkt 11.4)

Binärfiler, läsning och skrivning med read() resp. write(). Lite om öppningsflagger, t.ex. ios::binary, ios::in, ios::out. sizeof-operatorn för att ta reda på hur mycket minne (i "byte") som en datatyps värde, en variabel eller ett uttryck kräver.

Strängströmmar, istringstream, ostringstream, stringstream. Används för att koppla string-objekt till strömmar för att kunna läsa och skriva innehåll i string-objekt med ström-operationer, t.ex. << och >>.

Läsanvisningar: C++ direkt 11.1-11.4, 11.8.

Visades:
Programexempel Fö 6 OH

Utdelades:
Källkod för utdelade programexempel


Fö 7  
1/11

C++

Fält ([], "array")
Endimensionella fält - ungefär som vector men primitivare i flera avseenden.

Poster (struct)
Definition av en enkel posttyp (struct) Item, deklaration av struct-variabel, initiering, åtkomst till struct-komponenter med punktoperatorn, tilldelning av struct-objekt (=), samt parameteröverföring och retur från funktion av struct-objekt. (C++ direkt: 15.3)
Fält med element av struct-typ.

Filuppdelning

Typdefinitioner med typdef. Användbart för ge enkla namn åt komplicerade typer. Användbart för pekartyper.

Läsanvisningar: C++ direkt kap 15.3, 2.7, 4.5, 5.4.2, 5.4.5-5.4.7, 5.5.

Visades:
Programexempel fält, samt Item version 1-2-3 OH

Utdelades:
Källkod för Item version 1-2-3


Fö 8  
14/11

C++

Dynamiska datastrukturer, dynamisk minneshantering, operatorerna new och delete. struct och class och pekare.

Introduktion till pekare
Deklaration av pekare (pekare till int). Tompekare (0). Adressoperatorn & och avrefereringsoperatorn *. Exempel på operationer på pekare, initiering, tilldelning, avreferering,

Enkellänkad lista: post + pekare + dynamisk minnestilldelning.
Version 1: Definition av enkel posttyp (struct) för listnoder som ska användas för att lagra heltal i en enkellänkad lista.
Operationer för att sätta in först resp. sist i en lista, ta bort, söka, skriva ut, mm., i form av fria funktioner.

Läsanvisningar: C++ direkt 5.4.5, 7.1-7.3.4, 13.1-13.1.1.

Utdelas:
Källkod lista version 1-2-3.


Fö 9  
18/11

C++

Länkad lista (forts.), class

Version 2 av listan: Klass (class) för att representera listan. Funktionerna för att operera på listan görs till medlemsfunktioner i klassen.
Konstruktor initiera listklassen (nollställa listnodpekaren) och destruktor för att återlämna minnet för listnoderna. Konstruktor för att initiera en listnod.

Rekursiva funktioner

Läsanvisningar: C++ direkt 13.1-13.1.1, 7.3.4-7.4, 15.1.


Fö 10  
28/11

C++

Version 3 av listan: Rekursiva algoritmer i ställer för iterativa införs i de listoperationer där rekursion kan användas. Rekursiv destruktor för listklassen.

Namnrymder.

Orientering om utelämnade saker, t.ex.

"C-strängar". Strängvärden som char-fält, char[ ], char*.
C-strängsfunktioner, <cstring>.

Pekare till dynamiskt minnestilldelade fält

Läsanvisningar: C++ direkt kap 4.3, 5.1-5.3, 5.6-5.8. Se även: C-strängshantering.


Period Vt1

Fö 11  
17/1

C++ Standardbibliotek

Översikt - Containrar - Iteratorer - Algoritmer - Funktionsobjekt

Översikt av standardbiblioteket, speciellt containrar, iteratorer, algoritmer och funktionsobjekt. Sekventiella containrar (vector, list, deque). Iteratorer för containrar. Iteratorer: iteratorbegreppet, containrar och iteratorer. Exempel på algoritmer.

Läsanvisningar: C++ direkt 12.1-12.2, 12.4.

Programexempel Fö 11-12


Fö 12  
18/1

C++ Standardbibliotek

Containrar - Iteratorer - Algoritmer (forts.)

Mer om iteratorer: strömiteratorer (istream_iterator, ostream_iterator), insättare (inserters), hjälpfunktionerna back_inserter, front_inserter, inserter.

Genomgång av operationer för vector, deque och list: konstruktorer, tilldelning, destruktor, storlek och kapacitet, elementåtkomst, modifierare, jämförelser. Listspecifika operationer. Lite jämförelser mellan de tre containrarna.

Några exempel på algoritmer: copy_backward, equal, erase + remove.

Läsanvisningar: C++ direkt 12.1-12.2, 12.4.

Programexempel Fö 11-12


Fö 13  
29/1

Containrar - Iteratorer - Algoritmer (forts.)

Adapterklasser (stack, queue, priority_queue). Hjälpklassen pair. Associativa containrar (map, multimap, set, multiset).

Undantag

Introduktion till undantag (exceptions): try-block, throw-uttryck, catch-hanterare.

Läsanvisningar: C++ direkt 12.1-12.6, 10.

Programexempel Fö 13


Fö 14  
12/2

Undantag (forts.)

Funktionsobjekt

Standardundantag (exception-hierarkin). Konstruktion av undantagshantering för standardundantag (try-catch).

Begeppet funktionsobjekt. Egendefinierade funktionsobjekt (orientering, exempel). Grundläggande, fördefinierade funktionsobjekt: aritmetiska, logiska, jämförare, negerare.

Läsanvisningar: C++ direkt 12.3.

Programexempel Fö 14



Sidansvarig: Tommy Olsson
Senast uppdaterad: 2007-02-20