Tentamen. 5DV105, Programmeringsteknik med Python och Matlab 5DV106, Programmering i Python. 27 oktober 2009

Relevanta dokument
Språket Python - Del 1 Grundkurs i programmering med Python

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

Sammanfattning. Listor. List-manipulering. Matris. /home/lindahlm/activity-phd/teaching/11dd1310/exercise3/exercise3.py September 13, 20111

Programmeringsteknik med C och Matlab

Språket Python - Del 2 Grundkurs i programmering med Python

Tentamen Grundläggande programmering

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

Att skriva till och läsa från terminalfönstret

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

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?

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

Tentamen i Introduktion till programmering

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

Föreläsning 2 Programmeringsteknik och C DD1316

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

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

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

Exempelsamling Assemblerprogrammering

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-Java Omtentamina

Programmeringsteknik med C och Matlab

Pythons standardbibliotek

DD1314 Programmeringsteknik

1/15/2013. DD1310/DD1314/DA3009 Programmeringsteknik. Lärandemål... Vilka läser kursen? ...fler lärandemål VARFÖR? Föreläsning 1

Python. Datatyper. Mer om datatyper. Heltal - 3 Flyttal - 2,456 Listor - [1,2,3,4] Strängar - spam!

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

PROGRAMMERING-JAVA TENTAMINA

DD1310/DD1314/DA3009 Programmeringsteknik LÄRANDEMÅL... Vilka läser kursen? ...FLER LÄRANDEMÅL. Föreläsning 1

Objektorienterad Programmering (TDDC77)

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Regler. Betygssättning

Övning 1 - Abstrakta datatyper

Laboration: Whitebox- och blackboxtesting

729G04 Programmering och diskret matematik

Grundläggande datalogi - Övning 1

Datalogi, grundkurs 1

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

729G04 Programmering och diskret matematik. Python 3: Loopar

Introduktion till programmering SMD180. Föreläsning 4: Villkor och rekursion

TENTAMEN OOP

PROGRAMMERING-Java TENTAMINA

GU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167

Tentamen OOP

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

Klasser och objekt, referenser Grundkurs i programmering med Python

Styrteknik: Binära tal, talsystem och koder D3:1

Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn.

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

729G04 Programmering och diskret matematik

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

Datalogi för E Övning 3

Den klassiska programmodellen. Introduktion till programmering D0009E. Föreläsning 11: Filer och undantag. Filsystem. Interaktiva program.

OBS!! Detta är DEL 2 av tentan. För att få ut denna måste du ha lämnat in del 1. Om du inte fått ut del 1 bör du meddela skrivningsvakten. OBS!!

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

729G04 Programmering och diskret matematik TEN kl 8-12

Ordlistor, filhantering och ut på webben. Linda Mannila

Chapter 3: Using Classes and Objects

Tentamen PC-teknik 5 p

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

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

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

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

Föreläsning 5 Programmeringsteknik DD1310. Modulen doctest. Exempel. Doctest Dictionary Filhantering

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

Tentamen ID1004 Objektorienterad programmering April 7, 2015

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

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,

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel

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

Strängar. TDDD64 Programmering i Python Föreläsning 4. Peter Dalenius Institutionen för datavetenskap

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

Övning 0. Python för den som kan MATLAB. Lättare att läsa färdig kod än att skriva själv Det krävs övning för att automatiskt få detaljerna rätt:

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

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

Introduktion till programmering SMD180. Föreläsning 3: Funktioner

Inledande programmering med C# (1DV402) 27+15=42 1 (22)

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 14-16

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

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Konvertering från sträng. Winstrand Development

tentaplugg.nu av studenter för studenter

Skriv i mån av plats dina lösningar direkt i tentamen. Skriv ditt kodnummer längst upp på varje blad.

Introduktion till programmering SMD180. Föreläsning 7: Strängar

Tentamen i. Programmering i språket C

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

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

Föreläsning 4 Programmeringsteknik DD1310. Felhantering. Syntax. try och except är reserverade ord som används för hantering av exekverings fel.

Repetition i Python 3. Exemplen fac. Exemplen fac motivering. Exemplen fac i Python

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Uppgifter teknik HT17 (uppdaterad v. 40)

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl Omtentamen i Programmering C, Fri, Kväll,

Datastrukturer. Erik Forslin. Rum 1445, plan 4 på Nada

Dagens föreläsning. Diverse Common Lisp. Konstanter, parametrar, globala variabler

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

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

Transkript:

Sid: 1(8) Tentamen 5DV105, Programmeringsteknik med Python och Matlab 5DV106, Programmering i Python Examinator: Skrivtid: 9 13 Hjälpmedel: Inga böcker Tentamen har två delar. Första delen består av tre uppgifter, där varje uppgift bedöms som antingen godkänd eller underkänd. Samtliga dessa uppgifter måste ha ett godkänt betyg för att få ett godkänt betyg på tentamen som helhet. Del 2 består av fyra uppgifter, där varje uppgift kan ge maximalt 6 poäng. Betyg på tentamen ges enligt följande. På kursen 5DV105: U: Minst en av uppgifterna på del 1 är bedömd som underkänd 3: Samtliga uppgifter godkända på del 1 samt mellan 0 och 8 poäng på del 2 4: Samtliga uppgifter godkända på del 1 samt mellan 9 och 16 poäng på del 2 5: Samtliga uppgifter godkända på del 1 samt mellan 17 och 24 poäng på del 2 På kursen 5DV106: U: Minst en av uppgifterna på del 1 är bedömd som underkänd G: Samtliga uppgifter godkända på del 1 samt mellan 0 och 12 poäng på del 2 VG: Samtliga uppgifter godkända på del 1 samt mellan 13 och 24 poäng på del 2 I uppgiften anges om svaret ska besvaras på ett separat papper som ska bifogas tentamen eller anges direkt i tentamen. Ska uppgiften besvaras på ett separat papper, besvara maximalt en uppgift per papper och ange uppgiftens nummer längst upp till höger. Ange även ditt kodnummer överst på papperet. Resultatet på tentamen kommer att presenteras på kurshemsidan och per e-post. I Appendix B, finns ett antal funktioner i Python beskrivna som kan vara till hjälp. Om du har svårighet att tolka en uppgift, skriv din tolkning och lös uppgiften enligt denna tolkning. Lycka till!

Sid: 2(8) Del 1 Följande uppgifter bedöms med betyget godkänd eller underkänd. Samtliga uppgifter i del 1 måste ha ett godkänt betyg. Uppgift 1 (U eller G) Hantera data i textfiler Skriv ett program, som givet ett argument på kommandraden, tolkar detta argument som ett filnamn. Programmet ska sedan öppna en fil som har det namnet. Videre antar vi att filerna ser ut som i exemplet nedan, d.v.s. först en rad med en rubrik och därefter en serie med flyttal i en kolumn. Vi vet inte i förväg hur många flyttal filen innehåller. Programmet har till uppgift att summera de flyttalsvärden som finns i filen med början på rad 2. Summan ska skrivas ut på skärmen. # Data 23.4521-10.3453 1.5621 11.9721 Programmet behöver inte göra några felkontroller när det gäller antalet argument till programmet eller filens existens eller läsbarhet. Vidare antar vi att texten i filen har ett korrekt format. Redovisa ditt program på ett separat papper och bifoga tentamen. För G krävs en struktur på programmet som löser uppgiften. Vidare krävs att handhavandet av textfilen är konceptuellt riktigt.

Sid: 3(8) Uppgift 2 (U eller G) Datatyper och dess begränsningar a) I tabellen nedan finns en lista på olika data vi vill ha representerat i ett program. Din uppgift är att markera en lämplig datatyp för respektive data. Representerat data 1. Temperatur med 1 decimals noggrannhet 2. Från fil inlästa namn på ett antal hundar 3. Unika ord tagna ur en text tillsammans med antalet förekomster av respektive ord 4. Antalet invånare på Ålidhem heltal flyttal boolskt värde sträng lista strängindexerat fält b) Till vänster i tabellen nedan, finns kod skriven i pythontolken. Din uppgift är att till höger ange vad utskriften blir. Pythonkod Resultat 1. >>> print 7 / 2.0 2. >>> print 7 / 3 3. >>> print (1/3)*6 4. >>> c = 23 < 43 or 2 > 1 >>> print c För G krävs minst 3 rätt på båda deluppgifterna.

Sid: 4(8) Uppgift 3 (U och G) Funktioner Uppgiften går ut på att skriva om det program som finns utskrivet längre ned på sidan, så att det istället använder sig av två funktioner. En funktion ska heta pi pow. Den ska ha en parameter n, som antas vara ett heltal. Funktionen ska ska generera en lista med multipler av π, från 1 π till n π. Denna lista ska sedan returneras. Den andra funktionen ska heta print float list. Den ha en parameter, lst som antas vara en lista. Funktionen ska skriva ut denna lista i två kolumner, första kolumnen innehåller värdets index (från 0) och den andra innehåller värdet utskrivet med 2 decimaler. Överst ska en rubrik skrivas ut med orden index och värde. Funktionen ska inte returnera något. Programmet ska först konvertera ett argument från kommandoraden till ett heltal (utan felkontroller). Detta värde tilldelas variabeln N. Därefter ska funktionen pi pow anropas med denna variabel som argument. Funktionens returvärde tilldelas variabeln pilist. Därefter ska programmet anropa funktionen print float list med variabeln pilist som argument. import math import sys N = int(sys.argv[1]) pilist = [] for i in range(1, N+1): pilist.append(i*math.pi) print " index värde" for i in range(len(pilist)): print "%6i %.2f" % (i, pilist[i]) För G krävs korrekt definierade funktioner med rätt antal parametrar och returvärden. Dessa funktioner ska anropas på ett korrekt sätt i programmet. Vidare krävs att funktionaliteten hos funktionerna och programmet möter specifikationen.

Sid: 5(8) Del 2 Följande uppgifter ger maximalt 6 poäng vardera. Uppgift 4 (6 p) Minneshantering Nedan finns ett litet program där rad nummer 5 kommer att exekveras två gånger. Uppgiften går ut på att illustrera vilka variabler och funktioner som finns i det globala namnrummet och i lokala namnrum, samt vilka referenser som finns till data i minnet vid dessa två tillfällen. I dina illustrationer utgå gärna från hur vi illustrerat detta på föreläsningarna eller som det är gjort i kursboken. Illustrera t.ex. en referens som en pil som utgår från variabelnamnet och som pekar mot ditt data. Var noga med att ange om variabelnamnet ligger i det globala namnrummet, eller om den ligger i ett lokalt namnrum Redovisa dina två illustrationer på ett separat papper och bifoga det med tentamen. 1 from copy import copy 2 3 data = [1, 2, 3, 4] 4 5 def decrease(data, i): 6 data[i] = data[i] - i 7 8 def function1(data, n=3): 9 decrease(data, n) 10 11 function1(data, 1) 12 13 function1(copy(data)) Uppgift 5 (6 p) Felhantering Tag ditt program du skrev i Uppgift 1. Skriv om programmet så att detta hanterar fel som kan inträffa på ett kontrollerat sätt. Programmet ska hantera att ett korrekt antal argument till programmet anges, om filen inte kan öppnas för läsning om någon av raderna i filen inte kan konverteras till ett flyttal (med början på rad 2) Redovisa ditt program på ett separat papper och bifoga det med tentamen.

Sid: 6(8) Uppgift 6 (6 p) Skriva ett program Din uppgift är att skriva ett program som genererar akronymer. Programmet ska fungera enligt exemplet nedan. > python acronym.py Ange en fras: Innovation Akronym: I Ange en fras: lidelse och vild entusiasm Akronym: LOVE Ange en fras: Ullig modig ulv Akronym: UMU Ange en fras: Programmet avslutas Programmet ska alltså: Uppmana användaren att ange en fras. Läsa in frasen med raw input Ta ut första bokstaven ur samtliga ord i frasen och sätta i hop dem till en ny sträng Konvertera strängen till stora bokstäver och skriva ut den enligt exemplet ovan Detta ska upprepas tills dess att en tom sträng anges då ska programmet avslutas Uppgift 7 (6 p) Hitta fel I Appendix A återfinns ett program där det finns ett antal fel, både semantiska och syntaktiska. Din uppgift är att ange var dessa fel finns (ange radnummret som finns till vänster om koden), att för respektive fel beskriva felet och ange om det är ett semantiskt eller syntaktisk fel, att för respektive fel ange hur detta fel skulle komma till utryck när programmet exekveras givet att de övriga felen är korrigerade, att för respektive fel beskriva hur det kan åtgärdas. I uppgiften finns totalt tre fel. Ett likartat fel kan dock förekomma på två ställen nära varandra, men detta räknas då bara som ett fel. Redovisa felen på ett separat papper och bifoga det med tentamen.

Sid: 7(8) Appendix A: Kod att felsöka till uppgift 7 1 # isokdate.py 2 # Determine whether a calendar date in the form yyyy-mm-dd is OK 3 4 # This program uses a user module isleapyear 5 from isleapyear import isleapyear 6 7 # Because these tables are constant we can define them globally 8 daysinmonth = [31,28,31,30,31,30,31,30,31,31,30,31] 9 daysinleapmonth = [31,29,31,30,31,30,31,30,31,31,30,31] 10 11 # Short circuit evaluation of "and" operation insures 12 # that month and year are correct before calling isokday. 13 def isokdate(y, m, d): 14 return isokyear(y) and isokmonth(m) and isokday(y, m, d) 15 16 # Checks if the year is positive 17 def isokyear(y): 18 return y > 0 19 20 # Checks if the month is between 1 and 12 21 def isokmonth(m): 22 return m >= 1 or m <= 12 23 24 # month, day, year must already be OK. 25 def isokday(y, m, d): 26 if isleapyear(y): 27 return d >= 1 and d <= daysinleapmonth[m] 28 else: 29 return d >= 1 and d <= daysinmonth[m] 30 31 print "This program determines whether a date in form yyyy-mm-dd is OK" 32 33 try: 34 datestr = raw_input("enter date (yyyy-mm-dd): ") 35 dates = datestr.split( - ) 36 37 if isokdate(int(dates[0]), int(dates[1]), int(dates[2])): 38 print "Yes, %s is a well formed date" % datestr 39 else: 40 print "No, %s is not a well formed date" % datestr 41 42 except: 43 print "An input date must be in form yyyy-mm-dd, all with integers"

Sid: 8(8) Appendix B: Några inbyggda funktioner och metoder i Python Inbyggda funktioner open(filename[, mode[, bufsize]]) Open a file, returning an object of the file type described in section File Objects. If the file cannot be opened, IOError is raised. raw input([prompt]) If the prompt argument is present, it is written to standard output without a trailing newline. The function then reads a line from input, converts it to a string (stripping a trailing newline), and returns that. len(s) Return the length (the number of items) of an object. The argument may be a sequence (string, tuple or list) or a mapping (dictionary). float([x]) Convert a string or a number to floating point. int([x]) Convert a string or number to a plain integer range([start], stop[, step]) This is a versatile function to create lists containing arithmetic progressions. str([object]) Return a string containing a nicely printable representation of an object. Metoder på filobjekt file.read([size]) Read at most size bytes from the file (less if the read hits EOF before obtaining size bytes). If the size argument is negative or omitted, read all data until EOF is reached. file.readline([size]) Read one entire line from the file. A trailing newline character is kept in the string file.readlines([sizehint]) Read until EOF using readline() and return a list containing the lines thus read. file.close() Close the file. Metoder på strängobjekt str.capitalize() Return a copy of the string with only its first character capitalized. str.endswith(suffix[, start[, end]]) Return True if the string ends with the specified suffix, otherwise return False. str.find(sub[, start[, end]]) Return the lowest index in the string where substring sub is found, such that sub is contained in the range [start, end]. str.isdigit() Return true if all characters in the string are digits and there is at least one character, false otherwise. str.lower() Return a copy of the string converted to lowercase. str.replace(old, new[, count]) Return a copy of the string with all occurrences of substring old replaced by new. str.split([sep[, maxsplit]]) Return a list of the words in the string, using sep as the delimiter string. If maxsplit is given, at most maxsplit splits are done (thus, the list will have at most maxsplit+1 elements). If maxsplit is not specified, then there is no limit on the number of splits (all possible splits are made). str.splitlines([keepends]) Return a list of the lines in the string, breaking at line boundaries. str.strip([chars]) Return a copy of the string with the leading and trailing characters removed. The chars argument is a string specifying the set of characters to be removed. str.upper() Return a copy of the string converted to uppercase. Funktioner i modulen copy copy(x) Return a shallow copy of x.