Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I)



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

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

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

UNIVERSITETET I OSLO

Tillatte hjelpemidler: alle skrevne og trykte. Antall sider: 2 (+ 1 side vedlegg, bakerst). Oppgave 1 [25%]

UNIVERSITETET I OSLO

EKSAMENSOPPGAVE. Vil det bli gått oppklaringsrunde i eksamenslokalet? Svar: JA / NEI Hvis JA: ca. kl. 10:30

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

EKSAMEN 6109 OBJEKTORIENTERT PROGRAMMERING 5609 OBJEKTORIENTERT PROGRAMMERING

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

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

EKSAMENSOPPGAVE. Ingen. Robert Pettersen. Eksamen i: INF Innf. i progr. og datam. virkem. Dato: Tirsdag 5. desember 2017

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Brukarrettleiing E-post lesar

EKSAMENSOPPGAVE. INF-1100 Innføring i programmering og datamaskiners virkemåte. Teorifagb, hus 3, og og Adm.bygget, Aud.max og B.

EKSAMENSOPPGAVE / EKSAMENSOPPGÅVE

UNIVERSITETET I OSLO

Matematikk 1, 4MX15-10E1 A

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

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

UNIVERSITETET I OSLO

MA3002 Generell topologi

Gjennomgang av eksamen H99

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

2 Om statiske variable/konstanter og statiske 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

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

UNIVERSITETET I OSLO

Løysingsforslag til eksamen i MA1301-Talteori, 30/

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

Forelesning inf Java 5

UNIVERSITETET I OSLO

Forelesning inf Java 5

Eksamen Objektorientert Programmering 2013

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Eksamen i. Høst 2013

UNIVERSITETET I OSLO

Ingen hjelpemiddel er tillatne. Ta med all mellomrekning som trengst for å grunngje svaret. Oppgåve 1... (4%) = = 10 =

Brukarrettleiing. epolitiker

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

UNIVERSITETET I OSLO

INF1000 Metoder. Marit Nybakken 16. februar 2004

Til deg som bur i fosterheim år

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

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

Søking til skuleåret

Eksamen INF1010 V2009 Del B prøveeksamen V2010 Vekt 60 %

UNDERSØKING OM MÅLBRUKEN I NYNORSKKOMMUNAR RAPPORT

Programmering i C++ Løsningsforslag Eksamen høsten 2005

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

UNIVERSITETET I OSLO

EKSAMENSOPPGAVE. NB! Det er ikke tillatt å levere inn kladd sammen med besvarelsen

Forelesning inf Java 4

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

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

UNIVERSITETET I OSLO

Presentasjonsmalar - Powerpoint. Kort rettleiing i bruk av malane

Rettleiing aktivering av fritekstleverandørar i ehandel

GlitreTid versjon 6.1, endringar

Endringslogg. Fleire måtar å importere løparar på, direkte import frå Excel fil. Endring på seedingtrekning.

Løsningsforslag til eksamen i INF1000 våren 2006

INF1000 (Uke 6) Mer om metoder, tekster

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

INF Uke 10. Ukesoppgaver oktober 2012

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

Minnebok. Minnebok NYNORSK

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

Rekursjon. Binærsøk. Hanois tårn.

Niels Henrik Abels matematikkonkurranse

UNIVERSITETET I OSLO

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

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

UNIVERSITETET I OSLO

Informasjon Prøveeksamen i IN1000 høsten 2018

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

Innhald Pålogging... 2 Viktige knappar... 3 Fronter som rom... 3 Leggje inn ei oppgåve i Fronter... 4 Litt om nokre ulike format for tekstbehandling

TOD063 Datastrukturer og algoritmer

KONTINUASJONSEKSAMEN I EMNE. TDT4136 Logikk og resonnerande system. Laurdag 8. august 2009, kl

Transkript:

Universitetet i Bergen Matematisk naturvitskapleg fakultet Institutt for informatikk Side 1 av 7 Nynorsk Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) Fredag 10. desember 2004 Tid: 9.00 14.00 Tillatne hjelpemiddel: Alle trykte og skrivne hjelpemiddel er tillatne. Generelt gjeld at programkode må vera formatert slik at han er leseleg og enkel å forstå. Set inn kommentarar der det er naudsynt. Oppgåve 1 (5 %) Kva for verdiar blir følgjande Java-uttrykk evaluerte til? Svara skal ikkje grunngjevast. a) 7 / 4 b) 7 % 4 c) 1.0 + 7.0 / 4 d) 2 + 2 >= 4 e) (2 < 3 4 < 3) &&!(2 + 2 >= 4)

INF100 Grunnkurs i programmering Side 2 av 7 Oppgåve 2 (15 %) Kvar deloppgåve inneheld eit køyrbart Java-program som skriv ut noko på skjermen. Finn ut kva kvart program skriv ut. Svara skal ikkje grunngjevast. a) (3%) Kva for eit tal skriv programmet Oppg2a ut? public class Oppg2a { int n = 13; int m = 7; n -= m; System.out.println(n*m); b) (3%) Kva skriv programmet Oppg2b ut? public class Oppg2b { for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { if (i == j i+j == 4) System.out.print("X"); else System.out.print("."); System.out.println(); c) (3%) Kva for eit tal skriv programmet Oppg2c ut? public class Oppg2c { int[] t = {2, 3, 5, 7, 11, 13; for (int i = 1; i < t.length; i++) t[i] = t[i-1]; System.out.println(t[5]);

INF100 Grunnkurs i programmering Side 3 av 7 d) (3%) Kva for tal skriv programmet Oppg2d ut? public class Oppg2d { int a = 2; int b = 3; System.out.println(fun(1,1)); System.out.println(fun(a,b)); System.out.println(fun(b,a)); static int fun(int a, int b) { a *= 2; b *= 3; return a+b; e) (3%) Kva for tal skriv programmet Oppg2e ut? class Sample { int n; double s; public void add(double t) { s += t; n++; public double avg() { return s/n; public class Oppg2e { Sample s = new Sample(); s.add(2.0); s.add(3.0); System.out.println(s.avg()); Sample t = s; t.add(4.0); System.out.println(t.avg()); System.out.println(s.avg());

INF100 Grunnkurs i programmering Side 4 av 7 Oppgåve 3 (15 %) Lag eit program som les inn ein sekvens av ord frå terminalen, eitt om gongen. For kvart ord sjekkar programmet om det same ordet er lese inn før. I så fall skriv programmet ut ei melding med kor mange gonger ordet er lese inn tidlegare. Programmet held fram med å lesa inn ord inntil 7 ulike ord er lese inn. For innlesing av ord kan du bruka metoden Terminal.lesString(), som let brukaren tasta inn ein streng og returnerer ein referanse til denne strengen. Eit døme på programdialog kan vera følgjande (inntastingar frå brukaren er understreka): Skriv inn ord inntil du har skrive 7 ulike. Tast inn eit ord: java Nytt ord nummer 1. Tast inn eit ord: eksamen Nytt ord nummer 2. Tast inn eit ord: java Skrive 1 gong tidlegare! Tast inn eit ord: jul Nytt ord nummer 3. Tast inn eit ord: java Skrive 2 gongar tidlegare! Tast inn eit ord: tull Nytt ord nummer 4. Tast inn eit ord: tøys Nytt ord nummer 5. Tast inn eit ord: eksamen Skrive 1 gong tidlegare! Tast inn eit ord: snart Nytt ord nummer 6. Tast inn eit ord: ferie Nytt ord nummer 7. Då har eg 7 ord. Takk!

INF100 Grunnkurs i programmering Side 5 av 7 Oppgåve 4 (65 %) Vi tenkjer oss at vi skal utvikla eit program for å halda oversyn over tabellen i ein fotballserie. Tabellen viser korleis laga ligg an i høve til kvarandre etter kvart som kampane vert spelte. Eit døme (utdrag) er vist i tabell 1. kampar mål poeng Rosenborg 26 52 34 48 Vålerenga 26 40 22 48 Brann 26 46 40 40 Tromsø 26 38 32 40 Tabell 1: Utdrag frå serietabell Første kolonne inneheld namnet til laget, andre kolonne talet på spelte kampar. Deretter vert det vist kor mange mål laget har scora til saman (som vi for å gjera det enkelt kallar forlengsmål) og kor mange det har sluppe inn (baklengsmål). Den siste kolonna er talet på poeng. For kvar kamp vert det gitt 3 poeng for siger, 1 poeng for uavgjort og 0 poeng for tap. I denne oppgåva skal vi laga to viktige klassar i dette programmet. Det kan vera lurt å lesa gjennom heile oppgåva før du byrjar. Dei fleste deloppgåvene går ut på å skriva ein metode. Vi brukar notasjonen metode() for metodar, òg når dei har parametrar. Hugs at metodane kan skrivast uavhengig av kvarandre, sjølv om dei gjer bruk av andre metodar. Vi skal først laga ein klasse Lag som representerer resultata for eit einskilt lag. Opplysningane vi treng å lagra, svarar til ein rad i tabellen. a) (3%) Definer høvelege feltvariablar for klassen. b) (3%) Lag ein konstruktør som opprettar eit nytt lag, med namnet som parameter. Ingen kampar er spelte når laget vert oppretta. c) (3%) Lag metodar hentnamn(), henttaletpåforlengsmål() og hentpoeng() for å returnera dei tilsvarande verdiane. d) (2%) Lag ein metode hentmålskilnad() som returnerer differansen mellom talet på forlengsmål og talet på baklengsmål (kan vera negativ).

INF100 Grunnkurs i programmering Side 6 av 7 e) (5%) Lag ein metode registrerkamp() som oppdaterer opplysningane med resultatet av ein ny kamp. Kampresultatet vert gitt som to parametrar: talet på forlengsmål og talet på baklengsmål i denne kampen. f) (3%) Lag ein metode skrivut() som skriv ut ein rad i tabellen, på forma vist i tabell 1. Bruk tabulator ("\t") for å skilja kolonnane. g) (7%) Lag ein metode compareto() som samanliknar resultatet for det aktuelle laget med eit anna lag, gitt som parameter. Returverdien er eit heiltal som viser kven som ligg best an i tabellen. Først vert poenga samanlikna. Dersom det aktuelle laget (this) har flest poeng, vert eit positivt tal returert. Dersom det andre laget har flest, vert eit negativt tal returnert. Dersom poengtalet er likt, vert målskilnaden samanlikna på same viset. Dersom målskilnaden òg er lik, tel talet på forlengsmål. Er alt dette likt, returnerar metoden 0. Vi skal nå laga ein klasse Serie som representerer ein heil tabell som vist i tabell 1. I klassen skal dette implementerast som ein tabell av Lag-objekt. Dessutan skal heile serien ha eit namn, t.d. Eliteserien. h) (3%) Definer høvelege feltvariablar for klassen. i) (5%) Lag ein konstruktør med to parametrar: ein streng som inneheld namnet på serien, og ein tabell av strenger som inneheld namna på laga. For kvart namn i denne tabellen vert eit nytt lag-objekt oppretta og lagt inn i serien. j) (5%) Lag ein metode finnlag() som finn eit lag i serien. Metoden tek namnet på laget (ein streng) som parameter. Dersom det finst eit lag i serien med dette namnet, vert ein referanse til dette Lag-objektet returnert. Dersom det ikke finst noko slikt lag, vert nullreferansen returnert. k) (5%) Lag ein metode registrerkamp() som oppdaterer tabellen med resultatet av ein kamp. Metoden tek fire parametrar: namn og talet på mål for kvart lag. Døme på metodekall: s.registrerkamp("tromsø","viking",2,1) (der s er ein referanse til eit Serieobjekt). Dersom begge laga finst i tabellen, vert informasjonen i kvart av objekta oppdatert, og metoden returnerer true. Dersom ikkje begge laga finst, vert ingenting endra, og metoden returerer false. l) (7%) Lag ein metode lesresultatfil() som les ei tekstfil med kampresultat og registrerer dei i tabellen. Metoden tek filnamnet som parameter. Filen inneheld eit ukjent tal på kampar og er på følgjande format: Tromsø-Viking 2-1 Brann-Rosenborg 0-4 Vålerenga-Sogndal 5-0

INF100 Grunnkurs i programmering Side 7 av 7 Berre kampar der begge laga er med i den aktuelle serien, vert registrerte. Eventuelle andre resultat hoppar metoden over. Metoden returnerer talet på kamper som vart registrerte. m) (3%) Vi treng òg ein metode for å sortera tabellen. Koden under brukar algoritmen boblesortering til dette. Skriv ned vilkåret som manglar i valsetninga (1). Tabellen skal sorterast med det beste resultatet først, slik som i tabell 1, basert på kriteria i punkt g. public void sortertabell() { for (int siste=tabell.length-1; siste>0; siste--) { for (int dette=0; dette<siste; dette++) { if ( /* set inn vilkår her */ ) { // (1) Lag temp = tabell[dette]; tabell[dette] = tabell[dette+1]; tabell[dette+1] = temp; n) (4%) Lag ein metode skrivtabell() som skriv ut heile tabellen, sortert som over. Bruk namnet på serien som overskrift. o) (7%) Når serien er spelt ferdig, vil dei beste laga rykkja opp i ein høgare divisjon (dersom det finst), og dei dårlegaste vil rykkje ned. Lag ein metode oppned() som gjer ei slik utveksling av to lag mellom to divisjonar (to Serie-objekt). Metoden tek tre parametrar: Serie over, int nrfratoppen, int nrfrabotnen. Det aktuelle objektet (this) er den nedste divisjonen, og over er den øvste. Når metoden vert kalla, vil lag nummer nrfratoppen i den aktuelle serien, rekna frå toppen av tabellen (når han er sortert) byta plass med lag nr nrfrabotnen, rekna frå botnen i serien over. Til dømes vil kallet div2a.oppned(div1,1,1) byta vinnaren i div2a med taparen i serien div1,og kallet div2b.oppned(div1,1,2) vil byta vinnaren i serien div2b med det nest dårlegaste laget i div1. Lykke til! Eivind Coward Karl Holmås