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.

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

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

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

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.

Anzahl eines Buchstabens in einem String zählen (leicht-mittel)

anzahlBuchstaben(s:Text, c:Zeichen):GZ Die Anzahl des Buchstabens c wird im String s gezählt. [Struktogrammlösung]

anzahlBuchstabenInsesitiv(s:Text, c:Zeichen,g:Bool):GZ Die Anzahl des Buchstabens c wird im String s gezählt, dabei Gross-Kleinschrift nicht relevant. [Struktogrammlösung] [Quelltexte]

PrüfZiffer ermitteln, checken (leicht-mittelschwer)

ermittlePZiffer(s:Text):GZ Berechnet die Quersumme der Ziffern in s und gibt sie modulo 10 zurück Bsp: 4711: 4+7+1+1=>13 % 10 => 3. Bei Eingaben, die keine Ziffern enthalten wird eine Fehlermeldung "Buchstaben in der Eingabe " ausgegeben. [Struktogrammlösung]

checkPZiffer(s:Text):Bool Überprüft, ob bei einer Zahl die Prüfziffer stimmt Bsp: 4711-3 stimmt. Das Muster besteht aus der Zahl gefolgt von einem '-' und der Prüfziffer. Bei vom Schema abweichenden Eingaben sollen entsprechende Fehlermeldungen ausgegeben werden. [Struktogrammlösung] [Quelltexte]

Buchstaben in String ersetzten (leicht)

ersetzeZeichen(quelle:Text,a:Zeichen,b:Zeichen):Text Buchstabe a soll in quelle durch Buchstabe b ersetzt werden: ersetzeZeichen("Hallo Hugo",'H','B') -> "Ballo Bugo". [Struktogrammlösung]

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 [Struktogrammlösung]

Ist String in Quellstring enthalten (mittel)

enthaltenText(quelle:Text,a:Text):Boolean Der Text a ist in quelle enthalten: enthaltenText("Anna ist im Garten","ist") -> true [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]

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..

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