29.07.2013 Views

Institutionen för Kommunikation och Information Tentamen i ...

Institutionen för Kommunikation och Information Tentamen i ...

Institutionen för Kommunikation och Information Tentamen i ...

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!