729G04 Programmering och diskret matematik

Relevanta dokument
729G04 Programmering och diskret matematik

729G04 Programmering och diskret matematik

729G04 Programmering och diskret matematik

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

729G04 Programmering och diskret matematik TEN kl 8-12

729G74 - IT och programmering, grundkurs. Dugga.

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

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

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

TDIU01 / 725G

729G04 Programmering och diskret matematik TEN kl 8-12

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

Uppgifter teknik HT17 (uppdaterad v. 40)

Tentamen i Introduktion till programmering

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

TDDE44 Programmering, grundkurs

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

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

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

TDP Regler

Ordlistor, filhantering och ut på webben. Linda Mannila

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

TDDI TDDI22 Tentaregler

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

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

Tentamen TEN1 HI

TDP Regler

TDDI TDDI22 Tentaregler

Instruktioner - Datortentamen TDDE24 och TDDD73 Funktionell och imperativ programmering (i Python)

Tenta i Grundläggande programmering DD klockan

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

HI1024 Programmering, grundkurs TEN

Laboration: Whitebox- och blackboxtesting

Erfarenheter från labben

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

TDDI TDDI22 Tentaregler

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

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

kl Tentaupplägg

TDDI22 (exempel) TDDI22 Tentaregler

Datalogi, grundkurs 1

Grundläggande datalogi - Övning 1

Tentamen TEN1 HI

Försättsblad till skriftlig tentamen vid Linköpings Universitet

TDIU Regler

729G04 Programmering och diskret matematik. Python 3: Loopar

Övning 1 - Abstrakta datatyper

Tentamen i. Programmering i språket C

Tentamen ges för: Tentamensdatum: Tid:

HI1024 Programmering, grundkurs TEN

TDDI TDDI22 Tentaregler

kl Tentaupplägg

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

HI1024 Programmering, grundkurs TEN

TDDC74 Programmering: Abstraktion och modellering Tenta, kl 14 18, 11 juni 2014

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

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

TENTAMEN OOP

Regler. Betygssättning

HI1024 Programmering, grundkurs TEN

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

729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer

Programmering II (ID1019) :00-12:00

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

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

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

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

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 i. för D1 m fl, även distanskursen. lördag 28 maj 2011

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

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

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 17-19

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

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

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

Användarhandledning Version 1.2

Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel

Omtentamen (del 1, 6 högskolepoäng) i Programkonstruktion och datastrukturer (1DL201)

TDP Regler

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

Lösningar till uppgifterna sätts ut på kurssidan och på WebCT (Gamla Tentor) i dag kl 19. Tentamen i Programmering C, 5p, Distans, övriga,

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Tentamen i Programmering grundkurs och Programmering C

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Övningsuppgifter kapitel 8

Tentamen TEN1 HI

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

Försättsblad till skriftlig tentamen vid Linköpings Universitet

kl Tentaupplägg

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

Programkonstruktion. Tentamen,

Datalogi för E Övning 3

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

TDIU Regler

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

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

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 08-12

kl Tentaupplägg

Transkript:

Tentamen 729G04, 2013-01-11 1(8) 729G04 Programmering och diskret matematik Tentamen 2013 01 11 kl 08.00 13.00 Tillåtna hjälpmedel: Dator, penna, papper, linjal, suddgummi, godkänd(a) bok/böcker Uppgifter: Tentan består av 6 uppgifter (8 sidor inklusive denna sida). Poäng: Totalt kan man få 25 poäng. Betyg: För G behövs 12 poäng och för VG behövs 18 poäng. Frågor på Tentamen: Examinator besöker lokalen ca kl 8 och ca kl 10. 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. 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. 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 ipython 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: latin-1 # Jody Foo, jodfo01 # 990818-0274 # Uppgift 1 Så här startar du IDLE/gedit/jedit Öppna först ett terminalfönster genom att högerklicka på skrivbordet och välja Terminal. För att starta IDLE, skriv idle i terminalfönstret. För att starta gedit, skriv gedit i terminalfönstret. För att starta jedit, skriv jedit i terminalfönstret.

Tentamen 729G04, 2013-01-11 2(8) 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

Tentamen 729G04, 2013-01-11 3(8) Uppgift 1 (3p) Nedan finns en funktion som returnerar hur vanligt på en skala från 1-3 ett efternamn var i Sverige år 2011. Skriv om funktionen så att den innehåller färre vilkorssatser. Ändra också i koden så att funktionen blir okänslig för stora och små bokstäver i förnamnet som skickas till funktionen (dvs att funktionen klarar av t.ex. "Andersson" och "ANDERSSON" och "ANDERson" som input). def get_sirname_rating(sirname): if sirname == "Andersson": return 1 elif sirname == "Eriksson": return 2 elif sirname == "Johansson": return 1 elif sirname == "Karlsson": return 1 elif sirname == "Larsson": return 2 elif sirname == "Nilsson": return 2 elif sirname == "Olsson": return 3 elif sirname == "Persson": return 3 elif sirname == "Svensson": return 3

Tentamen 729G04, 2013-01-11 4(8) Uppgift 2 (4p) a) Skriv en funktion list_contains_greater_than(list_of_numbers, number) som returnerar True om listan list_of_numbers innehåller ett värde som är större än number. Om det inte finns ett heltal i list_of_numbers som är större än number, returnerar funktionen False. Använd en for-loop för att lösa denna uppgift. list_of_numbers är en lista som innehåller heltal och number är ett heltal. Se körexempel från ipython nedan. In [1]: list_contains_greater_then([1, 200, 3, 4], 3) Out[1]: True In [2]: list_contains_greater_then([5, 100, 7, 1], 101) Out[2]: False In [3]: list_contains_greater_then([6, 7, 8], 8) Out[3]: False b) Skriv en funktion list_contains_less_than(list_of_numbers, number) som returnerar True om listan list_of_numbers innehåller ett värde som är mindre än number. Om det inte finns ett heltal i list_of_numbers som är mindre än number, returnerar funktionen False. Använd en while-loop för att lösa denna uppgift. list_of_numbers är en lista som innehåller heltal och number är ett heltal. Se körexempel från ipython nedan. In [4]: list_contains_less_then([1, 2, 3, 4], 3) Out[4]: True In [5]: list_contains_less_then([10, 50, 30, 20], 9) Out[5]: False In [6]: list_contains_less_then([6, 7, 8], 6) Out[6]: False

Tentamen 729G04, 2013-01-11 5(8) Uppgift 3 (2p) Definiera funktionen nfirst(mixed_list, n) som returnerar de n första elementen i listan mixed_list. Anta att n är ett positivt heltal. Se exempelkörningar från ipython nedan: In [7]: nfirst(["a", "b", "c"], 2) Out [7]: [ a, b ] In [8]: nfirst([5, 6, 7], 1) Out [8]: [5] In [9]: nfirst([1, 2, 3], 0) Out [9]: []

Tentamen 729G04, 2013-01-11 6(8) Uppgift 4 (3p) Definiera en funktion average(mixed_list) som tar in en lista, mixed_list, som innehåller värden av olika datatyper, dock inte listor. Funktionen ska returnera medelvärdet av alla heltal (inte flyttal) i listan. Det returnerade medelvärdet ska dock vara ett flyttal. Anta att det finns minst ett heltal i listan som ges som input. Se exempelkörning nedan: In [10]: average([1, 2, 3.0, "4"]) Out[10]: 1.5 In [11]: average([2, 2, 2, 2]) Out[11]: 2.0 In [12]: average(["eggs", "bacon", 500]) Out[12]: 500.0

Tentamen 729G04, 2013-01-11 7(8) Uppgift 5 (6p) I denna uppgift ska du lagra information om din nyfunna hobby Platespotting. Platespotting går ut på att du först ska se en bil med ett registreringsnummer som slutar på 001 (T.ex. ABC 001). Sedan ska du se en bil med registreringsnummer som slutar på 002 osv. I denna uppgift ska du skriva funktioner i Python som kan bearbeta information om vilket registreringsnummer du såg vid vilken tidpunkt. Längst ner på sidan ser du exempelkörningar från ipython. a) Skriv en funktion create_spot(date_time, plate) som tar in två strängar och returnerar ett dictionary som innehåller nycklarna "date and time" och "plate". Nyckeln "date and time" lagrar värdet från argumentet date_time. Nyckeln "plate" lagrar värdet från argumentet plate. Kontrollera att både både date_time och plate är strängar. Skriv ut ett felmeddelande och returnera None om någon av argumenten inte är en sträng. Ingen felhantering av innehållet i strängarna date_time och plate behöver göras (dvs det spelar ingen roll vad som står i strängarna). b) Skriv en funktion get_date_time(spot) som tar en spot som argument (dvs ett dictionary enligt ovan) och returnerar strängen som lagras i under nyckeln "date and time". Kontrollera att spot är ett dictionary med nycklarna "date and time" och "plate". Skriv ut ett felmeddelande och returnera None om spot inte är ett dictionary enligt ovan. c) Skriv en funktion set_plate(spot, plate) som tar en spot (enligt ovan) och en sträng, plate, som argument. Funktionen ändrar på värdet i spot som är associerat med nyckeln "plate". Kontrollera att spot är ett dictionary med nycklarna "date and time" och "plate". Skriv ut ett felmeddelande, och ändra inte på spot. Nedan följer exempelkörning från ipython: In [13]: create_spot("2013-01-11 07:00", "ABC001") Out[13]: {'date and time': '2013-01-11 07:00', 'plate': 'ABCD123'} In [14]: first = create_spot("2013-01-11 07:00", "ABC001") In [15]: get_date_time(first) Out[15]: '2013-01-11 07:00' In [16]: get_date_time("blabla") Error in input. In [17]: set_plate(first, "PYTHON") In [18]: first Out[18]: {'date and time': '2013-01-11 07:00', 'plate': 'PYTHON'}

Tentamen 729G04, 2013-01-11 8(8) Uppgift 6 (7p) I denna uppgift ska du skapa en abstrakt datastruktur för att representera tid. Vi ska implementera denna datastruktur genom att använda oss av en lista. Listan ska ha tre element. Längst ner på sidan finns exempelkörningar. Det första elementet representerar antal timmar Det andra elementet representerar antal minuter Det tredje elementet representerar antal sekunder Tiden 08:15:00 representeras alltså av följande lista: [8, 15, 0] a) Skapa funktionen create_clock(hours, minutes, seconds) som tar tre heltal som argument och returnerar en liststruktur enligt ovanstående specifikation. Se till att funktionen skriver ut ett felmeddelande och returnerar None om något av följande är sant: värdet på minutes överskrider 59 värdet på seconds överskrider 59 värdet på hours överskrider 23 hours, minutes eller seconds är negativt hours, minutes eller seconds inte är ett heltal b) Skapa funktionen add_seconds(seconds, clock) som tar in två argument, ett heltal och en clock (dvs en lista enligt ovan). Funktionen ökar tiden i clock med antalet sekunder som anges i argumentet seconds. Se till öka minuter och timmar om det behövs. Funktionen returnerar inget utan ändrar direkt i listan som representerar tiden. Ändra bara i clock om seconds är ett positivt heltal. Om ingen ändring sker, skriv ut ett felmeddelande. Nedan följer exempelkörning från ipython: In [19]: create_clock(8, 15, 0) Out[19]: [8, 15, 0] In [20]: create_clock(8, 80, 0) Error in input. In [21]: the_time = create_clock(8, 15, 0) In [22]: the_time Out[22]: [8, 15, 0] In [23]: add_seconds(10, the_time) In [24]: the_time Out[24]: [8, 15, 10] In [25]: add_seconds(120, the_time) In [26]: the_time Out[26]: [8, 17, 10]