Laboration 1. En första bekantskap med C++ Namn: Godkänd den: Rest:

Relevanta dokument
Så här skriver du ditt första program i C++

NetBeans 5.5. Avsikt. Projektfönster

Code-Lite tutorial ( /RoJ)

Laboration 1. "kompilera"-ikonen "exekvera"-ikonen

Här beskrivs Eclipse, den programutvecklingsmiljö som utnyttjas i programmeringskurserna. Mera information finns på:

Laboration 1. "kompilera"-ikonen "exekvera"-ikonen

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Eclipse en handledning

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Föreläsning 3. Programmering, C och programmeringsmiljö

NetBeans 7. Avsikt. Projektfönster

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Frekvenstabell över tärningskast med C#

Funktionens deklaration

Lab1 Introduktion. 1 Syfte. 2 Innehåll Win32API Skapa trådar Kritiska sektioner Mailslothantering. 3 Förberedelse & Tips

2 Eclipse en handledning

Innehållsförteckning. 9 Större projekt Övningsuppgifter...32

Laboration 1 Introduktion till Visual Basic 6.0

Datorteknik 2 (AVR 2)

Komponenter med COM (och COM+/VC++ 7.0)

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas.

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Grundkurs 1 IKT Filhantering

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Objektorienterad Programmering (TDDC77)

Simulera med ModelSim

TDP005, Projekt: Objektorienterade System. Laboration: Eclipse

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Verktyg och Utvecklingsmiljö. Jochim von Hacht

Eclipse en handledning

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen

Verktyg och Utvecklingsmiljö. Föreläsning 2 Eclipse

SKAPA DET FÖRSTA PROJEKTET I mikrobasic PRO for AVR

Det finns många flaggor till g++,

1 Språket C Valet av språket C++ för kompendiet. 1.2 Språket. 1.3 Att programmera. 1.4 Hello World Börja programmera

Frekvenstabell över tärningskast med C#

TDP005, Projekt: objektorienterade system

Programmets startmeny ser ut så här. För att få fram menyerna Avsluta, Inställningar och Användare måste du föra markören upp till det blåa fältet.

TDDC77 Objektorienterad Programmering

Datorlaboration 0, Programmering i C++ (EDA623)

15 Skapa en Start-Diskett

Labora&on 2 Funk&oner, if och loop övningar/uppgi:er

Kompilera och exekvera Javakod

Eclipse. Kort genomgång

grundläggande C++, funktioner m.m.

Visa/Dolj knappar i Webeditor 8

Laboration 1. Objektorienterad programmering, Z1. Syfte

C++ Slumptalsfunktioner + switch-satsen

Datorövning 1. int sgd(int m, int n) { int rest; while ( n!= 0 ) { rest = m % n; m = n; n = rest; return m;

tentamensdags och lab 3

Ett enkelt program i C++, hello.cpp. #include <iostream> int main() { std::cout << "Hello World\n"; return 0; } C++, Övning 1

mikroicd Avbuggare Handbok

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

TDIU01 - Programmering i C++, grundkurs

Datorlaboration 0, Programmering i C++ (EDAF30)

Simulering med ModelSim En kort introduktion

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

Skapa mapp. * Gör så här: Det finns många sätt att skapa mappar, men det enklaste sättet brukar vara följande.

Användarhantering Windows 7 I denna laboration kommer vi att skapa nya användare och grupper och titta på hur man hantera dessa.

TDIU01 - Programmering i C++, grundkurs

Objektorienterad programmering Föreläsning 2

Besvara de elektroniska frågorna (se kurshemsidan). Läs kapitel i kursbok.

Kopplingar via datalänk från Winbas till Excel samt Pivottabell 1 (13)

Manual till Båstadkartans grundläggande funktioner

Inställningstips Windows 8

F4. programmeringsteknik och Matlab

Programmeringsteknik med C och Matlab

Räkna med ASP.NET Web Forms

C++ Lektion Tecken och teckenfält

Guide till att använda Audacity för uttalsövningar

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Objektorienterad programmering

TDP005 Projekt: Objektorienterat system

Instruktion för konvertering av e-post i Lotus Notes med Swing PDF Converter

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

Objektorienterad programmering i Java I

TUTORIAL: KLASSER & OBJEKT

Simulering med ModelSim En kort introduktion

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Laboration: Grunderna i Matlab

TDP005, Projekt: Objekt-orienterade System. Laboration: Eclipse

1

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.

Övning: Arbeta med Azure Explorer

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Filhantering utforskaren avslöjar

PC-teknik, 5 p LABORATION ASSEMBLERINTRODUKTION

Programmeringsteknisk översiktskurs för yrkeshögskoleprogram

Laboration 10 - Eclipse

INSTALLATION...3 ATT KOMMA IGÅNG...3 PROGRAMMETS DESIGN...4 LÄGGA TILL TABELL...4 EDITERA TABELL...4 EDITERA RELATION...5 SPARA OCH AVSLUTA...

TDIU01 - Programmering i C++, grundkurs

Grundkurs 2 IKT. Dan Haldin Ålands lyceum

Lektion 5 HTML, CSS, PHP och MySQL

Föreläsning 6: Introduktion av listor

*Pekarvärden *Pekarvariabler & *

Transkript:

Högskolan Dalarna Objektorienterad analys & Konstruktion, 10p 1 Laboration 1 En första bekantskap med C++ Namn: Godkänd den: Sign: Rest:

Högskolan Dalarna Objektorienterad analys & Konstruktion, 10p 2 Ditt första program Kopiera katalogen Lab01 från den diskett som du kan låna av din handledare. Starta Visual C++ genom att klicka på dess ikon i Startmenyn. Stäng av tipsrutan. Öppna sedan projekt Lab01\prog01\prog01.dsw med kommandot Open Workspace i File-menyn. Du ska nu köra programmet. Det är möjligt att göra på flera olika sätt. Ett sätt är att välja kommandot Execute prog01.exe under menyn Build. Ett annat sätt är att använda kortkommandot <Ctrl F5>. När du kör öppnas ett nytt fönster med kommandotolken i vilket programmet exekverar. För att stänga fönstret efter det att exekveringen är avslutad så tryck på någon tanget. Modifiera ett program Ändra nu på programmet så att det ser ut som exemplet nedan. int main(void) { int antal; cout << Ge ett tal större än 0 << endl; cin >> antal; cout << Hej << antal << gånger << endl; return 0; } Kör sedan programmet. Gör det vad du förväntar dig? Lägg till ny källkod Man kan också byta programfil i ett projekt. Genom kommandot Add To Project - New under Project -menyn får man möjlighet att skapa en ny källkodsfil i projektet. Ett annat sätt att skapa en ny fil är att klicka på knappen för New text file, i menyn "File". Redan existerande filer kan läggas in i projektet med hjälp av alternativet "Add To Projekt" i menyn "Projekt". För att ta en källkodsfil ur projektet så kan du göra så här. Markera filen genom att välja fliken File View i Project WorkSpace. Project WorkSpace är den vänstra delen av fönstret. När du har valt fliken File View så skall du se ett katalogträd i Projekt WorkSpace. Markera filen och tryck på <Delete>. Filen tas nu bort ur projektet men raderas inte Vad är ett projekt? Ett projekt är en grupp av filer som bygger upp ett program. Du kan studera hur ditt projekt är uppbyggt i Project WorkSpace genom att välja mellan flikarna File View och Class View. Om du i File View eller Class View klickar på den komponent som intresserar dig så kommer du automatiskt att hoppa till motsvarande programkod. För att kompilera en källkodsfil så kan du i Build -menyn välja Compile prog01.cpp eller använda snabbkomandot <ctrl F7>. För att kompilera de filer som är ändrade och länka ihop projektet till en exekveringsbar fil så kan du välja Build prog01.exe i samma meny eller använda snabbkommandot <F7>.

Högskolan Dalarna Objektorienterad analys & Konstruktion, 10p 3 Vad händer om man skriver fel Ibland skriver man tyvärr programmet fel i dem mening att man skriver programsatser som inte är riktiga i C++ mening. Man brukar då säga att man har gjort ett eller flera syntaktiska fel. I dessa fall så kommer kompilatorn att protestera med felmeddelanden. Öppna projektet Lab01\Prog02\Prog02.dsw med hjälp av "Open workspace" i "File"-menyn. Kompilera programmet. Du kommer att få ett antal felmeddelanden: --------------------Configuration: Prog02 - Win32 Debug-------------------- Compiling... Prog02.cpp E:\Lab01\Prog02\Prog02.cpp(9) : error C2374: 'i' : redefinition; multiple initialization E:\Lab01\Prog02\Prog02.cpp(10) : error C2065: 'conut' : undeclared identifier E:\Lab01\Prog02\Prog02.cpp(10) : error C2297: '<<' : bad right operand Error executing cl.exe. Prog02.obj - 3 error(s), 0 warning(s) Om du undrar vad något av meddelandena betyder så kan du markera själva felkoden t.ex. C2374 och trycka <F1>. Då kommer ett fönster med hjälptexten för detta meddelande att visas. När du vill återvända till programkoden så kan du stänga du fönstret med hjälptexten. Om du dubbelklickar på ett felmeddelande så förflyttas markören till det avsnitt i källkoden där felet är beläget. Ett exempel med tre filer Öppna projektet Lab01\Prog03\Prog03.dsw. prova och kör programmet. Vi ska nu dela upp programmet i två delar, en del som kommer att innehålla funktionen max_av_2 och en del som innehåller huvudprogrammet. Denna delning ska till slut resultera i tre filer, två för funktionen och en för huvudprogrammet. Börja med att skapa ett nytt projekt som du döper till maxav2. Innan du skapar det nya projektet måste du stänga det nuvarande projektet genom att välja Close WorkSpace i File -menyn. Därefter kan du skapa ditt nya projekt genom att välja New i File -menyn. När du skapar projektet skall du välja Win32 Console application. Döp projektet till "max_av_2". Fortsätt därefter med att skapa de två filerna som ska deklarera och definiera funktionen max_av_2. Du skriver då två filer: en inkluderingsfil som innehåller funktionsdeklarationerna samt en definitionsfil som innehåller definitionen av själva funktionen. I vårt fall kommer inkluderingsfilen att se ut som nedan: //Fil: max2.h //Deklaration av funktionen max_av_2 int max_av_2(int tal1, int tal2);

Högskolan Dalarna Objektorienterad analys & Konstruktion, 10p 4 Definitionsfilen som innehåller själva funktionen ser ut på följande sätt: //Fil: max2.cpp //Definition av funktionen max_av_2 int max_av_2(int tal1, int tal2) { if (tal1 < tal2) return tal2; return tal1; } Huvudfilen kommer att se ut på följande sätt: //Fil: maxav2.cpp //Huvudprogrammet som använder max_av_2 #include <iostream.h> #include "max2.h" int main(void) { int tal1, tal2, stoarst; cout << "Ange två tal: "; cin >> tal1 >> tal2; stoarst = max_av_2(tal1, tal2); cout << "\n\tstörsta var:" << stoarst << endl; return 0; } Vi ser att i denna fil så finns ett #include-direktiv till filen max2.h. Huvudprogrammet main behöver bara veta hur funktionen max_av_2 ser ut i princip men kräver inga detaljer. #include max2.h är ett preprocessor - direktiv till kompilatorn att läsa filen max2.h. Vi ser att i detta fall så använder vi oss inte av <> som när vi inkluderade iostream.h. Anledningen är att iostream.h är en systemfil och ligger på en helt annan katalog än den vi befinner oss på. I och med att max2.h inte är någon systemfil så måste vi explicit ange sökvägen till denna. Sökvägen har vi dock inte angivet här, därmed kommer kompilatorn att söka efter filen i den aktuella katalogen för projektet.

Högskolan Dalarna Objektorienterad analys & Konstruktion, 10p 5 Ett exempel med fem filer Stäng ditt föregående projekt och skapa ett nytt projekt "max_av_3". Använd programmet "Explorer" och kopiera filerna "max2.h", "max2.cpp" och "maxav2.cpp" från katalogen "max_av_2" till katalogen "max_av_3". Döp om filen maxav2.cpp till maxav3.cpp. Inkludera de tre filerna i projektet. Vi kommer nu till situationen att vi vill dela programmet i tre eller flera delar vilket kommer att resultera i fem eller fler filer. Vi betraktar en variant av föregående problem som först beräknar det största talet av två inmatade tal (funktion max_av_2) och sedan det största värdet av tre tal (funktion max_av_3). Modifiera huvudprogrammet så att det ser ut på följande sätt: //Fil: maxav3.cpp //Huvudprogrammet som använder max_av_2 och max_av_3 #include <iostream.h> #include "max2.h" #include "max3.h" int main(void) { int tal1, tal2, tal3, stoerst; cout << "Ge två tal: "; cin >> tal1 >> tal2; stoerst = max_av_2(tal1, tal2); cout << "\n\tstörst var : " << stoerst << endl; cout << "Ge tre tal: "; cin >> tal1 >> tal2 >> tal3; stoerst = max_av_3(tal1, tal2, tal3); cout << "\n\tstörst var : " << stoerst << endl; return 0; } och för max_av_3 får vi: //Fil: max3.h //Deklarationsfilen för max_av_3 int max_av_3(int tal1, int tal2, int tal3); samt

Högskolan Dalarna Objektorienterad analys & Konstruktion, 10p 6 //Fil: max3.cpp //Definitionsfilen för max_av_3 #include <iostream.h> #include "max2.h" int max_av_3(int tal1, int tal2, int tal3) { return max_av_2(max_av_2(tal1, tal2), tal3); } Fundera nu på vad som kommer att hända. Huvudprogrammet kommer att inkludera inkluderingsfilerna max2.h och max3.h som sig bör. Filen max3.h måste även den inkludera filen max2.h eftersom funktionen max_av_3 anropar max_av_2 som finns i filen max2.h. resultatet blir att inkluderingsfilen max2.h blir inkluderad i projektet två gånger. Första gången när max2.h inkluderades och andra gången när max3.h inkluderades. Eftersom denna i sin tur inkluderade max2.h blev därmed max2.h inkluderad två gånger i huvudprogrammet. Att inkludera samma fil i ett program två gånger är något som bör undvikas. Studera nu följande variant av inkluderingsfilen max_av_2: //Fil: max2.h //Deklarationsfilen för max_av_2 #ifndef max2 #define max2 int max_av_2(int tal1, int tal2); #endif Instruktionen #ifndef max2 ska tolkas som, om inte symbolen max2 är definierad så fortsätt, annars hoppar vi över till raden där det står #endif Instruktionen #define max2 definierar just denna symbol. Detta innebär att deklarationen av funktionen max2 endast kan förekomma en gång, vilket var vad vi ville. Skriv in ovanstående preprocessor-direktiv och provkör programmet.

Högskolan Dalarna Objektorienterad analys & Konstruktion, 10p 7 Debugger Att leta fel i ett program och åtgärda dessa är ingen lätt uppgift. Det finns i princip tre olika typer av fel som kan uppkomma, kompileringsfel, exekveringsfel och logiska fel. Kompileringsfel upptäcks av kompilatorn och kan t ex vara en variabel som inte deklarerats. Exekveringsfel är fel som upptäcks under körningen, t ex att du försöker dividera med noll. C++ avbryter då programmet och visar ett felmeddelande. Logiska fel är svårare att upptäcka och beror på att du har tänkt fel i något avseende. Du tror att programmet ska göra en sak men det visar sig att programmet gör något annat. Den integrerade debuggern är ett kraftfullt verktyg för att avlusa program. Vi ska gå igenom de mest grundläggande funktionerna i debuggern, nämligen exekvering av ett program stegvis, användning av brytpunkter samt kontroll av variablers värden. Öppna projektet Lab01\Prog04\Prog04.dsw. Programmet beräknar medelvärdet av två serier av fem tal samt medelvärdet av de två medelvärdena. Exekvera programmet stegvis Den enklaste metoden att kontrollera hur ett program fungerar är att stega igenom denna rad för rad. Det finns flera olika sätt att stega sig igenom ett program: Step Into, <F11>. Med den här metoden stegar du en rad i taget. Om raden innehåller en funktion så kommer nästa aktivering att gå in i funktionen. Step Over, <F10>. Med den här metoden stegar du en rad i taget. Om raden innehåller en funktion så kommer nästa aktivering att stega till nästa rad efter funktionen. Step Out, <Shift F11>. Med den här metoden kan du snabbt gå ur en funktion och återvända till den anropande programdelen raden efter själva funktionsanropet. Om du snabbt vill förflytta dig till ett annat ställe längre fram i programmet så kan du använda: Run To Curser, <Ctrl F10>. Ställ markören i den rad som du vill hoppa till och aktivera metoden. Avbryta exekveringen Om ditt program av någon anledning skulle ta över kontrollen och inte går att avbryta så kan du alltid trycka <Ctrl C> för att stoppa exekveringen. Om du kör debuggern och detta sker så kan du även använda något av kommandona Stop Debugging eller Break. Dessa två kommandon finns i menyn Build. Om inget annat hjälper så kan du även trycka <Cntr Alt Delete>, gå in på aktivitetshanteraren och begära att programmet ifråga ska avbrytas.

Högskolan Dalarna Objektorienterad analys & Konstruktion, 10p 8 Kontrollera variablers värden Att stega igenom ett program kan vara till hjälp om man vill kontrollera programflödet men vad man egentligen skulle vilja göra är nog att kontrollera variablernas värden medan medan programmet exekverar. Det kan vara till hjälp att t ex kontrollera indexvariabelns värde inne i en for-loop (eller t o m modifiera denna). När du exekverar programmet via debuggern så öppnas ett watch -fönster i nedre delen av kompilatorn, som visar olika variablers aktuella värden. Om du är intresserad av någon variabel som inte finns i detta fönster så kan du med markören peka på den variabeln. Då visas en liten ruta med variabelns värde. Om du vill att variabeln ska finnas med i listan av variabler i watch-fönstret så kan du peka på variabeln, högerklicka och välja Quick- Watch. I Quick-Watch menyn finns ett val för att lägga till variabeln i watch-fönstret. I watch-fönstret kan vissa variabler vara markerade med ett plus. Om du klickar på plusset så får du mera information om variabeln. Du ska nu kontrollera värdena på olika variabler. Genom att välja mellan flikarna Auto, Locals och this kan du se vilka värden som de flesta variabler har. Om någon variabel saknas som du vill undersöka så kan du lägga till den med hjälp av Quik-Watch -menyn. Undersök hur variablerna array, i, k, medv1 och medv2 förändras när du stegar dig igenom main -funktionen med hjälp av Step Over. Om programmet redan exekverar så avbryt det först och börja om avlusningen. Ge akt på hur variablernas värden förändras under körningen. Använda brytpunkter Att stega sig igenom ett program är visserligen bra men vad händer om det finns en for-sats som ska exekvera 100 gånger innan du går till nästa sats?. Man kan då placera en breakpoint efter for-satsen så att programmet går fram till brytpunkten. En brytpunkt fungerar som en stoppskylt i exekveringen. När exekveringen når en brytpunkt stoppas exekveringen och den inväntar instruktioner från användaren. För att aktivera en brytpunkt så ställer du markören på den aktuella raden, högerklickar och väljer Insert / Remove Breakpoint från snabbmenyn. För att ta bort brytpunkten så upprepar du det hela. För att förflytta dig till en brytpunkt så väljer du Go under menyn Build ", alternativet "Debug eller trycker <F5>. Du ska nu placera en brytpunkt i raden där medv1 beräknas. Flytta markören dit, högerklicka och aktivera brytpunkten. Starta avlusningen av programmet med hjälp av kommandot Go så att du förflyttar dig till brytpunkten. Stega därefter med en rad i taget med hjälp av Step Into till dess att du når funktionen summa i filen summa.cpp. Kontrollera vilka värden som tilldelas variabeln med namnet summan. Fortsätt att stega dig ur funktionerna och kontrollera variablernas värden. Blir medelvärdet rätt?

Högskolan Dalarna Objektorienterad analys & Konstruktion, 10p 9 Ändra variablers värden Programmet innehåller ett litet fel som kan vara nog så svårt att upptäcka från början. I funktionen summa borde man summera mellan loopindex 1 och antal (antal är definierat i filen summa.h och anger antalet data som ska matas in i en serie) och inte ------------------------------------------------------------------------------------------------- for (int j=2; j<=antal; j++) summan += array[j -1]; ------------------------------------------------------------------------------------------------ För att ändra en variabels värde gör du följande: 1. Se till att du har variabeln i watch -fönstret. 2. Markera variabelns värde och skriv in det värde som den bör ha. Tex array[2] = 2 eller k = i + k. 3. Fortsätt avlusningen och kontrollera resultatet av förändrade värdet. Ändra loopindexet j värde från 2 till 1 i watch -fönstret. Undersök vad som händer. Blev medelvärdet rätt nu? Om programmet fungerar riktigt med ovanstående förändring så kan du nu gå in i koden och rätta felet. Provköra igen och kontrollera att allt är riktigt. Övning Skatt och skatteberäkning brukar inte vara något populärt ämne, men ger likafullt upphov till många diskussioner. I många länder är skatteskalorna progressiva, dvs. skatten utgör en större del av inkomsten för högre inkomster än för lägre. Vi tänker oss nu ett land, där myntenheten råkar heta kronor och där skatten räknas ut enligt följande tabell: Inkomst Skatt - 14 999 kr 100 kr 15 000-49 999 kr 100 kr + 12% av inkomsten inom skiktet 50 000-179 999 kr föregående skatt + 25% av inkomsten inom skiktet 180 000 - föregående skatt + 39% av inkomsten inom skiktet Som exempel kan vi beräkna skatten för en inkomst på 53 000 kr. För de första 50000 kronorna blir skatten 100 kr + 12% av 35 000, (=50 000 15 000), dvs. 100 kr + 4 200 kr = 4 300 kr. Sedan tillkommer 25% av 3 000 kr = 750 kr och vi får totala skatten 5 050 kr. vi noterar också att för mycket höga inkomster kommer skatten att närma sig 39% av inkomsten. Beräkna själv nu skatten för några inkomster i de olika skikten och skriv ned resultaten. Dessa kommer du att behöva när du löser uppgiften. Uppgiften består i att du ska nu rätta och försöka få igång ett program vars kod finns i filen Lab01\skatt.cpp. Skapa ett nytt projekt skatt och inkludera filen. Rätta programmets syntax och avlusa logiska fel.

Högskolan Dalarna Objektorienterad analys & Konstruktion, 10p 10 Redovisning Du ska redovisa programmet skatt. - Redovisningen ska innehålla en kort beskrivning om hur programmet fungerar. - Programkoden ska vara kommenterad. - Variabelnamn ska vara självdokumenterande, d v s namn som "krty", "knatte" "strul" får inte förekomma. Redovisningen sker via ett mail till din laborations-handledare. Märk ditt mail med rubriken "OAK99 - redovisning 1". Bifoga samtlig källkod för programmet (filerna med ändelserna.cpp och.h). Se till att du har ditt namn och datum inskrivet i filernas kommentarer. För att laborationen ska bli godkänd så måste din handledare ha fått din redovisning före vecka 37.