Werkstoffphysik-Übung TU Braunschweig zur Vorlesung von A. Waag PDF

Title Werkstoffphysik-Übung TU Braunschweig zur Vorlesung von A. Waag
Course Werkstoffphysik
Institution Technische Universität Braunschweig
Pages 7
File Size 187.6 KB
File Type PDF
Total Downloads 43
Total Views 133

Summary

Werkstoffphysik-Übung TU Braunschweig zur Vorlesung von A. Waag...


Description

Programmieren I Blatt 3 Prof. Dr. Martin Johns, Jannik Hartung, Daniel Wolfram, Patrick Glöckner

Melden Sie sich bitte für die Veranstaltung bei Stud.IP an und tragen Sie sich in einer der kleinen Übungen ein. Verspätete oder nicht hochgeladene Abgaben, Abgaben, die per Mail getätigt werden, sowie Plagiate führen zur Bewertung des gesamten Blatts mit 0 Punkten. Insgesamt können Sie für das Lösen der Pflichtaufgabe 15 Punkte erhalten. Bei Erreichen eines Punktes in den Pflichtaufgaben können Sie zusätzlich zwei Punkte für das Beachten der Checkstyle Vorgaben erhalten. Hierbei gibt es einen Zusatzpunkt für das Schreiben von Javadoc Kommentaren und einen für das Einhalten der Formatierungsrichtlinien. Berücksichtigt werden ausschließlich Ergebnisse, die bis zum 13.06.2021 um 23:59 in den bereits für dieses Übungsblatt angelegten Ordner in Ihrem Git Repository auf den master-Branch gepusht wurden. Nur kompilierende Programme gelten als Lösung! Ein Programm das Teillösungen beinhaltet, aber nicht kompiliert oder aus anderen Gründen nicht ausführbar ist, erhält 0 Punkte. Für die meisten Aufgaben geben wir Ihnen Vorgaben, wie die von Ihnen zu erstellenden Klassen zu heißen haben oder in welchen Ordner sie abgelegt werden sollen. Als top-level Ordner gilt immer der nach diesem Blatt benannte Ordner in Ihrem Repository, für dieses Blatt also blatt3. Die Vorgaben sehen wie folgt aus. Vorgaben Ordner: pflichtaufgabe0 Klassen: Klasse1, Klasse2, Klasse3

Sie würden also für die Pflichtaufgabe 0 den Ordner pflichtaufgabe0 im Ordner blatt3 anlegen und dort mindestens die Klassen Klasse1.java, Klasse2.java, Klasse3.java erstellen. Wenn Sie weitere Klassen erstellen wollen um es sich selbst einfacher zu machen, steht Ihnen das natürlich frei.

Contents

2

Contents Aufgabe 1: Geburtstagsparadoxon

2

Aufgabe 2: ISBN-Nummer

2

Aufgabe 3: Glückliche oder traurige Zahl

3

Pflichtaufgabe 1: Der Zauberstab

4

Pflichtaufgabe 2: Die Gefährten

4

A Links

7

Aufgabe 1: Geburtstagsparadoxon Die Wahrscheinlichkeit p(n), dass mindestens zwei Personen aus einer Gruppe von n Menschen am gleichen Tage Geburtstag haben, beträgt p ( n) = 1 −

365 − n + 1 365 364 363 · · ·...· . 365 365 365 365

Schreiben Sie ein Java-Programm, um die Wahrscheinlichkeiten p(2), …, p(60) zu berechnen und auszugeben. Wie viele Personen müssen der Gruppe mindestens angehören, damit die gesuchte Wahrscheinlichkeit größer als 50 % ist?

Aufgabe 2: ISBN-Nummer 2007 wurde die Internationale Standard-Buchnummer (ISBN) 13-stellig eingeführt. Beispielsweise ist 978-3-8274-1631-5 eine gültige 13-stellige ISBN. Die erste Zifferngruppe ist 978 oder 979. Die zweite Gruppe gibt die Sprachgruppe an. Der Ziffer 3 können wir entnehmen, dass das Buch im deutschsprachigen Raum erschienen ist. Die dritte Zifferngruppe 8274 gibt den Verlag an. Die vierte Zifferngruppe, hier 1631, identifiziert das betreffende Buch. Die letzte Ziffer ist eine sogenannte Prüfziffer. Mithilfe der Prüfziffer können einzelne fehlerhafte Ziffern oder zwei vertauschte Ziffern erkannt werden. Die Prüfziffer wird wie folgt berechnet: Man multipliziert die erste Ziffer mit 1, die zweite mit 3, die dritte mit 1 und abwechselnd weiter mit 3, 1, 3, 1, 3, 1, 3, 1 und 3. Die so gewonnenen Produkte werden addiert. Die Differenz zur nächsten durch 10 teilbaren Zahl ist die Prüfziffer. Für das obige Beispiel ergibt sich die Prüfziffer also wie folgt:

105 = 9 + 3 ∗ 7 + 8 + 3 ∗ 3 + 8 + 3 ∗ 2 + 7 + 3 ∗ 4 + 1 + 3 ∗ 6 + 3 + 3 ∗ 1 5 = 110 − 105

Contents

3

Ziel dieser Aufgabe ist es ein Prüf-Programm für ISBN zu schreiben. Im ersten Schritt soll das Tool eine ISBN als Kommandozeilen Parameter erhalten. Im zweiten Schritt soll geprüft werden, ob dies eine gültige 13-stellige ISBN darstellt. Wenn die Prüfziffer fehlerhaft ist, soll die ISBN mit korrekter Prüfziffer ausgegeben werden. Beispiele: javac Isbn.java java Isbn 978-3-8274-1631-5 978-3-8274-1631-5 ist eine gültige ISBN. java Isbn 978-3-446-44073-2 978-3-446-44073-2 ist eine fehlerhafte ISBN. Gültig wäre 978-3-446-44073-9

Hinweise: Die Methode char charAt(int index) der Klasse String liefert das Zeichen, das an der Stelle index des Strings ist. Ein Beispiel ist ("Test".charAt(0)=='T')==true . Durch den Typcast (int) erhält man das Zeichen als int -Wert. Die Zeichen '0',...,'9' haben die int Werte 48,...,57 . Wegen der Codierung (s. Vorlesung) besitzen die Zeichen '0',...,'9' nicht die int -Werte 0,...,9 . Das Zeichen '-' besitzt den int -Wert 45 .

Aufgabe 3: Glückliche oder traurige Zahl Die Dezimalziffern einer natürlichen Zahl n, n ≥ 1, werden einzeln quadriert und addiert. Anschließend wird mit der entstandenen Summe genauso verfahren. Die Ausgangszahl n ist fröhlich, wenn man bei diesem Vorgehen schließlich auf die Zahl 1 stößt, ansonsten ist sie traurig. Beispielsweise ist 7 eine fröhliche Zahl: 7: 49: 97: 130: 10:

72 = 49 2 2 4 +9 = 97 92 + 72 = 130 12 + 32 + 02 = 10 12 + 02 = 1

Schreiben Sie ein Java-Programm, das alle fröhlichen Zahlen zwischen einer Unter- und einer Obergrenze berechnet und die zugehörigen Folgen ausgibt. Der Dialog soll folgendermaßen ablaufen: Bitte geben Sie die untere Grenze ein: 5 Bitte geben Sie die obere Grenze ein: 30 7 -> 49 -> 97 -> 130 -> 10 -> 1 10 -> 1 13 -> 10 -> 1 19 -> 82 -> 68 -> 100 -> 1 23 -> 13 -> 10 -> 1 28 -> 68 -> 100 -> 1

Hinweis: Für traurige Zahlen führt die Folge schließlich auf die Zahl 4.

Contents

4

Pflichtaufgabe 1: Der Zauberstab - (5 Punkte) Vorgaben Ordner: pflichtaufgabe1 Klassen: MagicWand, Main

Wir wollen nun den Einstig in die Objektorientierung und den Umgang mit mehreren Klassen wagen. Erstellen Sie die Klasse Zauberstab mit einem Konstruktor welcher String color und int strength an nimmt (1 Punkt). Speichern Sie die angenommenen Werte in privaten Variablen und schreiben Sie get-Methoden für beide Variablen (1 Punkt). Erstellen Sie eine Klasse Main in welcher zwei Instanzen des Zauberstabs mit unterschiedlicher Stärke und Farbe erstellt werden. Vergleichen Sie die Stärke beider Zauberstäbe mithilfe der get-Methoden und geben Sie auf der Konsole den stärkeren der beiden Zauberstäbe aus. (1.5 Punkte). Erstellen Sie zwei Zauberstäbe mit der selben Farbe und Stärke. Sind diese beiden aus der Sicht von Java identisch? Führen Sie den Test mithilfe von equals() durch. Sie werden feststellen, dass für Java die beiden Objekte nicht gleich sind. Dies liegt daran, dass Java nicht weiß, wie es die beiden Objekte vergleichen soll. Sie müssen also die von java.lang.Object geerbte equals() Funktion überschreiben, sodass Sie die Werte von Farbe und Stärke überprüft. Achten Sie darauf, dass equals() jedes beliebige Objekt und nicht nur Zauberstäbe annimmt. Sie müssen somit zunächst testen, ob Sie tatsächlich einen Zauberstab mit einem Zauberstab vergleichen (1.5 Punkte). Beispielausgabe: The blue staff with strength 7 is stronger then the green staff with strength 5. The staffs are the same: false

Pflichtaufgabe 2: Die Gefährten - (10 Punkte) Vorgaben Ordner: pflichtaufgabe2 Klassen: Battle, Hobbit, Ork, Weapon, Sword, Fists

Auf Ihrer Reise durch Mittelerde geraten Frodo, Sam, Meri, Pipin in einen Hinterhalt. 10 Orks kommen von unterschiedlichen Seiten auf Sie zu und greifen sie nacheinander an, es gibt keinen Weg zu fliehen. Sie müssen sich dem Kampf stellen.

Contents

5

Die Hobbits und Orks können Waffen halten, welche einen Namen tragen können. Überladen sie hierfür den Konstruktor. Erstellen Sie eine geeignete Klasse Weapon, welche die Funktionen dealDamage() und getName() bereitstellt. Entscheiden Sie, ob es sinnvoller ist eine oder beide Funktionen bereits hier, oder in den Subklassen zu implementieren (1 Punkt). Erstellen Sie die Klassen Fists und Sword als konkrete Waffen. Fists teilen einen festen Schadenswert zwischen 5 und 10 aus, von Hobbit zu Hobbit unterschiedlich. Das Schwert teilt hingegen 20 - 30 Schaden pro Schlag aus. Das selbe gilt auch für die Orks (1.5 Punkte). Nun folgen die Kämpfer. Alle Hobbits tragen einen Namen, welcher über eine get-Methode zugänglich ist. Zusätzlich müssen Hobbits und Orks auch noch die Waffe welche sie halten im Konstruktor übergeben bekommen (1 Punkt). Damit der Kampf enden kann, haben sowohl Hobbits als auch Orks Lebenspunkte. Hobbits haben 100 LP, Orks zwischen 80 und 150 LP. Die Funktion recvDamage(...) zieht den Schaden von der Anzahl der Lebenspunkte ab. attack() gibt den Schaden den die Figur mit dem Schlag hinzufügt zurück. Mit isAlive() soll überprüft werden ob die Figur noch am leben ist (1.5 Punkte). Alle am Ende der Runde lebenden Hobbits sind von einer magische Aura umgeben, welche sie einmal pro Runde um 0 - 15 LP heilt. Implementieren sie hierfür eine Funktion healed(...) . Nun kommt es zum Kampf. Dieser wird von der Klasse Battle gesteuert. Wir benötigen zunächst vier Hobbits. Jeder Hobbit bekommt zufällig eine der beiden Waffen (1.5 Punkte). Es wird 10 Runden gekämpft. Erstellen Sie am Anfang jeder Runde einen Ork. Dieser erhält ebenfalls zufällig eine Waffe. Zuerst greift ein Hobbit den Ork, dann der Ork den Hobbit an. Dies wird für alle Hobbits wiederholt. Nachdem alle Hobbits einmal angegriffen haben, werden Sie durch die Aura geheilt. Die Runde endet, wenn der Ork oder alle Hobbits tot sind. (2.5 Punkte) Beispielausgabe: Round 1: An ork emerges, ready for battle! Frodo [Sting (Sword)] dealt 23 damage. Orc [Fists] dealt 6 damage. Sam [Fists] dealt 6 damage. Orc [Fists] dealt 6 damage. Meri [Sword] dealt 20 damage. Orc [Fists] dealt 6 damage. Pipin [Fists] dealt 7 damage. Orc [Fists] dealt 6 damage. The Aura healed everybody by 7. Frodo [Sting (Sword)] dealt 30 damage. Orc [Fists] dealt 6 damage. Sam [Fists] dealt 6 damage. Orc [Fists] dealt 6 damage. Meri [Sword] dealt 24 damage. Orc [Fists] dealt 6 damage. Pipin [Fists] dealt 7 damage. Orc [Fists] dealt 6 damage. The Aura healed everybody by 10. Frodo [Sting (Sword)] dealt 26 damage. The Ork died!

Contents

6

The Aura healed everybody by 7. ... Round 10: Frodo [Sting (Sword)] dealt 23 damage. Orc [Fists] dealt 6 damage. Sam [Fists] dealt 6 damage. Orc [Fists] dealt 6 damage. Meri [Sword] dealt 20 damage. Orc [Fists] dealt 6 damage. Pipin [Fists] dealt 7 damage. Orc [Fists] dealt 6 damage. The Aura healed everybody by 7. Frodo [Sting (Sword)] dealt 30 damage. Orc [Fists] dealt 6 damage. Sam [Fists] dealt 6 damage. Orc [Fists] dealt 6 damage. Meri [Sword] dealt 24 damage. Orc [Fists] dealt 6 damage. Pipin [Fists] dealt 7 damage. Orc [Fists] dealt 6 damage. The Aura healed everybody by 10. Frodo [Sting (Sword)] dealt 26 damage. The Ork died! The Aura healed everybody by 7. The fellowship won, all orks are dead!

Bonus (nicht bewertet): Ein Zauberstab für Gandalf Hinweis: Wenn Sie diese Aufgabe programmieren wollen, machen Sie es bitte in einem anderen Ordner als die Pflichtaufgabe, da dieser Teil nicht gewertet wird. Erstellen Sie eine Zauberer Klasse. Der Zauberer soll an die stelle der Aura treten und seine Gefährten heilen. Zusätzlich trägt er den Zauberstab aus der ersten Pflichtaufgabe als Waffe. Gibt es vielleicht sogar verschiedene Zauber die unterschiedlich viel Schaden hinzufügen oder heilen? Vielleicht mit unterschiedlicher Abklingzeit?

Contents

A

7

Links 1. Stud.IP: https://studip.tu-braunschweig.de 2. Git Dokumentation: https://git-scm.com/ 3. Git des IAS: https://programming.ias.cs.tu-bs.de 4. Allgemeine Java API Dokumentation: https://docs.oracle.com/javase/8/docs/api/overview-summary.html 5. Java Object Dokumentation: https://docs.oracle.com/javase/7/docs/api/java/lang/ Object.html...


Similar Free PDFs