Institutionen för Kommunikation och Information Tentamen i ...
Institutionen för Kommunikation och Information Tentamen i ...
Institutionen för Kommunikation och Information Tentamen i ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>Institutionen</strong> <strong>för</strong> <strong>Kommunikation</strong> <strong>och</strong> <strong>Information</strong><br />
Uppgift 1 (20p)<br />
Ett antal begrepp har tagits upp under kursen. Din uppgift blir att ut<strong>för</strong>ligt redogöra <strong>för</strong><br />
följande begrepp relaterade till programmering:<br />
• Programsatser<br />
• Instans<br />
• Tilldelning<br />
• Exekvera<br />
• Kompilera<br />
• Pekare<br />
• Funktion<br />
• Argument<br />
• Villkor<br />
• Index<br />
Uppgift 2 (16p)<br />
När kod skapas är användandet av algoritmer centralt.<br />
a) (2p) Beskriv i detalj vad en algoritm kännetecknar.<br />
b) (4p) Förklara i detalj några egenskaper som en bra algoritm ska innehålla.<br />
c) (4p) Beskriv med hjälp av dina egna ord <strong>för</strong> att byta ordning på ett antal heltal<br />
som lagras i en array. Alltså, om en given lista av värden ges som input, t.ex. (1,<br />
2, 3, 4, 5) skall ouput från din algoritm vara listan (5, 4, 3, 2, 1).<br />
d) (6p) Under kursen har olika typer av sökningsalgoritmer diskuterats, både under<br />
<strong>för</strong>eläsningarna <strong>och</strong> i kurslitteraturen. Din uppgift är att välja en av dessa<br />
algoritmer <strong>och</strong> med egna ord <strong>för</strong>klara:<br />
• Hur den fungerar<br />
• Vilka <strong>för</strong>utsättningar som måste uppfyllas<br />
• Algoritmens <strong>för</strong>delar <strong>och</strong> brister<br />
<strong>Tentamen</strong> i Procedurell programmering<br />
17/5-08. 14:30-19:30
<strong>Institutionen</strong> <strong>för</strong> <strong>Kommunikation</strong> <strong>och</strong> <strong>Information</strong><br />
Uppgift 3 (10p)<br />
Procedurer <strong>och</strong> funktioner är centralt att använda då man skapar program vid procedurell<br />
programmering.<br />
a) (4p) Vilka <strong>för</strong>delar kan uppnås genom att dela upp programkod i procedurer <strong>och</strong><br />
funktioner?<br />
Under kursen har vi insett betydelsen av hur data struktureras i ett program, både under<br />
<strong>för</strong>eläsningarna <strong>och</strong> i kurslitteraturen. Vi har lärt oss använda datastrukturerna array <strong>och</strong><br />
struct (record i Pascal).<br />
b) (2p) Beskriv skillnaden mellan datastrukturen array <strong>och</strong> struct.<br />
c) (4p) Ge ett kort kodexempel som illustrerar en situation då det är lämpligt att<br />
strukturera datan med hjälp av en array. Kommentera din kod.<br />
Uppgift 4 (10p)<br />
Under kursen har statisk <strong>och</strong> dynamisk minneshantering diskuterats, både under<br />
<strong>för</strong>eläsningarna <strong>och</strong> i kurslitteraturen.<br />
a) (4p) Redogör <strong>för</strong> likheter <strong>och</strong> skillnader mellan en pekare <strong>och</strong> en vanlig, statisk,<br />
variabel.<br />
b) (2p) Nämn en <strong>för</strong>del med att använda pekare.<br />
c) (4p) En statisk variabel kan antingen vara global eller lokal. Redogör <strong>för</strong><br />
skillnaden mellan dessa typer av variabler samt när det kan vara <strong>för</strong>delaktigt att<br />
använda den ena eller den andra.<br />
<strong>Tentamen</strong> i Procedurell programmering<br />
17/5-08. 14:30-19:30
<strong>Institutionen</strong> <strong>för</strong> <strong>Kommunikation</strong> <strong>och</strong> <strong>Information</strong><br />
Uppgift 5 (20p)<br />
Ett av kursens delmål är att Du ska efter genom<strong>för</strong>d kurs kunna ”redogöra <strong>för</strong> det<br />
procedurella paradigmets <strong>för</strong> <strong>och</strong> nackdelar” (ur Kursplan). Du ska i denna uppgift visa<br />
att du uppfyller detta syfte.<br />
a) (2p) Beskriv ut<strong>för</strong>ligt vad ett programmeringsparadigm är.<br />
b) (6p) Redogör noggrant <strong>för</strong> det procedurella paradigmets ansats då det gäller att<br />
angripa <strong>och</strong> lösa ett programmeringsproblem.<br />
c) (4p) Beskriv ut<strong>för</strong>ligt det deklarativa paradigmet <strong>och</strong> jäm<strong>för</strong> med det<br />
procedurella.<br />
d) (2p) Beskriv ett problem som sannolikt skulle passa <strong>för</strong> ett typiskt deklarativt<br />
programmeringsspråk.<br />
e) (6p) Beskriv med egna ord grundtankarna i det objektorienterade paradigmet. Ditt<br />
svar ska minst diskutera <strong>och</strong> <strong>för</strong>klara begreppen inkapsling, arv, klass <strong>och</strong> objekt.<br />
Uppgift 6 (24p)<br />
Ett av kursens delmål är att Du efter genom<strong>för</strong>d kurs ska kunna ”Strukturera <strong>och</strong><br />
använda egna datatyper samt utifrån ett enklare givet problem skapa ett procedurellt<br />
program som löser detsamma” (ur Kursplan).<br />
Din kompis Sven Mojäng har ett stort intresse <strong>för</strong> Black Jack <strong>och</strong> har där<strong>för</strong> anlitat dig<br />
<strong>för</strong> att utveckla ett program som låter användaren spela Black Jack mot datorn. Spelet går<br />
ut på att få summan av alla kort så nära 21 som möjligt utan bli ”tjock”, dvs. få över 21.<br />
Programmet måste där<strong>för</strong> kunna hantera minst 5st kortlekar där varje lek består av 52st<br />
kort. Varje kort tillhör färgen spader, klöver, hjärter eller ruter <strong>och</strong> har en valör mellan 2<br />
<strong>och</strong> 14. Kort med valör 11 kallas <strong>för</strong> knekt, 12 <strong>för</strong> dam, 13 <strong>för</strong> kung <strong>och</strong> 14 <strong>för</strong> ess.<br />
Exempel på två olika kort är spader 8 <strong>och</strong> ruter knekt. Du kan <strong>för</strong>utsätta att kortleken inte<br />
har några jokrar.<br />
Din uppgift är att skriva ett program som strukturerar <strong>och</strong> organiserar den data som<br />
kortlekarna utgör på ett bra sätt samt möjligheten att låta användaren spela Black Jack<br />
minst en gång mot datorn innan programmet avslutas. Du behöver endast redovisa den<br />
källkod i C++ som implementerar din lösning. Dock ska lösningen vara väl<br />
dokumenterad <strong>och</strong> kommenterad. Är det någon information Du saknar, så gör egna<br />
antaganden. Glöm dock inte att tydligt redovisa dessa antaganden.<br />
<strong>Tentamen</strong> i Procedurell programmering<br />
17/5-08. 14:30-19:30