Tentamen i Programmering grundkurs och Programmering C

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

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

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

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

Tentamen i. Programmering i språket C

Tentamen i Programmering grundkurs och Programmering C

Tentamen i Programmering grundkurs och Programmering C

Tentamen i Programmering grundkurs och Programmering C

Tentamen i. Programmering i språket C

Tentamen i. för D1 m fl, även distanskursen. lördag 19 januari 2013

Tentamen i Programmering grundkurs och Programmering C

Tentamen i Programmering grundkurs och Programmering C

Tentamen i Programmering grundkurs och Programmering C

Tentamen i Programmering grundkurs och Programmering C

För alla uppgifter på tentan gäller: Man får använda både standard-c++ (som till exempel har pekare som anges med * och objekt som skapas med new) och

Kompilatorer och interpretatorer

Tentamen i Programmering grundkurs och Programmering C

Kompilatorer och interpretatorer

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,

Databasteknik för D1, SDU1 m fl

Databasteknik för D1, SDU1 m fl

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

HI1024 Programmering, grundkurs TEN

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

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

HI1024 Programmering, grundkurs TEN

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

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

PDA-applikationer med.net

Tentamen i Grundläggande programmering STS, åk 1 lördag

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

Användarhandledning Version 1.2

HI1024 Programmering, grundkurs TEN

HI1024 Programmering, grundkurs TEN

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,

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

Planering Programmering grundkurs HI1024 HT 2014

Planering Programmering grundkurs HI1024 HT TIDAA

Planering Programmering grundkurs HI1024 HT data

TDDC77 Objektorienterad Programmering

Tentamen ges för: Tentamensdatum: Tid:

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN1 - Teoretisk tentamen Tid: Torsdagen den 20 oktober 2011,

Tentamen i Programmering

OOP Tentamen

Lämna in en ifylld kursvärdering tillsammans med tentan! Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl

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

Tentamen *:58/ID100V Programmering i C Exempel 3

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl

HI1024 Programmering, grundkurs TEN

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

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl 13. Omtentamen i Programmering C, 5p, A1, D1, PA1, Fri,

Beräkningsvetenskap föreläsning 2

Klassdeklaration. Metoddeklaration. Parameteröverföring

Övningsuppgifter till föreläsning 2 Variabler och uttryck

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

Uppgift 1 (grundläggande konstruktioner)

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Programmeringsteknik med C och Matlab

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

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

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

Parameteröverföring. Exempel. Exempel. Metodkropp

Grundläggande programmering med C# 7,5 högskolepoäng

Programmering för språkteknologer I, VT2012. Rum

Dynamiskt minne. Vad är dynamiskt minne Motivering Hur gör man i C Övningar

DELPROV 1 I DATAVETENSKAP

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

TDIU01 - Programmering i C++, grundkurs

Tentamen Grundläggande programmering

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.

Tentamen i Grundläggande programmering STS, åk

Uppgifter till tenta i 729G04 Programmering och diskret matematik. 17 december 2015, kl 14:00-18:00

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

LÖSNINGSFÖRSLAG TENTAMEN

729G74 - IT och programmering, grundkurs. Dugga.

tentaplugg.nu av studenter för studenter

Enkla datatyper minne

HI1024 Programmering, grundkurs TEN

kl Tentaupplägg

Tentamen ID1004 Objektorienterad programmering October 29, 2013

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

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

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

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI

729G04 Programmering och diskret matematik

Tentamen i Introduktion till programmering

TENTAMEN OOP

Inledande programmering med C# (1DV402) 85/2=42. OBS! Heltal 1 (13)

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

TDIU01 - Programmering i C++, grundkurs

KOMPLETTERANDE HEMTENTAMEN TDDB53

Tentamen ID1004 Objektorienterad programmering April 7, 2015

Uppgift (poäng) 1 (2) 2 (3) 3 (4) 4 (4) 5 (3) 6 (4) 7 (6) 8 (6) 9 (8) Summa

Transkript:

1 of 7 Örebro universitet Institutionen för teknik Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se) Tentamen i Programmering grundkurs och Programmering C för D1 m fl, även distanskursen fredag 15 januari 2010 Gäller som tentamen för: DT1016 Datateknik A, Programmering grundkurs, provkod 0100 DT1007 Datateknik A, Tillämpad datavetenskap, provkod 0410 DT1006 Datateknik A, Programmering C, distans, provkod 0100 Hjälpmedel: Inga hjälpmedel. Poängkrav: Maximal poäng är 40. För godkänt betyg (3 respektive G) krävs 23 poäng. För den som följt campuskursen hösten 2009 ger varje i tid inlämnad inlämningsuppgift med deadline en extra poäng. Den som inte gått campuskursen hösten 2009 får dessa (tre) extrapoäng ändå. Resultat och lösningar: Återlämning av tentor: Examinator och jourhavande: Meddelas via e-post eller på kursens hemsida, http://www.aass.oru.se/~tpy/c/2009-2010-p2/, senast lördag 6 februari 2010. Efter att resultatet meddelats kan tentorna hämtas på institutionen. Man kan också få sin rättade tenta hemskickad. Thomas Padron-McCarthy, telefon 070-73 47 013. Skriv tydligt och klart. Lösningar som inte går att läsa kan naturligtvis inte ge några poäng. Oklara och tvetydiga formuleringar kommer att misstolkas. Skriv den personliga tentamenskoden på varje inlämnat blad. Skriv inte namn eller personnummer på bladen. Skriv bara på en sida av papperet. Använd inte röd skrift. Antaganden utöver de som står i uppgifterna måste anges. Skriv gärna förklaringar om hur du tänkt. Även ett svar som är fel kan ge poäng, om det finns med en förklaring som visar att huvudtankarna var rätt. LYCKA TILL!

2 of 7 Prioritet och associativitet hos operatorerna i C De viktigaste operatorerna: Prioritet Kategori Operator Associativitet Högsta Unära postfixoperatorer (), [], ->,., ++, -- vänster Unära prefixoperatorer!, ++, --, +, -, *, &, sizeof, (typ) höger Multiplikation mm *, /, % vänster Addition mm +, - vänster Jämförelser <, <=, >=, > vänster Likhetsjämförelser ==,!= vänster Logiskt OCH && vänster Logiskt ELLER vänster Lägsta Tilldelning =, +=, -=, *=, /=, %= höger

3 of 7 Uppgift 1 (1 p) Vilka värden har följande uttryck? a) 1-2 - 3 + 4 b) 1-2 * 3 + 4 c) 1 / 2 + 3 % 4 d) 1 / 2.0 + 3 % 4 Uppgift 2 (1 p) x, y och z är flyttalsvariabler av typen float. Ange värdet på x, y och z när följande kod har körts. x = 1.0; y = 2.0; z = 3; if (x < y + z) z = z * 2; while (x < y + 1) { x = x * y; z = z + 1; } Uppgift 3 (1 p) Vi vill kontrollera svaret från uppgift 2 ovan. Skriv därför ett printf-anrop som skriver ut de tre variablerna x, y och z. I den här och alla andra uppgifter på tentan gäller: Om du ska använda något från en tidigare uppgift eller deluppgift, till exempel anropa en funktion som skrevs i den tidigare uppgiften, så behöver du inte skriva samma kod igen. Du får också göra uppgiften även om du inte gjort den tidigare uppgiften.

4 of 7 Uppgift 4 (2 p) Vi jobbar vidare med de tre variablerna x, y och z. p1 och p2 är variabler av typen pekare till float. a) Ange värdet på x, y och z när följande kod har körts. p1 = &x; *p1 = 3.14; p2 = &y; *p2 = *p1 * 2; p1 = &z; *p1 = *p2; p1 = p2; b) Vad pekar p1 respektive p2 nu på? Uppgift 5 (2 p) Skriv en funktion som heter max3, som tar tre flyttal av typen double som argument, och som returnerar det största av de tre talen. Uppgift 6 (3 p) Skriv en funktion som heter arraymax, som tar en array med flyttal av typen double som argument, tillsammans med ett heltalsargument som anger antalet tal i arrayen, och returnerar det största av talen i arrayen. (Vi behöver inte bry oss om fallet att arrayen innehåller noll tal.) Uppgift 7 (3 p) Vi vill provköra funktionerna max3 och arraymax från uppgifterna ovan. Skriv därför en main-funktion, som anropar dem med lämpliga argument, och skriver ut resultatet. Vi ska bara anropa varje funktion en gång, så det finns alltså bara ett enda testfall per funktion. Försök göra dessa två testfall så bra som möjligt!

5 of 7 Uppgift 8 (1 p) Fig. 1. Ett stort monster. Fig. 2. Ett litet monster. Vi ska göra ett spel med monster i. Uppgifter om monstren ska lagras i poster ("structar") av typen struct Monster. En monsterpost innehåller monstrets namn. Namnet är ett enda ord utan mellanslag, och kan innehålla upp till tio tecken, som i Stor-Fulis, men inte Makro-Fulis. Monstret har också en tuffhet, som är ett flyttal, och ett antal tänder, som är ett heltal. Definiera posttypen struct Monster. Uppgift 9 (1 p) Definiera en variabel av typen struct Monster och initiera den med data om monstret Uschlo, som har en tuffhet på 12.5 och 300 tänder. Uppgift 10 (2 p) Vi vill kunna visa monsterposternas innehåll på skärmen. Skriv en funktion som heter visa_monster, som skriver ut data om ett monster. Funktionen ska ta en monsterpost (eller, om du vill, en pekare till den) som parameter. Så här kan utskriften se ut: Namn: Uschlo Tuffhet: 12.50 Tänder: 300 Uppgift 11 (2 p) Skriv en funktion som heter las_monster, och som läser in data om ett monster. Funktionen ska skriva ut lämpliga ledtexter på standardutmatningen, och läsa in data från standardinmatningen (som normalt är kopplad till tangentbordet). Du får själv välja om du vill att funktionshuvudet ska se ut så här: struct Monster las_monster() eller så här: void las_monster(struct Monster *p)

6 of 7 Uppgift 12 (1 p) Om ett monsters tuffhet går ner under noll, har monstret dött. Skriv därför en funktion som heter lever, och som tar en monsterpost som argument (eller, om du vill, en pekare till den). Funktionen ska returnera ett sant värde om monstret lever, och ett falskt värde om det är dött. Uppgift 13 (3 p) Monstren ska kunna slåss mot varandra. Skriv därför en funktion som heter attackera, och som låter ett monster attackera ett annat. Reglerna är enkla: Det attackerande monstret försöker bita sitt stackars offer. Det har 50 procents chans att träffa med sitt bett. Om det träffar med bettet, förlorar offret lika mycket tuffhet som antalet tänder som bitaren har. Exempel: Monstret Varvulven har 36 tänder och tuffheten 99.2 Monstret Hajen har 100 tänder och tuffheten 30.5. Varulven attackerar Hajen, och träffar. Efter attacken har Hajen tuffheten -5.5. Det betyder också att Hajen dog, eftersom dess tuffhet nu är mindre än noll. Tips: Funktionen rand returnerar ett slumpmässigt heltal. Funktionen attackera ska ta två monsterposter (eller pekare till dem) som argument: det attackerande monstret, och det attackerade monstret. Uppgift 14 (4 p) Skriv en main-funktion som har två lokala variabler av typen struct Monster, och som läser in data om två monster till dessa variabler med hjälp av funktionen las_monster. Därefter ska monstren försöka attackera varandra med hjälp av två anrop till funktionen attackera. Avslutningsvis ska programmet använda funktionen visa_monster för att skriva ut data om de monster som fortfarande lever. (Använd funktionen lever för att kolla detta.) Kom ihåg: Om du ska använda något från en tidigare uppgift eller deluppgift, till exempel anropa en funktion som skrevs i den tidigare uppgiften, så behöver du inte skriva samma kod igen. Du får också göra uppgiften även om du inte gjort den tidigare uppgiften.

7 of 7 Uppgift 15 (4 p) Vi vill skapa en fil med monster på. Skriv ett C-program som upprepat läser in monster med hjälp av funktionen las_monster, och skriver alla monsterdata på en fil. Välj själv om det ska vara en text- eller en binärfil. Välj också själv hur inmatningen ska avslutas. Om filen inte går att öppna, ska programmet skriva ut ett felmeddelande om detta, och sen avslutas. Uppgift 16 (9 p) Skriv ett C-program som läser filen från uppgiften ovan, och låter monstren attackera varandra, tills endast ett monster finns i livet. Börja med att läsa in monstren till en array av monsterposter. Det ska få plats högst 1000 monster i arrayen. Om det finns fler monster på filen, ska de ignoreras, men programmet ska också skriva ut en varning om detta. Om filen inte går att öppna, ska programmet skriva ut ett felmeddelande om detta, och sen avslutas. Därefter ska monstren attackera varandra, och detta ska fortsätta tills det bara finns ett enda levande monster kvar. Avslutningsvis ska det levande monstrets data skrivas ut. Du får själv välja hur man bestämmer vilka monster som attackerar, och hur de väljer sina offer. Man kan slumpa fram det, eller alltid låta det första levande monstret i arrayen attackera det andra, eller hur du vill. Programmet ska använda sig av funktionerna attackera, lever och visa_monster.