kl Tentaupplägg

Relevanta dokument
kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

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

kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

DUGGA Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

DUGGA Tentaupplägg

kl Tentaupplägg

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

Tentaupplägg denna gång

kl Tentaupplägg

Tentaupplägg denna gång

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

kl Tentaupplägg

Tentaupplägg denna gång

Tentaupplägg denna gång

kl Tentaupplägg

kl Tentaupplägg

Tentaupplägg denna gång

kl Tentaupplägg

Tentaupplägg denna gång

Uppgift 1a (Aktiekurser utan poster)

TDIU Regler

Uppgift 1 ( Betyg 3 uppgift )

Uttryck, satser och strömhantering

Uppgift 1 ( Betyg 3 uppgift )

Tentaupplägg denna gång

TDIU Regler

Uppgift 1 (grundläggande konstruktioner)

kl Tentaupplägg

TDP Regler

Linköpings Tekniska Högskola Instutitionen för Datavetenskap (IDA) Torbjörn Jonsson, Erik Nilsson Lab 2: Underprogram

2017-XX-XX.kl Tentaupplägg

kl Tentaupplägg

kl Tentainformation

Uppgift 1 ( Betyg 3 uppgift )

Uppgift 1 (Sorterade heltal som är OK)

Uppgift 1 (vadå sortering?)

TDP Regler

TDIU01 / 725G

TDP Regler

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

TDP Regler

HI1024 Programmering, grundkurs TEN

TDIU Regler

TDIU Regler

Uppgift 1 ( Betyg 3 uppgift )

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

Föreläsning 6: Introduktion av listor

Regler. Betygssättning

TENTAMEN MOM1 GRUNDLÄGGANDE PROGRAMMERINGSTEKNIK OCH

TDIU20 (exempel) TDIU20 Tentaregler

KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012

TDP Regler

Regler. Betygssättning

TDDI22 (exempel) TDDI22 Tentaregler

TDP Uppgift 1

Planering av ett större program, del 2 - for och listor. Linda Mannila

Planering Programmering grundkurs HI1024 HT 2014

HI1024 Programmering, grundkurs TEN

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Kursmaterial för laborationer i

kl Tentaupplägg

729G04 Programmering och diskret matematik

Uppgift 1 ( Betyg 3 uppgift )

TDP Regler

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

Tentamen TEN1 HI

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

TDP Regler

TDIU01 - Programmering i C++, grundkurs

Projektdokumentation för Othello

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

Programmeringsolympiaden 2010 Kvalificering

Tentamen Grundläggande programmering

Uppgift 1 (Oläsliga krypterade meddelanden)

TDDI TDDI22 Tentaregler

Föreläsning 13 Testning och strängar

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

TDDI TDDI22 Tentaregler

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

Hur man programmerar. Exempel på problemlösning i Python

Tentamen i Grundläggande Programvaruutveckling, TDA548

Uppgift 1 ( Betyg 3 uppgift )

Använd WordFinder från Mac App Store optimalt! Snabbguide med nyttiga tips och trix.

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

Transkript:

Tentaupplägg TIPS 1: Läs igenom ALLA uppgifterna. Välj den du känner är lättast först. Det kan gärna ta 10-20 minuter. Försök skriva saker som kan vara problem i uppgifterna. Är det något du absolut kommer att fastna på så kanske det är fel uppgift att ge sig på. Tiden du lägger på att noga läsa uppgifterna tjänar du in på att välja rätt uppgift. TIPS 2: Kolla ibland till kommunikationsfönstret. Det kan ha kommit information till alla utan att ni skickat in en fråga. Kanske gäller det dig också (d.v.s. den uppgift du jobbar med). TIPS 3: Om ni har problem med kompilator, Emacs eller annat som INTE har med uppgifterna att göra, räck upp handen så kommer en assistent. Detsamma gäller om hur man kopierar givna filer " cp given_files/*. " eller liknande. Frågor om själva uppgifterna tar vi i första hand via tentasystemet. I körexemplen har vi markerat det som användaren matar in på tangentbordet med fet och kursiverad stil. Tänk på att körexemplen bara är ett exempel på när programmet körs. Testa ditt program noga och tänka över hur programmet skall fungera vid andra indata. Vi hinner normalt sett inte svara på frågor de sista 10 utminutera på tentan. Då ägnar vi all tid åt att rätta uppgifter för att alla skall hinna få svar innan ni går hem. Betygsgränser: Tid 1 poäng 19:00 (21:00) Betyg 3 3 poäng 18:00 (19:30) Betyg 4 3 poäng 16:30 (17:30) Betyg 5 4-6 poäng 18:00 (19:30) Betyg 5 Bonustid från laborationerna tillkommer till dessa tidsgränser. Tiden för betyg 3/G överstiger dock aldrig 5 timmar. OBS: Delpoäng delas inte ut på uppgifterna. För att få poäng på en uppgift måste man alltså lösa uppgiften helt (och enligt specifikation). Lycka till med tenterandet och hoppas att alla får G på minst en uppgift idag. M.v.h. /Torbjörn (examinator)

Uppgift 1-1337 h4xx0r [1p] Om man vill vara en häftig hacker så skriver man saker på s.k. leet speak. I denna uppgift skall du göra ett program som översätter från vanlig engelska till detta vackra språk. Här är regler som skall följas vid översättning: Siffror som redan förekommer i text ändras aldrig. Förekomster av bokstaven a (både stora och små) byts ut mot tecknet '4'. Förekomster av bokstaven e (både stora och små) byts ut mot tecknet '3'. Förekomster av bokstaven o (både stora och små) byts ut mot tecknet '0'. Förekomsten av bokstaven l (både stora och små) byts ut mot tecknet '1'. Förekomsten av bokstaven t (både stora och små) byts ut mot tecknet '7'. Övriga bokstäver skall ändras så att det är varannan liten och varannan stor bokstav. Andra tecken skall ej modifieras. Just för översättning mellan bokstäverna a,e,o,l,t till siffror har du tillåtelse att använda fullständig uppräkning. KRAV: Du skall skapa ett underprogram leetspeakify som tar en sträng som parameter och som modifierar strängen. T.ex. skall följande program skriva ut "1337 h4xx0r" på skärmen: S := "leet haxxor"; leetspeakify(s); Put_Line(S); Gör ett huvudprogram där du testar ditt underprogram. TIPS: Det finns tre givna funktioner To_Upper_Case, To_Lower_Case och Is_Digit i mappen given files. Du får använda dessa (kopiera in dem) i ditt program.

Uppgift 2 - Ingress [1p] Ett populärt AR-spel (Augmented Reality) är ingress. I spelet är man på två lag som försöker ta över varandras portaler. Portalerna i spelet motsvarar ofta något landmärke eller sevärdhet i verkligheten. För att ta över en portal måste man (bl.a.) vara fysiskt i närheten av den. Spelet är alltså utmärkt för den som är ute och rör på sig. En flitig spelare kommer alltså ta sig runt rätt mycket och det kan bli en hel del kilometrar varje gång man spelar spelet! På filen INGRESS.TXT har vi ett antal portaler som en spelare vill besöka. Portalerna representeras av två tal som är den position (en X- och Y-koordinat) som portalen finns på (enheten är kilometer). Portalerna i filen förekommer i den ordning som man tänker besöka dem. Givet att man alltid går rakt från en portal till en annan kan man då fråga sig hur långt det blir om man skall besöka alla. Om vi t.ex. tänker oss följande exempel: 3 3 1 6 1 8 Avståendet mellan den första och den andra portalen är (1 ( 3))²+(6 3)² = 5 Avståndet mellan den andra och den tredje portalen är (1 1)²+(8 6)² = 2 Det totala avståendet blir alltså 7.0 km. Här använder vi Pythagoras sats, x² + y² = z² z y x Avståenden i filen är alltid heltal, men resultatet är ett reellt tal. Du hittar funktionen för roten ur (sqrt) i paketet Ada.Numerics.Elementary_Functions. Skriv ett program som läser igenom filen och beräknar det totala avståendet mellan portalerna på ovanstående vis. Du kan utgå ifrån att filen har minst två punkter (d.v.s. minst två rader). Körexempel: Det totala avståendet mellan portalerna i filen är 56.3 km.

Uppgift 3 - Portkod [2p] Vi tänker oss en knappsats för portkoder som har 10 knappar. En tämligen osäker kod är en kod som bara innehåller en siffra. Om vi antar att man inte behöver trycka på någon "öppna"- eller "bekräfta"- knapp så är det ju bara att trycka på alla 10 knappar (i någon ordning) så kommer ju dörren att gå upp. Vi tänker oss därför en mycket säkrare variant där vi använder en tvåsiffrig kod. Man kan då fundera på hur många knapptryckningar som behövs för att få upp dörren. Lite snabbt inser man ju att det finns 10*10 = 100 kombinationer och att man då inte borde behöva fler än 200 tryckningar. Om man tänker en stund till så inser man ju att man inte ens behöver trycka så många gånger. Om man t.ex. trycker 0, 0 så kan man sedan trycka 1 och har då testat både koden 0, 0 och 0, 1. Därefter kan man trycka 0 igen för att också testa koden 1, 0. Då har man ju testat 3 koder men bara tryckt 4 gånger. Skriv ett program som testar alla tvåsiffriga kombinationer på ovanstående vis eller på ett annat mer effektivt vis än att göra 200 tryckningar. Ditt program skall skriva ut alla knapptryckningar som det gör så att vi kan kontrollera att det täcker in alla möjliga koder. KRAV: Ditt program ska hålla reda på vilka koder som är testade. En lösning som bara skriver ut en hårdkodad sekvens som löser problemet duger alltså inte. BONUS: Teoretiskt sett kan man komma ner så att man endast behöver 101 tryckningar. Om din lösning löser problemet med färre än 110 tryckningar är denna uppgift värd ytterligare 1 poäng.

Uppgift 4 - Palla äpplen [2p] Att palla äpplen kanske man har gjort någon gång. Det kanske inte känns som ett särskilt grovt brott, men om man kommer undan med det så kanske man får ett litet rus (bortsett från ruset man får av ett syrligt äpple). Därefter kanske man ägnar sig åt något som ger ett större rus, t.ex. att ta gå in på privata områden för att fånga pokémons. Kommer man undan med detta är man snart inne på cykelstöld, och sedan är det en stor ond spiral av kriminalitet som till slut oundvikligen leder till fängelse. I denna uppgift skall du simulera detta förlopp. Vi tänker oss en kriminell typ, som börjar begå ett brott (t.ex. äppelpallning). Vi antar att det inte är så stor risk att man åker dit för detta, t.ex. 1%, men det kan ske så klart. Kommer man dock undan med det så är det 2% risk att man åker dit för nästa brott. Därefter 4%, och sedan 8%. Kort sagt, det blir alltid dubbelt så hög risk att man åker fast. Man kan dock aldrig komma över 100% risk dock. Skriv ett program som simulerar detta. Programmet skall slumpa i varje skede huruvida brottslingen kom undan eller inte, med den sannolikhet som man för tillfället har kommit upp i. När brottslingen till slut åker fast (vilket man alltid gör förr eller senare) skall programmet avslutas. KRAV: Ditt program skall vara rekursivt. Du får inte använda upprepningssatser för att lösa detta problem (for, while, loop). Körexempel 1: Brott 1 1% risk. Brottslingen kom undan... Brott 2 2% risk. Brottslingen kom undan... Brott 3 4% risk. Brottslingen åkte fast! Körexempel 2: Brott 1 1% risk. Brottslingen kom undan... Brott 2 2% risk. Brottslingen kom undan... Brott 3 4% risk. Brottslingen kom undan... Brott 4 8% risk. Brottslingen kom undan... Brott 5 16% risk. Brottslingen kom undan... Brott 6 32% risk. Brottslingen kom undan... Brott 7 64% risk. Brottslingen kom undan... Brott 8 100% risk. Brottslingen åkte fast! Körexempel 3: Brott 1 1% risk. Brottslingen åkte fast!