Informatik II Übung, Woche 10

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

Einstieg in die Informatik mit Java

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

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 1 - Variablen und Kontrollstrukturen

Informatik II Prüfungsvorbereitungskurs

Einstieg in die Informatik mit Java

Welche Informatik-Kenntnisse bringen Sie mit?

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

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

Java - Programmierung - Prozedurale Programmierung 1

Einstieg in die Informatik mit Java

Programmierstarthilfe SS 2008 Fakultät für Ingenieurwissenschaften und Informatik 5. Blatt Für den 26. und

Informatik II Übung, Woche 17

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

Einstieg in die Informatik mit Java

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

Programmierpraktikum

Informatik I Übung, Woche 41

Primitive Datentypen

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

Vorkurs Informatik WiSe 16/17

2.5 Primitive Datentypen

Hüllklassen. Gerd Bohlender. 25. Juni Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Informatik I Übung, Woche 41

Ein erstes Java-Programm

Informatik II Übung, Woche 14

Informatik II Übung 06. Benjamin Hepp 5 April 2017

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

Wie entwerfe ich ein Programm?

public static void main(string[] args) {

Einstieg in die Informatik mit Java

Methoden und Wrapperklassen

Einführung in die Programmierung WS 2009/10. Übungsblatt 7: Imperative Programmierung, Parameterübergabe

Einführung in die Programmierung WS 2009/10. Übungsblatt 5: Typen, Variablen und einfache Methoden in Java

Informatik I (D-ITET)

Grundlagen der Informatik 0

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Sprachkonstrukte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

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

Namen und Bezeichner. Ein Programm braucht einen Namen. Bezeichner: Ein Name für "Objekte" im Programm.

Institut für Informatik

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

AuD-Tafelübung T-B5b

Werkzeuge zur Programmentwicklung

Objekttypen. Referenzen, Objekte, Gleichheit, Wrapper, Arrays, mehr-dimensionale Arrays, Bildbearbeitung, krumme Arrays

Informatik I (D-MAVT)

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

Themen der Übung. Methoden und Wrapperklassen. Vorteile von Methoden. Methoden. Grundlagen

Datentypen & Zeichenketten

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Kapitel 3: Variablen

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Grunddatentypen, Ausdrücke und Variablen Typkonversion, Überprüfen und Auswerten von Ausdrücken

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

Arrays, Strings, Referenzen, Pass-By-Value Der Zufallssurfer / Pagerank 3. JAVA II

Kapitel 05. Datentypen. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Vorlesung Programmieren

Einführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann

Primitive Datentypen, Eingaben, Kontrollstrukturen und Methodendeklaration

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

Vorlesung Programmieren

Schwerpunkte. 10. Felder (Arrays) Grundprinzip von Arrays. Klassifikation von Typen in Programmiersprachen

Einführung in die Programmierung für NF MI. Übung 04

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

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

Datentypen und Operatoren

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

Vorlesung Programmieren

Einführung in die Programmierung Laborübung bei Korcan Y. Kirkici. 3.Übung bis

C-Probeklausur (Informatik 1; Umfang: C, Teil 1; SS07)

Grundlagen der Informatik 2. Typen

Primitive Datentypen und Felder (Arrays)

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen

public class SternchenRechteckGefuellt {

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

4. Vererbung Die Klasse Object. Die Klasse Object

RO-Tutorien 3 / 6 / 12

Informatik I Übung, Woche 40

Probeklausur: Programmierung WS04/05

Einführung in Java, Teil 7

Ein String ist in Java eigentlich eine Klasse, wir können ihn aber zunächst als Datentyp betrachten, der zur Speicherung von Zeichenketten dient.

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r

1. Referenzdatentypen: Felder und Strings

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe

Programmieren in Java

Einführung in Java. Ausgewählte Quellen zu Java

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

4. Datentypen. Einleitung Eingebaute Datentypen. Konversion / Type-Cast. Operatoren. Übersicht Die Datentypen char, float und double Standardwerte

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

Allgemeine Hinweise:

Einfache Rechenstrukturen und Kontrollfluß

Python Einführung. Monica Selva Soto. 24 März Mathematisches Institut

Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen?

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Kurze Einführung in die Programmiersprache C++ und in Root

Informatik I Übung, Woche 47: Nachtrag zur dynamischen Programmierung

Objektorientierte Programmierung OOP Programmieren mit Java

Programmieren in Java

Grunddatentypen, Ausdrücke und Variablen

Transkript:

Giuseppe Accaputo 10. März, 2016

Plan für heute 1. Typumwandlung (Typecasts) 2. Ordnerstruktur für Übungen 3. Vorbesprechung Übung 3 4. Nachbesprechung Übung 2 (inkl. Live Programmierung) Informatik II (D-BAUG) Giuseppe Accaputo 2

Typumwandlung Java Typen Übersicht Typ Grösse (Bits) Min. Wert Max. Wert byte 8 128 127 short 16 32768 32767 int 32 2 31 2 31 1 long 64 2 63 2 63 1 float 32 3.4 10 38 3.4 10 38 double 64 1.80 10 308 1.80 10 308 boolean n.d. Entweder true oder false char 16 0x0000 0xffff Informatik II (D-BAUG) Giuseppe Accaputo 3

Typumwandlung Implizite Typumwandlung Eine implizite Typumwandlung findet dann statt, wenn der Zieltyp grösser als der Ursprungstyp ist: ursprungstyp a =...; zieltyp b = a; Reihenfolge (aufsteigend in Grösse): Beispiel: byte short int long float double int i = 10213123; long l = i; // OK, da long > int byte d = i; // FEHLER, da byte < int Informatik II (D-BAUG) Giuseppe Accaputo 4

Typumwandlung Explizite Typumwandlung Eine explizite Typumwandlung wird dann benötigt, wenn der Zieltyp kleiner als der Ursprungstyp ist: ursprungstyp a =...; zieltyp b = ( zieltyp )a; Reihenfolge (absteigend in Grösse): Beispiel: double float long int short byte int i = 10213123; byte d = ( byte )i; // OK, da explizit Informatik II (D-BAUG) Giuseppe Accaputo 5

Typumwandlung Beispiel: Typumwandlung Frage: welcher Wert hat die Variable d nach der Ausführung des folgenden Codes? double b = 1/ 2; Informatik II (D-BAUG) Giuseppe Accaputo 6

Typumwandlung Beispiel: Typumwandlung Frage: welcher Wert hat die Variable d nach der Ausführung des folgenden Codes? double b = 1/ 2; Antwort: 0. Die Zahlen 1, 2 sind vom Typ int, d.h. die Nachkommastellen gehen verloren bei der Division. Lösung: Explizite Typumwandlung nach double: double b = ( double ) 1/2; Oder ein bisschen einfacher: double b = 1. 0/ 2; Informatik II (D-BAUG) Giuseppe Accaputo 7

Ordnerstruktur für Übungen Ordnerstruktur für Übungen Pro Übung ein Projekt und pro Aufgabe ein Packet Figure : Projektstruktur für die Übung 2 Informatik II (D-BAUG) Giuseppe Accaputo 8

Vorbesprechung Übung 3 Übung 3, Aufgabe 1: Random Surfer Implementation des Ameisen-Problems aus der Vorlesung (siehe Vorlesungsslides) 1. Matrix einlesen 2. Vektor-Matrix Multiplikation implementieren 3. Simulation implementieren Informatik II (D-BAUG) Giuseppe Accaputo 9

Vorbesprechung Übung 3 Übung 3, Aufgabe 1.1: Matrix einlesen Eingabeformat: 2 3 // Dimension der Matrix 1 2 3 // Matrix 4 5 6 Der Scanner splittet den Konsoleninput standardmässig nach Leerzeichen (inkl. neue Zeilen) in Tokens auf. Beispiel: Matrix-Eingabe von oben in die Konsole kann mittels Scanner standardmässig in 8 Tokens aufgesplittet werden. Pro Token ein scanner.next...() Scanner Dokumentation: https://docs.oracle.com/ javase/8/docs/api/java/util/scanner.html Eclipse Demo.: Einlesen der vorgegebenen Beispiele im Code Informatik II (D-BAUG) Giuseppe Accaputo 10

Vorbesprechung Übung 3 Übung 3, Aufgabe 1.3: Simulation Siehe Slide 35 der 3. Vorlesung: int [] count = new int [ 3]; double [][] P= { {0.1, 0.2, 0.7}, {0.2, 0.2, 0.6}, {0.5, 0.5, 0} }; int loc = 0; // 0=A, 1=B, 2=C for ( int i = 0; i< steps ; ++i){ ++ count [ loc ]; loc = UnfairDice (P[ loc ]); } simulateline wird verwendet, um den nächsten Zielort des Random Surfers auszuwählen. Informatik II (D-BAUG) Giuseppe Accaputo 11

Vorbesprechung Übung 3 Übung 3, Aufgabe 2: Hashfunktionen I Eine Hashfunktion ist eine Abbildung, die eine grosse Eingabemenge (z.b. einen String) auf eine kleinere Zielmenge (die Hashwerte) abbildet. Da die Eingabemenge meistens viel grösser ist als die Zielmenge kann es zu Kollisionen kommen. Informatik II (D-BAUG) Giuseppe Accaputo 12

Vorbesprechung Übung 3 Übung 3, Aufgabe 2: Hashfunktionen II Die Hashfunktion aus der Aufgabe sieht wie folgt aus: sum = s.length - 1 i=0 ( s[i] b (i+1)), (1) wobei s unser Eingabestring, s[i] das ite Zeichen des Strings und b eine Primzahl ist. Ein String ist ein Array bestehend aus Zeichen, i.e., char Einträgen. Das ite Zeichen eines Strings kann mittels der charat()-methode ausgewählt werden. Verwandle das ite Zeichen in einen int um die Multiplikation in der Gleichung 1 auszuführen. Informatik II (D-BAUG) Giuseppe Accaputo 13

Nachbesprechung Übung 2 Übung 2, Aufgabe 2: Dice I Linear congruential generator (LCG): generiert Pseudozufallszahlen L {0,..., m 1} mit P[L = x] = 1/m für alle x {0,..., m 1} mittels Im Code ist der LCG gegeben als X n+1 = (ax n + c) mod m (2) static final long m = 2147483647; static final long b = 12345; static final long a = 1103515245;... u = (u * a + b) % m; Informatik II (D-BAUG) Giuseppe Accaputo 14

Nachbesprechung Übung 2 Übung 2, Aufgabe 2: Dice II Verwende nun LCG um eine gleichverteilte Zufallszahl U [0, 1) mit P[U [l, r)] = r l zu generieren: L {0, 1,..., m 1} U [0, 1). (3) Gleichung 3 entspricht der Transformation L L/m. (4) Uniform()-Methode implementiert die Transformation: public static double Uniform (){ u = (u * a + b) % m; return ( double )u/m; } Informatik II (D-BAUG) Giuseppe Accaputo 15

Nachbesprechung Übung 2 Übung 2, Aufgabe 2: Dice III Lösung der fair Dice Aufgabe: static int Dice (){ double u = Uniform (); if ( u < 1. 0/ 6) return 1; else if ( u < 1. 0/ 3) return 2; else if ( u < 1. 0/ 2) return 3; else if ( u < 2. 0/ 3) return 4; else if ( u < 5. 0/ 6) return 5; else return 6; } Informatik II (D-BAUG) Giuseppe Accaputo 16

Nachbesprechung Übung 2 Übung 2, Aufgabe 2: Dice III (elegante Lösung) Beobachtung: Intervalle sind gleich gross W = 1 W = 2 W = 3 W = 4 W = 5 W = 6 P = 1/6 P = 1/6 P = 1/6 P = 1/6 P = 1/6 P = 1/6 [0, 1 6 ) [ 1 6, 2 6 ) [ 2 6, 3 6 ) [ 3 6, 4 6 ) [ 4 6, 5 6 ) [ 5 6, 1) Bilde das Intervall von [0, 1) nach [1, 7) ab und Runde ab: static int Dice (){ double u = Uniform (); return ( int )(u*6 + 1); } Informatik II (D-BAUG) Giuseppe Accaputo 17

Nachbesprechung Übung 2 Übung 2, Aufgabe 3: Gaussian Live-Programmierung Informatik II (D-BAUG) Giuseppe Accaputo 18