Schleifen und Arrays

Was du heute lernst:

  • Die verschiedenen Schleifentypen (for, while, do-while) situationsgerecht auswählen und anwenden.
  • Daten in Arrays strukturieren und effizient über Indizes darauf zugreifen.
  • Algorithmen entwickeln, die Datensammlungen automatisiert verarbeiten.

Schleifen

Programme gewinnen ihre Mächtigkeit vor allem durch zwei Konzepte: Die Fähigkeit, Aufgaben milliardenfach zu wiederholen (Schleifen), und die Möglichkeit, große Mengen zusammengehöriger Daten effizient zu verwalten (Arrays).

Merksatz: Schleifen ermöglichen die wiederholte Ausführung von Codeblöcken, während Arrays als Container für mehrere Werte desselben Typs dienen.

Schleifen (Loops) im Vergleich

Schleifentyp Besonderheit Typischer Einsatzfall
forZählergesteuertBekannte Anzahl an Wiederholungen.
for-eachIteratorgesteuertDurchlaufen von Arrays oder Sammlungen.
whileKopfgesteuertWiederholung solange Bedingung wahr ist.
do-whileFußgesteuertCodeblock wird mindestens einmal ausgeführt.

Code-Beispiele der Schleifen

for-Schleife

Ideal für eine feste Anzahl von Wiederholungen.

for (initialisierung; bedingung; aktualisierung) {
    // Code, der wiederholt ausgeführt wird
}

Erweiterte for-Schleife (for-each Loop)

Vereinfacht das Iterieren über Arrays. Liest jedes Element einmal aus.

for (Typ elementVariable : sammlung) {
    // Code, der für jedes Element ausgeführt wird
}

while-Schleife

Die Bedingung wird vor jeder Ausführung des Codeblocks geprüft.

while (bedingung) {
    // Code, der wiederholt ausgeführt wird
}

do-while-Schleife

Der Codeblock wird mindestens einmal ausgeführt, da die Bedingung nach der Ausführung geprüft wird.

do {
    // Code, der mindestens einmal ausgeführt wird
} while (bedingung);

Datenstrukturen

Merksatz: Komplexe Datenstrukturen sind mehrdimensionale oder verschachtelte Konstrukte, die über primitive Grundtypen hinausgehen. Sie ermöglichen die effiziente Speicherung, Organisation und Verarbeitung von Daten durch dynamische Sammlungen wie Listen, Bäume, Graphen oder Hashstrukturen und erlauben so komplexe Algorithmen und optimierte Datenverwaltung.

Arrays

Arrays sind geordnete, gleichgroße Sammlungen von Elementen desselben Datentyps. Sie haben eine feste Größe, die bei der Initialisierung festgelegt wird.

Deklaration und Initialisierung

// Deklaration
int[] zahlen;
String[] namen;

// Initialisierung mit fester Größe (Standardwerte)
zahlen = new int[5]; // Array für 5 ganze Zahlen, initialisiert mit 0

// Deklaration und Initialisierung mit Werten
String[] fruechte = {"Apfel", "Banane", "Kirsche"};
double[] werte = new double[]{1.1, 2.2, 3.3};

Zugriff auf Array-Elemente

Elemente werden über ihren Index angesprochen, der bei 0 beginnt.

int erstesElement = zahlen[0];
fruechte[1] = "Birne"; // Ändert das zweite Element
int anzahlFruechte = fruechte.length; // Länge des Arrays

Mehrdimensionale Arrays

Arrays von Arrays, oft verwendet zur Darstellung von Matrizen oder Tabellen.

int[][] matrix = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};
int element = matrix[1][2]; // Zugriff auf das Element in der 2. Zeile, 3. Spalte (Wert ist 6)

Praxisbeispiel

public class SchleifenUndArrays {
    public static void main(String[] args) {
        // Beispiel: Array von Noten und for-Schleife
        int[] noten = {2, 1, 3, 2, 4, 1, 5};
        int summeNoten = 0;

        System.out.println("Alle Noten:");
        for (int i = 0; i < noten.length; i++) {
            System.out.println("Note an Index " + i + ": " + noten[i]);
            summeNoten += noten[i];
        }
        System.out.println("Durchschnittsnote: " + (double) summeNoten / noten.length);

        System.out.println("\nNoten über 2.0 (for-each-Schleife):");
        for (int note : noten) {
            if (note <= 2) {
                System.out.println(note);
            }
        }

        // Beispiel: while-Schleife mit Countdown
        int countdown = 3;
        System.out.println("\nCountdown:");
        while (countdown > 0) {
            System.out.println(countdown + "...");
            countdown--;
        }
        System.out.println("Start!");

        // Beispiel: do-while-Schleife (Eingabevalidierung, hier simuliert)
        boolean inputGueltig = false;
        int versuch = 0;
        do {
            versuch++;
            System.out.println("\nVersuch " + versuch + ": Eingabe prüfen...");
            if (versuch == 2) { // Simulieren einer gültigen Eingabe im 2. Versuch
                inputGueltig = true;
            }
        } while (!inputGueltig && versuch < 3);

        if (inputGueltig) {
            System.out.println("Eingabe erfolgreich nach " + versuch + " Versuchen.");
        } else {
            System.out.println("Eingabe fehlgeschlagen.");
        }
    }
}

Offene Fragen / Vertiefung

  • Welche Vor- und Nachteile haben die verschiedenen Schleifentypen (for, while, do-while, for-each) und wann sollte man welche bevorzugt einsetzen?
  • Wie können Arrays dynamisch in ihrer Größe angepasst werden (Stichwort: ArrayList)?
  • Welche Alternativen zu Arrays gibt es in Java für die Speicherung von Datensammlungen (z.B. List, Set, Map) und wann sind diese sinnvoller?
  • Wie geht man mit dem Zugriff auf Array-Elemente um, wenn der Index außerhalb der Array-Grenzen liegt (ArrayIndexOutOfBoundsException)?
  • Untersuche die Verwendung von Arrays mit Referenzdatentypen (z.B. ein Array von String-Objekten oder eigenen Klassenobjekten).

Übungsaufgabe: Schleifen und Arrays in Java anwenden

Aufgabenstellung:

  1. Erstelle ein Java-Programm, das ein Array von 5 Ganzzahlen (int[] zahlen = {10, 25, 12, 30, 15};) deklariert und initialisiert.
  2. Gib alle Elemente des Arrays mit einer for-Schleife auf der Konsole aus.
  3. Verwende eine erweiterte for-Schleife (for-each), um die Summe aller geraden Zahlen in diesem Array zu berechnen und das Ergebnis auszugeben.
  4. Implementiere eine while-Schleife, die einen Countdown von 10 bis 1 auf der Konsole anzeigt.

Hinweise zur Lösung: Achte auf korrekte Array-Deklaration und -Initialisierung. Für die Summe der geraden Zahlen verwende den Modulo-Operator (%). Stelle sicher, dass die Schleifen korrekt terminiert werden und keine Endlosschleifen entstehen.

Schwierigkeitsgrad: mittel

Erwartete Bearbeitungszeit: 45 Minuten


Meine Java-Schleifenkompetenz:

  • Ich beherrsche verschiedene Schleifentypen in Java und wähle die passende für jede Programmieraufgabe.
  • Ich arbeite sicher mit Arrays und kann deren Elemente effizient durchlaufen und manipulieren.
  • Ich verstehe die Unterschiede zwischen for-, while- und do-while-Schleifen in der Praxis.

💡 Profi-Tipp: Optimiere Schleifenstrukturen, um deinen Code lesbarer und performanter zu gestalten.


Nächster Schritt

Programmieren bedeutet auch Fehlersuche. Wir lernen nun, wie wir unseren Code systematisch testen und dokumentieren.

Weiter zu: Test und Dokumentation →