kl Tentaupplägg

Relevanta dokument
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

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

DUGGA Tentaupplägg

DUGGA Tentaupplägg

kl 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 Tentaupplägg

Tentaupplägg denna gång

Tentaupplägg denna gång

kl Examination - Ada

kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

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

kl Tentaupplägg

Tentaupplägg denna gång

Tentaupplägg denna gång

kl Tentaupplägg

Tentaupplägg denna gång

Uppgift 1a (Aktiekurser utan poster)

Uppgift 1 ( Betyg 3 uppgift )

kl Tentaupplägg

Uttryck, satser och strömhantering

kl Tentaupplägg

TDIU Regler

Uppgift 1 (vadå sortering?)

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

kl Tentaupplägg

HI1024 Programmering, grundkurs TEN

Uppgift 1 ( Betyg 3 uppgift )

kl Tentainformation

Tentaupplägg denna gång

Uppgift 1 ( Betyg 3 uppgift )

Uppgift 1 (Sorterade heltal som är OK)

TDIU01 / 725G

TDIU Regler

Uppgift 1 ( Betyg 3 uppgift )

TDP Uppgift 1

HI1024 Programmering, grundkurs TEN

HI1024 Programmering, grundkurs TEN

2017-XX-XX.kl Tentaupplägg

Uppgift 1 ( Betyg 3 uppgift )

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

TDP Regler

TDP Regler

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

TDDI TDDI22 Tentaregler

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

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

TDIU Regler

TDDI22 (exempel) TDDI22 Tentaregler

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

kl Tentaupplägg

Tentamen TEN1 HI

HI1024 Programmering, grundkurs TEN

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

Föreläsning 7: Filer

Uppgift 1 (grundläggande konstruktioner)

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Delprov A Muntligt delprov

Tentamen, EDAA10 Programmering i Java

HI1024 Programmering, grundkurs TEN

Uppgifter till praktiska tentan, del A. (7 / 27)

TDIU Regler

Uppgifter till tenta i 729G04 Programmering och diskret matematik. 7 augusti 2015, kl 08:00-12:00

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

Programmeringsolympiaden 2012 Kvalificering

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

TDP Regler

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

Tentamen TEN1 HI

TDP Regler

729G04 Programmering och diskret matematik TEN kl 8-12

Trigonometri. Sidor i boken 26-34

Tentamen i Introduktion till programmering

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

Bygga hus med LECA-stenar

Uppgift 1 ( Betyg 3 uppgift )

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

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

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

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Tentamen i Programmering grundkurs och Programmering C

Uppgift 1 ( Betyg 3 uppgift )

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 TekFak FilFak 1 poäng 19:00 Betyg 3 Betyg G 3 poäng 18:00 Betyg 4 3 poäng 16:45 Betyg VG 3 poäng 16:30 Betyg 5 >=4 poäng 18:00 Betyg 5 >=4 poäng 18:15 Betyg VG Bonustid från avklarade duggauppgifter/laborationer 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 - Ordkors [1p] Skriv ett program som läser in två ord (ett antal sammanhängande tecken mellan 'a' och 'z'). Orden får maximalt vara 10 tecken långa. Programmet skall sedan "länka ihop" dessa ord som om de satt ihop i ett korsord, d.v.s. det första ordet skall gå vågrätt, och det andra lodrätt, där någon av bokstäverna tillhör båda orden (se körexempel). Ibland finns det flera lösningar, t.ex. orden "virka" och "sniken" kan sitta ihop vid i:et eller vid k:et, vilket av dessa som väljs spelar ingen roll. Du kan utgå ifrån att det alltid finns minst en bokstav som ingår i båda orden. Mata in första ordet: krydda Mata in andra ordet: ylle krydda l l e Mata in första ordet: arv Mata in andra ordet: ert e arv t Körexempel 3: Mata in första ordet: sig Mata in andra ordet: kartong k a r t o n sig

Uppgift 2 - Hexagonbordet [1p] Möbeldesignern Mariam har bestämt sig för att skapa ett bord som är format som en hexagon (sexkantigt). Bordets tre ben skall vara trianglar som går ner från tre av bordets sidor. Mariam har tänkt att göra bordet ur en stor plastskiva format som en liksidig triangel. Sedan skall tre mindre trianglar vikas rakt ner så att de bildar benen (se bild). Dessa tre trianglar är lika stora till ytan. Sett snett uppifrån. Sett uppifrån. Sett uppifrån. Sett från sidan. Skriv ett program som låter användaren mata in sidan på den stora triangeln (ett flyttal, i cm). Användaren skall sedan få välja om den vill fixera bordets hexagonformade yta (area) eller bordets höjd. Slutligen matar programmet ut bordets yta om användaren fixerade bordets höjd, eller bordets höjd om användaren fixerade bordets yta. Observera att det inte är säkert att hexagonens alla sidor blir lika långa, men det gör inget, tycker Mariam. Mata in sidan på triangeln (i cm): 170.0 Vill du fixera (1) bordets höjd eller (2) bordets yta? 1 Mata in bordets höjd: 45.0 Bordets yta blir då 9006.7 cm² Mata in sidan på triangeln (i cm): 170.5 Vill du fixera (1) bordets höjd eller (2) bordets yta? 2 Mata in bordets yta: 9006.7 Bordets höjd blir då 45.0 cm TIPS 1: Eftersom den stora triangeln är liksidig, och de små ligger i denna, så är de också liksidiga. TIPS 2: En liksidig triangel med sidan S och höjden H har arean A = H² / tan(π/3) eller A = S² * tan(π/3) / 4 TIPS 3: Paketen Ada.Numerics.Elementary_Functions och Ada.Numerics har matematiska funktioner (t.ex. tan, sqrt), respektive vanliga konstanter (t.ex. Pi).

Uppgift 3 - Dela på bytet [2p] Ett godtyckligt antal pirater har just plundrat ett av kolonialmaktens handelsskepp och skall nu dela på bytet. Kaptenen har bestämt att detta skall göras på följande sätt för att det skall bli rättvist. Besättningen får i tur och ordning ange hur mycket av bytet (räknat i dubloner) som de vill ha, där den med lägst rang måste säga först, sedan den med näst lägst rang och så vidare. Till sist anger kaptenen hur mycket som han tar från bytet. Sedan går det baklänges till den som har näst högst rang (d.v.s. styrmannen). Om det i detta läge inte finns tillräckligt kvar för så att styrmannen kan ta sin del så får han/hon inget, och det går vidare till nästa pirat, o.s.v. Skriv den rekursiva funktionen Divide_Pirate_Loot som tar exakt 1 parameter, ett heltal som anger hur stort bytet är. Funktionen skall läsa in namnen (exakt 6 bokstäver) på piraterna och ett heltal för respektive som anger deras begäran. Det är givet att "Kapten" alltid är den sista piraten. Sedan skall funktionen dela ut till var och en, i omvänd ordning, om det är möjligt. Slutligen returnerar funktionen hur mycket som är kvar av bytet när uppdelningen är klar. Du kan utgå ifrån att kaptenen alltid anger en andel som han/hon är säker på att få (d.v.s. mindre än eller lika med hela bytets värde). Det finns ett påbörjat huvudprogram test_divide.adb som skall testa din funktion. Du skall lägga till koden för funktionen Divide_Pirate_Loot. Du får inte ändra på huvudprogrammet. Mata in hur många dubloner bytet är: 1000 Mata in piraternas begärda andelar: Sammie 70 Dougal 140 Sophia 130 Gagnef 400 Kapten 670 Kapten fick 670 dubloner. Gagnef fick inget! Sophia fick 130 dubloner. Dougal fick 140 dubloner. Sammie fick inget! Kvarvarande pott är 60 dubloner. Mata in hur många dubloner bytet är: 2500 Mata in piraternas begärda andelar: Natali 500 Adrian 600 Gloria 600 Kapten 2000 Kapten fick 2000 dubloner. Gloria fick inget! Adrian fick inget! Natali fick 500 dubloner. Kvarvarande pott är 0 dubloner.

Uppgift 4 - Prepend [3p] I Ada finns filmoden Append_File som tillåter det program som öppnar en fil för skrivning och lägga till "i slutet" av filen (d.v.s. efter filens nuvarande innehåll), istället för att filen skrivs över helt. Om vi t.ex. har filen SHOPPING.TXT, och vi vill lägga till sist i filen (efter alla andra planerade inköp) så skulle vi kunna göra: Open(F, Append_File, "SHOPPING.TXT"); Put_Line(F, ""); Close(F); Här är F en variabel av typen File_Type. Det vore trevligt om vi kunde skapa en filmod Prepend_File som lade till i början av filen. D.v.s att man skulle kunna skriva: Open(F, Prepend_File, "SHOPPING.TXT"); Put_Line(F, ""); Close(F); Detta är självklart möjligt i programmeringens underbara värld, men täcks inte helt av kursen. Däremot skulle vi kunna göra en förenklad variant där vi definierar en ny version av Open och en ny version av Close som håller reda på att det skall göras en prepend. Det vi vill åstadkomma är alltså samma som i exemplet direkt ovanför, men koden skulle då se ut så här. Prepend_Open(F, "SHOPPING.TXT"); Put_Line(F, ""); Prepend_Close(F); Av erfarenhet vet vi att det kan hända tråkiga saker om vi ber er göra program som skriver till filer på tenta *, så vi förenklar ett steg till. Vi säger att programmet skall skriva ut till skärmen, istället för på själva filen. Vi behöver därför inte filvariabeln, men tänket är ändå samma. Prepend_Open("SHOPPING.TXT"); Put_Line(""); Prepend_Close; terminalen Koden direkt ovanför finns förberedd i filen test_prepend.adb. Den och filen SHOPPING.TXT finns i mappen given_files. Vi har egna varianter av SHOPPING.TXT, och man kan inte anta något om formatet på filen (förutom att det är en textfil). Lägg till koden som behövs för att programmet skall gå att kompilera och köra (med rätt utmatning i terminalen). Du skall inte ändra i huvudprogrammet i test_prepend.adb. OBS: Prepend_Open och Prepend_Close behöver inte klara av att programmet hanterar flera externa filer samtidigt. * Det är dock helt tillåtet, att i denna uppgift skapa och/eller skriva till filer.