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

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

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

Eksamen IN1010/INF1010 våren 2018

Algoritmer og Datastrukturer

UNIVERSITETET I OSLO

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

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

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

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

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

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

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

Algoritmer og Datastrukturer

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

INF1000 Behandling av tekster

Løsningsforslag til eksamen i INF1000 våren 2006

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

Algoritmer og Datastrukturer

HØGSKOLEN I SØR-TRØNDELAG

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

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

Obligatorisk oppgave 4: Lege/Resept

HØGSKOLEN I SØR-TRØNDELAG

INF1010 LISTER. Listeelementer og listeoperasjoner. Foran. Bak

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

EKSAMEN. Objektorientert programmering

UNIVERSITETET I OSLO

INF1000 (Uke 6) Mer om metoder, tekster

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

Algoritmer og Datastrukturer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

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

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

UNIVERSITETET I OSLO

Fakultet for informasjonsteknologi, Institutt for datateknikk og informasjonsvitenskap

HØGSKOLEN I SØR-TRØNDELAG

Emnekode: I-Dato: I ~ Antall oppgaver: I I Aiie -sk:i=rftlige - bme trykte og håndskrevne, samt alle typer

EKSAMEN. Algoritmer og datastrukturer

UNIVERSITETET I OSLO

Object interaction. Innhold. Abstraksjon Grunnleggende programmering i Java Monica Strand 3. september 2007.

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

København 20 Stockholm

Blokker og metoder INF1000 (Uke 6) Metoder

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

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

INF106 Objektorientert programmering

UNIVERSITETET I OSLO

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

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

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

INF1000 (Uke 6) Mer om metoder, tekster

EKSAMEN med løsningsforslag

UNIVERSITETET I OSLO

Orakeltjeneste på Abel Hjelp til Obligatorisk oppgave 2. INF1000 (Uke 6) Mer om metoder, tekster. Rep: Metoder. Rep: Metoder

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

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

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: 20. mai 2014 4 timer (9:00-13:00) IFUD1025 NETT2014V 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 % ) Et alfabet er en mengde med tegn som vi kaller bokstaver. Vi ønsker å kunne velge et alfabet og se på tekster skrevet med bokstaver fra alfabetet. Det kan også være andre tegn i tekstene våre, men de tegnene regner vi som ikke-bokstaver, og vi er ikke interessert i akkurat hva de er. Eksempel: I det finske alfabetet er det tjueni bokstaver. Det er A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, Å, Ä, Ö. (For å holde eksemplet lite ser vi helt bort fra små bokstaver.) «NISUMAA OLI ISÄSI ILO AAMUSIN.» er en tekst skrevet med bokstaver fra dette alfabetet. Ikke-bokstavene er her de to mellomrommene og punktumet. En bokstav er symmetrisk hvis vi kan trekke en loddrett linje gjennom bokstaven slik at de to delene er speilbilde av hverandre. Eksemplet fortsatt: Fjorten av bokstavene i det finske alfabetet er symmetriske. Det er A, H, I, M, O, T, U, V, W, X, Y, Å, Ä, Ö. A Du skal i denne oppgaven lage to klasser: Alfabet og Tekst. Et Alfabet-objekt skal representere et alfabet. Et Tekst-objekt skal representere en tekst skrevet med bokstaver fra et alfabet. 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 Alfabet. Det skal være to objektvariabler: o bokstavene av type char[]: alle bokstavene i dette alfabetet o symmetriske av type char[]: alle de symmetriske bokstavene i dette alfabetet Lag en passende konstruktør. Eksemplet fortsatt: I Alfabet-objektet for det finske alfabetet vil bokstavene inneholde alle de tjueni bokstavene og symmetriske vil inneholde de fjorten symmetriske bokstavene. b) Lag to Alfabet-metoder public boolean erbokstav(char tegn) public boolean ersymmetrisk(char tegn) erbokstav() skal returnere true hvis tegn er en bokstav i dette alfabetet, false ellers. ersymmetrisk() skal returnere true hvis tegn er en symmetrisk bokstav i dette alfabetet, false ellers. c) Begynn å lage klassen Tekst. Det skal være to objektvariabler: o teksten av type String: selve teksten o alfabetet av type Alfabet: det alfabetet teksten er skrevet med Lag en passende konstruktør. Eksemplet fortsatt: o teksten er «NISUMAA OLI ISÄSI ILO AAMUSIN.». 25 av tegnene i teksten er hentet fra alfabetet og anses derfor som bokstaver. 3 av tegnene i teksten er ikke-bokstaver. o alfabetet er det finske fra deloppgave 1a).

HiST Avdeling for informatikk og e-læring Side 3 av 6 d) Lag en Tekst-metode private String finnbarebokstavene(): Metoden skal returnere den strengen vi får når vi plukker ut alle bokstavene i teksten og setter dem sammen i samme rekkefølge som i teksten. Eksemplet fortsatt: Metoden skal returnere «NISUMAAOLIISÄSIILOAAMUSIN». Noen ganger, som for eksempel på enkelte reklamebannere, kan det være ønskelig at teksten inneholder mange symmetriske bokstaver. e) Lag en Tekst-metode public double finnprosentvissymmetriske(): Metoden skal returnere hvor mange prosent av bokstavene i teksten er symmetriske. Eksemplene fortsatt: Det er 25 bokstaver i «NISUMAA OLI ISÄSI ILO AAMUSIN.», og 17 av dem er symmetriske. 17 / 25 * 100 er lik 68. 68 % av bokstavene er altså symmetriske. En tekst er et palindrom hvis teksten er den samme når vi leser bokstavene i teksten fra venstre mot høyre som når vi leser bokstavene i teksten fra høyre mot venstre. Eksempler: - «NISUMAA OLI ISÄSI ILO AAMUSIN.» er et finsk palindrom. - «REGNINGER» er et norsk palindrom. - «NEVER ODD OR EVEN!» er et engelsk palindrom. f) Lag en Tekst-metode public boolean erpalindrom(): Returner true hvis teksten er et palindrom, false ellers.

HiST Avdeling for informatikk og e-læring Side 4 av 6 Oppgave 2 (55 %) Vi har kommet over en kasse med deler av gamle, fillete donaldblader. Hver del består av alle sidene fra og med et bestemt sidenummer og til og med et bestemt sidenummer; det første sidenummeret er alltid et odde tall, og det siste sidenummeret er alltid et like tall. Eksempel: En del består av sidene 5 14 (det vil si alle sidene fra og med side 5 og opp til og med side 14). Andre deler er sidene 23 70, sidene 45 60 og sidene 73 74. Vi vil prøve å finne ut hvilke deler som muligens kan ha tilhørt det samme bladet. Eksemplet fortsatt: 23 70-delen og 45 60-delen kan ikke ha tilhørt det samme bladet. Men ellers er hver del forenlig med hver av de andre delene. For eksempel kan 5 14-delen, 23 70-delen og 73 74-delen ha tilhørt det samme bladet. Du skal i denne oppgaven lage to klasser: Del og ForenligeDeler. Et Del-objekt skal representere en del av et donaldblad. Et ForenligeDeler-objekt skal representere en samling deler som alle muligens kan ha tilhørt det samme donaldbladet. Legg nøye merke til at du i denne oppgaven ikke skal implementere interfacet Comparable, og at du ikke skal kalle noen ferdigskrevet metode for søking eller sortering. a) Begynn å lage klassen Del. Objektvariablene er o førstesidenr: den første siden i denne delen o sistesidenr: den siste siden i denne delen Lag en passende konstruktør. Lag get-metoder. En del er mindre enn en annen del hvis det siste sidenummeret i den første delen er mindre enn det første sidenummeret i den andre delen. Eksemplet fortsatt: - 5 14-delen er mindre enn hver av de tre andre delene (fordi 14 < 23, 14 < 45 og 14 < 73). - Hver av de tre delene 5 14, 23 70 og 45 60 er mindre enn 73 74-delen (fordi 14 < 73, 70 < 73 og 60 < 73). - 23 70-delen er ikke mindre enn 45 60-delen, og 45 60-delen er ikke mindre enn 23 70-delen. b) Lag en Del-metode public boolean ermindreenn(del annendel): Metoden skal returnere true hvis denne delen er mindre enn annendel, false ellers. La del1 og del2 være to deler. del1 er forenlig med del2 hvis enten del1 er mindre enn del2 eller del2 er mindre enn del1. Eksemplet fortsatt: - 5 14-delen er forenlig med hver av de tre andre delene. - 73 74-delen er forenlig med hver av de tre andre delene. - 23 70-delen er ikke forenlig med 45 60-delen.

HiST Avdeling for informatikk og e-læring Side 5 av 6 c) Lag en Del-metode public boolean erforenligmed(del annendel): Metoden skal returnere true hvis denne delen er forenlig med annendel, false ellers. Vi er interessert i samlinger av deler der hver del er forenlig med hver av de andre delene. Legg merke til at i en slik samling kan delene alltid ordnes i stigende rekkefølge etter vårt mindre-enn-kriterium. d) Begynn å lage klassen ForenligeDeler. Objektvariablene er o delene av type Del[]: Delene ligger fortløpende fra og med indeks 0 og til og med indeks antalldeler 1; resten av tabellen er ubrukt og inneholder null. For hver indeks i, slik at 0 i antalldeler 2, er delene[i] mindre enn delene[i + 1]. o antalldeler: antall deler i tabellen delene Lag også en passende konstruktør. Konstruktøren skal bare ha tabellstørrelsen som parameter. Eksemplet fortsatt: Innholdet i ForenligeDeler-objektet med de tre delene 5 14, 23 70 og 73 74 kan tegnes slik: delene [0] [1] [2] [3] 3 antalldeler 5 14 23 70 73 74 e) Lag en ForenligeDeler-metode public Del[] finnmanglendesider(): Metoden skal finne ut hvilke sider som helt sikkert mangler for at delene muligens skal kunne bli til et helt donaldblad. Disse sidene skal returneres som så få Delobjekter som mulig. Eksemplet fra deloppgave 2d) fortsatt: Metoden skal returnere sidene 1 4, sidene 15 22 og sidene 71 72 (som tre Del-objekter plassert i en tabell). f) Lag en ForenligeDeler-metode public boolean legginn(del endel): Hvis endel er forenlig med hver av delene i delene-tabellen og det dessuten er plass i tabellen, skal metoden legge inn endel i tabellen. Pass på at delene i tabellen fortsatt er ordnet i stigende rekkefølge når legginn() avsluttes! Metoden skal returnere true hvis endel ble lagt inn, false ellers. Tips: Du kan trenge å flytte noen deler mot høyre. Eksemplet fra deloppgave 2d) fortsatt: Hvis vi kaller legginn() med en del 17 20 som argument, skal ForenligeDeler-objektet etter metodekallet være: delene [0] [1] [2] [3] [4] 4 antalldeler 5 14 17 20 23 70 73 74

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