To måter å programmere på. Java 12. Objektvariable. Objektvariablenes levetid. Statisk programmering: Programmering med objekter: Dagens forelesning:

Save this PDF as:
 WORD  PNG  TXT  JPG

Størrelse: px
Begynne med side:

Download "To måter å programmere på. Java 12. Objektvariable. Objektvariablenes levetid. Statisk programmering: Programmering med objekter: Dagens forelesning:"

Transkript

1 Programmering med og uten objekter: hva er forskjellen? Noen generelle råd vedrørende oppgaveløsing HashMap Noen råd i forbindelse med oblig 4 2. november 2004 Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo Java 12 1 To måter å programmere på Statisk programmering: Var fokus i starten av kurset Vi lager ikke objekter av klassene Alle variable og metoder er deklarert som static Begrepsmessig enkelt, men lite egnet for større programmer Programmering med objekter: Er fokus for resten av kurset (og eksamen). Vi lager objekter av klassene (noen eller alle) Variable og metoder er vanligvis ikke deklarert som static Begrepsmessig noe mer komplisert, men mye bedre egnet for større programmer Dagens forelesning: Hvorfor programmere med objekter Flere eksempler på programmering med objekter HashMap (viktig for oblig 4!) Ole Chr. Lingjærde Institutt for informatikk 2. november Objektvariable Objektvariablenes levetid Objektvariable er variable på klassenivå som ikke er deklarert som static. For hvert nytt objekt får vi et fullt sett med nye objektvariable: class Student { String fnr; new Student(); new Student(); new Student(); navn: fnr : navn: fnr : class Student { String fnr; Disse variablene blir deklarert når vi lager et objekt av klassen ved å skrive new Student(), og de lever så lenge objektet lever. Objektvariablene blir til når objektet blir til (med new) Objektvariablene lever så lenge objektet finnes navn: fnr : Ole Chr. Lingjærde Institutt for informatikk 2. november Ole Chr. Lingjærde Institutt for informatikk 2. november

2 Klassevariable Klassevariablenes levetid Klassevariable er variable på klassenivå som er deklarert som static. Vi får aldri mer enn ett sett av klassevariable. class Person { static int maxalder=100; int alder=0; String navn=""; maxalder: 100 når klassen refereres første gang new Person(); new Person(); new Person(); alder: 0 navn : "" alder: 0 navn : "" alder: 0 navn : "" class Person { static int maxalder = 100; int alder; void metode() { Denne variabelen blir deklarert når klassen Person blir referert til for første gang under kjøringen av programmet. Variabelen lever helt til programmet avsluttes. Første gang klassen Person blir referert til = første gang programeksekveringen "møter på" Person-klassen, f.eks. :. new Person().. Person.maxAlder.. Person.metode().. Ole Chr. Lingjærde Institutt for informatikk 2. november Ole Chr. Lingjærde Institutt for informatikk 2. november Oppsummering: Klassevariable og objektvariable Klassemetoder og objektmetoder Objektvariable: Bare definert i objekter av en klasse. Hvert objekt har sitt eget sett med objektvariable. Klassemetoder (static-metoder) Definert selv om det ikke er laget noen objekter av klassen Kan ses av alle objekter av klassen Kan brukes av andre gjennom dot-notasjon: <klassenavn>.metode() Har ikke tilgang til objektvariable eller objektmetoder Klassevariable: Definert selv om det ikke er laget objekter av klassen. Alle objekter av klassen deler de samme klassevariablene. Objektmetoder Bare definert i objekter av klassen Kan ses av objektet som metoden befinner seg i Kan brukes av andre gjennom dot-notasjon: <peker>.metode() Har tilgang til alle variable (både klassevariable og objektvariable) og alle metoder (både klassemetoder og objektmetoder) Ole Chr. Lingjærde Institutt for informatikk 2. november Ole Chr. Lingjærde Institutt for informatikk 2. november

3 Statisk programmering Programmering med objekter class VolumBeregning { static double pi = 3.14; static int maxantall = 10; static double finnvolum(double radius) { static int finnsum(int k) { Alle variable er deklarert som static Alle metoder er deklarert som static class StudentRegister { class Student { String fnr; void init() { String finnnavn() { Variable er ikke deklarert som static (vanligvis) Metoder er ikke deklarert som static (vanligvis) Ole Chr. Lingjærde Institutt for informatikk 2. november Ole Chr. Lingjærde Institutt for informatikk 2. november Oppgave Hvorfor programmere med objekter - 1 class StudentRegister { Student s1, s2; s1 = new Student(); s1.init("torjus", "S25332"); s2 = new Student(); s2.init("avril", "S36336"); s1.skrivut(); s2.skrivut(); class Student { static static String studid; static void init(string n, String s) { navn = n; studid = s; static void skrivut() { System.out.println("Navn: " + navn); System.out.println("StudId: " + studid); Ole lærer å programmere og har laget programmet til venstre. Hva skriver programmet ut på skjermen? Test programmet Editer programmet Ole Chr. Lingjærde Institutt for informatikk 2. november Med objekter kan vi ofte organisere våre data bedre. Eksempel: String [] navn = new String[100]; String [] fnr = new String[100]; int [] tlfnr = new int[100]; class Person { String fnr; int tlfnr; Person [] personreg = new Person[100]; Informasjonen knyttet til en bestemt person er splittet opp i tre arrayer. Informasjonen knyttet til en bestemt person er samlet i et objekt. Bedre organisering særlig når det er mye data å holde orden på. Ole Chr. Lingjærde Institutt for informatikk 2. november

4 Hvorfor programmere med objekter - 2 Hvorfor programmere med objekter - 3 Med objekter kan vi samle data og operasjoner på dem. data om studenter data om ansatte data om kurs student-metoder ansatt-metoder kurs-metoder class Student { data om studenter student-metoder class Ansatt { data om ansatte ansatt-metoder class Kurs { data om kurs kurs-metoder Her ligger alle data og alle metoder samme sted Metoder og data som hører sammen er samlet. Lett å se hvilke metoder som jobber på hvilke data (modularisering av koden). Lett å kopiere alt som har med personer å gjøre (data+metoder) til andre programmer (gjenbruk). Ole Chr. Lingjærde Institutt for informatikk 2. november Eksempel: i oblig 3 skal du holde orden på en rekke studenter en rekke hybler et hybelhus (potensielt flere) class Student class Hybel class Hybelhus En objektorientert løsning (med klassene over) sørger for at variabler og metoder som logisk hører sammen ligger også samlet i programkoden variabler og metoder som ikke har noe med hverandre å gjøre holdes godt atskilt i programkoden Analogi: ville du hjemme hos deg selv plassert verktøy, bestikk og CDplater i samme skuff? Sannsynligheten er stor for at du allerede tenker objektorientert! Ole Chr. Lingjærde Institutt for informatikk 2. november Hvordan programmere med objekter? Grunnregel: Et objekt skal inneholde data og operasjoner som naturlig hører sammen. Et objekt kan representere: et objekt i problemdomenet: En konto, en bil, en student, et lån, en eiendom (brukes til å definere en datamodell en "modell av virkeligheten") et objekt av mer programteknisk art: Et skjermvindu, en fil, en tekststreng, en tabell (slike objekter er vanligvis ikke del av datamodellen det er bare en effektiv måte å gruppere sammen programelementer som hører sammen) Initialisering av variable i et objekt Anta at programmet vårt inneholder denne klassen: class Person { String fnr; Når vi har laget et objekt (med new) ønsker vi normalt å gi variablene i objektet fornuftige verdier med en gang. Noen muligheter: Sett verdiene til objektvariablene direkte med prikk-notasjon: Person p = new Person(); p.navn = Petter ; p.fnr = ; Lag en init-metode i klassen: Person p = new Person(); p.init( Petter, ); Benytt en konstruktør: Ole Chr. Lingjærde Institutt for informatikk 2. november Person p = new Person( Petter, ); Ole Chr. Lingjærde Institutt for informatikk 2. november

5 Finn- og sett-metoder Konstruktører - repetisjon Når man skal lage "virkelige" programmer er det vanlig å Deklarere alle objektvariable som private Bruke finn- og sett-metoder for å endre på objektvariable class Eksempel { Student stud = new Student(); stud.settnavn("petter"); System.out.println(stud.finnNavn()) class Student { private private String fnr; void settnavn(string navn) {this.navn = navn; String finnnavn() {return this.navn; Ole Chr. Lingjærde Institutt for informatikk 2. november En konstruktør er en spesiell type objektmetode som du kan bruke for å sikre at objektet starter sitt liv med fornuftige verdier i objektvariablene. Konstruktører har alltid samme navn som klassen de ligger i utføres automatisk når et objekt opprettes med new har ingen returverdi, men skal ikke ha void foran seg overlastes ofte, dvs det er ofte flere konstruktører i en og samme klasse, hvor konstruktørene skiller seg fra hverandre ved antall parametre og/eller typen på parametrene. Ole Chr. Lingjærde Institutt for informatikk 2. november Eksempel Når det ikke er noen konstruktør class TestSirkel { Sirkel s1 = new Sirkel(); System.out.println("Radius: " + s1.radius); Sirkel s2 = new Sirkel(5.0); System.out.println("Radius: " + s2.radius); class Sirkel { double radius; Når en klasse ikke inneholder noen konstruktør, vil Java selv føye på en "tom konstruktør" uten parametre når programmet kompileres. Dermed er følgende to klassedeklarasjoner ekvivalente: class Sirkel { double radius; Sirkel () { class Sirkel { double radius; Sirkel () { radius = 1.0; Konstruktør 1 Sirkel (double r) { radius = r; Konstruktør 2 Ole Chr. Lingjærde Institutt for informatikk 2. november Merk: dersom klassen inneholder en eller flere konstruktører, vil Java ikke føye på en "tom konstruktør" uten parametre. Ole Chr. Lingjærde Institutt for informatikk 2. november

6 Oppgave: virker dette? Valg av datamodell: eksempel Lar dette programme seg kompilere og kjøre? class Oppgave1 { Bil b = new Bil(); class Bil { String regnr; Bil (String regnr) { this.regnr = regnr; Test programmet Editer programmet Eksempel: Du har gitt en fil med opplysninger om hvor mange registrerte tilfeller det var av tre ulike sykdommer i Norge hvert av årene : INFLUENSA KYSSESYKE MENINGITT Hvordan er det naturlig å modellere dette? Ole Chr. Lingjærde Institutt for informatikk 2. november Ole Chr. Lingjærde Institutt for informatikk 2. november Forslag 1: Gruppere tellinger relatert til samme sykdom class Sykdom { int[] antalltilfeller = new int[51]; Forslag 2: Gruppere tellinger foretatt samtidig class Aarsdata { int antinfluensa; int antkyssesyke; int antmeningitt; Forslag 3: Ingen gruppering - tre arrayer int[] influensatilfeller = new int[51]; int[] kyssesyketilfeller = new int[51]; int[] meningittilfeller = new int[51]; Forslag 4: Ingen gruppering en 2D-array int[][] sykdomstilfeller = new int[3][51]; Beste datastruktur avhenger av hva du skal bruke dataene til. Noen muligheter Ole Chr. Lingjærde Institutt for informatikk 2. november Valg av datamodell: oblig 4 Anta at du har gitt en fil med opplysninger om en rekke værstasjoner: 4780 GARDERMOEN 202 ULLENSAKER AKERSHUS RØROS 628 RØROS SØR-TRØNDELAG OSLO-BLINDERN 94 OSLO OSLO GEILO-GEILOSTØLEN 810 HOL BUSKERUD.. Her virker det naturlig å gruppere dataene stasjonsvis: class Stasjon { String nummer; double høyde; String kommune; String fylke; Ole Chr. Lingjærde Institutt for informatikk 2. november

7 Valg av datamodell: oblig 4 For hver værstasjon har du gitt daglige værmålinger for et halvt år: stasjon dag mnd maxvind nedbør mintemp maxtemp Hvordan modellerer vi disse dataene? Svaret er mindre opplagt. Forslag 1: Ingen gruppering class Stasjon { double[] maxvind; double[] nedbør; double[] mintemp; double[] maxtemp; Valg av datamodell: oblig 4 Forslag 2: Gruppere målinger utført samtidig (dvs gruppere etter dag) class Dagdata { double maxvind; double nedbør; double mintemp; double maxtemp; Ole Chr. Lingjærde Institutt for informatikk 2. november class Stasjon { Dagdata[] dagdata; Ole Chr. Lingjærde Institutt for informatikk 2. november Forslag 3: gruppere etter både måned og dag class Dagdata { double maxvind; double nedbør; double mintemp; double maxtemp; Valg av datamodell: oblig 4 class Maanedsdata { Dagdata[] dagdata = new Dagdata[31]; int antdager; // Antall dager i måneden class Stasjon { Maanedsdata[] mdata = new Maanedsdata[6]; Dette er den varianten som blir anbefalt i hjelpenotatet for oblig 4. Ole Chr. Lingjærde Institutt for informatikk 2. november Organisering av veldig små programmer I veldig små programmer (noen få linjer) med en enkelt klasse og ingen objekter av egne klasser, kan all programkode ligge i main-metoden: import easyio.*; import java.io.*; class VeldigLiteProgram { In tast = new In(); System.out.print("Gi et filnavn: "); String fnavn = tast.inline(); if (new File(fnavn).exists()) { System.out.println("Filen fins"); else { System.out.println("Filen fins ikke"); Ole Chr. Lingjærde Institutt for informatikk 2. november

8 Organisering av alle andre programmer I alle andre programmer bør main-metoden kun brukes til å få igang programmet. Eksempel: class MittProgram { Flyreservasjon fr = new Flyreservasjon(); fr.ordreløkke(); class Flyreservasjon { void ordreløkke() { Variant 1 Det er mulig å slå sammen de to klassene på forrige foil til en klasse: class MittProgram { MittProgram mp = new MittProgram(); mp.ordreløkke(); void ordreløkke() { Det blir en smakssak om man velger å gjøre det slik, eller slik som på forrige foil. I undervisningen vil du hovedsakelig se eksempler på den varianten som bruker to klasser. Ole Chr. Lingjærde Institutt for informatikk 2. november Ole Chr. Lingjærde Institutt for informatikk 2. november Variant 2 Rollefordeling i større programmer Istedet for å lage en egen ordreløkke-metode, kan koden for ordreløkken ligge i konstruktøren: class MittProgram { Flyreservasjon fr = new Flyreservasjon(); class Flyreservasjon { Flyreservasjon() { ordreløkken Dette blir også en smakssak, men varianten ovenfor bruker konstruktøren til noe annet enn initialisering av objektvariable og er mindre gjennomsiktig/selvforklarende enn å bruke en egen ordreløkke-metode. En klasse som inneholder alt Klasse med main-metode Inneholder main-metoden. Gjør stort sett ikke annet enn å få programmet igang. Klasse med ordreløkke Holder på data-strukturen. Inneholder evt ordreløkke, og metoder som kalles fra denne. Øvrige klasser som inngår som del av datastrukturen Ole Chr. Lingjærde Institutt for informatikk 2. november Ole Chr. Lingjærde Institutt for informatikk 2. november

9 Oppsummering Legg ikke annen programkode i main enn det som skal til for å få igang programmet (typisk: lage et objekt og kalle på en metode i dette), unntatt i bittesmå programmer. I main kan du velge å lage et objekt av klassen som main ligger i - eller et objekt av en annen klasse. I kurset bruker vi stort sett siste variant. Metoden som kalles fra main er typisk den som er ansvarlig for programkontrollen (f.eks. en ordreløkke), eller en del av den. Programkontrollen kan ligge i en konstruktør eller i en annen metode (f.eks. void ordreløkke()). I kurset gjør vi stort sett det siste. Råd: bestem deg for hvilken organisering du foretrekker (f.eks. den på foil 3) og hold deg til den når du skriver dine egne programmer - så slipper du å bruke tid på å velge hver gang du skal lage et nytt program. Brukes til å holde orden på en samling objekter Alternativ til arrayer Akkurat som for arrayer kan man: legge inn nye objekter finne tilbake til et objekt som er lagt inn fjerne et objekt som er lagt inn løpe gjennom alle objektene i tabellen Viktig forskjell mellom arrayer og HashMap: HashMap I en array legger vi inn objekter i en bestemt posisjon, og vi må gå tilbake til denne posisjonen/indeksen når vi senere skal se på objektet. Indeksen er et heltall mellom 0 og length-1. I en HashMap oppgir vi en bestemt nøkkel (vanligvis en tekststreng) når vi legger vi inn et nytt objekt, og vi oppgir denne nøkkelen når vi senere skal se på objektet. Dvs. indeksen er en tekststreng. Ole Chr. Lingjærde Institutt for informatikk 2. november Ole Chr. Lingjærde Institutt for informatikk 2. november Eksempel på bruk av HashMap Importer pakken java.util import java.util.*; class BrukAvHashMap { public static void main (String[] args) { HashMap h = new HashMap(); Opprett en HashMap String fnr1 = "; Person per1 = new Person(fnr1, "Harald Olsen"); h.put(fnr1, per1); Legg inn Person-objekt i HashMap en String fnr2 = "; Person per2 = new Person(fnr2, Lena Torsen"); h.put(fnr2, per2); Legg inn Person-objekt i HashMap en Person p = (Person) h.get( ); Hent Person-objekt fra HashMap en class Person { String adresse; Person(String navn, String adresse) { this.navn = navn; this.adresse = adresse; Ole Chr. Lingjærde Institutt for informatikk 2. november I starten av programmet: import java.util.*; Opprette en HashMap Dette importerer pakken java.util hvor bl.a. klassen HashMap ligger. I klassen eller metoden som skal bruke HashMap'en: HashMap h = new HashMap(); NB: Hvis tabellen skal brukes av flere metoder i en klasse, deklareres variabelen ovenfor i starten av klassen (som en objektvariabel). Hvis tabellen kun skal brukes av en enkelt metode, er det naturlig å deklarere variabelen ovenfor inni den aktuelle metoden. Ole Chr. Lingjærde Institutt for informatikk 2. november

10 Legge inn objekt i HashMap Et hvilket som helst objekt i Java kan legges inn i en HashMap Når vi legger et objekt inn i HashMap'en, må vi samtidig oppgi en nøkkel, dvs en tekststreng som entydig identifiserer objektet. Vi trenger denne nøkkelen dersom vi senere skal finne eller fjerne objektet i HashMap'en. Eksempel: String fnr = ; Person p = new Person(fnr, Kari Olsen ); h.put(fnr, p); Her lager vi først et Person-objekt (med passende argumenter) og legger det deretter inn i tabellen med fødselsnummeret som nøkkel. Dersom vi legger inn flere objekter med samme nøkkel, er det bare det sist innlagte objektet som blir liggende i tabellen (de andre overskrives): Person p1 = new Person(); Person p2 = new Person(); Person p3 = new Person(); String navn = "Jens"; h.put(navn, p1); // p1 legges inn h.put(navn, p2); // p2 legges inn og p1 overskrives h.put(navn, p3); // p3 legges inn og p2 overskrives Noen ganger må vi konstruere en nøkkel ut fra flere variable for å få entydighet: String lengdegrad = "67.3"; String breddegrad = "53.3"; String posisjon = lengdegrad + ";" + breddegrad; Fjelltopp fjell = new Fjelltopp(posisjon, Bjørnefjell ); h.put(posisjon, fjell); Ole Chr. Lingjærde Institutt for informatikk 2. november Ole Chr. Lingjærde Institutt for informatikk 2. november Hente objekt fra HashMap Fjerne objekt fra HashMap For å hente et objekt med utgangspunkt i nøkkelen: // Vi vil finne en person ut fra fødselsnummeret: Person p = (Person) h.get(fnr); Legg merke til at vi i starten må skrive i parentes navnet på klassen som objektet tilhører - i dette tilfellet klassen Person. Årsaken er at HashMap'en ikke holder rede på hvilken klasse objektene som legges inn har - bare at det er objekter. Når objektene hentes ut må vi derfor "minne Java på" hvilken klasse objektet var av (dette er egentlig et møte med en avansert og svært nyttig mekanisme i objektorienterte språk som kalles arv og som blir tatt opp i vårens INF1010). For å fjerne et objekt med gitt fødselsnummer som nøkkel: h.remove(fnr); Dersom det ligger et objekt i HashMap'en med den gitte nøkkelen, blir objektet fjernet og setningen ovenfor returnerer med en peker til objektet som fjernes. Dersom det ikke ligger et objekt i HashMap'en med den gitte nøkkelen, returnerer setningen ovenfor verdien null. Merk: å hente et objekt fra en HashMap slik som over medfører ikke at objektet fjernes fra HashMap'en. Ole Chr. Lingjærde Institutt for informatikk 2. november Ole Chr. Lingjærde Institutt for informatikk 2. november

11 Løp gjennom alle objekter i HashMap To måter å løpe gjennom en HashMap For å løpe gjennom alle objektene i en HashMap, lager vi en oppramsing: Iterator it = h.values().iterator(); Deretter kan vi se på hvert enkelt objekt i HashMap'en ved å gå i løkke: while (it.hasnext()) { Person p = (Person) it.next(); System.out.println( Navn: + p.fånavn()); Løpe gjennom objektene (som på forrige foil): Iterator it = h.values().iterator(); while (it.hasnext()) { Person p = (Person) it.next(); <gjør noe med objektet> Løpe gjennom nøklene: Iterator it = h.keyset().iterator(); while (it.hasnext()) { String nøkkel = (String) it.next(); <gjør noe med nøkkelen> Ole Chr. Lingjærde Institutt for informatikk 2. november Ole Chr. Lingjærde Institutt for informatikk 2. november Metoder i HashMap Råd 1: Skriv programmer "ovenfra og ned" Metode put get remove containskey values keyset Eksempel h.put(nøkkel, objekt); Person p = (Person) h.get(nøkkel); h.remove(nøkkel); if (h.containskey(nøkkel)) { // gjør et eller annet Iterator it = h.values().iterator(); Iterator it = h.keyset().iterator(); Beskrivelse Legg inn objekt med gitt nøkkel Finn objekt Fjern objekt Sjekk om nøkkel finnes i tabell Lag oppramsing av objektene Lag oppramsing av nøklene Bestem først hvilke klasser som skal være med (og deres rolle) Fyll inn de mest sentrale variablene (de som utgjør datastrukturen), og skriv eventuelle nye klasser som trengs i datastrukturen Skriv metodene på toppnivå (dvs de som styrer den overordnede programflyten, f.eks. en kommandoløkke). Kall på metoder ved behov, selv om disse ennå ikke er skrevet. Skriv metodene du kaller på ovenfor, og fortsett til programmet er ferdig. Ole Chr. Lingjærde Institutt for informatikk 2. november Ole Chr. Lingjærde Institutt for informatikk 2. november

12 Eksempel: oblig 4 Oblig 4: trinn 1 class Oblig4 Inneholder kun main-metoden. Lager objekt av klassen under og kaller på ordreløkke-metode. class VaerAnalyse Inneholder ordreløkke og andre metoder + HashMap-tabeller for å holde orden på værstasjonene. class Stasjon Hvert objekt inneholder info om en værstasjon + alle data fra stasjonen class Maanedsdata Hvert objekt inneholder info om en måned med værdata fra en stasjon class Dagdata Hvert objekt inneholder info om dagsmålinger foretatt ved en stasjon import easyio.*; import java.util.*; class Oblig4 { public static void main (String[] args) { String s1 = "Stasjoner-1.txt"; String s2 = "Vaerdata-1.txt"; if (args.length >= 2) { s1 = args[0]; s2 = args[1]; VaerAnalyse va = new VaerAnalyse(s1, s2); va.ordreløkke(); Programmet kan startes som java Oblig4 eller java Oblig4 filnavn1 filnavn2 Ole Chr. Lingjærde Institutt for informatikk 2. november Ole Chr. Lingjærde Institutt for informatikk 2. november Oblig 4: trinn 2 De to HashMap ene class VaerAnalyse { HashMap stasjonfranavn = new HashMap(); HashMap stasjonfranr = new HashMap(); VaerAnalyse(String s1, String s2) { lesstasjonerfrafil(s1); lesvaerdatafrafil(s2); void lesstasjonerfrafil(string fnavn) { void lesvaerdatafrafil(string fnavn) { void ordreløkke() { Datastruktur Konstruktør som gjør initialisering (her: lese data fra fil) Metoder for å lese fra fil og for å lese inn kommando fra bruker Her kommer det metoder som skal kalles fra ordreløkken HashMap stasjonfranavn = new HashMap(); Brukes for å holde orden på værstasjoner, med stasjonsnavn som nøkkel. HashMap stasjonfranr = new HashMap(); Brukes for å holde orden på værstasjoner, med stasjonsnummer som nøkkel. Eksempel på å sette inn i de to HashMap ene: // Anta at opplysninger om en stasjon er lest fra fil Stasjon st = new Stasjon(stNr, stnavn, sthøyde, stkommune, stfylke); stasjonfranr.put(stnr, st); stasjonfranavn.put(stnavn, st); Viktig: det er samme stasjonsobjekt som skal settes inn i begge HashMap er! Eksempel på å hente ut fra de to HashMap ene: Stasjon st = (Stasjon) stasjonfranr.get(stasjonsnummer); Stasjon st = (Stasjon) stasjonfranavn.get(stasjonsnavn); Ole Chr. Lingjærde Institutt for informatikk 2. november Ole Chr. Lingjærde Institutt for informatikk 2. november

13 Oblig 4: trinn 3 Oblig 4: trinn 4 void lesstasjonerfrafil(string filnavn) Skal lese fil med data om værstasjoner. Gå i løkke, hvor hvert gjennomløp leser en linje fra fila, lager et objekt av klassen Stasjon og fyller med innleste verdier, og legger objektet inn i de to HashMap ene. void lesvaerdatafrafil(string filnavn) Skal lese fil med værdata. Mulig løsning 1: gå i løkke, hvor hvert gjennomløp leser en linje fra fila, får tak i riktig Stasjons-objekt (ikke lag nytt Stasjons-objekt, bruk HashMap ene) og oppdaterer dette objektet med de nye værdataene ved å kalle på en passende metode i Stasjonsobjektet (f.eks. registrermåling(.)). Stasjonsobjektet må så finne ut hvilket Maanedsdata-objekt som skal oppdateres, og delegerer oppdraget videre til dette objektet ved å kalle på en passende metode i dette Maanedsdata-objektet (f.eks. nymåling()). Mulig løsning 2: i stedet for at fila leses sentralt (i VaerAnalyse-objektet) kan selve jobben med å lese data om en gitt stasjon delegeres til Stasjonsobjektet. Verken mer eller mindre objektorientert, men noen liker dette bedre. Ole Chr. Lingjærde Institutt for informatikk 2. november Programmer ordreløkken For hver kommando som skal utføres, skal ordreløkken kalle på en passende metode i klassen VaerAnalyse. Du skal altså ikke legge programkode for å utføre kommandoer i løkka, bare delegere oppdraget videre. For at programmet skal kompilere, sørg for å deklarere alle de metodene som du kaller på fra ordreløkke-metoden. Du kan vente med å fylle inn innholdet i disse metodene, dvs bare fyll inn en utskriftssetning i hver av metodene. Eksempel: hvis ordreløkken kaller på metoden lagstasjonsliste(), så deklarerer du samtidig denne dummy-metoden i klassen VaerAnalyse: void lagstasjonsliste() { System.out.println( Metoden lagstasjonsliste utført ); Ole Chr. Lingjærde Institutt for informatikk 2. november Oblig 4: trinn 5 Oblig 4: trinn 6 Programmer metodene som kalles fra ordreløkken Eksempel (i klassen VaerAnalyse): void finnantuværsdager() { <Løp gjennom en av HashMap ene og skriv ut liste over alle stasjoner, med stasjonsnr og stasjonsnavn for hver av dem> System.out.println( Stasjonsnummer: ); String stasjonsnr = tast.inword( \n ); System.out.println( Måned (1-6): ); int mnd = tast.inint(); Skriv de metodene som kalles fra metodene i trinn 5. Eksempel (i klassen Stasjon): int finnantuværsdager(int mnd) { Maanedsdata md = mdata[mnd-1]; int antdager = md.finnantuværsdager(); return antdager; Oppdraget delegeres videre til en metode i Maanedsdataobjektet som er berørt. Stasjon st = <finn stasjonen ved oppslag i stasjonfranr>; int antdager = st.finnantuværsdager(mnd); <Skriv ut resultatet> Oppdraget delegeres videre til en metode i Stasjons-objektet som er berørt. Ole Chr. Lingjærde Institutt for informatikk 2. november Ole Chr. Lingjærde Institutt for informatikk 2. november

14 Oblig 4: trinn 7 Råd 2: skriv metoder "utenfra og inn" Skriv de metodene som kalles fra metodene i trinn 6. Eksempel (i klassen Maanedsdata): int finnantuværsdager() { <gå gjennom data for alle dager i måneden og tell opp hvor mange som oppfyller kravet til uværsdag> <returner med antallet uværsdager> Når du skal skrive en metode, bestem først av alt hva som er input og output til metoden: Input: Eventuelle parametre til metoden Kan også være klassevariable/objektvariable (eksempel: de to HashMap ene skal brukes i mange av metodene i klassen VaerAnalyse, selv om de ikke er parametre til metodene). Output: Eventuell returverdi fra metoden Kan også være modifikasjoner av klassevariable/objektvariable (f.eks. endring av innholdet i de to HashMap ene). Ole Chr. Lingjærde Institutt for informatikk 2. november Ole Chr. Lingjærde Institutt for informatikk 2. november Råd 3: Deleger oppgaver Et viktig kjennetegn ved god programmering er at man delegerer oppgaver når det er naturlig - dvs kaller på metoder for å utføre deloppgaver. Dermed blir hver enkelt del av programmet oversiktlig, og faren for feil minimeres. Det blir også lettere å finne feil senere. Eksempel: Hvert case i en kommandoløkke kaller på en metode som utfører den ønskede kommandoen, i stedet for at alt gjøres inni selve kommandoløkken. NB: ikke overdriv delegering. Det er f.eks. ofte ikke naturlig at hvert eneste objekt har metoder for å lese fra terminal - det kan i mange tilfeller være bedre å gjøre slike ting sentralt (og heller kalle på metoder i objektene for å oppdatere deres variable). Ole Chr. Lingjærde Institutt for informatikk 2. november Dårlig: Bra: Råd 4: formater alltid programkoden underveis class Eksempel { int x = 0; for (int i=0; i<10; i++) { x = x + 1; if (x < 0) { System.out.println("Det var rart"); class Eksempel { int x = 0; for (int i=0; i<10; i++) { x = x + 1; if (x < 0) { System.out.println("Det var rart"); Ole Chr. Lingjærde Institutt for informatikk 2. november

15 Råd 5: ikke endre på forutsetningene i oppgaven Selv om mange oppgaver tar utgangspunkt i problemer fra virkeligheten, er de ikke nødvendigvis laget for å være særlig realistiske. Ikke endre på forutsetningene i slike tilfeller - uansett hvor fristende det måtte være. Løs oppgaven slik den er formulert. Hvis du mener oppgaven gir rom for flere tolkninger på et punkt: gjør dine egne (rimelige) forutsetninger - og skriv i oppgaven hva disse er. Ole Chr. Lingjærde Institutt for informatikk 2. november

Uke 11 noen tips og råd + eksempel. Noen muligheter. Valg av datamodell: eksempel. Valg av datamodell: oblig 4

Uke 11 noen tips og råd + eksempel. Noen muligheter. Valg av datamodell: eksempel. Valg av datamodell: oblig 4 Valg av datamodell: eksempel Uke 11 noen tips og råd + eksempel Eksempel: Du har gitt en fil med opplysninger om hvor mange registrerte tilfeller det var av tre ulike sykdommer i Norge hvert av årene 19502000:

Detaljer

To måter å programmere på. INF1000 : Forelesning 9. Programmering uten objekter. Programmering med objekter: Eksempel på programmering uten objekter

To måter å programmere på. INF1000 : Forelesning 9. Programmering uten objekter. Programmering med objekter: Eksempel på programmering uten objekter To måter å programmere på INF1000 : Forelesning 9 Programmering med og uten objekter: hva er forskjellen? Noen generelle råd vedrørende oppgaveløsing HashMap 24. oktober 2006 Ole Christian Lingjærde Gruppen

Detaljer

Inf1000 (Uke 10) Oppgaveløsning. Hashmap

Inf1000 (Uke 10) Oppgaveløsning. Hashmap Inf1000 (Uke 10) Oppgaveløsning. Hashmap Programmering med og uten objekter: hva er forskjellen? Noen generelle råd vedrørende oppgaveløsing HashMap Are Magnus Bruaset og Arild Waaler Institutt for informatikk

Detaljer

Innhold. INF1000 (Uke 11) Programmering. Rep: Metoder. Rep: Hva er en metode? Litt repetisjon. To måter å programmere på

Innhold. INF1000 (Uke 11) Programmering. Rep: Metoder. Rep: Hva er en metode? Litt repetisjon. To måter å programmere på Innhold Litt repetisjon INF1000 (Uke 11) Programmering To måter å programmere på Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Anja B. Kristoffersen 2006-04-03

Detaljer

INF1000 (Uke 11) Programmering

INF1000 (Uke 11) Programmering INF1000 (Uke 11) Programmering Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Anja B. Kristoffersen Innhold Litt repetisjon To måter å programmere på 2 Rep:

Detaljer

To måter å programmere på. Java 12. Programmering med objekter. Statisk programmering

To måter å programmere på. Java 12. Programmering med objekter. Statisk programmering INF 101-10. mars 2003 Mer om klasser og objekter Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo Java 12 To måter å programmere på Statisk programmering:

Detaljer

Hva er en metode. Hva skjer når vi kaller en metode

Hva er en metode. Hva skjer når vi kaller en metode Hva er en metode Uke 9 - Repetisjon av metoder, klasser og objekter Innkapsling: private og public Statisk programmering vs. programmering med objeker 18 okt. 2005, Arild Waaler Inst. for informatikk,

Detaljer

Oblig4 - forklaringer. Arne og Ole Christian

Oblig4 - 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

Detaljer

Oblig4 - forklaringer. Arne og Ole Christian

Oblig4 - forklaringer. Arne og Ole Christian Oblig4 - forklaringer Arne og Ole Christian Stasjonsdata-1.txt NR NAVN MOH KOMMUNE FYLKE 4780 GARDERMOEN 202 ULLENSAKER AKERSHUS 10400 RØROS 628 RØROS SØR-TRØNDELAG 18700 OSLO-BLINDERN 94 OSLO OSLO 25590

Detaljer

INF1000 Forelesning 9. Hashmap Eksempel: Flyreservasjon

INF1000 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

Detaljer

HashMap. 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. 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

Detaljer

INF1000: Forelesning 10

INF1000: Forelesning 10 HashMap Mer om HashMap Noen råd i forbindelse med oblig 4 31. oktober 2006 Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo INF1000: Forelesning 10 Brukes

Detaljer

INF1000: Forelesning 11

INF1000: Forelesning 11 HashMap Mer om HashMap Noen råd i forbindelse med oblig 4 16. april 2007 INF1000: Forelesning 11 Brukes til å holde orden på en samling objekter Alternativ til arrayer Akkurat som for arrayer kan man:

Detaljer

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

Hva er en metode? INF1000 Forelesning 8. Hva skjer når vi kaller en metode? Hvorfor bruke metoder? Hva er en metode? INF1000 Forelesning 8 Litt repetisjon: Metoder og klasser Innkapsling av variable og metoder Hvordan gripe an et stort problem? 5 gode råd En metode er en valgfritt antall programsetninger

Detaljer

1. Separatorer (skilletegn) i easyio

1. Separatorer (skilletegn) i easyio Uke 9 INF1000 17. okt 2013 Om separatorer i easyio, Eliza (bruk av HashMap), + mer om metoder og klasser Arne Maus OMS, Ifi, UiO 1. Innlesning i easyio, bruk av skilletegn Alle filer betraktes som en strøm

Detaljer

Råd 1: Programmer ovenfra ned. INF1000 Uke 10. Gruppering etter eier. Velg datastruktur etter hva som skal gjøres!

Råd 1: Programmer ovenfra ned. INF1000 Uke 10. Gruppering etter eier. Velg datastruktur etter hva som skal gjøres! Råd 1: Programmer ovenfra ned INF1000 Uke 10 Hvordan gripe an et stort problem? 5 råd Noen eksempler du kan overføre til Oblig 4 Oblig 4 kort oversikt Et større programeksempel Hvilke klasser skal være

Detaljer

INF1000 Uke 10. Hvordan gripe an et stort problem? 5 råd Noen eksempler du kan overføre til Oblig 4 Oblig 4 kort oversikt Et større programeksempel

INF1000 Uke 10. Hvordan gripe an et stort problem? 5 råd Noen eksempler du kan overføre til Oblig 4 Oblig 4 kort oversikt Et større programeksempel INF1000 Uke 10 Hvordan gripe an et stort problem? 5 råd Noen eksempler du kan overføre til Oblig 4 Oblig 4 kort oversikt Et større programeksempel Råd 1: Programmer ovenfra ned Hvilke klasser skal være

Detaljer

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

Dagens 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

Detaljer

Oversikt. En del repetisjon. Noen generelle råd INF1000 Uke 10 Gjennomgang av et eksempel. Kunstig intelligens? INF1000-seminar

Oversikt. En del repetisjon. Noen generelle råd INF1000 Uke 10 Gjennomgang av et eksempel. Kunstig intelligens? INF1000-seminar Oversikt En del repetisjon Noen generelle råd INF1000 Uke 10 Gjennomgang av et eksempel Mer om metoder og klasser Kunstig intelligens? INF1000-seminar Lørdag 3 november kl. 11-17 (Førstkommende lørdag!)

Detaljer

Kom forberedt til tirsdag. INF1000 Tips til obligatorisk oppgave 4. Noen generelle tips. Oblig4: Komme igang

Kom forberedt til tirsdag. INF1000 Tips til obligatorisk oppgave 4. Noen generelle tips. Oblig4: Komme igang Kom forberedt til tirsdag INF1000 Tips til obligatorisk oppgave 4 Kikk på prøveeksamen fra 2004 http://www.uio.no/studier/emner/matnat/ifi/inf1000/h 07/undervisningsmateriale/proveeksamen-H2004.pdf Tittel:

Detaljer

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

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 Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Kursansvarlige: Arne Maus og Siri Moe Jensen Objektorientering: Hvorfor?

Detaljer

Oblig4 - forklaringer

Oblig4 - forklaringer Struktur og alle (?) klassene Oblig4 - forklaringer Arne og Ole Christian import easyio.*; import java.util.*; class Oblig4 { public static void main (String[] args) { String s1 = "Stasjoner-1.txt"; String

Detaljer

Uke 8 - Oppramstyper, HashMap og Innstikksortering, litt javadoc. 17. oktober 2013, Arne Maus Inst. for informatikk, UiO

Uke 8 - Oppramstyper, HashMap og Innstikksortering, litt javadoc. 17. oktober 2013, Arne Maus Inst. for informatikk, UiO Uke 8 - Oppramstyper, HashMap og Innstikksortering, litt javadoc 17. oktober 2013, Arne Maus Inst. for informatikk, UiO Enummerering å lage egne oppramstyper Brukes til å lage typer som har et lite antall

Detaljer

Oblig4 - obligatorisk oppgave nr. 4 (av 4) i INF1000

Oblig4 - obligatorisk oppgave nr. 4 (av 4) i INF1000 Oblig4 - obligatorisk oppgave nr. 4 (av 4) i INF1000 Leveringsfrist Innleveringsfristen er onsdag 15. november kl 16.00. Viktig: se side 4 for detaljerte leveringskrav. Formål Formålet med denne oppgaven

Detaljer

Oblig4 - obligatorisk oppgave nr. 4 (av 4) i INF1000

Oblig4 - 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

Detaljer

Oppramstyper, HashMap og Innstikksortering, litt. 6. oktober 2009, Arne Maus Inst. for informatikk, UiO

Oppramstyper, HashMap og Innstikksortering, litt. 6. oktober 2009, Arne Maus Inst. for informatikk, UiO Uke 8 - Oppramstyper, HashMap og Innstikksortering, litt javadoc 6. oktober 2009, Arne Maus Inst. for informatikk, UiO Enummerering å lage egne oppramstyper Brukes til å lage typer som har et lite antall

Detaljer

Oppgave 1. Oppgave 2. Oppgave 3. 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 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

Detaljer

INF1000 (Uke 15) Eksamen V 04

INF1000 (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

Detaljer

INF1000 (Uke 15) Eksamen V 04

INF1000 (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

Detaljer

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

Prø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

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET 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 :

Detaljer

Oppgave 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. 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];

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET 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

Detaljer

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

INF1000: 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

Detaljer

Eksamen 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. 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

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET 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 :

Detaljer

Lø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 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

Detaljer

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

Oblig 4 (av 4) INF1000, høsten 2009 Værdata, leveres innen 6. nov. kl Oblig 4 (av 4) INF1000, høsten 2009 Værdata, leveres innen 6. nov. kl. 16.00 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

Detaljer

Forelesning inf Java 4

Forelesning 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

Detaljer

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

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

Detaljer

Uke 9 INF okt 2012 Om separatorer I easyio, Eliza (bruk av HashMap), + mer om metoder og klasser. Arne Maus OMS, Ifi, UiO

Uke 9 INF okt 2012 Om separatorer I easyio, Eliza (bruk av HashMap), + mer om metoder og klasser. Arne Maus OMS, Ifi, UiO Uke 9 INF1000 17. okt 2012 Om separatorer I easyio, Eliza (bruk av HashMap), + mer om metoder og klasser Arne Maus OMS, Ifi, UiO 1. Innlesning i easyio, bruk av skilletegn Alle filer betraktes som en strøm

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET 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

Detaljer

Framgangsmåte for å løse oblig 4 i INF1000

Framgangsmåte for å løse oblig 4 i INF1000 Framgangsmåte for å løse oblig 4 i INF1000 Nedenfor finner du noen tips til hvordan du kan legge opp arbeidet med å løse oblig 4 i INF1000. 1. Programmet du skal skrive kan for eksempel struktureres slik:

Detaljer

Gjennomgang av eksamen H99

Gjennomgang 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

Detaljer

INF1000 : Forelesning 4

INF1000 : 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

Detaljer

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

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

Detaljer

INF1000 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 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

Detaljer

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

Innhold 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:

Detaljer

INF1000 - Uke 10. Ukesoppgaver 10 24. oktober 2012

INF1000 - Uke 10. Ukesoppgaver 10 24. oktober 2012 INF1000 - Uke 10 Ukesoppgaver 10 24. oktober 2012 Vanlige ukesoppgaver De første 4 oppgavene (Oppgave 1-4) handler om HashMap og bør absolutt gjøres før du starter på Oblig 4. Deretter er det en del repetisjonsoppgaver

Detaljer

Oversikt (for deg som ikke er helt sikker på å få A) Inf1000 uke 12 4.nov Sjekkliste forts. variabler, typer og tilordning

Oversikt (for deg som ikke er helt sikker på å få A) Inf1000 uke 12 4.nov Sjekkliste forts. variabler, typer og tilordning Oversikt (for deg som ikke er helt sikker på å få A) Repetisjon Inf000 uke 2 4.nov. 2008 Arne Maus, Gruppen for objektorientering, modellering og språk (OMS) Inst. for informatikk, Univ i Oslo Pensumoversikt

Detaljer

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

Litt 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

Detaljer

Oblig 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 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

Detaljer

Inf1000 (Uke 10) HashMap og ArrayList

Inf1000 (Uke 10) HashMap og ArrayList Inf1000 (Uke 10) HashMap og ArrayList Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset Bibliotekpakker i Java Det er laget mange

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET 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

UNIVERSITETET I OSLO

UNIVERSITETET 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

Detaljer

LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring. Else Lervik, januar 2012.

LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring. Else Lervik, januar 2012. Repetisjon innkapsling static tabell av primitiv datatype LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring. Else Lervik, januar 2012. Objektorientert modellering

Detaljer

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

Tre 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:

Detaljer

Inf1000 (Uke 7) Objekter, klasser og pekere

Inf1000 (Uke 7) Objekter, klasser og pekere Inf1000 (Uke 7) Objekter, klasser og pekere Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset Oversikt Repetisjon Variable deklarasjoner,

Detaljer

Oversikt. Inf1000 (Uke 7) Objekter, klasser og pekere. Løkker gjør setninger flere ganger. Variable, deklarasjon og tilordning

Oversikt. Inf1000 (Uke 7) Objekter, klasser og pekere. Løkker gjør setninger flere ganger. Variable, deklarasjon og tilordning Oversikt Inf1000 (Uke 7) Objekter, klasser og pekere Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset Repetisjon Variable deklarasjoner,

Detaljer

Blokker og metoder INF1000 (Uke 6) Metoder

Blokker og metoder INF1000 (Uke 6) Metoder Blokker og metoder INF1000 (Uke 6) Metoder Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Are Magnus Bruaset og Arild Waaler En blokk er en samling instruksjoner omgitt av krøllparenteser:

Detaljer

Forelesning inf Java 5

Forelesning 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

Detaljer

Forelesning inf Java 5

Forelesning 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

Detaljer

I 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. 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

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET 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

Detaljer

Endret litt som ukeoppgave i INF1010 våren 2004

Endret 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

Detaljer

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

23.09.2015. Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert. Grunnkurs i objektorientert programmering Introduksjon til objektorientert programmering INF1000 Høst 2015 Siri Moe Jensen INF1000 - Høst 2015 uke 5 1 Siri Moe Jensen INF1000 - Høst 2015 uke 5 2 Kristen

Detaljer

Løsningsforslag ukeoppg. 9: 19. - 25. okt (INF1000 - Høst 2011)

Løsningsforslag ukeoppg. 9: 19. - 25. okt (INF1000 - Høst 2011) Løsningsforslag ukeoppg. 9: 19. - 25. okt (INF1000 - Høst 2011) HashMap, innstikksortering, javadoc (kap. 9.1-9.11, m.m. i "Rett på Java" 3. utg.) NB! Legg merke til at disse er løsningsforslag. Løsningene

Detaljer

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

1. Finn klassene (hvilke objekter er det i problemet) 1. Dataene som beskriver problemet (hvilke objekter har vi og hvor mange klasser er det? Obligatorisk oppgave 3 Gulbrand Grås husleiesystem Oblig 3hus litt mer tips enn i oppgaven I denne oppgaven skal vi se på hans studenthus Utsyn. Utsyn består av 3 etasjer, nummerert fra -3. I hver etasje

Detaljer

Repetisjon: operatorene ++ og -- Java 5. Nøtt. Oppgave 1 (fra forrige gang) 0 udefinert udefinert. Alternativ 1 Prefiks-operator

Repetisjon: 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

Detaljer

Løsningsforslag, inf101, våren 2001

Lø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

Detaljer

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

for (int i=0; i<3; i++) { for (int j=0; j<5; j++) { System.out.print(i*j); System.out.println(); Repetisjon: nesting av løkker 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

Detaljer

PRØVEEKSAMEN (rettet versjon 27/11)

PRØVEEKSAMEN (rettet versjon 27/11) PRØVEEKSAMEN (rettet versjon 27/11) Eksamen i : INF1000 Grunnkurs i objektorientert programmering Eksamensdag : Onsdag 26 nov. 2003 Tid for eksamen : 1400-1700 Oppgavesettet er på : 13 sider Vedlegg :

Detaljer

Ole Christian Lingjærde, 12. september 2013

Ole Christian Lingjærde, 12. september 2013 Ole Chr. Lingjærde Forelesning inf000 - Java 4 Tema: En første titt på metoder Løkker og arrayer Lese fra fil og skrive til fil Ole Christian Lingjærde,. september 03 Ole Chr. Lingjærde Institutt for informatikk,.

Detaljer

Oblig 4Hybelhus litt mer tips enn i oppgaven

Oblig 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,

Detaljer

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

INF1000 (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

Detaljer

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

INF 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];

Detaljer

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

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Tuva Kristine Thoresen Forkurs INF1010 Dag 2 Andreas Færøvig Olsen (andrefol@ifi.uio.no) Tuva Kristine Thoresen (tuvakt@ifi.uio.no) Institutt for Informatikk, 7. januar 2014 Forkurs INF1010 - dag 2 Klasser og pekere Klasser

Detaljer

Praktisk informasjon. Repetisjon: While-løkker. I dag. INF1000 (Uke 5) Mer om løkker, arrayer og metoder. Oblig 2 er lagt ut

Praktisk informasjon. Repetisjon: While-løkker. I dag. INF1000 (Uke 5) Mer om løkker, arrayer og metoder. Oblig 2 er lagt ut Praktisk informasjon INF (Uke 5) Mer om løkker, arrayer og metoder Oblig er lagt ut Frist 8. februar Kan løses etter denne forelesningen Grunnkurs i programmering Institutt for Informatikk Universitetet

Detaljer

I 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. 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

Detaljer

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

Gjennomgang prøveeksamen oppgave 1, 2, 4, 5, 7 Gjennomgang prøveeksamen 2014 oppgave 1, 2, 4, 5, 7 1a: Hva er verdien til tall etter at følgende kode er utført: 17 int tall = 5; tall = (tall*3) + 2; 5 15 17 1b: Anta at følgende programsetninger utføres.

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET 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

Detaljer

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 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 =

Detaljer

INF1000: noen avsluttende ord

INF1000: noen avsluttende ord Pensum Det som er gjennomgått på forelesningene INF1000: noen avsluttende ord Arne og Fredrik Stoff som er behandlet i oppgaver/obliger Notat om Informasjonsteknologi, vitenskap og samfunnsmessige virkninger

Detaljer

Eksamensrelevant repetisjonsstoff. Deklarasjoner og variabeltyper. Konstanter

Eksamensrelevant repetisjonsstoff. Deklarasjoner og variabeltyper. Konstanter Eksamensrelevant repetisjonsstoff Uke 13 Litt repetisjon 22 november 2005, Arild Waaler Inst. for informatikk, UiO datatyper og konvertering mellom datatyper returtyper til metoder løkkekonstruksjoner:

Detaljer

INF1000 : Forelesning 3

INF1000 : 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

Detaljer

Inf1000 uke 5 18.sept. 2007

Inf1000 uke 5 18.sept. 2007 En klasse er noe - en metode gjør noe Inf1000 uke 5 18.sept. 2007 Metoder Arne Maus, Gruppen for objektorientering, modellering og språk (OMS) Inst. for informatikk, Univ i Oslo 1 Metoder: Vi deler opp

Detaljer

Oblig4: Komme igang. INF1000 Uke 11. Filer Vi skal lese data fra to filer og analysere dem (Stasjoner-1.txt, Vaerdata-1.txt) Noen generelle tips

Oblig4: Komme igang. INF1000 Uke 11. Filer Vi skal lese data fra to filer og analysere dem (Stasjoner-1.txt, Vaerdata-1.txt) Noen generelle tips Oblig4: Komme igang 1. Les hele oppgaven nøye INF1000 Uke 11 TIPS Oblig 4 Strukturering av programmer Noen flere eksempler 2. Tenk på hvilke klasser du trenger 3. Lag et enkelt klassediagram og et skall

Detaljer

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

UNIVERSITETET 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

Detaljer

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

Eksempel: 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,

Detaljer

INF1000: Forelesning 7. Konstruktører Static

INF1000: Forelesning 7. Konstruktører Static INF1000: Forelesning 7 Klasser og objekter del 2 Konstruktører Static UML REPETISJON 2 Repetisjon Verden består av objekter av ulike typer (klasser). Ofte er det mange objekter av en bestemt type. Objekter

Detaljer

INF1000 (Uke 6) Mer om metoder, tekster

INF1000 (Uke 6) Mer om metoder, tekster INF1000 (Uke 6) Mer om metoder, tekster Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset Rep: Metoder Java-programmene så langt

Detaljer

(MVC - Model, View, Control)

(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

Detaljer

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

Rep: Metoder. INF1000 (Uke 6) Mer om metoder, tekster. Rep: Metoder. 3 typer variable: Klassevariable. Java-programmene så langt i kurset: INF1000 (Uke 6) Mer om metoder, tekster Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Rep: Metoder Java-programmene så langt i kurset: består av en enkelt klasse i klassen kan

Detaljer

Dagens tema Kapittel 8: Objekter og klasser

Dagens tema Kapittel 8: Objekter og klasser Dagens tema Kapittel 8: Objekter og klasser Hva er objekter og klasser? Programmering med objekter Klassedeklarasjoner Generering av objekter Tilgang til elementer i objektene Objekt- og klassevariable

Detaljer

Hvis 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.

Hvis 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å

Detaljer

Hvis 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.

Hvis 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å

Detaljer

Praktisk informasjon. I dag. Repetisjon: While-løkker. INF1000 (Uke 5) Mer om løkker, arrayer og metoder

Praktisk informasjon. I dag. Repetisjon: While-løkker. INF1000 (Uke 5) Mer om løkker, arrayer og metoder Praktisk informasjon INF (Uke 5) Mer om løkker, arrayer og metoder Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Når disse timene er over har du lært nok til å løse oblig Frist.

Detaljer

Gjennomgang av en tenkt eksamensoppgave

Gjennomgang 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

Detaljer

INF1000: Forelesning 6. Klasser og objekter del 1

INF1000: Forelesning 6. Klasser og objekter del 1 INF1000: Forelesning 6 Klasser og objekter del 1 OBJEKTER SOM EN PROGRAMMERINGS-TEKNIKK 2 Motivasjon Anta at vi ønsker å lage et studentregister hvor vi for hver student lagrer navn, brukernavn og telefonnummer.

Detaljer

MER OM ARRAYER. INF1000: Forelesning 4. Anta at vi ønsker å lagre en liste med navnene på alle INF1000-studentene:

MER OM ARRAYER. INF1000: Forelesning 4. Anta at vi ønsker å lagre en liste med navnene på alle INF1000-studentene: INF1000: Forelesning 4 Mer om arrayer Metoder MER OM ARRAYER 2 Array som en samling verdier Anta at vi ønsker å lagre en liste med navnene på alle INF1000-studentene: String[] studenter = new String[500];

Detaljer