Institut für Programmierung und Reaktive Systeme 20. November Programmieren I. 4. Übungsblatt

Ähnliche Dokumente
Institut für Programmierung und Reaktive Systeme 5. Dezember Programmieren I. 5. Übungsblatt

Institut für Programmierung und Reaktive Systeme 4. Dezember Programmieren I. 5. Übungsblatt

Institut für Programmierung und Reaktive Systeme 27. November Programmieren I. 4. Übungsblatt

Institut für Programmierung und Reaktive Systeme 27. Juni Programmieren II. 14. Übungsblatt

Institut für Programmierung und Reaktive Systeme 6. November Programmieren I. 3. Übungsblatt

Institut für Programmierung und Reaktive Systeme 24. Juni Programmieren II. 14. Übungsblatt

Institut für Programmierung und Reaktive Systeme 24. April Programmieren II. 10. Übungsblatt

Institut für Programmierung und Reaktive Systeme 7. Mai Programmieren II. 11. Übungsblatt

Institut für Programmierung und Reaktive Systeme 28. Mai Programmieren II. 12. Übungsblatt

Java I Vorlesung Imperatives Programmieren

Institut für Programmierung und Reaktive Systeme 9. Januar Programmieren I. 6. Übungsblatt

Institut für Programmierung und Reaktive Systeme 11. Dezember Programmieren I. 5. Übungsblatt

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Vorkurs Informatik WiSe 16/17

Vorkurs Informatik WiSe 17/18

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2

Übungen zur Vorlesung Wissenschaftliches Rechnen I

Institut für Programmierung und Reaktive Systeme 18. Dezember Programmieren I. 6. Übungsblatt

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Datentypen und Operatoren Ganzzahlige Numerische Datentypen Logischer Datentyp

Klausur Grundlagen der Programmierung

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Vorbereitende Aufgaben

Institut für Programmierung und Reaktive Systeme 10. Mai Programmieren II. 11. Übungsblatt

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

2.1 Fundamentale Typen

Martin Unold INFORMATIK. Geoinformatik und Vermessung

5.1 Basistypen. Wie viele Werte kann man mit n Bit darstellen? 30. Jan Felix Brandt, Harald Räcke 70/596

Institut für Programmierung und Reaktive Systeme 8. Mai Programmieren II. 10. Übungsblatt

Institut für Informatik und Angewandte Kognitionswissenschaften

Erste Java-Programme (Scopes und Rekursion)

Einstieg in die Informatik mit Java

1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Einführung in C. EDV1-04C-Einführung 1

Übungsblatt 1. Java Vorkurs (WS 2017)

hue12 January 24, 2017

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen

Institut für Programmierung und Reaktive Systeme 31. Mai Programmieren II. 12. Übungsblatt

Probeklausur Java Einführung in die Informatik. Wintersemester 2014/2015

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Institut für Programmierung und Reaktive Systeme 2. Februar Programmieren I. Übungsklausur

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Übungen zum Bioinformatik-Tutorium. Blatt 3

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Welche Informatik-Kenntnisse bringen Sie mit?

float: Fließkommazahl nach IEEE 754 Standard mit 32 bit

5.1 Mehr Basistypen. (Wie viele Werte kann man mit n Bit darstellen?)

Grundlagen der Programmierung

RO-Tutorien 3 / 6 / 12

Test zu Grundlagen der Programmierung Leitung: Susanne Guth/Michael Hahsler. 31. Jänner 2003

Institut für Programmierung und Reaktive Systeme 27. Mai Programmieren II. 12. Übungsblatt

Institut für Programmierung und Reaktive Systeme 25. Januar Programmieren I. Übungsklausur

Institut für Programmierung und Reaktive Systeme 12. Juni Programmieren II. 12. Übungsblatt

Probeklausur Java Einführung in die Informatik. Wintersemester 2016/2017

Java Übung. Übung 2. Werner Gaulke. 19. April Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung.

Programmiervorkurs Einführung in Java Tag 1

Institut für Programmierung und Reaktive Systeme 5. Dezember Programmieren II. 12. Übungsblatt

Vorbereitende Aufgaben

PK-Einstufungstest. 1. Allgemeine Multiple-Choice-Aufgaben. Aufgabe 1.1. Alle Aufgaben beziehen sich auf Java.

Programmiertechnik Klassenvariablen & Instantiierung

Einstieg in die Informatik mit Java

Übungen zu Algorithmen

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Institut für Programmierung und Reaktive Systeme 19. August Programmier-Labor. 1. Übungsblatt

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

Einführung in C. Alexander Batoulis. 5. Mai Fakutltät IV Technische Universität Berlin

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

Programmieren, Wintersemester 13/14 Übungsleiter: Sebastian Ebers Aufgabenblatt 3

Vorkurs Informatik WiSe 16/17

Algorithmen und Datenstrukturen 01

Probeklausur: Programmierung WS04/05

Institut für Programmierung und Reaktive Systeme 7. November Programmieren I. 3. Übungsblatt

Informatik. Wiederholung Felder (Arrays), string. Vorlesung

Sommersemester Jewgeni Rose. Technische Universität Braunschweig

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Probeklausur Java Einführung in die Informatik. Wintersemester 2017/2018

Programmierkurs C++ Lösungen zum Übungsblatt 3. Nils Eissfeldt und Jürgen Gräfe. 2. November Aufgabe 5

Probeklausur Java Einführung in die Informatik. Wintersemester 2014/2015. Musterlösung

Einstieg in die Informatik mit Java

CoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7.

2 Programmieren in Java I noch ohne Nachbearbeitung

Wie entwerfe ich ein Programm?

Kapitel 3: Variablen

Ein erstes Java-Programm

GI Vektoren

Variablen. int Flugzeug. float. I write code Hund. String. long. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. Juni 2004

Elementare Konzepte von

Anweisungen zur Ablaufsteuerung

Einstieg in die Informatik mit Java

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

Programmieren I + II Regeln der Code-Formatierung

Kontrollstrukturen: Wiederholungsanweisungen

Intensivübung zu Algorithmen und Datenstrukturen

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Transkript:

Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 20. November 2017 Programmieren I 4. Übungsblatt Hinweis: Auf diesem und den folgenden Übungsblättern finden Sie jeweils eine Pflichtaufgabe. Insgesamt werden in diesem Semester fünf Pflichtaufgaben gestellt. Ihre Lösung der Pflichtaufgabe dieses Übungsblatts müssen Sie bis spätestens zum 3. Dezember 2017 15:00 Uhr auf der Web-Seite https://prog-abgabe.ips.cs.tu-bs.de/ abgeben. Beachten Sie, dass Sie Ihre Lösung auch Ihrem Tutor erläutern müssen. Halten Sie sich bei der Programmierung an die in der Vorlesung/Übung vorgestellten Richtlinien zur Formatierung von Java-Programmen. Auf der Internetseite zu dieser Veranstaltung finden Sie eine Zusammenstellung dieser Richtlinien. Kommentieren Sie Ihre Lösung der Pflichtaufgabe. Der Kommentar muss Ihren Namen, Ihre Matrikelnummer und Ihre Übungsgruppe sowie eine Beschreibung Ihrer Lösung enthalten. Auf der Abgabeseite finden Sie eine Möglichkeit, die Formatierung Ihrer Lösung zu checken. Aufgabe 18: Wie wird der Buchstabe ß in den folgenden Zeichensätzen dargestellt? a) ASCII-Zeichensatz b) Iso-Latin-1-Code c) Unicode d) UTF-8-Code Was muss in System.out.println( \uxxxx ) bzw. System.out.println( \yyy ) für xxxx bzw. yyy eingesetzt werden, damit der Buchstabe ß ausgegeben wird? Wie wird der ganzzahlige Wert 3 in Java gespeichert?

Aufgabe 19: Diese Aufgabe bietet Ihnen die Möglichkeit, grundlegende Konzepte durch die Bearbeitung weiterer Beispiele zu wiederholen. a) Literale: Geben Sie für die primitiven Datentypen char, long, float und double die Formen der Literale anhand von Beispielen an. b) Speicherung von Werten: Die interne Darstellung einer Gleitkommazahl vom Typ float in einem 32-Bit-Wort nach dem IEEE-Standard sieht wie folgt aus: 31 30... 23 22... 0 V E M Das Vorzeichen V wird durch 1 Bit gespeichert. Der Exponententeil E wird durch 8 Bits dargestellt und liegt im Bereich von 0 bis 255. Die Werte E = 0 und E = 255 sind für spezielle Zahlen (Null, denormalisierte Werte, Unendlich, Not-a-Number) reserviert. Der Mantissenteil M beansprucht 23 Bits. Im Normalfall, d. h. mit Ausnahme der speziellen Zahlen, ist M der Anteil der Mantisse nach dem Dezimalpunkt. Vor dem Dezimalpunkt steht eine 1, die nicht abgespeichert wird. Man sagt, die Mantisse sei normalisiert. Im normalisierten Fall, d. h. 1 E 254, besitzt eine Gleitkommazahl mit dem Vorzeichen V, dem Exponententeil E und dem Mantissenteil M den folgenden Wert: ( 1) V 1.M 2 E 127 Wie werden die float-werte +41.375 und 41.375 gespeichert? Welche Werte sind es, wenn diese Bitfolgen als int-werte interpretiert werden? Welches ist der maximale float-wert? c) Operatoren: Es sei x eine Variable vom Typ int. Geben Sie einen Ausdruck an, der das i.-te Bit des gespeicherten Werts von x als Ergebnis liefert. d) Anweisungen: Schreiben Sie eine Methode static String showintbits(int x), die die gespeicherten Bits des Parameters x als String liefert. Die Methode static int floattointbits(float v) der Klasse Float interpretiert die float-darstellung des Parameters als int-darstellung. Verwenden Sie diese Methode und Ihre Methode showintbits, um Ihre Darstellungen der float-werte +41.375 und 41.375 zu testen. 2

Aufgabe 20: Sie sollen verschiedene Variable in einem Programm deklarieren. Finden Sie den passenden Typ für Variable, die angeben, mit welchem Buchstaben Ihr Nachname beginnt, wie viele Menschen in Deutschland leben, wie viele Menschen auf der Erde leben, ob Sie männlich oder weiblich sind, wie viele Semester Sie studieren werden, wie viele Student(innen) an dieser Vorlesung teilnehmen, ob Sie BaFöG erhalten, wie teuer ein Brot ist, wie groß die Masse der Erde ist. Aufgabe 21: Werten Sie jeweils unter Annahme der Deklaration int x = 7; die folgenden Ausdrücke aus. In welchen Fällen wird der Wert von x durch die Auswertung verändert? Überlegen Sie zuerst und überprüfen Sie Ihre Antwort anschließend am Rechner. a) x <= 2 b) x -= 2 c) x % 2 d) x / 2 e) x & 2 f) x << 2 g) x 2 h) x ^ 2 i) x >> 2 j) x += 2 k) x =+ 2 l) x =~ 2 Aufgabe 22: Was geben die folgenden Programmstücke aus? Überlegen Sie zuerst und überprüfen Sie Ihre Antwort anschließend am Rechner. a) boolean b = false; if (b = true) System.out.println(true); else System.out.println(false); b) int i = 0; if (i<1) i++; if (i<1) i++; else i--; System.out.println(i); c) int i = 0; if (i>0) if (i<1) i++; else i--; System.out.println(i); 3

Aufgabe 23: Der Algorithmus 1. Lies den Wert von n ein. 2. Setze i auf 2. 3. Solange i < 3(n + 1) ist: a. Erhöhe i um 3. b. Gib (2i + 1) 2 aus. soll auf drei verschiedene Arten implementiert werden: Schreiben Sie jeweils ein Java- Programmstück, das diesen Algorithmus als while-, als for- und als do-schleife realisiert. Sämtliche Programmstücke sollen die gleiche Ausgabe erzeugen. Pflichtaufgabe 24: In dieser Pflichtaufgabe wird es darum gehen, dass Sie erste Schritte im Bereich der Objektorientierung und der Kapselung bestimmter Funktionalitäten Ihres Programms unternehmen. Sie werden das Spiel um Funktionalität und Interaktivität erweitern. Implementieren Sie die folgenden Eigenschaften: Die AlienGame-Klasse: Die AlienGame-Klasse soll weiterhin die main-methode enthalten um das Spiel zu starten. Die Generierung des Spielfelds jedoch soll in den Konstruktor der Map-Klasse ausgelagert werden. Außerdem soll in der main-methode die Interaktion mit dem Nutzer gesteuert werden. Der Nutzer soll in jeder Spielrunde über Eingaben auf der Konsole ein Feld auswählen, das angegriffen werden soll. Felder, die nicht im Spielfeld liegen oder auf denen kein lebendes Alien steht, sollen nicht angegriffen werden können und der Spieler soll die Möglichkeit erhalten ein neues Feld anzugreifen. Genauso sollen andere ungültige Eingaben behandelt werden und nicht zum Absturz des Spiels führen. Hat der Spieler seinen Zug also aufgeführt, sind die Aliens an der Reihe. Jedes noch existierende Alien soll einen Angriff ausführen. Das Spiel soll genau dann beendet werden, sobald entweder alle Aliens getroffen wurden oder der Spieler besiegt ist. Die Map-Klasse: Erstellen Sie die Klasse Map. Diese repräsentiert das Spielfeld und sollte wenigstens die folgenden Objektvariablen enthalten: char[][] map: das Spielfeld dieser Map-Instanz Player player: den Player um dessen Status und Aktionen zu steuern Alien[] aliens: ein Array das die Aliens verwaltet Desweiteren soll die Map-Klasse die tostring()-methode implementieren um nach jeder Spielrunde die aktuelle Karte ausgeben zu können. Dabei sollte das Spielfeld nun zu allen Seiten begrenzt ausgegeben und mit einer Orientierung für Koordinaten versehen werden. Orientieren sie sich am unten aufgeführten Beispiel. Die Alien-Klasse: Erstellen Sie die Klasse Alien. Eine Instanz dieser Klasse soll ein einzelnes Alien auf dem Spielfeld repräsentieren. Die Klasse sollte Objektvariablen für die Position auf dem Spielbrett enthalten. Eine Möglichkeit den Status des Aliens (lebendig/tot) zu speichern kann ebenfalls nützlich sein. Desweiteren soll hier eine Methode 4

enthalten sein um das Player-Objekt anzugreifen. Ob ein Angriff eines Aliens gelingt, soll zufallsabhängig sein. Dabei soll die Wahrscheinlichkeit, ob der Spieler getroffen wird, von der Distanz der Figuren abhängen. Berechnen Sie die Distanz zum Spieler, indem Sie die absoluten Beträge der Differenzen der Koordinaten berechnen. Einfacher gesagt: distance(player, alien) = x alien x player + y alien y player Die Player-Klasse: Erstellen Sie die Klasse Player. Eine Instanz dieser Klasse soll den Spieler repräsentieren. Die Klasse sollte Objektvariablen für die Position auf dem Spielbrett, sowie eine Anzahl an Trefferpunkten enthalten. Die Trefferpunkte entsprechen dem Leben des Spielers. Gelingt ein Angriff eines Aliens, so soll der Player einen Trefferpunkt verlieren. Desweiteren soll auch hier eine Methode enthalten sein um ein Alien-Objekt anzugreifen. Für die Angriffswahrscheinlichkeit des Players gilt das gleiche wie für die Aliens. Spielablauf: Ein beispielhafter Spielablauf kann so aussehen: java AlienGame 5 5 2 01234 0 1 2 P A 3 4 A Der S p i e l e r hat noch 5 H i t p o i n t s Wohin s o l l der S p i e l e r a n g r e i f e n? (X Koordinate ) 4 Wohin s o l l der S p i e l e r a n g r e i f e n? (Y Koordinate ) 2 Der S p i e l e r hat das Alien g e t r o f f e n! Das Alien b e i ( 3, 4 ) g r e i f t den S p i e l e r an Das Alien hat den S p i e l e r v e r f e h l t 01234 0 1 2 P X 3 4 A Der S p i e l e r hat noch 5 H i t p o i n t s Wohin s o l l der S p i e l e r a n g r e i f e n? (X Koordinate ) 3 Wohin s o l l der S p i e l e r a n g r e i f e n? (Y Koordinate ) 5

4 Der S p i e l e r hat das Alien g e t r o f f e n! Der S p i e l e r hat a l l e A l i e n s b e s i e g t! Hinweise: Nutzen Sie Klasse Scanner um die Interaktion mit dem Nutzer zu steuern. Absolute Beträge können Sie mithilfe von Math.abs() berechnen. 6