TDT4110 IT Grunnkurs Høst 2012



Like dokumenter
TDT4110 IT Grunnkurs Høst 2014

TDT4105 IT Grunnkurs Høst 2014

TDT4102 Prosedyreog objektorientert programmering Vår 2016

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

Python: Oppslagslister (dictionaries) og mengder 3. utgave: Kapittel 9

TDT4110 IT Grunnkurs Høst 2014

TDT4110 IT Grunnkurs Høst 2012

Øvingsforelesning i Python (TDT4110)

TDT4110 IT Grunnkurs Høst 2014

Øvingsforelesning 9 i Python (TDT4110)

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

TDT4110 IT Grunnkurs Høst 2015

Løsningsforslag Kontinuasjonseksamen i TDT4110 Informasjonsteknologi - grunnkurs

TDT4110 IT Grunnkurs Høst 2016

Bruk av oppgaver og grupper i

TDT4110 IT Grunnkurs Høst 2016

TDT4110 IT Grunnkurs Høst 2012

TDT4105 IT Grunnkurs Høst 2014

BOKMÅL Side 1 av 5. KONTERINGSEKSAMEN I FAG TDT4102 Prosedyre og objektorientert programmering. Onsdag 6. august 2008 Kl

INF109 - Uke 1b

TDT4110 IT Grunnkurs Høst 2015

TDT4102 Prosedyreog objektorientert programmering Vår 2016

Opphavsrett: Forfatter og Stiftelsen TISIP

TDT4110 Informasjonsteknologi, grunnkurs

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

TDT4102 Prosedyre og Objektorientert programmering Vår 2015

Elektronisk utlånskontroll

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl

TDT4105 IT Grunnkurs Høst 2012

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 7 Filer og unntak ( exceptions ) Professor Alf Inge Wang Stipendiat Lars Bungum

Skilpaddefraktaler Erfaren Python PDF

TDT4105 IT Grunnkurs Høst 2016

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Dictionaries og sets (mengder) Utgave 3: Kap. 9. Terje Rydland - IDI/NTNU

<?php. count tar en array som argument, og returnerer et tall som uttrykker antallet innførsler i arrayen.

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

Velkommen som ny bruker av Uni Økonomi!

INF120: Oblig 3. Yngve Mardal Moe

HØGSKOLEN I SØR-TRØNDELAG

Øvingsforelesning TDT4105

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Unntak (exceptions) (Kap 6) Dictionaries (Kap. 9) Terje Rydland - IDI/NTNU

TDT4105 IT Grunnkurs Høst 2014

TDT4102 Prosedyre og Objektorientert programmering Vår 2015

Repetisjon, del 1. TDT 4110 IT Grunnkurs Professor Guttorm Sindre

Systemutvikling (Software Engineering) TDT 4110 IT Grunnkurs Professor Guttorm Sindre

TDT4102 Prosedyre og Objektorientert programmering Vår 2015

TDT4102 Prosedyreog objektorientert programmering Vår 2016

Høst Øving 5. 1 Teori. 2 Månedskalender. Norges teknisknaturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap

FRC-Feeder-E. Et sikkert og raskt verktøy for overføring av data til File Record Converter Versjon 1.9

Soloball. Steg 1: En roterende katt. Sjekkliste. Test prosjektet. Introduksjon. Vi begynner med å se på hvordan vi kan få kattefiguren til å rotere.

MENGDER (SETS) Læringsmål og pensum. Kapittel 9.2

Husk at du skal ha to vinduer åpne. Det ene er 'Python Shell' og det andre er for å skrive kode i.

Informasjonsteori Skrevet av Joakim von Brandis,

Kanter, kanter, mange mangekanter

TDT4110 Informasjonsteknologi grunnkurs: Tema: Dictionaries og mengder (sets) - Kapittel 9. Professor Alf Inge Wang

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 14.

Løsningsforslag, Ukeoppgaver 10 INF2310, våren 2011 kompresjon og koding del II

TDT4110 Informasjonsteknologi grunnkurs: Programmering: En større case. Professor Alf Inge Wang

Læringsmål og pensum. En større case. Mål Lære å lage større og sammensatte programmer Pensum Kapitlene 1-9 og 12.

Løse reelle problemer

TDT4110 IT Grunnkurs Høst 2016

Python: Lister og tupler Gaddis: Kapittel 7

TDT4110 IT Grunnkurs Høst 2017

Løsningsforslag Kontinuasjonseksamen i TDT4110 Informasjonsteknologi - grunnkurs

Skilpadder hele veien ned

TDT4110 Informasjonsteknologi grunnkurs: Tema: Lister og tupler. - 3rd edition: Kapittel 7. Professor Alf Inge Wang

Løsningsforslag Kontinuasjonseksamen i TDT4110 Informasjonsteknologi - grunnkurs

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

Python: Intro til funksjoner. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Feilmelding Årsak Løsning

Så kommer vi til den første av de annerledes seksjonene. Seksjon 4 var en "speed-seksjon".

På tide med et nytt spill! I dag skal vi lage tre på rad, hvor spillerne etter tur merker ruter med X eller O inntil en av spillerne får tre på rad.

Installasjonguide LAG DIN EGEN BRUKERKONTO

BOKMÅL Side 1 av 7. KONTINUASJONSEKSAMEN I FAG TDT4100 Objektorientert programmering / IT1104 Programmering, videregående kurs

D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt.

Repetisjon, del 2. TDT 4110 IT Grunnkurs Professor Guttorm Sindre

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Et større case. Terje Rydland - IDI/NTNU. Lære å lage større og sammensatte programmer

AVSLUTTENDE EKSAMEN I. TDT4160 Datamaskiner Grunnkurs. Torsdag 29. November 2007 Kl

Lage større programmer (Python, relatert til teoridelen om Software Engineering ) TDT 4110 IT Grunnkurs Professor Guttorm Sindre

Lærebok. Opplæring i CuraGuard. CuraGuard Opplæringsbok, - utviklet av SeniorSaken -

TDT Prosedyre- og objektorientert programmering

Jo, Boka som snakker har så mange muligheter innebygget at den kan brukes fra barnehagen og helt opp til 10. klasse.

I dag skal vi ved hjelp av ganske enkel Python-kode finne ut om det er mulig å tjene penger på å selge og kjøpe en aksje.

Den er nettbasert, og man trenger derfor ikke installere et eget program for å bruke den.

Introduksjon til beslutningsstrukturer

Antall sider (inkl. forsiden): 7. Alle trykte og håndskrevne

LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke September 2012 Siri Moe Jensen EKSEMPLER

Bruk av it s learning

Læringsmål og pensum. Inn- og utoperasjoner 21/10/16

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre, anders}@idi.ntnu.

TOD063 Datastrukturer og algoritmer

Månedsoversikt gjennom hele året.

Månedsoversikt gjennom hele året.

Dennis Myhre Oblig 4 Wordpress Dokumentering og Eksamensoppgaver

Eksamen i emne TDT4165 PROGRAMMERINGSSPRÅK

[Kurssidene] [ ABI - fagsider bibin ] Michael Preminger (michaelp@hio.no) 07/ Vi holder orden på verdier med hjelp av variabler

TDT4102 Prosedyreog objektorientert programmering Vår 2016

INF3100 V2016 Obligatorisk oppgave nr. 1

Transkript:

TDT4110 IT Grunnkurs Høst 2012 Norges teknisk naturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap Øving 9 Alle teorispørsmål skal besvares og begrunnes. Alle oppgavene skal demonstreres til en studentassistent på sal. I oppgaver der du skriver programkode skal også denne vises fram. Lykke til! 1 You tube, I tube La oss si at du ønsker å poste (tweete) alle dine favoritt-youtube-videoer på Twitter slik at alle følgerne dine kan se hvor god smak du har. Dessverre så har Twitter en maksimumsgrense på hvor lange meldinger man kan skrive. Å lage flere poster er heller ikke et alternativ, for da kan det jo hende at noen ikke retweeter alle postene dine. Du kommer dermed frem til den svært gode idéen med å bruke YouTube sin, korterte alternative addresse, youtu.be/<video-id>, for alle linkene. En YouTube link i lang form, "http://www. youtube.com/watch?v=<id>" kan skrives i kort form som "youtu.be/<id>". Gitt følgende liste av dine favorittvideoer. Kodesnutt 1 videoer = [ http :// www. youtube. com / watch?v=oki - td0l18a, http :// www. youtube. com / watch?v= ohg5sjyrha0, http :// www. youtube. com / watch?v= 82LCKBdjywQ, http :// www. youtube. com / watch?v= GpNSip5gyKo, http :// www. youtube. com / watch?v=rhg - JO8gIGk, http :// www. youtube. com / watch?v= OZBWfyYtYQY ] Lag en funksjon returnerer en liste med alle linkene i kortform. 2 Ωsteviruset Ostelageret til Tine benytter et smart system som mapper oster med lagerhylleplass. Ostene er indeksert på navn, og hver type ost er mappet til en tuple med hylleplasser hvor nøyaktig én ost av denne typen befinner seg 1. Kodesnutt 2 viser en liten bit av Tine sin ostedatabase i form av en dictionary. Indeksering av dictionaries er ganske likt indeksering av lister. Den største forskjellen er at indekser (nøkler) kan i tillegg til tall, også være andre datatyper. I denne oppgaven er nøklene strenger. Kopier dictionarien i kodesnutt 2, og bruk den til å løse de følgende deloppgavene. 1 Advarsel: Ostelageret til tine er i virkeligheten ikke indeksert slik. Side 1 av 5

PS: I denne oppgaven trenger du ikke lage noen ekstra funksjoner. Bruk gjerne innebygde funksjoner/metoder som dict.items og str.split for å løse oppgaven. Kodesnutt 2: Tines ostelager cheeses = { cheddar : ( A235-4, A236-1, A236-2, A236-3, A236-5, C31-1, C31-2 ), mozarella : ( Q456-9, Q456-8, A234-5, Q457-1, Q457-2 ), gombost : ( ZLAFS55-4, ZLAFS55-9, GOMBOS -7, A236-4 ), geitost : ( SPAZ -1, SPAZ -3, EMACS45-0 ), port salut : ( B15-1, B15-2, B15-3, B15-4, B16-1, B16-2, B16-4 ), camembert : ( A243-1, A234-2, A234-3, A234-4, A235-1, A235-2, A235-3 ), ridder : ( GOMBOS -4, B16-3 ), } a) Finn og skriv ut alle hylleplasser til osten port salut. b) Dessverre så har hyllene A234 til A235, B13 til B15, og C31 blitt infisert av et ostespisende virus! Finn og skriv ut alle typer ost som potensielt er smittet av viruset. c) Tross osteviruset, ønsker Tine fortsatt å selge ost til det sultne norske folk. Finn alle typer ost der ingen individ er smittet av viruset og skriv ut resultatet på formen <hylleplass> <ostetype>. 3 Bursdagsdatabasen Vemund, som er en smule glemsk når det gjelder bursdager, ønsker å lage en stor database med bursdagene til alle vennene sine. For å skaffe seg et godt utgangspunkt har han etterspurt og fått tilsendt følgende database (i form av en python-dictionary) fra IDIs seksjon for data and information management, som har det statlige ansvaret for lagring av bursdager. Kodesnutt 3 birthdays = { "22 nov ": [" Lars ", " Mathias "], "10 des ": " Elle ", "30 okt ": [" Veronica ", " Rune "], "12 jan ": " Silje ", "31 okt ": " Willy ", "8 jul ": [" Brage ", " Øystein "], "1 mar ": " Nina " } Databasen består av datonøkler som peker til enten et navn eller en liste med navn som har bursdager den datoen. Dessverre er ikke denne databasen særlig komplett, så Vemund ønsker å legge til nye bursdager Side 2 av 5

etter hvert som han kommer på de. Han har laget følgende funksjon for å gjøre dette: Kodesnutt 4 def add_birthday_to_date (date, name ): Som f.eks kan kalles slik: Kodesnutt 5 add_birthday_to_date ("30 okt ", " Gunnar ") Vemund møter derimot på et problem når han prøver å legge til et bursdagsbarn på datoer som ikke finnes, eller bare har ett bursdagsbarn fra før. Istedet for at funksjonen hans gjør som den skal, grynter den og spytter tilbake en exception (et unntak) på Vemund: Kodesnutt 6 >>> add_birthday_to_date ("12 jan ", " Sindre ") Traceback ( most recent call last ): File "<stdin >", line 1, in < module > File " unntak.py", line 13, in add_birthday_to_date AttributeError : str object has no attribute append >>> add_birthday_to_date ("9 feb ", " Lillian ") Traceback ( most recent call last ): File "<stdin >", line 1, in < module > File " unntak.py", line 13, in add_birthday_to_date KeyError : 9 feb Den første feilen kommer av at verdien tilsvarende nøkkelen 12 jan ikke er en liste, men en enkel streng. Den andre feilen kommer av at nøkkelen 9 feb ikke en gang finnes i databasen. Vemund ønsker at funksjonen tar hensyn til disse grensetilfellene (streng isteden for liste, manglende nøkkel) og gjør som den skal likevel, men han er litt sløv i Python, og etterspør din hjelp til å løse problemet 2. Oppgaven din er å løse dette problemet ved hjelp av Python sin støtte for unntakshåndtering der du benytter setningene try og except. Mao. må du modifiserere funksjonen slik at den virker med brukseksemplene som nettopp ble vist. Vemund har også spesifisert at han er allergisk mot if-setninger, så denne oppgaven er du nødt til å løse uten noen form for kondisjonelle setninger bortsett fra try/except. 2 Hvis du tilfeldigvis også heter Vemund så må du likevel gjøre denne oppgaven. Side 3 av 5

4 Tallforekomster i fil I denne oppgaven skal du lese fra en fil nummer.txt som inneholder en liste med tall. Filen finner du på øvingssiden. a) Lag funksjonen number_of_lines(filename) som returnerer antall linjer i filen med navn filename. b) Lag funksjonen number_frequency(filename) som returnerer en dictionary der hver nøkkel er et tall, og verdien til en nøkkel er antall forekomster av det tallet i filen med navn filename. c) Kall funksjonen number_frequency på nummer.txt, og for hvert tall i resultatet skriver du ut en linje med tallet sammen med antall forekomster, separart med et kolon. Eksempel 1: Input 1 3 4 5 5 3 1 2 0 9 8 2 Eksempel 2: Dictionary (intern representasjon) { 0: 1, 1: 2, 2: 2, 3: 2, 4: 1, 5: 2, 8: 1, 9: 1 } Eksempel 3: Output 0: 1 1: 2 2: 2 3: 2 4: 1 5: 2 8: 1 9: 1 PS: output trenger ikke å være sortert på noen måte. Side 4 av 5

5 (frivillig) Opptaksgrenser I denne oppgaven skal vi lese inn en fil med opptaksgrensene fra Samordna Opptak, filen er på CSV (Comma separated values)-format, noe som betyr at hver linje er en liste med felter separert med komma. Tekstfelter er omsluttet av hermetegn ("). Første felt er studiets navn. Andre felt er poenggrensen, som er enten et tall, eller "Alle" dersom alle kom inn. F.eks. "NTNU 194459 Antikkens kultur","alle" sier at alle som søkte kom inn på dragvollstudiet Antikkens kultur ved NTNU. Hver funksjon i de følgendene deloppgavene tar data fra filen poenggrenser_2011.csv 3 som input. Det anbefales at du leser inn denne filen og lagrer innholdet en plass slik at du slipper å lese den på nytt i hver deloppgave. a) Skriv en funksjon som finner ut hvor mange studier som tok inn alle søkere. b) Skriv en funksjon som finner gjennomsnittlig opptaksgrense for NTNU. Ikke ta med studier som tok inn alle søkere. c) Skriv en funksjon som finner studiet med lavest opptaksgrense (som IKKE tok inn alle søkere) og studiet med høyeste opptaksgrense. Funksjonen skal returnere en tuppel med de to verdiene. 3 Denne filen finner du på øvingssiden. Side 5 av 5