2015-06-10.kl.14-19 (TDDC68/TDDD11)

2015-06-09.kl.14-19
Tentaupplägg
TIPS 1:
Läs igenom ALLA uppgifterna. Välj den du känner är lättast först. Det kan gärna ta 10-20 minuter.
Försök skriva saker som kan vara problem i uppgifterna. Är det något du absolut kommer att fastna
på så kanske det är fel uppgift att ge sig på. Tiden du lägger på att noga läsa uppgifterna tjänar du in
på att välja rätt uppgift.
TIPS 2:
Kolla ibland till kommunikationsfönstret. Det kan ha kommit information till alla utan att ni skickat
in en fråga. Kanske gäller det dig också (d.v.s. den uppgift du jobbar med).
TIPS 3:
Sista timmen är vi normalt sett lite tydligare och ger lite "bättre" återkoppling på era fel. Före detta
kan man få högre betyg, så då får ni själva leta reda på vad som skall rättas till. Under hela tentan
ger vi dock information om vilket symptom felet uppvisar om vi kompletterar. Om ni är nära G
tidigt på tentan kan detta kanske ge G i slutet (vi meddelar detta i så fall). Har ni fått ett meddelande
om att detta kan ge betyg 3, men inte högre i kombination med andra uppgifter och ni är nöjda med
betyg 3 och vill gå kan ni alltid skicka ett meddelande till oss så blockerar vi de övriga uppgifterna
så att du kan få ditt betyg och gå.
TIPS 4:
Om ni har problem med kompilator, Emacs eller annat som INTE har med uppgifterna att göra, räck
upp handen så kommer en assistent. Detsamma gäller om hur man kopierar givna filer
" cp given_files/* . " eller liknande.
Frågor om själva uppgifterna tar vi i första hand via tentasystemet.
Vi hinner inte svara på frågor de sista 10 minutrarna på tentan. Då ägnar vi all tid åt att rätta uppgifter
för att alla skall hinna få svar innan ni går hem. Om det är så att ni skickar in en uppgift precis i slutet
av tentan hinner vi förstås inte, men då får ni gärna skicka ett mail för att få reda på hur det gick.
Vi rapporterar in resultaten så fort vi kan efter tentan. Det tar ett par dagar med pappershantering efter
detta så räkna med att de är i LADOK om ca en vecka. Kolla med era kompisar om de fått poäng innan
ni skickar mail till oss.
Betygsgränser:
1 uppg
2 uppg
2 uppg
3 uppg
19:00
18:00
16:30
18:00
Betyg 3
Betyg 4
Betyg 5
Betyg 5
Lycka till med tenterandet och hoppas att alla får G på minst en uppgift idag.
M.v.h.
/Torbjörn (examinator)
2015-06-09.kl.14-19
Uppgift 1 (Hur stor är filen?)
Skriv ett program som tar reda på hur stor en fil är. Med storlek menar vi här arean, där denna
definieras som A = H * B, där H är höjden på filen (d.v.s. antal rader) och B är bredden på filen (d.v.s
längden av den längsta raden i filen).
Körexempel:
Mata in namnet på filen: MIN_FIL.TXT
Filen "MIN_FIL.TXT" har arean 33.
TIPS: Du kan utgå ifrån att filnamnet inte är längre än 32 tecken.
2015-06-09.kl.14-19
Uppgift 2 (Skidåkning i terminalen)
Skriv ett program som visar en animation av skidåkning. Programmet skall be användaren mata in hur
lång animationen skall vara. Sedan skall programmet slumpa ett heltal i intervallet [1, 79]. Heltalet är
positionen (kolumnen) på vilken skidorna startar i terminalen. Därefter skall programmet skriva ut
upprepade rader (så många som användaren angav) där skidparet förflyttar sig i sidled. Raderna skall
skrivas ut med en liten fördröjning mellan varje. När skidparet når kolumn 1 eller kolumn 79 så skall
det byta riktning. Det finns ett givet körbart program skiing i mappen given_files, som visar hur detta
skall se ut
Körexempel:
Mata in skidbackens längd: 27
\\
\\
\\
\\
\\
\\
\\
\\
\\
\\
\\
\\
\\
\\
\\
\\
//
//
//
//
//
//
//
//
//
//
//
TIPS: Du kan använda satsen delay för att pausa programmet en kort stund. T.ex. följande sats:
delay 0.05;
pausar programmet i 0.05 sekunder och kan vara en lämplig fördröjning mellan det att raderna skrivs ut
i ditt program.
2015-06-09.kl.14-19
Uppgift 3 (Jämföra fält)
Skriv ett program som låter användaren mata in tal i två fält á fem platser. Gör ett underprogram för
inläsningen av fältet som du anropar från huvudprogrammet två gånger, kalla detta underprogram för
Get. Du skall sedan göra en operator "<" som jämför dessa två fält. I denna uppgift säger vi att ett fält
med fem tal A är mindre än ett annat fält med fem tal B, om alla tal i A är mindre än alla tal i B. Här är
ett förslag på ett huvudprogram (datatypen Five_Int_Array_Type får du definiera själv):
A, B : Five_Int_Array_Type;
begin
Put("Mata in talen i A (5 st): ");
Get(A);
Put("Mata in talen i B (5 st): ");
Get(B);
New_Line;
if A < B then
Put_Line("Fältet A var mindre än B.");
else
Put_Line("Fältet A var INTE mindre än B.");
end if;
end;
Körexempel 1:
Mata in talen i A (5 st): 3 4 7 9 10
Mata in talen i B (5 st): 9 10 11 4 5
Fältet A var INTE mindre än B.
Körexempel 2:
Mata in talen i A (5 st): 1 2 5 2 3
Mata in talen i B (5 st): 6 10 7 7 7
Fältet A var mindre än B.
Körexempel 3:
Mata in talen i A (5 st): 7 7 7 7 7
Mata in talen i B (5 st): 7 7 7 7 7
Fältet A var INTE mindre än B.
TIPS: Dela upp problemet. Att göra mindre underprogram som "<" anropar för att lösa problemet är
helt okej.
2015-06-09.kl.14-19
Uppgift 4 (Den rekursiva triangeln)
Skriv ett program som låter användaren mata in ett positivt heltal och skriver ut följande figur. För
upprepning får du endast använda rekursion. Inga for-, while- eller loopsatser får finnas i din kod.
Körexempel 1:
Mata in storleken på figuren: 1
1 0
0
Körexempel 2:
Mata in storleken på figuren: 2
2 1 2
1 0
0
Körexempel 3:
Mata in storleken på figuren: 5
5 4 5 4 5 4
4 3 4 3 4
3 2 3 2
2 1 2
1 0
0