Kursinformation och material - Programmering C: C++
Tillbaka
till kursinformationssidan. Senast uppdaterad 2003-05-11.
Det här dokumentet: http://www.abc.se/~m10383/Kursinformation-programmering-c.html
Kursen
Kurskod DTR1209 (Skolverket*)
Kurslitteratur: Stephen Prata, "C++-programmering",
4:e upplagan. Även extramaterial, som t ex valda delar ur Bruce
Eckel, "Thinking in C++"
(online, länk nedan).
Om kursmålen
Kunskapsmålen ges av kursplanen. Kursen skall lära eleverna
att använda ett objektorienterat programmeringsspråk. Detta
gör vi genom att gå igenom grundläggande teori och
gemensamt titta på problemlösningar.
När de obligatoriska momenten är avklarade ges
tillfälle att tillämpa kunskaperna på en gemensam
uppgift. Uppgiften skall demonstrera de kunskaper som eleven skaffat sig
under kursens gång. Den exakta uppgiften utformas i samråd
med läraren.
Att skapa mjukvara består bara till en bråkdel av att
skriva kod. Huvuddelen av programmerarens tid går till att
definiera uppgiften och planera hur den skall lösas, att skaffa
information, till att testa och debugga och till att dokumentera. Alla
dessa moment är viktiga i denna kurs men framförallt
läggs vikt vid att själv skaffa information och lösa
problem.
Examination
Inget skriftligt prov planeras. Elevens eget arbete och de resultat som
produceras styr hur eleven bedöms.
Vi kommer tyvärr inte att ha tillräckligt med tid för
att hinna göra individuella projektövningar. Istället
gör vi en större gemensam övning. Vissa moment i denna
övning ges som läxa eller självständig uppgift.
De som kan har tillfälle till extraövningar.
Kalender
Kursen löper period 2-3 läsåret 2002-2003
- Måndag-tisdag 31/3-1/4 kommer vi att prata om input-drivna
program (exempel från Teller.exe, se exemplet länkad lista
nedan).
- Vi tittar i detta sammanhang också på timers, som
på ett bekvämt sätt illustrerar händelser i ett
system.
- Vi tittar lite på tillståndsgrafer (väldigt lite)
- 31/3 hann vi med att gå igenom både input-drivna
mekanismer i Teller-exemplet, att göra vissa små
förändringar i exemplet, att titta på windows-kod i
Teller-exemplet, timers och tillståndsgrafer (puh!).
- 1/4 ska vi göra mer självständiga ändringar i
(det nu ytterligare lite uppdaterade) Teller-exemplet.
- 28/4 - välkomna tillbaka från påsklovet! Himla
lång tid att försmäkta utan C++, men nu är
väntan slut! Idag står ett nytt skojigt exempel på tur.
Vi ska tillsammans göra en
background blit - låter väl skoj? ;-)
- 29/4 Idag fungerar bitmap blitten. Garanterat. Ny Blt.zip
länkad nedan. Den ritar drygt 500 bollar utan problem på min
maskin (1000 bollar i de exe-filer som finns i arkivet).
- 5/5 - jag har ändrat mig... inget spel ingen lek inget kul -
istället ska vi titta på "mallar" som boken så fint
kallar det. Templates säger vi andra. Dessutom ska vi prata... BETYG!
Om vi hinner med det.
- 12-13/5 ska vi börja med lite mer praktisk
objektorientering, och lite input i en fönsterapplikation - Units, som ska bli nån
slags... spel... typ. Första momenten blir att titta lite på
en klassarkitektur och implementera filhantering.
Länkar
- Bruce Eckels Thinking in C++ (Mindview Inc.)
- Microsoft Visual C++
- Bloodshed DevC++
- Anjuta [DevStudio] (C/C++ IDE, ej använd på kursen -
gratis/fri utvecklingsmiljö för C/C++)
- Kompilatorer
- MingW32 ("Minimalist GNU for Windows")
- gcc
- LCC-Win32 (ej använd på kursen - gratis/fri
kompilator)
- Allmänt C++
- Bibliotek
- Allmänt programmering
- Design Patterns
- Redigering
- Bildmanipulering
- GIMP ("GNU Image
Manipulation Program")
- Annat
- Databashanterare
- WWW-server
- Operativsystem
- Systemvård
- Filarkiv, komprimering
- För Windows, använd WinZip eller bzip2 (inkluderat i Cygnus(SUNETs arkiv))
- För Linux/BSD, använd bzip2 (inkluderat i alla
standarddistributioner)
- Google-kategorier
- Filarkiv
- SUNET (Svenska
universitetsnätet)
Exempelkod och uppgifter
Så långt som möjligt innehåller alla exempel
projektfiler för både DevC++ och Visual C++ 6.0. Exempel i kursiv stil är överkurs
som vi knappast hinner ta itu med tillsammans.
För att ladda ner och spara
exemplen: Microsoft Internet Explorer i skolans maskiner är
tydligen spärrad mot att ladda ner EXE-filer. Använd Netscape
istället - högerklicka och välj spara som (el. motsv.),
spara i din hemkatalog (lokal hårddisk fungerar tydligen inte
heller att spara på).
För att öppna
exempelprojekten i MSVC: packa upp arkivet på lämplig
plats (görs genom att köra den exekverbara filen som
länkats nedan). Öppna workspace-filen,*.dsw.
Arkiven innehåller även färdigkompilerade körbara
filer så att exemplen kan studeras även om något skulle
vara fel så att koden inte kompilerar.
I samtliga projekt kompileras koden i debugläge till en exekverbar
fil med ett extra "D" sist i filnamnet - den exekverbara
releaseversionen och debugversionen har alltså inte exakt samma
namn.
Av
någon outgrundlig anledning fungerar inte de debug-kompilerade
exemplen. Använd release-kompilerade istället. Ok
jag har en aning om varför det inte fungerar med debug-kompilerade
exekverbara filer, men kan inte åtgärda för
tillfället.
- Länkad lista (List) - kommer att
innehålla
- version med enkel implementation (List01)
- version med multipelt arv (List02)
- version med templates ("mallar",
List03)
- version med köer (Teller.exe), en lite större
applikation som simulerar ett gathörn med bankomater.
- Windowsprogram (IOdriven) - kommer att
innehålla
- version med enklast möjliga win32-program (IO01)
- exempel på användning av externa bibliotek,
- version med OpenGL (IO02_OGL)
- version med DirectX 9 (IO02_DX9) (endast för MSVC)
- version med Ogre (IO02_Ogre)
- version för MFC
(IO03_MFC) (endast för MSVC)
- Simuleringsuppgiften
(Units) - innehåller
- Blit - skelettkod för att förstå behovet av
bakgrundsBlt, och för att implementera detta
Fotnoter
* Skolverkets menysystem för kursplaner fungerar dåligt i
vissa webläsare.