Tentamen i. Programmering i språket C

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

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 28 maj 2011

Tentamen i Programmering grundkurs och Programmering C

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

Tentamen i. Programmering i språket C

Tentamen i Programmering grundkurs och Programmering C

Tentamen i Programmering grundkurs och Programmering 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

Tentamen i Programmering grundkurs och Programmering C

Kompilatorer och interpretatorer

Kompilatorer och interpretatorer

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

Tentamen i Programmering grundkurs och Programmering C

Databasteknik för D1, SDU1 m fl

Databasteknik för D1, SDU1 m fl

HI1024 Programmering, grundkurs TEN

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,

PDA-applikationer med.net

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,

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

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

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

Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då

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

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

HI1024 Programmering, grundkurs TEN

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

Beräkningsvetenskap föreläsning 2

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

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

Tentamen ges för: Tentamensdatum: Tid:

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

HI1024 Programmering, grundkurs TEN

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

HI1024 Programmering, grundkurs TEN

TDDC77 Objektorienterad Programmering

KOMPLETTERANDE HEMTENTAMEN TDDB53

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

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

Tentamen ID1004 Objektorienterad programmering April 7, 2015

Planering Programmering grundkurs HI1024 HT 2014

Tentamen i Programmering

Användarhandledning Version 1.2

Planering Programmering grundkurs HI1024 HT TIDAA

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

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

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

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

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

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

Tentamen Grundläggande programmering

Tentamen *:58/ID100V Programmering i C Exempel 3

kl Tentaupplägg

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

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

729G04 Programmering och diskret matematik

Tentamen i Objektorienterad Programmering 5p, Au, D, Fri, Pr,

Planering Programmering grundkurs HI1024 HT data

Här hittar du ett exempel på ritprogrammet:

kl Tentaupplägg

OOP Tentamen

HI1024 Programmering, grundkurs TEN

Grunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY

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

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,

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

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

Grundläggande programmering med C# 7,5 högskolepoäng. Provmoment: Ladokkod: Tentamen ges för: TEN1 NGC011 ADAEK17, ASYST17 samt öppen för alla

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Efternamn förnamn pnr årskurs

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

Tentamen i Grundläggande programmering STS, åk

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

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

Tentamen, EDAA10 Programmering i Java

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

TDIU Regler

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

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

TENTAMEN OOP

Uppgift 1 (grundläggande konstruktioner)

Tentamen i Introduktion till programmering

Enkla datatyper minne

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

Repetition C-programmering

AVR 5. Styrning av trafikljus. Digitala system 15 p

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

Transkript:

1 of 6 Örebro universitet Akademin för naturvetenskap och teknik Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se) Tentamen i Programmering i språket C för D1 m fl, även distanskursen lördag 25 februari 2012 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 20 poäng. Resultat och lösningar: Återlämning av tentor: Examinator och jourhavande: Meddelas via e-post eller på kursens hemsida, http://basen.oru.se /kurser/c/2011-2012-p2/, senast lördag 17 mars 2012. Efter att resultatet meddelats kan tentorna hämtas på universitetets centrala tentamensutlämning. 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 6 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 6 Uppgift 1 (1 p) Vilka värden har följande C-uttryck? a) 1 + 2 * 3 b) 1-2 - 3 c) 1-2 / 3 d) 1 < 2-3 Uppgift 2 (1 p) Variablerna a, b och c är av typen int, och variabeln x är av typen float. Vilka värden har variablerna efter att följande kod har körts? a = 1; b = a + 1; c = b + 1; x = c + 1; if (a < b) { while (b < c) ++b; x = x + c; } Uppgift 3 (3 p) Skriv ett komplett C-program (med #include och allt) som läser in två heltal. Om bägge heltalen är lika med 17 ska programmet skriva Sjutton!. Annars ska programmet skriva ut de två heltalen, men i omvänd ordning, alltså med det sist inmatade talet först. I den här och alla andra uppgifter på tentan gäller: Normalt är felhantering en stor del av ett program. Vad ska till exempel hända om användaren skriver Kalle när hon egentligen borde mata in ett tal? Här behövs dock ingen felhantering, om så inte särskilt efterfrågas i uppgiften. Uppgift 4 (2 p) Skriv en funktion, samma_inmatade_tal, som tar ett heltal som argument, och som också låter användaren mata in ett heltal. Om dessa båda tal är lika, ska funktionen returnera ett sant värde. Annars ska funktionen returnera ett falskt värde.

4 of 6 Uppgift 5 (1 p) Vi vill kontrollera om användaren matar in talet 42. Skriv en main-funktion som anropar funktionen samma_inmatade_tal med 42 som argument, och om samma_inmatade_tal returnerar ett sant värde ska main skriva ut Ja. Annars ska main skriva ut Nej. I den här och alla andra uppgifter på tentan gäller: Om du behöver 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. Uppgift 6 (6 p) På en Lotto-bricka finns det 35 nummer, numrerade från 1 till 35. Man ska välja sju av dessa. Man får bara välja varje nummer en gång. Skriv ett C-program som läser in en lottorad bestående av sju heltal, och talar om ifall det är en tillåten rad. Det som ska kontrolleras är: Är alla talen mellan 1 och 35? Står talen i nummerordning? Förekommer talen bara en gång var? Man kan förutsätta att användaren alltid matar in sju riktiga heltal. Ett exempel på en tillåten lottorad är 7 10 16 23 26 27 35. Tre exempel på lottorader som inte är tillåtna är 7 10 16 23 26 27 36, 7 10 16 23 26 27 27 och 7 10 16 23 26 35 27. Uppgift 7 (1 p) När man ritar bilder med en dator använder man för det mesta pixelgrafik, där ytan som ska ritas upp delas in i bildpunkter, och varje bildpunkt har en färg och ljusstyrka som anges med hjälp av tre färgvärden: rött, grönt och blått. Man kan tänka sig att det sitter tre små lampor i varje bildpunkt: en röd lampa, en grön lampa och en blå lampa. Därför behövs det tre tal för att beskriva färgen på varje bildpunkt. Vi tänker oss att vi anger färgerna med flyttal som kan variera från 0 (helt släckt) till 1 (maximal ljusstyrka). Exempelvis betyder taltrippeln 0.5-0-0 en halvstarkt lysande röd färg, eftersom den "röda lampan" är halvtänd och de gröna och blå "lamporna" är släckta. Skapa posttypen Pixel. Den innehåller tre flyttal, som anger de tre färgernas värden för den bildpunkten.

5 of 6 Uppgift 8 (1 p) Definiera en variabel av typen struct Pixel och initiera den med den halvstarkt lysande röda färgen från uppgiften ovan. Uppgift 9 (2 p) Skriv en funktion som heter equal_colours, som jämför två Pixel-poster och returnerar ett sant värde om de har samma färg. I annat fall ska den returnera ett falskt värde. Uppgift 10 (1 p) När man ska rita upp saker behövs förstås en hel masssa bildpunkter. Skapa därför posttypen Canvas som ska användas för att beskriva en rityta som är 1000 gånger 1000 bildpunkter stor. (Det engelska ordet "canvas" betyder ungefär "målarduk".) Använd först #define för att definiera makrona CANVAS_WIDTH och CANVAS_HEIGHT, som båda ska ha värdet 1000. Definiera därefter posttypen Canvas, som är en post som innehåller en 1000x1000-matris av Pixel-poster. Tips: En matris, eller tvådimensionell array, är helt enkelt en array av arrayer. Kom ihåg hur man skapar en array: int a[17] är en array av 17 stycken heltal. int m[20][30] är en 20x30- matris av heltal. På samma sätt som man kan komma åt plats 3 i arrayen a genom att skriva a[3], kan man komma åt plats (5, 7) i matrisen m genom att skriva m[5][7]. Uppgift 11 (3 p) Skriv en funktion som heter solid, som fyller en hel Canvas med samma färg. Den ska ta två parametrar: dels en pekare till en Canvas-post, och dels en Pixel-post. Funktionen ska sätta alla bildpunkterna i ritytan så de får samma färg som den medskickade bildpunkten. Uppgift 12 (3 p) Skriv en funktion som heter border, som ritar en ram längs kanten av en Canvas. Den ska ta två parametrar: dels en pekare till en Canvas-post, och dels en Pixel-post. Funktionen ska sätta alla de yttersta bildpunkterna längs kanten på ritytan så de får samma färg som den medskickade bildpunkten.

6 of 6 Uppgift 13 (3 p) Skriv en funktion som heter equal_canvases, som jämför två Canvas-poster och returnerar ett sant värde om de är lika, dvs om varje bildpunkt i den ena ritytan har samma färgvärde som bildpunkten på samma plats i den andra ritytan. I annat fall ska den returnera ett falskt värde. Använd funktionen equal_colours för att jämföra färgerna på bildpunkterna. Uppgift 14 (2 p) Skriv en main-funktion som har två lokala variabler av typen struct Canvas. Den ska börja med att först göra den ena ritytan enfärgad med hjälp av funktionen solid. Sedan ska den rita en ram med en annan färg på den ritytan med hjälp av funktionen border. Sedan ska den göra samma sak med den andra ritytan. Som avslutning ska den använda funktionen equal_canvases för att kontrollera att de båda ritytorna verkligen ser likadana ut. Om de inte gör det ska den skriva ut Fel! Olika!. Om de är lika ska inget skrivas ut. Uppgift 15 (10 p) a) (4p) Skriv en funktion save_canvas som tar två parametrar: en Canvas-post (eller, om du vill, en pekare till den) och en textsträng. Funktionen ska öppna filen med det angivna namnet, skriva ritytans data på den i något lämpligt format, och sedan stänga filen. Om filen inte går att öppna för skrivning, ska ett felmeddelande skrivas ut, och programmet ska avslutas. b) (4p) Vi vill förstås också ha en funktion som kan läsa in ritytan från filen. Skriv den funktionen. Den ska heta read_canvas. Om filen inte går att öppna för läsning, ska ett felmeddelande skrivas ut, och programmet ska avslutas. c) (2p) Nu vill vi provköra funktionerna save_canvas och read_canvas. Skriv en main-funktion som först sparar en rityta på en fil med hjälp av save_canvas, och sen läser in den med read_canvas. Därefter ska den använda funktionen equal_canvases för att kontrollera att den inlästa ritytan är likadan som den vi sparade på filen. Om de inte lika ska den skriva ut Fel! Olika!. Om de är lika ska inget skrivas ut.