Update of exercises

master
Thomas Smits 2023-03-20 16:51:33 +01:00
parent d1a354077b
commit acddfd7d07
17 changed files with 365 additions and 72 deletions

View File

@ -22,16 +22,10 @@ Zeichen : 24
## Abgabe (optional)
__Sie müssen keine Lösung für diese Aufgabe einreichen, können es aber, wenn Sie wollen.__
__Sie müssen keine Lösung für diese Aufgabe einreichen.__
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:
Sie können Ihre Lösung aber auf die Konformität mit den Programmierstandards testen. 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

@ -17,16 +17,10 @@ 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.__
__Sie müssen keine Lösung für diese Aufgabe einreichen.__
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:
Sie können Ihre Lösung aber auf die Konformität mit den Programmierstandards testen. 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

@ -22,16 +22,10 @@ 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.__
__Sie müssen keine Lösung für diese Aufgabe einreichen.__
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:
Sie können Ihre Lösung aber auf die Konformität mit den Programmierstandards testen. 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

@ -17,16 +17,10 @@ Schreiben Sie eine Methode `printDouble`, die eine beliebige double-Zahl mit imm
## Abgabe (optional)
__Sie müssen keine Lösung für diese Aufgabe einreichen, können es aber, wenn Sie wollen.__
__Sie müssen keine Lösung für diese Aufgabe einreichen.__
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:
Sie können Ihre Lösung aber auf die Konformität mit den Programmierstandards testen. 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

@ -17,16 +17,10 @@ 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.__
__Sie müssen keine Lösung für diese Aufgabe einreichen.__
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:
Sie können Ihre Lösung aber auf die Konformität mit den Programmierstandards testen. 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

@ -17,16 +17,10 @@ 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.__
__Sie müssen keine Lösung für diese Aufgabe einreichen.__
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:
Sie können Ihre Lösung aber auf die Konformität mit den Programmierstandards testen. 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

@ -17,16 +17,10 @@ Hinweis: Die Lösung wird deutlich einfacher, wenn Sie `printf` und `String.repl
## Abgabe (optional)
__Sie müssen keine Lösung für diese Aufgabe einreichen, können es aber, wenn Sie wollen.__
__Sie müssen keine Lösung für diese Aufgabe einreichen.__
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:
Sie können Ihre Lösung aber auf die Konformität mit den Programmierstandards testen. 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,26 @@
# Java-Coding-Standard anwenden
## Lernziel
Java-Code korrekt entsprechend dem [Coding-Standard von Oracle](http://www.oracle.com/technetwork/java/codeconventions-150003.pdf) formatieren.
## Aufgabe
Im Paket [pr2.intro.coding_standard](../sources/src/main/java/pr2/intro/coding_standard/) finden Sie eine Klasse `CodingStandard`. Compilieren Sie die Datei `CodingStandard.java` und stellen Sie so sicher, dass es sich um eine syntaktisch korrekte Java-Klasse handelt.
Formatieren Sie `CodingStandard` so um, dass sie dem in der Vorlesung vorgestellten Coding-Standard entspricht.
Prüfen Sie, ob sich die Klasse noch korrekt compilieren lässt, bevor sie fortfahren.
## Abgabe (optional)
__Sie müssen keine Lösung für diese Aufgabe einreichen.__
Sie können Ihre Lösung aber auf die Konformität mit den Programmierstandards testen. 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.

View File

@ -0,0 +1,24 @@
# JavaDoc schreiben
## Lernziel
Eine vorhandene Klasse mit korrekten JavaDoc-Kommentaren versehen.
## Aufgabe
Im Paket [pr2.intro.javadoc](../sources/src/main/java/pr2/intro/javadoc/) finden Sie eine Klasse namens `Waehrung`, die eine Währung repräsentiert. Leider hat ein böser Geist bei dieser Klasse fast die gesamte JavaDoc gelöscht.
Schreiben Sie eine sinnvolle JavaDoc für die Klasse `Waehrung`, die insbesondere die Funktion der Methoden und deren Parameter und Rückgabewerte erläutert. Vergessen Sie nicht, auch die Klasse selbst zu dokumentieren.
## Abgabe (optional)
__Sie müssen keine Lösung für diese Aufgabe einreichen.__
Sie können Ihre Lösung aber auf die Konformität mit den Programmierstandards testen. 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.

View File

@ -0,0 +1,24 @@
# Klasse mit JUnit testen
## Lernziel
Einen JUnit-Test für eine gegebene Klasse schreiben.
## Aufgabe
Gehen Sie in das Paket [pr2.intro.junit_faculty](../sources/src/main/java/pr2/intro/junit_faculty/).
Schreiben Sie bitte einen JUnit-Test für folgende Klasse `Fakultaet`, der die Funktionalität der Methode `fact` testet. Denken Sie insbesondere daran, die Randfälle zu testen.
## Abgabe (optional)
__Sie müssen keine Lösung für diese Aufgabe einreichen.__
Sie können Ihre Lösung aber auf die Konformität mit den Programmierstandards testen. 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.

View File

@ -0,0 +1,30 @@
# Vorhandene Bibliotheken als JAR einbinden
## Lernziel
Eine vorhandene Bibliothek in einem Projekt verwenden und hierzu ein JAR einbinden.
## Aufgabe
Im Paket [pr2.strukturierung.jars_einbinden](../sources/src/main/java/pr2/strukturierung/jars_einbinden/) finden Sie eine Klasse `PieChart`, deren Rumpf auskommentiert ist.
In dieser Aufgabe werden Sie die Bibliothek [JFreeChart](http://www.jfree.org/jfreechart/) für die Darstellung von Grafiken verwenden. Hierzu müssen die JARs der Bibliothek in das Projekt eingebunden werden.
Die beiden JAR-Dateien `jcommon-1.0.23.jar` und `jfreechart-1.0.19.jar` liegen bereits im `lib`-Ordner des Projektes, sind aber noch nicht in das Projekt eingebunden.
Binden Sie die Bibliotheken über den entsprechenden Dialog in Eclipse ein: `Properties` -> `Java Build Path` -> `Libraries` -> `Add JARs`...
Kommentieren Sie die auskommentierten Passagen in der Klasse `PieChart` wieder ein und starten Sie das Programm. Experimentieren Sie ein wenig mit Werten, die dargestellt werden.
## Abgabe (optional)
__Sie müssen keine Lösung für diese Aufgabe einreichen.__
Sie können Ihre Lösung aber auf die Konformität mit den Programmierstandards testen. 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.

View File

@ -6,12 +6,16 @@ Hier finden Sie die freiwilligen Übungen zur Vorlesung Programmieren 2 (PR2). D
Hinweise zur nötigen Softwareausstattung finden Sie [hier](help/softwareausstattung.md).
| # | Ausgabe | Thema |
|----|-----------------------------------------------------------------|----------------|
| 1. | 14.03.2023 | [String in Großbuchstaben umwandeln](Assignment_001/readme.md) |
| 2. | 14.03.2023 | [Labeled Break](Assignment_002/readme.md) |
| 3. | 14.03.2023 | [Passwortbewertung](Assignment_003/readme.md) |
| 4. | 14.03.2023 | [printf mit Formatstring](Assignment_004/readme.md) |
| 5. | 14.03.2023 | [Maximum in einem Array suchen](Assignment_005/readme.md) |
| 6. | 14.03.2023 | [Taschenrechner](Assignment_006/readme.md) |
| 7. | 14.03.2023 | [Quine](Assignment_007/readme.md) |
| # | Ausgabe | Thema |
|----|------------------------------------------------------------------------|----------------|
| 1. | 14.03.2023 | [String in Großbuchstaben umwandeln](Assignment_001/readme.md) |
| 2. | 14.03.2023 | [Labeled Break](Assignment_002/readme.md) |
| 3. | 14.03.2023 | [Passwortbewertung](Assignment_003/readme.md) |
| 4. | 14.03.2023 | [printf mit Formatstring](Assignment_004/readme.md) |
| 5. | 14.03.2023 | [Maximum in einem Array suchen](Assignment_005/readme.md) |
| 6. | 14.03.2023 | [Taschenrechner](Assignment_006/readme.md) |
| 7. | 14.03.2023 | [Quine](Assignment_007/readme.md) |
| 8. | 01.01.2023 | [Java-Coding-Standard anwenden](Assignment_008/readme.md) |
| 9. | 01.01.2023 | [JavaDoc schreiben](Assignment_009/readme.md) |
| 10. | 01.01.2023 | [Klasse mit JUnit testen](Assignment_010/readme.md) |
| 11. | 01.01.2023 | [Vorhandene Bibliotheken als JAR einbinden](Assignment_011/readme.md) |

View File

@ -0,0 +1,51 @@
package pr2.intro.coding_standard;
/**
* Klasse dient als Beispiel für den Coding-Standard und die Namenskonventionen
* bei Java-Programmen.
*/
public
class
CodingStandard {
/*
* Konstante, die dem Rest der Welt etwas mitteilen soll.
*/
public final static int konstanteMitTOLLEMWert = 3;
private int ERSTES_Feld;
private double ZWEITES_Feld;
/*
* Legt eine neue Instanz an.
*
* Erstes_Feld: das erste Feld.
* ZweitesFeld: das zweite Feld.
*/
public CodingStandard(int Erstes_Feld, double ZweitesFeld)
{
this.ERSTES_Feld = Erstes_Feld; this.ZWEITES_Feld = ZweitesFeld;
}
/*
* Methode, die etwas tut.
*
* parameter: Eingabewert für die Methode.
* gibt einen Wert abhängig von {@code parameter} zurück.
*/
public int
Methode_Die_Was_Tut(int Parameter)
{
int result;
if (Parameter > konstanteMitTOLLEMWert)
result = 12;
else
{
result = 13; }
ERSTES_Feld = result; ZWEITES_Feld = 2 * result;
return result;
}
}

View File

@ -0,0 +1,90 @@
package pr2.intro.javadoc;
public class Waehrung {
private static final long TEILER = 10000;
private final int kurs;
private final String name;
private final String kuerzel;
public Waehrung(String name, String kuerzel, double kurs) {
this.kurs = (int) (kurs * TEILER);
this.name = name;
this.kuerzel = kuerzel;
}
public long umrechnen(long betrag, Waehrung toWaehrung) {
return betrag * kurs / toWaehrung.kurs;
}
public int getKurs() {
return kurs;
}
public String getName() {
return name;
}
public String getKuerzel() {
return kuerzel;
}
/**
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return String.format("%s [%s] 1 %s = %.4f %s", name, kuerzel, "$",
kurs / (double) TEILER, kuerzel);
}
/**
* @see java.lang.Object#hashCode()
*/
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + kurs;
result = prime * result + ((kuerzel == null) ? 0 : kuerzel.hashCode());
return result;
}
/**
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
Waehrung other = (Waehrung) obj;
if (name == null) {
if (other.name != null) {
return false;
}
}
else if (!name.equals(other.name)) {
return false;
}
if (kurs != other.kurs) {
return false;
}
if (kuerzel == null) {
return other.kuerzel == null;
}
else {
return kuerzel.equals(other.kuerzel);
}
}
}

View File

@ -0,0 +1,14 @@
package pr2.intro.junit_faculty;
public class Fakultaet {
/**
* Berechnet die Fakultät fuer die gegebene Zahl.
*
* @param n Zahl für die die Fakultät berechnet werden soll.
* @return die Fakultät
*/
public int fact(int n) {
return (n == 0) ? 1 : n * fact(n - 1);
}
}

View File

@ -0,0 +1,13 @@
package pr2.intro.junit_faculty.test;
import org.junit.jupiter.api.Test;
import pr2.intro.junit_faculty.Fakultaet;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class FakultaetTest {
@Test
void testFact() {
}
}

View File

@ -0,0 +1,59 @@
package pr2.strukturierung.jars_einbinden;
import javax.swing.JFrame;
// TODO: Einkommentieren
//import org.jfree.chart.ChartFactory;
//import org.jfree.chart.ChartPanel;
//import org.jfree.chart.JFreeChart;
//import org.jfree.chart.plot.PiePlot3D;
//import org.jfree.data.general.DefaultPieDataset;
/**
* Fenster mit der Torten-Grafik.
*/
public final class PieChart {
/**
* Konstruktor.
*/
private PieChart() {
// keine Objekte benötigt.
}
/**
* Main-Methode.
*
* @param args Kommandozeilen-Argumente
*/
public static void main(String[] args) {
// TODO: Einkommentieren
// final String title = "Welches ist Euer Lieblingsspiel?";
//
// JFrame jframe = new JFrame(title);
// jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//
// DefaultPieDataset dataset = new DefaultPieDataset();
// dataset.setValue("GTA V", 20);
// dataset.setValue("Fortnite", 30);
// dataset.setValue("Elden Ring", 15);
// dataset.setValue("Horizon Forbidden West", 35);
//
// JFreeChart chart = ChartFactory.createPieChart3D(
// title,
// dataset,
// true,
// true,
// false);
//
// PiePlot3D plot = (PiePlot3D) chart.getPlot();
// plot.setForegroundAlpha(0.6f);
//
// ChartPanel chartPanel = new ChartPanel(chart);
// chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
// jframe.setContentPane(chartPanel);
// jframe.pack();
// jframe.setVisible(true);
}
}