Update of exercises

master
Thomas Smits 2023-03-14 14:45:44 +01:00
parent 796e2a7fbb
commit ff0b3418b5
16 changed files with 355 additions and 9 deletions

View File

@ -1,6 +1,8 @@
# Umgebung aufsetzen
**🎓 Benotetes Assignment 🎓**
📆 **Fällig: 26.03.2023** 📆
## Lernziel
@ -92,7 +94,7 @@ Connection to gitty.informatik.hs-mannheim.de closed.
### Repository
Alle Ihre Abgaben erfolgen über ein Ihnen zugeordnetes Repository. Dieses Repository ist bereits angelegt und sollte Ihnen angezeigt werden, wenn Sie in die [Organisation pr2-lecture](https://gitty.informatik.hs-mannheim.de/pr2-lecture) gehen. (Sollten Sie einen `Fehler 404` bekommen, haben Sie vergessen sich auf der Webseite anzumelden.)
Alle Ihre Abgaben erfolgen über ein Ihnen zugeordnetes Repository. Dieses Repository werden anhand der Gruppen angelegt, in die Sie sich eingetragen haben. Sobald es für Sie erzeugt wurde, sollte es Ihnen nach dem Login angezeigt werden, wenn Sie in die [Organisation pr2-lecture](https://gitty.informatik.hs-mannheim.de/pr2-lecture) gehen. (Sollten Sie einen `Fehler 404` bekommen, haben Sie vergessen sich auf der Webseite anzumelden.)
Gehen Sie auf Ihre Repository und kopieren Sie sich die "Clone URL" für ssh:
@ -149,4 +151,4 @@ Sie sehen jetzt folgende Dateien und Ordner in Ihrem Verzeichnis:
## Abgabe
Für dieses Assignment gibt es keine Abgabe.
Für dieses Assignment gibt es __keine Abgabe__.

View File

@ -2,7 +2,7 @@
**🎓 Benotetes Assignment 🎓**
📆 **Fällig: 24.03.2023** 📆
📆 **Fällig: 26.03.2023** 📆
## Lernziel
@ -51,12 +51,12 @@ In dieser Aufgabe geht es darum, ein einfaches Hello-World-Programm zu schreiben
## Abgabe
Alle Abgaben für die Vorlesung erfolgen über git.
Alle Abgaben für die Vorlesung erfolgen über `git`.
Hierzu gehen Sie wie folgt vor:
1. Öffnen Sie eine Kommandozeile (Terminal).
2. Gehen Sie in Ihr Working Directory.
3. Rufen Sie mit `bin/submit.sh` das Skript auf, das die Lösungen testet und kompiliert. Wenn Maven eine Fehlermeldung zeigt, beheben Sie diese zuerst, bevor Sie mit dem nächsten Schritt fortfahren.
4. Wenn Sie Meldung "✅ Projekt gebaut" bekommen, checken (comitten) Sie Ihre Änderungen in GIT ein.
4. Wenn Sie Meldung "✅ Projekt gebaut" bekommen, checken (comitten) Sie Ihre Änderungen in `git` ein.
5. Rufen Sie mit `bin/submit.sh` erneut das Skript auf. Wenn alles klappt, bekommen Sie die Anzeige "✅ Aktuelle Lösungen eingereicht" und Ihre Lösung ist im System angekommen.

View File

@ -0,0 +1,37 @@
# String in Großbuchstaben umwandeln
## Lernziel
* Daten von der Kommandozeile lesen.
* Einfache String-Operationen.
## Aufgabe
Gehen Sie in das Paket [pr2.auffrischung.grossmacher](../sources/src/main/java/pr2/auffrischung/grossmacher).
Schreiben Sie bitte ein Programm mit der Hauptklasse `Grossmacher`, das einen Text als Parameter auf der Kommandozeile nimmt, diesen in Großbuchstaben umwandelt und dann, zusammen mit der enthaltenen Anzahl von Zeichen, wieder auf der Konsole ausgibt.
```console
> java Grossmacher "Hallo, dies ist ein Test"
Ergebnis: HALLO, DIES IST EIN TEST
Zeichen : 24
```
## Abgabe (optional)
__Sie müssen keine Lösung für diese Aufgabe einreichen, können es aber, wenn Sie wollen.__
Wenn Sie die Aufgabe abgeben wollen, folgen Sie der unten stehenden Anleitung.
Alle Abgaben für die Vorlesung erfolgen über `git`.
Hierzu gehen Sie wie folgt vor:
1. Öffnen Sie eine Kommandozeile (Terminal).
2. Gehen Sie in Ihr Working Directory.
3. Rufen Sie mit `bin/submit.sh` das Skript auf, das die Lösungen testet und kompiliert. Wenn Maven eine Fehlermeldung zeigt, beheben Sie diese zuerst, bevor Sie mit dem nächsten Schritt fortfahren.
4. Wenn Sie Meldung "✅ Projekt gebaut" bekommen, checken (comitten) Sie Ihre Änderungen in `git` ein.
5. Rufen Sie mit `bin/submit.sh` erneut das Skript auf. Wenn alles klappt, bekommen Sie die Anzeige "✅ Aktuelle Lösungen eingereicht" und Ihre Lösung ist im System angekommen.

View File

@ -0,0 +1,32 @@
# Labeled Break
## Lernziel
Ein labeled break verwenden.
## Aufgabe
Gehen Sie in das Paket [pr2.auffrischung.labeled_break](../sources/src/main/java/pr2/auffrischung/labeled_break).
Schreiben Sie eine Methode `suche`, die ein zweidimensionales `int`-Array übergeben bekommt und das erste Element sucht, das keine `0` ist. Wenn ein solches gefunden wird, soll die Methode `true` zurückgeben, andernfalls `false`.
Verwenden Sie bitte ein **labeled break** für Ihre Implementierung.
## Abgabe (optional)
__Sie müssen keine Lösung für diese Aufgabe einreichen, können es aber, wenn Sie wollen.__
Wenn Sie die Aufgabe abgeben wollen, folgen Sie der unten stehenden Anleitung.
Alle Abgaben für die Vorlesung erfolgen über `git`.
Hierzu gehen Sie wie folgt vor:
1. Öffnen Sie eine Kommandozeile (Terminal).
2. Gehen Sie in Ihr Working Directory.
3. Rufen Sie mit `bin/submit.sh` das Skript auf, das die Lösungen testet und kompiliert. Wenn Maven eine Fehlermeldung zeigt, beheben Sie diese zuerst, bevor Sie mit dem nächsten Schritt fortfahren.
4. Wenn Sie Meldung "✅ Projekt gebaut" bekommen, checken (comitten) Sie Ihre Änderungen in `git` ein.
5. Rufen Sie mit `bin/submit.sh` erneut das Skript auf. Wenn alles klappt, bekommen Sie die Anzeige "✅ Aktuelle Lösungen eingereicht" und Ihre Lösung ist im System angekommen.

View File

@ -0,0 +1,37 @@
# Passwortbewertung
## Lernziel
Einfache String-Verarbeitung.
## Aufgabe
Gehen Sie in das Paket [pr2.auffrischung.password](../sources/src/main/java/pr2/auffrischung/password).
Schreiben Sie eine Klasse `PasswortChecker` mit einer Methode `checkPassword`, die die Qualität von Passwörtern bewertet. Die Methode vergibt Punkte für bestimmte Qualitätskriterien des Passworts. Es gibt jeweils einen Punkt für:
* Das Passwort ist mindestens 8 Zeichen lang.
* Das Passwort enthält Groß- und Kleinbuchstaben.
* Das Passwort enthält Buchstaben und Zahlen.
* Das Passwort enthält mindestens eines der Sonderzeichen `!"()%`
Testen Sie die Methode mit verschiedenen Passwörtern.
## Abgabe (optional)
__Sie müssen keine Lösung für diese Aufgabe einreichen, können es aber, wenn Sie wollen.__
Wenn Sie die Aufgabe abgeben wollen, folgen Sie der unten stehenden Anleitung.
Alle Abgaben für die Vorlesung erfolgen über `git`.
Hierzu gehen Sie wie folgt vor:
1. Öffnen Sie eine Kommandozeile (Terminal).
2. Gehen Sie in Ihr Working Directory.
3. Rufen Sie mit `bin/submit.sh` das Skript auf, das die Lösungen testet und kompiliert. Wenn Maven eine Fehlermeldung zeigt, beheben Sie diese zuerst, bevor Sie mit dem nächsten Schritt fortfahren.
4. Wenn Sie Meldung "✅ Projekt gebaut" bekommen, checken (comitten) Sie Ihre Änderungen in `git` ein.
5. Rufen Sie mit `bin/submit.sh` erneut das Skript auf. Wenn alles klappt, bekommen Sie die Anzeige "✅ Aktuelle Lösungen eingereicht" und Ihre Lösung ist im System angekommen.

View File

@ -0,0 +1,32 @@
# printf mit Formatstring
## Lernziel
Formatierung mit Formatstrings.
## Aufgabe
Gehen Sie in das Paket [pr2.auffrischung.printf](../sources/src/main/java/pr2/auffrischung/printf).
Schauen Sie sich die JavaDoc der Methode `printf` in der Klasse `PrintStream` an.
Schreiben Sie eine Methode `printDouble`, die eine beliebige double-Zahl mit immer genau drei Nachkommastellen ausgibt. Testen Sie die Methode mit einigen Testzahlen.
## Abgabe (optional)
__Sie müssen keine Lösung für diese Aufgabe einreichen, können es aber, wenn Sie wollen.__
Wenn Sie die Aufgabe abgeben wollen, folgen Sie der unten stehenden Anleitung.
Alle Abgaben für die Vorlesung erfolgen über `git`.
Hierzu gehen Sie wie folgt vor:
1. Öffnen Sie eine Kommandozeile (Terminal).
2. Gehen Sie in Ihr Working Directory.
3. Rufen Sie mit `bin/submit.sh` das Skript auf, das die Lösungen testet und kompiliert. Wenn Maven eine Fehlermeldung zeigt, beheben Sie diese zuerst, bevor Sie mit dem nächsten Schritt fortfahren.
4. Wenn Sie Meldung "✅ Projekt gebaut" bekommen, checken (comitten) Sie Ihre Änderungen in `git` ein.
5. Rufen Sie mit `bin/submit.sh` erneut das Skript auf. Wenn alles klappt, bekommen Sie die Anzeige "✅ Aktuelle Lösungen eingereicht" und Ihre Lösung ist im System angekommen.

View File

@ -0,0 +1,32 @@
# Maximum in einem Array suchen
## Lernziel
Über Arrays iterieren.
## Aufgabe
Gehen Sie in das Paket [pr2.auffrischung.suchemax](../sources/src/main/java/pr2/auffrischung/suchemax).
Schreiben Sie bitte eine Klasse `GroessteZahl` mit der Methode `sucheMax`, die ein `int`-Array übergeben bekommt und die größte Zahl aus diesem heraussucht und zurückgibt.
Testen Sie die Methode mit einigen Testzahlen.
## Abgabe (optional)
__Sie müssen keine Lösung für diese Aufgabe einreichen, können es aber, wenn Sie wollen.__
Wenn Sie die Aufgabe abgeben wollen, folgen Sie der unten stehenden Anleitung.
Alle Abgaben für die Vorlesung erfolgen über `git`.
Hierzu gehen Sie wie folgt vor:
1. Öffnen Sie eine Kommandozeile (Terminal).
2. Gehen Sie in Ihr Working Directory.
3. Rufen Sie mit `bin/submit.sh` das Skript auf, das die Lösungen testet und kompiliert. Wenn Maven eine Fehlermeldung zeigt, beheben Sie diese zuerst, bevor Sie mit dem nächsten Schritt fortfahren.
4. Wenn Sie Meldung "✅ Projekt gebaut" bekommen, checken (comitten) Sie Ihre Änderungen in `git` ein.
5. Rufen Sie mit `bin/submit.sh` erneut das Skript auf. Wenn alles klappt, bekommen Sie die Anzeige "✅ Aktuelle Lösungen eingereicht" und Ihre Lösung ist im System angekommen.

View File

@ -0,0 +1,32 @@
# Taschenrechner
## Lernziel
`case` verwenden.
## Aufgabe
Gehen Sie in das Paket [pr2.auffrischung.taschenrechner](../sources/src/main/java/pr2/auffrischung/taschenrechner).
Schreiben Sie eine Klasse `Taschenrechner`, die genau eine Methode namens `rechne` hat. Die Methode nimmt zwei `double`-Werte, die die Operanden darstellen und ein `char`, das den Operator symbolisiert. Die Methode soll Addition (`+`), Subtraktion (`-`), Multiplikation (`*`), Division (`/`) und Potenzieren (`^`) unterstützen. Geben Sie das Ergebnis der Rechnung als `double`-Wert zurück und behandeln Sie den Fall, dass ein ungültiger Operator übergeben wird, indem Sie `NaN` (Not a Number) zurückgeben.
Testen Sie Ihre Klasse und Methode mit einigen einfachen Rechnungen.
## Abgabe (optional)
__Sie müssen keine Lösung für diese Aufgabe einreichen, können es aber, wenn Sie wollen.__
Wenn Sie die Aufgabe abgeben wollen, folgen Sie der unten stehenden Anleitung.
Alle Abgaben für die Vorlesung erfolgen über `git`.
Hierzu gehen Sie wie folgt vor:
1. Öffnen Sie eine Kommandozeile (Terminal).
2. Gehen Sie in Ihr Working Directory.
3. Rufen Sie mit `bin/submit.sh` das Skript auf, das die Lösungen testet und kompiliert. Wenn Maven eine Fehlermeldung zeigt, beheben Sie diese zuerst, bevor Sie mit dem nächsten Schritt fortfahren.
4. Wenn Sie Meldung "✅ Projekt gebaut" bekommen, checken (comitten) Sie Ihre Änderungen in `git` ein.
5. Rufen Sie mit `bin/submit.sh` erneut das Skript auf. Wenn alles klappt, bekommen Sie die Anzeige "✅ Aktuelle Lösungen eingereicht" und Ihre Lösung ist im System angekommen.

View File

@ -0,0 +1,33 @@
# Quine
## Lernziel
Escape-Sequenzen und String-Verarbeitung.
## Aufgabe
Gehen Sie in das Paket [pr2.auffrischung.quine](../sources/src/main/java/pr2/auffrischung/quine).
Schreiben Sie ein Programm, das sich selbst auf der Console ausgibt. Das Programm soll nicht seinen Quelltext lesen und ausgeben, sondern seinen eigenen Quellcode enthalten.
Hinweis: Die Lösung wird deutlich einfacher, wenn Sie `printf` und `String.replace` verwenden. Diese Aufgabe ist relativ komplex, vergeuden Sie also nicht zu viel Zeit und geben Sie auf, wenn Sie die Lösung nicht finden.
## Abgabe (optional)
__Sie müssen keine Lösung für diese Aufgabe einreichen, können es aber, wenn Sie wollen.__
Wenn Sie die Aufgabe abgeben wollen, folgen Sie der unten stehenden Anleitung.
Alle Abgaben für die Vorlesung erfolgen über `git`.
Hierzu gehen Sie wie folgt vor:
1. Öffnen Sie eine Kommandozeile (Terminal).
2. Gehen Sie in Ihr Working Directory.
3. Rufen Sie mit `bin/submit.sh` das Skript auf, das die Lösungen testet und kompiliert. Wenn Maven eine Fehlermeldung zeigt, beheben Sie diese zuerst, bevor Sie mit dem nächsten Schritt fortfahren.
4. Wenn Sie Meldung "✅ Projekt gebaut" bekommen, checken (comitten) Sie Ihre Änderungen in `git` ein.
5. Rufen Sie mit `bin/submit.sh` erneut das Skript auf. Wenn alles klappt, bekommen Sie die Anzeige "✅ Aktuelle Lösungen eingereicht" und Ihre Lösung ist im System angekommen.

View File

@ -48,7 +48,14 @@ Die Bearbeitung der Aufgaben und das Erreichen einer hinreichend großen Zahl vo
Hinweise zur nötigen Softwareausstattung finden Sie [hier](help/softwareausstattung.md).
| # | Ausgabe | Thema | Fällig am 📆 |
|----|------------|-------------------------------------------------|----------------|
| 1. | 14.03.2023 | [Umgebung aufsetzen](Assignment_001/readme.md) | |
| 2. | 14.03.2023 | [Erster Commit](Assignment_002/readme.md) | **24.03.2023** |
| # | Ausgabe | Thema | Fällig am 📆 |
|----|------------|-----------------------------------------------------------------|----------------|
| 1. | 14.03.2023 | [Umgebung aufsetzen](Assignment_001/readme.md) | **26.03.2023** |
| 2. | 14.03.2023 | [Erster Commit](Assignment_002/readme.md) | **26.03.2023** |
| 3. | 14.03.2023 | [String in Großbuchstaben umwandeln](Assignment_003/readme.md) | |
| 4. | 14.03.2023 | [Labeled Break](Assignment_004/readme.md) | |
| 5. | 14.03.2023 | [Passwortbewertung](Assignment_005/readme.md) | |
| 6. | 14.03.2023 | [printf mit Formatstring](Assignment_006/readme.md) | |
| 7. | 14.03.2023 | [Maximum in einem Array suchen](Assignment_007/readme.md) | |
| 8. | 14.03.2023 | [Taschenrechner](Assignment_008/readme.md) | |
| 9. | 01.01.2023 | [Quine](Assignment_009/readme.md) | |

View File

@ -0,0 +1,6 @@
package pr2.auffrischung.grossmacher;
public class Grossmacher {
// TODO: main-Methode implementieren
}

View File

@ -0,0 +1,19 @@
package pr2.auffrischung.labeled_break;
public class ArraySucher {
/**
* Sucht das erste Element, dass nicht 0 ist.
*
* @param array das Array in dem gesucht werden soll
* @return {@code true}, wenn ein Element gefunden wird,
* andernfalls {@code false}.
*/
public boolean suche(int[][] array) {
boolean found = false;
// TODO: Methodenrumpf schreiben
return found;
}
}

View File

@ -0,0 +1,22 @@
package pr2.auffrischung.password;
public class PasswortChecker {
public static int checkPassword(String password) {
int points = 0;
// TODO: Methode implementieren
return points;
}
public static void main(String[] args) {
System.out.println(checkPassword("mutti"));
System.out.println(checkPassword("Mutti"));
System.out.println(checkPassword("mutti123"));
System.out.println(checkPassword("Mutti123"));
System.out.println(checkPassword("Mutti123!%"));
System.out.println(checkPassword("1234"));
}
}

View File

@ -0,0 +1,18 @@
package pr2.auffrischung.printf;
public class DoubleFormatter {
public static void printDouble(double d) {
// TODO: Wert ausgeben
}
public static void main(String[] args) {
printDouble(1.0);
printDouble(10.1);
printDouble(2.01);
printDouble(2.001);
printDouble(2.0001);
printDouble(2.0004);
printDouble(2.0005);
}
}

View File

@ -0,0 +1,19 @@
package pr2.auffrischung.suchemax;
public class GroessteZahl {
public int sucheMax(int[] zahlen) {
int max = 0;
// TODO: Methode implementieren
return max;
}
public static void main(String[] args) {
GroessteZahl g = new GroessteZahl();
System.out.println(g.sucheMax(new int[] {1, 5, 8, 2, 0}));
System.out.println(g.sucheMax(new int[] {-1, -5, -8, -2, -20}));
System.out.println(g.sucheMax(new int[] {10000, -10000, 1, 2, 33}));
}
}

View File

@ -0,0 +1,18 @@
package pr2.auffrischung.taschenrechner;
public class Taschenrechner {
public double rechne(double o1, char op, double o2) {
// TODO: Implementieren
return 0.0;
}
public static void main(String[] args) {
Taschenrechner t = new Taschenrechner();
System.out.println(t.rechne(1, '+', 2));
System.out.println(t.rechne(1, '-', 2));
System.out.println(t.rechne(2, '*', 2));
System.out.println(t.rechne(4, '/', 2));
System.out.println(t.rechne(2, '^', 32));
}
}