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

Like dokumenter
Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 14.

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

INF Uke 10. Ukesoppgaver oktober 2012

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

UNIVERSITETET I OSLO

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

INF våren 2017

IN våren 2019 Onsdag 16. januar

IN våren 2018 Tirsdag 16. januar

INF1000: Forelesning 7

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 15.

INF1000: noen avsluttende ord

INF1000: Forelesning 7. Konstruktører Static

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Eivind Storm Aarnæs

Konstruktører. Bruk av konstruktører når vi opererer med "enkle" klasser er ganske ukomplisert. Når vi skriver. skjer følgende:

INF1000: Forelesning 4. Mer om arrayer Metoder

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

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

Seminaroppgaver IN1010, uke 2

Innhold uke 9. Objektorientert programmering i Python. Om ukens pensum. Referanser og objekter Tema: Mer komplekse strukturer

IN Notat om I/O i Java

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

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

UNIVERSITETET I OSLO

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

Forelesning inf Java 5

Forelesning inf Java 5

Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program

2 Om statiske variable/konstanter og statiske metoder.

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

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

Klasser, objekter, pekere og UML. INF gruppe 13

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

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

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

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

INF1000 Metoder. Marit Nybakken 16. februar 2004

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

Velkommen til. INF våren 2016

Oblig4 - forklaringer. Arne og Ole Christian

INF Notat om I/O i Java

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

INF1000 : Forelesning 4

INF1000. Marit Nybakken 10. februar 2004

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

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

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

Enkle generiske klasser i Java

INF Objektorientert programmering. Datastrukturer i Java Klasser med parametre

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

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

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

UNIVERSITETET I OSLO

INF1000 Behandling av tekster

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

INF1000 Forelesning 9. Hashmap Eksempel: Flyreservasjon

Uke 7 - Objekter, klasser og pekere (+ litt først om args[])

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

Blokker og metoder INF1000 (Uke 6) Metoder

INF1000 oppgaver til uke 38 (17 sep 23 sep)

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

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

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

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

INF Objektorientert programmering. Datastrukturer i Java Klasser med parametre

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.

UNIVERSITETET I OSLO

2 Om statiske variable/konstanter og statiske metoder.

Jentetreff INF1000 Debugging i Java

UNIVERSITETET I OSLO

Introduksjon til objektorientert programmering

INF1000 (Uke 6) Mer om metoder, tekster

INF1010 Sortering. Marit Nybakken 1. mars 2004

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

Objektorientert programmering i Python. Resten av semesteret. Innhold uke 9 Mer komplekse strukturer. Referanser og objekter, inkl Mentimeter spørsmål

INF1000 (Uke 6) Mer om metoder, tekster

Orakeltjeneste på Abel Hjelp til Obligatorisk oppgave 2. INF1000 (Uke 6) Mer om metoder, tekster. Rep: Metoder. Rep: Metoder

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

Programmering Høst 2017

Inf1000 (Uke 10) Oppgaveløsning. Hashmap

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

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

INF Uke 10. Løsningsforslag ukesoppgaver oktober 2012

INF 1000 høsten 2011 Uke 3 6. september

Kort om meg. INF1000 Uke 2. Oversikt. Repetisjon - Introduksjon

Læreboken på 45 minutter

UNIVERSITETET I OSLO

INF1010 våren 2008 Uke 4, 22. januar Arv og subklasser

Transkript:

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 Pekere Metoder Arrayer 2

3

Objektorientert programmering Vi modellerer virkelige objekter. Objekter har to typer egenskaper: Data som beskriver objektet. Handlinger som objektet kan utføre. 5

Spørsmål Hvilke data og handlinger er nyttige for en bil å ha? 6

Klasse Definisjon En klasse er mønsteret (oppskriften) til et objekt. Klassen beskriver en mengde objekter med lik oppførsel. I klassen bruker vi ulike variable for å representere objektets data, og metoder for å representere handlingene objektet kan utføre. 7

Spørsmål Hvilke variabler og metoder er nyttige for en bil-klasse? 8

En klasse for en sirkel I INF1100 møtte dere på følgende klasse: class Circle: def init (self, x0, y0, R): self.x0, self.y0, self.r = x0, y0, R def area(self): return pi*self.r**2 def circumference(self): return 2*pi*self.R 9

En klasse for en sirkel I Java ser denne slik ut: class Circle { private double x0; private double y0; private double R; public Circle(double x0, double y0, double R) { this.x0 = x0; this.y0 = y0; this.r = R; 10

En klasse for en sirkel (fortsettelse) public double area() { return 2*Math.PI*R*R; public double circumference() { return 2*Math.PI*R; 11

En klasse for en sirkel (fortsettelse) public double getr() { return R; public double getx0() { return x0; public double gety0() { return y0; 12

Bruk av klassen Python: c = Circle(2, -1, 5); print A circle with radius %g at (%g, %g) has area %g % (c.r, c.x0, c.y0, c.area()) Java: class Main { public static void main(string[] args) { Circle c = new Circle(2, -1, 5); System.out.printf("A circle with radius %g at (%g, %g) has area %g\n", c.getr(), c.getx0(), c.gety0(), c.area()); 13

Spørsmål Gitt følgende klasse: class Person { private String navn; public Person(String navn) { this.navn = navn; Hvilke av setningene under er lovlige? 1. Person p = new Person(); 2. p.navn = Tuva ; 3. Person p = new Person( Andreas ); 14

Bruk av klasser 15

16

Oppgave Lag klasser for trekanter og firkanter. De skal ha nyttige variabler og metoder som regner ut areal og omkrets. 17

Pekere Circle c = new Circle(0,0,5); c er en peker til Circle-objektet. Pekeren er en minneadresse som forteller oss hvor objektet er lagret. En peker som ikke peker på noe har verdien null. Typisk feil: NullPointerException. 19

Spørsmål NullPointerException får vi når 1. Vi deklarerer en peker uten å gi den verdi: Person p; 2. Vi prøver å aksessere data i en peker som ikke har fått noen verdi: Person p; p.hentnavn(); 3. Vi prøver å konvertere en tom tekst til et tall: int a = Integer.parseInt( ); 20

Metoder En metode definerer et objekts handlinger. En samling programsetninger knyttet til et navn. 21

En metode Python: def f2c(f): return (5.0/9)*(f-32); Java: public double f2c(double f) { return (5.0/9)*(f-32); 22

Bruk av metoden Alle metoder i Java må legges inn i en klasse: class TempConverter { public double f2c(double f) { return (5.0/9)*(f-32); Kall på metoden fra main: class Main { public static void main(string[] args) { TempConverter tempconv = new TempConverter(); double celsius = tempconv.f2c(20); System.out.println(celsius + " C"); 23

Spørsmål Hva er returverdien til følgende metode? [returverdi] sum(){ double a = 2.0; double b = 3.0; return a + b; 1. int 2. double 3. void 24

Oppgave Finn feilene i følgende metode: public void sum(int[] array) { int sum = 0; for(int i = 0; i < array.length: i++) { sum += array{i; return sum; 25

Fasit public int sum(int[] array) { int sum = 0; for(int i = 0; i < array.length; i++) { sum += array[i]; return sum; 26

Oppgave Skriv en metode metode som finner det største av tre tall: a, b og c og returnerer verdien av det. Du kan ikke anta at tallene har ulike verdier. public int max(int a, int b, int c) { 27

28

Hva er en array? En variabel som kan inneholde flere verdier av samme type. En liste av verdier. 29

Deklarasjon av array Python: from numpy import * a = array([1, 2, 3, 4, 5, 6]) Java: int[] a = {1, 2, 3, 4, 5, 6; eller: int[] a = new int[6]; 30

Indeksering 1. Indeksering som Python: Fra 0 til lengden-1. 2. Tilordning: a[1] = 3; 31

Objekter i array Arrayene våre kan inneholde både primitive typer og objekter. Fisk[] fisker = new Fisk[10]; 32

Objekter i array Fisk[] fisker = new Fisk[10]; fisker[2] = new Fisk(); 33

Iterasjon over array Vanlig for-løkke for (int i = 0; i < 6; i++) { System.out.println(a[i]); Python-aktig: for each for (int i: a) { System.out.println(i); for (Fisk f: fisker) { System.out.println(f); 34

Spørsmål Hvilke av disse programsetningene er lovlige i Java? 1. int[] x = new int[]; 2. int[] x = new int[0]; 3. int i = new int[7]; 4. double[] x = new double[33]; 35

Spørsmål Hvor mange heltall settes det av plass til med følgende programsetning? int[] tall = new int[100]; 1. 99 2. 100 3. 101 36

Oppgave Ta utgangspunkt i arrayen: int[] tall = {3, 7, 2, 32, 12, 5, 8, 4, 21, 99, 1; Skriv kode som finner: Den største verdien i arrayen. Gjennomsnittet av verdiene i arrayen. 37

2D array 38

Spørsmål Gitt følgende matrise (2D-array) i Java: A = Hva er verdien av A[2][1]? 1. 8 2. 4 1 2 3 4 5 6 7 8 9 3. Får feilmelding, indeksene finnes ikke 39

40

Mer lesestoff Java tutorials: Klasser og objekter Arrayer Marit Nybakkens notater: Objekter Konstruktører Metoder 41