If you can't read please download the document
Upload
truongkiet
View
216
Download
0
Embed Size (px)
Citation preview
Objektsammlungen:
Arrays(und die for-Schleife)
ProInformatik III: Objektorientierte Programmierung, David J. Barnes, Michael Klling
Sammlungen fester Gre
Manchmal ist die Gre der Sammlung im Voraus bekannt. Programmiersprachen bieten meist
einen speziellen Typ fr Sammlungen fester Gre: ein array. Java arrays knnen Objekte oder
primitive Typen speichern. Arrays haben eine besondere Syntax.
ProInformatik III: Objektorientierte Programmierung, David J. Barnes, Michael Klling
Das Piano-Szenario
Ein Bildschirmklavier (besteht hauptschlich aus einigen Tasten).
ProInformatik III: Objektorientierte Programmierung, David J. Barnes, Michael Klling
Eine normale Stringvariable
"Fred"String name
String name;name = Fred;
ProInformatik III: Objektorientierte Programmierung, David J. Barnes, Michael Klling
Ein String-Array
String[] names;names = new String[12];
String [] names
String[ ]
"a"
0
"b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l"
1 2 3 4 5 6 7 8 9 10 11
ProInformatik III: Objektorientierte Programmierung, David J. Barnes, Michael Klling
Array-Literale
String [] names
String[ ]
"a"
0
"b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l"
1 2 3 4 5 6 7 8 9 10 11
String[] names = { a,b,c,d,e,f,g,h,i,j,k,l};
ProInformatik III: Objektorientierte Programmierung, David J. Barnes, Michael Klling
Array-Literale
private int[] numbers = { 3, 15, 4, 5 };
System.out.println(numbers[i]);
Array-Literale knnen nur in Initialisierungen verwendet werden.
Deklaration und Initialisierung
ProInformatik III: Objektorientierte Programmierung, David J. Barnes, Michael Klling
Arraylnge
private int[] numbers = { 3, 15, 4, 5 };
int n = numbers.length;
Beachte: length ist keine Methode!!
keine Klammern!
ProInformatik III: Objektorientierte Programmierung, David J. Barnes, Michael Klling
Verwendung von Arrays
Zugriff auf Arrayelemente mit eckigen Klammern: names[...]
Elemente knnen wie andere Variablen benutzt werden. Auf der linken Seite einer Zuweisung:
names[i] = ...;
In einem Ausdruck:filename = names[i] + .wav;
ProInformatik III: Objektorientierte Programmierung, David J. Barnes, Michael Klling
Arrayelemente zuweisen
String[] names;names = new String[12];names[2] = c;
String [] names
String[ ]
"a"
0
"b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l"
1 2 3 4 5 6 7 8 9 10 11
ProInformatik III: Objektorientierte Programmierung, David J. Barnes, Michael Klling
Arrayelemente lesen
String keyname;keyname = names[3];
String [] names
String[ ]
"a"
0
"b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l"
1 2 3 4 5 6 7 8 9 10 11
ProInformatik III: Objektorientierte Programmierung, David J. Barnes, Michael Klling
Zuweisung und Zugriff
names[2] = c;names[i] = x;
String element = names[4];String otherElement = names[i];
ProInformatik III: Objektorientierte Programmierung, David J. Barnes, Michael Klling
Standardnutzung von Arraysprivate int[] hourCounts;private String[] names;
... names = new String[12];
...
hourcounts[i] = 0;hourcounts[i]++;System.out.println(hourcounts[i]);
Declaration
Erzeugung
Benutzung
ProInformatik III: Objektorientierte Programmierung, David J. Barnes, Michael Klling
Zeit zum Programmieren
ProInformatik III: Objektorientierte Programmierung, David J. Barnes, Michael Klling
Die for-Schleife
Es gibt zwei Variationen der for-Schleife, for-each und for.
Die for-Schleife wird oft benutzt, um eine feste Anzahl von Iterationen durchzufhren. Oft mit einer Variablen, die sich bei
jeden Iteration um einen festen Betrag ndert.
ProInformatik III: Objektorientierte Programmierung, David J. Barnes, Michael Klling
For-Schleife Pseudocode
for(initialisierung; bedingung; post-rumpf-aktion) { Schleifenrumpf}
Standardform einer for-Schleife
quivalente while-Schleife
initialisierung;while(bedingung) { Schleifenrumpf post-rumpf-aktion}
ProInformatik III: Objektorientierte Programmierung, David J. Barnes, Michael Klling
Ein Java-Beispiel
for(int hour = 0; hour < hourCounts.length; hour++) { System.out.println(hour + ": " + hourCounts[hour]);}
int hour = 0;while(hour < hourCounts.length) { System.out.println(hour + ": " + hourCounts[hour]); hour++;}
for-Schleifen-Version
while -Schleifen-Version
ProInformatik III: Objektorientierte Programmierung, David J. Barnes, Michael Klling
bung
Ein Array ist gegeben. Geben Sie alle Zahlen aus diesem Array aus. Benutzen Sie eine for-Schleife.
int[] numbers = { 4, 1, 22, 9, 14, 3, 9};
for ...
ProInformatik III: Objektorientierte Programmierung, David J. Barnes, Michael Klling
bung
Fllen Sie ein Array mit der Fibonacci-Folge.
int[] fib = new int[100];
fib[0] = 0;fib[1] = 1;
for ...
0 1 1 2 3 5 8 13 21 34 ...
ProInformatik III: Objektorientierte Programmierung, David J. Barnes, Michael Klling
For-Schleife mit grerem Schritt
// Print multiples of 3 that are below 40.
for(int num = 3; num < 40; num = num + 3) {
System.out.println(num);
}
ProInformatik III: Objektorientierte Programmierung, David J. Barnes, Michael Klling
Zusammenfassung
Arrays sind ntzlich, wenn eine Sammlung mit fester Gre gebraucht wird. Arrays haben eine besondere Syntax. For-Schleifen bieten eine Alternative zu while-Schleifen, wenn die Anzahl der Iterationen bekannt ist. For-Schleifen werden benutzt, wenn
eine Indexvariable gebraucht wird.