brückenkurs programmieren - tag 4: arrayscslz90/kurse/bk1920/folien/bk04-arrays.pdf ·...

50
Brückenkurs Programmieren Tag 4: Arrays Christopher Schölzel Technische Hochschule Mittelhessen 5. September 2019

Upload: others

Post on 19-Oct-2019

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Brückenkurs ProgrammierenTag 4: Arrays

Christopher SchölzelTechnische Hochschule Mittelhessen5. September 2019

Page 2: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Inhalt

Arrays

Wert- vs ReferenzsemantikEinleitung

Nachmittag: Java-Objekte erstellen und verwenden

2 / 23

Page 3: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Inhalt

Arrays

Wert- vs ReferenzsemantikEinleitung

Nachmittag: Java-Objekte erstellen und verwenden

3 / 23

Page 4: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Arrays

AufgabeFinde die Quadrate aller Zahlen von 1 bis 100.

int q1,q2,q3,q4, ... , q100;for(int i = 1; i <= 100; i++) {if (i == 1) { q1 = i*i; }else if (i == 2) { q2 = i*i; }...else if (i == 99) { q99 = i*i; }else { q100 = i*i; }

}

⇒ wir brauchen einen Datentyp, derI mehrere Werte speichern kannI adressierbar ist (z.B. über einen Index)

4 / 23

Page 5: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Arrays

AufgabeFinde die Quadrate aller Zahlen von 1 bis 100.

int q1,q2,q3,q4, ... , q100;for(int i = 1; i <= 100; i++) {

if (i == 1) { q1 = i*i; }else if (i == 2) { q2 = i*i; }...else if (i == 99) { q99 = i*i; }else { q100 = i*i; }

}

⇒ wir brauchen einen Datentyp, derI mehrere Werte speichern kannI adressierbar ist (z.B. über einen Index)

4 / 23

Page 6: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Arrays

AufgabeFinde die Quadrate aller Zahlen von 1 bis 100.

int q1,q2,q3,q4, ... , q100;for(int i = 1; i <= 100; i++) {

if (i == 1) { q1 = i*i; }else if (i == 2) { q2 = i*i; }...else if (i == 99) { q99 = i*i; }else { q100 = i*i; }

}

⇒ wir brauchen einen Datentyp, derI mehrere Werte speichern kannI adressierbar ist (z.B. über einen Index)

4 / 23

Page 7: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Arrays

AufgabeFinde die Quadrate aller Zahlen von 1 bis 100.

int q1,q2,q3,q4, ... , q100;for(int i = 1; i <= 100; i++) {

if (i == 1) { q1 = i*i; }else if (i == 2) { q2 = i*i; }...else if (i == 99) { q99 = i*i; }else { q100 = i*i; }

}

⇒ wir brauchen einen Datentyp, derI mehrere Werte speichern kannI adressierbar ist (z.B. über einen Index)

4 / 23

Page 8: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Arrays

AufgabeFinde die Quadrate aller Zahlen von 1 bis 100.

int q1,q2,q3,q4, ... , q100;for(int i = 1; i <= 100; i++) {

if (i == 1) { q1 = i*i; }else if (i == 2) { q2 = i*i; }...else if (i == 99) { q99 = i*i; }else { q100 = i*i; }

}

⇒ wir brauchen einen Datentyp, derI mehrere Werte speichern kannI adressierbar ist (z.B. über einen Index)

4 / 23

Page 9: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Arrays: Definition, Datentyp, Adressierung

DefinitionEin Array ist ein Datentyp, der mehrere Werte vom gleichen Typ enthält.Die Werte werden über einen ganzzahligen Index adressiert (beginnendmit Index 0).

Arraytyp: SyntaxElementtyp[]

Arraytyp: Beispieledouble[]int[]String[]

Arrayadressierung: SyntaxvariablenName[index]

Arrayadressierung: BeispieledoubleArray[0]doubleArray[1]doubleArray[i+1]

5 / 23

Page 10: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Array als Regal

6 / 23

Page 11: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Array als Regal

6 / 23

Page 12: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Array als Regal

6 / 23

Page 13: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Arrays: Erzeugung

Variante 1: Syntaxnew Elementtyp[Anzahl]

Variante 1: Beispielenew int[17]new double[8]new String[i+1]

Variante 2: Syntaxnew Elementtyp[]{Element1,Element2, ...

}

Variante 2: Beispielenew int[]{ 1, 1, 2, 3, 5 }new double[]{3.1416, 2.7183}new String[]{"Mr. "+name,"Ms. "+name

}

7 / 23

Page 14: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Arrays: Erzeugung

Variante 1: Syntaxnew Elementtyp[Anzahl]

Variante 1: Beispielenew int[17]new double[8]new String[i+1]

Variante 2: Syntaxnew Elementtyp[]{Element1,Element2, ...

}

Variante 2: Beispielenew int[]{ 1, 1, 2, 3, 5 }new double[]{3.1416, 2.7183}new String[]{"Mr. "+name,"Ms. "+name

}

7 / 23

Page 15: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Arrays: Beispiel fester Länge

AufgabeSpeichere die Farbe THM-Grün (128, 186, 36) in einem Array von dreiint s und gib sie dann im Hexadezimalformat aus.

int[] thmGreen = new int[3]; /* neues Array mit 3 ints anlegen */thmGreen[0] = 128; /* Rotkanal setzen */thmGreen[1] = 186; /* Grünkanal setzen */thmGreen[2] = 36; /* Blaukanal setzen */System.out.println(

Integer.toString(thmGreen[0], 16) /* Rot als Hex */+ Integer.toString(thmGreen[1], 16) /* Grün als Hex */+ Integer.toString(thmGreen[2], 16) /* Blau als Hex */

);

8 / 23

Page 16: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Arrays: Beispiel fester Länge

AufgabeSpeichere die Farbe THM-Grün (128, 186, 36) in einem Array von dreiint s und gib sie dann im Hexadezimalformat aus.

int[] thmGreen = new int[3]; /* neues Array mit 3 ints anlegen */thmGreen[0] = 128; /* Rotkanal setzen */thmGreen[1] = 186; /* Grünkanal setzen */thmGreen[2] = 36; /* Blaukanal setzen */System.out.println(

Integer.toString(thmGreen[0], 16) /* Rot als Hex */+ Integer.toString(thmGreen[1], 16) /* Grün als Hex */+ Integer.toString(thmGreen[2], 16) /* Blau als Hex */

);

8 / 23

Page 17: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Arrays: Beispiel fester Länge

AufgabeSpeichere die Farbe THM-Grün (128, 186, 36) in einem Array von dreiint s und gib sie dann im Hexadezimalformat aus.

int[] thmGreen = new int[3]; /* neues Array mit 3 ints anlegen */thmGreen[0] = 128; /* Rotkanal setzen */thmGreen[1] = 186; /* Grünkanal setzen */thmGreen[2] = 36; /* Blaukanal setzen */System.out.println(

Integer.toString(thmGreen[0], 16) /* Rot als Hex */+ Integer.toString(thmGreen[1], 16) /* Grün als Hex */+ Integer.toString(thmGreen[2], 16) /* Blau als Hex */

);

8 / 23

Page 18: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Arrays: Beispiel fester Länge

AufgabeSpeichere die Farbe THM-Grün (128, 186, 36) in einem Array von dreiint s und gib sie dann im Hexadezimalformat aus.

int[] thmGreen = new int[3]; /* neues Array mit 3 ints anlegen */thmGreen[0] = 128; /* Rotkanal setzen */thmGreen[1] = 186; /* Grünkanal setzen */thmGreen[2] = 36; /* Blaukanal setzen */System.out.println(

Integer.toString(thmGreen[0], 16) /* Rot als Hex */+ Integer.toString(thmGreen[1], 16) /* Grün als Hex */+ Integer.toString(thmGreen[2], 16) /* Blau als Hex */

);

8 / 23

Page 19: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Aufgabe: Steigungsdreieck

1. Speichere den Punkt (0, 5) in einem int -Array namens p1 .2. Speichere den Punkt (3, 11) in einem int -Array namens p2 .3. Berechne die Steigung zwischen p1 und p2 mit der folgenden Formel.

Steigung zwischen (x1, y1) und (x2, y2) =y2 − y1x2 − x1

Bonus: Verpacke deinen Code in eine Funktion, die zwei int -Arraysübernimmt und die Steigung als double zurückgibt.

9 / 23

Page 20: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Arrays: Beispiel variabler Länge

AufgabeFinde die Quadrate aller Zahlen von 1 bis 100.

int[] sq = new int[100];for(int i = 0; i < sq.length; i++) {sq[i] = (i+1)*(i+1);

}System.out.println(sq[7]);

1. Erzeuge ein Array von 100 Ganzzahlen.

2. Fülle das Array mit Quadratzahlen.I Index 0: 12

I Index 1: 22

I Index 2: 32

I ...3. Test: Gib das Element an Index 7 aus.

10 / 23

Page 21: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Arrays: Beispiel variabler Länge

AufgabeFinde die Quadrate aller Zahlen von 1 bis 100.

int[] sq = new int[100];for(int i = 0; i < sq.length; i++) {sq[i] = (i+1)*(i+1);

}System.out.println(sq[7]);

1. Erzeuge ein Array von 100 Ganzzahlen.

2. Fülle das Array mit Quadratzahlen.I Index 0: 12

I Index 1: 22

I Index 2: 32

I ...3. Test: Gib das Element an Index 7 aus.

10 / 23

Page 22: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Arrays: Beispiel variabler Länge

AufgabeFinde die Quadrate aller Zahlen von 1 bis 100.

int[] sq = new int[100];for(int i = 0; i < sq.length; i++) {sq[i] = (i+1)*(i+1);

}System.out.println(sq[7]);

1. Erzeuge ein Array von 100 Ganzzahlen.2. Fülle das Array mit Quadratzahlen.

I Index 0: 12

I Index 1: 22

I Index 2: 32

I ...

3. Test: Gib das Element an Index 7 aus.

10 / 23

Page 23: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Arrays: Beispiel variabler Länge

AufgabeFinde die Quadrate aller Zahlen von 1 bis 100.

int[] sq = new int[100];for(int i = 0; i < sq.length; i++) {sq[i] = (i+1)*(i+1);

}System.out.println(sq[7]);

1. Erzeuge ein Array von 100 Ganzzahlen.2. Fülle das Array mit Quadratzahlen.

I Index 0: 12

I Index 1: 22

I Index 2: 32

I ...

3. Test: Gib das Element an Index 7 aus.

10 / 23

Page 24: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Arrays: Beispiel variabler Länge

AufgabeFinde die Quadrate aller Zahlen von 1 bis 100.

int[] sq = new int[100];for(int i = 0; i < sq.length; i++) {sq[i] = (i+1)*(i+1);

}System.out.println(sq[7]);

1. Erzeuge ein Array von 100 Ganzzahlen.2. Fülle das Array mit Quadratzahlen.

I Index 0: 12

I Index 1: 22

I Index 2: 32

I ...3. Test: Gib das Element an Index 7 aus.

10 / 23

Page 25: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Arrays: Beispiel variabler Länge

AufgabeFinde die Quadrate aller Zahlen von 1 bis 100.

int[] sq = new int[100];for(int i = 0; i < sq.length; i++) {sq[i] = (i+1)*(i+1);

}System.out.println(sq[7]);

1. Erzeuge ein Array von 100 Ganzzahlen.2. Fülle das Array mit Quadratzahlen.

I Index 0: 12

I Index 1: 22

I Index 2: 32

I ...3. Test: Gib das Element an Index 7 aus.

10 / 23

Page 26: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Aufgabe: Zinseszinsen

1. Erstelle ein Array von 100 Fließkommazahlen.2. Schreibe den Wert 1000 an die erste Stelle des Arrays.3. Fülle das restliche Array, indem du immer den Wert des vorherigen

Elements mit 1.01 multiplizierst.

Erinnerung: Arraydefinition und -zugriff

int[] ar = new int[10]; // Erzeugen/Definierenar[3] = 10; // BeschreibenSystem.out.println(ar[0]); // Auslesenint l = ar.length; // Länge ermitteln

Bonus: Finde heraus, nach wie viel Schritten der Ursprungswert sichverdoppelt hat. Benutze dazu zuerst eine Schleife und finde dann einebessere Methode.

11 / 23

Page 27: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Aufgabe: Zinseszinsen

1. Erstelle ein Array von 100 Fließkommazahlen.2. Schreibe den Wert 1000 an die erste Stelle des Arrays.3. Fülle das restliche Array, indem du immer den Wert des vorherigen

Elements mit 1.01 multiplizierst.

Erinnerung: Arraydefinition und -zugriff

int[] ar = new int[10]; // Erzeugen/Definierenar[3] = 10; // BeschreibenSystem.out.println(ar[0]); // Auslesenint l = ar.length; // Länge ermitteln

Bonus: Finde heraus, nach wie viel Schritten der Ursprungswert sichverdoppelt hat. Benutze dazu zuerst eine Schleife und finde dann einebessere Methode.

11 / 23

Page 28: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Mehrdimensionale Arrays

Frage: Was hält uns davon ab, den Typ int[][] zu verwenden?

Antwort: Gar nichts.

Beispiel

int[][] ar = new int[][]{new int[]{1, 2, 3},new int[]{4, 5, 6},new int[]{7, 8, 9}

};for(int row=0; row < ar.length; row++) {

for(int column=0; column < ar[row].length; column++) {System.out.println(ar[row][column]);

}}

12 / 23

Page 29: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Mehrdimensionale Arrays

Frage: Was hält uns davon ab, den Typ int[][] zu verwenden?

Antwort: Gar nichts.

Beispiel

int[][] ar = new int[][]{new int[]{1, 2, 3},new int[]{4, 5, 6},new int[]{7, 8, 9}

};for(int row=0; row < ar.length; row++) {

for(int column=0; column < ar[row].length; column++) {System.out.println(ar[row][column]);

}}

12 / 23

Page 30: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Mehrdimensionale Arrays

Frage: Was hält uns davon ab, den Typ int[][] zu verwenden?

Antwort: Gar nichts.

Beispiel

int[][] ar = new int[][]{new int[]{1, 2, 3},new int[]{4, 5, 6},new int[]{7, 8, 9}

};for(int row=0; row < ar.length; row++) {

for(int column=0; column < ar[row].length; column++) {System.out.println(ar[row][column]);

}}

12 / 23

Page 31: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Mehrdimensionale Arrays

Frage: Was hält uns davon ab, den Typ int[][] zu verwenden?

Antwort: Gar nichts.

Beispiel

int[][] ar = new int[][]{new int[]{1, 2, 3},new int[]{4, 5, 6},new int[]{7, 8, 9}

};for(int row=0; row < ar.length; row++) {

for(int column=0; column < ar[row].length; column++) {System.out.println(ar[row][column]);

}}

12 / 23

Page 32: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Mehrdimensionale Arrays

Frage: Was hält uns davon ab, den Typ int[][] zu verwenden?

Antwort: Gar nichts.

Beispiel

int[][] ar = new int[][]{new int[]{1, 2, 3},new int[]{4, 5, 6},new int[]{7, 8, 9}

};for(int row=0; row < ar.length; row++) {

for(int column=0; column < ar[row].length; column++) {System.out.println(ar[row][column]);

}}

12 / 23

Page 33: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Arraydefinition: Kurzschreibweise

Langschreibweise

int[][] ar = new int[][]{new int[]{1, 2, 3},new int[]{4, 5, 6},new int[]{7, 8, 9}

};

Kurzschreibweise

int[][] ar = {{1, 2, 3},{4, 5, 6},{7, 8, 9}

};

Achtung: Das funktioniert nur innerhalb einer Variablendefinition, nichtwenn das Array später neu zugewiesen wird.

13 / 23

Page 34: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Aufgabe: ASCII-ArtSchreibe eine Funktion printAscii , die ein zweidimensionales Array vomTyp char[][] als „Bild“ auf der Konsole ausgibt.

Beispiel

jshell> char[][] image = {{ '\\', 'o' ,'/' },{ ' ', '|' ,' ' },{ '/', ' ', '\\' }

};jshell> printAscii(image);\o/|/ \

Bonus: Schaffst Du das auch mit einem eindimensionalen Array?

14 / 23

Page 35: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Aufgabe: ASCII-ArtSchreibe eine Funktion printAscii , die ein zweidimensionales Array vomTyp char[][] als „Bild“ auf der Konsole ausgibt.

Beispiel

jshell> char[][] image = {{ '\\', 'o' ,'/' },{ ' ', '|' ,' ' },{ '/', ' ', '\\' }

};jshell> printAscii(image);\o/|/ \

Bonus: Schaffst Du das auch mit einem eindimensionalen Array?

14 / 23

Page 36: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Inhalt

Arrays

Wert- vs ReferenzsemantikEinleitung

Nachmittag: Java-Objekte erstellen und verwenden

15 / 23

Page 37: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Wert- vs Referenzsemantik

Erinnerung

Java unterscheidet zwischen primitiven Typen (z.B. int ) undReferenztypen (Arrays und Klassen).

Frage: Produzieren die beiden folgenden Codestücke die gleiche Ausgabe?

int a = 3;int b;b = a;b = 4;System.out.println(a);

int[] a = new int[2];a[0] = 3;int[] b;b = a;b[0] = 4;System.out.println(a[0]);

16 / 23

Page 38: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Wertsemantik bei primitiven Typen

int a = 3;

int b;

b = a;

b = 4;

17 / 23

Page 39: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Wertsemantik bei primitiven Typen

int a = 3;

int b;

b = a;

b = 4;

17 / 23

Page 40: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Wertsemantik bei primitiven Typen

int a = 3;

int b;

b = a;

b = 4;

17 / 23

Page 41: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Wertsemantik bei primitiven Typen

int a = 3;

int b;

b = a;

b = 4;

17 / 23

Page 42: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Referenzsemantik bei Referenztypen

int[] a = new int[2];a[0] = 3;

int[] b;

b = a;

b[0] = 4;

18 / 23

Page 43: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Referenzsemantik bei Referenztypen

int[] a = new int[2];a[0] = 3;

int[] b;

b = a;

b[0] = 4;

18 / 23

Page 44: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Referenzsemantik bei Referenztypen

int[] a = new int[2];a[0] = 3;

int[] b;

b = a;

b[0] = 4;

18 / 23

Page 45: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Referenzsemantik bei Referenztypen

int[] a = new int[2];a[0] = 3;

int[] b;

b = a;

b[0] = 4;

18 / 23

Page 46: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Wert- vs Referenzsemantik: Zusammenfassung

Der Inhalt von Variablen unterscheidet sich je nach dem, welchen Typ dieVariable hat.

I primitiver Typ: Variable enthält WertI bei Zuweisung wird der Wert direkt kopiert

I Referenztyp: Variable enthält Referenz bzw. ZeigerI verweist auf Speicherstelle an der die Daten liegenI bei Zuweisung wird nur die Referenz kopiertI die Daten bleiben die selben

19 / 23

Page 47: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Wert- vs Referenzsemantik: Übungsaufgabe

Gemeinsam an der Tafel: Was steht im Speicher, wenn der folgende Codeausgeführt wurde?

float[] ypos;float[] xpos;

ypos = new float[]{100, 150, 200};xpos = ypos;

float x = xpos[1];x *= 2;ypos[1] += 1;

20 / 23

Page 48: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Zusammenfassung

Arrays: Erzeugung

double[] dar = new double[4];int[] iar = new int[]{1,3};int[] iar2 = {7, 8, 1};

Arrays: Zugriff

dar[0] = 1.8;iar[1] = iar[0]+1;int l = iar.length;

Mehrdimensionale Arrays

int[][] matrix = {{1, 2, 3},{4, 5, 6},{7, 8, 9}

}matrix[0][2] = 0; // 3 -> 0

21 / 23

Page 49: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Inhalt

Arrays

Wert- vs ReferenzsemantikEinleitung

Nachmittag: Java-Objekte erstellen und verwenden

22 / 23

Page 50: Brückenkurs Programmieren - Tag 4: Arrayscslz90/kurse/bk1920/folien/bk04-Arrays.pdf · Arrays:BeispielfesterLänge Aufgabe SpeicheredieFarbeTHM-Grün(128,186,36)ineinemArrayvondrei

Mögliche Themen zur Besprechung am Nachmittag

Java-Objekte verwendenI Wie erstelle ich eine Variable vom Typ Random , Scanner oder

StringBuilder ?I Was heißt null ?I Was macht der Operator . ?I Wie finde ich heraus, was ein Objekt von einem bestimmten Typ kann?

23 / 23