MezData-Logo

Übungen zu Schleifen

For-Schleife umwandeln

Wandeln Sie folgenden Quelltext in eine While-Schleife um, lösen Sie dabei die Java-Abkürzungen (z.B. n++) in einfache Ausdrücke (z.B. n=n+1) auf.

Erstellen Sie von der While-Schleifen-Lösung ein Struktogramm! Lösung..

Welche Ausgabe(n) erzeugt die Methode? 1 3 6 10

static void aufg1(){
  int n, s=0;
  for(n=1; n<=4; n++) System.out.print((s+=n)+" "); 
}

Welche Auswirkung hat der Modifizierer static, warum ist er hier sinnvoll? Es muss kein Objekt erzeugt werden um die Methode zu verwenden.

For-Schleife umwandeln

Wandeln Sie folgenden Quelltext in eine While-Schleife um, lösen Sie dabei die Java-Abkürzungen (z.B. n++) in einfache Ausdrücke (z.B. n=n+1) auf.

static void aufg2(){
  int n, s=1;
  for(n=2; n<=5; System.out.print((s*=n++)+" "));
}

Erstellen Sie von der While-Schleifen-Lösung ein Struktogramm! Lösung..

Welche Ausgabe(n) erzeugt die Methode? 2 6 24 120

Lösung anzeigen..

Programm Analyse (for mit break)

Erstellen Sie für folgende Methode ein Struktogramm! Lösung..

static void abreak(){
  int[] a = new int[10];
  int i=0;
  do{
    a[i]=(i+1)%5;
    i++;
  }while(i<7);
  // nun die Tabelle ausfüllen
  for(i=0; i<10; i+=2){
    System.out.print((a[i]*2.0)+" ");
    if (a[i]==0) break;
  } // welche Ausgabe erzeugt die for-schleife? 
}

Füllen Sie die Listen-Tabelle aus.

Welche Ausgabe erzeugt das Programm? 2.0 6.0 0.0

Aufgabenteil 2.
Element Speicher-Inhalt
a[0]  
a[1]  
a[2]  
a[3]  
a[4]  
a[5]  
a[6]  
a[7]  
a[8]  
a[9]  

Sternchen ausgeben

Problem: Nach der Eingabe einer Zahl soll eine Reihe von Sternen * ausgegeben werden, bzw ein Sternenmuster

Erstellen Sie jeweils zuerst ein Struktogramm und implementieren Sie dann die Lösung, alle Aufgaben können in einem Projekt gelöst werden.

3 einfache Sterne ausgeben:
***
3 Sternmuster ausgeben:
 *
***
 *
***
 *
***
3 Sternmuster nebeneinander ausgeben:
 *  *  * 
*********

Sternchen.ausgeben1(n:GZ)

Ausgabe
n mal nebeneinander

"*"
Struktogramm..

Sternchen.ausgeben2(n:GZ)

Ausgabe
n mal Muster
untereinander

" * "
"***"
Struktogramm..

Sternchen.ausgeben3(n:GZ)

Ausgabe
n mal Muster
nebeneinander

" * "
"***"
Struktogramm..
Lösung anzeigen..

Dreieck ausgeben

Dreieck mit Kantenlaenge: 5
*
**
***
****
*****

Problem: Ein Programm soll ein rechtwinkliges Dreieck mit der Kantenlänge n ausgeben.
Erstellen Sie ein Struktogramm und implementieren Sie die Lösung. Struktogramm..

Quersumme ermitteln

Für eine eingegebene Zahl n soll die Quersumme (Summe der Ziffern) berechnet und ausgegeben werden:

Beispiel 112: 1+1+2 = 4

Entwickeln Sie eine Methode Quersumme.berechne(n:GZ):GZ (Quelltext und Struktogramm)! [Quelltext] [Struktogramm]

Tipp: 112%10 = 2

Hugospiegel

Erstellen Sie eine Methode Hugo.spiegel1(s:Text) die einen eingegebenen Text spiegelt:

Eingabe: "Hugo" -> Ausgabe: "oguH"

Erstellen Sie ein Struktogramm für die Methode.

Erstellen Sie eine Methode Hugo.spiegel2(s:Text) die einen eingegebenen Text "Hugo" wie folgt ausgibt: Lösung..

H
Hu
Hug
Hugo
Hug
Hu
H

Quadratzahlengenerator

Quadratzahlen
zahlenfeld[]:GZ {20 Einträge}
ausgebenQuadratzahlen(n:GZ)
fuelleFeld(n:GZ)
ausgebenFeld()
berechneFeldSumme():GZ
berechneFeldSumme2():GZ

Eine Klasse für Quadratzahlen wird entwickelt das Diagramm des Endausbaus ist links zu sehen. Es soll kein Objekt erstellt werden müssen, daher sind die Attribute und Methoden "static" d.h. Klassen-Attribute und Klassen-Methoden.

Entwickeln Sie die Klassen-Methode ausgebenQuadratzahlen(n:GZ), die die Quadratzahlen von 1 bis n auf der Konsole ausgibt.

Ein Klassen-Attribut zahlenfeld[]:GZ kann maximal 20 Zahlen speichern. Die Methode fuelleFeld(n:GZ) schreibt die Quadratzahlen von 0 bis n in das Zahlenfeld. Bei zu kleinem Feld wird eine Fehlermeldung ausgegeben. Die Methode ausgebenFeld() gibt das Feld auf der Konsole aus.

Eine Methode berechneFeldsumme():GZ berechnet die Summe aller Feldelemente.

Die Methode berechneFeldsumme2():GZ verwendet hierzu eine while-Schleife. Erstellen Sie auch ein Struktogramm für diese Methode. Lösungen: [Quelltext] [Struktogramm]

String-Aufgaben

Für viele dieser Problemstellungen gibt es bereits Funktionen in Programmiersprachen, eine Lösung "zu Fuß" trainiert das algorithmische Verständnis. Erstellen Sie Strukogramme und Quelltext.

Erste ganze Zahl aus String ermitteln (mittel)

ersteZahl(quelle:Text):GZ Die erste Zahl in quelle soll zurückgegeben werden: ersteZahl("Hallo 123 Schnuller") -> 123 [Struktogrammlösung]

Erste Hex-Zahl aus String ermitteln (schwer)

ersteHexZahl(quelle:Text):GZ Die erste Hex-Zahl klein geschrieben in quelle soll als Dezimalzahl zurückgegeben werden: ersteHexZahl("Liebe 0x1e Kekse") -> 30

Hexzahlen fangen immer mit 0x an, gefolgt von den Ziffern 0..9,a..f. [Struktogrammlösung]

String a durch String b in Quellstring ersetzten (schwerer)

ersetzeText(quelle:Text,a:Text,b:Text):Text Der Text a wird in quelle durch Text b ersetzt: ersetzeText("Anna und Hugo gehen in den Wald","Hugo","Bert") -> "Anna und Bert gehen in den Wald" [Struktogrammlösung]

[Java-Lösungen für alle Aufgaben]

Lottozahlengenerator (anspruchsvoll)

Erstellen Sie eine Klassen-Methode Lottozahlen.generiereZahlen(), die 6 Zahlen von 1 bis 49 ohne Wiederholungen auf der Konsole ausgibt. Lösung: [Lottozahlen.java]

Sternenkreuz mit for-Schleife (schwierig)

Erstellen Sie eine Methode Sternenkreuz.ausgabe(n:GZ) die Quadrate mit Kreuz ausgibt. Lösung anzeigen..

*******
**   **
* * * *
*  *  *
* * * *
**   **
*******

Sternenpyramide (Aufgabe von Alex H.)

Erstellen Sie eine Methode Pyramide.zeichne(hoehe:GZ) die eine Pyramide ausgibt. Lösung anzeigen..

   *   
  ***  
 ***** 
*******

 Sternenwürfel (Aufgabe von Alex H.)

Erstellen Sie eine Methode Wuerfel.zeichne(hoehe:GZ) die einen Würfel ausgibt. Lösung anzeigen..

   ***********
  **        **
 * *       * *
***********  *
*  *      *  *
*  *      *  *
*  *      *  *
*  *      *  *
*  *      *  *
*  *      *  *
*  ***********
* *       * * 
**        **  
***********