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

Relevanta dokument
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

729G74 - IT och programmering, grundkurs. Dugga.

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

729G04 Programmering och diskret matematik TEN kl 8-12

729G04 Programmering och diskret matematik

729G04 Programmering och diskret matematik TEN kl 8-12

TDDE44 Programmering, grundkurs

729G04 Programmering och diskret matematik. Python 3: Loopar

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

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

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

Tentamen ges för: Tentamensdatum: Tid:

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

TDIU01 / 725G

Övningsuppgifter kapitel 8

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

TDP Regler

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

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

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

Tentamen i Introduktion till programmering

TDDC74 Programmering, abstraktion och modellering. Tentamen

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

TDIU Regler

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

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

TDP Regler

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

kl Tentaupplägg

Uppgifter teknik HT17 (uppdaterad v. 40)

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

HI1024 Programmering, grundkurs TEN

HI1024 Programmering, grundkurs TEN

Tentamen i. Programmering i språket C

TENTAMEN. Rättande lärare: Sara Sebelius & Håkan Strömberg Examinator: Niclas Hjelm Datum:

kl Tentaupplägg

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

Tentaupplägg denna gång

HI1024 Programmering, grundkurs TEN

Användarhandledning Version 1.2

Övning 6. Ali Tofigh 24 Oktober, 2006

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

tentaplugg.nu av studenter för studenter

HI1024 Programmering, grundkurs TEN

TDDC74 Programmering: Abstraktion och modellering Datordugga 2 - exempel

Uppgift 1 ( Betyg 3 uppgift )

HI1024 Programmering, grundkurs TEN

PROGRAMMERING-Java Omtentamina

Tentamen TEN1 HI

kl Tentaupplägg

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

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Systemutvecklare SU13, Malmö

TDIU Regler

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

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

Tentamen i Programmering grundkurs och Programmering C

TDP Regler

Tentamen i Programmering grundkurs och Programmering C

kl Tentaupplägg

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Tentamen i Programmering grundkurs och Programmering C

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

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

Tentamen *:58/ID100V Programmering i C Exempel 3

Tentamen TEN1 HI

TDIU Regler

Programkonstruktion och Datastrukturer

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

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

TDP Regler

Grundläggande programmering med C# 7,5 högskolepoäng. Provmoment: Ladokkod: Tentamen ges för: TEN1 NGC011 ADAEK17, ASYST17 samt öppen för alla

TENTAMEN OOP

Funktioner. Linda Mannila

Tentaupplägg denna gång

Tentamen Grundläggande programmering

1 Funktioner och procedurell abstraktion

kl Tentaupplägg

Programmering för webben

PROGRAMMERING-JAVA TENTAMINA

Efternamn förnamn pnr årskurs

Programkonstruktion. Tentamen,

Tentamen TEN1 HI

TDDC74 Programmering, abstraktion och modellering. Tentamen

KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012

Tentamen ID1004 Objektorienterad programmering April 7, 2015

HI1024 Programmering, grundkurs TEN

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen

Efternamn förnamn pnr årskurs

TDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 27 augusti 2016, kl 8 12

Tentaupplägg. Betygsgränser: 1 uppg 19:00 Betyg 3 2 uppg 18:00 Betyg 4 2 uppg 16:30 Betyg 5 3 uppg 18:00 Betyg 5

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

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

TDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 19 oktober 2016, kl 14 18

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

Transkript:

1 ( 6) Uppgifter till tenta i 729G04 Programmering och diskret matematik. 7 augusti 2015, kl 08:00-12:00 Tillåtna hjälpmedel: Dator, penna, papper, linjal, suddgummi, godkänd(a) bok/böcker/kompendier (ej anteckningar, föreläsningsbilder, gamla tentor, gamla labbar eller labbinstruktioner) Uppgifter: Tentan består av 8 uppgifter för TEN3 och 9 uppgifter för TEN4. TEN3 = de som läste kursen i höstas. TEN4 = de som läste kursen mellan HT2009-HT20013. Poäng TEN3: 20 Poäng TEN4: 25 Betyg TEN3: U/G/VG. För att få VG behövs minst 15 poäng. För att få G behövs minst 10 poäng. Betyg TEN4: U/G/VG. För att få VG behövs minst 18 poäng. För att få G behövs minst 12 poäng. Frågor på tentamen: Examinator är närvarande i lokalen i början av tentan och besöker sedan tentalokalen ca kl. 9, 10 och 11. Om du har funderingar som du inte kan få svar på, skriv ner dessa och hur du tolkat eventuella oklarheter som kommentarer i koden. Om det är systemet som krånglar, kan en av tentavakterna kontakta examinatorn. OBS! Uppgift 9 görs bara av de som läste kursen första gången mellan HT 2009 och HT 2013. Uppgift 1 (1p) Skriv en funktion rectangle_area(width, height) som får in en bredd och en höjd som flyttal och returnerar arean för en rektangel (bredden gånger höjden) som ett flyttal. Variabeln width är bredden och variabeln height är höjden. Kontrollera om argumenten till funktionen är flyttal. Om de inte är det, skriv ut ett felmeddelande och returnera None. rectangle_area(5.0, 2.0) 10.0 rectangle_area(5, 2.0) Error: Please use floating point numbers. Uppgift 2 (3p) För nedanstående uppgifter ska antalet tal som är större än ett angivet tal räknas. count_larger_for([1, 2, 2.1], 2) 1 count_larger_for([], 2) 0 a) Skriv funktionen count_larger_for(values, number) som får in en lista (values) med tal (heltal och flyttal) returnerar antalet tal som är större än talet number. Använd en for-loop. b) Skriv funktionen count_larger_while(values, number) som får in en lista (values) med tal (heltal och flyttal) returnerar antalet tal som är större än talet number. Använd en while-loop. c) Skriv funktionen count_larger_rec(values, number) som får in en lista (values) med tal (heltal och flyttal) returnerar antalet tal som är större än talet number. Använd rekursion.

2 ( 6) Uppgift 3 (3p) För nedanstående uppgifter ska funktionen ta in en sträng och två tecken och returnera en ny sträng där förekomsten av det ena tecknet ska ersättas med det andra tecknet. replace_char_while("python", "p", "j") "jython" replace_char_while("hello", "l", "j") "hejjo" replace_char_while("", "a", "b") "" a) Skriv funktionen replace_char_for(a_string, search_char, repl_char) som får in en sträng och två tecken och returnerar en sträng som är resultatet av att alla förekomster av tecknet search_char i strängen a_string ersatts med tecknet repl_char. Använd en for-loop. Den inbyggda metoden str.replace() får inte användas. b) Skriv funktionen replace_char_while(a_string, search_char, repl_char) som får in en sträng och två tecken och returnerar en sträng som är resultatet av att alla förekomster av tecknet search_char i strängen a_string ersatts med tecknet repl_char. Använd en while-loop. Den inbyggda metoden str.replace() får inte användas. c) Skriv funktionen replace_char_rec(a_string, search_char, repl_char) som får in en sträng och två tecken och returnerar en sträng som är resultatet av att alla förekomster av tecknet search_char i strängen a_string ersatts med tecknet repl_char. Använd rekursion. Den inbyggda metoden str.replace() får inte användas. Uppgift 4 (3p) Skriv funktionen rate_my_password(password) som tar en sträng och returnerar ett flyttal som representerar bra lösenordet är. Ett lösenord kan få mellan 1,0-4,0 poäng. Reglerna för poängsättningen är följande: 1. Poäng för stränglängd: 1.1. Mindre eller lika med 5 tecken ger 0,5 poäng 1.2. Mellan 6 och 11 tecken ger 1 poäng 1.3. Mellan 12 och 18 tecken ger 2 poäng 1.4. Fler än 18 tecken ger 0,5 poäng 2. Poäng för teckenvariation 2.1. Om lösenordet innehåller minst en gemen får det 0,5 poäng 2.2. Om lösenordet innehåller minst en versal får det 0,5 poäng 2.3. Om lösenordet innehåller minst en siffra får det 0,5 poäng 2.4. Om lösenordet innehåller minst ett av följande specialtecken får det 0,5 poäng:!"#%&/()+=?+,.- rate_my_password("python") 1.5 rate_my_password("py+honru13z0rzz") 4.0 rate_my_password("java") 1

3 ( 6) Uppgift 5 (1p) Skriv funktionen append_to_key(the_value, the_key, the_dict) som lägger till värdet the_value till listan som är associerad med nyckeln the_key i dictionaryt the_dict. Om dictionaryt inte har någon existerande lista associerad med nyckeln the_key, så skapas en ny lista med innehållet the_value. my_dict = {"hejdå": ["bye"]} append_to_key("byebye", "hejdå", my_dict) my_dict {'hejdå': ['bye', 'byebye']} append_to_key("hello", "hej", my_dict) my_dict {'hejdå': ['bye', 'byebye'], 'hej': ['hello']} append_to_key("hi", "hej", my_dict) my_dict {'hejdå': ['bye', 'byebye'], 'hej': ['hello', 'hi']} Uppgift 6 (1p) Skriv funktionen value_in_dict(the_value, the_dict) som returnerar om värdet the_value finns i dictionaryt the_dict, och om det inte finns. Alla värden i the_dict är antingen strängar eller siffervärden. d = {"a": 1, "b": 2, "c": "kylskåp"} value_in_dict(300, d) value_in_dict("a", d) value_in_dict(2, d)

4 ( 6) Uppgift 7 (4p) En biologisk familj kan representeras som en nästlad lista där varje element är en lista med tre strängar. Den första strängen är namnet på en person, den andra är namnet på personens biologiska pappa och den tredje är namnet på personens biologiska mamma. Alla namn skrivs med gemener. Se nedan: example_family = [['anna', 'bengt', 'cecilia'], ['david', 'bengt', 'cecilia'], ['fridolf', 'bengt', 'cecilia'], ['gustav', 'håkan', 'iris'], ['johan', 'håkan', 'iris'], ['knut', 'gustav', 'anna'], ['linda', 'gustav', 'anna']] a) Skriv funktionen father(name, family) som givet en lista enligt ovan och namnet på en person returnerar namnet på personens pappa. Om personen i fråga inte finns med i familjelistan returneras en tom sträng. (1p) Körexempel för 7a: father('knut', example_family) 'gustav' father('anna', example_family) 'bengt' father('urban', example_family) '' b) Skriv funktionen share_child(name1, name2, family) som givet lista enligt ovan och namnen på två personer returnerar om de har ett gemensamt barn och om de inte har ett gemensamt barn. Observera att name1 och name2 inte har någon koppling till om det är ett namn på en mamma eller pappa. Namn som inte finns med ska också hanteras. (3p) Körexempel för uppg 7b: share_child("anna", "bengt", example_family) share_child("cecilia", "bengt", example_family) share_child("bengt", "cecilia", example_family) share_child("barbie", "ken", example_family)

5 ( 6) Uppgift 8 (4p) a) Skriv funktionen draw_text_rectangle(width, height) som tar två argument, ett för bredden på en rektangel och en för höjden på rektangeln och ritar ut kantlinjerna för rektangeln på skärmen med hjälp av asterisker. (1p) draw_text_rectangle(3,3) draw_text_rectangle(9, 4) b) Skriv funktionen draw_text_triangle(height) som tar ett argument höjden (större än 0) på en triangeln och ritar ut kantlinjerna för triangeln på skärmen med hjälp av asterisker. Spetsen på triangeln ska vara i mitten på basen. (3p) draw_text_triangle(1) draw_text_triangle(2) draw_text_triangle(3) draw_text_triangle(6)

6 ( 6) Uppgift 9 - TEN4 (4p) OBS! Uppgift 9 görs bara av de som läste kursen första gången mellan HT 2009 och HT 2013. Vi använder en lista som datastruktur för att representera en abstrakt datatyp för en spelare i ett datorspel. Nedan är ett exempel: ['unic0rn', 2368, ['sword of love', 'broken helmet']] Listan består alltså av tre element. Det första är spelarens namn, det andra är spelarens poäng och det tredje elementet är en lista med namn på de saker som spelaren har. a) Skriv funktionen is_player(player) som tar in ett värde och kontrollerar så gott det går att det värdet har rätt struktur för ADT:n spelare. Om player har rätt struktur returneras, annars returneras. b) Skriv funktionen add_item(player, item_name) som lägger till värdet i item_name till listan över saker i spelaren player. Kontrollera att argumentet player som fås är av rätt struktur och att item_name är en sträng. Skriv ut ett felmeddelande om något inte är som det ska. player1 = ['unic0rn', 2368, ['sword of love', 'broken helmet']] not_a_player = ['unic0rn', 2368, 'sword of love', 'broken helmet'] is_player(player1) is_player(not_a_player) add_item(player1, "python") player1 ['unic0rn', 2368, ['sword of love', 'broken helmet', 'python']] add_item(not_a_player, "python") ERROR: wrong input.