Folienpaket 5 Themenschwerpunkte: Referenztypen: Felder /2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Ähnliche Dokumente
Kapitel 3: Variablen

Einstieg in die Informatik mit Java

JAVA-Datentypen und deren Wertebereich

Dr. Monika Meiler. Inhalt

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Einstieg in die Informatik mit Java

Repetitorium Informatik (Java)

GI Vektoren

Modellierung und Programmierung 1

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Objektorientierte Programmierung OOP Programmieren mit Java

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

5.4 Klassen und Objekte

Felder (1) Allgemeines

RO-Tutorien 3 / 6 / 12

Der Datentyp String. Stringvariable und -vergleiche

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2

Dynamischer Speicher

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03

Einführung in die Programmierung mit VBA

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Programmieren I. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

Welche Informatik-Kenntnisse bringen Sie mit?

Propädeutikum zur Programmierung

Kapitel 6. Programmierkurs. 6.0 Felder (Arrays) Deklaration von Feldern. Felder (Arrays) Mehrdimensionale Arrays. Birgit Engels, Anna Schulze WS 07/08

String s1, s2; Eine Zuweisung geschieht am einfachsten direkt durch Angabe des Strings eingeschlossen in doppelte Hochkommata:

Einstieg in die Informatik mit Java

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Elementare Konzepte von

C# im Vergleich zu Java

Elementare Datentypen in C++

Programmierung mit C Zeiger

Einführung in die Programmierung 1

Präzedenz von Operatoren

Primitive Datentypen und Felder (Arrays)

Klassen in Java. Grundlagen der Programmierung. Stephan Kleuker 68

PROGRAMMIERUNG IN JAVA

Übersicht. 4.1 Ausdrücke. 4.2 Funktionale Algorithmen. 4.3 Anweisungen. 4.4 Imperative Algorithmen Variablen und Konstanten. 4.4.

Deklarationen in C. Prof. Dr. Margarita Esponda

Kapitel 4: Zeiger. Inhalt. Zeiger Zeigerarithmetik

3. Anweisungen und Kontrollstrukturen

Zusammengesetzte Datentypen -- Arrays und Strukturen

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

Datenfelder (Arrays) Vektoren, Matrizen, Tabellen. Dr. Beatrice Amrhein

Javakurs für Anfänger

Zeiger, Arrays und Strings in C und C++

Java - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue

Einstieg in die Informatik mit Java

Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Blöcke. Beispiel: Variablen in Blöcken

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Java Einführung Klassendefinitionen

2. Programmierung in C

Primitive Datentypen

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

Javakurs für Anfänger

Grundlagen der Informatik Enums, Strings und Arrays

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Bei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife

Prof. W. Henrich Seite 1

Schleifen dienen dazu, bestimmte Anweisungen immer wieder abzuarbeiten.

FHZ. K20 Arrays. Lernziele. Hochschule Technik+Architektur Luzern Abteilung Informatik, Fach Programmieren. Inhalt

Man kann bei der Deklaration einen Wert der Variablen angeben oder später den Wert zuweisen. Beide Befehlsfolgen leisten dasselbe:

Klausur in 12.1 Themen: Zahlsysteme, Grundlagen von Delphi (Bearbeitungszeit: 90 Minuten)

Schleifen in C/C++/Java

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

Übungspaket 29 Dynamische Speicherverwaltung: malloc() und free()

Advanced Programming in C

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Array-Verwaltung. Array-Verwaltung im Speicher Illustration. Zuweisung von Arrays. Speicherbereinigung. Aliasierung Eine Besonderheit

Dr. Monika Meiler. Inhalt

Graphische Benutzungsoberflächen mit Java. Einführung in NetBeans

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Java Cheatsheet. Mehrzeiliger Kommentar (beginnt mit /* und endet mit */)

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

Algorithmen und Datenstrukturen

Objektorientierte Programmierung

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. Hochschule Darmstadt -Fachbereich Informatik-

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

Einführung in die Programmierung

Programmieren I. Kapitel 5. Kontrollfluss

Klassen mit Instanzmethoden

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 1

Einstieg in die Informatik mit Java

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ

6 Speicherorganisation

Klausur zum Kurs Betriebssysteme (1802) am 19. September 2009

Wiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung

Grundzüge der Wirtschaftsinformatik WS 2002/03. Wiederholung Java. Programmierzyklus. Heiko Rossnagel Problem

Prof. H. Herbstreith 10. Juli Uhr bis 11:00 Uhr Leistungsnachweis Informatik 1 SS 2001

Übungen zur Vorlesung Wissenschaftliches Rechnen I. Grundelemente von Java. Eine Anweisung. wird mit dem Wertzuweisungsoperator = geschrieben.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Zeichendarstellung. Zeichen sind Zahlen (in C) Zeichen und switch

Werkzeuge zur Programmentwicklung

Java - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue

Transkript:

Folienpaket 5 Themenschwerpunkte: Referenztypen: Felder 208 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Wiederholung Schleifentypen In Java gibt es hauptsächlich drei Schleifentypen: while/do/for. Typische Übersetzungen aus mathematischen Formeln: Die Summe wird berechnet über y = b f (k) k=a double y = 0.0; for (int k = a; k <= b; k = k + 1) { y = y + f(k); } System.out.println(y); // Nicht in der Schleife 209 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Wiederholung Schleifentypen In Java gibt es drei Schleifentypen: while/do/for. Typische Suche über die natürlichen Zahlen: int n = 0; boolean gefunden; do { n = n + 1; gefunden = (Prüfung von n ); } while (gefunden == false); System.out.println("Gefunden wurde n = " + n); Bei Suchschleifen: Wiederholung solange Zielprüfung falsch ist. 210 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Wiederholung Schleifentypen In Java gibt es drei Schleifentypen: while/do/for. Typische kontrollierte Benutzereingabe zur Berechnung von y = x: double x; do { System.out.print("Geben Sie eine nichtnegative Zahl ein: "); x = eingabe.nextdouble(); } while (x < 0); double y = Math.sqrt(x); Aber Hauptanwendung von Schleifen ist Bearbeitung von Feldvariablen. 211 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Zusammengesetzte Datentypen Neben den elementaren gibt es auch zusammengesetzte Datentypen. Java kennt Felder und Klassen, sie werden aus elementaren Datentypen zusammengesetzt. Zusätzliche Symbole sind notwendig, um auf solche Variablen zuzugreifen: Bei Feldern: Eckige Klammern [ bzw. ] Bei Klassen und Objekten: Der Punkt. Zusammengesetzte Datentypen werden aus elementaren Datentypen aufgebaut: wir müssen Java irgendwie mitteilen, aus welchen und wieviele. 212 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Zusammengesetzte Datentypen Zusammengesetzte Datentypen benötigen Speicherbereiche, diese müssen verwaltet werden. Dazu gibt es Referenzvariablen. Felder und Objekte können nur über Referenzen benutzt werden. Dazu sind mehrere Schritte notwendig: Eine Referenzvariable wird deklariert, das eigentliche Feld bzw. das Objekt wird im Speicher erzeugt, über die Referenzvariable wird auf die Inhalte zugegriffen. 213 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Feldvariablen Der einfachste zusammengesetzte Datentyp ist das Feld (engl. array): Ein Feld ist eine Kette von Variablen gleichen Typs: a[0] a[1] a[2] a[3] a[4] a[n-1] Deklaration der Referenzvariablen: Datentyp [] Name ; Beispiel: boolean[] meinfeld; Erstellen: Name = new Datentyp [Anzahl ]; Beispiel: meinfeld = new boolean[10000]; Die Variable im Feldelement j bekommt man mit Name [j] Beispiel: meinfeld[300] = false; Feldelemente werden in Java von 0 bis n 1 gezählt, die Zahl in den eckigen Klammern ist der Index in das Feld. 214 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Referenzen in Java Was genau wird im Speicher angelegt? double[] z; z = new double[5]; z[0] = 1; z[1] = -3.1; z[2] = 4; z[3] = 5.0/2.0; z[4] = z[2]; Wir haben hier zwei verschiedene Typen von Variablen: Die einzelnen Feldelemente z[0], z[1],..., z[4] enthalten elementare double-zahlenwerte. Die Variable z ohne Klammern enthält dagegen eine Referenz als Wert. Ihr einziger Zweck ist es, das Feld im Speicher zu verwalten. Die Referenz enthält die Position des Felds im Speicher, seine Länge, den Elementtyp und noch weitere Informationen. 215 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Referenzen in Java Wir müssen genau unterscheiden zwischen Elementare Datentypen wie int, double,... Hier ist die Variable mit Ihrer Speicherzelle identisch. Zusammengesetzte Datentypen wie int[], double[],... Hier unterscheidet man zwischen der Referenzvariable und den Speicherzellen, auf die sie zeigt. Beachte: String ist kein elementarer Datentyp, aber auch kein Feld. Es ist ein Klassentyp ( = ein Datentyp mit Programmcode). Dazu kommen wir erst später. 216 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Referenzen in Java Nach der Deklaration ist eine (lokale) Referenzvariable nicht initialisiert (es sei denn, sie wird mit dem Wert null initialisiert, das Literal mit der Bedeutung zeigt nirgends hin ). Durch den new-befehl wird ein neuer Speicherbereich angelegt (man sagt auch: reserviert), dann wird die Referenz auf diesen Bereich gesetzt. Dem new-befehl muss man mitteilen, welche Feldelemente und wieviele gebraucht werden. 217 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Referenzen in Java Ein typisches Beispiel: Erzeuge 100 Zufallszahlen double[] zahlen; zahlen = new double[100]; for (int j = 0; j < 100; j = j + 1) { zahlen[j] = Math.random(); } Zugriff auf die erzeugten Zahlen erfolgt über die Referenz. Den Ausdruck zahlen[j] interpriert Java so: Gehe in den Speicherbereich auf den zahlen zeigt, und hole dort das j-te Element. 218 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Intelligente Referenzen In Java kontrollieren Referenzen den Zugriffe auf ihr Feld: Der Index wird geprüft: double[] z = new double[10]; z[30] = 4; FEHLER: Letztes Element im Feld hat Index 9 z[-5] = 0; FEHLER: Felder starten beim Index 0 Der Feldtyp wird geprüft: int[] m = new int[10]; m[3] = 4.3; FEHLER: Falscher Feldtyp byte k = m[1]; FEHLER: Bitverlust Ist überhaupt ein Feld da? byte[] b; // Nur Referenz erzeugt b[3] = 1; FEHLER: b ist "null", kein Feld gefunden Mit dem Schlüsselwort length kann man die Länge des Felds ermitteln, z.b. hat z.length den Wert 10 im ersten Beispiel. 219 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Sofortige Initialisierung Wie elementare Variablen können Felder sofort mit Werten belegt werden: Dabei ersetzt man new Datentyp [Anzahl ] durch die Auflistung { wert1, wert2,... }. Beispiel: int[] A = { 32, 5, -2, 12, 4 }; Bei einer sofortigen Initialisierung braucht man die Anzahl nicht anzugeben, Java zählt die Elemente schon selbst. Nachteil: Man muss die Elementwerte vorher schon kennen. Auch unschön: In der Mathematik ist {1, 2} = {2, 1}, in Java nicht! 220 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Sofortige Initialisierung Alle elementaren Werte können so initialisiert werden: String[] S = { "Mein", "kleines", "Programm"}; int[] A = { 4, 7, 4, 1, 2}; int[] I = { 1, 4, 3, A[3]+1, 3}; char[] C = { 'a', 'ö', '2', 'Σ' }; Deklaration und Initialisierung müssen gleichzeitig erfolgen: int[] A; A = { 4, 7, 4, 1, 2 }; Syntaxfehler Bei sofortiger Initialisierung muss Feldlänge/Inhalt zum Zeitpunkt der Programmerstellung bekannt sein, das ist in der Regel nicht der Fall. 221 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Beispiel Die Feldlänge kann man mit Hilfe einer Variablen festlegen, dadurch werden Programme flexibel: System.out.println("Wieviele sollen es sein?"); int anzahl = eingabe.nextint(); double[] zahlen = new double[anzahl]; for (int j = 0; j < anzahl; j = j + 1) { zahlen[j] = Math.random(); } Besser: In der for-bedingung mit length abfragen, wieviele Elemente tatsächlich im Feld sind. 222 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Aufgabe Schreiben Sie ein Programmstück, das prüft, ob die Werte in feld sortiert sind. Dazu muss jedes Feldelement kleiner oder gleich seinem Nachfolger sein: boolean sortiert = true; double[] feld = new. if (sortiert) System.out.println("Feld ist sortiert"); Tipp: Prüfen Sie, ob feld[j] kleinergleich feld[j + 1] ist. 223 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Aufgabe Schreiben Sie ein Programmstück, das prüft, ob die Werte in feld sortiert sind. Dazu muss jedes Feldelement kleiner oder gleich seinem Nachfolger sein: boolean sortiert = true; double feld[] = new for (int j = 0; j < (feld.length - 1); j = j + 1) { if (feld[j] > feld[j + 1]) sortiert = false; } if (sortiert) System.out.println("Feld ist sortiert"); 224 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Referenzen in Java Der Unterschied Referenz/Wert ist kompliziert, hier eine Tauschaktion mit elementaren Variablen: // Zwei elementare Variablen deklarieren int a; int b; // Erste Variable beschreiben a = 1; // b auf a setzen und b modifizieren b = a; b = 1000; System.out.println(a); 1 Die Variablen a und b haben verschiedene Speicherzellen. 225 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Referenzen in Java Das gleiche Spiel mit Referenzen: // Zwei Referenzen deklarieren int[] A; int[] B; // Erstes Feld anlegen, A ist Referenzvariable A = new int[4]; A[0] = 1; A[1] = 1; A[2] = 1; A[3] = 1; B = A; B[0] = 1000; System.out.println(A[0]); 1000 A und B sind verschiedene Referenzvariablen, aber beide Referenzen zeigen auf den gleichen Speicherbereich. 226 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Aufgabe Angenommen feld ist ein Feld aus int-elementen. Erzeugen Sie eine Kopie dieses Felds. 227 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Aufgabe Angenommen feld ist ein Feld aus int-elementen. Erzeugen Sie eine Kopie dieses Felds. int[] kopie; kopie = new int[feld.length]; for (int j = 0; j < feld.length; j = j + 1) { kopie[j] = feld[j]; } Bekommen Sie auch mit feld.clone() aus der Referenz. Die Zuweisung kopie = feld; erzeugt schon eine Kopie, aber nicht vom Feld sondern nur von der Referenz auf das gleiche Feld. 227 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Felder verwalten Felder sind dynamisch, man kann die Referenzvariable jederzeit mit einem neuen Feld beschreiben, auch mit einer anderen Länge. Nur der elementare Datentyp muss gleich sein. int[] A = new int[200]; System.out.println(A.length); 200 A = new int[10]; System.out.println(A.length); 10 A = new double[10]; FEHLER: Falscher Typ Styleguide: Niemals Feldlängen als Zahlen in for-bedingungen schreiben, sondern length und das <-Zeichen benutzen: for (int j = 0; j < feld.length; j = j + 1) { Block } 228 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Referenzen und Zeiger Referenzen sind eine Eigenheit von Java: In klassischen Sprachen werden Felder durch Zeiger realisiert, ein Zeiger ist ein int, der einfach die Nummer der Speicherzelle angibt wo das Feld anfängt. Das Zeigerkonzept hat Vor- und Nachteile: Kein Verwaltungsaufwand, Abarbeiten der Feldelemente effizient machbar, aber kein Indexcheck möglich: Felder kennen ihre Länge nicht. Und keine Kontrolle, dass der Zeiger wirklich auf ein Feld zeigt. Die Sprache C ist gefürchtet (und bei Hackern geschätzt) für ungeprüfte Zeigerzugriffe, mit denen ein Programm theoretisch den gesamten Speicher und damit den Computer kontrollieren kann. Moores Gesetz: Felder mit int-zeigern sind keine gute Idee... 229 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Referenzen und Zeiger In den 70ern: int s waren nur 16 Bit breit, wurde zum Problem als erste Computer mit Speicher >64Kb entwickelt wurden. Prozessorhersteller haben Problem bis in die 90er hinein überbrückt, indem der Speicher in getrennte Segmente eingeteilt wurde. MS-DOS konnte mit diesem Trick bis in die 90er hinein nur 640Kb Speicher verwalten, aufwendige Programme haben meist gleich beim Starten das Betriebssystem ausgehebelt und eine eigene Speicherkontrolle eingerichtet. 90er: MS-Betriebssysteme setzen erstmals systematisch 32Bit-ints ein. Moores Gesetz sagt voraus, dass damit 16 Verdopplungen, also 16 18 = 288 Monate, sprich 24 Jahre Zeit erkauft wurden bis das Problem wieder auftritt. Heute: Umstellung auf 64Bit-Systeme, hält nach Moore bis 2062. Eine Referenz in Java ist grundsätzlich keine Zahl mehr, sondern ein ganzes Bündel an Informationen über das Feld. 230 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Referenzen Die JVM (Java Virtual Machine) regelt im Hintergrund die Speicherverwaltung: Speicherbereiche werden permanent bewegt und optimiert, JVM betreibt Garbage Collection, wenn ein Speicherblock keine Referenz mehr hat wird er gelöscht: byte[] b = new byte[3]; b[2] = 1; b = new byte[5]; b[4] = 2; b = null; Verhindert die für Zeiger-Systeme typische Speicherfragmentierung, und verhindert die für C typischen Speicherlecks/Hacks. Optimal wenn viele kleine und sich oft ändernde Felder im Spiel sind. Java ist zur Verarbeitung großer statischer Datenmengen ungeeignet. 231 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Referenzen in Java Was genau kann mit einer Referenz versehen werden? So ziemlich alles in Java! einzelne Variablen (Felder der Länge 1) Felder aus Variablen Felder aus Feldern Felder aus Feldern aus... allgemeine Objekte (Variablen+Programmcode, dazu später mehr) Beim Umgang mit Referenzen gilt stets: Unterschied Referenz und Speicherbereich beachten Die Feldelemente sind erst nach dem new-befehl vorhanden Vorher enthält die Referenzvariable den Wert null Zugriffe mit einer null-referenz geben eine Fehlermeldung 232 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Aufgabe Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; V[0] = 2; V[1] = 2; V[2] = 2; V[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 233 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Aufgabe:Lösung Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; X[0] = 2; X[1] = 2; X[2] = 2; X[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 234 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Aufgabe:Lösung Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; X[0] = 2; X[1] = 2; X[2] = 2; X[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 235 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Aufgabe:Lösung Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; X[0] = 2; X[1] = 2; X[2] = 2; X[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 236 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Aufgabe:Lösung Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; X[0] = 2; X[1] = 2; X[2] = 2; X[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 237 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Aufgabe:Lösung Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; X[0] = 2; X[1] = 2; X[2] = 2; X[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 238 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Aufgabe:Lösung Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; X[0] = 2; X[1] = 2; X[2] = 2; X[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 239 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Aufgabe:Lösung Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; X[0] = 2; X[1] = 2; X[2] = 2; X[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 240 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Aufgabe:Lösung Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; X[0] = 2; X[1] = 2; X[2] = 2; X[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 241 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Aufgabe:Lösung Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; X[0] = 2; X[1] = 2; X[2] = 2; X[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 242 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Aufgabe:Lösung Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; X[0] = 2; X[1] = 2; X[2] = 2; X[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 243 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Aufgabe:Lösung Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; X[0] = 2; X[1] = 2; X[2] = 2; X[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 244 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Aufgabe:Lösung Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; X[0] = 2; X[1] = 2; X[2] = 2; X[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 245 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Aufgabe:Lösung Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; X[0] = 2; X[1] = 2; X[2] = 2; X[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 246 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Aufgabe:Lösung Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; X[0] = 2; X[1] = 2; X[2] = 2; X[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 247 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Aufgabe:Lösung Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; X[0] = 2; X[1] = 2; X[2] = 2; X[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 248 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Aufgabe:Lösung Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; X[0] = 2; X[1] = 2; X[2] = 2; X[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 249 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Aufgabe:Lösung Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; X[0] = 2; X[1] = 2; X[2] = 2; X[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 250 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Aufgabe:Lösung Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; X[0] = 2; X[1] = 2; X[2] = 2; X[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 251 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4