Göm menyn

TDIU20 Objektorienterad programmering

Laborationer

Bra länkar

För att bli godkänd på en laboration krävs det uppgifterna är lösta på ett bra sätt enligt vanliga C++-idiom och konventioner. Dessutom ska den följa god kodstil enligt första två kapitlen i rättningsprotokollet (se nedan).

Studentgruppen ska redovisa sin lösning muntligt för sin assistent under schemalagt labtillfälle. Detta ska ske innan laborationens utsatta deadline. Efter godkänd muntlig redovisning ska koden skickas till assistenten enligt Instruktioner för labinlämning. Nu sker en noggrannare granskning och därför är det möjligt att komplettering ges i detta steg. Vid komplettering ges referenser till UPP-gruppens gemensamma rättningsprotokoll. Om muntlig redovisning skett i tid, och om en inlämning blir godkänd vid första kodgranskningen, eller efter maximalt en komplettering som skett inom åtta dagar efter meddelande om komplettering, räknas det som att gruppen klarat labbens deadline. Datum för samtliga deadlines hittas under "schema" i menyn.

För att få korrekt indentering (enligt Allman/BSD-stil) i emacs kan ni lägga till följande i filen ~/.emacs (skapa den om den saknas).

	;; C/C++ settings
	(setq c-default-style "bsd")
	(setq c-basic-offset 4)
	(setq-default indent-tabs-mode nil)
	(add-to-list 'auto-mode-alist '("\\.h\\'" . c++-mode)) 
Om ni hellre använder vim kan ni ha följande inställningar i filen ~/.vimrc
        syntax on
	set expandtab
	set tabstop=4
	set shiftwidth=4
	set softtabstop=4
Ni bör använda senaste kompilator för att få mer läsbara felutskrifter från kompilatorn. Kommandon för kontroll av version och eventuellt byte:
	\g++ --version
	module add prog/gcc/6.1.0
	module initadd prog/gcc/6.1.0
Det är även en bra idé att skapa alias för att lägga till relevanta kompileringsflaggor automatiskt. Följande alias kommer användas vid tentamen, dessa kan ni lägga in i er .bashrc:
	export CCFLAGS="-Wall -Wextra -pedantic -g"

	alias g++='echo "Use w++17 (warnings) or e++17 (warnings are errors)."'
	alias g++11="\g++ -std=c++11 -g"
	alias w++11="\g++ -std=c++11 \${CCFLAGS}"
	alias e++11="\g++ -std=c++11 \${CCFLAGS} -Werror"

	alias g++17="\g++ -std=c++17 -g"
	alias w++17="\g++ -std=c++17 \${CCFLAGS}"
	alias e++17="\g++ -std=c++17 \${CCFLAGS} -Werror"

Laborationer

Här listas laborationsuppgiferna som ni ska lösa under kursen. Instruktioner och eventuella givna filer kommer läggas upp här senare.

Klockslag

Labinstruktion klockslag | Givna filer (gitlab)
I denna laboration ska du, med hjälp av testdriven utveckling, skapa en grundläggande klass för hantering av ett klockslag.

Listan

Labinstruktion listan
Här ska du skapa en klass för att hantera en dubbellänkad lista. Här stöter vi på problem såsom pekaroperationer, nästlade klasser, djup kopiering och mycket annat kul.

Kretssimulatorn

Labinstruktion kretssimulator
Här ska du skapa en klassheirarki för att representera elektriska komponenter. De klasser du skapat ska du sedan använda för att skapa ett program som kan simulera strömmar i ett elektriskt nät.

Sidansvarig: Klas Arvidsson
Senast uppdaterad: 2017-02-10