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

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

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

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

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

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

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

Eksamensoppgave i IFUD1025 Programmering i Java og IINI4013 Programmering i Java

Eksamensoppgave i IFUD1025 Programmering i Java

Eksamensoppgave i IFUD1025 Programmering i Java

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

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

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

Eksamensoppgave i IFUD1025 Programmering i Java

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

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

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

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

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

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

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO

EKSAMEN OBJEKTORIENTERT PROGRAMMERING Alle trykte og skrevne. Java API dokumentasjon er tilgjengelig lokalt på hver maskin.

UNIVERSITETET I OSLO

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

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

UNIVERSITETET I OSLO

String-manipulasjon og I/O i Java. INF1000 h14 - Hans Petter Taugbøl Kragset

INF1000 Behandling av tekster

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

LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring. Else Lervik, januar 2012.

Klasser skal lages slik at de i minst mulig grad er avhengig av at klienten gjør bestemte ting STOL ALDRI PÅ KLIENTEN!

Informasjon Prøveeksamen i IN1000 høsten 2018

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF Høst 2011)

Eksamen IN1010/INF1010 våren 2018

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

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Oblig 4Hybelhus litt mer tips enn i oppgaven

UNIVERSITETET I OSLO

Algoritmer og Datastrukturer

UNIVERSITETET I OSLO

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

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

1. Finn klassene (hvilke objekter er det i problemet) 1. Dataene som beskriver problemet (hvilke objekter har vi og hvor mange klasser er det?

UNIVERSITETET I OSLO

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

HØGSKOLEN I SØR-TRØNDELAG

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

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

Algoritmer og Datastrukturer

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

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

HØGSKOLEN I SØR-TRØNDELAG

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

Endret litt som ukeoppgave i INF1010 våren 2004

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

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE. Antall sider (Inkl forsiden): 8. Alle trykte og håndskrevne

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

EKSAMENSOPPGAVE I INF-1100

EKSAMEN. Dato: 18. mai 2017 Eksamenstid: 09:00 13:00

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

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

INF106 Objektorientert programmering

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

EKSAMEN med løsningsforslag

Algoritmer og Datastrukturer

Løsningsforslag til eksamen i INF1000 våren 2006

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

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

HØGSKOLEN I SØR-TRØNDELAG

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

3 emner i dag! INF1000 Uke 5. Objekter og pekere. null. Litt om objekter, pekere og null Filer og easyio Litt mer om tekster

HØGSKOLEN I SØR-TRØNDELAG

INF1000 (Uke 5) Mer om løkker, arrayer og metoder

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF Uke 11. Ukeoppgaver oktober 2012

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; }

UNIVERSITETET I OSLO

Blokker og metoder INF1000 (Uke 6) Metoder

Leksjon 7. Filer og unntak

UNIVERSITETET I OSLO

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

Løse reelle problemer

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO

Transkript:

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL Kandidatnr: Eksamensdato: Varighet: Emnekode: Emnenavn: Klasse(r): Studiepoeng: Faglærer(e): Kontaktperson (adm.) Hjelpemidler: Oppgavesettet består av: Vedlegg består av: 3. desember 2014 4 timer (9:00-13:00) IFUD1025 NETT2014H 5 Vuokko-Helena Caseiro (tlf. +39 06 51 26 063) Ingrid Island (tlf. 73 55 95 64) Alle skrevne og trykte hjelpemidler samt godkjent kalkulator 2 oppgaver og 6 sider (inkludert forside og vedlegg) 1 side Merknad: Oppgaveteksten kan beholdes av studenter som sitter eksamenstiden ut. Lykke til!

HiST Avdeling for informatikk og e-læring Side 2 av 6 Oppgave 1 (50 %) Turister i byen Pir kan velge å kjøpe seg et Pir-kort som gir rabatt på mye i byen, for eksempel på museer, sightseeing og offentlig transport. Et Pir-kort varer i 24, 48 eller 72 timer. På turistinformasjonen trengs et program for å kunne beregne hvor mye besøk i Pir vil koste med og uten kort. Eksempel: En familie ønsker å kjøpe følgende tre tjenester: - 8-tall-museet: Én voksen 22 ; ett barn 11 ; 50% rabatt med Pir-kort - Iskremrunden: Én voksen 15 ; ett barn 15 ; 20% rabatt med Pir-kort - Offentlig transport: Én voksen 7 ; ett barn 5 ; gratis med Pir-kort Familien vil gjøre alt på ett døgn. 24-timers Pir-kortet koster 20 for én voksen og 10 for ett barn. Familien er på to voksne og to barn. Regnestykkene er da: 8-tall-museet 66 fordi 2 * 22 + 2 * 11 = 66 + Iskremrunden 60 fordi 2 * 15 + 2 * 15 = 60 + Offentlig transport 24 fordi 2 * 7 + 2 * 5 = 24 = Totalpris uten Pir-kort: 150 8-tall-museet 33 fordi 66 66 * 50 / 100 = 33 + Iskremrunden 48 fordi 60 60 * 20 / 100 = 48 + Offentlig transport 0 fordi 24 24 * 100 / 100 = 0 + 24-timers Pir-kort 60 fordi 2 * 20 + 2 * 10 = 60 = Totalpris uten Pir-kort: 141 Med Pir-kort sparer familien: 9 fordi 150 141 = 9 Du skal lage to klasser: Tjeneste og Besoek. Et Tjeneste-objekt skal representere en tjeneste som kan kjøpes i Pir. Et Besoek-objekt skal representere de tjenestene som en gruppe mennesker ønsker mens de er sammen i Pir. a) Begynn å lage klassen Tjeneste. Objektvariablene er o beskrivelse: en tekstlig beskrivelse av denne tjenesten o voksenpris: prisen i euro for én voksen o barnepris: prisen i euro for ett barn o rabattmedkort: antall prosent rabatt med Pir-kort Lag en passende konstruktør. Eksemplet fortsatt: For et Tjeneste-objekt som representerer den første tjenesten har vi: beskrivelse er "8-tall-museet", voksenpris er 22, barnepris er 11, rabattmedkort er 50. b) Lag en Tjeneste-metode public double finnpris(int antallvoksne, int antallbarn) Metoden skal returnere prisen for denne tjenesten når det er antallvoksne voksne og antallbarn barn, og ingen bruker noe Pir-kort. Eksemplet fortsatt: For 8-tall museet skal metoden returnere 66 når antallvoksne er 2 og antallbarn er 2. c) Lag en Tjeneste-metode public double finnprismedkort(int antallvoksne, int antallbarn) Metoden skal returnere prisen for denne tjenesten når det er antallvoksne voksne og antallbarn barn, og alle bruker Pir-kort.

HiST Avdeling for informatikk og e-læring Side 3 av 6 Eksemplet fortsatt: For 8-tall-museet skal metoden returnere 33 når antallvoksne er 2 og antallbarn er 2. d) Begynn å lage klassen Besoek. Objektvariablene er o antallvoksne: antall voksne i gruppen o antallbarn: antall barn i gruppen o tjenestene av type Tjeneste[]: Tjenestene som gruppen ønsker (unntatt eventuelt Pir-kort) ligger fortløpende fra og med indeks 0 og til og med indeks antalltjenester 1; resten av tabellen er ubrukt og inneholder null. o antalltjenester: antall tjenester i tabellen tjenestene Lag en passende konstruktør. Konstruktøren skal ha tre parametre, for henholdsvis antall voksne, antall barn og tabellstørrelsen Eksemplet fortsatt: Ved å kalle konstruktøren kan man kunne lage et Besoek-objekt som representerer familien med to voksne og to barn, med en tabell som foreløpig ikke inneholder noen tjenester og med antalltjenester lik 0. e) Lag en Besoek-metode public boolean leggtiltjeneste(tjeneste tjenesten) Hvis det er plass, skal metoden legge tjenesten i tabellen og returnere true. Hvis det ikke er plass, skal metoden returnere false. Eksemplet fortsatt: Hvis det er plass, skal hver av de tre tjenestene (8-tall-museet, Iskremrunden og Offentlig transport) kunne legges inn ved å kalle metoden tre ganger. f) Lag en Besoek-metode public double finnpris() Metoden skal returnere prisen for dette besøket når ingen i gruppen bruker noe Pirkort. Eksemplet fortsatt: Metoden skal returnere 150. Også et Pir-kort vil vi representere som et Tjeneste-objekt. g) Lag en Besoek-metode public double finnprismedkort(tjeneste kort) Metoden skal returnere prisen for dette besøket når alle i gruppen bruker Pir-kortet kort. Du trenger ikke å sjekke at kort er et Pir-kort. Eksemplet fortsatt: Metoden skal returnere 141. h) Lag en Besoek-metode public double finninnspartmedkort(tjeneste kort) Hvis besøket er billigere med Pir-kortet kort enn uten noe Pir-kort, skal metoden returnere antall euro spart ved å bruke kort. Ellers skal metoden returnere 0. Du trenger ikke å sjekke at kort er et Pir-kort. Eksemplet fortsatt: Metoden skal returnere 9.

HiST Avdeling for informatikk og e-læring Side 4 av 6 Oppgave 2 (50 % ) På det internasjonale bakeriet «Hemmelighetskremmeriet» er oppskriftene passordbeskyttet. Alle passordene er «søte». Litt forenklet vil det si at passordene bare inneholder bokstaver og mellomrom (mellomrom er tegnet ʹ ʹ), og at det er en passelig veksling mellom vokaler og konsonanter. Det skal lages en klasse Soetsaker både for å sjekke at selvvalgte passord er søte, og for å generere søte passord. Sjefen vil forøvrig også selv personlig sjekke at passord ikke er altfor enkle. Anta at det fins en klasse Bokstaver som inneholder bokstavene, oppdelt i vokaler og konsonanter, med konstruktør public Bokstaver(char[] vokalene, char[] konsonantene), og med blant annet følgende offentlige objektmetoder - boolean ervokal(char tegn): Returnerer true når tegn er en vokal, false ellers - boolean erkonsonant(char tegn): Returnerer true når tegn er en konsonant, false ellers - boolean inneholderkunbokstaver(string tekst): Returnerer true hvis hvert tegn i tekst enten er en vokal eller en konsonant, false ellers - char trekkenbokstav(): Returnerer en tilfeldig vokal eller konsonant - char trekkenvokal(): Returnerer en tilfeldig vokal - char trekkenkonsonant(): Returnerer en tilfeldig konsonant Eksempel: Vi kan ha et Bokstaver-objekt med de små norske bokstavene. Vokalene er a, e, i, o, u, y, æ, ø, å, og konsonantene er b, c, d, f, g, h, j, k, l, m, n, p, q, r, s, t, v, w, x, z. Vedlegget i dette eksamenssettet inneholder String-metoder som kan komme til nytte. Husk dessuten at + kan brukes til å lage en ny streng gitt en streng og et tegn, eller gitt to strenger. a) Begynn å lage klassen Soetsaker. Det skal være en objektvariabel bokstavene av type Bokstaver. Lag en passende konstruktør. Eksemplet fortsatt: I et Soetsaker-objekt med de små norske bokstavene vil bokstavene referere til Bokstaver-objektet med alle de små norske bokstavene. To eller flere tegn er på rad i en tekst hvis de følger rett etter hverandre et sted i teksten. For eksempel er en e, en i og en e på rad i "fiks greier". b) Lag to Soetsaker-metoder o private int finnmaxvokalerpårad(string tekst): Metoden skal returnere det største antall vokaler på rad i tekst. o private int finnmaxkonsonanterpårad(string tekst): Metoden skal returnere det største antall konsonanter på rad i tekst. Hvis du vil, kan du bruke følgende pseudokode for den første metoden: 1. Deklarer to heltallsvariabler antvokpårad og max og sett dem lik 0. 2. Ha en for-løkke der vi ser på tekst tegn for tegn, først tegnet i posisjon 0, så tegnet i posisjon 1 og så videre. For hvert tegn skal antvokpårad økes med 1 hvis tegnet er en vokal, og settes lik 0 ellers. Bruk max til å ta vare på den største verdien som antvokpårad får. 3. Returner max. Eksemplet fortsatt: Se på "fiks greier". Den første metoden skal returnere 3 og den andre 2. Hvis du bruker pseudokoden, vil antvokpårad s verdier bli 0 for f, så 1 for i, så 0 for både k, s, ʹ ʹ, g og r, så 1 for e, så 2 for i, så 3 for e, så 0 for r.

HiST Avdeling for informatikk og e-læring Side 5 av 6 Vi vil bruke mellomrom som skilletegn for å splitte tekster i ord. - En tekst uten noe mellomrom kaller vi for et ord. - Ordene i en tekst er alle de ordene vi får når vi deler opp teksten ved mellomrommene. For eksempel er det tre ord i "Fiks greier nå!", nemlig "Fiks", "greier" og "nå!". La det være gitt hvilke tegn som regnes som bokstaver, med en oppdeling av bokstavene i vokaler og konsonanter. Et ord er søtt hvis - hvert tegn i ordet er en bokstav, og - det er høyst 2 vokaler på rad i ordet, og - det er høyst 3 konsonanter på rad i ordet. En tekst er søt hvis hvert ord i teksten er søtt. Eksemplet fortsatt: - Søte ord: "fløtetøy", "i", "rips" - Søte tekster: "fløtetøy i rips", "fløtetøy", "i i" - Ikke søte ord: "Nei!" (N og! er ikke bokstaver), "fhhrtana" (5 konsonanter på rad), "ripskjeks" (4 konsonanter på rad), "greier" (3 vokaler på rad) - Ikke søte tekster: "fiks greier", "Nei! Nei!" c) Lag en Soetsaker-metode private boolean ersøttord(string tekst) Metoden skal returnere true hvis tekst er et søtt ord, false ellers. d) Lag en Soetsaker-metode public boolean ersøttekst(string tekst) Metoden skal returnere true hvis tekst er en søt tekst, false ellers. Du kan gjerne anta at det fins en Soetsaker-metode String[] finnordene(string tekst) som returnerer alle ordene i tekst. e) Lag en Soetsaker-metode private String lagsøttord(int ordlengde) Metoden skal returnere et søtt ord av lengde ordlengde. Bygg opp ordet ved å legge til én og én tilfeldig bokstav returnert av en Bokstaver-metode. Men hvis du nettopp har trukket to vokaler etter hverandre, må du sørge for at neste bokstav er en konsonant; og hvis du nettopp har trukket tre konsonanter etter hverandre, må du sørge for at neste bokstav er en vokal. Eksemplet fortsatt: "ikay" er blitt bygd opp, og en femte bokstav skal legges til etter de to vokalene a og y. Da må du sørge for at denne nye bokstaven er en konsonant. f) Lag en Soetsaker-metode public String lagsøttekst(int tekstlengde, int maxordlengde) Metoden skal returnere en søt tekst av lengde tekstlengde. Hvert ord i teksten skal lages av metoden lagsøttord() fra deloppgave 2e), og ordet skal ha tilfeldig lengde f.o.m. 1 og t.o.m. maxordlengde. Hvis det siste ordet er for langt, så kutt vekk noe av ordet. Bruk klassen java.util.random, spesielt: o Konstruktøren Random() o Metoden public int nextint(int n) returnerer et tilfeldig heltall i intervallet f.o.m. 0 t.o.m. n 1 for heltall n > 0. Eksemplet fortsatt: La tekstlengde være lik 10 og maxordlengde lik 5. Hvis de tilfeldige ordlengdene er henholdsvis 1, 4 og 5, og lagsøttord() returnerer henholdsvis "a", "wiij" og "tross", skal metoden returnere "a wiij tro".

HiST Avdeling for informatikk og e-læring Side 6 av 6 Vedlegg: Klassen java.lang.string Klassen benyttes til å håndtere strenger. Klassen er immutabel. Alle metoder med returtype String returnerer en referanse til et nytt objekt av denne klassen. Konstruktør: public String(String tekst) Metoder: public char charat(int indeks) Metoden returnerer tegnet på den gitte posisjonen (indeksen). Posisjonene nummereres fra og med 0. Hvis indeks er negativ eller større eller lik lengden på strengen, kastes unntaket IndexOutOfBoundsException. public int indexof(int tegn) public int indexof(int tegn, int fraindeks) public int indexof(string deltekst) public int indexof(string deltekst, int fraindeks) Metodene brukes til å søke etter et enkelt tegn eller en deltekst i strengen. Datatypen til parameteren tegn er int; du kan likevel sende inn et vanlig tegn (datatypen char) som argument. Metodene returnerer posisjonen til tegnet eller posisjonen til begynnelsen av delteksten. Dersom tegnet eller delteksten ikke eksisterer, returnerer metodene 1. Første posisjon i strengen har nummer 0. To av metodene tar fraindeks som argument; det gjør det mulig å begynne søket på en annen posisjon (indeks) enn 0. Dersom fraindeks er mindre enn 0, begynner søket i begynnelsen av strengen. Dersom fraindeks er større enn strengens lengde - 1, returneres 1. Dersom deltekst er lik null, kastes unntaket NullPointerException. public int length() Metoden returnerer antall tegn som strengen består av, inkludert alle blanke. public String substring(int startindeks) public String substring(int startindeks, int sluttindeks) Metodene returnerer en del av strengen. Den første metoden returnerer hele strengen fra og med startindeks, mens den andre returnerer strengen fra og med posisjon startindeks til og med posisjon (sluttindeks - 1). Ugyldige argumentverdier (eksempel: sluttindeks større enn strengens lengde) kaster unntaket IndexOutOfBoundsException. public String replace(char gmltegn, char nytttegn) Metoden returnerer en streng der alle forekomster av et bestemt tegn (første parameter) er erstattet med et annet tegn (andre parameter). public int compareto(string denanddelrengen) public int comparetoignorecase(string denanddelrengen) Metodene sammenligner to strenger i henhold til Unicode-rekkefølgen. Den andre metoden ignorerer forskjeller mellom store og små bokstaver. Metodene returnerer en negativ verdi dersom strengen vi sender meldingen til, ligger foran denanddelrengen i rekkefølgen, en positiv verdi dersom den ligger etter, og 0 dersom strengene er like. Metodene kaster unntaket NullPointerException dersom denanddelrengen er lik null. Metoden fungerer ikke for æ, ø og å. public boolean equals(object detandreobjektet) public boolean equalsignorecase(string denanddelrengen) Metodene returnerer true dersom strengene er like, ellers false. Metodene returnerer false også dersom detandreobjektet er null eller tilhører en annen klasse enn String. Den andre metoden ignorerer forskjeller mellom store og små bokstaver. Begge metodene fungerer for æ, ø og å.