ProInformatik III: Objektorientierte Programmierung ...bluej.org/oop/day09.pdf · •Füllen Sie ein Array mit der Fibonacci-Folge. int[] fib = new int[100]; fib[0] = 0; fib[1] =

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.