Debugging von Schleifen
Öffne das Projekt und schau Dir die Klasse Schleifendreher an. Dort findest Du Beispiele für die verschiedenen Schleifentypen in Java. Führe die Beispiele aus, um Dich mit den Schleifen vertraut zu machen. Beachte dabei die Ausgaben auf der Konsole. Lies Dir die Methodenrümpfe gründlich durch. Führe sie anschließend im DebugModus von BlueJ aus: Öne dazu die Klasse im BlueJ-Editor und klicke links in die weiße Leiste neben eine Anweisung in der Methode; es erscheint ein kleines rotes Stoppschild. Dies ist ein Haltepunkt. Wenn Du nun wie gewohnt die Methoden aufrufst, önet sich der Debugger automatisch und Du kannst den Programmablauf Schritt für Schritt steuern, indem Du auf den Knopf „Schritt über“ (engl. step) klickst. Erkläre Deinen Betreuern, warum die Beispiele zu diesen Ausgaben führen. Konsultiere im Zweifel den zweiten Teil des Skripts.
Ich verstehe die Aufgabe nicht!
Class Schleifendreher {
// Beispiele fuer for-Schleifen
/**
* Gibt die Ziffern 0 bis 9 mit dem Hinweis, dass es sich um Ziffern handelt,
* auf der Konsole aus.
*/
public void druckeAlleZiffern() {
for (int i = 0; i < 10; ++i) {
System.out.println(i + " ist eine Ziffer.");
}
}
/**
* Gibt die druckbaren Zeichen des ASCII-Zeichensatzes auf der Konsole aus.
*/
public void druckeDruckbareASCIIZeichen() {
for (char c = 32; c < 127; ++c) {
int i = c;
System.out.println(i + ". ASCII-Zeichen: " + c);
}
}
/**
* Gibt alle Ziffern, die durch drei teilbar sind, mit entsprechendem Hinweis
* auf der Konsole aus.
*/
public void druckeDreierZiffernRueckwaerts() {
// Man kann bei beliebigen Werten anfangen
// und beliebig grosse Schritte in beide Richtungen gehen.
for (int i = 9; i >= 0; i -= 3) {
System.out.println(i + " ist durch 3 teilbar.");
}
}
/**
* Gibt alle Paare nicht-negativer Zahlen, deren Summe 9 ergibt, auf der Konsole
* aus. Die die Addition kommutativ ist, werden redundante Paare bewusst
* vermieden.
*/
public void druckeNeunerSummen() {
// Es koennen beliebig viele Schleifenzaehler verwendet werden,
// zum Beispiel zwei "gegeneinander laufende" Zaehler,
// die sich in der Mitte treffen (man beachte die Schleifenbedingung).
for (int a = 0, b = 9; a < b; ++a, --b) {
System.out.println(a + " + " + b + " = " + (a + b));
}
}
/**
* Gibt die Buchstaben einer Zeichenkette durch Kommata getrennt auf der Konsole
* aus.
*
* @param text Enthealt den Text, der ausgegeben werden soll.
*/
public void druckeEinzelneBuchstaben(String text) {
for (int i = 0; i < text.length(); ++i) {
System.out.print(text.charAt(i));
System.out.print(", ");
}
System.out.println();
}
// Beispiel fuer while-Schleife
/**
* Liefert die kleinste Primzahl, welche groesser oder gleich x ist.
*
* @param x Eine Zahl, von der aus mit der Suche begonnen werden soll.
*
* @Return die naechste gefundene Primzahl.
*/
public int findeNaechstePrimzahl(int x) {
while (!istPrimzahl(x)) {
++x;
}
return x;
}
// Beispiel fuer do-while-Schleife
/**
* Fordert den Benutzer wiederholt zur Eingabe eines Passwortes auf, bis er das
* korrekte Passwort eingegeben hat.
*/
public void verlangePasswort() {
String zeile;
do {
System.out.print("Passwort? ");
zeile = liesZeileVomBenutzer();
} while (!zeile.equals("\116\151\143\141\162\141\147\165\141"));
// C-Hack: Zeichen hier kodiert ueber "octal escapes", siehe JLS 3.10.6
// Wenn ihr die Zeichen sehen wollt: Zeichenkette in die Direkteingabe
// von BlueJ kopieren und Enter druecken.
System.out.println("Du darfst eintreten!");
Öffne das Projekt und schau Dir die Klasse Schleifendreher an. Dort findest Du Beispiele für die verschiedenen Schleifentypen in Java. Führe die Beispiele aus, um Dich mit den Schleifen vertraut zu machen. Beachte dabei die Ausgaben auf der Konsole. Lies Dir die Methodenrümpfe gründlich durch. Führe sie anschließend im DebugModus von BlueJ aus: Öne dazu die Klasse im BlueJ-Editor und klicke links in die weiße Leiste neben eine Anweisung in der Methode; es erscheint ein kleines rotes Stoppschild. Dies ist ein Haltepunkt. Wenn Du nun wie gewohnt die Methoden aufrufst, önet sich der Debugger automatisch und Du kannst den Programmablauf Schritt für Schritt steuern, indem Du auf den Knopf „Schritt über“ (engl. step) klickst. Erkläre Deinen Betreuern, warum die Beispiele zu diesen Ausgaben führen. Konsultiere im Zweifel den zweiten Teil des Skripts.
Ich verstehe die Aufgabe nicht!
Class Schleifendreher {
// Beispiele fuer for-Schleifen
/**
* Gibt die Ziffern 0 bis 9 mit dem Hinweis, dass es sich um Ziffern handelt,
* auf der Konsole aus.
*/
public void druckeAlleZiffern() {
for (int i = 0; i < 10; ++i) {
System.out.println(i + " ist eine Ziffer.");
}
}
/**
* Gibt die druckbaren Zeichen des ASCII-Zeichensatzes auf der Konsole aus.
*/
public void druckeDruckbareASCIIZeichen() {
for (char c = 32; c < 127; ++c) {
int i = c;
System.out.println(i + ". ASCII-Zeichen: " + c);
}
}
/**
* Gibt alle Ziffern, die durch drei teilbar sind, mit entsprechendem Hinweis
* auf der Konsole aus.
*/
public void druckeDreierZiffernRueckwaerts() {
// Man kann bei beliebigen Werten anfangen
// und beliebig grosse Schritte in beide Richtungen gehen.
for (int i = 9; i >= 0; i -= 3) {
System.out.println(i + " ist durch 3 teilbar.");
}
}
/**
* Gibt alle Paare nicht-negativer Zahlen, deren Summe 9 ergibt, auf der Konsole
* aus. Die die Addition kommutativ ist, werden redundante Paare bewusst
* vermieden.
*/
public void druckeNeunerSummen() {
// Es koennen beliebig viele Schleifenzaehler verwendet werden,
// zum Beispiel zwei "gegeneinander laufende" Zaehler,
// die sich in der Mitte treffen (man beachte die Schleifenbedingung).
for (int a = 0, b = 9; a < b; ++a, --b) {
System.out.println(a + " + " + b + " = " + (a + b));
}
}
/**
* Gibt die Buchstaben einer Zeichenkette durch Kommata getrennt auf der Konsole
* aus.
*
* @param text Enthealt den Text, der ausgegeben werden soll.
*/
public void druckeEinzelneBuchstaben(String text) {
for (int i = 0; i < text.length(); ++i) {
System.out.print(text.charAt(i));
System.out.print(", ");
}
System.out.println();
}
// Beispiel fuer while-Schleife
/**
* Liefert die kleinste Primzahl, welche groesser oder gleich x ist.
*
* @param x Eine Zahl, von der aus mit der Suche begonnen werden soll.
*
* @Return die naechste gefundene Primzahl.
*/
public int findeNaechstePrimzahl(int x) {
while (!istPrimzahl(x)) {
++x;
}
return x;
}
// Beispiel fuer do-while-Schleife
/**
* Fordert den Benutzer wiederholt zur Eingabe eines Passwortes auf, bis er das
* korrekte Passwort eingegeben hat.
*/
public void verlangePasswort() {
String zeile;
do {
System.out.print("Passwort? ");
zeile = liesZeileVomBenutzer();
} while (!zeile.equals("\116\151\143\141\162\141\147\165\141"));
// C-Hack: Zeichen hier kodiert ueber "octal escapes", siehe JLS 3.10.6
// Wenn ihr die Zeichen sehen wollt: Zeichenkette in die Direkteingabe
// von BlueJ kopieren und Enter druecken.
System.out.println("Du darfst eintreten!");