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 lösningar: | Meddelas via e-post eller på campuskursens hemsida, http://www.aass.oru.se/~tpy/c/2008-2009-p2/, senast torsdag 10 september 2009. |
Återlämning av tentor: | Efter att resultatet meddelats kan tentorna hämtas på institutionen. Man kan också få sin rättade tenta hemskickad. |
Examinator och jourhavande: | Thomas Padron-McCarthy, telefon 070-73 47 013. |
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 |
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.
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Å
Skapa posttypen struct Program, som används för att lagra data om ett tvättprogram (namnet och alla programstegen).
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Å
(Egentligen har tvättmasinen nog ingen hårddisk med filer, men det struntar vi i nu.)
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
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.
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!
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.
snabbtvätt.txt ylletvätt.txt kulörtvätt.txt fintvätt.txt vittvätt.txt
Tvättprogrammen ska hamna i variabeln alla_program.