Gjennomgang av eksamen V99
|
|
- Brage Holen
- 6 år siden
- Visninger:
Transkript
1 Gjennomgang av eksamen V99 Holmenkoll-stafetten DEL 1 Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for Informatikk Universitetet i Oslo Ole Chr Lingjærde Institutt for informatikk 19 april 2001
2 Forslag til arbeidsplan 1 Les nøye gjennom hele oppgaven 2 Identifiser mulige klasser i systemet: en klasse for datamodell og beregninger og en (eller to) klasse(r) for kontroll og utsyn klasser som representerer (deler av) datastrukturen 4 Finn ut hvilke metoder som trengs i de ulike klassene Her kan det lønne seg å jobbe ovenfra-og-ned, dvs først metodene som kalles av bruker (via ordre) eller som brukes i hovedløkka deretter metodene som kalles av de førstnevnte metodene osv 3 Tegn klasse/objekt-diagram (også kalt mental modell) som inkluderer klasser og objekter (inkl hashtabeller), arrayer, referanser (ofte del av oppgaven) 5 Fyll ut klassene med resterende variable og skriv koden i metodene Ole Chr Lingjærde Institutt for informatikk 19 april 2001
3 Eksamensoppgave våren 1999 Holmenkollenstafetten - verdens største stafett med cirka løpere Ole Chr Lingjærde Institutt for informatikk 19 april 2001
4 UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i : IN 105 Eksamensdag : Mandag 7 juni 1999 Tid for eksamen : Oppgavesettet er på : 6 sider (inkludert vedlegg) Vedlegg : Klassen Stream fra JavaGently Tillatte hjelpemidler : Alle trykte og skrevne (Tilpasset Java 12)
5 Denne oppgaven dreier seg om å lage to programmer for å effektivisere Holmenkollstafetten I den utstrekning du kjenner til (detalj)opplysninger om Holmenkollstafetten og disse avviker fra det som gis i denne oppgaven, skal du bruke opplysningene som gis i oppgaven De er tilstrekkelige til å løse eksamen ---o 0 o --- Holmenkollstafetten er et gateløp på 15 etapper som løpes av lag i ulike løpsklasser (se fullstendig liste av løpsklasser i oppgave 1) Du skal nå lage to datasystemer for å hjelpe arrangørene til å få en tidsmessig dataløsning: I Et system som kjøres av klubbene som melder på (ett eller flere) lag til løpet Dette systemet skal du lage i oppgave 1) nedenfor Dette systemet produserer en fil (uansett hvor mange lag som meldes på) som klubben sender inn til arrangøren II Et system som kjøres av arrangøren Dette systemet skal (utfyllende opplysninger i hvert oppgavepunkt): a) Motta filer fra de klubbene, lese disse og bygge opp en passende datastruktur for hele løpet b) Kunne rette to typer av opplysninger om lag som en klubb har påmeldt (trekke lag, endre deltagere på etapper på ett lag)
6 c) Tildele startnummer til de ulike påmeldte lagene (en liste over lagnavn med startnummer og starttidspunkt skal produseres) d) Ta inn løpsresultater for de ulike lagene og skrive ut liste over vinnere i hver klasse og resultatliste for hver klubb Dette er opplagt ikke en fullstendig løsning for Holmenkollstafetten (håndtering av påmeldingsavgift, flere typer av løpsklasser og fullstendige, sorterte resultatlister mangler, men vi tenker oss at dette skal senere utvides til et ekte datasystem)
7 Oppgave 1 (20 %) Du skal her lage et enkelt system som klubbene skal bruke til å melde på ett eller flere lag til stafetten En klubb kan høyst melde på ett lag i hver løpsklasse Filen programmet skal produsere har følgende format eksempel: Idrettslaget-Koll Aktiv herre B 1 Ole Olsen Per Jensen Peder Kvikk Aktiv kvinne elite 1 Guri Grei Siri Kvikk Turid Antonsen ZZZ Filen skal altså starte med en linje som er klubbens navn (anta at det er skrevet som ett ord som ovenfor Hint: Husk at readstring() i Stream leser bare neste ord fram til en blank eller linjeskift), Etter klubbnavnet kommer angivelse av løpsklasse (tillatte verdier: Aktiv herre elite, Aktiv herre B, Aktiv dame elite, Aktiv dame B, Bedrift herre, Bedrift dame, Bedrift blandet ) for første lag som påmeldes Deretter kommer 15 nummererte linjer med løpere og løpernes 11-sifrete personnummer, en linje for hver etappe (du skal anta at det er bare ett fornavn og ett etternavn for hver løper) Dette gjentas for hvert lag som meldes på og det er ingen bestemt rekkefølge man må ha lagene i Filen avsluttes med en string ZZZ på en egen linje
8 Oppgave 1 Lag et enklest mulig menydrevet hovedprogram og datastruktur som produserer denne filen (ikke legg inn muligheter for rettinger/endringer, men anta at hvis klubben vil endre sin påmelding eller taster feil, taster de bare inn alle opplysningene på nytt) Merk: oppgaven refererer til 11-sifrete personnummer Normalt er det de 5 siste sifrene som kalles personnummer, mens alle 11 sifre kalles fødselsnummer I besvarelsen velger vi likevel å holde oss til oppgavens definisjon av personnummer
9 Oppgave 2 (80 %) I denne oppgaven skal du lage systemet som arrangøren skal bruke, og som er skissert på tidligere i dette oppgavesettet Oppg 2A Les nøye gjennom de øvrige spørsmålene i oppgave 2 og lag så en tegning av de klasser og viktigste datastrukturene du vil ha i systemet ditt Beskriv også kort (noen få linjer) hva hver klasse skal representere og inneholde Oppg 2B Lag klassen Holmenkollen som inneholder main() I denne klassen skal vi opprette nødvendig datastruktur, skrive ut en meny, motta valg fra brukeren, og så kalle relevante metoder i andre klasser (Dere som løser oppgaven i Simula: Lag et hovedprogram som oppretter nødvendig datastruktur, skriver ut en meny, mottar valg fra brukeren, og så kaller relevante prosedyrer i systemets klasser) Oppg 2C Lag metoden lesfrafil (), som mottar en fil fra en klubb (som beskrevet i oppg1) og som oppdaterer datastrukturene dine med opplysningene på fila Oppg 2D Lag en metode sjekk() som går gjennom alle løpere på ett lag og sjekker at løperne på laget hverken løper flere etapper på dette laget eller deltar på andre lag i hele stafetten (Hint: Bruk personnummeret som er ulikt for alle løpere) Skriv ut passende opplysninger hvis du finner en slik løper
10 Oppg 2E Oppg 2F Lag en metode som er egnet til å brukes når en klubb vil endre sin påmelding Nå skal du bare tenke deg at klubben ringer inn til arrangøren (inntil 2 uker før start) og enten vil trekke påmeldingen av et lag eller vil sette inn andre løper(e) på en eller flere etapper Lag en tegning som viser tilstanden i datastrukturen før og etter at et lag blitt trukket Du skal nå anta at påmeldinger og rettelser er avsluttet Lag først en metode startnummer(), som går gjennom datastrukturen og skriver ut navn til deltagerklubbene i hver løpsklasse, og som samtidig teller opp antall deltagerklubber i hver løpsklasse, samt gir disse nummer Denne listen skrives ut Du skal bare bruke en nummerserie (1,2,) for hele løpet Oppg 2G Løpet skal starte kl 1200 med de aktive - dameklassene først (elite først, så B), deretter tilsvarende for herrer, og til sist bedriftsklassene for damer, herrer og blandet Alle lag i en løpsklasse starter samtidig Du skal nå skrive ut en liste for starttidspunkter for de ulike løpsklassene ut fra opptelling av antall lag i hver løpsklasse, og at det må være minimum 15 minutter mellom hver start, men at du også må legge til 15 min for start av neste løpsklasse for hvert 100 lag som starter i forrige løpsklasse (dvs hvis det er opp til 99 deltagere i Aktiv dame elite, starter neste klasse Aktiv dame B kl 1215, men er det fra 100 til 200 deltager, starter Aktiv dame B kl 1230, osv) Oppg 2H Lag en metode som brukes av en funksjonær ved registrering av sluttider etter hvert som lagene kommer i mål Han finner tiden ved å se på en klokke Det som skal registreres er lagets startnummer (som løperne har på seg og som følger den nummereringen du fant i pkt 2F) og klokkeslettet for målpassering som tre tall: time, minutt og sekund
11 Oppg 2I Oppg 2J Lag en metode som skriver ut vinnerlaget i hver løpsklasse Hint Skriv først en metode som for et lag regner ut sluttiden, dvs hvor lang tid laget har brukt fra starttidspunktet (som du regnet ut i 2G) til målpasseringsklokkeslettet (som er registrert i 2H) For hvert av klubbene lager du en rapport som viser hvilken plassering deres lag fikk Plasseringen finner du ved å telle opp hvor mange av de andre lagene i samme løpsklasse som hadde bedre sluttid Oppg 2K Kan puffes Definer først et filformat som lagrer resultatene for hele Holmenkollstafetten ett år, og en metode som skriver ut resultatene på fil på dette formatet Skisser så hvordan du vil legge til i datastrukturen din slik at du kan lese inn resultatene fra flere tidligere år på dette formatet og skrive ut rapporter om hvor godt hvert lag fra en klubb har gjort det tidligere år (og i hvilke år det var) og tilsvarende opplysninger pr løper hvor mange ganger har hun/han deltatt tidligere, på hvilke lag og med hvilket resultat
12 Innledende kommentarer Alt for lang oppgave - nesten umulig å rekke alt Vanlig misforståelse på oppgave 1 medførte at denne ble svær Tøff start på oppgave 2 To første delpunkter mye å gjøre og svært sentrale for hele oppgaven For å forenkle litt er aksessmodifikatorer (public/private) ikke benyttet i forslaget her Vi kommer istedet til å kommentere dette helt til slutt Ole Chr Lingjærde Institutt for informatikk 19 april 2001
13 Oppgave 1 Lag et enklest mulig menydrevet hovedprogram og datastruktur som produserer denne filen (ikke legg inn muligheter for rettinger eller endringer, men anta at hvis klubben vil endre sin påmelding eller taster feil, taster de bare inn alle opplysningene på nytt) Her er det kun snakk om å lese inn fra terminal og legge rett ut på fil Det er ikke nødvendig å bygge opp noen datastruktur som holder alle dataene som leses inn Ole Chr Lingjærde Institutt for informatikk 19 april 2001
14 Oppgave 1 (skisse) <import-setninger> class Oppg1Main { public static void main (String [] args) { Oppg1 oppg = new Oppg1(); class Oppg1 { <deklarasjoner> Oppg1 () { <deklarasjoner; åpne fil> <les inn klubbnavn, skriv til fil> <be bruker taste inn løpsklasse, skriv til fil Les inn navn på alle 15 løpere på laget i denne løpsklassen Skriv navnene til fil Gjenta til brukeren vil avslutte> <lukk filen> Ole Chr Lingjærde Institutt for informatikk 19 april 2001
15 class Oppg1 (skisse) class Oppg1 { <deklarasjoner> Oppg1 () { <deklarasjoner; åpne fil> <les inn klubb-navn og skriv til fil> løpskl = lesløpsklasse (); while (løpskl!= 0) { <skriv løpsklasse til fil> <les inn navn på alle lagets løpere; skriv ut på fil etterhvert> løpskl = lesløpsklasse (); <skriv ut ZZZ på fil og lukk filen> int lesløpsklasse() { <Be bruker taste inn en løpsklasse og returner denne > Ole Chr Lingjærde Institutt for informatikk 19 april 2001
16 Ferdig program import inf101*; class Oppg1 { Inn tastatur = new Inn(); Ut utfil = new Ut( Holmenkolldata ); String [] løpsklassenavn = {"Aktiv dame elite", "Aktiv dame B", "Aktiv herre elite", "Aktiv herre B", "Bedrift dame", "Bedrift herre", "Bedrift blandet"; Oppg1 () {/* Se eget ark */ int lesløpsklasse () {/* Se eget ark */ Ole Chr Lingjærde Institutt for informatikk 19 april 2001
17 int lesløpsklasse () { int svar; do { Systemoutprintln(" Velg ny løpsklasse (0 = ferdig): \n"); for (int i = 0; i < 7; i++) Systemoutprintln((i+1) + " - " + løpsklassenavn[i]); svar = tastaturinint(); while (svar < 0 svar > 7); return svar; Ole Chr Lingjærde Institutt for informatikk 19 april 2001
18 Oppg1 () { String klubbnavn, løperfnavn, løperenavn, løperpnr; int løpskl; Systemoutprint("Tast klubbens navn:"); klubbnavn = tastaturinstringln(); utoutstringln(klubbnavn); løpskl = lesløpsklasse(); while (løpskl!= 0) { utoutstringln(løpsklassenavn[løpskl-1]); for (int i = 1; i < 16; i++) { Systemoutprint("\nGi fornavn på løper " + i +" :"); løperfnavn = tastaturinstring(); Systemoutprint("\nGi etternavn på løper " + i +" :"); løperenavn = tastaturinstring(); Systemoutprint("\nGi personnummer på løper " + i +" :"); løperpnr = tastaturinstring(); utoutstringln( i + " " + løperfnavn + " " + løperenavn + " " + løperpnr); løpskl = lesløpsklasse(); utoutstringln("zzz"); utclose();
19 Oppgave 2A Les nøye gjennom de øvrige spørsmålene i oppgave 2 og lag så en tegning av de klasser og viktigste datastrukturene du vil ha i systemet ditt Beskriv også kort (noen få linjer) hva hver klasse skal representere og inneholde Fremgangsmåte: Vi går gjennom punktene 2B-2J og lager en liste over det som skal gjøres/lages Hva slags opplysninger må programmet holde rede på? Hvordan holder vi rede på dem? Her er det vesentlig hvilke operasjoner vi ønsker å gjøre på datastrukturen Grupper tingene som skal lages i naturlige enheter (som blir klasser) Beskriv kort klassene Lag et klasse/objekt-diagram Ole Chr Lingjærde Institutt for informatikk 19 april 2001
20 Liste over det som skal gjøres 2B datastruktur + løkke for innlesing av ordre 2C lese fil fra en klubb og oppdatere datastruktur 2D gå gjennom alle løpere på et lag, sjekke at de (1) bare løper en etappe og (2) bare for dette laget 2E fjerne et lag, endre løpere på et lag 2F skrive ut navn til klubbene i hver løpsklasse + telle opp antall klubber i hver løpsklasse + gi klubbene nummer 2G skrive ut liste med start-tider for de ulike løpsklassene For å bestemme start-tid: må vite antall lag (= antall klubber) i hver løpsklasse 2H Gitt lagnummer (= klubbnummer), finn lag og sett slutt-tid (time, min, sek) 2I For hver løpsklasse, finn laget med lavest slutt-tid 2J For hver klubb, finn alle lagenes plassering (ved å sammenlikne med andre lag i samme løpsklasse) Ole Chr Lingjærde Institutt for informatikk 19 april 2001
21 De viktigste begrepene Analysér teksten - understrek substantivene, finn de viktigste begrepene (objektene) i problemet (og antall) - Stafett (1 stk) - Løpsklasse (7 stk) - Lag (flere pr løpsklasse, opptil 7 pr klubb - Deltager (15 stk pr lag) - Etappe (15 stk pr stafett) - Klubb (flere i stafetten) Ole Chr Lingjærde Institutt for informatikk 19 april 2001
22 Begrepsrelasjoner En deltager har et navn (String), et personnr (String) og en etappe (int) Et lag består av 15 deltagere (array), tilhører en klubb (ref) og en løpsklasse (ref), og har et startnr (int), en slutt-tid (int,int,int) og en plassering (int) En klubb består av opptil 7 lag (array) og har et navn (String) og antalllag (int) Ole Chr Lingjærde Institutt for informatikk 19 april 2001
23 En løpsklasse består av mange lag/klubber (vet ikke hvor mange) og har en tittel (String), et klassenr (int) og en start-tid (int, int, int) Vi kan bruke hashtabell (= HashMap) med lag som nøkkel og klubb som element klubb som nøkkel og lag som element Hvilken velger vi? Vi kommer ikke til å søke (med get) på klubb eller lag i oppgavene 2F, 2G, 2I, kun lage liste (med iterator()) Dermed spiller det ingen rolle hvilken vi velger (vi kan bruke enten keyset() eller values() for å lage liste) Velger i denne besvarelsen å bruke klubb som nøkkel og lag som element
24 Stafetten har mange lag, klubber og løpsklasser; for å holde orden på alle kan vi bruke Hashtabell (=HashMap) med alle lagene (vet ikke hvor mange) Hashtabell (=HashMap) med alle klubbene (vet ikke hvor mange) Array over alle løpsklassene (7 stk) Trenger vi alle? 2D, 2E: for et gitt lag 2F: for hver klubb 2F, 2G, 2I: for hver løpsklasse Velger å bruke alle tre tabell-former i klassen Stafett Ole Chr Lingjærde Institutt for informatikk 19 april 2001
25 Hver av punktene ovenfor gir naturlig opphav til en klasse, dvs vi velger å definere klassene class Stafett { class Klubb { class Lopsklasse { class Lag { class Deltager { Nå er vi klare til å tegne et klasse/objekt-diagram Ole Chr Lingjærde Institutt for informatikk 19 april 2001
26 Klasse/objekt-diagram Holmenkollen Holmenkollen() Stafett lagene Lopsklasse klubbene 0 6 løpsklassene lag Klubb 0 6 lag antalllag Lag 0 14 løpere Deltager pnr navn navn etappe klubb løpsklasse startnr slutt-tid start-tid klassenr tittel plassering st
27 Oppgave 2B Lag klassen Holmenkollen som inneholder main() I denne klassen skal vi opprette nødvendig datastruktur, skrive ut en meny, motta valg fra brukeren, og så kalle relevante metoder i andre klasser Merk: her er det faktisk snakk om å lage seks klasser: Hovedklassen Holmenkollen som inneholder kontroll/utsyn Klassen Stafett som inneholder datastrukturen Klassene Deltager, Lag, Klubb, Lopsklasse Det eneste vi ikke skal gjøre, er å implementere (gi innmaten i) metodene som det spørres om i oppgavene 2C-2K Ole Chr Lingjærde Institutt for informatikk 19 april 2001
28 class Deltager { String navn, pnr; int etappe; Deltager (int etappe) {thisetappe = etappe; /* Andre ting */ class Lag { Lopsklasse løpsklasse; Klubb klubb; int startnr, slutttime, sluttmin, sluttsek; Deltager [] løpere = new Deltager[15]; int plassering = 1; Lag (Klubb klubb, Lopsklasse løpsklasse) { thisklubb = klubb; thisløpsklasse = løpsklasse; /* Andre ting */
29 class Klubb { String navn; int antalllag; Lag [] lag = new Lag[7]; Klubb (String navn) { thisnavn = navn; /* Andre ting */ class Lopsklasse { String tittel; int klassenr; int starttime, startmin, startsek; HashMap lag = new HashMap(); // key = Klubb, elem = Lag Lopsklasse (String tittel, int klassenr) { thistittel = tittel; thisklassenr = klassenr;
30 class Stafett { // DATAMODELL HashMap klubbene = new HashMap(); // key = String, elem = Klubb HashMap lagene = new HashMap(); // key = Lag, elem = Lag LopsKlasse [] løpsklassene = new LopsKlasse[7]; int lesløpsklasse() { /* OPPGAVE 2C - metode 1 (av 2) */ void lesfrafil(string fnavn) { /* OPPG 2C - metode 2 (av 2) */ void sjekk(lag lag1) { /* OPPGAVE 2D */ void sjekkalle() { /* Egnet for kall fra hovedmeny - 2D */ void endrepåmelding (Inn inn) { /* OPPGAVE 2E */ void startnummer() { /* OPPGAVE 2F */ void gistarttidspunkt() { /* OPPGAVE 2G */ void regslutttider (Inn inn) { /* OPPGAVE 2H */ void finnvinnere() { /* OPPGAVE 2I */ void giklubbeneresultatliste() { /* OPPGAVE 2J */
31 class Holmenkollen { Holmenkollen () { Stafett st = new Stafett(); /* Løkke for innlesning av ordre */ int lesordre () { /* Les inn ordre fra bruker */ public static void main (String [] args) { Holmenkollen hk = new Holmenkollen(); Ole Chr Lingjærde Institutt for informatikk 19 april 2001
32 int lesordre (Inn tastatur) { Systemoutprintln("\nVelg funksjon: "); Systemoutprintln("0 - Avslutt "); Systemoutprintln("1 - Les klubbfil"); Systemoutprintln("2 - Sjekk løpere (alle mot alle) "); Systemoutprintln("3 - Trekke lag eller endre løpere "); Systemoutprintln("4 - Gi startnummer "); Systemoutprintln("5 - Gi starttider, skriv startliste "); Systemoutprintln("6 - Registrer slutt-tider "); Systemoutprintln("7 - Finn vinnere i hver løpsklasse "); Systemoutprintln("8 - Gi klubbene resultatliste "); return tastaturinint(); Ole Chr Lingjærde Institutt for informatikk 19 april 2001
33 Holmenkollen () { Stafett st = new Stafett(); Inn tastatur = new Inn(); int ordre; Systemoutprintln("\n -- Program for Holmenkoll-løpet ---: \n"); ordre = lesordre(tastatur); while (ordre!= 0) { switch (ordre) { case 1: Systemoutprint("Gi klubb-fil navn:"); stlesfrafil(tastaturinstring()); break; case 2: stsjekkalle(); break; case 3: stendrepåmelding(inn); break; case 4: ststartnummer(); break; case 5: stgistarttidspunkt(); break; case 6: stregslutttider(inn); break; case 7: stfinnvinnere(); break; case 8: stgiklubbeneresultatliste(); break; default: Systemoutprintln("Velg et tall mellom 0 og 8"); ordre = lesordre(tastatur); Systemoutprintln("Programmet er ferdig");
34 Gjennomgang av eksamen V99 Holmenkoll-stafetten DEL 2 Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for Informatikk Universitetet i Oslo Ole Chr Lingjærde Institutt for informatikk 19 april 2001
35 Oppgave 2C Lag metoden lesfrafil (), som mottar en fil fra en klubb (som beskrevet i oppg1) og som oppdaterer datastrukturene dine Skisse (kun innlesningen fra fil): void lesfrafil (String fnavn) { <diverse deklarasjoner> Inn fil = new Inn(fNavn); klubbnavn = filinstringln(); klassenr = lesløpsklasse(fil); // negativ hvis ZZZ while (klassenr >= 0) { <les data om 15 lagdeltagere fra fil> klassenr = lesløpsklasse(fil); Ole Chr Lingjærde Institutt for informatikk 19 april 2001
36 Holmenkollen Holmenkollen () Stafett lagene Lopsklasse klubbene 0 6 løpsklassene lag Klubb 0 6 lag antalllag Lag 0 14 løpere Deltager pnr navn navn etappe klubb løpsklasse startnr slutt-tid start-tid klassenr tittel plassering klubb = new Klubb(klubbNavn); klubbeneput(klubbnavn, klubb);
37 Holmenkollen Holmenkollen () Stafett lagene Lopsklasse klubbene 0 6 løpsklassene lag Klubb 0 6 lag antalllag Lag 0 14 løpere Deltager pnr navn navn etappe klubb løpsklasse startnr slutt-tid start-tid klassenr tittel plassering lag = new Lag(klubb, løpsklassene[klassenr]); lagleslag(fil);
38 Holmenkollen Holmenkollen() Stafett lagene Lopsklasse klubbene 0 6 løpsklassene lag Klubb 0 6 lag antalllag Lag 0 14 løpere Deltager pnr navn navn etappe klubb løpsklasse startnr slutt-tid start-tid klassenr tittel plassering klubbnyttlag(klassenr, lag); løpsklassene[klassenr]lagput(klubb, lag); lageneput(lag, lag);
39 Endelig versjon av LesFraFil void lesfrafil (String fnavn) { String klubbnavn, klassenavn, løperfnavn, løperenavn, løperpnr; int klassenr; Klubb klubb; Lag lag; Inn fil = new Inn(fNavn); klubbnavn = filinstringln(); klubb = new Klubb(klubbNavn); klubbeneput(klubbnavn, klubb); klassenr = lesløpsklasse(fil); // negativ hvis ZZZ while (klassenr >= 0) { lag = new Lag(klubb, løpsklassene[klassenr]); lagleslag(fil); klubbnyttlag(klassenr, lag); løpsklassene[klassenr]lagput(klubb, lag); lageneput(lag, lag); klassenr = lesløpsklasse(fil); Ole Chr Lingjærde Institutt for informatikk 19 april 2001
40 int lesløpsklasse (Inn fil) { // Leser indeksen til løpsklassen fra fil // Aktiv dame elite = 0, Aktiv dame B = 1, osv // ZZZ returnerer -1 String s; int svar = 0; s = filinstringln(); if (sequals( ZZZ )) svar = -1; else if (sequals("aktiv dame elite")) svar = 0; else if (sequals("aktiv dame B")) svar = 1; else if (sequals("aktiv herre elite"))svar = 2; else if (sequals("aktiv herre B")) svar = 3; else if (sequals("bedrift dame")) svar = 4; else if (sequals("bedrift herre")) svar = 5; else if (sequals("bedrift blandet")) svar = 6; return svar;
41 I klassen Lag: void leslag (Inn fil) { for (int i=0; i<15; i++) { løpere[i] = new Deltager(i); // i = etappe-nummer løpere[i]les(fil); // les opplysninger om deltager I klassen Klubb: void nyttlag (int klassenr, Lag laget) { lag[klassenr] = laget; // bruk lagets løpsklasse som pos i arrayet antalllag++; // NB: slik nyttlag er programmert, kan arrayet lag ha huller, dvs vi kan feks ha at lag[0]==null, lag[1]==et lag, lag[2]==null, osv
42 I klassen Deltager: void les (Inn fil) { int etappenr; String linje; StringTokenizer st; etappenr = filinint(); navn = filinstring() + " " + filinstring(); pnr = filinstring(); Ole Chr Lingjærde Institutt for informatikk 19 april 2001
43 Oppgave 2D Lag en metode sjekk() som går gjennom alle løpere på et lag og sjekker at løperne på laget hverken løper flere etapper på dette laget eller deltar på andre lag i hele stafetten Her velger vi å gjøre noen egne forutsetninger Metoden sjekk() slik den er beskrevet over er tungvint å bruke fra hovedmenyen i programmet (må gi ny ordre for hvert lag som skal sjekkes) Bedre: lage metoden sjekk() som over (naturligvis) og i tillegg lage metode sjekkalle() som kalles fra hovedmenyen, og som benytter sjekk() Ole Chr Lingjærde Institutt for informatikk 19 april 2001
44 void sjekk (Lag lag1) { String pnr1, pnr2; Lag lag2; Deltager løper1, løper2; for (int i=0; i<15; i++) { løper1 = lag1løpere[i]; // Se på en løper på lag1 pnr1 = løper1fåpnr(); Iterator it = lagenevalues()iterator(); while (ithasnext()) { // gå gjennom alle lagene i stafetten lag2 = (Lag) itnext(); // lag2 er et av disse lagene for (int j=0; j<15; j++) { løper2 = lag2løpere[j]; // Se på en løper på lag2 pnr2 = løper2fåpnr(); if (!løper1equals(løper2) && pnr1equals(pnr2)) { // To forskjellige løpere med samme personnr, dvs // samme person løper mer enn en gang! Skriv feilmelding: Systemoutprintln( Personen: + løper1fånavn() +, med pnr: + pnr1 + løper mer enn en gang! )
45 void sjekkalle() { Lag lag; Iterator it = lagenevalues()iterator(); while (ithasnext()) { lag = (Lag) itnext(); sjekk(lag); I klassen Deltager: String fånavn() { return navn; String fåpnr() { return pnr; I klassen Klubb: String fånavn() { return navn;
46 Oppgave 2E Lag en metode som er egnet til å brukes når en klubb vil endre sin påmelding Nå skal du bare tenke deg at klubben ringer inn til arrangøren (inntil 2 uker før start) og enten vil trekke påmeldingen av et lag eller vil sette inn andre løper(e) på en eller flere etapper Lag en tegning som viser tilstanden i datastrukturen før og etter at et lag blitt trukket For å finne et bestemt lag trengs klubbens navn løpsklasse For å finne en bestemt løper trengs i tillegg løperens personnummer Ole Chr Lingjærde Institutt for informatikk 19 april 2001
47 Skisse: void endrepåmelding (Inn tastatur) { Systemoutprint( Ønsket endring (T=trekke lag, E=endre lag): ); switch (tastaturinchar()) { case T : trekklag(tastatur); break; case E : endrelag(tastatur); break; default: Systemoutprintln( Ulovlig kommando ); break; void trekklag (Inn tastatur) { <deklarasjoner> <les inn klubbnavn og løpsklasse> <fjern laget fra datastrukturen> void endrelag (Inn tastatur) { <deklarasjoner> <les inn klubbnavn og løpsklasse> <les inn personnr på person som skal byttes ut> while <flere som skal byttes ut> { <les inn navn og personnr på person som skal inn> <finn deltager-objektet som skal endres> <endre deltager-objektet> <les inn personnr på person som skal byttes ut (0=ferdig)>
48 Å fjerne et lag Stafett klubbene løpsklassene 0 6 lagene Holmenkollen Holmenkollen() Klubb lag antalllag 0 navn 6 Lopsklasse lag tittel klassenr start-tid Lag løpsklasse løpere 0 klubb startnr 14 slutt-tid Deltager navn pnr etappe plassering lageneremove(lag); løpsklassene[klassenr]lagremove(klubb); klubblag[klassenr] = null; klubbantalllag--; if (klubbantalllag == 0) klubbeneremove(klubbnavn); Ole Chr Lingjærde Institutt for informatikk 19 april 2001
49 void fjernlag (Inn tastatur) { String klubbnavn; Klubb klubb; Lag lag; int klassenr; // Finn klubb, klassenr og lag Systemoutprint( Klubbens navn: ); klubbnavn = tastaturinstring(); klubb = (Klubb) klubbeneget(klubbnavn); Systemoutprintln( Løpsklasser: ); for (int i=0; i<7; i++) Systemoutprintln((i+1) + + løpsklassene[i]tittel); Systemoutprint( Velg løpsklasse (1-7): ); klassenr = tastaturinint() - 1; lag = (Lag) løpsklassene[klassenr]lagget(klubb); if (lag == null) Systemoutprintln( Klubben har ikke meldt på lag i den klassen!"); else { // Fjern laget lageneremove(lag); løpsklassene[klassenr]lagremove(klubb); klubblag[klassenr] = null; klubbantalllag--; if (klubbantalllag == 0) klubbeneremove(klubbnavn);
50 Å endre et lag Stafett klubbene løpsklassene 0 6 lagene Holmenkollen Holmenkollen() Klubb lag antalllag 0 navn 6 Lopsklasse lag tittel klassenr start-tid Lag løpsklasse løpere 0 klubb startnr 14 slutt-tid Deltager navn pnr etappe plassering lagløpere[i]skrivnavn(navn); lagløpere[i]skrivpnr(pnr); Ole Chr Lingjærde Institutt for informatikk 19 april 2001
51 void endrelag (Inn tastatur) { String klubbnavn, pnr, navn; Klubb klubb; Lag lag; int klassenr; <Finn klubb, klassenr og lag akkurat som i fjernlag ()> Systemoutprint( Personnr til løper som skal ut: ); pnr = tastaturinstring(); while (!pnrequals( 0 )) { int i=0; while (i<15 &&!lagløpere[i]lespnr()equals(pnr)) i++; if (i<15) { // Fant en løper med dette personnummeret Systemoutprint( Navn på ny løper (fornavn etternavn): ); navn = tastaturinstringln(); lagløpere[i]skrivnavn(navn); Systemoutprint( Personnr til ny løper: ); pnr = tastaturinstring(); lagløpere[i]skrivpnr(pnr); else Systemoutprintln( Ingen med dette personnummeret! ); Systemoutprint( Personnr til løper som skal ut (0=ferdig): ); pnr = tastaturinstring();
52 Oppgave 2F Lag først en metode startnummer(), som går gjennom datastrukturen og skriver ut navn til deltagerklubbene i hver løpsklasse, og som samtidig teller opp antall deltagerklubber i hver løpsklasse, samt gir disse nummer Denne listen skrives ut Du skal bare bruke en nummerserie (1,2, ) for hele løpet Vi skal altså produsere en utskrift omtrent som følger for hver løpsklasse: Løpsklasse: Aktiv herre elite Antall lag: 84 Startnummer Klubb 1 klubbnavn1 2 klubbnavn2 Ole Chr Lingjærde Institutt for informatikk 19 april 2001
53 void startnummer() { int nummer; Lopsklasse løpskl; Lag lag; nummer = 1; for (int i=0; i<7; i++) { løpskl = løpsklassene[i]; Systemoutprintln("Løpsklasse: " + løpskltittel()); Systemoutprintln("Antall lag: " + løpskllagsize()); Systemoutprintln( Startnummer Klubb"); Iterator it = løpskllagvalues()iterator(); while (ithasnext()) { lag = (Lag) itnext(); Systemoutprintln( + nummer + " " + lagklubbnavn); lagstartnr = nummer; nummer ++;
54 Oppgave 2G Du skal nå skrive ut en liste for starttidspunkter for de ulike løpsklassene ut fra opptelling av antall lag i hver løpsklasse [ ] void gistarttidspunkt() { Lopsklasse løpskl; int forsinkelse; // Forsinkelse (i minutter) fra kl 1200 String s; forsinkelse = 0; // Første pulje starter presis kl 1200 for (int i=0; i<7; i++) { løpskl = løpsklassene[i]; løpsklstarttime = 12 + forsinkelse / 60; løpsklstartmin = forsinkelse % 60; forsinkelse += * (løpskllagsize()/100); if (løpsklstartmin == 0) s = "00"; else s = StringvalueOf(løpsklstartMin); Systemoutprintln(løpskltittel + " starter kl" + løpsklstarttime + "" + s + "00"); Ole Chr Lingjærde Institutt for informatikk 19 april 2001
55 Oppgave 2H Lag en metode som brukes av en funksjonær ved registrering av sluttider etter hvert som lagene kommer i mål Han finner tiden ved å se på en klokke Det som skal registreres er lagets startnummer (som løperne har på seg og som følger den nummereringen du fant i pkt 2F) og klokkeslettet for målpassering som tre tall: time, minutt og sekund void regslutttider (Inn tastatur) { <deklarasjoner> <les inn startnummer fra terminal (0 = ferdig)> while <startnummer ulik 0> { <løp gjennom alle lagene helt til du finner det laget som har samme startnummer som det innleste nummeret>; if (<lag med samme nr ikke funnet>) <skriv feilmelding>; else <les inn slutt-tid fra terminal og registrer>; <les inn nytt startnummer fra terminal (0 = ferdig)> Ole Chr Lingjærde Institutt for informatikk 19 april 2001
56 void regslutttider (Inn tastatur) { int startnr; boolean found; Lag lag; Systemoutprint("Startnummer (avslutt med 0): "); startnr = tastaturinint(); while (startnr > 0) { found = false; Iterator it = lagenevalues()iterator(); while (ithasnext() &!found) { lag = (Lag) itnext(); if (lagstartnr == startnr) found = true; if (!found) Systemoutprintln( Ulovlig start-nummer"); else { Systemoutprint("Gi slutt-tid (time min sek): "); lagslutttime = tastaturinint(); lagsluttmin = tastaturinint(); lagsluttsek = tastaturinint(); Systemoutprint("Startnummer (avslutt med 0): "); startnr = tastaturinint();
57 Oppgave 2I Lag en metode som skriver ut vinnerlaget i hver løpsklasse Hint: skriv først en metode som for et lag regner ut sluttiden, dvs hvor lang tid laget har brukt fra starttidspunktet til målpasserings-klokkeslettet void finnvinnere () { Lag lag, bestelag; int bestetid; for (int i=0; i<7; i++) { bestetid = ; // Garantert større enn noen slutt-tid Iterator it = løpsklassene[i]lagvalues()iterator(); while (ithasnext()) { lag = (Lag) itnext(); if (lagslutttid() < bestetid) { bestetid = lagslutttid(); bestelag = lag; Systemoutprintln( Vinner i klassen + løpsklassene[i]tittel + er: + bestelagklubbnavn; Ole Chr Lingjærde Institutt for informatikk 19 april 2001
58 Ole Chr Lingjærde Institutt for informatikk 19 april 2001 Oppgave 2J For hver av klubbene lager du en rapport som viser hvilken plassering deres lag fikk Plasseringen finner du ved å telle opp hvor mange av de andre lagene i samme løpsklasse som hadde bedre sluttid void giklubbeneresultatliste () { Lag lag, lag2; int slutttid; for (int i=0; i<7; i++) { Iterator it = løpsklassene[i]lagvalues()iterator(); while (ithasnext()) { lag = (Lag) itnext(); slutttid = lagslutttid(); Iterator it2 = løpsklassene[i]lagvalues()iterator(); while (it2hasnext()) { lag2 = (Lag) it2next(); if (lag2slutttid() < slutttid) lagplassering ++; <gå gjennom alle klubbene, og skriv for hver klubb ut en resultatliste for alle klubbens lag (overlates til leseren)>
UNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i : IN 105 Eksamensdag : Mandag 7. juni 1999 Tid for eksamen : 09.00-15.00 Oppgavesettet er på : 6 sider (inkludert vedlegg) Vedlegg
Detaljerimport java.io.*; import java.util.*; import javagently.text;
//-------------------------------------------------------- // // Fil: Oppg1.java - // løser oppgave 1 i eksamensettet for in105 - v99 // //-------------------------------------------------------- import
DetaljerGjennomgang av eksamen H99
Gjennomgang av eksamen H99 Administrasjon av kurser, studenter og påmeldinger Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for Informatikk Universitetet i Oslo Oppgave 1 (15 %) (Besvares
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1000 Grunnkurs i objektorientert programmering Eksamensdag: 11. juni 2004 Tid for eksamen: 9.00 12.00 Oppgavesettet er på 8
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i : Eksamensdag : Fredag 5. desember 2003 Tid for eksamen : 09.00 12.00 Oppgavesettet er på : Vedlegg : Tillatte hjelpemidler :
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Eksamen i : Eksamensdag : Torsdag 2. desember 2004 Tid for eksamen : 09.00 12.00 Oppgavesettet er på : Vedlegg : Tillatte hjelpemidler
DetaljerINF1000 (Uke 15) Eksamen V 04
INF1000 (Uke 15) Eksamen V 04 Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset 22-05-2006 2 22-05-2006 3 22-05-2006 4 Oppgave 1a
DetaljerINF1000 (Uke 15) Eksamen V 04
INF1000 (Uke 15) Eksamen V 04 Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset 22-05-2006 2 22-05-2006 3 22-05-2006 4 Oppgave 1a
DetaljerUNIVERSITETET I OSLO
Side 1 UNIVERSITETET I OSLO Kandidatnr Det matematisk-naturvitenskapelige fakultet Eksamen i: PRØVEEKSAMEN INF1000 Eksamensdag: Prøveeksamen 22.11.2011 Tid for eksamen: 12:15-16:15 Oppgavesettet er på
DetaljerOppgave 1. Oppgave 2. Oppgave 3. Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004
Oppgave 1 Prøveeksamen i INF1000 Ole Christian og Arne 23. november 2004 Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI int i; int k = i; int i, j = 4; int k = j; double[] x = new
DetaljerLøsningsforslag eksamen in105, høsten 2000
Løsningsforslag eksamen in105, høsten 2000 Det tas forbehold om mulige feil i løsningsforslaget. Oppgave 1 I klassen Bok velger vi her å ta med int antallutlån selv om denne ikke trengs før i oppgave 4.
DetaljerPrøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004
Prøveeksamen i INF1000 Ole Christian og Arne 23. november 2004 Oppgave 1 Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI int i; int k = i; int i, j = 4; int k = j; double[] x = new
DetaljerOppgave 1. INF1000 Uke 13. Oppgave 2. Oppgave 3. Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI
Oppgave 1 INF1000 Uke 13 Gjennomgang av prøveeksamen fra høsten 2004 Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI int i; int k = i; int i, j = 4; int k = j; double[] x = new double[1];
DetaljerDagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller.
Dagens forelesning Java 13 Design av større programmer : fordeling av roller INF 101-13. mars 2003 Flere eksempler på bruk av objekter MVC-prinsippet MVC-prinsippet Flere eksempler på programmer med objekter
DetaljerINF1000: Forelesning 11. Oppgave 2. Oppgave 1. Husk å melde deg på prøveeksamen i INF1000! Ole Christian Lingjærde 7.november 2006
Husk å melde deg på prøveeksamen i INF1000! INF1000: Forelesning 11 Ole Christian Lingjærde 7.november 2006 Frist påmelding: 16. november Arrangementet er torsdag 23. november kl 1420 og omfatter: Oppgaven
DetaljerEndret litt som ukeoppgave i INF1010 våren 2004
Endret litt som ukeoppgave i INF1010 våren 2004!!!" # # $# ##!!%# # &##!'! Kontroller at oppgavesettet er komplett før du begynner å besvare det. Les gjerne gjennom hele oppgavesettet før du begynner med
DetaljerEksamen høsten 2003 Den store bøygen i INF1000 er de obligatoriske oppgavene.
Eksamen høsten 2003 Den store bøygen i INF1000 er de obligatoriske oppgavene. Hovedformålet med eksamen er å skille ut de som har skjønt litt om programmering fra de som ikke har skjønt noe. For de som
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Kontinuasjonseksamen i : Eksamensdag : INF1000 Grunnkurs i objektorientert programmering Fredag 7. januar Tid for eksamen : 09.00
DetaljerUNIVERSITETET I OSLO
Side 1 UNIVERSITETET I OSLO Kandidatnr Det matematisk-naturvitenskapelige fakultet LØSNINGSFORSLAG Eksamen i: PRØVEEKSAMEN INF1000 Eksamensdag: Prøveeksamen 22.11.2011 Tid for eksamen: 12:15-16:15 Oppgavesettet
DetaljerTre måter å lese fra terminal. Java 4. Eksempel. Formatert utskrift til skjerm
Mer om easyio Mer om forgreninger Løkker 7. september 2004 Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo Java 4 1 Tre måter å lese fra terminal Først:
DetaljerUNIVERSITETET I OSLO
FASIT UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Kontinuasjonseksamen i : Eksamensdag : INF1000 Grunnkurs i objektorientert programmering Fredag 7. januar Tid for eksamen :
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Kandidatnr Eksamen i INF1000 Grunnkurs i objektorientert programmering Eksamensdag: Onsdag 10. juni 2009 Tid for eksamen: 9.00 12.00 Oppgavesettet
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet PRØVEEKSAMEN i INF1000 23. november 2004 kl. 14.00 17.00 Dine svar skal skrives på disse oppgavearkene, og ikke på separate ark. Dette gjelder
DetaljerEksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I
Universitetet i Bergen Det matematisk naturvitenskapelige fakultet Institutt for informatikk Side 1 av 6 Bokmål Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1000 Grunnkurs i objektorientert programmering Eksamensdag: 13. juni 2006 Tid for eksamen: 9.00 12.00 Oppgavesettet er på 5
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Kandidatnr Eksamen i INF1000 Grunnkurs i objektorientert programmering Eksamensdag: Onsdag 1. desember 2010 Tid for eksamen: 14.00 18.00
DetaljerFaglærerne prøver å besøker eksamenslokalet mellom klokka 15 og 16 for å oppklare eventuelle uklarheter og feil i oppgaveteksten.
IN1010/INF1010 v2019 Eksamensinfo Eksamen IN1010/INF1010 våren 2019 Tid: 7. juni kl. 14:30-18:30 (4 timer) PRAKTISK INFORMASJON Hvis du synes noen deler av oppgaven er uklare, kan du legge dine egne forutsetninger
DetaljerUNIVERSITETET I OSLO
Kandidatnummer: Bokmål UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Prøveeksamen i : INF1000 Grunnkurs i objektorientert programmering Prøveeksamensdag : Onsdag 12. november 2014 Tid
Detaljer"Nelsons kaffebutikk"
"Nelsons kaffebutikk" et eksempel på systemutvikling med objekter Originale lysark av Jens Kaasbøll - mindre endringer av G. Skagestein og Knut Hegna IN105-javaNelson-1 Nelsons kaffebutikk Området som
DetaljerLitt mer om uttrykk: ++ og -- INF1000 : Forelesning 4. Oppgave. Blokker. 0 udefinert udefinert. Alternativ 2 Postfiks-operator
Litt mer om uttrykk: ++ og -- INF : Forelesning Løkker og arrayer Mye og viktig stoff. Du MÅ løse oppgaver selv for å lære!. september 6 Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for
DetaljerI dag INF1000 (Uke 4) Mer om forgreninger, While-løkker. Tre måter å lese fra terminal. Tre måter å lese fra terminal.
I dag INF1000 (Uke 4) Mer om forgreninger, While-løkker Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Repetisjon easyio Enkle if-setninger Mer om forgrening While-løkker Are Magnus
DetaljerDe neste ukene. INF1000 Uke 12. Prøveeksamen. Nå - Prøveeksamen. Forelesning om IT og samfunn neste uke (13/11).
De neste ukene Forelesning om IT og samfunn neste uke (13/11). INF1000 Uke 12 Gjennomgang av prøveeksamen fra høsten 2004 Ukeoppgave: Blir en gammel eksamensoppgave Uken etter er det prøveeksamen. Den
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Prøveeksamen i : INF2440 Praktisk parallell programmering Prøveeksamensdag : 26. mai 2014 Tidspunkter: 11.00 Utdeling av prøveeksamen 15:15
DetaljerUNIVERSITETET I OSLO
Kandidatnummer: UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet eksamen Eksamen i : INF1000 Grunnkurs i objektorientert programmering Eksamensdag : Mandag 3. desember 2007 Tid for
DetaljerLøsningsforslag til eksamen i INF1000 våren 2006
Løsningsforslag til eksamen i INF1000 våren 2006 Oppgave 1 a) -1 false 7 b) 30 c) Verdien til j er: 4Verdien til k er: 3Verdien til n er: 7 d) Andre if-test er true Tredje if-test er true e) k = 4 k =
DetaljerINF1000 (Uke 4) Mer om forgreninger, While-løkker
INF1000 (Uke 4) Mer om forgreninger, While-løkker Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Anja B. Kristoffersen I dag Repetisjon easyio Enkle if-setninger
DetaljerUNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i : INF 101 - Grunnkurs i objektorientert programmering Eksamensdag : Tirsdag 4. juni 2002 Tid for eksamen : 09.00-15.00 Oppgavesettet
DetaljerI dag INF1000 (Uke 4) Mer om forgreninger, While-løkker. Tre måter å lese fra terminal. Repetisjon. Mer om forgrening While-løkker
I dag INF1000 (Uke 4) Mer om forgreninger, While-løkker Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Repetisjon easyio Enkle if-setninger Mer om forgrening While-løkker Are Magnus
DetaljerForelesning inf Java 4
Forelesning inf1000 - Java 4 Tema: Løkker Arrayer Metoder Ole Christian Lingjærde, 12. september 2012 Ole Chr. Lingjærde Institutt for informatikk, 29. august 2012 1 Repetisjon: arrayer Deklarere og opprette
Detaljeri=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 Repetisjon: arrayer Tema: Løkker Arrayer Metoder Ole Christian Lingjærde,. september Deklarere og opprette array - eksempler: int[] a = new int[]; String[] a = new String[]; I
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Side 1 Det matematisk-naturvitenskapelige fakultet Eksamen i: INF1010 Objektorientert programmering Eksamensdag: Onsdag 4. juni 2014 Tid for eksamen: 9:00-15:00 Oppgavesettet er på
DetaljerINF1000 Forelesning 9. Hashmap Eksempel: Flyreservasjon
INF1000 Forelesning 9 Hashmap Eksempel: Flyreservasjon HashMap Ofte har vi flere, mange objekter av en bestemt klasse - eks. : elever på en skole biler som har passert bomringen i Oslo telefonsamtaler
DetaljerLøsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF1000 - Høst 2011)
Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF1000 - Høst 2011) Løsningsforslag til oppgave 7, 8, og 9 mangler Klasser og objekter (kap. 8.1-8.14 i "Rett på Java" 3. utg.) NB! Legg merke til at disse
DetaljerHva 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; }
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; Hva skrives ut på skjermen når følgende kode utføres? int [] tallene =
DetaljerUNIVERSITETET I OSLO
PRØVEEKSAMEN INF1 - H6 UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Prøveeksamen i : INF1 Grunnkurs i objektorientert programmering Dato: Torsdag 3. november 6 Tid for prøveeksamen
DetaljerUNIVERSITETET I OSLO
Bokmål UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i: INF1000 Grunnkurs i objektorientert programmering Eksamensdag: Fredag 4. desember 2015 Tid for eksamen: 14.30 (4 timer)
DetaljerHashMap. INF1000 Forelesning 9. Ulike versjoner i Java 1.4 (gammel) og Java 1.5/1.6 av HashMap. Objekter lagres med en søkenøkkel
HashMap INF1000 Forelesning 9 Hashmap Eksempel: Flyreservasjon Ofte har vi flere, mange objekter av en bestemt klasse - eks. : elever på en skole biler som har passert bomringen i Oslo telefonsamtaler
DetaljerGJØVIK INGENIØRHØGSKOLE
GJØVIK INGENIØRHØGSKOLE Postboks 191-2801 GJØVIK KANDIDATNUMMER: E K S A M E N FAGNAVN: FAGNUMMER: Programmering i C++ / Pascal / C LO154A, LO151A og LO142A EKSAMENSDATO: 7. juni 1994 TID: 09.00-14.00
DetaljerInnhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java
INF høsten 2 Uke 4: 3. september Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Siri Moe Jensen og Arne Maus Mål for uke 4: Innhold uke 4 Repetisjon m/ utvidelser:
DetaljerUNIVERSITETET I OSLO
Bokmål UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i: INF1000 Grunnkurs i objektorientert programmering Eksamensdag: Torsdag 4. desember 2014 Tid for eksamen: 14.30 (4 timer)
DetaljerJava 4. Mer om easyio Mer om forgreninger Løkker. 7. september 2004
Java 4 Mer om easyio Mer om forgreninger Løkker 7. september 2004 Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo 1 Tre måter å lese fra terminal Først:
DetaljerINF1000 : Forelesning 3
INF1000 : Forelesning 3 Programeksempler Løkker Arrayer Ole Christian Lingjærde Biomedisinsk forskningsgruppe Institutt for informatikk Universitetet i Oslo 1 Body Mass Index (BMI) Vi skal lage et program
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i Eksamensdag: 4. juni 2005 Tid for eksamen: 0900 1500 Oppgavesettet er på 5 sider. Vedlegg: Tillatte hjelpemidler: INF1010 Objektorientert
DetaljerBody Mass Index (BMI) INF1000 : Forelesning 3. Ferdig program (forts.) Ferdig program
Body Mass Index (BMI) Programeksempler Løkker Arrayer Ole Christian Lingjærde Biomedisinsk forskningsgruppe Institutt for informatikk Universitetet i Oslo INF1000 : Forelesning 3 1 Vi skal lage et program
DetaljerUNIVERSITETET I OSLO
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
DetaljerOblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl. 23.59
Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl. 23.59 Formål Formålet med denne oppgaven er å gi trening i hele pensum og i å lage et større program. Løsningen du lager skal være
DetaljerINF1000 (Uke 14) Resten av eksamen H03 + del av V05
INF1000 (Uke 14) Resten av eksamen H03 + del av V05 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Anja B. Kristoffersen Eksamen H03, oppgave 2 2 Oppgave 2.1
DetaljerLøsningsforslag, inf101, våren 2001
Løsningsforslag, inf101, våren 2001 Anders Brunland Oppgave 1 (15%) a) Navn på søker trenger ikke være med i sak-objektet siden den kan hentes fra det første dokumentet i saken. Variabelen FRIST er strengt
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1010 Objektorientert programmering Dato: 9. juni 2016 Tid for eksamen: 09.00 15.00 (6 timer) Oppgavesettet er på 7 sider. Vedlegg:
DetaljerEKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00
EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: 9. mai 2016 Eksamenstid: 09:00 13:00 Hjelpemidler: Alle trykte og skrevne Faglærer: Jan Høiberg Om eksamensoppgavene: Oppgavesettet består
DetaljerHøgskolen i Gjøvik Institutt for informatikk og medieteknikk E K S A M E N. Grunnleggende programmering
Høgskolen i Gjøvik Institutt for informatikk og medieteknikk E K S A M E N FAGNAVN: Grunnleggende programmering FAGNUMMER: IMT 1031 EKSAMENSDATO: 19.desember 2005 KLASSE(R): 05HBIND*, 05HBINFA, 05HBISA,
DetaljerEksempel: Body Mass Index (BMI)
Ole Chr. Lingjærde 1 Forelesning inf1000 - Java 3 Tema: Forgreninger Løkker Arrayer Ole Christian Lingjærde, 5. september 2013 1 Eksempel: Body Mass Index (BMI) Vi skal lage et program som beregner BMI
DetaljerLese fra fil. INF1000 : Forelesning 5. Eksempel. De vanligste lesemetodene. Metoder:
Lese fra fil Filbehandling Tekster Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo INF1000 : Forelesning 5 Vi må først importere pakken easyio Vi åpner
DetaljerEksamen i emnet INF100 Grunnkurs i programmering (Programmering I) Løsningsforslag
Universitetet i Bergen Det matematisk naturvitenskapelige fakultet Institutt for informatikk Side 1 av 8 Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) Løsningsforslag Fredag 10. desember
DetaljerEksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I Løsningsforslag
Universitetet i Bergen Det matematisk naturvitenskapelige fakultet Institutt for informatikk Side 1 av 7 Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert
DetaljerOblig4 - forklaringer. Arne og Ole Christian
Oblig4 - forklaringer Arne og Ole Christian Struktur og alle (?) klassene import easyio.*; import java.util.*; class Oblig4 { public static void main (String[] args) { String s1 = "Stasjoner-1.txt"; String
DetaljerEksempel: Body Mass Index (BMI) Forelesning inf1000 - Java 3. Ferdig program (første del) Ferdig program (siste del)
Forelesning inf1000 - Java 3 Eksempel: Body Mass Index (BMI) Tema: Mer om forgreninger Løkker Arrayer Litt om easyio Ole Christian Lingjærde, 5. september 2012 Ole Chr. Lingjærde Institutt for informatikk,
DetaljerINF1000 : Forelesning 4
INF1000 : Forelesning 4 Kort repetisjon av doble (nestede) løkker Mer om 1D-arrayer Introduksjon til 2D-arrayer Metoder Ole Christian Lingjærde Biomedisinsk forskningsgruppe Institutt for informatikk Universitetet
DetaljerForelesning inf Java 5
Ole Chr. Lingjærde 1 Forelesning inf1000 - Java 5 Tema: Mer om metoder 2D-arrayer String Ole Christian Lingjærde, 26. september 2013 Ole Chr. Lingjærde Institutt for informatikk, 26. september 2013 1 Strukturen
DetaljerForelesning inf Java 5
Forelesning inf1000 - Java 5 Tema: Mer om metoder 2D-arrayer String Ole Christian Lingjærde, 26. september 2013 Ole Chr. Lingjærde Institutt for informatikk, 26. september 2013 1 Strukturen til et Java-program
Detaljeri=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
Repetisjon: nesting av løkker Kort repetisjon av doble (nestede) løkker Mer om D-arrayer Introduksjon til D-arrayer Metoder Ole Christian Lingjærde Biomedisinsk forskningsgruppe Institutt for informatikk
DetaljerINF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen
INF1000 EKSTRATILBUD Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen PLAN FOR DAGEN gjennomgå stoff fra uke 1-5(6), men med en litt annen tilnærming kun gjennomgått stoff, men vekt på konsepter og
DetaljerINF1000 (Uke 5) Mer om løkker, arrayer og metoder
INF1000 (Uke 5) Mer om løkker, arrayer og metoder Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset Praktisk informasjon Når disse
DetaljerINF 1000 Prøveeksamen. 23. november Ole Christian og Arne. Oppgave 1 (10 poeng) Er disse programsetningene lovlige i Java? Oppgave 2 (10 poeng)
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];
DetaljerRepetisjon: operatorene ++ og -- Java 5. Nøtt. Oppgave 1 (fra forrige gang) 0 udefinert udefinert. Alternativ 1 Prefiks-operator
Litt mer om løkker Arrayer le Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i slo Java Repetisjon: operatorene ++ og -- Instruksjon i = i + i = i - Alternativ Prefiks-operator
DetaljerUNIVERSITETET I OSLO
1 UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i : IN 115 Eksamensdag : Lørdag 20 mai, 2000 Tid for eksamen : 09.00-15.00 Oppgavesettet er på : 5 sider Vedlegg : Intet. Tillatte
Detaljer2 Om statiske variable/konstanter og statiske metoder.
Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo 1 Innledning Dette notatet beskriver noe av det som foregår i primærlageret når et Javaprogram utføres.
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Prøveeksamen i : INF1000 Grunnkurs i objektorientert programmering Eksamensdag : Onsdag 21. November 2012 Tid for prøveeksamen : 12-16 Oppgavesettet
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Side 1 Det matematisk-naturvitenskapelige fakultet Eksamen i: INF1010 Objektorientert programmering Eksamensdag: Tirsdag 12. juni 2012 Tid for eksamen: 9:00 15:00 Oppgavesettet er
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i Eksamensdag: 12. desember 2008 Tid for eksamen: 9.00 12.00 Oppgavesettet er på 7 sider. Vedlegg: Tillatte hjelpemidler: INF2220
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1000 Grunnkurs i objektorientert programmering Eksamensdag: 10. juni 2005 Tid for eksamen: 14.30 17.30 Oppgavesettet er på
DetaljerUNIVERSITETET I OSLO
Kandidatnummer: BOKMÅL UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i : INF1000 Grunnkurs i objektorientert programmering Eksamensdag : Fredag 1. desember 2006 Tid for eksamen
DetaljerKONTINUASJONSEKSAMEN
Høgskolen i Gjøvik KONTINUASJONSEKSAMEN FAGNAVN: FAGNUMMER: Grunnleggende programmering og datastrukturer LO169A EKSAMENSDATO: 4. september 1996 KLASSE: 1 AA/AE TID: 09.00-14.00 FAGLÆRER: Frode Haug ANTALL
DetaljerForelesning inf Java 3
Forelesning inf1000 - Java 3 Tema: Mer om forgreninger Løkker Arrayer Litt om easyio Ole Christian Lingjærde, 5. september 2012 Ole Chr. Lingjærde Institutt for informatikk, 29. august 2012 1 Eksempel:
DetaljerForelesning inf Java 3
Forelesning inf1000 - Java 3 Tema: Forgreninger Løkker Arrayer Ole Christian Lingjærde, 5. september 2013 Ole Chr. Lingjærde Institutt for informatikk, 5. september 2013 1 Eksempel: Body Mass Index (BMI)
Detaljer(MVC - Model, View, Control)
INF1010 - våren 2008 Modell - Utsyn - Kontroll (MVC - Model, View, Control) Stein Gjessing Inst. for informatikk Et bankprogram Vi skal lage et program som håndterer kontoene i en bank. En konto eies av
DetaljerOOP: Et stort eksempel
OOP: Et stort eksempel Administasjon av hopprenn Konkret eksempel på OOP-program. Programmet skal registrere navn og idrettslag til skihoppere trekke startlisten til første omgang lese inn lengde og 5
DetaljerAdministasjon av hopprenn. OOP: Et stort eksempel. Hva er objektene? Klassediagram av hopprenn-systemet
Administasjon av hopprenn OOP: Et stort eksempel Konkret eksempel på OOP-program. Programmet skal registrere navn og idrettslag til skihoppere trekke startlisten til første omgang lese inn lengde og 5
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i Eksamensdag: 6. juni 2006 Tid for eksamen: 1430 1730 Oppgavesettet er på 6 sider. Vedlegg: INF1010 Objektorientert programmering
DetaljerHvis en person har inntekt < , så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første og 30% på resten.
Oppgave 1: RPJ, kapittel 4, oppg. 2 INF1000 Plenumsgruppe 1, 22.09.02 Hvis en person har inntekt < 10 000, så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første 10 000 og 30% på
DetaljerHvis en person har inntekt < , så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første og 30% på resten.
Oppgave 1: RPJ, kapittel 4, oppg. 2 INF1000 Plenumsgruppe 1, 22.09.02 Hvis en person har inntekt < 10 000, så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første 10 000 og 30% på
DetaljerUNIVERSITETET I OSLO
FASIT/LØSNINGSFORSLAG (kommentarene er for læringsformål og avspeiler ikke nødvendigvis hva som ble vektlagt ved sensuren denne gang). Forslaget er laget av Ole Christian Lingjærde. UNIVERSITETET I OSLO
DetaljerOblig 4Hybelhus litt mer tips enn i oppgaven
Oblig 4Hybelhus litt mer tips enn i oppgaven lørdag 19. okt 2013 Arne Maus Obligatorisk oppgave 4 Gulbrand Grås husleiesystem I denne oppgaven skal vi se på hans studenthus Utsyn. Utsyn består av 3 etasjer,
DetaljerOppgavesettet består av 7 sider, inkludert denne forsiden. Kontroll& at oppgaven er komplett før du begynner å besvare spørsmålene.
Høgskoleni Østfold EKSAMEN Emnekode: Emnenavn: ITF20006 Algoritmer og datastrukturer Dato: Eksamenstid: 9. mai 2016 9.00 13.00 Hjelpemidler: Faglærer: Alle trykte og skrevne Jan Høiberg Om eksamensoppgaven
DetaljerOblig4 - obligatorisk oppgave nr. 4 (av 4) i INF1000
Oblig4 - obligatorisk oppgave nr. 4 (av 4) i INF1000 Leveringsfrist Innleveringsfristen er fredag 14. november kl 16.00. Viktig: se side 4 for detaljerte leveringskrav. Formål Formålet med denne oppgaven
DetaljerUke 8 Eksamenseksempler + Ilan Villanger om studiestrategier. 11. okt Siri Moe Jensen Inst. for informatikk, UiO
Uke 8 Eksamenseksempler + Ilan Villanger om studiestrategier 11. okt. 2011 Siri Moe Jensen Inst. for informatikk, UiO 1 Innhold Eksamen INF1000 Høst 2011: Oppgave 4-7 Tekstmanipulering Metoder med og uten
DetaljerGjennomgang av en tenkt eksamensoppgave
Tidsbruk fram til eksamen: et forslag Gjennomgang av en tenkt eksamensoppgave INF1000, 21. oktober 2008 Ole Christian Lingjærde Løs oppgaver for hverandre på tavle og kritiser hverandre Arbeid med obliger
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Kandidatnr Eksamen i INF1000 Grunnkurs i objektorientert programmering Eksamensdag: Mandag 30. november 2009 Tid for eksamen: 14.30 17.30
DetaljerINF1010, 21. februar Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo
INF1010, 21. februar 2013 Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo Ikke noe nytt her From the Java language specification (version 6): 14.14.2
DetaljerAntall sider (inkl. forsiden): 7. Alle trykte og håndskrevne
Side 1 av 7 Bokmålstekst Emne: PROGRAMMERING (nytt pensum, 10 studiep.) Grupper: laa, lab, lac, lia, lib, lic Eksamensoppgaven best~r av: Tillatte hjelpemidler: Antall sider (inkl. forsiden): 7 Alle trykte
Detaljer