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

Eksamensoppgave i IFUD1025 Programmering i Java og IINI4013 Programmering i Java

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

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 Avdeling for informatikk og e-læring - AITeL

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

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

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

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

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

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

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

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

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

HØGSKOLEN I SØR-TRØNDELAG

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

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

Løsningsforslag til eksamen i INF1000 våren 2006

Eksamensoppgaver 2014

INF1000 Eksamen 2014 (modifisert)

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

Eksamen IN1010/INF1010 våren 2018

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

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

Algoritmer og Datastrukturer

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

TDT4100 Objektorientert programmering

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Oblig 4Hybelhus litt mer tips enn i oppgaven

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

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

UNIVERSITETET I OSLO

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

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

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

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

UNIVERSITETET I OSLO

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

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

UNIVERSITETET I OSLO

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

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

UNIVERSITETET I OSLO

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

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

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

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

INF1000 (Uke 6) Mer om metoder, tekster

De neste ukene. INF1000 Uke 12. Prøveeksamen. Nå - Prøveeksamen. Forelesning om IT og samfunn neste uke (13/11).

Rep: Metoder. INF1000 (Uke 6) Mer om metoder, tekster. Rep: Metoder. 3 typer variable: Klassevariable. Java-programmene så langt i kurset:

Forelesning inf Java 5

Algoritmer og datastrukturer Eksamen 22. februar 2011

Repetisjon: operatorene ++ og -- Java 5. Nøtt. Oppgave 1 (fra forrige gang) 0 udefinert udefinert. Alternativ 1 Prefiks-operator

Forelesning inf Java 5

Løse reelle problemer

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO

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

INF1000 Behandling av tekster

UNIVERSITETET I OSLO

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

INF106 Objektorientert programmering

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

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: 18. desember 2012 4 timer (9:00-13:00) IFUD1025 NETT2012H 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 ( 45 % ) Vi skal lage timeplanen for en skoleklasse. For hver skoledag i uka skal timeplanen ha en liste med alle undervisningstimene og pausene den dagen. Det undervises i endel fag, f.eks. norsk, matematikk, engelsk, gymnastikk og. Noen fag er teoretiske (f.eks. norsk, matematikk og engelsk), andre er ikke teoretiske (f.eks. gymnastikk og ). En time er i et bestemt fag med en bestemt lærer. Etter to timer med undervisning må elevene alltid få en pause eller fri for dagen. Eksempel: Timeplanen for skoleklasse 5D ser slik ut: mandag tirsdag onsdag torsdag fredag gymnastikk gymnastikk engelsk (T) Lise engelsk (T) pause pause pause pause pause Lise engelsk (T) gymnastikk pause For hver time står det her først fagets navn, så en T hvis faget er teoretisk, og så lærerens navn. F.eks. er det fire timer mandag: Den første timen er i faget matematikk (teoretisk) med læreren, den andre timen er i gymnastikk (ikke teoretisk) med ; så er det en pause før de to siste timene for dagen. Du trenger ikke å tenke på klokkeslett for når timer og pauser starter og hvor lenge de varer. Du skal lage fire klasser: Fag, Time, Dag og Timeplan. a) Lag klassen Fag for å representere et fag. Objektvariablene er - fagnavnet av type String - teoretisk av type boolean Lag en passende konstruktør. Lag get-metoder. Eksemplet fortsatt: Faget matematikk kan representeres som et Fag-objekt der fagnavnet er matematikk og teoretisk er true. b) Lag klassen Time for å representere en undervisningstime. Objektvariablene er - faget av type Fag - læreren av type String Lag en passende konstruktør. Lag get-metoder. Eksemplet fortsatt: Den første timen mandag kan representeres som et Time-objekt der faget er matematikk og læreren er.

HiST Avdeling for informatikk og e-læring Side 3 av 6 c) Begynn å lage klassen Dag for å representere timeplanen for en dag. Objektvariablene er - dagnavnet av type String - timene av type Time[]: Timene og pausene denne dagen. Element med null betyr pause. Lag en konstruktør med bl.a. en Time-tabell som parameter; du kan anta at parametertabellen er helt full (mao. uten null noe sted). Du må selv legge inn pausene i timene. Hvert tredje element i timene (men aldri det siste elementet) skal altså være null. Tips: Hvis i løper gjennom timene, skal det være pause når i % 3 er lik 2. Eksemplet fortsatt: Onsdag kan representeres som et Dag-objekt. Konstruktøren vil da motta bl.a. en tabell med 5 Time-objekter. Konstruktøren skal lage en ny tabell timene av lengde 7. De 5 Time-objektene skal inn på indeksene 0, 1, 3, 4 og 6 i timene. Selv med pauser innimellom, er det tungt å ha flere timer med bare teoretiske fag etter hverandre. Vi skal se på en Dag-metode finnmaxantallteoritimeriserie(). Denne metoden returnerer det største antall på hverandre følgende timer denne dagen s.a. Hver av disse timene er i et teoretisk fag. Vi overser eventuelle pauser, mao. regner vi to timer med bare en pause mellom seg, for å følge etter hverandre. public int finnmaxantallteoritimeriserie() { int antall = 0; int maxantall = 0; for (int i = 0; i < timene.length; i++) { /* antall er antallet hittil i denne serien */ /* maxantall er største antall i alle avsluttede serier */ if (timene[i]!= null) { // det er ikke pause if (timene[i].isteoretisk()) antall++; else { // denne serien er slutt if (antall > maxantall) maxantall = antall; antall = 0; if (antall > maxantall) maxantall = antall; // denne serien er slutt return maxantall; Eksemplet fortsatt: Metoden returnerer 2 for mandag, 2 for tirsdag, 4 for onsdag, 2 for torsdag og 1 for fredag. d) Vi tenker oss at vi kaller finnmaxantallteoritimeriserie() for mandag i eksemplet vårt. Hvilke verdier får antall underveis i kjøringen, og i hvilken rekkefølge? Hvilke verdier får maxantall underveis i kjøringen, og i hvilken rekkefølge? e) Begynn å lage klassen Timeplan for å representere en timeplan. Objektvariablene er - klassenavnet av type String - dagene av type Dag[]: Timeplanen for hver dag Lag en passende konstruktør. Eksemplet fortsatt: Hele timeplanen kan representeres som et Timeplan-objekt. f) Lag en Timeplan-metode public int finntyngstdag(): Metoden skal returnere indeksen til den dagen i dagene som har det største antallet på hverandre følgende timer i bare teoretiske fag. Hvis det er flere slike dager, så returner indeksen til en av dem. Tips: Kall Dag-metoden finnmaxantallteoritimeriserie(). Eksemplet fortsatt: Metoden skal returnere 2 (dvs. indeksen for onsdag).

HiST Avdeling for informatikk og e-læring Side 4 av 6 Oppgave 2 ( 55 % ) Vedlegget i dette eksamenssettet inneholder String-metoder som kan komme til nytte. La vekt1 og vekt2 være to positive heltall. Vi gir hvert tegn og hver tekst en vekt: Hvert tegn f.o.m. tegn nr. 32 t.o.m. tegn nr. 126 i Unicode-tegnsettet (de vanlige tegnene) har vekt vekt1; hvert av de andre tegnene har vekt vekt2. En tekst har vekt lik summen av vektene til alle tegnene i teksten. La lightgrense være et positivt heltall s.a. lightgrense >= vekt1 og lightgrense >= vekt2. En tekst er en light-tekst hvis tekstens vekt er mindre eller lik lightgrense. F.eks. kan vi velge vekt1 lik 1, vekt2 lik 3 og lightgrense lik 10. Vi ser på teksten Det snør, det snør!. Hvert tegn i denne teksten veier 1, bortsett fra ø som veier 3. Da veier teksten 23, så teksten er ikke en light-tekst. Vi sender en tekstmelding fra en mobiltelefon til en annen mobiltelefon vha. Light Message Service. Hvis meldingen ikke er en light-tekst, blir den delt opp i noen light-tekster før sending fra avsenderen. (Detaljene i oppdelingen kommer på s. 5.) Light-tekstene sendes hver for seg, og så setter mottakeren light-tekstene sammen igjen til den opprinnelige meldingen. Eksempel: vekt1 er 1, vekt2 er 3 og lightgrense er 10. Vi sender meldingen Det snør, det snør! fra telefonnr. 22880 til telefonnr. 33345. Meldingen veier 23 og vil måtte deles opp. Du skal lage en klasse Melding for å representere en tekstmelding på avsenders telefon. Du trenger ikke å ta med avsenders telefonnr. i Melding. De tre tallene vekt1, vekt2 og lightgrense kan du legge rett i Melding. a) Begynn å lage klassen Melding. Objektvariablene er - mottakersnr: Mottakers telefonnummer - meldingen: Selve tekstmeldingen - vekt1: Vekten av tegn f.o.m. tegn nr. 32 t.o.m. tegn nr. 126 - vekt2: Vekten av alle andre tegn - lightgrense: Vektgrensen for light-tekster Lag en passende konstruktør. Eksemplet fortsatt: Eksemplet kan representeres som et Melding-objekt. b) Lag en Melding-metode private int finnvekten(char tegn): Metoden skal returnere vekten til tegn. Hvis f.eks. tegn er D (D er tegn nr. 68), skal metoden returnere vekt1. Tips: Du kan gjerne bruke sammenligningsoperatoren <=. c) Lag en Melding-metode public int finnvekten(int start, int slutt): Metoden skal returnere vekten til meldingens deltekst (mao. delstreng) f.o.m. posisjon start t.o.m. posisjon (slutt 1). Metoden skal følge aktivitetsdiagrammet på neste side. Eksemplet fortsatt: Vi markerer først posisjonene i meldingen: - finnvekten(4, 7) skal returnere 5 fordi delteksten f.o.m. posisjon 4 t.o.m. posisjon 6 er snø, og snø veier 1 + 1 + 3 = 5. - finnvekten(0,19) skal returnere 23 fordi hele meldingen veier 23.

HiST Avdeling for informatikk og e-læring Side 5 av 6 d) Lag en Melding-metode public int finnvekten() som returnerer meldingens vekt. Oppdelingen av en melding i light-tekster: Hvis meldingen ikke er en light-tekst, blir meldingen delt opp i de ikke-tomme deltekstene light0, light1,..., lightn, for en n > 0, s.a. light0 + light1 + + lightn er lik hele meldingen, og hver av deltekstene er en light-tekst, og hver deltekst, unntatt den siste (mao. lightn), har så stor vekt som mulig. Eksemplet fortsatt: meldingen blir delt opp i de tre deltekstene light0 ( Det snør ) med vekt 10, light1 (, det sn ) med vekt 8, og light2 ( ør! ) med vekt 5: e) Lag en Melding-metode public int finngrenseantalllighttekster(): Metoden skal returnere tallet antallgrense som er meldingens vekt delt på (lightgrense størst + 1), rundet av oppover, der størst er det største tallet av vekt1 og vekt2. Antall light-tekster som meldingen deles opp i, er da mindre eller lik antallgrense. Tips: Kall noen java.lang.math-metoder: - public static int max(int a, int b). Metoden returnerer den største av a og b. - public static double ceil(double a). Metoden returnerer den minste doubleverdien som er større eller lik a og som er lik et heltall. Eksemplet fortsatt: Metoden skal returnere 23 / (10 3 + 1) rundet av oppover, dvs. 3. f) Lag en Melding-metode public int finnsluttpålighttekst(int start): Metoden skal returnere det største tallet slutt s.a. meldingens deltekst f.o.m. posisjon start t.o.m. posisjon (slutt 1) er en light-tekst. Eksemplet fortsatt: For start lik 8 skal metoden returnere 16 fordi - Delteksten f.o.m. 8 t.o.m. 15 (, det sn ) veier 8 og er da en light-tekst. - Delteksten f.o.m. 8 t.o.m. 16 (, det snø ) veier 11 og er da ikke en light-tekst. g) Lag en Melding-metode public String[] finnlighttekstene(): Hvis meldingen ikke er en light-tekst, skal metoden returnere alle de light-tekstene som meldingen deles opp i. Hvis meldingen er en light-tekst, skal metoden returnere meldingen (plassert i tabell). Eksemplet fortsatt: Metoden skal returnere Det snør og, det sn og ør!.

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 denandrestrengen) public int comparetoignorecase(string denandrestrengen) 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 denandrestrengen i rekkefølgen, en positiv verdi dersom den ligger etter, og 0 dersom strengene er like. Metodene kaster unntaket NullPointerException dersom denandrestrengen er lik null. Metoden fungerer ikke for æ, ø og å. public boolean equals(object detandreobjektet) public boolean equalsignorecase(string denandrestrengen) 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 å.