DVG1 - 08 - Felder1 Felder. DVG1 - 08 - Felder 2 Was sind Felder? Felder sind Reihungen aus endlich vielen Elementen gleichen Typs. Z.B.: Vektoren : (x.

Slides:



Advertisements
Ähnliche Präsentationen
Imperative Programmierung
Advertisements

Imperative Programmierung
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Zusammenfassung der Vorwoche
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
der Universität Oldenburg
Sequentielle Liste - Array
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Erweiterte Zuweisungskompatibilität
Konstruktoren.
Objekte werden als Adressen (Referenzen) übergeben. Dies führt manchmal zu unerwarteten Ergebnissen...
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)
Objekte und Arbeitsspeicher
FOR Anweisung.
ARRAY oder FELD oder VEKTOR
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Programm besteht aus mehreren Bestandteilen: Schlüsselwörter Sonderzeichen Bezeichner Kommentare Texte.
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
Zusammenfassung Vorwoche
EDV1 - Komplexe Datentypen
int dezi = Integer.parseInt(args[0]); boolean vz = (dezi>=0);
EDV1 - 06FelderPointer Felder, Zeichenketten, Pointer.
Modulare Programmierung
DVG Ausnahmen. DVG Was sind Programmfehler? 4 Programm erzielt gar kein Ergebnis. 4 Berechnetes Ergebnis stimmt nicht mit dem erwarteten.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
Arrays,Strings&Pointer in C/C++
DVG Ausnahmen1 Ausnahmen. DVG Ausnahmen 2 Was sind Programmfehler? Programm erzielt gar kein Ergebnis. Berechnetes Ergebnis stimmt nicht.
DVG Einführung in Java1 Einführung in JAVA.
DVG Methoden 1 Methoden. 2 int dezi = Integer.parseInt(args[0]); boolean vz = (dezi>=0); dezi = Math.abs(dezi); String Bin = ""; do { } while.
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
05 - Reflection Das Reflection API Reflection2 Ziel Es kommt vor, dass eine Methode ein Objekt als Parameter übergeben bekommt, ohne dass bekannt.
Einführung in die Programmierung Datensammlung
Java programmieren mit JavaKara
Kontrollstrukturen Verwendung: Steuerung des Ablaufs.
IT2 – WS 2005/20061Oct 10, 2005 Externes Verhalten – Quelltext (source code) Durch Aufrufe der Konstruktoren und Methoden kann das externe Verhalten (=die.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Vom Umgang mit Daten. public void myProgram() { int[] saeulenWerte = new int[world.getSizeX()]; for (int i = 0; i < saeulenWerte.length; i++) { saeulenWerte[i]
Variablenkonzept Klassisch, in Java Basistyp
Die Klasse String und ihre Methoden
Parameterübergabemechanismen für den Methodenaufruf
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
CuP - Java Sechste Vorlesung Entspricht ungefähr Kapitel 3. 1 – 3
Programmieren in C Grundlagen C 2
Programmiervorkurs WS 2014/15 Methoden
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
Programmiervorkurs WS 2014 Referenzdatentypen
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Java-Kurs - 3. Übung Hausaufgabe Arrays For-Schleifen.
Ausnahmen Vorlesung besteht aus zwei Teilen Programmierung (4 SWS)
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Tutorium Software-Engineering SS14 Florian Manghofer.
Java Programme nur ein bisschen objektorientiert.
Tutorium Software-Engineering SS14 Florian Manghofer.
Grundkurs Informatik 11-13
Implementieren von Klassen
Felder in der Informatik
 Präsentation transkript:

DVG Felder1 Felder

DVG Felder 2 Was sind Felder? Felder sind Reihungen aus endlich vielen Elementen gleichen Typs. Z.B.: Vektoren : (x 1, x 2,..., x n ) Koordinaten eines Punktes in der Ebene (x,y) bzw. im Raum (x,y,z) bilden Felder der Länge 2 bzw. 3. Die Elemente sind reelle Zahlen. Alle Elemente eines Feldes existieren nur als gemeinsames Objekt und haben daher die selbe Lebensdauer. Feldelemente können beliebigen Typ haben, also auch selber Felder sein. Feldelemente werden immer zusammenhängend abgespeichert. In Java beginnen die Indizes immer bei Null, d.h. (x 0, x 1,..., x N-1 ). Felder werden immer über Referenzen (handles) verwaltet.

DVG Felder 3 Feldvereinbarung Mögliche Vereinbarungen von Feldvariablen: ElementTyp [] name; (möglich ist auch ElementTyp name [];) ElementTyp kann ein beliebiger Typ sein. ElementTyp [] ist dann der FeldTyp. Es werden Referenzen auf Felder erzeugt, nicht die Felder selbst! Die Referenzen werden mit null initialisiert. null ist die Referenz auf nichts. Referenzen sind streng typgebunden. z.B.: long [] binomial; Es wird die Referenz auf ein Feld mit dem Namen binomial erzeugt. Die Elemente des Feldes haben den Typ long. Das Feld hat den Typ long []. Die Referenz wird mit dem Wert null initialisiert.

DVG Felder 4 Felderzeugung Felderzeugung ohne Initialisierung ElementTyp [] name; name = new ElementTyp [laenge]; oder ElementTyp [] name = new ElementTyp [laenge]; Felderzeugung mit Initialisierung ElementTyp [] name = {wert0, wert1,..., wertN-1}; äquivalent zu ElementTyp [] name = new ElementTyp [N]; name[0] = wert0; name[1] = wert1;... name[N-1] = wertN-1;

DVG Felder 5 Die Länge von Feldern wird zur Laufzeit berechnet. Die Länge eines Feldes kann 0 sein. Leeres Feld. Die Länge eines Feldes darf nicht negativ sein. Sonst Ausnahme. Die Länge eines Feldes kann immer mit Feldname.length bestimmt werden. Z.B.: int [] feld = new int [Integer.parseInt(args[0])]; for (int i=0; i<feld.length; i++) feld[i]=2*i+1; Feldlänge

DVG Felder 6 Benutzung von Feldelementen Der Zugriff zu Feldelementen erfolgt über den Feldnamen und den Index. Feldname[index] Der Index ist immer vom Typ int. Das erste Feldelement hat den Index 0 und das letzte den Index Feldname.length-1. Die Einhaltung der Feldgrenzen wird streng geprüft! ==> Feldname[-1] und Feldname[Feldname.length] führen zu Laufzeitfehlern. Die Adresse des i-ten Feldelementes ergibt sich aus: Adresse des 0-ten Feldelements + i*(Länge eines Feldelementes)

DVG Felder 7 Feld mit N Elementen Element 0 Element 1 Element 2 Element 3 Element N-1 Länge eines Elements (L) Gesamtlänge N*L Referenz Länge der Referenz Metainformationen Länge der Metainformationen

DVG Felder 8 Lebensdauer von Feldern Felder sind ausschließlich über Referenzen erreichbar. ==> Existiert keine Referenz auf ein Feld, so können die in dem Feld enthaltenen Daten nicht mehr benutzt werden. Es können mehrere Referenzen auf dasselbe Feld existieren. Z.B.: long [] feld1, feld2; feld1=new long[100]; feld2=feld1; Die Anweisung feld2=feld1; bewirkt, dass die Referenz kopiert wird nicht, das Feld! Felder merken sich in den Metadaten wie viele Referenzen auf das Feld existieren. Existiert keine Referenz mehr, wird das Feld durch Garbage Collection (Müllsammlung) freigegeben.

DVG Felder 9 Objekt 1 Objekt 3 Objekt 5 Objekt 7 Objekt 9 Freier Hauptspeicher Belegter Hauptspeicher Objekt 9 Objekt 8 Objekt 1 Objekt 2 Objekt 3 Objekt 4 Objekt 5 Objekt 6 Objekt 7 Objekt 8

DVG Felder 10 Felder als Parameter von Methoden Parameter werden immer als Wert übergeben! Beispiel: public static float ScalarProduct(float[]x, float[]y) { float s = 0.0f; for (int i=0; i<x.length & i<y.length; i++) s += x[i]*y[i]; return s; } Dabei werden die Referenzen kopiert, nicht die Felder! D.h. Felder können als Ausgabeparameter verwendet werden.

DVG Felder 11 Beispiel: public static void AddArray(float[]x, float[]y) { for (int i=0; i<x.length & i<y.length; i++) x[i] += y[i]; } Die Feldelemente von x werden verändert.

DVG Felder 12 Felder können als Wert einer Methode benutzt werden. Beispiel: public static float [] concatArray(float[]x, float[]y) { float [] c = new float[x.length+y.length]; for (int i=0; i<x.length; i++)c[i] = x[i]; for (int i=0; i<y.length; i++)c[i+x.length] = y[i]; return c; } float [] e = concatArray(a,b); Es wird Feld erzeugt, das aus der Verkettung von a und b besteht. e = (a[0],...,a[a.length-1],b[0],...,b[b.length-1]) e.length=a.length+b.length

DVG Felder 13 Mehrdimensionale Felder Mehrdimensionale Felder werden nicht direkt unterstützt, d.h. ein zweidimensionales Feld ist ein eindimensionales Feld von Referenzen auf eindimensionale Felder. Da ElementTyp ein beliebiger Typ sein kann, kann es selber auch ein Feldtyp sein. Z.B. int [] [] i2; i2 ist eine Referenz auf ein Feld von Referenzen auf Felder von int- Größen. Direkte Erzeugung eines M-dimensionalen Feldes: ElementTyp [] []... [] feld = new ElementTyp [N0][N1]...[NM-1];

DVG Felder 14 Sukzessive Erzeugung eines mehrdimensionalen Feldes: ElementTyp [] []... [] feld = new ElementTyp [N0][]... []; for (int i=0; i<N0; i++) feld[i]=new ElementTyp [N1][]...[];... Die Einrichtung von Felder geschieht zur Laufzeit, d.h. die Längen können zur Laufzeit berechnet werden. Bei mehrdimensionalen Feldern können die einzelnen Teilfelder unterschiedlich lang sein.

DVG Felder 15 Initialisierung int [][] feld = { {0,1,2,3,4,5}, {10,11,12}, {20,21,22,23,24,25,26} }; ist äquivalent zu: int [][] feld = new int [3] []; feld[0]= new int[6]; feld[1]= new int[3]; feld[2]= new int[7];...

DVG Felder 16 Referenz Metainformationen Referenz 0 Referenz 1 Referenz 2 Referenz i Referenz N-1 Element i 0 Element i 1 Element i 2 Element i 3 Element i M i -1 Metainformationen iElement 0 0 Element 0 1 Element 0 2 Element 0 3 Element 0 M 0 -1 Metainformationen 0