TENTAMEN MOM1 GRUNDLÄGGANDE PROGRAMMERINGSTEKNIK OCH

Relevanta dokument
Objektorienterad programmering, Java, 5p TDBA63

kl Tentaupplägg

kl Tentaupplägg

Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen

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

Uppgift 1 ( Betyg 3 uppgift )

TDP Regler

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

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

C++ Slumptalsfunktioner + switch-satsen

Uppgift 1 ( Betyg 3 uppgift )

HI1024 Programmering, grundkurs TEN

GPT The bitter end. Förra veckan: Rekursiva funktioner som läggs in externa filer har stor räckvidd

tentamensdags och lab 3

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.

Kurs: HF1012, Matematisk statistik Lärare: Armin Halilovic Datum: Tisdag 12 april 2016 Skrivtid: 8:15-10:00

Diagnostiskt Prov. Antaganden Om förutsättningar saknas I en uppgift skall rimliga antaganden göras och nedtecknas.

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

översiktskurs (5DV031)

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

Kurs: HF1012, Matematisk statistik Lärare: Armin Halilovic Datum: Tisdag 12 april 2016 Skrivtid: 8:15-10:00

Uppgift 1 ( Betyg 3 uppgift )

HI1024 Programmering, grundkurs TEN

Agenda. Objektorienterad programmering Föreläsning 13

Tentaupplägg denna gång

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl Tentamen i Programmering C, Fri, Kväll,

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

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.

*Pekarvärden *Pekarvariabler & *

Skriv i mån av plats dina lösningar direkt i tentamen. Skriv ditt kodnummer längst upp på varje blad.

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 20

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

kl Examination - Ada

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

kl Tentaupplägg

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

Planering Programmering grundkurs HI1024 HT TIDAA

TENTAMEN I DATAVETENSKAP

DELPROV1. Objektorienterad programmeringsmetodik, 7.5p 5DV081, 5DV109

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:TEN1 - Teoretisk tentamen Tid: Torsdagen den 20 oktober 2011,

PROGRAMMERING-JAVA TENTAMINA

Tentamen i Programmering grundkurs och Programmering C

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen

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

TDIU Regler

PRAKTISKT DELPROV I DATAVETENSKAP PROGRAMMERINGSMETODIK OCH

BMI = (vikt i kg) / (längd i m) 2. Lösningsförslag

Uppgift 1 (grundläggande konstruktioner)

HI1024 Programmering, grundkurs TEN

Uppgift 1 (Sorterade heltal som är OK)

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga

Planering Programmering grundkurs HI1024 HT data

HI1024 Programmering, grundkurs TEN

Enkla datatyper minne

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl Omtentamen i Programmering C, Fri, Kväll,

Operatorer Tilldelning Kodblock { } if satsen Logiska uttryck Att programmera

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

Tentamen ID1004 Objektorienterad programmering May 29, 2012

DELPROV 1 I DATAVETENSKAP

Datorlära 6. Arbeta med strängar Inmatning med tangentbordet Bygga ett program med inmatning, funktioner, osv

TDP Regler

kl Tentaupplägg

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

#include <stdio.h> #include <string.h>

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

TDP Regler

Planering Programmering grundkurs HI1024 HT 2014

DATORÖVNING 3: EXPERIMENT MED

Programmeringsteknik med C och Matlab

Problemlösning. Veckodagsproblemet Gissa talet Siffersumman

Tentamen ges för: Tentamensdatum: Tid:

En kort text om programmering i C.

Uttryck och villkor. Föreläsning 2

Kortspel. Ett spel - tusen upplevelser

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

Programmeringsteknisk översiktskurs för yrkeshögskoleprogram

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

Tentamen: Datordel Programmeringsteknik

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Omtentamen i Programmering C, 5p, fristående, kväll,

TDIU20 (exempel) TDIU20 Tentaregler

Chapter 3: Using Classes and Objects

Lösningar till uppgifterna sätts ut på kurssidan på nätet idag kl Omtentamen i Programmering C, 5p, A1, D1, E1, Fri, Pr1, Te/Ek1,

Tentamen i Grundläggande Programvaruutveckling, TDA548

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

kl Tentaupplägg

4 Sammansatta datatyper

Tentamen i Introduktion till programmering

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Tentamen i Programmering grundkurs och Programmering C

Lösningar till uppgifterna sätts ut på kurssidan och på WebCT (Gamla Tentor) i dag kl 19. Tentamen i Programmering C, 5p, Distans, övriga,

LÖSNINGSFÖRSLAG TILL Tentamen i objektorienterad programmering i C++ I

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

Objektorienterad Programmering (TDDC77)

kl Tentaupplägg

Tentamen i Programmering grundkurs och Programmering C

Transkript:

UMEÅ UNIVERSITET Datavetenskap Marie Nordström 071207 TENTAMEN MOM1 GRUNDLÄGGANDE PROGRAMMERINGSTEKNIK OCH DATORSYSTEM/GRÄNSSNITT, 7.5HP. (5DV074/5DV075) Datum : 071207 Tid : 3 timmar Hjälpmedel : Allt. Kommunikation med andra personer (direkt eller indirekt) är dock inte tillåten, som t ex via mail, mobiltelefon, gemensamma kataloger etc. Antal uppgifter : 4 Poäng : 32 Provet består av 4 uppgifter: Kryssa för de uppgifter du lämnar in. Dina filer skall vid skrivtidens slut finnas i mappen ~/edu/gpt/mom1071207 Namn och användarnamn(@cs.umu.se) skall finnas som kommentar överst i all källkod. Skriv din dators namn på försättsbladet. Lösningarna skall vara prydliga. Tankegången skall vara lätt att följa. Alla antaganden som inte är uppenbara skall redovisas. OBS! Kontrollera att din dator fungerar innan du börjar. Lycka till! UMEÅ UNIVERSITET 901 87 UMEÅ Tel.: 090-786 77 08 Fax: 090-786 61 26 e-mail: marie@cs.umu.se

Regler för Tentamen moment1 Provet är en del av examinationen och skall alltså ske under tentamensliknande förhållanden. Examinationen är individuell och betygsgrundande. Detta får följande konsekvenser: Man är personligt ansvarig för de lösningar som lämnas in. Om man hittar lösningar eller delar av lösningar på nätet eller i litteraturen bör detta tydligt anges och man är fortfarande skyldig att själv vara fullständigt insatt i den lösning man redovisar och på uppmaning kunna svara för innehåll och funktion i hela eller delar av lösningen. Självklart får man inte söka eller hämta kod från någon av de övriga tentanderna, detta betraktas som fusk och handläggs som sådant. Några riktlinjer för hur lösningarna bedöms: Koden skall följa god programmeringsmetodik, vilket t.ex. innebär konsekvent indenterad och lämpligt kommenterad källkod. Lösningen behöver inte gå att kompilera för att ge poäng, så låt inte troliga syntaxfel ta för mycket tid i anspråk om du känner dig övertygad om att du löst det givna problemet, det räcker därför inte att en lösning fungerar för att ge full poäng, även här måste man på ett rimligt sätt underordna sig kravet på god programmeringsmetodik. 2(6)

Uppgift 1 (6 poäng) På arméns överskottslager har du kommit över en atombomb förhållandevis billigt. För att ta över världen behöver du dock känna till avfyrningskoden, som är en följd av fyra bokstäver i intervallet a-z. Lyckligtvis har du lyckats extrahera funktionen som kontrollerar om koden är korrekt ur missilens processor. Den returnerar sanningsvärdet sant om koden är korrekt och ser ut på följande sätt. int korrekt_kod(char c1, char c2, char c3, char c4) { char a[4]; int i, j; } a[0]=c1; a[1]=c2; a[2]=c3; a[3]=c4; for (i = 0; i<10; i++) { for (j = 0; j<4; j++) { a[j] = a[j] ^ a[(j+(j+i)%3+1)%4] + i; } } return a[0]==101 && a[1]==-116 && a[2]==-41 && a[3]==19; Skriv ett program som tar reda på den korrekta koden genom att testa alla möjliga kombinationer av tecken och anropa korrekt_kod, t ex som korrekt_kod(t1,t2,t3,t4); där t1, t2, t3 och t4 är variabler av typen char. Koden för funktionen korrekt_kod finns i mappen http://www.cs.umu.se/kurser/5dv074/ht07/mom1/kod071207/ Filen som du skapar måste heta codecracker.c och ska läggas i din provkatalog. Tips! Typen char är som vi sagt tidigare egentligen int. Värdena i datatypen har en given ordning (se t.ex. ASCII-tabellen) och är uppräkningsbara. Detta innebär bl.a. att det går alldeles utmärkt att styra for-loopar med variabler och värden av typen char. Alfabetet kan t.ex. skrivas ut så här: char i; for (i='a'; i <= 'Z'; i++) printf("%c",i); printf( \n ); 3(6)

Uppgift 2 (7 poäng) Du ska konstruera ett litet spel, huvudsakligen med hjälp av loopar och val. Spelet heter HiLo och går ut på att användaren ska försöka gissa datorns hemliga tal. Det hemliga talet ligger i intervallet 1..100 och det ska vara slumpmässigt. Läs in gissningar från användaren, berätta om de är för låga eller höga och upprepa detta till dess att användaren gissar rätt. Du måste kontrollera att det tal som användaren ger är en giltig gissning, dvs. att värdet ligger i intervallet 1..100. Räkna och skriv ut antalet (giltiga) gissningar. Exempel på körningar: ---Hemligt tal : 85--- Det hemliga talet ligger mellan 1 och 100 Gissa : 85 Helt korrekt! En gissning = Slump, fusk eller ren bondtur! ---Hemligt tal : 76--- Det hemliga talet ligger mellan 1 och 100 Gissa : 50 För lågt! Gissa : 500 Du kan bara gissa på tal i intervallet 1..100 Gissa : 200 Du kan bara gissa på tal i intervallet 1..100 Gissa : 82 För högt! Gissa : 76 Helt korrekt! Du gissade 3 gånger. Som du ser i exemplen ovan kan det vara bra att skriva ut det hemliga talet medan du testkör. Filen som du skapar måste heta hilo.c och ska läggas i din provkatalog. 4(6)

Uppgift 3 (9 poäng) En kortlek innehåller 13 kort (ess [1], två, tre,..., tio, knekt [11], dam [12], kung [13]) i var och en av fyra färger (klöver, hjärter, ruter och spader). Genom att bestämma någon lämplig numrering av korten kan varje kort identifieras som ett heltal mellan 0 och 51. Bestäm en numrering av korten och skriv funktionerna kortfarg och kortvalor som tar ett korts nummer som argument och returnerar dess färg (som ett heltal 0..3) respektive valör (som ett heltal 1..13). int kortfarg(int kort) int kortvalor(int kort) Skriv också en funktion som givet färgnummer (0..3) och valör (1..13) returnerar kortnumret i den ovan bestämda uppräkningen. int ordningsnummer(int farg, int valor) I vissa kortspel (poker t.ex.) är det intressant att veta om alla korten kommer från samma färg (klöver, hjärter, ruter eller spader). Skriv en funktion som kontrollerar detta. Som parametrar ska den ha listan med kort (int hand[]) och antalet kort i handen (int n). int farg(int hand[], int n) Skriv lämpliga anrop i main som visar att funktionerna fungerar. Du får själv sätta ihop lämpliga testhänder, men du kan inte utgå ifrån att de är sorterade från start. För att kunna kontrollera testerna måste du också på något sätt redovisa din numrering av korten, någon typ av tabellutskrift är lämpligt. Skriv en funktion som gör detta. void skrivuttabell(void) Utskriften bör naturligtvis vara rimligt organiserad så att du inte bara kopierar ut ett antal rader med strängar, t.ex. printf( E 2 3 4 5 6 7 8 9 10 Kn D K ); osv. Om du för övrigt tycker att du har nytta av andra rutiner får du gärna skriva fler än de ovan uppräknade. Filen som du skapar måste heta kortlek.c och ska läggas i din provkatalog. 5(6)

Uppgift 4 (10 poäng) Palindrom är en sträng som blir densamma läst framlänges eller baklänges. Palindrom är t.ex. "Sirap i Paris", "Kajak" och "Anna" men inte Eva eller "Programmeringsteknik". Enklast blir det om man gör lite förarbete innan man börjar jämförelserna. I den här uppgiften nöjer vi oss med att hantera strängar som bara innehåller bokstäverna a-z, A-Z och blanktecken. Då blir det enklare om man först tar bort alla blanktecken, sedan gör om alla bokstäver till stora och därefter jämför, första tecknet med det sista, andra tecknet med det näst sista, osv. Skriv ett program som läser in och kontrollerar om en sträng är ett palindrom. Uppgiften ska lösas med hjälp av funktioner. Skriv därför funktioner för följande uppgifter: ta bort alla blanka ur en sträng konvertera alla bokstäver till versaler (stora bokstäver) i en sträng kontrollera om en sträng är ett palindrom läs in en rad från tangentbordet Programmet skall läsa in en sträng, kontrollera den, meddela om det är ett palindrom eller ej och sedan fråga efter en ny sträng till dess att användaren är nöjd. Ett exempel (med spårutskrifter för att visa vad som händer) Ge en sträng anna Inläst sträng -----anna----- Avblankad sträng -----anna----- Unifierad sträng -----ANNA----- Palindrom Ge en sträng Ni talar bra latin Inläst sträng -----Ni talar bra latin----- Avblankad sträng -----Nitalarbralatin----- Unifierad sträng -----NITALARBRALATIN----- Palindrom Ge en sträng Kul att programmera Inläst sträng -----Kul att programmera----- Avblankad sträng -----Kulattprogrammera----- Unifierad sträng -----KULATTPROGRAMMERA----- First=K Last=A Ej palindrom Tips! I biblioteken som inkluderas med #include <string.h> #include <ctype.h> finns många användbara funktioner. T.ex. så kan man med hjälp av funktionen strlen få fram längden hos en sträng. Filen som du skapar måste heta palindrom.c och ska läggas i din provkatalog. 6(6)