UNIVERSITETET I OSLO



Like dokumenter
UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Oppgave 1a. INF1000 Prøveeksamen Oppgave 1c. Oppgave 1b

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Det matematisk-naturvitenskapelige fakultet

INF Seminaroppgaver til uke 3

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

Algoritmer og Datastrukturer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

UNIVERSITETET I OSLO

Løsningsforslag ukeoppg. 9: okt (INF Høst 2011)

UNIVERSITETET I OSLO

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

INF Uke 10. Ukesoppgaver oktober 2012

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

TOD063 Datastrukturer og algoritmer

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.

UNIVERSITETET I OSLO

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

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

EKSAMEN. Objektorientert programmering

KANDIDATEN MÅ SELV KONTROLLERE AT OPPGAVESETTET ER FULLSTENDIG

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

EKSAMENSOPPGAVE. INF-1100 Innføring i programmering og datamaskiners virkemåte. Ingen. Elektronisk (WiseFlow) Robert Pettersen

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

2 Om statiske variable/konstanter og statiske metoder.

Tre måter å lese fra terminal. Java 4. Eksempel. Formatert utskrift til skjerm

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

UNIVERSITETET I OSLO

BOKMÅL Side 1 av 5. KONTERINGSEKSAMEN I FAG TDT4102 Prosedyre og objektorientert programmering. Onsdag 6. august 2008 Kl

KONTINUASJONSEKSAMEN

UNIVERSITETET I OSLO

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

81,9(56,7(7(7,26/2 'HWPDWHPDWLVNQDWXUYLWHQVNDSHOLJHIDNXOWHW

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.2

UNIVERSITETET I OSLO

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

København 20 Stockholm

Kontinuasjonseksamen

Algoritmer og Datastrukturer

UNIVERSITETET I OSLO

INF 1000 Prøveeksamen. 23. november Ole Christian og Arne. Oppgave 1 (10 poeng) Er disse programsetningene lovlige i Java? Oppgave 2 (10 poeng)

Om oppgaveteksten på noe punkt er uklar eller upresis, kan du gjøre egne presiseringer. Formulér i så fall disse tydelig i oppgavebesvarelsen din.

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

TDT4100 Objektorientert programmering

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Dagens tema: 12 gode råd for en kompilatorskriver. Sjekking av navn. Lagring av navn. Hvordan finne et navn?

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO

Lenkelister. Lister og køer. Kopi av utvalgte sider fra forelesningen.

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF1000 Metoder. Marit Nybakken 16. februar 2004

UNIVERSITETET I OSLO

Oppgave 1 a. INF1020 Algoritmer og datastrukturer. Oppgave 1 b

Transkript:

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Kandidatnr Eksamen i INF1000 Grunnkurs i objektorientert programmering Eksamensdag: Prøveeksamen tirsdag 23. november 2010 Tid for eksamen: 12.00 16.00 Oppgavesettet er på 18 sider. Vedlegg: Ingen Tillatte hjelpemidler: lle trykte og skrevne Kontroller at oppgavesettet er komplett før du begynner å besvare spørsmålene. Les nøye gjennom hver oppgave før du løser den. For hver oppgave er det angitt det maksimale antall poeng du kan få hvis du svarer helt riktig. Summen av poengene er 100, slik at f.eks 5 poeng tilsvarer 12 minutter, 10 poeng tilsvarer 24 minutter, osv. (hvis du regner med å komme igjennom alt). Pass på at du bruker tiden din riktig. Setter du av 20 minutter til 10 poeng, får du 40 minutter til å se over alt til slutt! Kontroller også at oppgavesettet er komplett før du begynner å besvare det. Dersom du savner opplysninger i oppgaven, kan du selv legge dine egne forutsetninger til grunn og gjøre rimelige antagelser, så lenge de ikke bryter med oppgavens ånd. Gjør i så fall rede for forutsetningene og antagelsene du gjør. Dine svar skal skrives på disse oppgavearkene, og ikke på separate ark. Dette gjelder både spørsmål med avkrysningssvar og spørsmål hvor du bes om å skrive programkode. Det er satt av plass i oppgavesettet slik at du kan skrive inn svarene dine. Får du likevel ikke plass nok i feltene i oppgaveteksten, kan du fortsette på eget ark. Noen av spørsmålene er flervalgsoppgaver. På disse oppgavene får du poeng etter hvor mange korrekte svar du gir. Du får ikke poeng hvis du lar være å besvare et spørsmål, eller dersom du krysser av begge svaralternativer. Hvis du har satt et kryss i en avkrysningsboks og etterpå finner ut at du ikke ønsket å krysse av der, kan du skrive FEIL like til venstre for den aktuelle avkrysningsboksen. Husk å skrive såpass hardt at besvarelsen blir mulig å lese på alle gjennomslagsarkene, men ikke legg andre deler av eksamensoppgaven under når du skriver. (Fortsettes på side 2.)

Eksamen i INF1000, Prøveeksamen tirsdag 23. november 2010 Side 2 Innhold 1 Løkker (5 poeng) side 3 2 rray og løkker (5 poeng) side 4 3 Java-syntaks (5 poeng) side 5 4 String (5 poeng) side 5 5 Metoder (10 poeng) side 6 6 UML (10 poeng) side 8 7 Klasser, objekter og array (15 poeng) side 9 8 Sortering (15 poeng) side 11 9 Klasser og objekter (25 poeng) side 13 10 Personopplysningsloven (5 poeng) side 17 Lykke til! (Fortsettes på side 3.)

Eksamen i INF1000, Prøveeksamen tirsdag 23. november 2010 Side 3 Oppgave 1 Løkker (5 poeng) Hvor mange ganger blir Eksamen skrevet ut? 1a for ( int i =10; i >=5; i --) { for ( int j =0; j <6; j ++) { System. out. println (" Eksamen "); Svar: 1b for ( int i =5; i >0; i --) { for ( int j =0; j<i; j ++) { System. out. println (" Eksamen "); Svar: 1c for ( int i =0; i <5; i ++) { int k = 5-i; while (k > 0) { System. out. println (" Eksamen "); k --; Svar: 1d for ( int i =0; i <10; i +=2) { for ( int k =3; k > -1; k --) { System. out. println (" Eksamen "); k --; Svar: (Fortsettes på side 4.)

Eksamen i INF1000, Prøveeksamen tirsdag 23. november 2010 Side 4 Oppgave 2 rray og løkker (5 poeng) Gitt følgende array: double [][] tall = new double [6][5]; 2a Hvor mange double-verdier er det plass til i arrayen? Svar: 2b Vil følgende java-kode skrive ut innholdet i alle plassene i arrayen? Ja Nei for ( int i =0; i< tall. length ; i ++) { for ( int j =0; j< tall [i]. length ; j ++) { System. out. println ( tall [i][j]); for ( int i= tall. length ; i >0; i --) { for ( int j= tall [i -1]. length ; j >0; j --) { System. out. println ( tall [i -1][j -1]); for ( int i =0; i< tall. length ; i ++) { for ( int j=4-i; j >=0; j --) { System. out. println ( tall [i][j]); (Fortsettes på side 5.)

Eksamen i INF1000, Prøveeksamen tirsdag 23. november 2010 Side 5 Oppgave 3 Java-syntaks (5 poeng) Er disse uttrykkene lovlige programsetninger i Java? Ja Nei int i = false; enum E {,B,C; boolean ok = 3 > 2; double tall = new Student("Lise"); String[] navn = { { "Per", "Lise", { "Geir", "Liv" ; String[] ord = { "stein", "saks", "papir"; boolean riktig = (new double[3]).length > 3; class { double pris = 124.99 kroner; String tegn = a ; Oppgave 4 String (5 poeng) nta at følgende programkode kjøres: String [] navn = { " Per ", " Per " ; i f ( navn [0]. equals ( navn [1])) { navn [0] += navn [1]; navn [1] += navn [0]; i f ( navn [0] == navn [1]) { System. out. println (" Pekerlikhet "); e l s e { System. out. println (" Ikke pekerlikhet "); i f ( navn [0]. equals ( navn [1])) { System. out. println (" Like "); e l s e { System. out. println (" Ulike "); Hva skrives ut? Skriv svaret her: (Fortsettes på side 6.)

Eksamen i INF1000, Prøveeksamen tirsdag 23. november 2010 Side 6 Oppgave 5 Metoder (10 poeng) 5a Fra likestrømslæren har vi at vi kan regne ut motstand ved å dele spenning på strøm. Skriv ferdig metoden over slik at den returnerer motstanden på bakgrunn av double-parameterne spenning og strom. Hvis strom er lik 0 skal metoden returnere -1. double motstand ( double spenning, double strom ) { 5b Skriv en metode som tar to parametre, en String tekst og en int k, og som returnerer en String som inneholder de k første tegnene i tekst. Hvis k er større enn lengden til tekst, så skal hele tekst returneres. Du skal skrive hele metoden, inkludert signaturen, og du skal kun bruke String-metodene length og chart(). Finn på et passende navn til metoden. (Fortsettes på side 7.)

Eksamen i INF1000, Prøveeksamen tirsdag 23. november 2010 Side 7 5c Metoden under tar en parameter String[] array og skal returnere en String[] med array.length-1 plasser. Den returnerte arrayen skal inneholde alle elementene fra array utenom array[0]. Rekkefølgen på elementene skal være lik som i array. Skriv ferdig metoden. String [] fjernforste ( String [] array ) { 5d Skriv kode for en metode med en parameter int[] tall og returverdi boolean. Metoden skal returnere true hvis arrayen inneholder to tall som er like, ellers false. boolean hartoliketall ( i n t [] tall ){ (Fortsettes på side 8.)

Eksamen i INF1000, Prøveeksamen tirsdag 23. november 2010 Side 8 Oppgave 6 UML (10 poeng) En bilforretning skal lage et Java-program for å holde orden på biler, selgere, kunder og salg. Bilforretningen kan ha flere selgere og flere kunder. I tillegg skal forretningen ha en oversikt over hvilke biler som er til salgs. Et salg er en avtale mellom én selger, én kunde og én bil. En selger kan selge flere biler, en kunde kan kjøpe flere biler, men en bil kan kun selges én gang. Tegn et UML klassediagram for Java-programmet. Gi navn til klassene, tegn forhold mellom dem og sett på riktig antall på hver side av forholdene. Du behøver ikke skrive inn variable og metoder i klassene i diagrammet. Tegn UML-diagrammet her: (Fortsettes på side 9.)

Eksamen i INF1000, Prøveeksamen tirsdag 23. november 2010 Side 9 Oppgave 7 Klasser, objekter og array (15 poeng) Gitt følgende Java-klasse: c l a s s Person { String navn ; i n t tlfnr ; // tlfnr er 0 hvis personen ikke har telefon Person ( String navn ){ t h i s. navn = navn ; t h i s. tlfnr = 0; Person ( String navn, int tlfnr ){ t h i s. navn = navn ; t h i s. tlfnr = tlfnr ; boolean hartlf (){ return ( tlfnr!= 0 ); Lag et fullstendig program, inludert en main-metode, som bruker Person-klassen og som oppretter en array med lengde 1000 i konstruktøren til class Personrray der elementene skal være Person-objekter, implementerer en settinn-metode for å sette inn Person-objekter i arrayen oppretter et personobjekt for Ole Olsen med telefonnr 45000235 og legger inn i arrayen, oppretter et personobjekt for Kari Karlsen uten telefon og legger inn i arrayen, og går i en løkke gjennom alle objektene i arrayen og skriver ut navnene til de som ikke har telefon. Du skal bruke objektenes hartlf()-metoder når du løser oppgaven. I dette tilfellet skal programmet skrive ut Kari Karlsen, men det skal virke også om vi legger flere Person-objekter inn i arrayen. Du kan anta at vi aldri vil ta objekter ut av arrayen. (Skriv inn svaret ditt på neste side... ) (Fortsettes på side 10.)

Eksamen i INF1000, Prøveeksamen tirsdag 23. november 2010 Side 10 c l a s s Personrray { (Fortsettes på side 11.)

Eksamen i INF1000, Prøveeksamen tirsdag 23. november 2010 Side 11 Oppgave 8 Sortering (15 poeng) Vi skal arbeide videre på Personrray-klassen i Oppgave 7. Fremdeles skal vi anta at det er maksimalt 1000 kunder som ligger i arrayen. Men nå skal vi også anta at Personrrayklassen er et arkiv over ansatte i et firma som tilbyr firmatelefon der alle telefonnumrene ligger i intervallet 45000000,..., 45001999 og at alle personer har forskjellig telefonnummer. Du skal nå skrive en metode som returnerer en array over alle Person-objekter fra Personrray-klassen som har telefon. rrayen du skal returnere skal være sortert etter stigende telefonnummer. Når du implementerer denne metoden, skal du utnytte det vi vet om intervallet som telefonnumrene ligger i ved å bruke følgende algoritme: Opprett en array temp med plass til 2000 Person-objekter. Gå gjennom arrayen med Person-objekter i Personrray-klassen og legg alle som har telefon inn i temp slik at temp[i].tlfnr== 45000000 + i. (Hint: Legg Person-objekt p inn på posisjon temp[p.(tlfnr-45000000].) Mens du gør dette, hold orden på hvor mange objekter som ligger i temp. La en intvariabel antall lagre dette antallet. Gå gjennom temp fra indeks 0 og utover. En del av plassene i temp vil være null, men en del vil også referere til Person-objekter. Skriv Person-objektene over til en array med Person-objekter med lengde antall i den rekkefølge de besøkes når du går nedover temp. rrayen du skriver over til fra temp vil være korrekt sortert, og metoden returnerer arrayen til slutt. (Fortsettes på side 12.)

Eksamen i INF1000, Prøveeksamen tirsdag 23. november 2010 Side 12 (Fortsettes på side 13.)

Eksamen i INF1000, Prøveeksamen tirsdag 23. november 2010 Side 13 Oppgave 9 Klasser og objekter (25 poeng) I denne oppgaven skal du skrive to klasser, Medlem og Idrettslag, som skal brukes av et idrettslag til å holde orden på hvilke medlemmer som har betalt kontigent. I klassen Medlem skal medlemsnummer, navn og telefonnr lagres som String-verdier. Videre skal det lagres informasjon om hvorvidt kontigenten er betalt. Klassen skal inneholde en konstruktør med parametre String medlemsnr, String navn og String tlf, og som initialiserer de respektive verdiene i objektet. I klassen Idrettslag skal det være datastruktur for å lagre Medlem-objekter. Klassen skal i tillegg inneholde følgende metoder: En konstruktør som initialiserer datastrukturen. void leggtilmedlem(medlem m) Skal legge til Medlem m i datastrukturen. void slettmedlem(string medlemsnr) Skal slette medlemmet med medlemsnr medlemsnr. Hvis medlemmet ikke finnes, skal det ikke gjøres noen ting. Medlem hentmedlem(string medlemsnr) Skal sjekke om det finnes et medlem med medlemsnr medlemsnr. Hvis medlemmet finnes, skal riktig Medlem-objekt returneres. Hvis ikke, skal null returneres. void sok(string tekst) Skal søke gjennom alle medlemmene og sjekke om enten navn eller telefonnr er tekstlig lik søkestrengen tekst. De medlemmer som har navn eller telefonnr lik tekst skal skrives ut på skjermen med medlemsnr, navn og telefonnr. void registrerbetaling(string medlemsnr) Skal registrere at medlemmet med medlemsnr har betalt kontigenten. Hvis medlemmet ikke finnes, skal en passende feilmelding skrives ut på skjermen. void skrivpurreliste() Skal skrive ut en liste på skjermen med medlemsnr, navn og telefonnr til de medlemmene som ikke har betalt kontigenten. void harliketlfnr() Skal sjekke om noen medlemmer har like telefonnr. Hvis ingen medlemmer har like telefonnr, skal en passende melding skrives ut på skjermen. Hvis det finnes medlemmer med samme telefonnr, skal det skrives ut en linje med telefonnr og deretter medlemsnr og navn på de medlemmene som har dette telefonnr. Det skal skrives ut én slik linje for hvert telefonnr som deles av flere medlemmer. Merk at du kun skal skrive Java-kode for det som er nevnt i teksten over. Du skal ikke skrive hverken main-metoden eller ordreløkke. Du finner plass til å besvare oppgaven på de følgende sidene. (Fortsettes på side 14.)

Eksamen i INF1000, Prøveeksamen tirsdag 23. november 2010 Side 14 c l a s s Medlem { c l a s s Idrettslag { (Fortsettes på side 15.)

Eksamen i INF1000, Prøveeksamen tirsdag 23. november 2010 Side 15 (Fortsettes på side 16.)

Eksamen i INF1000, Prøveeksamen tirsdag 23. november 2010 Side 16 (Fortsettes på side 17.)

Eksamen i INF1000, Prøveeksamen tirsdag 23. november 2010 Side 17 Oppgave 10 Personopplysningsloven (5 poeng) Petter Sprett er leder i den lokale idrettsforeninga Varild og samtidig eier av FriskSport, en av stedets to sportsbutikker. Petter vil gjerne bruke sin posisjon som leder av sportsklubben til å både gi medlemmene et bedre tilbud og hjelpe på omsetningen i sin butikk med å lage et nytt datasystem for Varild. I første runde registrerer han navn, adresse, alder, kontingentbetaling og idrettsgren de driver med for alle medlemmene i Varild. Han bruker så medlemsregisteret til å sende ut følgende. a) Et brev til alle medlemmer av Varild om at de får 8 % rabatt ved å handle i FriskSport ved framvisning av medlemskort. Etter ett år finner han ut at for å drive kampanje for utvalgte varer han får inn butikken, bør han utvide datasystemet i Varild. Det har også kommet en rekke innvandrere til stedet. Mange av disse har meldt seg inn i Varild, og Petter vil gjerne finne sportsprodukter som dekker deres behov. Han registrerer nå i tillegg hvilket land medlemmene er født i og kjønn for bedre å kunne sende ut brev til bare de medlemmene som er interessert i hans produkter (særlig tenker han på det cricketutstyret han nå selger). b) Som den lovlydige (?) innbygger Petter er, sender han nå en melding til Datatilsynet om utvidelsen av datasystemet, og begynner så å sende ut kampanjebrev fra butikken til noen av medlemmene om utvalgte sportsprodukter med spesialpriser (cricketutstyr, sportshijaber, slalåmutstyr osv.). Ved å sende ut slik målrettet reklame sparer Petter porto og medlemmene får bare den reklamen som passer for dem. Vurdér om det han gjør under a) og b) er lovlig i følge Personopplysningsloven. Hvis Petter har brutt noen av paragrafene, så nevn hvilke paragrafer han har brutt og hvorfor. (Fortsettes på side 18.)

Eksamen i INF1000, Prøveeksamen tirsdag 23. november 2010 Side 18