int iarray[]= new int[3]; // deklarera ett heltalsfält med tre heltal int jarray[]={ 1, 3, 5, 7, 9, 11, 13, 15}; // initierat fält 8 element

Relevanta dokument
TDDC77 Objektorienterad Programmering

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

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.

1 Egna klasser. 1.1 En punkt-klass

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

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

System.out.println("Jaså du har "+ antaldollar + " stycken.");

Föreläsning 2, vecka 8: Repetition

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

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

JAVAUTVECKLING LEKTION 8

DAT043 - Föreläsning 7

Laboration 13, Arrayer och objekt

Statistik över heltal

Instuderingsfrågor, del D

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

Funktioner. Programmering. Egendefinierade funktioner i Java. En Java-funktions anatomi. hh.se/db2004. Statiska metoder. Funktioner. resultatvärde.

Tentamen ID1004 Objektorienterad programmering October 29, 2013

TDDD78 Objektorientering: Lagring och livstid

PROGRAMMERING-JAVA TENTAMINA

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

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

PROGRAMMERING-Java Omtentamina

Metodanrop - primitiva typer. Föreläsning 4. Metodanrop - referenstyper. Metodanrop - primitiva typer

Föreläsning REPETITION & EXTENTA

Tentamen , Grundläggande programmering i Java

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

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

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

För att skriva data till skärmen ( konsolen) används objektet System.out tillsammans med metoden println eller print.

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

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

Föreläsning 3-4 Innehåll

Typkonvertering. Java versus C

Objektorienterad programmering i Java

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

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

DELPROV 1 I DATAVETENSKAP

Objektorientering: Lagring och livstid

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

(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

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Föreläsning 5-6 Innehåll

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

Arrayer (fält)

Tentamen OOP

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

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

Tentamen , Introduktion till Java, dtaa98, dtea53

DAT043 - föreläsning 8

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

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

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

Laboration 1: Figurer i hierarki

PROGRAMMERING-Java TENTAMINA

Objektorientering: Lagring, räckvidd och livstid

Föreläsningsmaterial (Arv) Skrivet av Andreas Lund

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

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

1 Standardalgoritmer. 1.1 Swap. 1.2 Sök minsta värdet i en array

Datatyper. Programmering. Att definiera datatyper i Java. Laddade partiklar. (x,y) (Rx,Ry) hh.se/db2004

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

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

Inledande programmering med C# (1DV402) 85/2=42. OBS! Heltal 1 (13)

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

Malmö högskola 2008/2009 CTS

Tentamen ID1004 Objektorienterad programmering April 7, 2015

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

Objektorienterad Programmering DAT043

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

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

Generiska konstruktioner. Kursbokens kapitel 13

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

Klasshierarkier - repetition

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

Objektorienterad Programmering (TDDC77)

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

System.out.println("Jaså du har "+ antalhusdjur+ " husdjur"); if ( antalhusdjur > 5 ) System.out.println("Oj det var många);

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.

JAVA Mer om klasser och objektorientering

Programmering B med Visual C

Kort om klasser och objekt En introduktion till GUI-programmering i Java

TDDE10 TDDE11, 725G90/1. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

Malmö högskola 2012/2013 Teknik och samhälle

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

Lösningar för tenta 3 DAT043,

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

Objekt och klasser - Introduktion

1 Iteration. 1.1 for-satsen

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

Tentamen FYTA11 Javaprogrammering

Föreläsning 10. ADT:er och datastrukturer

OOP Objekt-orienterad programmering

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

1 Funktioner och procedurell abstraktion

Föreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER

Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering

4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

Transkript:

1 Arrayer Vid beräkningar med större datamängder än några enstaka tal är det bekvämt att kunna betrakta en talmängd som en enhet. Detta åstadkommer man genom att deklarera och instantiera fält. Ett annat namn för fält är array. int iarray[]= new int[3]; // deklarera ett heltalsfält med tre heltal int jarray[]={ 1, 3, 5, 7, 9, 11, 13, 15; // initierat fält 8 element Andra datatyper går naturligtvis också bra. För att skapa en array med punkter av vår Point-klass från tidigare kan det se ut som Point parr[]={ new Point(), new Point() ; Vi har nu skapat två punkter. Däremot kommer satsen Point parr[]=new Point[2]; inte skapa två punkter, utan endast skapa en behållare med plats för två punkter. Vi måste därefter använda new satsen för att skapa punkterna. För att arbeta med fält använder man sig av index-operatorn [], värdet som anges inom [ ] kallas index int iarray[]=new int[3]; iarray[0] = 4; iarray[1] = 11; iarray[2] = -2; Vi har nu tilldelat arrayen värdena 4, 1 och 2. Tänk dig arrayen som en tabell där varje rad är numrerad med början på 0. iarray index värde 0 4 1 11 2-2 Man använder index både för at läsa av ett värde och att tilldela ett värde int iarray[]=new int[3]; iarray[0] = 4; iarray[1] = 11; iarray[2] = -2; System.out.println( iarray[0] * iarray[1] ); // skriver ut 44 Notera att satsen int myarray[]= new int[100]; Skapar hundra heltal med index från 0 till 99 För dessa fält gäller samma som för vanliga variabler, dvs är de inte initierade kan vilka värden som helst finnas bland heltalen/flyttalen.

Exempel, inmatning och beräkning av summa och medelvärde av 10 flyttal public class Main { double myarray[]= new double[10]; double avg; double sum = 0; for(int i = 0; i<myarray.length; i++) { // beräkna summa först sum+= myarray[ i ]; avg = sum/ 10.0; Resultatet av en programkörning kan bli Mata in tal nr 1 1.0 Mata in tal nr 2 4.0 Mata in tal nr 3 7.0 Mata in tal nr 4 6.0 Mata in tal nr 5 7.0 Mata in tal nr 6 13.3 Mata in tal nr 7 12.98 Mata in tal nr 8 5.4 Mata in tal nr 9 3.3 Mata in tal nr 10 3.2 Medelvärdet är:6.318 Det i särklass viktigaste hjälpmedelet för att hantera arrayer är for-satsen En array är av en speciell klass, med det enda attributet length. forsatsen kan man läsa ut som for( första index; repetera till sista index; nästa index )... satser

Notera att längden är ett mer än vad forsatsen ser. Längden 10 repetitionen till och med 9. Heltalet i antar värdet 10 iom sista jämförelsen. Förbättrad version med uppdelning i metoder. Flera av delarna i programmet ovan kan delas upp i metoder. Man delar gärna upp programmet i återanvändbara delar. Java APIt är ju en samling komponenter med återanvändbara delar. I sitt eget program tar man ingen hänsyn till andras behov av återanvändbara delar utan använder metoder för att göra programmet lättläst. De delar som vi vill förenkla är summaberäkningen och medelberäkningen. Förenklingen består av att vi flyttar ut beräkningen av summan och medelvärdet till metoder. public class Main { public static double sum(double [] darray){ double sumresult = 0; for(int i = 0; i<darray.length; i++) { sumresult+= darray[ i ]; return sumresult; // beräkna summa först public static double average(double [] darray){ return sum(darray)/darray.length; double myarray[]= new double[10]; double avg = average(myarray); double sum = sum(myarray); Analysera exemplet noga. Det är ett gott exempel på hur ett relativt komplicerat huvudprogram kan delas upp i mindre uppgifter, och hur resultatet blir ett överskådligt huvudprogram med klara avsikter. Metoderna är dessutom generella och kan återanvändas i någon annan del av programmet. Du måste på egen hand kunna beskriva och implementera summaberäkningen. Se även avsnittet standardalgoritmer för andra exempel med numeriska fält.

2 Objekt av applikationsklassen I NetBeansmiljön finns en konstruerare definierad för den klass som skapas vid projektstart. Som vi sett i bland annat Point exemplet används new för att anropa konstruerare och skapa objekt. Vi kan enkelt skriva om exemplet ovan så att det istället skapar en instans av av klassen Main och använder metoder som hör till objektet itsället för klassen. Vi kommer alltså inte static deklarera metoderna. Det finns flera sätt att göra denna omskrivning. Det sätt som valts här, är valt för att på bästa sätt visa objektnaturen, och är kanske inte bästa sättet att utforma applikationen. public class ArrayInput { // Arrayen som attribut, skapas då objektet skapas private double myarray[] = new double[10]; public ArrayInput(){ public double sumarray(){ double sumresult = 0; for(int i = 0; i<myarray.length; i++) { // beräkna summa först sumresult+= myarray[ i ]; return sumresult; public double averagearray(){ return sumarray()/myarray.length; ArrayInput myobject = new ArrayInput(); double avg = myobject.averagearray(); double sum = myobject.sumarray(); Netoderna är omdöpta för att bättre illustrera deras funktion. I det tidigare exemplet gav signaturen (argumenten) deras funktion tillsammans med namnet. Metoderna deklareras inte statiska eftersom de anropas via myobject.metod... i main(... ) eller via en ickestatisk metod som public double averagearray(){ return this.sumarray()/myarray.length; this är som tidigare nämnts det egna objektet. this skrivs inte ut om det inte är nödvändigt eller viktigt för läsbarheten.

Arrayen med flyttalen deklareras som attribut och därför inte behöver skickar som argument till metoderna. main deklareras fortfarande som static eftersom den måste deklareras så.