Kursmaterial för laborationer i

Relevanta dokument
Laboration 1. Imperativ programmering. Stilgranskning av Lab Slutredovisning av Laboration 1

Uttryck, satser och strömhantering

Uppgift 1 ( Betyg 3 uppgift )

Föreläsning 6: Introduktion av listor

Uppgift 1 (grundläggande konstruktioner)

TENTA: TDDD11 & TDDC68. Tillåtna hjälpmedel. Starta Emacs, terminal och tentakommunikationsfönster. Skicka in frågor och uppgifter

Tentaupplägg denna gång

Uppgift 1a (Aktiekurser utan poster)

HI1024 Programmering, grundkurs TEN

Uppgift 1 (vadå sortering?)

Uppgift 1 ( Betyg 3 uppgift )

Uppgift 1 ( Betyg 3 uppgift )

Tentamen i. för D1 m fl, även distanskursen. lördag 26 februari 2011

Grundläggande in- och utmatning

kl Tentaupplägg

Övningsuppgifter. TDIU04 Programmering i C++, standardbibliotek. Innehåll. Vt Lektion Lektion Lektion Lektion 4...

Kursmaterial för laborationer i

Facit Tentamen TDDC (7)

kl Tentaupplägg

TDP Regler

TDIU01 - Programmering i C++, grundkurs

Värmedistribution i plåt

Variabler och konstanter

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Tentamen i. Programmering i språket C

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

kl Tentaupplägg

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

Uppgift 1 ( Betyg 3 uppgift )

Föreläsning 5: Introduktion av pekare

Uppgift 1 ( Betyg 3 uppgift )

TDDC74 Lab 02 Listor, sammansatta strukturer

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

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011,

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Minnestilldelning (allokering) och frigörande (avallokering) av minne

kl Tentaupplägg

kl Tentaupplägg

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Tentamen TEN1 HI

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

kl Tentaupplägg

kl Tentaupplägg

Introduktionslaboration

Tentamen i. för D1 m fl, även distanskursen. fredag 13 januari 2012

Tentamen *:58/ID100V Programmering i C Exempel 3

Planering Programmering grundkurs HI1024 HT TIDAA

Datorlaborationer, Programmering i C++ (EDAF30)

Instruktioner - Datortentamen TDDE24 och TDDD73 Funktionell och imperativ programmering (i Python)

TDDI14 Objektorienterad programmering

HI1024 Programmering, grundkurs TEN

DUGGA Tentaupplägg

HI1024 Programmering, grundkurs TEN

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

Övning från förra gången: readword

Se kurshemsidan för användbara länkar för att genomföra denna laboration.

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python TDDE24 Funktionell och imperativ programmering del 2

Objektorienterad programmering Föreläsning 2

725G61 - Laboration 2 Loopar och arrayer. Johan Falkenjack

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

TDDC76 - Programmering och Datastrukturer

Föreläsning 4: Poster

Tekniska Högskolan i Linköping Institutionen för Datavetenskap (IDA) Torbjörn Jonsson Plot och rekursion

Nedan skapar vi klassen Person innehållande datamedlemmar för förnamn, efternamn, ålder, längd och vikt:

Tentaupplägg. Betygsgränser: 1 uppg 19:00 Betyg 3 2 uppg 18:00 Betyg 4 2 uppg 16:30 Betyg 5 3 uppg 18:00 Betyg 5

Innehåll. Introduktion till objektorientering. OOP (objektorienterad programmering) Objekt, instanser, klasser

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Sätt att skriva ut binärträd

TDDI TDDI22 Tentaregler

Tentamen i Programmering grundkurs och Programmering C

TDIU01 - Programmering i C++, grundkurs

Föreläsning 3.1: Datastrukturer, en översikt

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDIU01 - Programmering i C++, grundkurs

L04.1 Marodören. Inledning. Mål. Genomförande. Uppgift 1 Hello World. Moment I

i LabVIEW. Några programmeringstekniska grundbegrepp

Planering Programmering grundkurs HI1024 HT data

Teoretisk del. Facit Tentamen TDDC (6)

Teoretisk del. Facit Tentamen TDDC kl (6) 1. (6p) "Snabba frågor" Alla svar motiveras väl.

kl Tentaupplägg

Introduktionslaboration

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

Tentamen i Introduktion till programmering

DN1212/numpm Numeriska metoder och grundläggande programmering Laboration 1 Introduktion

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 5. Laboration 4 Lådplanering Exempel på layout, ett GUI-baserat program Frågor

Föreläsning REPETITION & EXTENTA

Laboration 2, MS SQL. Observera. Tips. Förberedelse. Genomförande

TDDC30/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer

TDDC76 - Programmering och Datastrukturer

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Objektorienterad programmering D2

6 Rekursion. 6.1 Rekursionens fyra principer. 6.2 Några vanliga användningsområden för rekursion. Problem löses genom:

kl Tentaupplägg

kl Tentaupplägg

Föreläsning 1 & 2 INTRODUKTION

Transkript:

Kursmaterial för laborationer i IMPA TDDC 68 Sammanställt av Torbjörn Jonsson 2007-02-09

INNEHÅLL Allmänt om C++-laborationerna 1 De olika laborationerna: Lab0: Grundläggande C++ 3 Lab1: Sortering med fält och poster 7 Lab2: Cirkulär länkad lista samt filer 11

Tekniska Högskolan i Linköping Institutionen för Datavetenskap (IDA) Torbjörn Jonsson 2007-02-09 Förberedelser Allmänt om C++-laborationerna Innan varje laborationstillfälle ska tillräckligt förarbete gjorts så att du kan använda tiden på laborationstillfället till inskrivning och provkörning av laborationsuppgiften. Att gå helt oförberedd till en programmeringslaboration är fullständigt meningslöst och resulterar oundvikligen i att man sitter och stirrar blint på ett rörigt program som det aldrig tycks bli någon ordning på! Är man däremot väl förberedd innan laborationen så sparar man garanterat mycket tid, hur tröstlöst förberedelsearbetet än verkar! Det är alltid bra att ha med sig behövliga manualer och någon C++-bok till datorlaborationerna. Redovisning och Examination För samtliga laborationsuppgifter gäller att de ska redovisas enligt instruktioner i kursinformationen. Om det är så att du arbetar på den fria tiden och ingen assistent finns närvarande får du givetvis själv avgöra om det är värt att fortsätta med nästa deluppgift. Det kan ju hända att assistenten har synpunkter som gör att du får göra om delar av nästa uppgift såväl som den deluppgift som inte är riktigt bra. Generella saker är att de laborationer som skall redovisas skriftligt skall lämnas in i så kallade IDAomslag. Dessa omslag finns vid skrivarna (ett ihopvikt A3 med rutor för era data). Vid komplettering skall de tidigare inlämnade versionerna lämnas tillsammans med det nya. Detta för att hanteringen skall gå fortare och på detta sätt får ni tillbaka laborationerna snabbare. Tid För Ada-laborationerna finns ett antal timmar avsatta och du kommer att behöva den tiden till att programmera och skriva in din kod. Det kan också bli nödvändigt att nyttja den fria (obokningsbara) tiden i laborationslokalerna, d.v.s. 21-08 på vardagarna samt helger. Vilka tider som är anslagna till respektive laboration och när det är reservtider står i kursinformationen eller också kan assistenten delge dig detta. Tips Om du vill hitta var i ett program ett fel uppstår kan du använda dig av spårutskrifter. En spårutskrift är en vanlig utskrift av någon text eller kanske några data som visar var du är i programmet (eller skriver ut värden på variabler). Om utskriften inte dyker upp så är det nog så att du inte har fått programmet att komma till den punkt där utskriften står. Sida 1

2007-02-09 Sida 2

Tekniska Högskolan i Linköping Institutionen för Datavetenskap (IDA) Torbjörn Jonsson 2007-02-09 Mål Grundläggande C++ I denna inledande laboration kommer du att öva på de mest grundläggande operationerna. Du ska efter denna laboration ha god insikt i hur cin och cout fungerar hur de grundläggande styrstrukturerna if, for, while m.m. fungerar Uppgift 1 Skriv ett program som läser in ett reellt tal (double) som anger en temperatur i Kelvin och sedan skriver ut motsvarande temperaturvärden i grader Celsius (Kelvin - 273.15) och grader Fahrenheit (1.8 * Kelvin - 459.67). Detta skall upprepas till dess talet 0 matas in. Om ett inmatat värde är mindre än 0 skall en felutskrift göras och ny inmatning begäras. Körexempel: Ge en temperatur i Kelvin: 273.15 273.15 Kelvin motsvarar 0.00 grader Celsius eller 32.00 grader Fahrenheit. Ge en temperatur i Kelvin: -1 Negativa värden ej tillåtna! Ge en temperatur i Kelvin: 373.15 373.15 Kelvin motsvarar 100.00 grader Celsius eller 212.00 grader Fahrenheit. Ge en temperatur i Kelvin: 0 0.00 Kelvin motsvarar -273.15 grader Celsius eller -459.67 grader Fahrenheit. Tack för idag! Utskrivna värden skall ha två decimaler. Det är tillåtet att förutsätta att endast reella värden matas in. Utökad uppgift: Robust inmatning Om man försöker läsa något från en inström som inte kan tolkas som ett värde av den typ som variabeln man skall läsa till är av kommer inströmmen att försättas i ett feltillstånd och frysas. Detta innebär att strömmens läsposition blir kvar på det felaktiga indatat och efterföljande läsförsök misslyckas p.g.a. att felflaggan kommer att leda till omedelbar retur från läsoperationen. Feltillstånd kan upptäckas med strömoperationerna bad(), fail() och good(). Om cin.bad() returnerar true är det riktigt illa och strömmen kan inte användas mer. I annat fall kan feltillståndet hävas, felaktiga indata kan läsas bort och därefter skall strömmen kunna användas igen för läsning. Inför sådan felkontroll i programmet. Sida 3

2007-02-09 Uppgift 2 Skriv ett program som läser text från standardinmatninsströmmen cin och räknar vilka slags tecken som finns i texten. Använd teckenhanteringsfunktioner ur standardbiblioteket. Programmet skall skriva ut resultatet i enlighet med följande exempel. Indata innehöll: 553 alfabetiska tecken 11 siffertecken 228 interpunktionstecken 352 vita tecken 1237 tecken totalt Observera att totala antalet tecken inte behöver vara summan av antalen i de fyra andra kategorierna som räknas separat. Det finns en uppsättning standardfunktioner för allmän teckenhantering. t.ex. isalpha(), isdigit(), m.fl, se <cctype>. Då det gäller bokstavshantering fungerar detta endast säkert för det engelska alfabetet (A-Z). Sida 4

Tekniska Högskolan i Linköping Institutionen för Datavetenskap (IDA) Torbjörn Jonsson 2007-02-09 Mål Sortering med fält och poster I denna laboration kommer vi hantera ett fält (en array) fylld med heltal på lite olika sätt. Vi kommer att behandla endimesionella och även tvådimensionella fält samt fält med poster. Studenten skall efter denna laboration kunna hantera fältstrukturer, iterera över dessa utan risk för referens till element utanför fältet samt kunna hantera poster. Uppgift Uppgifterna som följer kommer att vara varianter på hur man sorterar data beroende på hur dessa lagras. Det spelar inte någon roll vilken sorteringsalgoritm ni använder. OBS! Det är endast tillåtet att i underprogram använda variabler som skickas som parametrar till eller från underprogrammen samt lokala variabler, d.v.s. det är inte tillåtet att använda sig av globala variabler inuti underprogrammen. Används globala variabler fås laborationen i retur utan åtgärd. Krav på programmen: Programmet skall vara välstrukturerat. Använd t.ex. underprogram för att förtydliga de olika delarna. Scenario Du har varit på en bangolfbana med ett antal kompisar. Det finns 18 banor och man får maximalt slå 8 slag per bana (på just denna bangolfbana). Då det var fullt med folk som rörde sig på alla banor har ni spelat banorna i en godtycklig ordning. Det är inte säkert att ni har spelat alla banor och ni kan dessutom ha spelat samma bana flera gånger. För att du skall slippa skriva in data till programmet skall programmet simulera ert spelande på följande sätt. Programmet skall slumpa ut 20 spelade banor samt antalet slag som är gjorda på just dessa banor. Alla dessa data skall lagras i den ordning de slumpas i en datastruktur angiven i respektive deluppgift. Efter detta skall programmet skriva ut de slumpade resultaten, i den ordning de är slumpade, därefter sortera resultaten och till sist skriva ut dem, sorterat, på skärmen. OBS! Sorteringen skall ske i första hand på bannummer och i andra hand på antalet slag på banan. Del A: Du skall lagra resultaten i ett tvådimensionellt fält eller ett fält bestående av fält.. Del B: Du skall lagra resulaten i ett endimensionellt fält bestående av poster. Varje enskild post skall innehålla ett resultat bestående av bannummer och antal slag. Del C: (frivillig) Man kan tänka sig att använda typen vector som finns i C++ för att lösa problemet. Gör detta. Sida 5

2007-02-09 Sida 6

Tekniska Högskolan i Linköping Institutionen för Datavetenskap (IDA) Torbjörn Jonsson 2007-02-09 Mål Cirkulär länkad lista samt filer I denna laboration kommer vi hantera filer samt en dynamisk struktur uppbyggd av pekare och poster (länkad lista). Studenten skall efter denna laboration kunna hantera pekare samt filer. Uppgift På en fil som heter TELEFONNR.TXT finns data över ett antal personer. Denna datamängd skall läsas in och läggas in i en cirkulär länkad lista. Datamängden skall inte stoppas in så att den är sorterad från början utan endast stoppas in allt eftersom den läses in från filen. Man kan tänka sig att alla data stoppas in just där pekaren till listan står för tillfället. Då data är inläst skall hela datamängden skrivas ut på skärmen. Därefter sorteras (utan att bygga upp en ny datastruktur) och slutligen skrivas ut igen (sorterat). Datastrukturen (den cirkulära listan) skall se ut på följande sätt: CL De krav på datastrukturen som finns är att CL endast skall vara en pekare och att de poster som finns i listan endast skall innehålla datat om personen samt en pekare till nästa post. Listan skall skapas dynamiskt (new) och innan progammet avslutas skall allt minne återlämnas (delete). Sida 7

2007-02-09 Sida 8