[] Arrayer = Indexerad variabel

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

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.

Grundläggande stränghantering

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

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

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

//Använd main som ett "handtag" för att hålla ihop programmet. //Själva programmet finns i övriga klasser.

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

Föreläsning 2, vecka 8: Repetition

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

JAVAUTVECKLING LEKTION 8

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

Föreläsning 3-4 Innehåll

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

Föreläsning 1 & 2 INTRODUKTION

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

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

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Arrayer (fält)

F4. programmeringsteknik och Matlab

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

Föreläsning REPETITION & EXTENTA

F7 - Arrayer. ID1004 Objektorienterad programmering Fredrik Kilander

Föreläsning 1 & 2 INTRODUKTION

Lite om reella tal. Programmering. I java. Om operatorers associativitet och prioritet

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

Kompilera och exekvera Javakod

TDIU01 - Programmering i C++, grundkurs

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Tentamen OOP

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

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

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

725G61 - Laboration 2 Loopar och arrayer. Johan Falkenjack

Lektion 1, del b Utskrifter av variabelvärden Inläsning av värden till variabler

TDDC77 Objektorienterad Programmering

Tentamen i Programmeringsteknik I

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.

E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Föreläsning 9-10 Innehåll

I ett program hantera man ofta samlingar av objekt av samma typ.

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning

Lektion 1 Introduktion till DrJava och Java

Föreläsning 5: Introduktion av pekare

Inledande programmering med C# (1DV402) 27+15=42 1 (22)

Programmering för språkteknologer I, VT2012. Rum

Skriftlig tentamen för kursen DV017A. Inledande programmering i Java A

OOP Objekt-orienterad programmering

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Frekvenstabell över tärningskast med C#

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

Att förstå hur man konstruerar modulära program Att kunna skapa nya funktioner Att förstå hur data skickas mellan funktioner

Inledande programmering med C# (1DV402) Summera med while"-satsen

[][] Arrayer med två index

Objektorienterad Programmering (TDDC77)

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

Föreläsning 6: Introduktion av listor

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

Övningar i JavaScript del 4

Dagens föreläsning. Sett i datorsalarna. Mer om arrayer. Matriser. Formatering av utskrifter. Inläsning med hjälp av Scanner-klassen

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy cards. Slingor

Planering Programmering grundkurs HI1024 HT 2014

Typkonvertering. Java versus C

Tentamen i Programmeringsteknik I,, KandMa/Fy,

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

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

OOP Objekt-orienterad programmering

Objektorienterad Programmering (TDDC77)

Visual Basic, en snabbgenomgång

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

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

2 b) Följande finns definierat: public class Spel String titel = "Spel"; Dice[] tärningar = new Dice[10]; tärningar[0] = new Dice("Röd"); tärningar[1]

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

Ett exempel som illustration till Laboration 1

Tentamen ID1004 Objektorienterad programmering May 29, 2012

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val

729G04 Programmering och diskret matematik. Python 3: Loopar

4 Sammansatta datatyper

Objektorienterad programmering i Java

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Objektorienterad Programmering (TDDC77)

Klassdeklaration. Metoddeklaration. Parameteröverföring

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

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

Minnestilldelning (allokering) och frigörande (avallokering) av minne

"if"-satsen. Inledande programmering med C# (1DV402)

Numeriska Metoder och Grundläggande Programmering för P1, VT2014

TENTAMEN OOP

Tentamen ID1004 Objektorienterad programmering April 7, 2015

Grundläggande programmering med C# 7,5 högskolepoäng

Att skriva till och läsa från terminalfönstret

Tentamen ID1004 Objektorienterad programmering October 29, 2013

JAVAUTVECKLING LEKTION 4

Lite mer om Javas stöd för fält. Programmering. Exempel: vad är det största talet? hh.se/db2004. Fält samt Input/Output

Föreläsningsmaterial (Logik, if-satsen & iteration)

TENTAMEN OOP

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

Transkript:

[] Arrayer = Indexerad variabel Lagra många värden i en variabel Jmfr inom matematiken, variabler x 0, x 1, x 2, I detta dokument tas upp hur man skapar och hanterar sådana variabler i java. Dessa kallas för arrayer. Arrayer med ett index 1

Arrayer med ett index Skapa en array med 5 st värden int [] tal = { 3, 7, 8, 1, 6}; Så här ser det ut i minnet: tal 0 1 2 3 4 3 7 8 1 6 Variabeln tal innehåller en referens till minnet där de 5 värdena är lagrade Arrayer med ett index 2

Nu finns det 5 st int-variabler som man kommer åt via ett index: tal[0],tal[1],tal[2],tal[3],tal[4] Vi kallar dem för element. Elementen har index 0-4 Variabeln tal består av 5 st element. Arrayer med ett index 3

Längden på en array En array vet alltid om sin längd. Mha variabeln length får man veta längden. Arrayen tal har längden tal.length Arrayen tal har index 0-tal.length-1 Arrayer med ett index 4

Utskrift av elementen i en array Måste skriva ut ett element i taget // Loopa i=0..4 for (int i=0; i<=4; i++) { System.out.println(tal[i]); } Bättre med length for (int i=0; i<tal.length; i++) { System.out.println(tal[i]); } Arrayer med ett index 5

Det går ej att skriva ut så här Vi skriver ut värdet av arrayvariabeln System.out.println(tal); Utskriften blir så här: [I@7f3b8a [I betyder att det är en array av heltal @7f3b8a är värdet på referensen Vilket beror på arrayvariabeln är en referens Arrayer med ett index 6

Håll reda på index En array har index från 0 till och med length-1 Försöker man använda fel index, blir det fel av typen index är utanför gränserna Antingen upptäcker kompilatorn det eller så blir det fel när programmet körs och felmeddelandet: ArrayIndexOutOfBoundsException 5 Vilket betyder att vi försöker använda det felaktiga indexvärdet 5 Arrayer med ett index 7

Vi läser in nya värden till arrayen via tangentbordet För inmatning via tangentbordet måste vi först göra följande saker: Överst i klassen skriver vi: import java.util.scanner; I den metod där inmatningen skall ske skriver vi: Scanner input = new Scanner(System.in); Arrayer med ett index 8

Vi läser in nya värden till arrayen via tangentbordet System.out.println("Ge " + tal.length + " tal:"); for (int i=0; i<tal.length; i++) { } System.out.print("Ge tal " + i + ":"); // Värdena lagras på index 0 4 tal[i] = input.nextint(); Arrayer med ett index 9

Aritmetik på arrayer Aritmetik kan utföras på de enskilda elementen Exempel: // Summera talen double sum=0; for (int i=0; i<tal.length; i++) { sum = sum + tal[i]; } // Exempel annan aritmetik tal[1]++; tal[3]=tal[0]+tal[2]; Arrayer med ett index 10

Deklarera en array med nollställda värden En array med tio heltals-element, alla värden initieras till noll: int [] tal = new int [10]; Med new reserveras minnesutrymme för arrayens tio element. Jmfr med Dice d = new Dice(7); där det reserveras minnesutrymme för ett Dice-objekt. Stoppa in några värden i arrayen: tal[0]=4; tal[1]=88; Arrayer med ett index 11

Bestämma arrayens längd med variabel System.out.println("Antal tal?"); int antal = input.nextint(); // Användarens svar bestämmer arrayens längd // Skapa en array med längden antal int [] tal = new int[antal]; System.out.println("Ge talen:"); for (int i=0; i<tal.length; i++) { tal[i] = input.nextint(); } Arrayer med ett index 12

Utöka en array Antag att vi önskar en array x som automatiskt anpassar sig till hur många värden som man lagrar i den. Om t.ex. arrayen x är så här: int [] x = {10, -1, 7, 890, 5}; x 0 1 2 3 4 10-1 7 890 5 Nu önskar vi lägga till nytt tal (t.ex. 14) sist i arrayen, men det får ju inte plats. Ett sätt att lösa det beskrivs av följande steg: 1. Skapa en array slask som är ett element längre än x int [] slask = new int[x.length+1]; slask 0 1 2 3 4 0 0 0 0 0 0 5 Fortsättning Arrayer med ett index 13

(*) fortsättning ex. utöka array löpande 2. Kopiera alla element från x till slask for (int i=0; i<x.length; i++) { slask[i] = x[i]; } slask 0 1 2 3 4 10-1 7 890 5 0 5 3. Lagra det nya talet (14) sist i arrayen: slask[slask.length-1] = 14; slask 0 1 2 3 4 10-1 7 890 5 14 5 Fortsättning Arrayer med ett index 14

(*) fortsättning ex. utöka array löpande 4. Sätt x att referera till samma array som slask: x=slask; x slask 0 1 2 3 4 10-1 7 890 5 14 5 5. Sätt slask att referera till null, dvs ingen array. slask=null; Därmed har arrayen x utökats med ett element x slask null 0 1 2 3 4 10-1 7 890 5 14 5 Arrayer med ett index 15

Oinitierade arrayer Ett array kan vara deklarerad men oinitierad, referensen är då null: int [] tal; Variabeln refererar inte till något innehåll System.out.println(tal); tal Ger utskriften: null null Arrayen kan initieras med: tal = new int[5]; Referensen blir då inte null. Alla element får värdet noll. tal 0 0 0 0 0 Arrayer med ett index 16

Ex: Lagra om värdena i omvänd ordning int [] x = {10, -1, 7, 890, 5}; // temp blir lika lång som x int [] temp = new int[x.length]; // kopiera från x i omvänd ordning for (int i=0; i<x.length; i++) { temp[i] = x[x.length-i-1]; // Notera! } // temp är nu 5,890,7,-1,10 // Vad händer om vi gör följande? x = temp; // x blir 5, 890, 7, -1, 10 // x och temp refererar till samma innehåll // referensen tappas till 10,-1,7,890,5 Arrayer med ett index 17

Arrayer av andra datatyper än int Exempel double-array Skapa en array med 3 st slumptal double [] s = {10*Math.random(), 10*Math.random(), 10*Math.random() }; 20 nollställda element double [] t = new double[20]; Exempel boolean-array: boolean [] ledigplats = {false, false, false, false}; Arrayer med ett index 18

Övning: Analys av aktiekurs Kursen är lagrad i en array för dag 1 till dag 10: double [] kurs = {8.5, 8.6, 8.9, 9.6, 9.7, 9.7, 9.5, 9.1, 9.0, 9.2}; Skriv ett program som beräknar hur många dagar som kursen steg respektive sjönk under de tio dagarna. Beräkna även den största kursändringen i procent från en dag till nästa och vilken dag det var. Arrayer med ett index 19

Övning: Slumpa ut värden från en lista I ett lotteri drar man vinnare baserat på sexsiffriga födelsedata (ååååmmdd). Antag att de födelsedata som finns med i ett lotteri är lagrade i en array: int [] födelsedata = {19900101, 19900526, 19910706, 19890719, 19900715, 19900226, 19700917}; Skriv ett program som slumpar ut det födelsedata som vinner. Att fundera på: Hur skall man slumpa ut ett värde från arrayen? Tips: Försök utnyttja index i arrayen Extra uppgift, slumpa även ut de födelsedata som får 2:a priset och 3:e priset. Tänk på att samma födelsedata ej kan vinna flera ggr. Arrayer med ett index 20

Övning*: Beräkning av frekvens mha array (denna övning kan göras på egen hand) Antag att vi vet åldern för medlemmarna i förening och det skall presenteras som en åldersfördelning. Antal ålder Vi behöver då en räknare för varje ålder som kan förekomma. Detta kan lösas fiffigt mha av en array Övningen fortsätter nästa blad Arrayer med ett index 21

Antag Åldern för medlemmarna i en förening finns lagrade i en array int [] ålder={22,18,17,22,17,19,17,19,24,20}; Vi önskar beräkna en åldersfördelning, dvs så här: Ålder Beräkning av frekvens forts.. Antal 17 3 18 1 19 20 2 1 21 0 22 23 2 0 24 1 Idé: Vi skapar en array vars index betyder ålder int [] antal = new [100]; // ålder 0-99 Alla element är noll initialt. Övningen fortsätter nästa blad Arrayer med ett index 22

Beräkning av frekvens forts.. Elementen i antal skall fungera som räknare för respektive ålder 0-99. Exvis antal[16] är en räknare för åldern 17. Alla räknare är nollställda från början. Loopa igenom arrayen ålder int aktuell_ålder; for (int i=0; i<ålder.length; i++) { aktuell_ålder = ålder[i]; // använd nu aktuell_ålder som index antal[aktuell_ålder]++; // öka med 1 } Skriv ut frekvensen, dvs elementen i arrayen antal for (int i=0; i<antal.length; i++) { // Skriv ut ålder och antal i två kolumner System.out.println((i+1) + " " + antal[i]); } Övningen fortsätter nästa blad Arrayer med ett index 23

Beräkning av frekvens forts.. Skriv ett program som beräknar och skriver ut åldersfördelningen för värdena som finns i arrayen ålder. Bygg sedan på programmet så att det skriver ut en kolumn till, nämligen antalet i procent. Arrayer med ett index 24

namn Arrayer av String Exempel, en array med fyra element String [] namn = {"Uno", "Eva", "Pia", "Bo"}; Så här kan det se ut minnet: 0 1 2 3 B o P i a E v a U n o namn är en referens till minnet där arrayens fyra element är lagrade. Dessa element är i sin tur referenser till där respektive sträng är lagrad. T.ex. är namn[0] en referens till minnet där strängen med tecknen "Uno" är lagrade. Arrayer med ett index 25

Skriv ut alla strängarna i arrayen namn: for (int i=0; i<namn.length; i++) { System.out.println(namn[i]); } Byt värde på element: namn[2]= "Elvina"; Gör om alla gemener till versaler för index 2 namn[2] = namn[2].touppercase(); Beräkna antal tecken (längden) för namn[2] int längd = namn[2].length(); Ger värdet 6 length() är en metod i klassen String Arrayer med ett index 26

Läs in ny sträng via tangentbordet System.out.println("Ge värde för index 2:"); namn[2]=input.nextline(); Läs in nya strängar i alla elementen for (int i=0; i<namn.length; i++) { System.out.println("Ge värde för index " + i + ":"); namn[i]=input.nextline(); } Arrayer med ett index 27

Ex: Skapa ett namnregister med kapacitet för 100 st namn. Läs in namn och lagra i registret tills man svarar EXIT. String [] reg = new String[100]; //Registret antal=0; // antal inlästa namn String namn; // Loopa så länge det finns plats i registret while ( antal<100) { System.out.println("Ge namn:"); namn =input.nextline(); // Om det inlästa är EXIT, bryt loopen if (namn.equals("exit")) { break; } reg[antal]=namn; // Lagra i arrayen antal++; } Arrayer med ett index 28