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 Programmering grundkurs och Programmering C

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

Tentamen i. Programmering i språket C

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 grundkurs och Programmering C

Tentamen i. Programmering i språket 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

Kompilatorer och interpretatorer

Databasteknik för D1, SDU1 m fl

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

Kompilatorer och interpretatorer

Databasteknik för D1, SDU1 m fl

PDA-applikationer med.net

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

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

729G04 Programmering och diskret matematik TEN kl 8-12

TDDC77 Objektorienterad Programmering

Användarhandledning Version 1.2

Tentamen ges för: Tentamensdatum: Tid:

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

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

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

729G74 - IT och programmering, grundkurs. Dugga.

Planering Programmering grundkurs HI1024 HT 2014

Tentamen, EDAA10 Programmering i Java

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,

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

HI1024 Programmering, grundkurs TEN

Tentamen i Programmering

TDDI14 Objektorienterad programmering

729G04 Programmering och diskret matematik TEN kl 8-12

TDIU01 - Programmering i C++, grundkurs

729G04 Programmering och diskret matematik

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

Beräkningsvetenskap föreläsning 2

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

tentaplugg.nu av studenter för studenter

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

Tentamen Grundläggande programmering

INFORMATIK - MED SYSTEMVETENSKAPLIG INRIKTNING, GRK/A (1-30 HP)

Laboration 2 i Styrteknik

Planering Programmering grundkurs HI1024 HT TIDAA

Uppgift 1 (vadå sortering?)

Programmeringsteknik med C och Matlab

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??

LÖSNINGSFÖRSLAG TENTAMEN

INFORMATIK - MED SYSTEMVETENSKAPLIG INRIKTNING, GRK/A (1-30 HP)

Tentamen i Introduktion till programmering

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

Övningsuppgifter kapitel 8

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

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

Föreläsning 6 pekare och pekare tillsammans med arrayer

Introduktion till programmering, hösten 2011

LabelLogic. Bruksanvisning. Innehåll. Label Choices. Data Library. Print Centre. Design Centre

Tentamen *:58/ID100V Programmering i C Exempel 3

Tentamen OOP

Programmeringsteknik med C och Matlab

INFORMATIK - MED SYSTEMVETENSKAPLIG INRIKTNING, GRK/A (1-30 HP)

Tentamen TEN1 HI

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

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

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

Planering Programmering grundkurs HI1024 HT data

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

Tentamen TEN1 HI

Klassdeklaration. Metoddeklaration. Parameteröverföring

Programmering. Scratch - grundövningar

Uppgift 1 ( Betyg 3 uppgift )

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

729G04 Programmering och diskret matematik

HI1024 Programmering, grundkurs TEN

TENTAMEN OOP

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

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

Inledande programmering med C# (1DV402) Summera med while"-satsen

Uppgifter teknik HT17 (uppdaterad v. 40)

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

HI1024 Programmering, grundkurs TEN

HI1024 Programmering, grundkurs TEN

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Värmedistribution i plåt

Lär dig programmera! Prova på programmering med enkla exempel! Björn Regnell

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

Transkript:

1 of 6 Örebro universitet Akademin för naturvetenskap och teknik Thomas Padron-McCarthy (Thomas.Padron-McCarthy@oru.se) Tentamen i Programmering grundkurs och Programmering C för D1 m fl, även distanskursen torsdag 20 augusti 2009 kl 8:15-13:15 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 30. För godkänt betyg (3 respektive G) krävs 15 poäng. Resultat och Meddelas via e-post eller på campuskursens hemsida, lösningar: http://www.aass.oru.se/~tpy/c/2008-2009-p2/, senast torsdag 10 september 2009. Återlämning av Efter att resultatet meddelats kan tentorna hämtas på institutionen. tentor: Man kan också få sin rättade tenta hemskickad. Examinator och Thomas Padron-McCarthy, telefon 070-73 47 013. jourhavande: 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 Scenario till uppgifterna Det här är en tvättmaskin: Nu är just den tvättmaskinen förmodligen inte datorstyrd, men mer moderna tvättmaskiner innehåller ofta en liten inbyggd dator som styr motor, värme och ventiler, beroende på vilket tvättprogram som användaren ställt in. Den datorn har för det mesta begränsat med processorkraft och minne, och programmeras ofta i C. Ett tvättprogram (som inte ska förväxlas med ett datorprogram!) består av ett antal programsteg, som utförs efter varandra. Det finns inga val eller loopar, utan programstegen i ett tvättprogram utförs alltid i samma sekvens. Ett programsteg kan vara till exempel vattenpåfyllning, sköljning eller centrifugering.

4 of 6 Uppgift 1 (3 p) Ett programsteg har ett namn på högst trettio tecken, till exempel Centrifugering. Samma namn (till exempel Sköljning) kan förekomma flera gånger i samma tvättprogram. För programsteget anger man dessutom följande uppgifter: Tid, som är hur många sekunder programsteget ska vara. Centrifugeringen kanske ska pågå i två minuter, och då anges tiden som 120. Temperatur, som är ett heltal som anger vilken temperatur (mätt i vanliga Celsiusgrader) som vattnet ska värmas till. Det finns en termostat som stänger av värmen när vattnet nått den temperaturen. Värdet noll betyder att värmen är avstängd hela tiden. (I alla fall om man inte fyllt maskinen med isbitar som är kallare än noll grader!) Trumfart, som anger med vilken fart trumman ska snurra under programsteget, mätt i antal varv per sekund. Det är ett flyttal. Inpumpning, som anger om maskinen ska släppa in vatten eller inte. Det finns ingen nivågivare eller mätare för vattenmängden, utan mängden vatten som ska släppas in styrs med hjälp av tiden för programsteget. Utpumpning, som anger om tömningspumpen ska vara igång eller inte. Det finns ingen givare som talar om när maskinen är tom, utan mängden vatten som ska pumpas ut styrs med hjälp av tiden för programsteget. Skapa posttypen struct Programsteg, som används för att lagra data om ett programsteg. Uppgift 2 (3 p) Skriv funktionen visa_ett_programsteg, som skriver ut data om ett programsteg på skärmen. (Nu har tvättmasinen nog ingen vanlig skärm, men det struntar vi i nu.) Utskriften behöver inte se ut exakt så här, men samma informationen ska finnas med: Centrifugering: 30 sekunder, 0 grader, 10.00 varv/s, in: AV, ut: PÅ Uppgift 3 (3 p) Ett tvättprogram har ett namn på högst trettio tecken, till exempel Kulörtvätt. Tvättprogrammet består av ett antal programsteg enligt uppgiften ovan, högst 100 stycken. Skapa posttypen struct Program, som används för att lagra data om ett tvättprogram (namnet och alla programstegen).

5 of 6 Uppgift 4 (3 p) Skriv funktionen visa_ett_program, som skriver ut ett helt tvättprogram på skärmen. Funktionen ska anropa funktionen visa_ett_programsteg. Utskriften behöver inte se ut exakt så här, men samma informationen ska finnas med: Tvättprogrammets namn: Snabbtvätt 13 programsteg: 1. Vattenpåfyllning: 30 sekunder, 0 grader, 0.00 varv/s, in: PÅ, ut: AV 2. Tvättning: 300 sekunder, 40 grader, 1.50 varv/s, in: AV, ut: AV 3. Vattentömning: 30 sekunder, 0 grader, 0.00 varv/s, in: AV, ut: PÅ 4. Centrifugering: 30 sekunder, 0 grader, 10.00 varv/s, in: AV, ut: PÅ 5. Vattenpåfyllning: 30 sekunder, 0 grader, 0.00 varv/s, in: PÅ, ut: AV 6. Sköljning: 300 sekunder, 0 grader, 1.00 varv/s, in: AV, ut: AV 7. Vattentömning: 30 sekunder, 0 grader, 0.00 varv/s, in: AV, ut: PÅ 8. Centrifugering: 30 sekunder, 0 grader, 10.00 varv/s, in: AV, ut: PÅ 9. Vattenpåfyllning: 30 sekunder, 0 grader, 0.00 varv/s, in: PÅ, ut: AV 10. Sköljning: 300 sekunder, 0 grader, 1.00 varv/s, in: AV, ut: AV 11. Vattentömning: 30 sekunder, 0 grader, 0.00 varv/s, in: AV, ut: PÅ 12. Centrifugering: 30 sekunder, 0 grader, 10.00 varv/s, in: AV, ut: PÅ 13. Slutcentrifugering: 60 sekunder, 0 grader, 20.00 varv/s, in: AV, ut: PÅ Uppgift 5 (6 p) Tvättprogrammen lagras på filer. Här är till exempel innehållet i filen snabbtvätt.txt, som innehåller tvättprogrammet Snabbtvätt, ett tvättprogram vi känner igen från uppgiften ovan: Snabbtvätt Vattenpåfyllning 30 0 0.0 1 0 Tvättning 300 40 1.5 0 0 Vattentömning 30 0 0.0 0 1 Centrifugering 30 0 10.0 0 1 Vattenpåfyllning 30 0 0.0 1 0 Sköljning 300 0 1.0 0 0 Vattentömning 30 0 0.0 0 1 Centrifugering 30 0 10.0 0 1 Vattenpåfyllning 30 0 0.0 1 0 Sköljning 300 0 1.0 0 0 Vattentömning 30 0 0.0 0 1 Centrifugering 30 0 10.0 0 1 Slutcentrifugering 60 0 20.0 0 1 (Egentligen har tvättmasinen nog ingen hårddisk med filer, men det struntar vi i nu.) Skriv en funktion som heter las_ett_program, som tar ett filnamn som argument, öppnar filen och läser in det tvättprogram som finns på filen, och på lämpligt sätt returnerar tvättprogrammet till den anropande funktionen. Det är tillåtet att göra en hjälpfunktion som heter las_ett_programsteg, men det är inget krav.

6 of 6 Uppgift 6 (2 p) a) För att lagra de inlästa tvättprogrammen behöver vi en array av tvättprogram. Skapa därför variabeln alla_program, som är en array av 100 stycken struct Program. Skapa också en heltalsvariabel som heter antal_program, som får startvärdet noll, och som anger antalet poster som vi lagrat i den arrayen. b) Men behöver vi verkligen variabeln antal_program? Vi har ju redan angett en storlek på arrayen? Förklara! Uppgift 7 (5 p) En fil med namnet tvättprogram.txt innehåller filnamnen på alla filer med tvättprogram som tvättmaskinen har: snabbtvätt.txt ylletvätt.txt kulörtvätt.txt fintvätt.txt vittvätt.txt Skriv en funktion som heter las_alla_program, som öppnar den filen, läser in de filnamn som finns på filen, och sen använder funktionen las_ett_program för att läsa in alla de olika tvättprogrammen. Tvättprogrammen ska hamna i variabeln alla_program. Uppgift 8 (2 p) Skriv en funktion som heter visa_alla_program, som helt enkelt skriver ut alla tvättprogrammen i alla_program. Den ska anropa funktionen visa_ett_program Uppgift 9 (2 p) För att provköra alltihop behöver vi en main-funktion som först anropar las_alla_program och sen visa_alla_program. Skriv den! Uppgift 10 (1 p) Vi samlar ihop hela tentasvaret till ett komplett C-program. Vilka #include-rader behövs i början av programmet?