Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Programmiervorkurs WS 2014 Referenzdatentypen

Ähnliche Präsentationen


Präsentation zum Thema: "Programmiervorkurs WS 2014 Referenzdatentypen"—  Präsentation transkript:

1 Programmiervorkurs WS 2014 Referenzdatentypen
Termin 4

2 Felder Ein umstaendlicher Kalender public class Kalender {
public static void main(String[] args) { //Eingabe: Scanner sc = new Scanner(System.in); System.out.println("Ihr Termin am Mo um 0 Uhr:"); String mo00uhr = sc.next(); System.out.println("Ihr Termin am Mo um 1 Uhr:"); String mo01uhr = sc.next(); System.out.println("Ihr Termin am Mo um 2 Uhr:"); String mo02uhr = sc.next(); // usw. //Ausgabe: System.out.println("Mo 0 Uhr: " + mo00uhr); System.out.println("Mo 1 Uhr: " + mo01uhr); System.out.println("Mo 2 Uhr: " + mo02uhr); // usw. }

3 Felder Ein Kalender mit einem Feld public class Kalender {
public static void main(String[] args) { //Eingabe: Scanner sc = new Scanner(System.in); String[] mo = new String[24]; for (int i = 0; i < mo.length; i++) { System.out.println("Ihr Termin am Mo um " + i + " Uhr:"); mo[i] = sc.next(); } //Ausgabe: System.out.println("Mo " + i + " Uhr: " + mo[i]);

4 Felder Ein Kalender mit einem Feld mo[0] mo[1] mo[2]
Vorlesung Seminar Zahnarzt Ein Kalender mit einem Feld mo[1] mo[2] String[] mo = new String[24]; Ein Feld mit Platz für 24 Zeichenketten: Größe des Feldes legt neues Feld im Speicher an Bezeichner des Feldes Kennzeichen für Feld Typ der Daten, die im Feld gespeichert werden mo[23]

5 Felder Ein Kalender mit einem Feld public class Kalender {
public static void main(String[] args) { //Eingabe: Scanner sc = new Scanner(System.in); String[] mo = new String[24]; for (int i = 0; i < mo.length; i++) { System.out.println("Ihr Termin am Mo um " + i + " Uhr:"); mo[i] = sc.next(); } //Ausgabe: System.out.println("Mo " + i + " Uhr: " + mo[i]);

6 Felder Ein Kalender mit einem Feld mo[i] = sc.next();
System.out.println("Mo " + i + " Uhr: " + mo[i]);

7 Felder Ein Kalender mit einem Feld
mo[i] = sc.next(); System.out.println("Mo " + i + " Uhr: " + mo[i]); Zugriff auf Zelle mit Index i des Feldes mo... ...zum Schreiben: ...und zum Lesen:

8 Felder Ein Kalender mit einem Feld
mo[i] = sc.next(); System.out.println("Mo " + i + " Uhr: " + mo[i]); Zugriff auf Zelle mit Index i des Feldes mo... ...zum Schreiben: ...und zum Lesen: Achtung: die erste Zelle hat Index 0.

9 Felder Ein Kalender mit einem Feld
for (int i = 0; i < mo.length; i++) { System.out.println("Ihr Termin am Mo um " + i + " Uhr:"); mo[i] = sc.next(); } //Ausgabe: System.out.println("Mo " + i + " Uhr: " + mo[i]); Iteration über Zellen des Feldes mo: Anzahl der Zellen

10 Felder Vektorrechnung public class Vektorsumme {
public static void main(String[] args) { double[] a = new double[3]; a[0] = 1.0; a[1] = 2.0; a[2] = 1.5; double[] b = new double[3]; b[0] = 3.5; b[1] = 1.0; b[2] = 2.5; double[] c = new double[3]; //Vektorsumme: for (int i = 0; i < c.length; i++) c[i] = a[i] + b[i]; //Ausgabe: for (int i = 0; i < c.length; i++) System.out.println(c[i]); }

11 Felder Vektorrechnung Felder lassen sich für alle Datentypen erzeugen!
public class Vektorsumme { public static void main(String[] args) { double[] a = new double[3]; a[0] = 1.0; a[1] = 2.0; a[2] = 1.5; double[] b = new double[3]; b[0] = 3.5; b[1] = 1.0; b[2] = 2.5; double[] c = new double[3]; //Vektorsumme: for (int i = 0; i < c.length; i++) c[i] = a[i] + b[i]; //Ausgabe: for (int i = 0; i < c.length; i++) System.out.println(c[i]); } Felder lassen sich für alle Datentypen erzeugen!

12 Felder Vektorrechnung public class Vektorsumme {
public static void main(String[] args) { double[] a = new double[3]; a[0] = 1.0; a[1] = 2.0; a[2] = 1.5; double[] b = new double[3]; b[0] = 3.5; b[1] = 1.0; b[2] = 2.5; double[] c = new double[3]; //Vektorsumme: for (int i = 0; i < c.length; i++) c[i] = a[i] + b[i]; //Ausgabe: for (int i = 0; i < c.length; i++) System.out.println(c[i]); }

13 Felder Vektorrechnung kompaktere Initialisierung
public class Vektorsumme { public static void main(String[] args) { double[] a = {1.0, 2.0, 1.5}; double[] b = {3.5, 1.0, 2.5}; double[] c = new double[3]; //Vektorsumme: for (int i = 0; i < c.length; i++) c[i] = a[i] + b[i]; //Ausgabe: for (int i = 0; i < c.length; i++) System.out.println(c[i]); } kompaktere Initialisierung

14 Felder Referenzen Ausgabe? public class Doppel {
public static void main(String[] args) { int i = 3; //eine Ganzzahl i mit Wert 3 int j = i; //eine Ganzzahl j; j wird Wert von i zugewiesen j = 2 * j; //Wert von j wird verdoppelt //Ausgabe: System.out.println("Der Wert von i ist: " + i); System.out.println("Der Wert von j ist: " + j); } Ausgabe?

15 Felder Referenzen Ausgabe: i behält also seinen ursprünglichen Wert.
public class Doppel { public static void main(String[] args) { int i = 3; //eine Ganzzahl i mit Wert 3 int j = i; //eine Ganzzahl j; j wird Wert von i zugewiesen j = 2 * j; //Wert von j wird verdoppelt //Ausgabe: System.out.println("Der Wert von i ist: " + i); System.out.println("Der Wert von j ist: " + j); } Ausgabe: Der Wert von i ist: 3 Der Wert von j ist: 6 i behält also seinen ursprünglichen Wert.

16 Felder Referenzen Ausgabe? public class Doppel {
public static void main(String[] args) { int[] i = {3}; //ein int-Feld i mit einer Zelle; i[0] = 3 int[] j = i; //ein int-Feld j, dem i zugewiesen wird j[0] = 2 * j[0]; //Wert von j[0] wird verdoppelt //Ausgabe: System.out.println("Der Wert von i[0] ist: " + i[0]); System.out.println("Der Wert von j[0] ist: " + j[0]); } Ausgabe?

17 Felder Referenzen Ausgabe: i[0] hat sich verändert! Warum?
public class Doppel { public static void main(String[] args) { int[] i = {3}; //ein int-Feld i mit einer Zelle; i[0] = 3 int[] j = i; //ein int-Feld j, dem i zugewiesen wird j[0] = 2 * j[0]; //Wert von j[0] wird verdoppelt //Ausgabe: System.out.println("Der Wert von i[0] ist: " + i[0]); System.out.println("Der Wert von j[0] ist: " + j[0]); } Ausgabe: Der Wert von i[0] ist: 6 Der Wert von j[0] ist: 6 i[0] hat sich verändert! Warum?

18 i Felder 3 Referenzen i ist eine Referenzvariable: zeigt auf
int[] i = {3}; int[] j = i; j[0] = 2 * j[0]; zeigt auf i 3

19 i j Felder 3 Referenzen zeigt auf int[] i = {3}; int[] j = i;
j[0] = 2 * j[0]; zeigt auf i 3 j

20 i j Felder 3 Referenzen j zeigt auf dasselbe Feld wie i.
int[] i = {3}; int[] j = i; j[0] = 2 * j[0]; zeigt auf i 3 j j zeigt auf dasselbe Feld wie i. Es wird keine Kopie des Feldes erzeugt!

21 i j Felder 6 Referenzen j[0] wird verdoppelt.
int[] i = {3}; int[] j = i; j[0] = 2 * j[0]; zeigt auf i 6 j j[0] wird verdoppelt. Damit wird auch i[0] verdoppelt. Also: Der Wert von i[0] ist: 6 Der Wert von j[0] ist: 6

22 Felder Referenzen Ausgabe? public class Doppel {
public static void main(String[] args) { int[] i = {3}; //ein int-Feld i mit einer Zelle; i[0] = 3 int[] j = i; //ein int-Feld j, dem i zugewiesen wird j[0] = 2 * j[0]; //Wert von j[0] wird verdoppelt //Ausgabe: System.out.println(i); System.out.println(j); } Ausgabe?

23 Felder Referenzen [I@1e5e2c3 Ausgabe: gibt Adresse im Speicher an
public class Doppel { public static void main(String[] args) { int[] i = {3}; //ein int-Feld i mit einer Zelle; i[0] = 3 int[] j = i; //ein int-Feld j, dem i zugewiesen wird j[0] = 2 * j[0]; //Wert von j[0] wird verdoppelt //Ausgabe: System.out.println(i); System.out.println(j); } Ausgabe: gibt Adresse im Speicher an

24 Mehrdimensionale Felder
Die Einmaleins-Matrix:

25 Mehrdimensionale Felder
public class Einmaleins { public static void main(String[] args) { //Berechnung der Einmaleins-Matrix: int[][] p = new int[10][10]; // Feld mit Zahlenprodukten for (int z = 0; z < 10; z++) { // Zeilen for (int s = 0; s < 10; s++) { // Spalten p[z][s] = (z + 1) * (s + 1); } //Ausgabe eines Produktes (ohne Neuberechnung!) int x = 5; int y = 8; System.out.println(x + " * " + y + " = " + p[x - 1][y - 1]);

26 Mehrdimensionale Felder
int[][] p = new int[10][10]; zweite Dimension (Anzahl Spalten) erste Dimension (Anzahl Zeilen) ein Feld mit zwei Dimensionen

27 Mehrdimensionale Felder
public class Einmaleins { public static void main(String[] args) { //Berechnung der Einmaleins-Matrix: int[][] p = new int[10][10]; // Feld mit Zahlenprodukten for (int z = 0; z < 10; z++) { // Zeilen for (int s = 0; s < 10; s++) { // Spalten p[z][s] = (z + 1) * (s + 1); } //Ausgabe eines Produktes (ohne Neuberechnung!) int x = 5; int y = 8; System.out.println(x + " * " + y + " = " + p[x - 1][y - 1]);

28 Mehrdimensionale Felder
public class Einmaleins { public static void main(String[] args) { int[][] p = new int[10][10]; for (int z = 0; z < 10; z++) { for (int s = 0; s < 10; s++) { p[z][s] = (z + 1) * (s + 1); } int x = 5; int y = 8; System.out.println(x + " * " + y + " = " + p[x - 1][y - 1]); Achtung: Umrechnung erforderlich! Einmaleins beginnt mit 1 Feldindex beginnt mit 0

29 Mehrdimensionale Felder
public class Einmaleins { public static void main(String[] args) { int[][] p = new int[10][10]; for (int z = 0; z < 10; z++) { for (int s = 0; s < 10; s++) { p[z][s] = (z + 1) * (s + 1); } int x = 5; int y = 8; System.out.println(x + " * " + y + " = " + p[x - 1][y - 1]); Achtung: Umrechnung erforderlich! Einmaleins beginnt mit 1 Feldindex beginnt mit 0

30 Mehrdimensionale Felder
public class Feld { public static void main(String[] args) { int[][] x = new int[3][]; x[0] = new int[2]; x[1] = new int[1]; x[2] = new int[1]; x[0][0] = x[1][0] = 2; x[2][0] = x[0][1] = 1; //Ausgabe: for (int z = 0; z < x.length; z++) { for (int s = 0; s < x[z].length; s++) { System.out.print(x[z][s] + "\t"); } System.out.print("\n");

31 Mehrdimensionale Felder
public class Feld { public static void main(String[] args) { int[][] x = new int[3][]; x[0] = new int[2]; x[1] = new int[1]; x[2] = new int[1]; x[0][0] = x[1][0] = 2; x[2][0] = x[0][1] = 1; zweite Dimension noch offen x x[0] x[1] x[2]

32 Mehrdimensionale Felder
public class Feld { public static void main(String[] args) { int[][] x = new int[3][]; x[0] = new int[2]; x[1] = new int[1]; x[2] = new int[1]; x[0][0] = x[1][0] = 2; x[2][0] = x[0][1] = 1; jede Zelle ist selbst ein 1-D-Feld (Felder dürfen verschiedene Längen haben) x x[0] x[1] x[2]

33 Mehrdimensionale Felder
public class Feld { public static void main(String[] args) { int[][] x = new int[3][]; x[0] = new int[2]; x[1] = new int[1]; x[2] = new int[1]; x[0][0] = x[1][0] = 2; x[2][0] = x[0][1] = 1; 2 1 x x[0] 2 x[1] x[2] 1

34 Klassen Eine Klasse definiert gemeinsame Eigenschaften einer Menge von Objekten. Jedes Objekt ist Instanz einer Klasse. Klasse Objekt

35 Klassen Eine Klasse definiert gemeinsame Eigenschaften einer
Menge von Objekten. Jedes Objekt ist Instanz einer Klasse. Attribute sind Datenelemente, die in jedem Objekt einer Klasse gleichermaßen enthalten sind und von jedem Objekt mit individuellen Werten repräsentiert werden können.

36 Klassen Eine Klasse definiert gemeinsame Eigenschaften einer
Menge von Objekten. Jedes Objekt ist Instanz einer Klasse. Attribute sind Datenelemente, die in jedem Objekt einer Klasse gleichermaßen enthalten sind und von jedem Objekt mit individuellen Werten repräsentiert werden können. Beispiel: public class Adresse { public String str; //der Strassenname public int plz; //die Postleitzahl public String ort; //der Ortsname }

37 Klassen Bezeichner der Klasse Beispiel:
(Konvention: Beginn mit Großbuchstabe) Beispiel: public class Adresse { public String str; public int plz; public String ort; }

38 Klassen Beispiel: Attribute Datentyp Bezeichner public class Adresse {
public String str; public int plz; public String ort; } Attribute Datentyp Bezeichner

39 Klassen muss in Datei Adresse.java gespeichert werden! Beispiel:
public class Adresse { public String str; public int plz; public String ort; } muss in Datei Adresse.java gespeichert werden!

40 Klassen public class Adressbuch {
public static void main(String[] args) { Adresse a = new Adresse(); a.str = "Am Hubland"; a.plz = 97074; a.ort = "Wuerzburg"; System.out.print(a.str + ", " + a.plz + " " + a.ort); } public class Adresse { public String str; public int plz; public String ort; }

41 Klassen public class Adressbuch {
public static void main(String[] args) { //Instantiierung: Adresse a = new Adresse(); a.str = "Am Hubland"; a.plz = 97074; a.ort = "Wuerzburg"; System.out.print(a.str + ", " + a.plz + " " + a.ort); } public class Adresse { public String str; public int plz; public String ort; }

42 Klassen public class Adressbuch {
public static void main(String[] args) { //Instantiierung: Adresse a = new Adresse(); //Setze Attributwerte: a.str = "Am Hubland"; a.plz = 97074; a.ort = "Wuerzburg"; System.out.print(a.str + ", " + a.plz + " " + a.ort); } public class Adresse { public String str; public int plz; public String ort; }

43 Klassen public class Adressbuch {
public static void main(String[] args) { //Instantiierung: Adresse a = new Adresse(); //Setze Attributwerte: a.str = "Am Hubland"; a.plz = 97074; a.ort = "Wuerzburg"; //Ausgabe System.out.print(a.str + ", " + a.plz + " " + a.ort); } public class Adresse { public String str; public int plz; public String ort; }

44 Klassen public class Adressbuch {
public static void main(String[] args) { Adresse a = new Adresse(); a.str = "Am Hubland"; a.plz = 97074; a.ort = "Wuerzburg"; Adresse b = a; b.ort = "Nuernberg"; System.out.println(a.str + ", " + a.plz + " " + a.ort); System.out.println(b.str + ", " + b.plz + " " + b.ort); }

45 a Klassen Klassenschablone legt neue Karteikarte an:
Adresse a = new Adresse(); a.str = "Am Hubland"; a.plz = 97074; a.ort = "Wuerzburg"; Adresse b = a; b.ort = "Nuernberg"; System.out.println(a.str + ", " + a.plz + " " + a.ort); System.out.println(b.str + ", " + b.plz + " " + b.ort); Klassenschablone legt neue Karteikarte an: a str plz ort

46 a Klassen Karteikarte wird ausgefuellt: Adresse a = new Adresse();
a.str = "Am Hubland"; a.plz = 97074; a.ort = "Wuerzburg"; Adresse b = a; b.ort = "Nuernberg"; System.out.println(a.str + ", " + a.plz + " " + a.ort); System.out.println(b.str + ", " + b.plz + " " + b.ort); Karteikarte wird ausgefuellt: a str Am Hubland plz 97074 ort Wuerzburg

47 a b Klassen b zeigt auf dieselbe Instanz wie a:
Adresse a = new Adresse(); a.str = "Am Hubland"; a.plz = 97074; a.ort = "Wuerzburg"; Adresse b = a; b.ort = "Nuernberg"; System.out.println(a.str + ", " + a.plz + " " + a.ort); System.out.println(b.str + ", " + b.plz + " " + b.ort); b zeigt auf dieselbe Instanz wie a: a str Am Hubland plz 97074 b ort Wuerzburg

48 a b Klassen aktualisiere b.ort und damit auch a.ort
Adresse a = new Adresse(); a.str = "Am Hubland"; a.plz = 97074; a.ort = "Wuerzburg"; Adresse b = a; b.ort = "Nuernberg"; System.out.println(a.str + ", " + a.plz + " " + a.ort); System.out.println(b.str + ", " + b.plz + " " + b.ort); aktualisiere b.ort und damit auch a.ort a str Am Hubland plz 97074 b ort Nuernberg

49 a b Klassen Ausgabe: Am Hubland, 97074 Nuernberg
Adresse a = new Adresse(); a.str = "Am Hubland"; a.plz = 97074; a.ort = "Wuerzburg"; Adresse b = a; b.ort = "Nuernberg"; System.out.println(a.str + ", " + a.plz + " " + a.ort); System.out.println(b.str + ", " + b.plz + " " + b.ort); a str Am Hubland plz 97074 b ort Nuernberg Ausgabe: Am Hubland, Nuernberg

50 Felder und Klassen sind Referenzdatentypen!
Zusammenfassung Felder und Klassen sind Referenzdatentypen!

51 Aufgabe Erstellt ein Programm, das
zunächst ein Feld vom Typ int mit n Feldern zufällig mit Zahlen zwischen 0 und 100 füllt (verwendet zum Erzeugen der Zahlen folgenden Ausdruck: (int)(Math.random() * 101)) dieses Feld anschließend sortiert und ausgibt (Felder können in Java automatisch mithilfe der Methode Arrays.sort(int[] a) sortiert werden.) schließlich folgende Dinge bestimmt und ausgibt: den Mittelwert, den Median, das Minimum und das Maximum der Werte im Feld alle Werte die mindestens doppelt vorkommen die am häufigsten vorkommende Zahl

52 Aufgabe Erstellt eine Klasse AutoQuartettKarte, die die Attribute Name, Länge, Hubraum, Leistung und Höchstgeschwindigkeit besitzt. Erzeugt 2 Instanzen der Klasse mit beliebigen Werten und vergleicht diese in Bezug auf ein Attribut eurer Wahl. Gebt den Namen der besseren Karte aus.

53 Aufgabe ZUSATZ: Erstellt ein Programm, das alle Primzahlen im Intervall 1 bis 100 ermittelt und ausgibt. Das Programm soll das Sieb des Eratosthenes implementieren: In einem Feld mit 100 Zellen entspricht jede Zelle einer Zahl. Es werden alle Zellen markiert, deren Zahl ein Vielfaches von 2, 3, 4,… ist. Die Zahlen der nicht markierten Zellen werden ausgeben. Hinweis: Versucht euch zunächst auf einem Blatt Papier manuell an dem Algorithmus!


Herunterladen ppt "Programmiervorkurs WS 2014 Referenzdatentypen"

Ähnliche Präsentationen


Google-Anzeigen