Tentaupplägg denna gång

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

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

kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

Tentaupplägg denna gång

kl Examination - Ada

kl Tentaupplägg

Tentaupplägg denna gång

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)

Tentaupplägg denna gång

Tentaupplägg denna gång

kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

DUGGA Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

Uppgift 1 ( Betyg 3 uppgift )

kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

Uppgift 1 (Sorterade heltal som är OK)

kl Tentaupplägg

Uppgift 1a (Aktiekurser utan poster)

kl Tentaupplägg

Uppgift 1 (vadå sortering?)

DUGGA Tentaupplägg

Uppgift 1 ( Betyg 3 uppgift )

Uppgift 1 ( Betyg 3 uppgift )

Uppgift 1 ( Betyg 3 uppgift )

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

Uttryck, satser och strömhantering

Uppgift 1 (grundläggande konstruktioner)

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

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

kl Tentaupplägg

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

TDIU Regler

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

Föreläsning 4: Poster

Tentamen, EDAA10 Programmering i Java

Uppgift 1 (Oläsliga krypterade meddelanden)

Programmeringsteknisk översiktskurs för yrkeshögskoleprogram

Uppgift 1 ( Betyg 3 uppgift )

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Chapter 3: Using Classes and Objects

Uppgift 1 ( Betyg 3 uppgift )

Föreläsning 6: Introduktion av listor

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

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

Uppgift 1 ( Betyg 3 uppgift )

Kapitel 2: De hela talen

Uppgift 1 ( Betyg 3 uppgift )

KUNGLIGA TEKNISKA HÖGSKOLAN. Linefollower. Med LEGO Mindstorms och NXC. Paul Coada Introduktion i datateknik II1310

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

Uppgift 1 ( Betyg 3 uppgift )

TDIU Regler

TDIU Regler

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

Bygga hus med LECA-stenar

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

Tentamen i Beräkningsvetenskap I och KF, 5.0 hp,

Objektorienterad programmering D2

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

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg

TDP Regler

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

tentaplugg.nu av studenter för studenter

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

TDP Regler

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Användarhandledning Version 1.2

MMA132: Laboration 2 Matriser i MATLAB

Tentamen i. Programmering i språket C

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

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

Kursmaterial för laborationer i

kl Tentaupplägg

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Föreläsning 0: Introduktion av Ada

TENTAMEN MOM1 GRUNDLÄGGANDE PROGRAMMERINGSTEKNIK OCH

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

TDIU20 (exempel) TDIU20 Tentaregler

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

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Grundkurs i programmering - intro

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

Transkript:

Tentaupplägg denna gång Denna tenta är uppdelad i två olika varianter. Det är helt ok att använda vilken variant ni vill. Det är ok att byta mitt under tentan om man så vill också. Variant 1: Uppgift 1, 2, 3, 4 hör ihop och de regler gällande betygsgränser som står på det separata regelbladet gäller. OBS! Bonustiden från laborationerna gäller endast på denna tenta för er som gått kursen i år. Bonustiderna från laborationerna försvinner omedelbart efter den första ordinarie tentan. Variant 2: Uppgift 5 är en specialvariant av tenta för dem som känner att de inte vill ge sig på någon av de ordinarie uppgifterna. Denna uppgift kan INTE kombineras med någon av de övriga för högre betyg utan kan endast generera betyg 3 som bäst. Några tips på vägen kanske också kan vara bra. TIPS 1: Läs igenom ALLA uppgifterna och välj den du känner att det är den lättaste först. Det kan gärna ta 10-20 minuter. Försök skriva ner lite saker som kan vara problem i uppgifterna. Om det är något du absolut kommer att fastna på kanske det är fel uppgift. Du tjänar lätt in denna tid på att välja rätt uppgift. I vissa (flera) av uppgifterna finns en inledning (kursiv text) som egentligen inte har med själva uppgiften att göra, men som är en liten introduktion (i vissa fall) till varför detta program skall skapas. 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å (din uppgift kanske). TIPS 3: Sista timmen är vi normalt sett lite snällare och ger eventuellt lite bättre återkoppling på era fel. Innan dess kan man få högre betyg och därför kräver vi att ni har lite mer koll på vad som skall rättas till. Vi ger dock information om vilket symptom felet uppvisar om vi kompletterar er uppgift under hela tentans gång. Lycka till med tenterandet och hoppas att alla får G på minst en uppgift idag. M.v.h. /Torbjörn (examinator)

Uppgift 1 (No (of) comments...) Ett mycket välkänt programmeringsspråk är COBOL, från 1959. År 1997 rapporterades det att 80% av världens business-relaterade kod var skriven i COBOL, med över 200 miljarder rader existerande kod. Något som inte många (vi är endast ca 5 personer) känner till är att det fanns en liten krets COBOL-programmerare som skapade en egen, hetare variant kallad Course Opportunity Language Designer, vilket förkortades COLD. I programspråket COBOL skrevs ALLTING I VERSALER. Dessa nyskapande programmerare gillade inte att folk SKREK VARANDRA I ÖGONEN. De ville vara mer coola. Programspråket COLD blev dock aldrig särskilt populärt och idag finns det ungefär lika få COLD-programmerare som det finns skickliga COBOL-programmerare. :-) Din uppgift är att skriva ett program som räknar antalet kommentarsrader i det extremt heta programmeringsspråket COLD. En kommentar kan endast föregås av blanktecken (eller vara först på en rad) och en kommentar inleds med tecknet $. Rader som innehåller ett $-tecken, men som har andra tecken före (inte blanktecken) räknas alltså inte som kommentarsrader. Antag att vi har ett COLD-program som ligger i filen PROGRAM.CLD (en ren textfil) som ser ut på följande sätt: $ Header of program in PROGRAM.CLD Definition of program Main: $ Variable definitions. A is an Integer. B is a Float. C is a Float. $ Start of program instructions. Do this: Print %Mata in ett heltal och ett flyttal: %. Input A. Input B. $ Calculate A * B and store result in C. A multiplied by B gives C. $ Print result on screen. Print %Resultatet blir i dollar ($) = %. Print C. End program Main. Om vi skulle ha denna programfil som indata till ditt program skulle vi alltså få fram att det finns 5 kommentarsrader enligt följande körexempel: Filen PROGRAM.CLD innehåller 5 kommentarsrader. TIPS: Vi kan ha andra filer förstås med olika långa program. Det är dock garanterat att det alltid finns ett COLD-program i filen och att filen alltid heter PROGRAM.CLD.

Uppgift 2 (SGD) Kuriosa: SGD (Singapore Dollar) är den officiella valutan i Singapore. Den förkortas S$. I Singapore har man tidigare haft Straits Dollar, Malayan Dollar och Malaya and British Borneo Dollar. SGD är idag helt kompatibel med Brunei Dollar medan det tidigare har byggt på det brittiska myntslaget Pund i förhållande 60:7 (Dollar:Pund). Idag (2013-10-25) är 100 SGD värda 512 SEK så saker är alltså billigare om man åker till Singapore. 512 är också en jämn multipel av 2 för dem som är lite matematiskt intresserade. I denna uppgift skall du skriva underprogrammet SGD (INTE Singapore Dollar dock) som tar fram den största gemensamma delaren givet indata av ett antal inmatade tal. I uppgiften sätter vi antalet till 4. Det finns i programmet en konstant som anger detta antal så att man kan ändra detta och testa med t.ex. 20 tal istället. Givetvis skall programmet använda konstanten som är definierad istället för talet 4. I den givna filen greatest_common_divisor.adb finns en början till ett program (inklusive den konstant som anger antalet ovan) som skall beräkna SGD av ett antal tal. En delare till ett tal P är ett tal som P kan delas jämnt med (d.v.s. att det inte blir någon rest vid divisionen). T.ex. har talet 12 följande delare: 1, 2, 3, 4, 6 och 12. SGD av flera tal är, precis som det låter, den största gemensamma delaren till alla dessa tal. SGD av 6 och 8 är 2, eftersom talet 6 kan delas med 1, 2, 3 och 6 samt att talet 8 kan delas med 1, 2, 4 och 8. SGD av 3 och 7 är 1. SGD av 128, 192 och 320 är 64 (64*2, 64*3, 64*5). Ett lätt sätt att räkna ut SGD för N tal är att börja på det minsta av dem och sedan dela alla tal med detta tal. Om alla tal delas utan rest är SGD funnet annars minskar man med 1 och gör om samma sak. Detta upprepar man tills det att man finner SGD. Att man kan garantera att man alltid finner ett SGD beror på att talet 1 är en delare till alla tal. Trivial kunskap, men bra för denna uppgift. Din uppgift är att lägga till koden för funktionen Sgd i filen greatest_common_divisor.adb.du får bara ändra mellan de två kommentarsraderna som finns i filen. Du kan eventuellt behöva skriva fler funktioner som hjälper Sgd att lösa problemet. TIPS: Operatorn mod (eller rem ) är väldigt bra att kunna.

Uppgift 3 (Uppmärk samma barn) Som förälder är man ju noggrann med att ens barn kommer hem med sina rätta kläder från skolan. Därför köper man kläder som ingen annan skulle köpa så att de skiljer sig från mängden. När man går i affärerna kan man leta efter Dagens klipp. Risken är dock att man där finner kläder som redan är sönderklippta. :-) Ett annat sätt är att man helt enkelt märker kläderna på något sätt. Detta underlättar för skolpersonalen på så sätt att de bara kan ställa barnen på rad och sen kan de bara dela ut klädesplaggen vid dagens slut. Du skall skriva ett program som skriver ut en namnskylt till ett barn (denna kan senare bara klippas ut och klistras fast i barnets kläder). Barnets för- och efternamn kan maximalt vara 10 tecken långa vardera. Programmet skall kräva att användaren matar in för- och efternamn på varsin rad enligt exemplen nedan. Namnskylten skall designas på så sätt att namnet omsluts av en rektangel utan blanktecken runt namnet. Körexempel 1: Mata in förnamn : Rupert Mata in efternamn: Kuub +-----------+ Rupert Kuub +-----------+ Körexempel 2: Mata in förnamn : Sven-Agust Mata in efternamn: Boo +--------------+ Sven-Agust Boo +--------------+ Körexempel 3: Mata in förnamn : Simone Mata in efternamn: Prime Lund +-----------------+ Simone Prime Lund +-----------------+ KRAV 1: Inga globala variabler får användas i underprogrammen (givetvis). KRAV 2: Utskriften av linjerna ( ----------- ) SKALL göras i ett rekursivt underprogram. Plustecknen räknas INTE in i linjerna. TIPS: Get_Line.

Uppgift 4 (Diplanetariska nyår) Ett "Diplanetariskt Nyår" är ett år då två planeters nyårsdag infaller på samma dag. Eftersom planeter ofta har olika stora omloppsbanor brukar deras år ha olika längd. Man kan mäta detta i antingen antal jordiska dagar (dygn) eller "Sol". Sol är begreppet för den egna planetens längd på dygnet. För att göra denna uppgift lite lättare kommer vi att betrakta alla planeters omloppstider (d.v.s. årens längd) i jordiska dagar. Vi kommer även hålla oss till heltal. Vi tar alltså inte hänsyn till skottår i denna uppgift. Om vi betraktar vår egen planet och vår grannplanet Mars så är läget följande: Vårt år är 365 jordiska dagar långt, året på mars är 687 jordiska dagar långt. Vi antar nu att det är diplanetariskt nyår i år för jorden och mars, och att det i år är år 1 (alltså jordår 1 för oss och marsår 1 på mars). Nästa diplanetariska nyår sker om 365*687 = 250755 jordiska dagar. 250755 jordiska dagar motsvarar 687 jordiska år och 365 marsianska år, alltså kommer nästa diplanetariska nyår inträffa år 688 på jorden (d.v.s. år 2701 i vår kalender), och år 366 på mars. Skriv ett program som låter användaren mata in två planeters år (i jordiska dagar). Efter detta skall programmet skriva ut en tabell över vilka år som diplanetariska nyår kommer att infalla. Användaren skall få bestämma hur många rader tabellen skall ha. Körexempel: Mata in - hur lång tabellen skall vara: 3 - årets längd för planet 1, i hela jordiska dagar: 365 - årets längd för planet 2, i hela jordiska dagar: 687 Årtal för respektive planet Planet 1 Planet 2 ---------------------- 1 1 688 366 1375 731 Här bör man dock vara lite försiktig, det är nämligen inte alltid så att man bara kan multiplicera årens längd med varandra för att få fram nästa diplanetariska nyår. Om vi t.ex. tittar på ett annat exempel så ser vi detta tydligt. Antag att två planeter har 6 respektive 8 dagars år. Nästa diplanetariska nyår infaller då år 5 på den första planeten och år 4 på den andra planeten. KRAV: Tabellen skall se ut som i körexemplena, det är alltså viktigt att det är rätt antal blanksteg överallt. TIPS: Försök inte lösa detta som ett matematiskt ekvationssystem. Det är helt okej att göra en lösning som tickar på en dag i taget tills man upptäcker att båda planeterna är på nyårsdagen.

Uppgift 5 ( Betyg 3 -uppgift: Ruperts son...) Som alla vet är Rubiks kub en skojjig leksak som man gärna ger sina barn att leka med på långa resor, eller i allmänhet när de har tråkigt. Det hände sig så, att Rubik fick en son, Ruben. Det visade sig dock att Rubiks kub var för avancerade för Ruben, så Rubik konstruerade en kub med 2 x 2 rader (istället för 3 x 3), även känd som minikuben. Denna kubs klurighet motsvarde Rubens intellekt. Ruben fick i sin tur en son, Rupert. Det visade sig dock att minikuben var allt för knepig för Rupert, så Ruben fick skapa en ny kub med 1 x 1 rader, även kallad mikrokuben. Denna kub lyckades Rupert till slut lösa. Ruperts son... Här kommer en gammal klassisk rituppgift som den såkallade betyg 3 -uppgiften. Du skall skriva ett program som ritar ut en tredimensionell kub i två dimensioner enligt exmeplen nedan. Användaren matar in vilken storlek på kuben den vill se och det skall gå att mata in vilken storlek som helst större än 0. Ingen felhantering krävs. Att det ser lite konstigt ut beror på att man ser kuben med ögon som sitter bredare än kuben är bred. Om figuren ser ännu konstigare ut när den blir större än vad terminalen klarar av att rita ut kan det bero på att terminalen bara var för liten. Det är helt ok. Vi antar att vi har en enormt stor terminal att tillgå. Körexempel 1: Mata in storleken på kuben: 1 +--+ / \ + +--+ + / \ +------+ Större figurer (inte körexempel): Storlek 3 Storlek 4 +----------+ +--------------+ / \ / \ / \ / \ / \ / \ + + / \ + + +----------+ / \ / \ +--------------+ / \ / \ +------------------+ / \ / \ / \ +------------------------+ KRAV: Vi accepterar INTE en fullständig uppräkning av olika fall. Det måste lösas på ett någorlunda algoritmiskt sätt. Det skall finnas loopar etc som beror på storleken. TIPS: Underprogram underlättar för dig. Använd små underprogram som löser delar av problem som du slipper strula med senare.