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

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

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

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

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

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

INF1000 Behandling av tekster

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

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

Eksamen IN1010/INF1010 våren 2018

UNIVERSITETET I OSLO

Løsningsforslag til eksamen i INF1000 våren 2006

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

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

Endret litt som ukeoppgave i INF1010 våren 2004

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

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

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

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

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

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

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4

Forelesning inf Java 4

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

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

Løse reelle problemer

IN Notat om I/O i Java

INF106 Objektorientert programmering

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

UNIVERSITETET I OSLO

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

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

UNIVERSITETET I OSLO

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

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

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

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

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

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

Leksjon 7. Filer og unntak

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

Lese fra fil. INF1000 : Forelesning 5. Eksempel. De vanligste lesemetodene. Metoder:

UNIVERSITETET I OSLO

Obligatorisk oppgave 4: Lege/Resept

UNIVERSITETET I OSLO

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

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

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

Oblig 4Hybelhus litt mer tips enn i oppgaven

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java

Forelesning inf Java 5

Forelesning inf Java 5

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

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO

Forelesningsquiz. Forelesning inf Java 5. Sett dere to (eller tre) sammen og besvar de fire spørsmålene på utdelt ark. Tid: 15 min.

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

Informasjon Prøveeksamen i IN1000 høsten 2018

UNIVERSITETET I OSLO

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

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE

Algoritmer og Datastrukturer

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: 6. mai 2015 4 timer (9:00-13:00) IFUD1025 NETT2015V 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 ( 38 % ) Treningsprogram for å skrive på tastatur Vi ønsker et program for å trene skriving på tastatur. Eleven skal få oppgitt en tekst som eleven må skrive, tegn for tegn, uten å se på tastene. Hver gang eleven skriver et galt tegn, må eleven forsøke på nytt, helt til det blir riktig, for å kunne komme videre i den oppgitte teksten. For hvert tegn som eleven skriver, gis det tilbakemelding på hvor langt uti den oppgitte teksten eleven har kommet, og på hvor ofte eleven har skrevet riktig tegn på første forsøk. Eksempel: Oppgitt tekst er "Østenfor sol og vestenfor måne". Anta at eleven har skrevet ti tegn hittil: ʹØʹ, ʹdʹ, ʹsʹ, ʹtʹ, ʹiʹ, ʹuʹ, ʹeʹ, ʹnʹ, ʹfʹ, ʹvʹ. Noen av tegnene var riktige, andre var gale: - ʹØʹ: riktig på første forsøk - ʹdʹ: galt - ʹsʹ: riktig - ʹtʹ: riktig på første forsøk - ʹiʹ: galt - ʹuʹ: galt - ʹeʹ: riktig - ʹnʹ: riktig på første forsøk - ʹfʹ: riktig på første forsøk - ʹvʹ: galt Etter hvert tegn er det blitt gitt tilbakemelding. Tilbakemeldingen nå, etter at eleven har skrevet ʹvʹ, er: - Av oppgitt tekst er "Østenf " blitt skrevet. - Nå er det ʹoʹ som skal skrives. - Etter ʹoʹ skal "r sol og vestenfor måne" skrives. - Antall treff på første forsøk er 57 %: Eleven har jobbet med de 7 første tegnene (ʹØʹ, ʹsʹ, ʹtʹ, ʹeʹ, ʹnʹ, ʹfʹ, ʹoʹ) i oppgitt tekst, og 4 av disse (ʹØʹ, ʹtʹ, ʹnʹ, ʹfʹ) ble skrevet riktig på første forsøk. (4 / 7) * 100 er circa 57. Du skal bare lage en del av det ønskede programmet, nemlig klassen TegnForTegnOppfoelging. I et TegnForTegnOppfoelging-objekt lagrer vi den oppgitte teksten, den posisjonen i oppgitt tekst som eleven har kommet til, og dessuten noe informasjon om hvor godt eleven har jobbet hittil. Klassen har en eneste mutasjonsmetode: behandleskrevettegn(). Når eleven har skrevet et tegn, er det behandleskrevettegn() som skal motta tegnet og oppdatere objektvariablene, om nødvendig. Legg merke til at det ikke skal være innlesinger og utskifter i TegnForTegnOppfoelging. Vedlegget i dette eksamenssettet inneholder String-metoder som kan komme til nytte. a) Begynn å lage klassen TegnForTegnOppfoelging. Det skal være fire objektvariabler: o oppgitt av type String: teksten som skal skrives. oppgitt kan ikke endres. o posnå av type int: posnå er først 0 og kan så økes med 1 av gangen opp til og med oppgitt s lengde. Hvis posnå er en posisjon i oppgitt, er det tegnet i posnå som skal skrives nå. Hvis posnå er lik oppgitt s lengde, betyr det at alle tegnene i oppgitt er blitt skrevet. o forsøktposnå av type boolean: Variabelen er true hvis det har vært minst ett mislykket forsøk på å skrive tegnet i posisjon posnå; ellers er variabelen false. o antalltreffpåførsteforsøk av type int: antall tegn i oppgitt som er blitt skrevet riktig på første forsøk. Lag en passende konstruktør.

HiST Avdeling for informatikk og e-læring Side 3 av 6 Eksemplet fortsatt: o oppgitt er "Østenfor sol og vestenfor måne". o posnå er 6. o forsøktposnå er true. o antalltreffpåførsteforsøk er 4. b) Lag en TegnForTegnOppfoelging-metode public boolean meråskrive(): Metoden skal returnere true hvis det er minst ett tegn igjen å skrive, false ellers. Tips: Hvor stor er posnå? c) Lag tre TegnForTegnOppfoelging-metoder for å dele opp oppgitt ved posnå: o public String finnalleredeskrevet(): Metoden skal returnere den delen av oppgitt som allerede er blitt skrevet. o public char finnnestetegn(): Hvis det er mer å skrive, skal metoden returnere det tegnet i oppgitt som nå skal skrives. Ellers skal metoden returnere (char) 0 (altså tegnet med tallverdi 0 i Unicode-tegnsettet). o public String finnrestenetternestetegn(): Hvis det er mer å skrive, skal metoden returnere den delteksten av oppgitt som er igjen å skrive, etter at det neste tegnet er blitt skrevet. Ellers skal metoden returnere "". Eksemplet fortsatt: o finnalleredeskrevet() skal returnere "Østenf". o finnnestetegn() skal returnere ʹoʹ. o finnrestenetternestetegn() skal returnere "r sol og vestenfor måne". d) Lag en TegnForTegnOppfoelging-metode public boolean behandleskrevettegn(char skrevettegn): Metoden skal oppdatere objektvariablene, om nødvendig, når skrevettegn er blitt skrevet. Metoden skal returnere true hvis skrevettegn er riktig, false ellers. Eksemplet fortsatt: Anta at skrevettegn er ʹoʹ. o posnå skal bli 7. o forsøktposnå skal bli false. o antalltreffpåførsteforsøk skal fortsatt være 4. o Metoden skal returnere true. e) Lag en TegnForTegnOppfoelging-metode public double finnprosenttreffpåførsteforsøk(): Se på de tegnene i oppgitt som enten er blitt skrevet eller er blitt forsøkt skrevet. Metoden skal returnere antall prosent av disse tegnene som er blitt skrevet riktig på første forsøk. Eksemplet fra deloppgave a) fortsatt: Metoden skal returnere circa 57 fordi o antall tegn i oppgitt som er blitt skrevet eller forsøkt skrevet er 7 (de 6 tegnene ʹØʹ, ʹsʹ, ʹtʹ, ʹeʹ, ʹnʹ, ʹfʹ er blitt skrevet, og ʹoʹ er blitt forsøkt skrevet), og o antalltreffpåførsteforsøk er lik 4, og o (4 / 7 ) * 100 er circa 57.

HiST Avdeling for informatikk og e-læring Side 4 av 6 Oppgave 1 ( 62 % ) Nedbryting av koffein i kroppen Koffein er et stimulerende stoff som fins i for eksempel kaffe, te og sjokolade. Koffein brytes ned i menneskekroppen med en halveringstid på 6 timer (inntatt koffein blir altså halvert hver sjette time). Vi setter opp en presis formel: La mginn og t være to ikke-negative desimaltall. Hvis en person får i seg mginn mg koffein, vil det t timer etter inntaket være (1 / 2) t / 6 * mginn mg koffein igjen av dette inntaket. For eksempel kan man få i seg 100 mg koffein ved å drikke en kopp kaffe, og formelen gir da at etter 6 timer er det 50 mg igjen av koffeinet, etter 12 timer er det 25 mg igjen, og så videre: - For t lik 0 har vi (1 / 2) 0 * 100 = 1 * 100 = 100. - For t lik 6 har vi (1 / 2) 1 * 100 = (1 / 2) * 100 = 50. - For t lik 12 har vi (1 / 2) 2 * 100 = (1 / 2) * (1 / 2) * 100 = 25. - For t lik 30 har vi (1 / 2) 5 * 100 = 3,125. En person kan innta koffein flere ganger, og gjerne til forskjellige tider. Det er slik at hvert koffeininntak brytes ned uavhengig av eventuelle andre koffeininntak. Vi ønsker et program for å kunne følge med på koffeinet i kroppen. Du skal lage to klasser Inntak og FlereInntak. Vi velger et tidspunkt 0 og måler tid som antall timer (ikke-negative desimaltall) fra 0. Eksempel: En person inntar koffein fire ganger i løpet av circa 10 timer: - inntak 1: 144 mg koffein ved tidspunkt 0 - inntak 2: 10 mg koffein ved tidspunkt 1,5 - inntak 3: 100 mg koffein ved tidspunkt 5 - inntak 4: 60 mg koffein ved tidspunkt 10,2 Vi har beregnet (og rundet av til heltall) koffeinet i kroppen ved noen eksempeltidspunkter: tid 0 1 1,5 2 3 4 5 6 10,2 11 12 17 18 24 inntak 1 144 128 121 114 102 91 81 72 44 40 36 20 18 9 inntak 2 - - 10 9 8 7 7 6 4 3 3 2 1 1 inntak 3 - - - - - - 100 89 55 50 45 25 22 11 inntak 4 - - - - - - - - 60 55 49 27 24 12 total 144 128 131 124 110 98 187 167 163 148 132 74 66 33 a) Begynn å lage klassen Inntak for å representere et inntak av koffein. Det skal være to objektvariabler: o mginn av type double: antall mg koffein inntatt o tidinn av type double: tidspunktet for inntaket Lag en passende konstruktør. Eksemplet fortsatt: Hvert inntak representeres som et Inntak-objekt. I det første Inntak-objektet er mginn lik 144 og tidinn lik 0; i det andre er mginn 10 og tidinn 1,5; i det tredje er mginn 100 og tidinn 5; i det fjerde er mginn 60 og tidinn 10,2. b) Lag en Inntak-metode public double finnkoffeinettertimer(double timer): Metoden skal returnere antall mg koffein som er igjen av dette inntaket timer timer etter inntaket. Tips: Bruk metoden pow() fra java.lang.math: public static double pow(double a, double b) returnerer a opphøyd i b (det vil si a b ). Eksemplet fortsatt: Se på det tredje inntaket. Metoden skal returnere 50 når timer er 6. Metoden skal returnere 3,125 når timer er 30.

HiST Avdeling for informatikk og e-læring Side 5 av 6 c) Lag en Inntak-metode public boolean erblittinntatt(double nå): Metoden skal returnere true hvis inntaket allerede er blitt gjort ved tidspunktet nå, og false ellers. Eksemplet fortsatt: Vi kaller metoden en gang for hvert inntak, hver gang med nå lik 3. For det første og det andre inntaket skal det bli returnert true, mens for det tredje og det fjerde inntaket skal det bli returnert false. d) Lag en Inntak-metode public double finnkoffein(double nå): Hvis inntaket allerede er blitt gjort ved tidspunktet nå, skal metoden returnere antall mg som er igjen av dette inntaket ved tidspunktet nå. Ellers skal metoden returnere 0. Eksemplet fortsatt: For det tredje inntaket skal metoden returnere 50 når nå er lik 11. e) Begynn å lage klassen FlereInntak for å representere alle koffeininntakene for en person. Det skal være tre objektvariabler: o navn av type String: personens navn o inntakene av type Inntak[]: Inntakene ligger fortløpende fra og med indeks 0 og til og med indeks antallinntak 1; resten av tabellen er ubrukt og inneholder null. o antallinntak: antall inntak i tabellen inntakene Lag en konstruktør med bare navnet og tabellstørrelsen som parametre. Eksemplet fortsatt: Vi kaller konstruktøren med tabellstørrelse lik minst 4 slik at det blir satt av plass nok til de fire inntakene. f) Lag en FlereInntak-metode public void settinntak(double mginn, double tidinn) : Hvis det er plass i inntakene, skal metoden legge et nytt Inntak-objekt (med mginn mg koffein inntatt ved tidspunkt tidinn) i inntakene. Eksemplet fortsatt: De fire inntakene legges inn ved å kalle metoden fire ganger. g) Lag en FlereInntak-metode public double finnkoffein(double nå): Metoden skal returnere totalt antall mg koffein i kroppen ved tidspunktet nå. Tips: Legg sammen det som er igjen av hvert inntak ved tidspunktet nå. Eksemplet fortsatt: For nå lik 3 skal metoden returnere 110. h) Lag en FlereInntak-metode public Inntak[] finninntakenetilnå(double nå): Metoden skal returnere alle de inntakene som allerede er blitt gjort ved tidspunktet nå. Eksemplet fortsatt: For nå lik 3 skal metoden returnere de to første inntakene. i) Lag en FlereInntak-metode public double finntidspunktmaxkoffein(): Metoden skal returnere det tidspunktet når antall mg koffein i kroppen er høyest. Hvis det er flere slike tidspunkter, så returner ett av dem. Tips: Det er nok å se på de tidspunktene når det er inntak. Eksemplet fortsatt: Metoden skal returnere 5. For ved tidpunkt 5 er det 187 mg koffein i kroppen, og 187 er størst av 144, 131, 187 og 163.

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 å.