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