Gegeben sind die folgenden Programmausschnitte: I. Programmausschnitt: II. Programmausschnitt: III. Programmausschnitt: IV. Programmausschnitt:

Ähnliche Dokumente
Thomas Gewering Benjamin Koch Dominik Lüke. (geschachtelte Schleifen)

Technische Informatik für Ingenieure WS 2010/2011 Musterlösung Übungsblatt Nr. 4

Musterlösung. Aufgabe 1: einer. wird. x/u. arg(x/u) Frequenz f. Matthias Fischer Mouns. Almarrani. Alexander Teetz Simon Titz Simon Oberthür

Technische Informatik für Ingenieure WS 2010/2011 Musterlösung Übungsblatt Nr. 3

Einstieg in die Informatik mit Java

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

Rückblick. Zahlendarstellung zu einer beliebigen Basis b. Umwandlung zwischen Zahlendarstellung (214) 5 = (278) 10 =(?) 8

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

Informatik Vorkurs - Vorlesung 2

Übungen zu Algorithmen

Vorkurs Informatik WiSe 16/17

1. 4-Bit Binärzahlen ohne Vorzeichen 2. 4-Bit Binärzahlen mit Vorzeichen 3. 4-Bit Binärzahlen im 2er Komplement 4. Rechnen im 2er Komplement

Thomas Gewering Benjamin Koch Dominik Lüke

Technische Informatik für Ingenieure WS 2010/2011 Übungsblatt Nr. 3

2.5 Primitive Datentypen

Vorkurs Informatik WiSe 17/18

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

Zahlensysteme und Kodes. Prof. Metzler

Inhaltsangabe 3.1 Zahlensysteme und Darstellung natürlicher Zahlen Darstellung ganzer Zahlen

Informatik I Übung, Woche 41

Übungsblatt 1. Java Vorkurs (WS 2017)

4. Zahlendarstellungen

Grunddatentypen, Ausdrücke und Variablen

Basisinformationstechnologie I

Einheit Datentypen in der Programmiersprache C Schwerpunkt: Elementare (arithmetische) Datentypen

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

Welche Informatik-Kenntnisse bringen Sie mit?

Grundlagen der Technischen Informatik. 3. Übung

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 15/16

Grundlagen der Informatik Ergänzungen WS 2007/2008 Prof. Dr. Rainer Lütticke

Wandeln Sie die folgenden Zahlen in Binärzahlen und Hexadezimalzahlen. Teilen durch die Basis des Zahlensystems. Der jeweilige Rest ergibt die Ziffer.

Intensivübung zu Algorithmen und Datenstrukturen

Java I Vorlesung Imperatives Programmieren

Informatik I Übung, Woche 41

Einführung in die Programmierung

Tutoraufgabe 1 (Typcasting):

Grundlagen der Technischen Informatik. 4. Übung

Computer rechnen nur mit Nullen und Einsen

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 1 - Variablen und Kontrollstrukturen

Grundlagen der Technischen Informatik. 4. Übung

Universität zu Lübeck Institut für Telematik. Prof. Dr. Stefan Fischer

1 Dualsystem Dualzahlen mit Vorzeichen 4. 2 Hexadezimalsystem Hexadezimalzahlen mit Vorzeichen Oktalsystem 13 4 Zahlenring 14

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Grundlagen der Technischen Informatik. 3. Übung

Programmieren 1 C Überblick

2.1 Fundamentale Typen

Zahlen im Computer (Klasse 7 Aufbaukurs Informatik)

Grundlagen der Technischen Informatik. 3. Übung

Rechnergrundlagen SS Vorlesung

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

Binäre Darstellung ganzer Zahlen

Grundlagen der Programmierung

1. Grundlegende Konzepte der Informatik

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

There are only 10 types of people in the world: those who understand binary, and those who don't

Programmierung WS12/13 Lösung - Übung 1 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder

Datentypen & Zeichenketten

Klausur zur Lehrveranstaltung. Technische Informatik für Ingenieure WS 2008/09

Musterlösung 1. Mikroprozessortechnik und Eingebettete Systeme 1 WS2015/2016

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

Grundlagen der Technischen Informatik. 3. Übung. Christian Knell Keine Garantie für Korrekt-/Vollständigkeit

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2018/19. Vorbereitende Aufgaben

Java - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue

Hochschule Niederrhein Einführung in die Programmierung Prof. Dr. Nitsche. Bachelor Informatik WS 2015/16 Blatt 3 Beispiellösung.

Die einfachsten Anweisungen

Probeklausur Informatik 2 Sommersemester 2013

4. Zahlendarstellungen

Programmierpraktikum

Grundlagen der Technischen Informatik. 4. Übung

Erste Java-Programme (Scopes und Rekursion)

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

Gleitkommazahlen. JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network Softwareentwicklung 1 (gtec) Hanspeter Mössenböck, Herbert Prähofer 74

Zahlensysteme. Wie Computer Zahlen darstellen und mit ihnen rechnen Peter Ziesche

Programmierkurs (Java) 30. Oktober 2017 Institut für Informatik ÜBUNGBLATT 02. Dieses Übungsblatt wird in der Woche des 06. November besprochen.

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

Grundlagen der Technischen Informatik. 4. Übung

Zwischenklausur Informatik, WS 2016/17. Lösungen zu den Aufgaben

Übung Informatik I - Programmierung - Blatt 2

8. Ausdrücke, Operatoren (einfache Typen)

Schwerpunkte. 8. Ausdrücke, Operatoren (einfache Typen) Beispiel: Schaltjahr Test. Einführendes Beispiel: Grundprobleme

Informatik II. Woche 15, Giuseppe Accaputo

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

Grundlagen der Technischen Informatik. 4. Übung

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2018/19. Vorbereitende Aufgaben

Rechnergrundlagen SS Vorlesung

Zahlendarstellungen und Rechnerarithmetik*

Übungen zum Bioinformatik-Tutorium. Blatt 3

Kontrollstrukturen: Wiederholungsanweisungen

Informatik 1 für Nebenfachstudierende Beispiele für Klausuraufgaben

Ein erstes Java-Programm

1. Tutorium Digitaltechnik und Entwurfsverfahren

Informatik II Übung, Woche 10

Die Zahl ist: (z 2, z 1, z 0 ) (z ) : 7 = 0 Rest z 2

Grundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden

Einführung in die Programmierung Wintersemester 2008/09

Einfache Arrays. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

Javakurs für Anfänger

Transkript:

Technische Informatik für Ingenieure WS 00/0 Übungsblatt Nr. 0. Januar 0 Übungsgruppenleiter: Matthias Fischer Mouns Almarrani Rafał Dorociak Michael Feldmann Thomas Gewering Benjamin Koch Dominik Lüke Alexander Teetz Simon Titz Simon Oberthür Seite () Aufgabe : Gegeben sind die folgenden Programmausschnitte: (Schleifen) I. Programmausschnitt: for(int i = 0; i < x; i++) { for (int j = 0; j < x; j++) { Out.print(j); II. Programmausschnitt: for(int i = 0; i < x; i++) { for (int j = 0; j <= i; j++) { Out.print(j); III. Programmausschnitt: for(int i = 0; i < x; i++) { for (int j = i; j < x; j++) { Out.print(j); IV. Programmausschnitt: for(int i = ; i <= x; i++) { for (int j = x-i; j < x; j++) { Out.print(j); Prüfen Sie auf dem Papier, welche Ausgabe die Programme jeweils für x = 0 liefern.

Technische Informatik für Ingenieure Seite () Ausgabe Programm I: i j 0 Ausgabe Programm II: 0 0 0 0 0 0 0 0 0 i j 0 0 0 0 0 0 0

Technische Informatik für Ingenieure Seite () Ausgabe Programm III: i j 0 j=i=0 j=i= j=i= Ausgabe Programm IV: i j=x-i j=0-= j=0-= j=0-= j=0-= j=0-=

Technische Informatik für Ingenieure Seite () Aufgabe : (geschachtelte Schleifen) Schreiben Sie eine der Schleifen in Aufgabe so um, dass für eine frei wählbare gerade Zahl eine Ausgabe wie im folgenden Beispiel (hier ist n = ) erfolgt. Testen Sie das Programm in Eclipse. Bauen Sie Ihr Programm nun so um, dass die folgende Ausgabe auf der Konsole erscheint: public class Schleifen { public static void main(string[] args) { int x = 0; for (int i = ; i < x; i++) { for (int j = ; j <= i; j++) { if (i <= x / ) { Out.print(j + " "); else { if (j <= x - i) { Out.print(j + " ");

Technische Informatik für Ingenieure Seite () public class Stern { public static void main(string[] args) { /* * Die Variable x bezeichnet die Anzahl der zu zeichnenden Sterne pro Richtung (horizontal, vertikal, diagonal LO->RU, diagonal LU->RO ). * Hinweis: x = 0 bedeutet die Anzeige von Sternen. */ int x = 0; for (int i = 0; i <= x; i++) { for (int j = 0; j <= x; j++) { // horizontale Linie if (i == x / ) { Out.print(" * "); // Linie oben-links nach unten-rechts else if (i == j) { Out.print(" * "); // Linie oben-rechts nach unten-links else if (i == x - j) { Out.print(" * "); // vertikale Linie else if (j == x / ) { Out.print(" * "); // Leerzeichen zum Ausfüllen else { Out.print(" ");

Technische Informatik für Ingenieure Seite () Aufgabe : Gegeben sind folgende Dezimalzahlen: a = b = (Zahlenrepräsentation) a) Berechnen Sie a + b im er-komplement. Wandeln Sie dazu die Zahlen zunächst in Dualzahlen (bestehend aus en und 0en) um, addieren Sie diese und überprüfen Sie das Ergebnis durch die abermalige Umwandlung in eine Dezimalzahl. Der folgende Algorithmus aus der Vorlesung gibt das er-komplement in vertauschter Bitreihenfolge aus: for (i = 0; i <= n- ; i++) { Out.println(x%); x = x/; /* Bitreihenfolge beachten! */ Beachten Sie: In der Vorlesung konnten Zahlen von - bis + mit Ziffern dargestellt werden. Die vorderste Ziffer hat dabei das Vorzeichen bestimmt. Ziffern können ³ = Zahlenwerte und ein Vorzeichen darstellen (0- u. - bis -). Bestimmen Sie zuerst die benötigte Anzahl von Stellen für die Darstellung der Zahlen und des Ergebnisses im er-komplement. b) Berechnen Sie b - a. Was müssen Sie beachten? Überprüfen Sie ihr Ergebnis. c) Nehmen Sie an, es ständen nur Bit für die Speicherung der Zahlen im er- Komplement zur Verfügung. Führen Sie die Addition aus a) für diesen Fall durch und diskutieren Sie ihre Beobachtungen. Führen Sie auch den in der Vorlesung besprochenen Überlauftest durch. Die größte darzustellende Zahl ist das Ergebnis + =. Um darstellen zu können, benötigen wir inklusive des Vorzeichens Bit, da = und =. Bit reichen aus, um den Zahlenbereich - bis + darzustellen, der auch die benötigte beinhaltet. Zusammen mit dem Vorzeichenbit (das Most Significant Bit, also das erste Bit von links) benötigen wir also Bit für die Darstellung der Rechnung im er- Komplement. Umwandeln in Dualzahlen: / = Rest / = Rest / = Rest / = Rest / = Rest 0 / = 0 Rest

Technische Informatik für Ingenieure Seite () a = 000 es werden zwei 0-en vorangestellt um die Bit zu vervollständigen. / = Rest / = Rest / = Rest 0 / = Rest 0 / = Rest 0 / = 0 Rest b = 00000 Addition: 000 +00000 --------- 00000 Umrechnung des Ergebnisses in das Dezimalsystem: 00000 = 0* 0 +* +0* +0* +* +0* +* +0* = ++ = b) Berechnen Sie b - a. Was müssen Sie beachten? Überprüfen Sie ihr Ergebnis. Subtraktion: Wir müssen beachten, dass wir, um - = - zu berechnen, eigentlich + (-) rechnen müssen. Um aus der eine - zu machen, müssen wir zuerst invertieren, indem wir alle Bits umdrehen. Das Ergebnis nennen wir er-komplement der Zahl: 000 00000 Dann addieren wir auf das Ergebnis und erhalten - im er-komplement: 00000 +0000000 --------- 0000

Technische Informatik für Ingenieure Seite () Die Subtraktion wird dann durch die Addition des er-komplements erreicht: 00000 +0000 --------- 000 Zur Überprüfung können wir die Umrechnung aus dem Dezimal- ins Dualsystem umdrehen, also - addieren und anschließend die Bits invertieren. Das Subtrahieren wird wie im obigen Fall durchgeführt. - im er-komplement wird zu, so dass bei der Addition folgendes berechnet wird. 000 + --------- 00 Das erste Bit ist zu viel, fällt beim Invertieren aber ohnehin weg. Wir erhalten: 000000 = 0* 0 +0* +* +* +0* +0* +0* + 0* =, also - unter Beachtung des Vorzeichens. Alternativ können wir aus dem Dualsystem direkt ins Dezimalsystem umrechnen, indem wir das Vorzeichen als negativen Summanden einbringen: 000 = 0* 0 +0* +* +0* +* +* +* -* = + + + = - Das Ergebnis stimmt also. c) Nehmen Sie an, es ständen nur Bit für die Speicherung der Zahlen im er- Komplement zur Verfügung. Führen Sie die Addition aus a) für diesen Fall durch und diskutieren Sie ihre Beobachtungen. Führen Sie auch den in der Vorlesung besprochenen Überlauftest durch. Wir stellen bei der oben durchgeführten Umrechnung von a und b in das Dualsystem nur eine 0 voran, um auf Bit aufzufüllen. Die Rechnung sieht dann wie folgt aus: 00 +0000 -------- 0000

Technische Informatik für Ingenieure Seite () Interpretiert man dieses Ergebnis, so muss das erste Bit als Vorzeichenbit betrachtet werden. Das Ergebnis ist also negativ und demnach falsch, da wir ursprünglich positive Zahlen addiert haben. 0000 = 0* 0 +* +0* +0* +* +0* -* = + = - Also falsch! Überlauftest: Schreibe das jeweils erste Bit noch einmal hin und vergleiche die ersten beiden Bits. 000 +00000 --------- 00000 Hier hat es einen Überlauf gegeben. Das Ergebnis ist also, wie bereits festgestellt, nicht korrekt. Aufgabe : (Typisierung) Bestimmen Sie alle Typen und den Wert der Variable ergebnis so, dass sie keinen Typfehler erzeugt. int a = ; int b = ; short i; byte j; long k; double x =.0; double y =.0; char c = 'a'; char h = 'b'; String s = "xyz"; a) ergebnis = a + b; b) ergebnis = a / b; c) ergebnis = a + y; d) ergebnis = a * x; e) ergebnis = a / y; f) ergebnis = a!= b; g) ergebnis = a * (int)x; h) ergebnis = (int)(x * y) * y; i) ergebnis = c > h; j) ergebnis = a % b; k) ergebnis = "abc"+""; l) ergebnis = "abc"+; Die beiden nachfolgenden Fälle sind etwas komplexer zu bestimmen, da in ihnen mehrere unterschiedliche Datentypen vorkommen und diese zum Teil explizit umgewandelt werden. Benutzen Sie daher bei m) und n) den Syntaxbaum zur Unterstützung, um den Typ der Variable ergebnis zu ermitteln. Hinweis: Ein Type-Cast wird im Syntaxbaum als ein unärer Knoten dargestellt.

Technische Informatik für Ingenieure Seite 0() m) ergebnis = (a+j/b+k)/((float) (i/x+j)); n) ergebnis = s.length() <= i+(int)(y*c-x*h)/s.charat(); double float long int String boolean a).0.0 b) 0.0 0.0 0 0 c).0 d).0 e) 0. f) true g).0.0 h).0 i) false j).0.0 k) abc l) abc m)

Technische Informatik für Ingenieure Seite () n)