Javakurs/Übungsaufgaben/Schleifen und Modulo: Unterschied zwischen den Versionen
(Zusätzlicher hinweis auf der Seite oben) |
(→1. Kommentar) |
||
(13 dazwischenliegende Versionen von 11 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | Hinweise: | + | '''Hinweise:''' |
− | * Bevor du mit der Aufgabe beginnst, | + | * Bevor du mit der Aufgabe beginnst, solltest du sie einmal komplett durchgelesen haben. |
− | * Der Modulo Operator in Java ist "%". ''System.out.println("6 % 4 = " + 6 % 4)'' ergibt also "6 % 4 = 2" | + | * 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 === | === Aufgabe === | ||
− | Schreibe ein Programm, | + | 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: | Die ersten Ausgaben des Programms sähen also so aus: | ||
Zeile 17: | Zeile 17: | ||
foo | foo | ||
bar | bar | ||
− | + | ... | |
=== Umsetzung === | === Umsetzung === | ||
Zeile 27: | Zeile 27: | ||
} | } | ||
# Dein Code soll in die Main-Methode. | # Dein Code soll in die Main-Methode. | ||
− | # Ergänze die | + | # Ergänze die <code>main</code>-Methode um eine Schleife, die von 1 bis 100 (inklusive) zählt. |
− | # Gib in der Schleife | + | # Gib in der Schleife die aktuelle Zahl aus. |
− | # Teste dein Programm | + | # Teste dein Programm. |
− | # Ergänze dein Programm, | + | # Ergänze dein Programm, sodass es anstatt der durch 3 teilbaren Zahlen "foo" ausgibt. |
− | # Teste dein Programm | + | # Teste dein Programm. |
− | # Ergänze dein Programm, | + | # 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) |
− | # Teste dein Programm | + | # Teste dein Programm. |
− | # Ergänze dein Programm, | + | # Ergänze dein Programm, sodass es eine durch 3 und 5 teilbare Zahl korrekt ausgibt. |
# Teste dein Programm. | # Teste dein Programm. | ||
Betrachte deine Lösung: | 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)? | * Enthält dein Programm Kommentare? Dokumentieren diese Kommentare was dein Programm tut (schlecht) oder warum du es tust (gut)? | ||
− | * Wie stellt dein Programm | + | * 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. | * 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. | + | ** 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. | ** 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.print'''ln'''()'' fügt jeder Ausgabe einen Zeilenumbruch hinzu. ''System.out.print()'' tut das nicht.) | + | * 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.print'''ln'''()'' 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. ( | + | * 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 | + | * 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 ;) | ||
+ | |||
+ | <!-- | ||
+ | Als kleine Starthilfe folgt ein Beispiel, wie so ein Kommentar formatiert sein könnte. Mit "Vorschau zeigen" kannst du dir ansehen, was deine Änderung bewirken würde, ohne wirklich etwas zu ändern. | ||
+ | Du musst übrigens außerhalb dieses auskommentieren Bereichs schreiben ;) | ||
− | + | ==== Robert ==== | |
+ | Na mal schauen, ob irgendjemand diese Funktion wirklich benutzt. Ich fände es jedenfalls toll. | ||
+ | --> | ||
− | + | [[Kategorie:Java]] | |
− | + | [[Kategorie:Java_Aufgaben]] | |
+ | *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'' |
Aktuelle Version vom 5. März 2013, 12:08 Uhr
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 ... } }
- Dein Code soll in die Main-Methode.
- Ergänze die
main
-Methode um eine Schleife, die von 1 bis 100 (inklusive) zählt. - Gib in der Schleife die aktuelle Zahl aus.
- Teste dein Programm.
- Ergänze dein Programm, sodass es anstatt der durch 3 teilbaren Zahlen "foo" ausgibt.
- Teste dein Programm.
- 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)
- Teste dein Programm.
- Ergänze dein Programm, sodass es eine durch 3 und 5 teilbare Zahl korrekt ausgibt.
- 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