Exempeltentauppgifter

Introduktion till datavetenskap
HT 2009
Exempeltentauppgifter
Tobias Wrigstad
Följande frågor är representativa exempel på tentafrågor på den datavetenskapliga delen
av tentan på Intro DV-kursen. För de delar som samlästs med DSK-programmet och täcks
av fluency finns det exempeltentor här: http://tinyurl.se/rju2wx respektive här http:
//tinyurl.se/5-fmqg1 .
1. Förklara varför så många olika programmeringsspråk används i olika produktionsmiljöer.
Svar För att olika programmeringsspråk passar olika bra att lösa olika sorters uppgifter. Vissa programmeringsspråk är t.ex. bra för att rensa i stora mängder data (Perl),
göra matrisberäkningar (APL), skriva operativsystem (C), effektivt och enkelt koda
algoritmer för beräkningsanalyser (Python), göra webbsidor (PHP), säkra industriapplikationer (Java), hantera hundratusentals parallella processer (Erlang), etc.
2. Förklara vad en algoritm är. Ge ett exempel på en algoritm som du använder i din
vardag som har minst fyra diskreta steg.
Svar Se tidigare svar från instuderingsfrågorna.
3. Varför kan man säga att for-loop är ”säkrare” än en while-loop i Python, om man
inte manipulerar listan som for-loopen itererar (loopar) över?
Svar för att loopens längd är begränsad av listans längd som i regel är ändlig. (Python
har faktiskt stöd för oändligt långa listor.)
4. Om en stack är mer begränsad än en lista, inte tar upp mindre minne, etc. – varför
kan man ändå vilja använda en stack i ett program?
Svar För att det bättre matchar beteendet som man vill modellera/implementera.
5. Vad är skillnaden mellan en graf och en viktad graf? Ge ett exempel på vad vikterna
kan användas till.
Svar Se föreläsningen om grafteori.
6. Vad gör följande Python 2.5-program? (Minns att hjälpfunktionen range(a,b) skapar
en lista med a som första element av längden b, så range(0,4) = [0,1,2,3].)
tal = int(raw_input("Input a number: "))
noprime = False
for idx in range(2, tal+1):
for delare in range(2, idx+1):
if delare*idx == tal:
noprime = True
if noprime:
print "Nej!"
else:
print "Ja!"
1 Jag
har använt den fria tjänsten Tinyurl.se för att slippa milslånga URL:er.
1 av 3
Introduktion till datavetenskap
HT 2009
Exempeltentauppgifter
raw_input(...) är samma som input(...) i Python 3.0.
Svar Programmet var tyvärr trasigt (Jämför med det utlämnade!). Det var meningen
att det skulle skriva ut huruvida ett tal var ett primtal eller inte, men behandlade 1
som ett primtal, samt skrev alltid ut ”Ja!” även om det redan hade avgjort att talet
inte var ett primtal och skrivit ut ”Nej!”. Eftersom jag uppenbarligen inte kan skriva
så komplicerade program utan att göra fel (eller snarare – är för lat för att testa) så
blir programmet på tentan lättare.
7. Beskriv hur listan [1,2,6,3,0] sorteras med hjälp av bubbelsort. Resultatet blir
naturligtvis [0,1,2,3,6], men vilka är mellanstegen?
Svar Bubbelsort går igenom listan och jämför varje element med nästa, och byter plats
på dem om de inte är i sorteringsordningen. Detta görs tills listan är sorterad vilket
den är senast efter att den gåtts igenom lika många gånger som listan har element.
Mellanstegen är:
[1,
[1,
[1,
[0,
[0,
2,
2,
0,
1,
1,
3,
0,
2,
2,
2,
0,
3,
3,
3,
3,
6]
6]
6]
6]
6]
8. Vad betyder Ordo i programmeringssammanhang?
Svar Ett mått på en algoritms komplexitet (ung. de diskreta steg en algoritm kan
behöva för att bli klar) och dess (i regel värsta) körtid som en funktion av indatats
storlek.
Att söka efter något i en lista genom att gå igenom elementen ett efter ett är t.ex. något
som har s.k. linjär komplexitet vilket betyder att tiden att söka är direkt proportionell
mot indatats storlek. Det betyder att om indatats storlek dubblas så dubblas också
tiden det tar att utföra beräkningen.
9. Vad står begreppen P, N och NP för i programmeringssammanhang?
Svar P och NP är komplexitetsklasser för problem. Enkelt uttryckt är problem i klassen P sådana som går att lösa inom rimlig tid (åtminstone för små datamängder). För
problem i klassen NP gäller detta ändast när beräkningsmodellen är icke-deterministisk.
N står för icke-deterministisk. En icke-deterministisk algoritm är sådan att när den
ställs inför ett val som den inte kan veta vilket alternativ som är rätt så väljer den
alltid rätt.
10. Vad gör flödesschemat i figur 1? Skriv inte ut vad de diskreta stegen gör och exemplifiera med åtminstone A = 5 och B = 7 samt A = 2344 och B = −80001.
Svar Om du prövar med exemplen ovan blir det uppenbart. Om du prövar med ett
exempel för vilket gäller att A = B så är det också bra.
11. Beskriv kortfattat hur du gick tillväga för att lösa Nian med tonvikt på hur du parade
ihop strängar från lexikonet med ord som kunde genereras från pusslet.
Svar n/a.
2 of 3
Introduktion till datavetenskap
HT 2009
Exempeltentauppgifter
Start
Read
A,B
yes
Is A < B?
no
Is B < A?
Print A
yes
no
Print B
Print A
Stop
Figur 1: Flödesschema (Uppgift 10.)
3 of 3