F7 - Arrayer. ID1004 Objektorienterad programmering Fredrik Kilander

Relevanta dokument
Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Arrayer. results

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Föreläsning 11. Arrayer. Arrayer. Arrayer. Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt. Kan ha en array av t.

Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Objektorienterad programmering i Java

Objekt och klasser - Introduktion

[] Arrayer = Indexerad variabel

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Tentamen ID1004 Objektorienterad programmering December 15, 2012

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Tentamen ID1004 Objektorienterad programmering April 7, 2015

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12

Objektorienterad programmering Föreläsning 9. Copyright Mahmud Al Hakim Agenda (halvdag)

Föreläsning 2, vecka 8: Repetition

TDDC77 Objektorienterad Programmering

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

Kapitel 6. Hakparenteser fšr att ange index MŒnga všrden av samma typ

Arrayer (fält)

Subtyping och variance. Objekt-orienterad programmering och design Alex Gerdes, 2018

Java, klasser, objekt (Skansholm: Kapitel 2)

Typkonvertering. Java versus C

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

Dagens föreläsning. Arrayer och klasser. Medan ni väntar: Gå till m.voto.se/prog11 och svara på några gamla tentamensfrågor! (26 januari 2018 F3 1 )

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Föreläsning 6: Metoder och fält (arrays)

Objekt och klasser - Introduktion. Objekt. SparKonto.java 2. SparKonto.java 1. Konton.java. Ett objekt har: Ett bankkonto

Datastrukturer. Erik Forslin. Rum 1445, plan 4 på Nada

F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander

Kapitel 6. Kapitel 6. Hakparenteser fšr att ange index float[] priser = new float[500]; frekvens[4] boolean[] flaggor;

Objektorienterad Programmering DAT043

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

DAT043 - föreläsning 8

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

Arrayer med primitiva datatyper

Föreläsning REPETITION & EXTENTA

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

Parameteröverföring. Exempel. Exempel. Metodkropp

Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

725G61 - Laboration 2 Loopar och arrayer. Johan Falkenjack

Programmeringsteknik och Matlab. Dagens program. Viktiga datum. Repetitionsexempel. Repetition av if/else, for, while och Scanner

SMD 134 Objektorienterad programmering

TDIU01 - Programmering i C++, grundkurs

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Lösningar för tenta 3 DAT043,

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Lektion 7. Datateknik A, Java I, 5 poäng

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Klassdeklaration. Metoddeklaration. Parameteröverföring

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

Laboration 1 - Grunderna för OOP i Java

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

725G61 - Laboration 5 Grundläggande objektorientering. Johan Falkenjack

Lösningsförslag: Instuderingsfrågor, del D

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

Sammansatta datatyper Generics: Parametrisk polymorfism

OOP Objekt-orienterad programmering

Objektorienterad Programmering (TDDC77)

Omprov 11/11. på förmiddagen.

Enkla variabler kontra referensvariabel

Introduktion till Java

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

Laboration A Objektsamlingar

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

Programmering för språkteknologer II, HT2011. Rum

Programmeringsteknik I. Föreläsning 3: Klasser och arrayer

LÖSNINGSFÖRSLAG TENTAMEN

F5: Högnivåprogrammering

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else

F5: Högnivåprogrammering

Programmering A. Johan Eliasson

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

Kopiering av objekt i Java

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

Övningar Dag 2 En första klass

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

TDIU01 - Programmering i C++, grundkurs

Subtyping, co- och contra-variance. Objekt-orienterad programmering och design Alex Gerdes, 2016

TENTAMEN OOP

Objektorienterad programmering

F4. programmeringsteknik och Matlab

Transkript:

F7 - Arrayer ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se

Array, arrayer, arrayen En array är en lista av variabler av samma typ Arrayen har en fast längd (antal element) Enskilda element nås med numeriskt index int [] height = new int[8]; [0] [1] [2] [3] [4] [5] [6] [7] height 69 61 70 74 62 62 69 73

Array, arrayer, arrayen Tilldelning: height[5] = 51; Läsning: int h = height[2]; Variabeln h får värdet 70 int [] height = new int[8]; [0] [1] [2] [3] [4] [5] [6] [7] height 69 61 70 74 62 51 69 73 h 51

Arrayer är objekt En array-variabel är en referensvariabel Datatypen array of int: int [] Variabelns namn: height Instansen skapas med new: new int[8]; Därefter kan antalet element inte ändras int [] height = new int[8]; float [] temps; // Ingen initiering,

Arraytyp och elementtyp Array-variabeln är av arraytyp Alla element i en array har samma datatyp Arrayen har endast en elementtyp String [] messages; Variabeln messages är av arraytyp Elementtypen är String

Arrayer En array skapas med alla element En primitiv elementtyp initieras till noll En elementtyp som refererar initeras till long [] times = new long[7]; [0] 0 [1] 0 [2] 0 [3] [4] [5] [6] 0 0 0 0 String[] message = new String[7]; [0] [1] [2] [3] [4] [5] [6]

Arrayer - index Indexering utanför arrayen bestraffas med ArrayIndexOutOfBoundsException Lägsta index: 0 Högsta index: Array.length - 1 long [] times = new long[7]; [0] 0 [1] 0 [2] 0 [3] [4] [5] [6] 0 0 0 0 String[] message = new String[7]; [0] [1] [2] [3] [4] [5] [6]

Arrayer - index En array är ett objekt Arrayens längd finns i Array.length, t ex: height.length messages.length Om arrayvariabeln inte refererar till ett arrayobjekt (är ) så blir det NullPointerException

Gå igenom en array - läsning Alla element i en array kan läsas från första till sista med for-each-loopen: String [] messages = new String[100];... for (String s : messages) { System.out.println(s); } int[] height = new int[8];... for (int h : height) { System.out.println(h); }

Gå igenom en array - läsning Alla element i en array kan läsas från första till sista med for-loopen: Elementdatatypen Elementdatatypen String [] messages = new String[100];... for (String s : messages) { System.out.println(s); } int[] height = new int[8];... for (int h : height) { System.out.println(h); } Loopvariabeln får en kopia av värdet i varje element.

Gå igenom en array läsning/skrivning För skrivning måste arrayen indexeras: int[] height = new int[8];... int offset = -3;... for (int i = 0; i < height.length; i++) { height[i] += offset; }

Alternativ deklarationssyntax Arraytyper kan deklareras på två sätt int [] height; // Java-style int height []; // C/C++-style Båda sätten har samma mening Java-style förordas för ny Java-kod

Initiering av arrayer En array kan initieras vid skapandet Alla element måste initieras int [] scores = {87, 98, 69, 87 65, 76}; Ingen new behövs

Arrayer som parametrar Arrayen är ett objekt Referensen till arrayen överförs till parametern Metoden kan alltså ändra i arrayen private void swapcards(int [] deck, int i, int j) { int temp = deck[i]; deck[i] = deck[j]; deck[j] = temp; } public void shuffle(int [] deck) { Random rnd = new Random(); for (int n = 0; n < 1000; n++) { swapcards(deck, rnd.nextint(deck.length), rnd.nextint(deck.length)); } }

Arrayer av objekt Varje element är en referens till objekttypen Varje element är från början Referensen tilldelas, inte objektet String[] message = new String[7]; [0] [1] Hej hopp! [2] [3] Vad gör du? [4] [5] [6]

Arrayer av objekt Varje element är en referens till objekttypen Varje element är från början Referensen tilldelas, inte objektet s String[] message = new String[7]; String s = E. A. Poe ; message[1] = s; message[3] = s; message[6] = s; [0] [1] [2] [3] [4] [5] [6] E. A. Poe

Arrayer av objekt Arrayer av objekt kan också initieras String [] enginemessages = { Fel i motor, Ingen bensin, Lågt batteri }; Dog [] kennel = {new Dog( Fido ), new Dog( Karo ), new Dog( Rex )};

Tvådimensionella arrayer Fler dimensioner med fler index int [][] table = new int[5][10]; int[][] table = new int[5][10]; [0] [1] [2] [3] [4] [5] table.length är 5 table[0].length är 10

Tvådimensionella arrayer Fler dimensioner med fler index int [][] table = new int[5][10]; table har datatypen int[][] (array of array of int) table[m] har datatypen int[] (array of int) table[m][n] har datatypen int int[][] table = new int[5][10]; [0] [1] [2] [3] [4] [5] table.length är 5 table[0].length är 10

Initiering av tvådimensionella arrayer Görs på samma sätt: en lista per array int [][] table = { {1, 2, 1, 5, 7, 3, 12}, {0, 0, 8, 3, 2, 8, 11}, {2, 2, 6, 5, 2, 7, 9} }; Tre arrayer med sju int i varje.

Multidimensionella arrayer Fortsätt på samma sätt: int [][][] cube = new int[3][3][3]; Tänk på att allt nödvändigt minne allokeras Mångdimensionellt data har ofta hål i sig

Klassen java.util.arraylist Växer och krymper dynamiskt Endast en dimension // Deklarera en referensvariabel och skapa en tom ArrayList. ArrayList<String> namelist = new ArrayList<String>(); // Ladda in några namn namelist.add( Pelle ); namelist.add( Eva ); namelist.add( Lisa ); int location = namelist.indexof( Pelle ); // Hitta Pelle namelist.remove(location); // Ta bort Pelle ArrayList är praktisk, men insättning och borttag i början är ineffektivt

arrayer SLUT FÖR DENNA GÅNG