Informasjon Prøveeksamen i IN1000 høsten 2018

Like dokumenter
Informasjon Eksamen i IN1000 høsten 2017

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

Informasjon Eksamen i IN1000 og IN1001 høsten a) 1 poeng. 1b) 1 poeng. Tid. Oppgavene. Tillatte hjelpemidler. 30. november kl. 14.

Prøveeksamen IN1000. IN Prøveeksamen. Dato november 2017 Tid 12:30-12:00 Alle trykte og skrevne hjelpemidler er tillatt.

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Objektorientert programmering i Python

INF1000 Eksamen 2014 (modifisert)

Eksamensoppgaver 2014

IN1000 Obligatorisk innlevering 7

INF1000 Eksamen 2014 (modifisert)


UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Etter uke 9 skal du. Introduksjon til objektorientert programmering. Innhold. Klasser som abstraksjoner

INF1000 Prøveeksamen Oppgave 7 og 9

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I

UNIVERSITETET I OSLO

Innhold uke 8. Objekter: Bruk og intern organisering. Beskjeder: Oblig 1 6. Beskjeder: Oblig 7 (og 8)

Objektorientert programmering i Python. Resten av semesteret. Innhold uke 9 Mer komplekse strukturer. Referanser og objekter, inkl Mentimeter spørsmål

Faglærerne prøver å besøker eksamenslokalet mellom klokka 15 og 16 for å oppklare eventuelle uklarheter og feil i oppgaveteksten.

UNIVERSITETET I OSLO

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00

Seminaroppgaver IN1010, uke 2

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Etter uke 6 skal du. Introduksjon til objektorientert programmering. Hva skjedde ~1967? INF1001. Grunnkurs i objektorientert programmering

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Innhold uke 9. Objektorientert programmering i Python. Om ukens pensum. Referanser og objekter Tema: Mer komplekse strukturer

Finne ut om en løsning er helt riktig og korrigere ved behov

Oppgave 1.1 (1 poeng) Oppgave 1.2 (2 poeng) Oppgave 1.3 (2 poeng) 1.1

Læringsmål uke 7. Introduksjon til objektorientert programmering. Paradigmet objektorientering. Objektreferanser. INF1001 Høst 2016 Uke 7

Forside. 1 Hva skrives ut?

Finne ut om en løsning er helt riktig og korrigere ved behov

Oppgavesettet består av 7 sider, inkludert denne forsiden. Kontroll& at oppgaven er komplett før du begynner å besvare spørsmålene.

UNIVERSITETET I OSLO

Ny/utsatt EKSAMEN. Dato: 6. januar 2017 Eksamenstid: 09:00 13:00

TDT4110 IT Grunnkurs Høst 2015

Løse reelle problemer

UNIVERSITETET I OSLO

Norsk informatikkolympiade runde

IN Seminaroppgaver til uke 11

UNIVERSITETET I OSLO

Introduksjon til objektorientert programmering

UNIVERSITETET I OSLO

INF Innleveringsoppgave 6

Anta at følgende programsetninger utføres. Hva skrives ut på skjermen? Hva skrives ut her (skriv nøyaktig de karakterene som printes, og bare de)?

Endret litt som ukeoppgave i INF1010 våren 2004

UNIVERSITETET I OSLO

Programmering i C++ Løsningsforslag Eksamen høsten 2005

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

UNIVERSITETET I OSLO

INF1010, 22. mai Prøveeksamen (Eksamen 12. juni 2012) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

UNIVERSITETET I OSLO

Kondisjonstest. Algoritmer og datastrukturer. Python-oppgaver. Onsdag 6. oktober Her er noen repetisjonsoppgaver i Python.

INF Ekstrainnlevering

Klasser og objekter. Tuva Kristine Thoresen 21. oktober Institutt for Informatikk

IN1010 V19, Obligatorisk oppgave 2

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

Løpende strekmann Erfaren Videregående Python PDF

TDT4110 IT Grunnkurs Høst 2016

UNIVERSITETET I OSLO

Hvordan løse problemer med programmering?

Oppgave 1. Oppgave 2. Oppgave 3. Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

UNIVERSITETET I OSLO

AlgDat - Øvingsforelesning 1 Introduksjon til Python, lenkede lister og øving 1

TDT4110 IT Grunnkurs Høst 2016

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

Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

INF1000: Forelesning 11. Oppgave 2. Oppgave 1. Husk å melde deg på prøveeksamen i INF1000! Ole Christian Lingjærde 7.november 2006

Klasser og objekter. Tuva Kristine Thoresen 4. november Institutt for Informatikk

Obligatorisk oppgave 4 i INF1010, våren 2014: "Leger og resepter" Versjon 1.1

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Oppgave 1. INF1000 Uke 13. Oppgave 2. Oppgave 3. Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI

INF1000 Behandling av tekster

Løse reelle problemer

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

INF Uke 10. Ukesoppgaver oktober 2012

EKSAMEN. Dato: 28. mai 2018 Eksamenstid: 09:00 13:00

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

2 Om statiske variable/konstanter og statiske metoder.

lfæ~~~~:::j~~:~l -.~=:~-t::-d I Alle trykte og håndskrevne EKSAMENSOPPGA VE Side l av 5 Eksamenstid:

UNIVERSITETET I OSLO

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2017

UNIVERSITETET I OSLO

EKSAMEN 6108/6108N PROGRAMMERING I JAVA Alt trykt og skriftlig materiale.

Innhold. Hva skal evalueres? Fra kurssidene. Kapittel 1: Introduction

UNIVERSITETET I OSLO

Repetisjon Novice Videregående Python PDF

Eksamen iin115 og IN110, 15. mai 1997 Side 2 Oppgave 1 Trær 55 % Vi skal i denne oppgaven se på en form for søkestrukturer som er spesielt godt egnet

INF100 INNLEVERING 3 HØSTEN 2004

INF120: Oblig 3. Yngve Mardal Moe

Obligatorisk oppgave 4: Lege/Resept

Kom forberedt til tirsdag. INF1000 Tips til obligatorisk oppgave 4. Noen generelle tips. Oblig4: Komme igang

Innhold uke 7. Objektorientert programmering i Python: Introduksjon. Lite tilbakeblikk: Programflyt og skop. Lite tilbakeblikk: Funksjoner er uttrykk

Transkript:

Prøveeksamen IN1000-INF1001-H18 Informasjon Prøveeksamen i IN1000 høsten 2018 Tid Fra tirsdag 6.11 kl. 14:15 til tirsdag 13.11 kl. 12:00 (Normal eksamenstid er 4 timer) Oppgavene Oppgave 2b og 2c er flervalgsoppgaver. Her får man det angitte antall poeng om man svarer riktig; ved galt svar eller intet svar får man 0 poeng. Dersom du mener en programmeringsoppgave er uklar kan du gjøre egne forutsetninger og beskrive disse. Du kan også legge til egne funksjoner eller metoder ved behov, med begrunnelse, og du kan benytte funksjoner eller metoder fra oppgaven selv om du ikke har skrevet dem. Tillatte hjelpemidler Alle trykte og skrevne hjelpemidler 1 1a) 1 poeng Hva er verdien til tall etter at følgende kode er utført? tall = 3+1 tall = tall*2 Maks poeng: 1 2 1b) 1 poeng Hva er verdien til variabelen tekst etter at følgende kode er utført? tekst = "a" + "c" tekst = tekst + "b" Maks poeng: 1 3 2 poeng Hva er verdien til variabelen j etter at følgende kode er utført? i = 5 j = 10 while i<j: i = i+2 j = j-1 1/11

Prøveeksamen IN1000-INF1001-H18 Maks poeng: 2 4 1d) 2 poeng Hva skrives ut på skjermen når følgende kode utføres? tallene = [1,6,4,2] a = 0 b = 0 for tall in tallene: if tall<3: a = a+tall else: b = b+tall print(a*b) Maks poeng: 2 5 1e) 2 poeng VI har en funksjon kalkuler som vist nedenfor: def kalkuler(tall): if tall<5: return tall*2 else: return tall Hva skrives ut på skjermen når følgende kode utføres? a = kalkuler(4+3) print(a) Maks poeng: 2 6 1f) 3 poeng Hva skrives ut på skjermen når følgende kode utføres? class Tall: def init (self, a, b): self._a = a self._b = b def m1(self, c): self._b = self._b + c def m2(self): self._a = self._a + self._b def m3(self): 2/11

Prøveeksamen IN1000-INF1001-H18 return 2*self._a t = Tall(3,2) t.m1(1) t.m2() t.m2() print(4+t.m3()) Maks poeng: 3 7 2a) 1 poeng Hva skrives ut på skjermen når følgende kode utføres? a = [5, 2, 4] b = a[0] b = b + 1 print(a[0]) Maks poeng: 1 8 2b) 2 poeng Hva skrives ut på skjemen når følgende kode utføres? a = [10, 8, 7] b = a c = b b[0] = 3 c[1] = 4 print(a) Velg ett alternativ [3,4] [3,8,7] [10,8,7] [3,4,7] [10,4,7] Maks poeng: 2 9 2c) 3 poeng Hvilke fire tall skrives ut på skjermen når følgende kode kjøres? class Person: def init (self, alder): self._alder = alder def doble_alder(self): 3/11

Prøveeksamen IN1000-INF1001-H18 self._alder = self._alder * 2 def hent_alder(self): return self._alder def alder_som_maaneder(self): return self._alder * 12 p1 = Person(3) p2 = p1 p3 = Person(5) p4 = p3 p1.doble_alder() print(p1.hent_alder()) print(p2.hent_alder()) print(p3.alder_som_maaneder()) print(p4.hent_alder()) Velg ett alternativ 3,3,60,5 6,3,60,60 6,3,60,5 6,6,60,60 6,6,60,5 Maks poeng: 3 10 3a) 5 poeng Skriv en funksjon penger(femkroninger, kronestykker) som tar som argumenter et gitt antall femkroninger og kronestykker, og returnerer hvor mye penger dette tilsvarer. For eksempel skal kallet penger(2,3) returnere 13. 1 Maks poeng: 5 4/11

Prøveeksamen IN1000-INF1001-H18 11 3b) 5 poeng Et togselskap har regel om at et barn kan reise gratis sammen med en voksen. Skriv en funksjon barnmedvoksen(alder1, alder2) som returnerer True dersom én av parameterverdiene er over (eller lik) 18 og den andre er under 18. Det er det samme hvilke av de to oppgitte aldrene som er voksen eller barn. Altså skal for eksempel kallet barnmedvoksen(18,5) returnere True, og det samme skal kallet barnmedvoksen(10,20). Videre skal for eksempel kallet barnmedvoksen(20,30) returnere False. 1 Maks poeng: 5 12 3c) 8 poeng def allepositive(tallene) : for tall in tallene : if (tall < 0) : return False return True Funksjonen allepositive ovenfor er ment å kontrollere at alle verdiene i listen tallene er positive. I denne oppgaven ønsker vi at du skal: 1) beskrive hva som er problemet med løsningen over 2) gi et eksempel på en liste som ikke gir resultat i henhold til intensjonen hvis den brukes som argument i et kall på funksjonen 3) foreslå endring som gjør at funksjonen oppfører seg i henhold til intensjonen 5/11

Prøveeksamen IN1000-INF1001-H18 Words: 0 Maks poeng: 8 13 3d) 8 poeng Skriv en funksjon fylltilti(tallene) som tar inn en liste med opptil 10 tall (lengden på listen kan variere, men er maksimalt 10 lang). Funksjonen skal returnere en liste som er nøyaktig 10 lang, hvor alle tall fra listen tallene kommer først, og hvor det etterpå er lagt til så mange verdier 0 som trengs for at listen skal bli nøyaktig 10 lang. 1 Maks poeng: 8 14 3e) 4 poeng 6/11

Prøveeksamen IN1000-INF1001-H18 Gitt klassen Node som vist, skriv en prosedyre som oppretter 2 objekter med verdiene "a" og "b" i en struktur som vist i figuren. I figuren er variabler vist som en firkantet boks, piler angir objektreferanser, og objektene er vist som rektangler med avrundede hjørne. Variabelen listestart refererer til objektet med verdi "a". Du kan anta at klassen Node er importert til programmet ditt. 1 Maks poeng: 4 15 3f) 3 poeng 7/11

Prøveeksamen IN1000-INF1001-H18 Utvid hovedprogrammet fra oppgave e) med kode som oppretter et nytt objekt med verdi «c» og og oppdaterer referanser slik at du får en datastruktur som vist i vedlagte figur. Klassen Node er uendret, og objekter av klassen skal kun aksesseres ved hjelp av de oppgitte metodene. 1 Maks poeng: 3 16 4a) 8 poeng Denne oppgaven består av en rekke deloppgaver der du skal implementere komponenter av et større system. Om du hopper over en deloppgave er det likevel viktig at du leser hele denne teksten (den ligger samlet som en pdf-fil vedlagt hver deloppgave). I hver av deloppgavene kan du bruke klassene og metodene fra tidligere deloppgaver, også om du ikke har programmert dem. Skriv klassen Hytte med metoder som angitt i vedlegget, deloppgave a) 8/11

Prøveeksamen IN1000-INF1001-H18 Maks poeng: 8 17 4b) 10 poeng Skriv klassen Tur som beskrevet i vedlegget, deloppgave b) 1 Maks poeng: 10 18 4c) 10 poeng + 4d) 6 poeng Skriv klassen Turplanlegger som beskrevet i vedlegget, deloppgaver c) og d). 1 Maks poeng: 16 9/11

Prøveeksamen IN1000-INF1001-H18 Maks poeng: 16 19 4e) 6 poeng Skriv et testprogram som beskrevet i vedlegget, deloppgave e) 1 Maks poeng: 6 20 5a) og b) 10 poeng I en bedrift har hver ansatt en telefon som kunder kan kontakte dem på. Når en ansatt tar lunsj, setter han/hun opp viderekobling til en annen ansatt. Denne kan igjen ha satt opp viderekobling, noe som gjør at en kunde kan bli viderekoblet flere ganger før han/hun får svar. Dette kan vi representere som en liste hvor hver ansatt tilsvarer en bestemt indeks fra 0 og oppover. Om en ansatt er tilgjengelig for å snakke ligger verdien -1 på dennes lokasjon i lista. Om en ansatt har viderekoblet legges i stedet inn indeksen det er viderekoblet til. F.eks. vil lista [2, -1, -1, 0] representere at man har fire ansatte, hvor ansatt 0 viderekobler til ansatt 2, ansatt 1 og ansatt 2 er tilgjengelig for å snakke, mens ansatt 3 viderekobler til ansatt 0. a) Skriv en funksjon ring som tar inn en viderekoblingsliste (som beskrevet over) og et ansattnummer som kunden opprinnelig ringer til. Funksjonen skal returnere hvilket ansattnummer kunden ender opp med å snakke med. Anta i denne deloppgaven at dette er garantert å gå i orden (at man ikke kan ende opp med å bli viderekoblet i en evig løkke). F.eks. skal kallet ring(1, [2, -1, -1, 0]) returnere 1 (ansatt 1 er direkte tilgjengelig), mens kallet ring(3, [2, -1, -1, 0]) skal returnere 2 (man blir viderekoblet fra ansatt 3 til ansatt 0 til ansatt 2). b) Skriv en funksjon gyldig som tar inn en viderekoblingsliste og sjekker om det finnes mulighet for å havne i en evig løkke av viderekobling i denne listen. Et eksempel er lista [1,-1, 3,4,2] hvor man ved å ringe ansatt 2 blir viderekoblet til ansatt 3, videre til ansatt 4 og så tilbake igjen til ansatt 2 i en evig løkke. Dersom det ikke finnes noen slik evig løkke av viderekobling i lista skal funksjonen returnere true. Dersom det finnes minst én slik løkke av viderekobling skal den returnere False. Altså skal kallet gyldig([2, -1, -1, 0]) returnere true, mens kallet gyldig([1,-1, 3,4,2]) skal returnere false. 10/11

Prøveeksamen IN1000-INF1001-H18 1 Maks poeng: 10 11/11

Question 16 Attached

Oppgave 4: Planlegging av turer fra hytte til hytte (40 poeng) Denne oppgaven består av en rekke deloppgaver der du skal implementere komponenter av et større system. Om du hopper over en deloppgave er det likevel viktig at du leser hele denne teksten (den ligger samlet som en pdf-fil vedlagt hver deloppgave). I hver av deloppgavene kan du bruke klassene og metodene fra tidligere deloppgaver, også om du ikke har programmert dem. Du skal implementere deler av et system som organiserer en rekke turer. Hver tur går over flere dager med overnatting på en ny hytte hver dag. Den delen av systemet du trenger å kjenne til består av klassene Hytte, Tur og Turplanlegger. Det anbefales å lage en tegning av strukturen for eget bruk. Klassen Turplanlegger holder rede på alle hytter i systemet ved hjelp av en ordbok (Dictionary) med hyttenavnet som nøkkel og referanse til hytta som verdi. Klassen Turplanlegger har også en liste med referanser til turer. I klassen Tur finnes det en tekst (som kan inneholde blanke, men ikke linjeskift) som beskriver turen, og en liste med referanser til de hyttene som besøkes i løpet av turen (som alle ligger i Turplanleggers ordbok). Hvert objekt av klassen Hytte har et unikt navn, et antall sengeplasser og prisen for overnatting per seng i denne hytta (alltid lik pris for hver seng i en hytte). Oppgave a) (8 poeng) Skriv klassen Hytte. Konstruktøren skal ha parametere for instansvariablene navn, antall senger og pris for overnatting. Videre skal klassen ha følgende metoder: hentnavn som returnerer hyttenavnet. totpris som returnerer prisen for et antall personer (antallet er parameter til metoden) for én natt. sjekkplass som returnerer True om hytta har nok senger til et antall personer (parameter til metoden), ellers False. str som returnerer en bruker-vennlig streng med hyttas navn, antall senger og pris per seng. eq som sammenligner objektet den kalles på med et annet objekt (referansen er parameter til metoden). To Hytte-objekter er like hvis de har samme navn, da returneres True, ellers False. Oppgave b) 10 poeng Skriv klassen Tur med en konstruktør som tar imot en liste med referanser til hytter, og en (en-linjes) tekst som beskriver turen. Videre skal klassen ha følgende metoder: skrivtur som skriver ut på terminal beskrivelsen av turen, og deretter informasjon om hver hytte turen går innom. sjekkprisplass som går gjennom alle hyttene på turen og sjekker om det er nok senger for et antall personer på hver av hyttene, og om totalprisen for turen (alle personer på alle hyttene) er under et maksbeløp. Antall personer og maksbeløp er parametere til metoden. Metoden returnerer True om det er nok plasser og kostnadene blir under maksbeløpet, ellers False.

Oppgave c) 10 poeng Du skal skrive klassen Turplanlegger med konstruktør og metodene _hytterfrafil og _turerfrafil. Metodene kalles fra konstruktøren og leser inn data til henholdsvis ordboken med hytter, og listen med turer. Filnavnene er parametere til konstruktøren og til hver sin metode. Metoden _hytterfrafil åpner og leser fra filnavnet gitt i parameter til metoden. Filen har et ukjent antall linjer på følgende format (to hytter vist) Hyttenavn antsenger pris Hyttenavn antsenger pris : der første streng skal leses som en tekst og de to siste strengene som heltall og flyttall. Hver hytte representeres i et objekt av klassen Hytte, som lagres i en ordbok i med hyttenavnene som nøkler og referanse til objektet som verdier. Denne ordboken returneres fra metoden når filen er ferdig lest. Metoden _turerfrafil åpner og leser all informasjon om alle turene i systemet fra filen med navn oppgitt i parameteren, og oppretter og returnerer en liste over Tur-objekter. Denne filen inneholder to linjer per tur. Første linje inneholder turbeskrivelsen (typisk flere ord), andre linje inneholder navnene på alle hytter på turen. Ingen hyttenavn inneholder mellomrom (space). Samme hytte kan inngå i flere turer. Filen har følgende format: En tekst som beskriver en tur Hyttenavn1 Hyttenavn2 Hyttenavn3 En tekst som beskriver en annen tur Hyttenavn1 Hyttenavn4 : Oppgave d) 6 poeng Skriv en metode finnturer i klassen Turplanlegger som kan brukes til å identifisere turer som har plass til et gitt antall personer på alle hyttene, der totalkostnad for alle personer alle dager er under et maksimalbeløp, og som ikke varer mer enn et maks antall dager (turene går alltid til en ny hytte hver dag). Metoden skal gå gjennom alle turer, og skrive ut på terminalen all informasjon om de turene som tilfredsstiller kravene. Antall personer, maksbeløp og maksimalt antall dager er parametere til metoden. Du kan bruke metoder fra tidligere oppgaver uansett om du har skrevet dem eller ikke. Oppgave e) 6 poeng Skriv et testprogram for klassen Turplanlegger som gjør følgende: Oppretter et objekt av klassen Turplanlegger som leser inn data fra filene hytter.txt og turer.txt Skriver ut all informasjon om alle turer som tilfredsstiller følgende krav: o ikke varer mer enn 5 dager o har overnattingsplass på alle hyttene for et følge på 7 personer,.. o..med et overnattingsbudsjett på til sammen 7000,- for alle 7, hele turen.

Question 17 Attached

Oppgave 4: Planlegging av turer fra hytte til hytte (40 poeng) Denne oppgaven består av en rekke deloppgaver der du skal implementere komponenter av et større system. Om du hopper over en deloppgave er det likevel viktig at du leser hele denne teksten (den ligger samlet som en pdf-fil vedlagt hver deloppgave). I hver av deloppgavene kan du bruke klassene og metodene fra tidligere deloppgaver, også om du ikke har programmert dem. Du skal implementere deler av et system som organiserer en rekke turer. Hver tur går over flere dager med overnatting på en ny hytte hver dag. Den delen av systemet du trenger å kjenne til består av klassene Hytte, Tur og Turplanlegger. Det anbefales å lage en tegning av strukturen for eget bruk. Klassen Turplanlegger holder rede på alle hytter i systemet ved hjelp av en ordbok (Dictionary) med hyttenavnet som nøkkel og referanse til hytta som verdi. Klassen Turplanlegger har også en liste med referanser til turer. I klassen Tur finnes det en tekst (som kan inneholde blanke, men ikke linjeskift) som beskriver turen, og en liste med referanser til de hyttene som besøkes i løpet av turen (som alle ligger i Turplanleggers ordbok). Hvert objekt av klassen Hytte har et unikt navn, et antall sengeplasser og prisen for overnatting per seng i denne hytta (alltid lik pris for hver seng i en hytte). Oppgave a) (8 poeng) Skriv klassen Hytte. Konstruktøren skal ha parametere for instansvariablene navn, antall senger og pris for overnatting. Videre skal klassen ha følgende metoder: hentnavn som returnerer hyttenavnet. totpris som returnerer prisen for et antall personer (antallet er parameter til metoden) for én natt. sjekkplass som returnerer True om hytta har nok senger til et antall personer (parameter til metoden), ellers False. str som returnerer en bruker-vennlig streng med hyttas navn, antall senger og pris per seng. eq som sammenligner objektet den kalles på med et annet objekt (referansen er parameter til metoden). To Hytte-objekter er like hvis de har samme navn, da returneres True, ellers False. Oppgave b) 10 poeng Skriv klassen Tur med en konstruktør som tar imot en liste med referanser til hytter, og en (en-linjes) tekst som beskriver turen. Videre skal klassen ha følgende metoder: skrivtur som skriver ut på terminal beskrivelsen av turen, og deretter informasjon om hver hytte turen går innom. sjekkprisplass som går gjennom alle hyttene på turen og sjekker om det er nok senger for et antall personer på hver av hyttene, og om totalprisen for turen (alle personer på alle hyttene) er under et maksbeløp. Antall personer og maksbeløp er parametere til metoden. Metoden returnerer True om det er nok plasser og kostnadene blir under maksbeløpet, ellers False.

Oppgave c) 10 poeng Du skal skrive klassen Turplanlegger med konstruktør og metodene _hytterfrafil og _turerfrafil. Metodene kalles fra konstruktøren og leser inn data til henholdsvis ordboken med hytter, og listen med turer. Filnavnene er parametere til konstruktøren og til hver sin metode. Metoden _hytterfrafil åpner og leser fra filnavnet gitt i parameter til metoden. Filen har et ukjent antall linjer på følgende format (to hytter vist) Hyttenavn antsenger pris Hyttenavn antsenger pris : der første streng skal leses som en tekst og de to siste strengene som heltall og flyttall. Hver hytte representeres i et objekt av klassen Hytte, som lagres i en ordbok i med hyttenavnene som nøkler og referanse til objektet som verdier. Denne ordboken returneres fra metoden når filen er ferdig lest. Metoden _turerfrafil åpner og leser all informasjon om alle turene i systemet fra filen med navn oppgitt i parameteren, og oppretter og returnerer en liste over Tur-objekter. Denne filen inneholder to linjer per tur. Første linje inneholder turbeskrivelsen (typisk flere ord), andre linje inneholder navnene på alle hytter på turen. Ingen hyttenavn inneholder mellomrom (space). Samme hytte kan inngå i flere turer. Filen har følgende format: En tekst som beskriver en tur Hyttenavn1 Hyttenavn2 Hyttenavn3 En tekst som beskriver en annen tur Hyttenavn1 Hyttenavn4 : Oppgave d) 6 poeng Skriv en metode finnturer i klassen Turplanlegger som kan brukes til å identifisere turer som har plass til et gitt antall personer på alle hyttene, der totalkostnad for alle personer alle dager er under et maksimalbeløp, og som ikke varer mer enn et maks antall dager (turene går alltid til en ny hytte hver dag). Metoden skal gå gjennom alle turer, og skrive ut på terminalen all informasjon om de turene som tilfredsstiller kravene. Antall personer, maksbeløp og maksimalt antall dager er parametere til metoden. Du kan bruke metoder fra tidligere oppgaver uansett om du har skrevet dem eller ikke. Oppgave e) 6 poeng Skriv et testprogram for klassen Turplanlegger som gjør følgende: Oppretter et objekt av klassen Turplanlegger som leser inn data fra filene hytter.txt og turer.txt Skriver ut all informasjon om alle turer som tilfredsstiller følgende krav: o ikke varer mer enn 5 dager o har overnattingsplass på alle hyttene for et følge på 7 personer,.. o..med et overnattingsbudsjett på til sammen 7000,- for alle 7, hele turen.

Question 18 Attached

Oppgave 4: Planlegging av turer fra hytte til hytte (40 poeng) Denne oppgaven består av en rekke deloppgaver der du skal implementere komponenter av et større system. Om du hopper over en deloppgave er det likevel viktig at du leser hele denne teksten (den ligger samlet som en pdf-fil vedlagt hver deloppgave). I hver av deloppgavene kan du bruke klassene og metodene fra tidligere deloppgaver, også om du ikke har programmert dem. Du skal implementere deler av et system som organiserer en rekke turer. Hver tur går over flere dager med overnatting på en ny hytte hver dag. Den delen av systemet du trenger å kjenne til består av klassene Hytte, Tur og Turplanlegger. Det anbefales å lage en tegning av strukturen for eget bruk. Klassen Turplanlegger holder rede på alle hytter i systemet ved hjelp av en ordbok (Dictionary) med hyttenavnet som nøkkel og referanse til hytta som verdi. Klassen Turplanlegger har også en liste med referanser til turer. I klassen Tur finnes det en tekst (som kan inneholde blanke, men ikke linjeskift) som beskriver turen, og en liste med referanser til de hyttene som besøkes i løpet av turen (som alle ligger i Turplanleggers ordbok). Hvert objekt av klassen Hytte har et unikt navn, et antall sengeplasser og prisen for overnatting per seng i denne hytta (alltid lik pris for hver seng i en hytte). Oppgave a) (8 poeng) Skriv klassen Hytte. Konstruktøren skal ha parametere for instansvariablene navn, antall senger og pris for overnatting. Videre skal klassen ha følgende metoder: hentnavn som returnerer hyttenavnet. totpris som returnerer prisen for et antall personer (antallet er parameter til metoden) for én natt. sjekkplass som returnerer True om hytta har nok senger til et antall personer (parameter til metoden), ellers False. str som returnerer en bruker-vennlig streng med hyttas navn, antall senger og pris per seng. eq som sammenligner objektet den kalles på med et annet objekt (referansen er parameter til metoden). To Hytte-objekter er like hvis de har samme navn, da returneres True, ellers False. Oppgave b) 10 poeng Skriv klassen Tur med en konstruktør som tar imot en liste med referanser til hytter, og en (en-linjes) tekst som beskriver turen. Videre skal klassen ha følgende metoder: skrivtur som skriver ut på terminal beskrivelsen av turen, og deretter informasjon om hver hytte turen går innom. sjekkprisplass som går gjennom alle hyttene på turen og sjekker om det er nok senger for et antall personer på hver av hyttene, og om totalprisen for turen (alle personer på alle hyttene) er under et maksbeløp. Antall personer og maksbeløp er parametere til metoden. Metoden returnerer True om det er nok plasser og kostnadene blir under maksbeløpet, ellers False.

Oppgave c) 10 poeng Du skal skrive klassen Turplanlegger med konstruktør og metodene _hytterfrafil og _turerfrafil. Metodene kalles fra konstruktøren og leser inn data til henholdsvis ordboken med hytter, og listen med turer. Filnavnene er parametere til konstruktøren og til hver sin metode. Metoden _hytterfrafil åpner og leser fra filnavnet gitt i parameter til metoden. Filen har et ukjent antall linjer på følgende format (to hytter vist) Hyttenavn antsenger pris Hyttenavn antsenger pris : der første streng skal leses som en tekst og de to siste strengene som heltall og flyttall. Hver hytte representeres i et objekt av klassen Hytte, som lagres i en ordbok i med hyttenavnene som nøkler og referanse til objektet som verdier. Denne ordboken returneres fra metoden når filen er ferdig lest. Metoden _turerfrafil åpner og leser all informasjon om alle turene i systemet fra filen med navn oppgitt i parameteren, og oppretter og returnerer en liste over Tur-objekter. Denne filen inneholder to linjer per tur. Første linje inneholder turbeskrivelsen (typisk flere ord), andre linje inneholder navnene på alle hytter på turen. Ingen hyttenavn inneholder mellomrom (space). Samme hytte kan inngå i flere turer. Filen har følgende format: En tekst som beskriver en tur Hyttenavn1 Hyttenavn2 Hyttenavn3 En tekst som beskriver en annen tur Hyttenavn1 Hyttenavn4 : Oppgave d) 6 poeng Skriv en metode finnturer i klassen Turplanlegger som kan brukes til å identifisere turer som har plass til et gitt antall personer på alle hyttene, der totalkostnad for alle personer alle dager er under et maksimalbeløp, og som ikke varer mer enn et maks antall dager (turene går alltid til en ny hytte hver dag). Metoden skal gå gjennom alle turer, og skrive ut på terminalen all informasjon om de turene som tilfredsstiller kravene. Antall personer, maksbeløp og maksimalt antall dager er parametere til metoden. Du kan bruke metoder fra tidligere oppgaver uansett om du har skrevet dem eller ikke. Oppgave e) 6 poeng Skriv et testprogram for klassen Turplanlegger som gjør følgende: Oppretter et objekt av klassen Turplanlegger som leser inn data fra filene hytter.txt og turer.txt Skriver ut all informasjon om alle turer som tilfredsstiller følgende krav: o ikke varer mer enn 5 dager o har overnattingsplass på alle hyttene for et følge på 7 personer,.. o..med et overnattingsbudsjett på til sammen 7000,- for alle 7, hele turen.

Question 19 Attached

Oppgave 4: Planlegging av turer fra hytte til hytte (40 poeng) Denne oppgaven består av en rekke deloppgaver der du skal implementere komponenter av et større system. Om du hopper over en deloppgave er det likevel viktig at du leser hele denne teksten (den ligger samlet som en pdf-fil vedlagt hver deloppgave). I hver av deloppgavene kan du bruke klassene og metodene fra tidligere deloppgaver, også om du ikke har programmert dem. Du skal implementere deler av et system som organiserer en rekke turer. Hver tur går over flere dager med overnatting på en ny hytte hver dag. Den delen av systemet du trenger å kjenne til består av klassene Hytte, Tur og Turplanlegger. Det anbefales å lage en tegning av strukturen for eget bruk. Klassen Turplanlegger holder rede på alle hytter i systemet ved hjelp av en ordbok (Dictionary) med hyttenavnet som nøkkel og referanse til hytta som verdi. Klassen Turplanlegger har også en liste med referanser til turer. I klassen Tur finnes det en tekst (som kan inneholde blanke, men ikke linjeskift) som beskriver turen, og en liste med referanser til de hyttene som besøkes i løpet av turen (som alle ligger i Turplanleggers ordbok). Hvert objekt av klassen Hytte har et unikt navn, et antall sengeplasser og prisen for overnatting per seng i denne hytta (alltid lik pris for hver seng i en hytte). Oppgave a) (8 poeng) Skriv klassen Hytte. Konstruktøren skal ha parametere for instansvariablene navn, antall senger og pris for overnatting. Videre skal klassen ha følgende metoder: hentnavn som returnerer hyttenavnet. totpris som returnerer prisen for et antall personer (antallet er parameter til metoden) for én natt. sjekkplass som returnerer True om hytta har nok senger til et antall personer (parameter til metoden), ellers False. str som returnerer en bruker-vennlig streng med hyttas navn, antall senger og pris per seng. eq som sammenligner objektet den kalles på med et annet objekt (referansen er parameter til metoden). To Hytte-objekter er like hvis de har samme navn, da returneres True, ellers False. Oppgave b) 10 poeng Skriv klassen Tur med en konstruktør som tar imot en liste med referanser til hytter, og en (en-linjes) tekst som beskriver turen. Videre skal klassen ha følgende metoder: skrivtur som skriver ut på terminal beskrivelsen av turen, og deretter informasjon om hver hytte turen går innom. sjekkprisplass som går gjennom alle hyttene på turen og sjekker om det er nok senger for et antall personer på hver av hyttene, og om totalprisen for turen (alle personer på alle hyttene) er under et maksbeløp. Antall personer og maksbeløp er parametere til metoden. Metoden returnerer True om det er nok plasser og kostnadene blir under maksbeløpet, ellers False.

Oppgave c) 10 poeng Du skal skrive klassen Turplanlegger med konstruktør og metodene _hytterfrafil og _turerfrafil. Metodene kalles fra konstruktøren og leser inn data til henholdsvis ordboken med hytter, og listen med turer. Filnavnene er parametere til konstruktøren og til hver sin metode. Metoden _hytterfrafil åpner og leser fra filnavnet gitt i parameter til metoden. Filen har et ukjent antall linjer på følgende format (to hytter vist) Hyttenavn antsenger pris Hyttenavn antsenger pris : der første streng skal leses som en tekst og de to siste strengene som heltall og flyttall. Hver hytte representeres i et objekt av klassen Hytte, som lagres i en ordbok i med hyttenavnene som nøkler og referanse til objektet som verdier. Denne ordboken returneres fra metoden når filen er ferdig lest. Metoden _turerfrafil åpner og leser all informasjon om alle turene i systemet fra filen med navn oppgitt i parameteren, og oppretter og returnerer en liste over Tur-objekter. Denne filen inneholder to linjer per tur. Første linje inneholder turbeskrivelsen (typisk flere ord), andre linje inneholder navnene på alle hytter på turen. Ingen hyttenavn inneholder mellomrom (space). Samme hytte kan inngå i flere turer. Filen har følgende format: En tekst som beskriver en tur Hyttenavn1 Hyttenavn2 Hyttenavn3 En tekst som beskriver en annen tur Hyttenavn1 Hyttenavn4 : Oppgave d) 6 poeng Skriv en metode finnturer i klassen Turplanlegger som kan brukes til å identifisere turer som har plass til et gitt antall personer på alle hyttene, der totalkostnad for alle personer alle dager er under et maksimalbeløp, og som ikke varer mer enn et maks antall dager (turene går alltid til en ny hytte hver dag). Metoden skal gå gjennom alle turer, og skrive ut på terminalen all informasjon om de turene som tilfredsstiller kravene. Antall personer, maksbeløp og maksimalt antall dager er parametere til metoden. Du kan bruke metoder fra tidligere oppgaver uansett om du har skrevet dem eller ikke. Oppgave e) 6 poeng Skriv et testprogram for klassen Turplanlegger som gjør følgende: Oppretter et objekt av klassen Turplanlegger som leser inn data fra filene hytter.txt og turer.txt Skriver ut all informasjon om alle turer som tilfredsstiller følgende krav: o ikke varer mer enn 5 dager o har overnattingsplass på alle hyttene for et følge på 7 personer,.. o..med et overnattingsbudsjett på til sammen 7000,- for alle 7, hele turen.