729G04 Programmering och diskret matematik

Relevanta dokument
729G04 Programmering och diskret matematik

729G04 Programmering och diskret matematik

729G04 Programmering och diskret matematik

Uppgifter till tenta i 729G04 Programmering och diskret matematik. 17 december 2015, kl 14:00-18:00

729G04 Programmering och diskret matematik Tenta kl 14:00-18:00

729G04 Programmering och diskret matematik TEN kl 8-12

Uppgifter till tenta i 729G04 Programmering och diskret matematik. 7 augusti 2015, kl 08:00-12:00

729G74 - IT och programmering, grundkurs. Dugga.

Tenta (TEN3) i kursen 729G04 Programmering och diskret matematik 5 feb 2016, kl 14:00-18:00

TDIU01 / 725G

729G04 PYTHON 6 JODY FOO. Department of Computer and Information Science (IDA) Linköping University, Sweden

729G04 Programmering och diskret matematik TEN kl 8-12

TDP Regler

kl Tentaupplägg

HI1024 Programmering, grundkurs TEN

Tentamen i Introduktion till programmering

TDDI TDDI22 Tentaregler

HI1024 Programmering, grundkurs TEN

TDDI TDDI22 Tentaregler

TDP Regler

729G74 IT och programmering, grundkurs. Tema 2, Föreläsning 2 Jody Foo,

TDP Regler

TDDI TDDI22 Tentaregler

HI1024 Programmering, grundkurs TEN

TDIU Regler

Tentamen TEN1 HI

TDDI22 (exempel) TDDI22 Tentaregler

Tentamen i. för D1 m fl, även distanskursen. lördag 26 februari 2011

HI1024 Programmering, grundkurs TEN

729G04 Programmering och diskret matematik. Föreläsning 7

HI1024 Programmering, grundkurs TEN

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

INFORMATIK - MED SYSTEMVETENSKAPLIG INRIKTNING, GRK/A (1-30 HP)

TENTA: TDDD11 & TDDC68. Tillåtna hjälpmedel. Starta Emacs, terminal och tentakommunikationsfönster. Skicka in frågor och uppgifter

TDP Regler

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Uppgifter teknik HT17 (uppdaterad v. 40)

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

HI1024 Programmering, grundkurs TEN

TDDI TDDI22 Tentaregler

Regler. Betygssättning

Regler. Betygssättning

TDIU Regler

TDIU20 (exempel) TDIU20 Tentaregler

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Datalogi, grundkurs 1

TDDE44 Programmering, grundkurs

kl Tentaupplägg

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Ordlistor, filhantering och ut på webben. Linda Mannila

Programkonstruktion. Tentamen,

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Erfarenheter från labben

v. 42 Python HT17 En introduktion Oscar Bergqvist

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python TDDE24 Funktionell och imperativ programmering del 2

kl Tentaupplägg

Systemutvecklare SU13, Malmö

TENTAMEN OOP

Tentamen ges för: Tentamensdatum: Tid:

v. 43 Python HT17 En introduktion Oscar Bergqvist

Laboration: Whitebox- och blackboxtesting

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18

Tentamen i. Programmering i språket C

729G74 IT och programmering, grundkurs. Tema 3. Föreläsning 2 Jody Foo,

Tentamen Grundläggande programmering

729G04 Programmering och diskret matematik. Python 3: Loopar

Tentamen TEN1 HI

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011,

Tenta i Grundläggande programmering DD klockan

Användarhandledning Version 1.2

Programmering C: Tentamen of 5 Prioritet och associativitet hos operatorerna i C De viktigaste operatorerna: Prioritet Kategori Operator

Tentamen i Programmering grundkurs och Programmering C

Tentamen i. för D1 m fl, även distanskursen. fredag 13 januari 2012

Introduktion till programmering SMD180. Föreläsning 9: Tupler

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Grundläggande programmering med C# 7,5 högskolepoäng

INFORMATIK - MED SYSTEMVETENSKAPLIG INRIKTNING, GRK/A (1-30 HP)

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

TDP Regler

729G74 IT och programmering, grundkurs. Tema 1, Föreläsning 2 Jody Foo,

Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen

DD1314 Programmeringsteknik

Grundläggande datalogi - Övning 1

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

INFORMATIK - MED SYSTEMVETENSKAPLIG INRIKTNING, GRK/A (1-30 HP)

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

Tentamen, EDAA10 Programmering i Java

TENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13:15

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

TDDC74 Lab 04 Muterbara strukturer, omgivningar

kl Tentaupplägg

Planering av ett större program, del 2 - for och listor. Linda Mannila

DD1361 Programmeringsparadigm. Carina Edlund

DUGGA Tentaupplägg

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Transkript:

1( 7) 729G04 Programmering och diskret matematik Tentamen 2014 01 07 kl 14.15 18.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 8 uppgifter ( 7 sidor inklusive denna sida). Poäng: Totalt kan man få 24 poäng. Betyg: För G behövs 12 poäng. För VG behövs 19 poäng. Avdrag (-0,5 per förekomst, max 50% av frågepoängen) ges för kod som inte har någon effekt. Exempel på sådan kod är är loopar som inte gör något, kod som inte kan nås under exekvering. Avdrag ges inte för kod har effekt, men kanske inte är optimal. Exempel på avdrag: Du skriver en lösning på en fråga värd 4 poäng. Lösningen returnerar rätt svar och skulle ha fått 4 poäng, men du har med 1 onödig loop (-0,5) och två onödiga if-satser (2*-0,5). Poäng för uppgiften blir då 4-0,5-0,5-0,5=2,5 poäng. Du hade dock inte kunnat få mindre än 2 poäng oavsett hur många effektlösa satser du har med. Frågor på tentamen: Examinator besöker lokalen ca kl. 15 och kl. 16.30. 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.

2( 7) 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 idle3 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/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( 7) Uppgift 1 (1p) Skriv en funktion, one_third(number), som tar in ett tal (number) och returnerar en tredjedel av det talet. Det är ok om ni får avrundningsfel p.g.a. Python (t.ex. kan 0.3/3 bli 0.09999999999999999). Exempelkörningar In [10]: one_third(9) Out [10]: 3.0 In [11]: one_third(4) Out [11]: 1.3333333333333333 In [12]: one_third(0.3) Out [12]: 0.09999999999999999 Uppgift 2 (3p) Skriv en funktion my_func(num1, num2), som tar in två heltal (num1, num2) som argument, beter sig enligt reglerna nedan. Returnera 1 om alla följande villkor stämmer: - summan av num1 och num2 är mellan 20 och 30 (inklusivt) - produkten av num1 och num2 är mellan 100 och 200 (inklusivt) Returnera 2 om alla följande villkor stämmer: - summan av num1 och num2 är mellan 40 och 60 (inklusivt) - produkten av num1 och num2 är mellan 400 och 800 (inklusivt) Returnera -1 i alla andra fall. Exempelkörningar In [10]: my_func(10, 20) Out [10]: 1 In [11]: my_func(15, 20) Out [11]: -1 In [12]: my_func(20, 20) Out [12]: 2

4( 7) Uppgift 3 (4p) a ) Definiera funktionen all_strings_while(mixed_list) som returnerar den ihopslagna strängen av alla strängar 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]: all_strings_while(["a", "b", "c"]) Out [7]: "abc" In [8]: all_strings_while([5, 6, 7]) Out [8]: "" In [9]: all_strings_while([2.0, "3", "4", -5]) Out [9]: "34" b ) Definiera funktionen all_strings_for(mixed_list) som returnerar den ihopslagna strängen av alla strängar 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]: all_strings_for(["a", "b", "c"]) Out [7]: "abc" In [8]: all_strings_for([5, 6, 7]) Out [8]: "" In [9]: all_strings_for([2.0, "3", "4", -5]) Out [9]: "34" Uppgift 4 (3p) Skriv en funktion translate(word, translations) som översätter ett ord från ett språk till ett annat. Funktionen tar in ett ord (word) som en sträng och ett översättningar (translations) i formen av ett dictionary som har ord på källspråket som nycklar och ord på målspråket som värden. Om källspråksordet finns med bland översättningarna returneras ordet på målspråket. Om källspråksordet inte finns, returneras None. Ingen annan felhantering krävs. Se exempelkörning nedan: In [10]: translate("bil", {"bil":"car", "hus":"house", "katt":"cat") Out [10]: "car" In [11]: translate("häst", {"bil":"car", "hus":"house", "katt":"cat") Out [11]: None

5( 7) Uppgift 5 (4p) a) Skriv en funktion som skapar en ADT som används för att representera en person i ett program för släktforskning. Kalla funktionen för create_person. Du bestämmer själv vilka och hur många parametrar funktionen behöver (håll dig dock inom 2-5 stycken). (1p) b) Beskriv i strukturen för din ADT i funktionskommentaren, dvs vad argumenten representerar och vilken datatyp de förväntas vara. (2p) c) Lägg till lämplig felhantering så att funktionen antingen returnerar en korrekt ADT eller värdet None. Se exempelkörning nedan (som visar en körning för en annan ADT). (1p) In [10]: create_book("ulysses", "James Joyce", 1946, 767) Out [10]: {"title":"ulysses", "author":"james Joyce", "year": 1946, "pages":767} In [11]: create_book("ulysses", "James Joyce", "1946", "767") ERROR in input. Out [11]: None Uppgift 6 (3p) Skriv om nedanstående kod med bl.a. hjälp av principerna för inkapsling och generalisering. Använd det du lärt dig för att göra koden bättre. Kravet är att ett anrop till funktionen run() ska skriva ut exakt samma sak i din kod som i koden nedan. def run(): names = ["Ada", "Bea", "Caesar", "Damon", "Evert"] ages = [26, 43, 21, 64, 33] print("hej " + names[0] + "") print("hur känns det att vara " + str(ages[0]) + " år?") print("hej " + names[1] + "") print("hur känns det att vara " + str(ages[1]) + " år?") print("hej " + names[2] + "") print("hur känns det att vara " + str(ages[2]) + " år?") print("hej " + names[3] + "") print("hur känns det att vara " + str(ages[3]) + " år?") print("hej " + names[4] + "") print("hur känns det att vara " + str(ages[4]) + " år?")

6( 7) Uppgift 7 (3p) Skriv en rekursiv funktion, fac(num) som tar in ett positivt heltal (num) och som räknar ut fakulteten för ett det heltalet. Fakultet defineras enligt nedan: fakultet(x) = x * fakultet(x-1) fakultet(0) = 1 Exempel: fakultet(4) 4 * 3 * 2 * 1 = 24 Exempelkörning In [10]: fac(4) Out [10]: 24 In [11]: fac(6) Out [11]: 720 In [12]: fac(1) Out [12]: 1 In [12]: fac(0) Out [12]: 1 Uppgift 8 (3p) Skriv en funktion, kontrollera_personnummer(personnummer) som tar in ett personnummer som en sträng på 10 tecken, utan bindestreck och kontrollerar om det är ett giltigt personnummer. Om personnummret är giltigt, returneras True. Om personnummret är ogiltigt returneras False. Algoritmen för att kontrollera ett personnummer beskrivs nedan: 1. Multiplicera den sista siffran i personnummret med 1. Multiplicera den näst sista med 2, den tredje sista med 1, den fjärde sista med 2 osv. 2. Om produkten av en multiplikation blir större än 9, subtrahera 9 från detta tal. 3. Summera alla korrigerade produkter. 4. Om summan av de korrigerade produkterna är jämt delbar med 10 är personnummret giltigt. Exempel på uträkning Personnummer: 811218-9876 Personnummer 8 1 1 2 1 8 9 8 7 6 Multiplicera med 2 1 2 1 2 1 2 1 2 1 Produkt 16 1 2 2 2 8 18 8 14 6 Korrigerad produkt (subtrahera 9 om > 9) 7 1 2 2 2 8 9 8 5 6 Summa av korrigerade produkter: 7+1+2+2+2+8+9+8+5+6=50 50 är delbart med 10, alltså är personnummret giltigt.

7( 7) Exempel på körning In [10]: kontrollera_personnummer("8112189876") Out [10]: True In [11]: kontrollera_personnummer("8112189875") Out [11]: False