TDDI22 (exempel) TDDI22 Tentaregler

Relevanta dokument
TDDI TDDI22 Tentaregler

TDDI TDDI22 Tentaregler

TDDI TDDI22 Tentaregler

TDDI TDDI22 Tentaregler

TDIU20 (exempel) TDIU20 Tentaregler

TDIU01 / 725G

TDIU TDIU20 Tentaregler

TDIU TDIU20 Tentaregler

TDP Regler

TDIU Regler

TDIU Regler

TDIU Regler

TDP Regler

Regler. Betygssättning

TDP Regler

TDP Regler

TDIU Regler

TDP Regler

TDP Regler

Regler. Betygssättning

TDP Regler

TDDI14 Objektorienterad programmering

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

729G04 Programmering och diskret matematik Tenta kl 14:00-18:00

TDP004 - Datortenta (DAT2)

729G04 Programmering och diskret matematik

kl Tentaupplägg

Tentaupplägg denna gång

729G04 Programmering och diskret matematik

Tenta (TEN3) i kursen 729G04 Programmering och diskret matematik 5 feb 2016, kl 14:00-18:00

Uppgift 1 ( Betyg 3 uppgift )

TDP004 - (För)Tentamen

HI1024 Programmering, grundkurs TEN

TDP004 - Dugga All kod som skickas in för rättning ska kompilera och vara väl testad.

HI1024 Programmering, grundkurs TEN

kl Tentaupplägg

Tentaupplägg denna gång

Uppgift 1 (vadå sortering?)

729G04 Programmering och diskret matematik

kl Tentaupplägg

DUGGA Tentaupplägg

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.

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

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

HI1024 Programmering, grundkurs TEN

kl Tentaupplägg

HI1024 Programmering, grundkurs TEN

kl Tentaupplägg

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

Tentaupplägg denna gång

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Uppgift 1 ( Betyg 3 uppgift )

kl Tentaupplägg

HI1024 Programmering, grundkurs TEN

DUGGA Tentaupplägg

Tentamen EDAF30 Programmering i C++

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

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

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

kl Examination - Ada

kl Tentaupplägg

Tentamen TEN1 HI

kl Tentaupplägg

TDP004 - Tentamen All form av kontakt mellan studenter under tentamens gång är strängt förbjuden.

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

Tentamen, EDAA10 Programmering i Java

Tentamen TEN1 HI

kl Tentaupplägg

Tentamen i EDA011 Programmeringsteknik för F, E, I, π och N

Uppgift 1 ( Betyg 3 uppgift )

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

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

TDP004 - Tentamen All kod som skickas in för rättning ska kompilera och vara väl testad.

Tentamen i Grundläggande programmering STS, åk

HI1024 Programmering, grundkurs TEN

TDIU01 - Datortenta (DAT2)

kl Tentaupplägg

OOP Omtenta

kl Tentaupplägg

Sortering. Om du följt dessa steg korrekt så ska böckerna nu vara sorterade.

kl Tentaupplägg. TIPS 4: Du kan kompilera din kod med följande kommandon g++11, w++11 (för mer varningar)

Uppgift 1 (Sorterade heltal som är OK)

Tentamen i Grundläggande programmering STS, åk 1 fredag

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Uppgift 1 (grundläggande konstruktioner)

OOP Tentamen

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

kl Tentaupplägg

729G04 Programmering och diskret matematik

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

Tentamen i Grundläggande programmering STS, åk 1 fredag

OBJEKTORIENTERAD PROGRAMMERING för Z1 (TDA540) Ansvarig: Jan Skansholm, tel eller

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Tentaupplägg denna gång

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

DAT043 Objektorienterad Programmering

729G04 Programmering och diskret matematik TEN kl 8-12

Programmering C: Tentamen of 5 Prioritet och associativitet hos operatorerna i C De viktigaste operatorerna: Prioritet Kategori Operator

Transkript:

Inloggning TDDI22 Tentaregler Logga in i tentasystemet genom att välja session exam system och logga in med ditt vanliga LiU- ID. Välj inte att ha denna session som standardsession. Verifiera att dina uppgifter stämmer och förbered din tentaplats. Som vanligt är det inte tillåtet att ha väskor eller jackor vid sin skrivplats och mobiltelefoner ska ligga avstängda i jacka eller väska. Ta fram ditt LiU-kort och invänta tentavakt för att få ett engångslösenord. Hjälpmedel Följande får tas med på tentan: En bok om c++. För boken gäller följande regler: Kommentarer/noteringar som direkt rör text och exempel på sidan i fråga får finnas i sidmarginalen. Egna sidflikar för att enkelt kunna hitta t.ex. de olika kapitlen är tillåtna. Inga extra ark eller lappar, lösa eller fastsatta, får finnas. Tomma sidor, insidan av pärmarna, försättsblad, etc., får inte innehålla programkod. Maximalt ett A4-ark med egna anteckningar Penna för att anteckna under tentan. Ni kommer förses med blanka papper Följande får INTE tas med: Elektroniska hjälpmedel såsom miniräknare, mobiltelefon och smartklockor. Utloggning När du är nöjd med ditt betyg (som står i tentaklienten) kan du avsluta och logga ut som vanligt i menyn. Klicka sedan på ok följt av knappen avsluta tentan. Observera att du när du gjort detta inte kan logga in igen. Lämna inte din plats innan vanliga inloggningsskärmen syns. Frågor om uppgifter Frågor om tentan i stort eller uppgiftspecifika frågor ska ställas via tenta-klienten. Detta för att vi ska ha en historik av konversationen samt för att vi ska kunna ge samma hjälp till olika studenter. Systemfrågor Om du har systemfrågor som t.ex. problem med tentaklienten eller terminalen räcker du upp handen så kommer en assistent och hjälper till.

Tentaregler Tentan består av fyra uppgifter indelade i två kategorier; standardbibliotek (STL) och mallar. För godkänt betyg på tentan krävs godkänd lösning av en uppgift inom vardera kategori. För högre betyg krävs lösning av uppgifter inom en viss tid enligt tabell 1. Tid (h) Antal uppgifter STL Mallar Betyg 2.5 + B 1 1 5 4 + B 2 1 5 4 + B 1 2 5 4 + B 1 1 4 5 1 1 3 Tabell 1: Tidsgränser för olika slutbetyg, B är bonus från labserien (se nedan) För att en uppgift ska anses godkänd krävs följande: att man noga följt alla instruktioner och krav ställda i uppgiften din kod följer god programmeringsstil (se labseriens rättningsguide) att din kod har bra inkapsling och resurshantering att standardbibliotekskomponenter används på ett bra sätt Bonus från labserien Bonus från labserien (benämnd B i tabell 1) ger ett visst antal minuter (5, 15, 20 eller 30) extra på respektive tidsgräns för högre betyg. Bonusen är endast giltig det år den erhölls.

Uppgift 1 - Mallar Kopiera filen given_files/uppgift1.cc till din hemkatalog och modifiera den kopian. Det givna huvudprogrammet använder en funktion find_index som ska hitta indexet för ett givet värde i en viss sekventiell container. Din uppgift är att skapa denna funktion som en template enligt nedanstående krav: 1. Indexet som returneras ska vara samma typ som containerns size-funktion returnerar. 2. find_index ska endast ha en mallparameter (containertypen). 3. Ett undantag av typen std::out_of_range ska kastas om värdet inte hittas. Se den givna filen för exempel på hur funktionen ska kunna anropas. TIPS: Alla containrar där index kan vara av intresse har två inre typer som kan vara av intresse i denna uppgift; size_type och value_type.

Uppgift 2 - STL Skriv all kod på en fil med namnet uppgift2.cc. I denna uppgift är det speciellt viktigt att använd standardbibliotekskomponenter i så hög grad som möjligt. Komplettera med lambdauttryck eller egna funktionsobjekt, ej vanliga funktioner, om det behövs för att lösa en uppgift. Det finns en given indatafil, data1.txt, i mappen given_files. Filen innehåller både positiva och negativa heltal i fritt format och utan någon inbördes ordning. Programmet ska läsa från cin och läsning från en textfil kan då göras genom omdirigering på kommandoraden: a.out < given_files/numbers.txt Utdata ska skrivas på standardströmmen cout. Programmet ska göra följande, i den ordning som ges och varken mer eller mindre i varje steg än vad som anges. 1. Läs alla tal på filen och lagra dem i en lämplig sekvenscontainer, med tanke på vad som ska göras nedan. Talen ska lagras i samma ordning i containern som de finns på filen. Ingen mer container får användas i programmet. 2. Skriv ut hur många tal som lästs in i containern. 3. Skriv ut talen i containern med ett mellanrum efter varje tal. 4. Räkna hur många negativa tal det finns i containern och skriv ut detta antal. 5. Gör om alla negativa tal i containern till positiva tal (absolutbeloppet av talet). 6. Skriv ut talen i containern med ett mellanrum efter varje tal (samma som 3). 7. De fem minsta talen ska flyttas till början av containern i stigande ordning, på något sätt. Ordningen på de övriga talen saknar betydelse men undvik att sortera hela containern. 8. Skriv ut talen i containern med ett mellanrum efter varje tal (samma som 3). 9. Ta bort de fem minsta talen i containern. 10. Skriv ut talen i containern med ett mellanrum efter varje tal (samma som 3)

Uppgift 3 - Mallar Kopiera filen given_files/uppgift3.cc till din hemkatalog och modifiera din kopia. Det finns en datastruktur, ringbuffern, som ofta används där man har många värden och endast är intresserad av ett visst antal och äldre värden är oviktiga. Exempel på användningsfall kan vara i multimedia där vi har en enhet som skapar värden och en annan som använder dessa värden - om den konsumerande enheten är för långsam kan vi efter ett tag förkasta (skriva över) gamla värden då dessa inte längre är intressanta. I denna uppgift ska du skapa en mallklass, Ring_Buffer som internt håller en std::array innehållandes ett fast antal värden (N) av en given typ (T) som ges som mallargument till din klass. Följande publika medlemsfunktioner ska finnas: void put(t const &) Tar emot ett värde och lagrar det på skrivpositionen som sedan ökas T const & get() Returnerar värdet på läspositionen som sedan ökas Dessutom ska din klass ha en inre typ value_type för att spara undan den inre typen T. Skrivpositionen ovan är alltså på vilket index i den interna array-medlemmen som vi ska stoppa in värden på nästa gång. När positionen blir större än sista index ska den börja om på 0. På liknande sätt har vi en separat läsposition för att hålla koll på det älsta, ej lästa, värdet. Dvs var vi ska läsa från nästa gång. Om skrivpositionen går om läspositionen ska båda ökas (se exempel på nästa sida). Du behöver inte ta hänsyn till problem som uppstår om användaren gör fel, exempelvis anropar get utan att först lägga till värden. Du får självklart lägga till privata hjälpfunktioner vid behov. Det ska dock inte finnas fler publika medlemmar än de ovan, utöver speciella medlemsfunktioner som du anser behövs. Exemplet i det givna huvudprogrammet fungerar enligt figurerna på nästa sida.

Antag att du har en Ring_Buffer<int, 5>. Då kan vi rita upp den interna lagringen enligt nedan (med L=läsposition och S=skrivposition): Vi lägger sedan till värdena 0-3: L S 0 1 2 3 L S Om vi därefter lägger till fler värden (4-6) flyttas först S och därefter både L och S: 5 6 2 3 4 L S När vi därefter läser ett värde får vi värdet 2 och internt ser det ut enligt nedan: 5 6 2 3 4 S L

Uppgift 4 - STL Skriv all kod på en fil med namnet uppgift4.cc. En frukthandlare väger de fruktlådor han tar emot och noterar vilken sorts frukt varje låda innehåller och dess vikt. I mappen given_files finns en textfil, frukt.txt, med sådana data. Varje rad i filen innehåller namnet på en frukt och ett tillhörande reellt värde som anger vikten: Orange 12.57 Plum 8.77... Quince 16.81 Plum 9.54 Skriv ett program som gör följande: 1. Indatafilens namn ska ges som argument på kommandoraden då programmet startas, t.ex. a.out given_files/frukt.txt Programmet ska kontrollera att kommandoraden är korrekt och att den angivna filen går att öppna. Om något är fel ska ett tydligt felmeddelande skrivas ut och programmet avslutas. 2. Skriv ut en lista med samtliga rader från indatafilen men med frukterna i bokstavsordning, den interna ordningen mellan lådor med samma frukt är oviktig: Frukt Vikt [kg] Apple 25.38 Apple 23.59 Grape 12.52 Kiwi 8.71 Orange 12.57 Orange 14.72 Plum 8.77 Plum 9.54 Quince 16.81 3. Skriv ut en lista med totala vikten av varje fruktsort. För samma data som ovan ska denna utskrift vara: Frukt Vikt [kg] Apple 48.97 Grape 12.52 Kiwi 8.71 Orange 27.29 Plum 18.31 Quince 16.81 I båda tabellerna ska radernas längd baseras på det längsta fruktnamnet. Du kan dock anta att vikten på en låda är under 100kg samt att vi inte beställer mer än 1000kg av en specifik frukt (dvs max tre heltalssiffror i steg 3).