Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Programmiervorkurs WS 2014 Referenzdatentypen Termin 4.

Ähnliche Präsentationen


Präsentation zum Thema: "Programmiervorkurs WS 2014 Referenzdatentypen Termin 4."—  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: for (int i = 0; i < mo.length; i++) { System.out.println("Mo " + i + " Uhr: " + mo[i]); }

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

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: for (int i = 0; i < mo.length; i++) { 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: for (int i = 0; i < mo.length; i++) { 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 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 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 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 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); } Der Wert von i ist: 3 Der Wert von j ist: 6 Ausgabe: i behält also seinen ursprünglichen Wert.

16 Felder Referenzen 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 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 Felder Referenzen int[] i = {3}; int[] j = i; j[0] = 2 * j[0]; 3 zeigt auf i ist eine Referenzvariable: i

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

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

21 Felder Referenzen int[] i = {3}; int[] j = i; j[0] = 2 * j[0]; 6 zeigt auf 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 i j

22 Felder Referenzen 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 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]; erste Dimension (Anzahl Zeilen) zweite Dimension (Anzahl Spalten) 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 mit0

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 mit0

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; x x[0] x[1] x[2]

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. public class Adresse { public String str; //der Strassenname public int plz; //die Postleitzahl public String ort; //der Ortsname } 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:

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

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

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

40 Klassen public class Adresse { public String str; public int plz; public String ort; } 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); }

41 Klassen public class Adresse { public String str; public int plz; public String ort; } 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); }

42 Klassen public class Adresse { public String str; public int plz; public String ort; } 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); }

43 Klassen public class Adresse { public String str; public int plz; public String ort; } 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); }

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 Klassen 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 plz ort Klassenschablone legt neue Karteikarte an:

46 Klassen 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 plz ort Am Hubland Wuerzburg Karteikarte wird ausgefuellt:

47 Klassen 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 plz ort b Am Hubland Wuerzburg b zeigt auf dieselbe Instanz wie a :

48 Klassen 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 plz ort b Am Hubland Nuernberg aktualisiere b.ort und damit auch a.ort

49 Klassen 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); Ausgabe: a str plz ort b Am Hubland Nuernberg Am Hubland, Nuernberg

50 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 Termin 4."

Ähnliche Präsentationen


Google-Anzeigen