1( 5) 729G04 Programmering och diskret matematik Övningstentamen 2013 12 03 kl 10.00 12.00 Tillåtna hjälpmedel: Dator, penna, papper, linjal, suddgummi, godkänd(a) bok/böcker (ej anteckningar, föreläsningsbilder, gamla labbar eller labbinstruktioner) Uppgifter: Tentan består av 3 uppgifter ( 5 sidor inklusive denna sida). Poäng: - Betyg: - Frågor på Tentamen: Examinator är närvarande i lokalen under hela tentamenstiden. Om du har funderingar som du inte kan få svar på, skriv ner dessa och hur du tolkat eventuella oklarheter som kommentarer i koden. Instruktion för att logga in 1. Logga in på kontot examx med lösenordet kluring1 2. Följ instruktionerna på skärmen och skriv in ditt personnummer. 3. Tentavakten kommer att gå runt och kontrollera personnummer och legitimation. Efter kontroll får du ett engångslösenord som du använder för att logga in med i själva tentasystemet. OBS: Om det när en terminal startas i tentasystemet kommer två felmeddelanden (command not found) upp. Dessa är inget att bry sig om, jedit, emacs och python rullar igång ändå. Så här startar du IDLE/gedit/jedit/ipython Öppna först ett terminalfönster genom att klicka på terminalikonen på panelen längst ner. För att starta IDLE, skriv idle3 & i terminalfönstret. För att starta gedit, skriv gedit & i terminalfönstret. För att starta jedit, skriv jedit & i terminalfönstret. För att starta ipython3, skriv ipython3 i terminalfönstret. Om du använder IDLE och det hänger sig under tentan 1. Prova att stänga IDLE-fönstren med Alt-F4 eller övre vänstra hörnets meny. 2. Om det inte fungerar, stäng terminalfönstret med Alt+F4 eller övre vänstra hörnets meny. 3. Starta idle igen genom att öppna en nytt terminalfönster (om det behövs) och skriva idle följt av <ENTER>. 4. Öppna din fil via menyraden eller genom att trycka Ctrl+O Genomförande av uppgifter Svar till uppgifterna skrivs i en textfil som du sparar under namnet dittstudentid.py (om ditt student-id är abcde123 sparar du till filen abcde123.py). Spara filen direkt i din hemkatalog (/home/
2( 5) student_tilde/). Du får använda valfri texteditor som finns tillgänglig, dvs. jedit, gedit eller den inbyggda i IDLE. Rekommendationen är använda jedit eller gedit tillsammans med ipython3 då det har hänt att IDLE är ostabilt i tentamiljön. Skriv namn, liu-id och personnummer i början av filen. Skriv en kommentar med uppgiftsnummer innan lösningen på uppgiften. Kom ihåg att spara då och då Exempel på hur början av filen kan se ut # coding: utf-8 # Jody Foo, jodfo01 # 990818-0274 # Uppgift 1
3( 5)
4( 5) Uppgift 1 (3p) Skriv en funktion my_func(num1, num2), som tar in två heltal (num1, num2) som argument, beter sig enligt reglerna nedan. Avdrag ges för onödiga satser i koden. Returnera True om alla följande villkor stämmer: - summan av num1 och num2 är mindre än eller lika med 100 och större än 0 - produkten av num1 och num2 är mindre än eller lika med 100 och större än 0 Returnera False om alla följande villkor stämmer: - summan av num1 och num2 är större än 100 - produkten av num1 och num2 är större än 100 Returnera None i alla andra fall. Uppgift 2 (4p) a ) Definiera funktionen sum_of_ints_while(mixed_list) som returnerar summan av alla heltal i listan mixed_list. Listan mixed_list innehåller värden av olika typer. Använd en while-loop. Se exempelkörningar från ipython nedan: In [7]: sum_of_ints_while(["a", "b", "c"]) Out [7]: 0 In [8]: sum_of_ints_while([5, 6, 7]) Out [8]: 18 In [9]: sum_of_ints_while([2.0, "3", 4, -5]) Out [9]: -1 b ) Definiera funktionen sum_of_ints_for(mixed_list) som returnerar summan av alla heltal i listan mixed_list. Listan mixed_list innehåller värden av olika typer. Använd en for-loop. Se exempelkörningar från ipython nedan: In [7]: sum_of_ints_for(["a", "b", "c"]) Out [7]: 0 In [8]: sum_of_ints_for([5, 6, 7]) Out [8]: 18 In [9]: sum_of_ints_for([2.0, "3", 4, -5]) Out [9]: -1
5( 5) Uppgift 3 (2p) Vi har en abstrakt datatyp för en bok (book). En instans av en bok som använder denna ADT ges nedan. {"title":"ulysses", "author":"james Joyce", "year": 1946, "pages":767} Skriv funktionen reading_time(book) som returnerar antalet timmar det tar att läsa boken om vi antar att det tar 3 minuter att läsa en sida. Funktionen ska som argument ta in en instans av den abstrakta datatypen book. Se körexempel nedan In [10]: ulysses = {"title":"ulysses", "author":"james Joyce", "year": 1946, "pages":767} In [11]: reading_time(ulysses) Out [11]: 38.35