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

Eksamensoppgave i IFUD1025 Programmering i Java

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

Eksamen IN1010/INF1010 våren 2018

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.

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

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 OSLO

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

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

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

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

UNIVERSITETET I OSLO

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

INF1000 Behandling av tekster

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

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

UNIVERSITETET I OSLO

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

Oblig 4Hybelhus litt mer tips enn i oppgaven

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

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

EKSAMEN. Dato: 9. mai 2016 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

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

UNIVERSITETET I OSLO

Løsningsforslag til eksamen i INF1000 våren 2006

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

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

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

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO

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

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

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

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

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

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

HØGSKOLEN I SØR-TRØNDELAG

Algoritmer og Datastrukturer

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

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

HØGSKOLEN I SØR-TRØNDELAG

Endret litt som ukeoppgave i INF1010 våren 2004

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

UNIVERSITETET I OSLO

EKSAMEN 6109 OBJEKTORIENTERT PROGRAMMERING 5609 OBJEKTORIENTERT PROGRAMMERING

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO

INF1000 (Uke 6) Mer om metoder, tekster

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

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

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

Algoritmer og Datastrukturer

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

Informasjon Prøveeksamen i IN1000 høsten 2018

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

Algoritmer og Datastrukturer

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

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

HØGSKOLEN I SØR-TRØNDELAG

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

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: 27. mai 2013 4 timer (9:00-13:00) IFUD1025 NETT2013V 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 ( 56 % ) En bruker har et brukernavn og et passord for å logge seg inn på en webbasert tjeneste. Brukerens passordhjelper skal kunne hjelpe til med å lage et godt passord. Eksempel: Vi ønsker et passord av lengde 5 med tilfeldige tegn slik at det er store bokstaver i posisjonene 0 og 4, sifre i posisjonene 1 og 3, og et spesialtegn i posisjon 2. Passordhjelperen skal da kunne lage f.eks. passordet T9%7A (dette kommer vi til i deloppgave d)). Et passord kan bare inneholde passordtegn. Passordtegnene er tegnene f.o.m. tegn nr. 33 t.o.m. tegn nr. 126 i Unicode-tegnsettet. Vi deler passordtegnene inn i fire grupper: - de store bokstavene: A, B, C,, Z - de små bokstavene: a, b, c,, z - sifrene: 0, 1, 2,, 9 - spesialtegnene: alle de andre passordtegnene. F.eks.! %? $ & ( ) * - + = / ; :., Med stor bokstav mener vi i denne oppgaven bare A, B, C,, Z (men ikke f.eks. Æ, Ø, Å), og med liten bokstav mener vi bare a, b, c,, z (men ikke f.eks. æ, ø, å). Du kan anta at det fins en klasse Passordtegn med bl.a. følgende offentlige klassemetoder: - boolean erpassordtegn(char tegn): Returnerer true når tegn er et passordtegn, false - boolean erstorbokstav(char tegn): Returnerer true når tegn er en stor bokstav, false - boolean erlitenbokstav(char tegn): Returnerer true når tegn er en liten bokstav, false - boolean ersiffer(char tegn): Returnerer true når tegn er et siffer, false - boolean erspesialtegn(char tegn): Returnerer true når tegn er et spesialtegn, false - char trekkstorbokstav(): Returnerer en tilfeldig stor bokstav - char trekklitenbokstav(): Returnerer en tilfeldig liten bokstav - char trekksiffer(): Returnerer et tilfeldig siffer - char trekkspesialtegn(): Returnerer et tilfeldig spesialtegn 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. Du skal jobbe med klassene Passordhjelper (som inneholder passordet) og Bruker. a) Begynn å lage klassen Passordhjelper: Det skal være en objektvariabel passordet av type String. Lag en konstruktør med en parameter forslaget av type String. Konstruktøren skal sette passordet lik den strengen som blir returnert når vi kaller fjernulovligetegn() fra deloppgave b) med forslaget som argument. b) Lag en Passordhjelper-metode private String fjernulovligetegn(string tekst): Metoden skal returnere den strengen vi får når vi plukker ut alle passordtegnene i tekst og setter dem sammen i samme rekkefølge som i tekst. Eksempel: Hvis tekst er Mumle Gåsegg!, skal metoden returnere MumleGsegg! (i Mumle Gåsegg! er alle tegnene passordtegn bortsett fra mellomrom og å).

HiST Avdeling for informatikk og e-læring Side 3 av 6 Et passord har en bestemt passordstyrke. Passordstyrken regnes ut ved å summere poengene. Det er ett poeng for hver av følgende: - Passordets lengde er minst 8. - Passordet inneholder minst en stor bokstav. - Passordet inneholder minst en liten bokstav. - Passordet inneholder minst ett siffer. - Passordet inneholder minst ett spesialtegn. Ettersom passord kun kan inneholde passordtegn har ethvert passord (unntatt ) passordstyrke minst 1. Størst mulige passordstyrke er 5. Eksempler: MumleGsegg! har passordstyrke 4. W3W3W3 har passordstyrke 2. mo32&syk?grrrrr har passordstyrke 5. c) Lag en Passordhjelper-metode public int finnpassordstyrken(): Metoden skal returnere passordstyrken til passordet. d) Lag en Passordhjelper-metode public void lagpassordetterønske(int[] store, int[] små, int[] sifre, int[] spesialtegn): Hvis det fins et heltall n 0 slik at o de fire argumenttabellene inneholder n + 1 tall i alt, og o disse n + 1 tallene er nøyaktig tallene 0, 1,, n, så settes passordet slik at o passordet har lengde n + 1, og o for hvert tall p i store er det en tilfeldig stor bokstav i posisjon p i passordet, og o for hvert tall p i små er det en tilfeldig liten bokstav i posisjon p i passordet, og o for hvert tall p i sifre er det et tilfeldig siffer i posisjon p i passordet, og o for hvert tall p i spesialtegn er det et tilfeldig spesialtegn i posisjon p i passordet. Tips: Bygg gjerne opp passordet ved å fylle opp en tabell av type char[]. Kall så String-metoden public static String valueof(char[] data). Denne metoden returnerer resultatet av å gjøre data om til en streng. Eksempel: La store inneholde 0 og 4, la små ha lengde 0, la sifre inneholde 1 og 3, og la spesialtegn inneholde 2. Det er da nøyaktig tallene 0, 1, 2, 3, 4 som ligger i tabellene. Metoden skal da sette passordet til f.eks. T9%7A. e) Begynn å lage klassen Bruker: Objektvariablene er o brukernavnet av type String o hjelperen av type Passordhjelper: hjelperen inneholder brukerens passord o pålogget av type boolean: pålogget er true når brukeren er logget inn, false. Lag en passende Bruker-konstruktør. f) Lag en Bruker-metode public void logginn(string navn, String passord): Hvis navn er lik brukernavnet og passord er lik brukerens passord, så logg inn brukeren. g) Lag en Bruker-metode public void loggut(): Logg ut brukeren. h) Lag en Bruker-metode public void lagpassordetterønske(int[] store, int[] små, int[] sifre, int[] spesialtegn): Hvis brukeren er logget inn, så kall hjelperens lagpassordetterønske()-metode med store, små, sifre og spesialtegn som argumenter.

HiST Avdeling for informatikk og e-læring Side 4 av 6 Oppgave 2 (44 %) Vi har en rund bilbane og en lekebil som kjører rundt på banen. Banen er delt opp i n + 1 strekninger nummerert 0, 1,, n for en n 0. Tallene 0, 1,, n kalles strekningnumre (snr). Bilen kjører strekningene i rekkefølgen 0, 1,, n, om og om igjen. Hver strekning har en bestemt lengde som kan måles i hele cm. Bilen kjører med en fast fart som kan måles i hele cm per sekund. Sekund for sekund vil bilen derfor være et helt antall cm innpå en eller annen strekning. Vi angir en posisjon på banen ved to heltall, snr og innpå, slik at - 0 snr n, og - 0 innpå < strekninglengde, der strekninglengde er lengden av strekning snr. Ved hvert hele sekund etter start vil altså bilen være i en bestemt posisjon. Vi ønsker å kunne følge bilens ferd sekund for sekund, fra posisjon til posisjon. Eksempel: Banen er delt opp i strekning 0 på 7 cm, strekning 1 på 10 cm og strekning 2 på 7 cm. Fiaten kjører i 5 cm per sekund. Ett sekund etter start vil da Fiaten være 5 cm innpå strekning 0, etter to sekunder vil den være 3 cm innpå strekning 1, osv. Se figuren og tabellen: sekund posisjon antall runder strekningnummer innpå 0 0 0 0 1 0 5 0 2 1 3 0 3 1 8 0 4 2 3 0 5 0 1 1 6 0 6 1 7 1 4 1 8 1 9 1 9 2 4 1 10 0 2 2

HiST Avdeling for informatikk og e-læring Side 5 av 6 Du skal lage tre klasser Posisjon, Bil og Bilbane. a) Lag klassen Posisjon: Objektvariablene er snr og innpå, begge av type int. Lag en passende konstruktør og get-metoder. b) Begynn å lage klassen Bil for å representere en bil på banen: Objektvariablene er o navnet: bilens navn o farten av type int: bilens fart målt i cm per sekund o posisjonen av type Posisjon: bilens posisjon o antallrunder: antall runder bilen har fullført på banen Lag en passende konstruktør med bare navnet og farten som parameter. Eksemplet fortsatt: Etter to sekunder kan Fiaten representeres som et Bil-objekt med: navnet Fiat, farten 5, posisjonen med snr 1 og innpå 3, antallrunder 0. c) Lag Bil-metoder getbilenssnr() og getbilensinnpå() som returnerer hvert sitt av de to tallene i posisjonen. Hver strekning har lengde større enn eller lik den avstanden bilen tilbakelegger på ett sekund. Så på ett sekund kan bilen høyst kjøre fra en strekning til den neste, ikke lengre. d) Lag en Bil-metode public void kjøriettsekund(int strekninglengde, int nestesnr) slik at når o strekninglengde er lengden av den strekningen bilen er på, og o nestesnr er neste strekningnummer etter bilens strekningnummer, så skal metoden sette bilen i den posisjonen som bilen kommer til på ett sekund. Metoden skal dessuten sørge for at antallrunder blir økt, hvis det er nødvendig. Tips: Er getbilensinnpå() + farten < strekninglengde? Hvis ja, trenger du ikke nestesnr til noe. Hvis nei, trenger du nestesnr. Eksemplet fortsatt: Etter fire sekunder er Fiaten 3 cm innpå strekning 2. Når vi så kaller Fiatens kjøriettsekund(7, 0), skal metoden sette Fiaten 1 cm innpå strekning 0, og dessuten øke antallrunder fra 0 til 1. e) Begynn å lage klassen Bilbane: Objektvariablene er o bilen av type Bil o strekningene av type int[]: strekningenes lengder målt i cm Lag en konstruktør med bare følgende tre parametre: Bilens navn, bilens fart og en tabell med alle strekningenes lengder. f) Lag en Bilbane-metode public int getbilenssnr(): Metoden skal returnere strekningnummeret til den strekningen bilen er på. g) Lag en Bilbane-metode public void kjørbileniettsekund(): Metoden skal kalle bilens kjøriettsekund()-metode (se deloppgave d)) med o første argument lik lengden av den strekningen bilen er på og o andre argument lik neste strekningnummer etter bilens strekningnummer Eksemplet fortsatt: Hvis bilen er på strekning 2, skal o første argument være 7 (dvs. lengden av strekning 2) o andre argument være 0 (dvs. neste strekningnummer etter 2)

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