UNIVERSITETET I OSLO

Like dokumenter
UNIVERSITETET I OSLO

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

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

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

Gjennomgang av en tenkt eksamensoppgave

Gjennomgang av en tenkt eksamensoppgave

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

UNIVERSITETET I OSLO

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

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF1000 Forelesning 8. Litt repetisjon: Metoder og klasser Innkapsling av variable og metoder Hvordan gripe an et stort problem?

Hva er en metode? INF1000 Forelesning 8. Hva skjer når vi kaller en metode? Hvorfor bruke metoder?

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

INF Uke 10. Ukesoppgaver oktober 2012

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

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

s 678 * Hvordan designe og programmere objektorientert * Støtte til oppstart på Oblig 4: Jobbe frem eget forslag til datastruktur

INF 1000 høsten 2011 Uke 10: 25. november

Gjennomgang prøveeksamen oppgave 1, 2, 4, 5, 7

UNIVERSITETET I OSLO

INF1000: noen avsluttende ord

UNIVERSITETET I OSLO

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

b) 10 2 = 20 c) 5 1 = 5.

Oblig4 - forklaringer. Arne og Ole Christian

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

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

Det matematisk-naturvitenskapelige fakultet

PRØVEEKSAMEN (rettet versjon 27/11)

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

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

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

Løsningsforslag til eksamen i INF1000 våren 2006

UNIVERSITETET I OSLO

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

Gjennomgang av eksamen H99

INF1000 oppgaver til uke 38 (17 sep 23 sep)

Forelesning inf Java 4

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

Dagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller.

Uke 8 Eksamenseksempler + Ilan Villanger om studiestrategier. 11. okt Siri Moe Jensen Inst. for informatikk, UiO

TDT4100 Objektorientert programmering

UNIVERSITETET I OSLO

INF1000 Prøveeksamen Oppgave 7 og 9

UNIVERSITETET I OSLO

Eksamen høsten 2003 Den store bøygen i INF1000 er de obligatoriske oppgavene.

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

EKSAMEN I EMNET INF100/INF100-F Grunnkurs i programmering (Programmering 1) Fredag 16. desember 2005 Tid: 09:00 14:00

Endret litt som ukeoppgave i INF1010 våren 2004

INF1000: noen avsluttende ord

INF1000 Behandling av tekster

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

UNIVERSITETET I OSLO

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

Oblig4 - forklaringer. Arne og Ole Christian

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

Forelesning inf Java 5

Forelesning inf Java 5

Løsningsforslag ukeoppg. 3: sep (INF Høst 2011)

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

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

Transkript:

OPPGAVEN BLIR GJENNOMGÅTT PÅ FORELESNINGEN 24/10. DU BØR FORBEREDE DEG TIL FORELESNINGEN VED Å SETTE AV MINST TRE-FIRE TIMER TIL Å PRØVE Å LØSE OPPGAVEN PÅ EGENHÅND. UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Tenkt eksamen i : INF1000 Grunnkurs i objektorientert programmering Gjennomgås: På forelesningen onsdag 24. oktober 2012 kl 14-16 Oppgavesettet er på : 12 sider Vedlegg : Ingen Tillatte hjelpemidler : Alle trykte og skrevne Dersom du savner opplysninger i noen av oppgavene, 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. Svarene kan skrives på disse oppgavearkene. I de oppgavene hvor det skal skrives programkode, anbefales det at du først skriver en kladd på eget ark før du fører svaret inn i disse oppgavearkene på avsatt plass. Noen av spørsmålene er flervalgsoppgaver. På slike oppgaver gis det til eksamen poeng etter hvor mange korrekte svar du gir. Du ville til eksamen ikke fått poeng hvis du hadde latt være å besvare et spørsmål, eller dersom du hadde krysset av begge svaralternativer. Hvis du til eksamen setter 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. Ikke bruk datamaskin når du løser oppgavene det er bare å lure seg selv siden poenget er at denne prøven skal være så lik en ordentlig eksamen som mulig. Oppgave 1 Er disse programsetningene lovlige i Java? JA NEI int i, j = i+1; int j = 3, while (j-->0) {i = j; int[]int[] int2 = new int[8]int[9]; boolean[] b = null; boolean[] b = new boolean[true]; boolean[] b = false; int 12X = (int) (true == false); double x = (int) 3.5; int j = 5, k = (int)(j/2.5); boolean c = (true!= true) && false;

Oppgave 2-2 - a) Hvor mange ganger blir INF1000 skrevet ut av følgende løkke: int i = 1; while (++i < 10) { System.out.println( INF1000 );... b) Hvor mange ganger blir INF1000 skrevet ut av følgende løkke: int i=1, j=1; do { System.out.println( INF1000 ); i = i + 1; j = j + i; while (j * i < 100);... c) Hvilken verdi får variabelen resultat her? int resultat = 0; for (int i=0; i<100; i=i+10) { for (int j=i; j<i+10; j++) { resultat++;... d) Hvilken verdi får variabelen resultat her? int resultat = 0; for (int i=0; i<10; i++) { for (int j=0; j<10; j++) { if (i == j-1) { resultat++;... e) Hva blir skrevet ut på skjermen her? String s1 = 10 + 20 + 30 ; String s2 = 10 + 20 + 30 ; String s3 = 10 + 20 + 30; if (s1.equals(s2)) {System.out.println("A"); if (s1.equals(s3)) {System.out.println("B"); if (s2.equals(s3)) {System.out.println("C");...

-3- Oppgave 3 Anta at følgende er deklarert i en metode i et program: int[][] tabell = new int[100][100]; Anta at arrayen tabell er fylt opp med verdier (positive og negative) som er lest fra en fil. Hvilke av alternativene under vil alltid gi som resultat at max inneholder maksimumsverdien i tabell? JA NEI int k = 0; int max = 0; while (k < tabell.length) { if (max < tabell[k]) max = tabell[k]; k++; int max = tabell[0][0]; for (int i=0; i<100; i++) { for (int j=0; j<100; j++) { if (max < tabell[i][j]) max = tabell[i][j]; int max = tabell[0][0]; for (int i=0; i<100; i++) { for (int j=0; j<100; j++) { if (max < tabell[i][j] && max < tabell[j][i]) { max = Math.max(tabell[i][j], tabell[j][i]); int max = tabell[0][0]; for (int i=0; i<100; i++) { for (int j=i; j<100; j++) { int m = Math.max(tabell[i][j], tabell[j][i]); max = Math.max(max, m); int[] maxv = new int[100]; for (int i=0; i<100; i++) { maxv[i] = tabell[i][0]; for (int j=1; j<100; j++) { if (maxv[i] < tabell[i][j]) { maxv[i] = tabell[i][j]; int max = maxv[0]; for (int i=0; i<100; i++) { if (max < maxv[i]) max = maxv[i];

-4 - Oppgave 4 Anta at en trekant har sidekanter med lengde henholdsvis a, b og c. Da er arealet til trekanten gitt ved formelen A s( s a)( s b)( s c), der s=(a+b+c)/2. Skriv ferdig metoden under som beregner og returnerer dette arealet. double finnareal (double a, double b, double c ) { Oppgave 5 Betrakt følgende metode: int div(int teller, int nevner){ int antall = 0; int rest = teller; while(rest >= nevner) { rest = rest nevner; antall++; return antall; Hvilken verdi returneres fra metodekallet div(92, 3)?...

-5 - Oppgave 6 Vi kan lage en sekvens med heltall på følgende måte: la de to første elementene i sekvensen begge være 1 og la deretter hvert element være summen av de to foregående. Den sekvensen vi da får starter slik: 1, 1, 2, 3, 5, 8, 13,... og kalles Fibonacci-sekvensen. Du skal nå lage en metode som beregner de n første elementene i Fibonacci-sekvensen og returnerer disse i en heltallsarray av lengde n+1 (det første elementet i arrayen, svarende til posisjon 0, skal ikke benyttes). Posisjon k i arrayen som returneres skal inneholde det k te elementet i Fibonacci-sekvensen for k=1,...,n. Du kan anta at n 2. int[] fibonacci (int n) {

-6 - Oppgave 7 Skriv ferdig metoden under, som teller opp hvor mange ganger tegnet i char-variabelen tegn forekommer i tekststrengen tekst, og returnerer dette antallet. For eksempel skal kallet antallforekomster ( Engelske, e ) returnere verdien 2. Hvis tekst == null så skal metoden returnere verdien 0. Hint: bruk String-metoden charat for å plukke ut et enkelt tegn fra en tekststreng. int antallforekomster (String tekst, char tegn) { Oppgave 8 Et T-baneselskap driver 6 linjer (Sognsvann, Østerås,..) og eier en rekke T-banevogner. Disse vognene er fordelt på et antall tog, slik at hvert tog har 2-5 vogner (alltid like mange og alltid de samme vognene for et gitt tog). Hvert tog har fast tilhørighet til en av linjene. En linje har fra 8 til 20 holdeplasser, og en holdeplass kan deles av opptil 6 linjer (f.eks. Majorstua). En enkeltreise foregår på et bestemt tog og har to tilhørende holdeplasser (holdeplass for påstigning og holdeplass for avstigning). Tegn et UML- klassediagram med klassene T-baneselskap, Vogn, Tog, Linje, Holdeplass og Enkeltreise. Gi navn på forbindelsene (assosiasjonene) mellom klassene som nevnt ovenfor, og gi antall i hver ende av assosiasjonene.

-7 - Oppgave 9 Anta at følgende program utføres: class StudentSystem { public static void main (String[] args) { Studieprogram inf = new Studieprogram("Informatikk"); Studieprogram bio = new Studieprogram("Biologi"); new Student("Kari Olsen", inf); new Student("Eva Larsen", inf); new Student("Per Jensen", bio); bio.liste(); inf.liste(); class Studieprogram { String tittel; Student[] medlemmer; int antall; Studieprogram (String tittel) { this.tittel = tittel; medlemmer = new Student[100]; antall = 0; void meldinnstudent(student stud) { medlemmer[antall] = stud; antall++; void liste() { for (int i=0; i<antall; i++) { System.out.println(medlemmer[i].somTekst()); class Student { String navn; Student (String navn, Studieprogram sp) { this.navn = navn; sp.meldinnstudent(this); String somtekst() { return navn; Skriver programmet noe ut på skjermen, og isåfall hva?

Oppgave 10 Anta at du har deklarert en HashMap: -8 - HashMap<String,String> cdsamling = new HashMap<String,String>(); og at du legger inn informasjon om CD ene dine i HashMapen, med platens tittel som nøkkel og artistnavnet som verdi (du antar at alle platene dine alle har ulik tittel). Et eksempel er cdsamling.put( Not going under, Maria Arredondo ); Skriv noen programsetninger som: først ber om og leser inn et artistnavn fra tastatur (f.eks. Maria Arredondo ). deretter går gjennom HashMapen og skriver ut titlene til alle platene du har registrert med denne artisten. Hint: husk at du vil ha tak i både nøklene og verdiene når du løper gjennom HashMapen. Det kan derfor lønne seg å lage en Iterator over nøklene (platetitlene). Du kan anta at programsetningene plasseres slik i programmet at de har tilgang til HashMapen cdsamling.

-9 - Oppgave 11 I programmet nedenfor skal du lage en konstruktør til klassen Student. Konstruktøren skal ha studentens navn som parameter og skal initiere objektvariabelen navn. Du skal også skrive en objektmetode void økpoeng(int poeng) i klassen Student som øker antall studiepoeng med parameterens verdi. I klassen StudentTest skal du så sørge for å få initiere arrayen uiostud med 32000 Student-objekter. Studentobjektene i arrayen uiostud skal ha hvert sitt studentnavn Stud-1, Stud-2, Stud-3,... Stud-32000. Dermed skal f.eks. uiostud[252] peke på et Student-objekt hvor studentens navn er satt lik Stud-253. Til sist skal du sette antall studiepoeng til 30 for hver av studentene Stud-1,..., Stud-25000. class Student { String navn; int antallstudiepoeng = 0; // Her skal du skrive konstruktøren // Her skal du skrive objektmetoden økpoeng class StudentTest { Student[] uiostud = new Student[50000]; public static void main (String[] args) { // Her skal du opprette 32000 Student-objekter med navn Stud-1, // Stud-2,...,Stud-32000 og legge dem inn i uiostud-arrayen // Her skal du øke antall studiepoeng med 30 for studentene // med studentnavn Stud-1, Stud-2,..., Stud-25000. // end main

- 10 - Oppgave 12 Filen SpamOrd.txt inneholder endel spam-ord (atskilt av blanke tegn), dvs ord som du ikke forventer å finne i seriøse eposter til deg, men som ofte forekommer i useriøse eposter (såkalt spamepost). Du skal lage et fullstendig program som leser SpamOrd.txt og som deretter leser filen Epost.txt og sjekker om denne inneholder noen av spam-ordene. Programmet skriver til slutt ut på skjermen om filen Epost.txt inneholdt noen spam-ord eller ikke (du trenger ikke å skrive ut hvilke eller hvor mange spam-ord filen inneholdt). Du kan anta at SpamOrd.txt maksimalt inneholder 200 ord. I denne oppgaven kan du godt legge all programkoden inn i main-metoden. (forts. neste side)

- 11 -

- 12 - Oppgave 13 Skriv metoden under som finner og skriver ut på skjerm hvor mange ulike verdier du har i en array og returnerer dette antallet. Hint: definer en heltallsvariabel antulike og initier denne til 0. Løp deretter gjennom alle elementene i arrayen. For hvert verdi du ser øker du antulike med 1 dersom det er siste gang denne verdien forekommer i arrayen, dvs hvis ingen elementer med høyere indeks er lik denne verdien (du kan sjekke dette med en ny løkke inni den ytre løkken). Dermed er du sikret at hver verdi bare telles en enkelt gang. Du kan anta at lengden av arrayen a er minst 1. void finnantalluliketall (int[] a) {