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

Like dokumenter
UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Gjennomgang av en tenkt eksamensoppgave

Gjennomgang av en tenkt eksamensoppgave

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

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

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

UNIVERSITETET I OSLO

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

INF Uke 10. Ukesoppgaver oktober 2012

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

INF1000: noen avsluttende ord

Endret litt som ukeoppgave i INF1010 våren 2004

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

Oblig4 - forklaringer. Arne og Ole Christian

UNIVERSITETET I OSLO

INF1010 Sortering. Marit Nybakken 1. mars 2004

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Inf 1000 høst 2005 Løsningsforslag ordinær eksamen

Ta inn og ut av 2D-array. Java 6. Liste over ulike verdier i 2D-array. Det ferdige programmet. Vi skal lage et program som illustrerer hvordan man

Oppgave01.java class Bongo { 2 public static void main(string[] args){ 3 int[][][]bongo = new int[2][3][4]; 4 5 // SVAR: 24 6 } 7 } 8

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

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

UNIVERSITETET I OSLO

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

Blokker og metoder INF1000 (Uke 6) Metoder

Forelesning inf Java 4

UNIVERSITETET I OSLO

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

Ole Christian Lingjærde, 12. september 2013

Forelesning inf Java 4

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

Litt mer om uttrykk: ++ og -- INF1000 : Forelesning 4. Oppgave. Blokker. 0 udefinert udefinert. Alternativ 2 Postfiks-operator

UNIVERSITETET I OSLO

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

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

Det matematisk-naturvitenskapelige fakultet

UNIVERSITETET I OSLO

Løsningsforslag til eksamen i INF1000 våren 2006

Oblig4 - forklaringer. Arne og Ole Christian

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Prøveeksamen inf november Arne Maus og Ole Christian Lingjærde

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

INF1000 (Uke 6) Mer om metoder, tekster

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

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) Løsningsforslag

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

INF1000 oppgaver til uke 38 (17 sep 23 sep)

UNIVERSITETET I OSLO

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

Forelesning inf Java 5

Forelesning inf Java 5

UNIVERSITETET I OSLO

INF Uke 10. Løsningsforslag ukesoppgaver oktober 2012

Kort repetisjon av doble (nestede) løkker Mer om 1D-arrayer Introduksjon til 2D-arrayer Metoder

PRØVEEKSAMEN (rettet versjon 27/11)

UNIVERSITETET I OSLO

INF1000 : Forelesning 5

Oblig 4Hybelhus litt mer tips enn i oppgaven

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Eksempel: Body Mass Index (BMI) Forelesning inf Java 3. Ferdig program (første del) Ferdig program (siste del)

Prøveeksamen høsten 2012

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

INF1000: noen avsluttende ord

UNIVERSITETET I OSLO

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

INF1000 : Forelesning 4

Body Mass Index (BMI) INF1000 : Forelesning 3. Ferdig program (forts.) Ferdig program

for (int i=0; i<3; i++) { for (int j=0; j<5; j++) { System.out.print(i*j); System.out.println();

Forelesning inf Java 5

Oppgave 2 (20 poeng) float og long i oppgave 2:

INF1000 Uke 14. Løsningsforslag - prøveeksamen. Institutt for Informatikk Fredrik Sørensen og Arne Maus

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

i=0 i=1 Repetisjon: nesting av løkker INF1000 : Forelesning 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker j=0 j=1 j=2 j=3 j=4

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

INF1000 : Forelesning 3

Sensur-veiledning INF1000 h 2013 (fasit) am - 6. des. 2013

Spørsmål fra forrige forelesning. INF1000 Forelesning 7. Oppførselen til inword()/inint()/etc. Operator-presedens i Java

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

Dagens tema Kapittel 8: Objekter og klasser

I dag. Rep: Oppsummering - variabler. Rep: Datatyper. INF1000 (Uke 3) Mer om uttrykk, terminal I/O, forgreninger

INF1000 (Uke 4) Mer om forgreninger, While-løkker

INF1000 Prøveeksamen Oppgave 7 og 9

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

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen

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

UNIVERSITETET I OSLO

Transkript:

Oppgave 1 (1 poeng) Er disse programsetningene lovlige i Java? INF 1 Prøveeksamen 3. november 6 Ole Christian og Arne x int i, j = i+1; x int j=3, while(j-->) i = j; x int[]int[] int = new int[8]int[9]; x boolean[] b = null; x boolean[] b = new boolean[true]; x boolean[] b = false; x int 1X = (int) (true == false); x double x = (int) 3.5; x int j = 5, k = (int)(j/.5); x boolean c = (true!= true) && false; Oppgave (1 poeng) a) Hvor mange ganger blir INF1 skrevet ut av følgende løkke: int i = 1; while (++i < 1) { System.out.println( INF1 ); 8 ganger <1 3<1... 9<1 b) Hvor mange ganger blir INF1 skrevet ut av følgende løkke: int i=1, j=1; do { System.out.println( INF1 ); i = i + 1; j = j + i; while (j * i < 1); 5 ganger i j j*i j*i<1? 3 6 true 3 6 18 true 4 1 4 true 5 15 75 true 6 1 16 false

c) Hvilken verdi får variabelen resultat her? int resultat = ; for (int i=; i<1; i=i+1) { for (int j=i; j<i+1; j++) { resultat++; i j resultat..9 1 1 1..19..9 3 1... 9 9..99 1 d) Hvilken verdi får variabelen resultat her? int resultat = ; for (int i=; i<1; i++) { for (int j=; j<1; j++) { if (i == j-1) { i j resultat resultat++; 1 1 1 3 3... 8 9 9 9 9-9 Oppgave 3 (1 poeng) e) Hvilken verdi får variabelen resultat her? String s1 = 1 + + 3 ; "13" String s = 1 + + 3 ; "1 + + 3" String s3 = 1 + + 3; "13" int resultat = ; if (s1.equals(s)) {resultat = 1; else if (s1.equals(s3)) {resultat = ; else if (s.equals(s3)) {resultat = 3; Anta at følgende er deklarert i en metode i et program: int[][] tabell = new int[1][1]; 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? x int k = ; int max = ; while (k < tabell.length) { if (max < tabell[k]) max = tabell[k]; k++;

x x int max = tabell[][]; for (int i=; i<1; i++) { for (int j=; j<1; j++) { if (max < tabell[i][j]) max = tabell[i][j]; int max = tabell[][]; for (int i=; i<1; i++) { for (int j=; j<1; j++) { if (max < tabell[i][j] && max < tabell[j][i]) { max = Math.max(tabell[i][j], tabell[j][i]); x int max = tabell[][]; for (int i=; i<1; i++) { for (int j=i; j<1; j++) { int m = Math.max(tabell[i][j],tabell[j][i]); max = Math.max(max, m); x int[] maxv = new int[1]; for (int i=; i<1; i++) { maxv[i] = tabell[i][]; for (int j=1; j<1; j++) { if (maxv[i] < tabell[i][j]) { maxv[i] = tabell[i][j]; int max = maxv[]; for (int i=; i<1; i++) { if (max < maxv[i]) max = maxv[i]; Oppgave 4 (1 poeng) Skriv ferdig metoden under, som beregner og returnerer arealet A av en trekant ut fra lengdene av de tre sidene: a, b og c. Formelen du skal bruke er: A = ( s a) ( s b) ( s c) hvor s=(a+b+c)/. Du kan bruke Math.sqrt(x) til å beregne kvadratroten av x. MATEMATISK TRYKKFEIL I OPPGAVEN: FORMELEN SKAL SE UT SLIK SOM PÅ DENNE FOILEN. BEGGE VARIANTER GIR FULL UTTELLING HVIS RIKTIG PROGRAMMERT. double trekantareal (double a, double b, double c) { double s = (a + b + c) / ; double p = (s-a) * (s-b) * (s-c); double A = Math.sqrt(p * p); return A;

Oppgave 5 (1 poeng) int div(int teller, int nevner){ int antall = ; int rest = teller; while(rest >= nevner) { rest = rest nevner; antall++; return antall; Hva returneres fra metodekallet div(9, 3)? Dette er en algoritme for heltallsdivisjon teller/nevner hvor teller >= og nevner > Svar:... 3 (fordi 9 = k * 3 + rest, hvor k = 3 og rest = ) Oppgave 6 (1 poeng) 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 -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 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. T-baneselskap T-banevogn Tog driver 1 * eier 1 6 Linje..5 1 inngår i 1 * trafikkeres av tilbyr 1 * Enkeltreise Oppgave 7 ( poeng) Myndighetene i Ruritania vil kartlegge hvilke personer i landet som har forbindelse med hverandre. Vi antar for enkelhets skyld at personer er entydig identifisert ved sitt navn. En forbindelse består av to navn og en tekstlig beskrivelse av hva slags type forbindelse det er snakk om (f.eks. kjærester eller treningskamerater ). Hver forbindelse skal representeres med et objekt av klassen Forbindelse. 1..6 8.. har Holdeplass * er terminalpunkt for Programmet skal først lese tekstfilen forbindelser.txt som inneholder informasjon om endel forbindelser. Når filen er lest, skal programmet be om og lese inn navnet på en person. Deretter skal programmet skrive ut navnene på alle de som vedkommende har forbindelse til, samt hva slags typer forbindelser det er snakk om.

import easyio.*; class NettverkMain { public static void main(string[] args) { Nettverk nett = new Nettverk(); nett.lesfil( forbindelser.txt ); nett.finnforbindelser(); class Nettverk { Forbindelse[ ] f = new Forbindelse[1]; int antall = ; // Her skal det ligge to objektmetoder: lesfil og finnforbindelser a) Lag først konstruktøren i klassen Forbindelse. Konstruktøren skal ha tre parametre (en for hver av objektvariablene i klassen) og skal benytte parameterverdiene til å initiere objektvariablene. Forbindelse(String navn1, String navn, String type) { this.navn1 = navn1; this.navn = navn; this.type = type; class Forbindelse { String navn1; String navn; String type; // Her skal det ligge en konstruktør b) Lag metoden lesfil som skal ligge i klassen Nettverk og som blir kalt på fra main-metoden i klassen NettverkMain. Metoden lesfil skal lese en tekstfil som inneholder en linje for hver forbindelse. Hver linje består av to navn og en beskrivelse av hva slags type forbindelse det er snakk om: <navn1> ; <navn> ; <type forbindelse <navn1> ; <navn> ; <type forbindelse>... <navn1> ; <navn> ; <type forbindelse> Merk at feltene på hver linje er atskilt av semikolon (hvert felt kan dermed leses med inword(";")). Hver forbindelse skal representeres med et objekt av klassen Forbindelse, og du skal legge hver forbindelse inn på første ledige plass i arrayen f. void lesfil(string fnavn) { In fil = new In(fnavn); while (!fil.lastitem()) { String navn1 = fil.inword(";"); String navn = fil.inword(";"); String type = fil.inword(";"); f[antall] = new Forbindelse(navn1, navn, type); antall++; fil.close();

c) Lag metoden finnforbindelser som skal ligge i klassen Nettverk og som blir kalt på fra main-metoden i klassen NettverkMain. Metoden finnforbindelser skal be om og lese inn et navn fra terminal og deretter skrive ut på skjerm navnene på alle de personene som hun/han har forbindelse til og hva slags type forbindelser det er snakk om. void finnforbindelser() { In tast = new In(); System.out.print("Navn: "); String navn = tast.inline(); for (int i=; i<antall; i++) { if (navn.equals(f[i].navn1)) { System.out.println(f[i].navn + "\t" + f[i].type); else if (navn.equals(f[i].navn)) { System.out.println(f[i].navn1 + "\t" + f[i].type); Oppgave 8 (3 poeng) I Ruritania må alle personer som eier TV betale TV-lisens. Lisenskontoret har ansvaret for å kreve inn disse pengene, og de har mistanke om at endel lurer seg unna lisensbetalingen. De har naturligvis en oversikt over alle personer som betaler TV-lisens, og denne oversikten ligger på filen Abonnenter.txt hvor det er en linje for hver registrert betaler: <fødselsnummer> <fødselsnummer>... <fødselsnummer> Lisenskontoret har ingen oversikt over alle personer som eier en TV, så de må gjette seg til hvem det er som eier TV og ikke betaler lisens. Nå har de skaffet seg en oversikt over alle som betaler strømregning, og den oversikten ligger på filen Strom.txt hvor det er en linje for hver registrert betaler: <fødselsnummer> <etternavn> <fornavn> <adresse> <fødselsnummer> <etternavn> <fornavn> <adresse>... <fødselsnummer> <etternavn> <fornavn> <adresse> De fire feltene på hver linje er atskilt av blanke tegn, og det er ingen blanke tegn i de tre første feltene på hver linje (det fjerde feltet - adressen - vil imidlertid normalt inneholde noen blanke tegn). Din oppgave blir nå å benytte de to filene til å lage en ny fil Mistenkte.txt med navn og adresse til de strømabonnentene som ikke er registrert som TVlisensbetalere (lisenskontoret regner med at de fleste av disse har TV og dermed lurer seg unna lisensbetalingen, og de skal derfor oppsøkes av inspektører).

Du skal ta utgangspunkt i følgende uferdige program: import easyio.*; import java.util.*; class Suspekte { public static void main(string[] args) { Analyse ana = new Analyse(); ana.lesabonnenter( Abonnenter.txt ); ana.laglisteovermistenkte( Strom.txt, Mistenkte.txt ); class Analyse { // Her skal du legge inn programkode (se oppgaven) class Analyse { HashMap<String,String> lisensbetalere = new HashMap<String, String>(); void lesabonnenter(string fil) { // Må programmeres void laglisteovermistenkte(string lysfil, String mistenkte) { // Må programmeres void lesabonnenter(string fil) { In abon = new In(fil); while (abon.hasnext()) { String fnum = abon.inword(); lisensbetalere.put(fnum, "Ikke brukt"); abon.close(); void laglisteovermistenkte(string lysfil, String mistenkte) { In lys = new In(lysFil); Out mistanke = new Out(mistenkte); while (lys.hasnext()) { String fnum = lys.inword(); String navnadr = lys.inline(); if (! lisensbetalere.containskey(fnum)) { mistanke.outln(navnadr); mistanke.close(); lys.close();

Oppgave 9: Det er ikke sensitive opplysninger ( -3), men ser vi på 8 ser vi : 8 Behandling av personopplysninger skal bare gjøres etter samtykke og være saklig begrunnet, må være nødvendig før: a) Oppfylle avtale med den registrerte c) Ivareta den registrertes interesser e) å utøve offentlig myndighet f) å ivareta en berettiget interesse som overstiger den registrertes interesse så blir dette IKKE lovlig fordi a) Vi har ingen avtale med lysabonnentene om å bruke data samlet inn (om deres fødselsnummer) til å gi til lisenskontoret. Det er er derfor IKKE saklig begrunnet at lisenskontoret kan bruke disse data som er samlet inn til et annet formål. (punkt e er ikke ment å dekke slike tilfeller- en ren betaling for en vare som tv-lisensen) Oppgave 1 (15 poeng) [Litt vanskelig] Du skal skrive en sorteringsmetode for en heltallsarray arr som bare inneholder tall mellom og 99. Løp først gjennom arrayen arr og tell opp (i en annen array antall av lengde 1) hvor mange ganger hver av verdiene, 1,,..., 99 forekommer. Gå deretter igjennom arrayen antall og skriv inn i arrayen arr fra starten og nedover: først så mange -ere du fant, deretter så mange 1-ere,..., og til slutt så mange 99-ere du fant. Da vil det i arr stå en sortert rekkefølge av tall som er sorteringen av arr. Eksempel: 3 4 1. 3 void sorter (int [] arr) { int [] antall = new int[1]; for (int i = ; i < arr.length; i++) { int val = arr[i]; antall[val]++; TAKK FOR FREMMØTET! int pos = ; for (int verdi = ; verdi < 1; verdi++) { for (int k = ; k < antall[verdi]; k++) { arr[pos++] = verdi; HUSK REPETISJONSFORELESNINGEN PÅ TIRSDAG!!