Sitzung: Jeden Freitag in der Vorlesungszeit ab 16 Uhr c. t. im MAR 0.005. In der vorlesungsfreien Zeit unregelmäßig (Jemensch da?). Macht mit!

Javakurs/Übungsaufgaben/Schleifen und Modulo

Hinweise:

  • Bevor du mit der Aufgabe beginnst, solltest du sie einmal komplett durchgelesen haben.
  • Der Modulo Operator in Java ist "%". Der Modulo-Operator führt eine ganzzahlige Division durch und gibt den Rest zurück. System.out.println("6 % 4 = " + 6 % 4) ergibt also "6 % 4 = 2"

Aufgabe

Schreibe ein Programm, das die Zahlen 1 bis 100 (jeweils inklusive) auf einer eigenen Zeile ausgibt. Dabei soll jede durch 3 teilbare Zahl durch die Ausgabe "foo", jede durch 5 teilbare Zahl durch "bar" und jede durch 3 und 5 teilbare Zahl durch "foobar" ersetzt werden.

Die ersten Ausgaben des Programms sähen also so aus:

1
2
foo
4
bar
foo
7
8
foo
bar
...

Umsetzung

Erstelle eine neue Datei "LoopingFun.java" mit einer Klasse "LoopingFun" darin. Beispiel:

class LoopingFun {
	public static void main(String [] unused) {
		// Your code here ...
	}
}
  1. Dein Code soll in die Main-Methode.
  2. Ergänze die main-Methode um eine Schleife, die von 1 bis 100 (inklusive) zählt.
  3. Gib in der Schleife die aktuelle Zahl aus.
  4. Teste dein Programm.
  5. Ergänze dein Programm, sodass es anstatt der durch 3 teilbaren Zahlen "foo" ausgibt.
  6. Teste dein Programm.
  7. Ergänze dein Programm, sodass es anstatt der durch 5 teilbaren Zahlen "bar" ausgibt. (Ignoriere dabei den Fall, wo eine Zahl durch 3 und durch 5 teilbar ist)
  8. Teste dein Programm.
  9. Ergänze dein Programm, sodass es eine durch 3 und 5 teilbare Zahl korrekt ausgibt.
  10. Teste dein Programm.

Betrachte deine Lösung:

  • Erkläre die Namen der Variablen und welchen Zweck haben sie?
  • Enthält dein Programm Kommentare? Dokumentieren diese Kommentare was dein Programm tut (schlecht) oder warum du es tust (gut)?
  • Wie stellt dein Programm fest, ob eine Zahl durch 3, 5 oder durch beide Zahlen teilbar ist?
  • Wie hast du die Schleife implementiert? Mit einer For-Schleife oder mit einer while-Schleife? Verändere deine Implementierung, so dass die andere Schleifenart verwendet wird.
    • Welche der Schleifenkonstrukte ist für dieses Problem besser geeignet? Ändere (falls nötig) dein Programm so, dass die besser geeignete Syntax verwendet wird.
    • Einige dich mit deinen Nachbarn ob "for" oder "while" hier besser geeignet ist und teilt euer Ergebnis dem Tutor mit.
  • Wie viele Fallunterscheidungen verwendet dein Programm? Drei, vier, fünf oder noch mehr? Wenn du mehr als drei Fallunterscheidungen hast, überlege wie Du mit drei Fallunterscheidungen auskommen könntest. Verändere dein Programm entsprechend. (Hinweis: System.out.println() fügt jeder Ausgabe einen Zeilenumbruch hinzu. System.out.print() tut das nicht.)
  • Wie viele lokale Variablen verwendest du? Wenn es mehr als eine ist, überlege ob du dein Programm vereinfachen kannst, indem du nur noch eine Variable verwendest. (Hinweis: Auch ein Schleifenzähler ist eine lokale Variable)
  • Vergleiche deine Lösung mit der eines anderen Kursteilnehmers und betrachtet die Unterschiede anhand der Fragen die hier aufgeführt sind.

Zum Abschluss: Führe dein Programm einem Tutor vor und programmiere seine Änderungsvorschläge.

Kommentare

Wenn du Anmerkungen zur Aufgabe hast oder Lob und Kritik loswerden möchtest, ist hier die richtige Stelle dafür. Klicke einfach ganz rechts auf "bearbeiten" und schreibe deinen Kommentar direkt ins Wiki. Keine Scheu, es geht nichts kaputt ;)

  • super!
  • klasse Anleitung, mit der man Schritt für Schritt durch's Programmieren geführt wird und immer wieder Erfolgserlebnisse hat. Super auch, dass es Musterlösungen (am nächsten Tag) gibt, wenn man zu Hause noch programmiert hat ist das eine gute Hilfe.
Kiwiana