Informatik II. Felix Friedrich FS Vorlesung am D-BAUG der ETH Zürich

Ähnliche Dokumente
Informatik II. Felix Friedrich FS Vorlesung am D-BAUG der ETH Zürich

Informatik II. Vorlesung am D-BAUG der ETH Zürich. Felix Friedrich FS 2017

Informatik II. Giuseppe Accaputo, Felix Friedrich, Patrick Gruntz, Tobias Klenze, Max Rosmannek, David Sidler, Thilo Weghorn FS 2017

Informatik II. Woche 08, Giuseppe Accaputo

Informatik II. 1. Einführung. Willkommen zur Vorlesung! Das Team. Vorlesung am D-BAUG der ETH Zürich

Informatik I Felix Friedrich

Informatik II. Willkommen zur Vorlesung! Das Team. Übungsbetrieb. Vorlesung am D-BAUG der ETH Zürich

Informatik I. Vorlesung am D-ITET der ETH Zürich. Felix Friedrich HS 2017

Datenstrukturen und Algorithmen

Programmieren und Problemlösen

Informatik II. Felix Friedrich FS Vorlesung am D-BAUG der ETH Zürich

Informatik I. W i l l k o m m e n. Team. Einschreibung in Übungsgruppen. Vorlesung am D-ITET der ETH Zürich. zur Vorlesung Informatik I!

Informatik I. Vorlesung am D-BAUG der ETH Zürich. Hermann Lehner, Felix Friedrich ETH Zürich HS 2017

Programmieren und Problemlösen

Informatik. Willkommen. Ablauf. Team. Vorlesung für Rechnergestützte Wissenschaften am D-MATH der ETH Zürich. zur Vorlesung Informatik.

Informatik. Vorlesung am D-MATH / D-PHYS der ETH Zürich. Bernd Gärtner HS 2017

Informatik. Vorlesung am D-MAVT der ETH Zürich. Hermann Lehner, Malte Schwerhoff SS 2018

II.1.1. Erste Schritte - 1 -

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

Vorkurs Informatik WiSe 16/17

Informatik. W i l l k o m m e n. Team. Einschreibung in Übungsgruppen. Vorlesung am D-MATH / D-PHYS der ETH Zürich. zur Vorlesung Informatik!

Vorkurs Informatik WiSe 17/18

1. Einf uhrung Material Das Team

systematischen Verarbeitung von Informationen Was ist Informatik?

systematischen Verarbeitung von Informationen Was ist Informatik?

2 Programmieren in Java I noch ohne Nachbearbeitung

1. Einf uhrung Material Das Team

Informatik. Willkommen. Team. Ablauf. Vorlesung am D-MAVT der ETH Zürich. zur Vorlesung Informatik. Ort und Zeit:

3. Java Einführung. Erstes Java Programm. Der euklidische Algorithmus in Java. Java Klassen

Programmieren und Problemlösen

Java-Einführungskurs Informatik II (D-ITET) Vincent Becker,

systematischen Verarbeitung von Informationen Was ist Informatik?

Informatik II. Woche 10, Giuseppe Accaputo

5. Java Arrays und Strings

Informatik. Vorlesung für Rechnergestützte Wissenschaften am D-MATH der ETH Zürich. Felix Friedrich, Malte Schwerhoff HS 2018

Informatik I Übung, Woche 40

2 Eine einfache Programmiersprache

II.1.1. Erste Schritte - 1 -

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

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download

Einstieg in die Informatik mit Java

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Programmierung für Mathematik HS11

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache

Repetitorium Informatik (Java)

2 Eine einfache Programmiersprache. Variablen. Operationen Zuweisung. Variablen

Programmiervorkurs. Wintersemester 2013/2014

Zuerst wird die Bedingung ausgewertet. Ist sie erfüllt, wird der Rumpf des while-statements ausgeführt. Nach Ausführung des Rumpfs wird das gesamte

Informatik II. Woche 13, Giuseppe Accaputo

pue13 January 28, 2017

II.1.1. Erste Schritte - 1 -

n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen - 1 -

Einführung in die Programmierung 1

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

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Java: Kapitel 1. Überblick. Programmentwicklung WS 2008/2009. Holger Röder Holger Röder

Java-Einführungskurs Informatik II (D-ITET) Vincent Becker,

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Einstieg in die Informatik mit Java

Einführung in die Programmierung I. 2.4 Felder. Thomas R. Gross. Department Informatik ETH Zürich

Vorkurs Informatik WiSe 16/17

Klassenvariablen, Klassenmethoden

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

Übungen zum Bioinformatik-Tutorium. Blatt 3

Informatik II Prüfungsvorbereitungskurs

Datenstrukturen und Algorithmen

2 Eine einfache Programmiersprache

Implementieren von Klassen

Einführung in die Programmierung

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

Übung 1: Installation + Test von Eclipse. Übung 2: Hello World

Informatik II (D-ITET)

Informatik I Übung, Woche 40

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

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. )

Teil 3 - Java. Grundlagen Klassen, Attribute Methoden

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

Informatik I Übung, Woche 41

Übung zur Vorlesung Strukturiertes Programmieren WS 2014/15. Übungsblatt 1: JAVA - Erste Schritte Abgabe: Besprechung:

Objektorientierte Programmierung Studiengang Medieninformatik

Die Programmiersprache C Eine Einführung

Vorkurs Informatik WiSe 17/18

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Geoinformatik und Vermessung Prüfung 502 : Informatik (JAVA)

Informatik II Übung 1

Informatik. Studiengang Chemische Technologie. Michael Roth Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013.

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

Vorlesung Informatik II

Definitionen/Vorarbeit zum Thema Java

Algorithmen und Datenstrukturen II

Einführung in die Programmierung. (K-)II/Wb17

Software. 7. Methoden. Software kann sehr komplex sein... Schwerpunkte. Grundproblem der SW-Entwicklung: Komplexität

Informatik II. Giuseppe Accaputo, Felix Friedrich, Patrick Gruntz, Tobias Klenze, Max Rossmannek, David Sidler, Thilo Weghorn FS 2017

Gedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff.

Einführung in die Programmierung mit VBA

Tag 8 Repetitorium Informatik (Java)

Transkript:

Informatik II Felix Friedrich Vorlesung am D-BAUG der ETH Zürich FS 2016 1

W i l l k o m m e n zur Vorlesung Informatik II! am D-BAUG der ETH Zürich. Ort und Zeit: Montag 12:45 14:30, HIL E3. Pause 13:30 13:45, leichte Verschiebung möglich Vorlesungshomepage http://lec.inf.ethz.ch/baug/informatik2/2016/ 2

Team Dozent Felix Friedrich Chefassistent David Sidler Assistenten Giuseppe Accaputo Andrin Kasper Marko Pichler Tobias Verhulst 3

Überblick, der universelle Computer (Turing Maschine), Euklidischer Algorithmus, Erstes Java Programm, Java Klassen, Pascal Java, der Euklidische Algorithmus in Java 1. EINFÜHRUNG 4

Ziel der Vorlesung Hauptziel: Problemlösen mit dem Computer Hilfsmittel Objektorientierte Programmiersprache (Java) Tools wie Matlab und Datenbanken Methodik Kernthemen: Objektorientiertes Programmieren, Datenstrukturen, Algorithmen und Komplexität, Datenbanken Fallstudien: Interessante Probleme aus der Informatik und angrenzenden Gebieten 5

Warum Java? Sehr weit verbreitete moderne Sprache, funktioniert auf sehr vielen Systemen Portabilität durch Zwischensprache Verbietet einige typische Fehler Gute Datenbankanbindung 6

Ziel der heutigen Vorlesung Einführung: Computermodell und Algorithmus Prozedurales Programmieren mit Java, Pascal Java 7

http://en.wikipedia.org/wiki/alan_ Turing Der universelle Computer Eine geniale Idee: Universelle Turing Maschine (Alan Turing, 1936) Folge von Symbolen auf Ein- und Ausgabeband Programmcode x Eingabe Ausgabe Lese- / Schreibkopf Festprogramm- Computer Kontrolleinheit Interner Zustand «Symbol lesen» «Symbol überschreiben» «Nach links» «Nach rechts» Alan Turing 8

http://commons.wikimedia.org/w iki/file:john_von_neumann.jpg /http://www.hs.unihamburg.de/de/gnt/hh/biogr/zuse.htm Realisierungen Z1 Konrad Zuse (1938) ENIAC Von Neumann (1945) Von Neumann Architektur Rechenwerk ALU Prozessor - CPU Steuerwerk Konrad Zuse BUS Speicher Ein-/Ausgabe John von Neumann 9

Universelles Rechenmodell Zutaten der Von Neumann Architektur Hauptspeicher (RAM) für Programme und Daten Prozessor (CPU) zur Verarbeitung der Programme und Daten I/O Komponenten zur Kommunikation mit der Aussenwelt 10

Ältester nichttrivialer Algorithmus Euklidischer Algorithmus (3. Jh v. Chr.) Grösster gemeinsamer Teiler Annahme: a>0, b>0. Solange b 0 Wenn a > b dann a a b Sonst b b a Ergebnis = a. a b a b a b a b a b 1 2 3 4 5 2/22/2016 11

Live Demo: Turing Maschine 0 1 2 3 4 5 6 7 8 9 Speicher Register 12

Euklid in der Box Speicher 0 1 2 3 4 5 6 7 8 9 [8] Links [9] Rechts L=0? stop R>L? nach 6 L-R [8] nach 0 R-L [9] nach 0 (b) (a) Register Links Rechts Solange b 0 Wenn a > b Sonst dann a a b b b a 2/22/2016 13

Geschwindigkeit In der mittleren Zeit, die der Schall von mir zu Ihnen unterwegs ist... 30 m = mehr als 100.000.000 Instruktionen arbeitet ein heutiger Desktop-PC mehr als 100 Millionen Instruktionen ab. 14

Java Basiert auf einer virtuellen Maschine, (mit Von-Neumann Architektur) Programmcode wird in Zwischencode übersetzt, Zwischencode läuft in "simulierter" Rechnerumgebung. Interpretation des Zwischencodes durch einen sog. Interpreter Optimierung: JIT (Just-In-Time) Kompilation von häufig benutztem Code. virtuelle Maschine physikalische Maschine MyProg.java Compiler xyz.class MyProg.class Interpreter/ JIT Compiler Folgerung und erklärtes Ziel von Java Portabilität (Write Once Run Anywhere) 15

ORGANISATORISCHES 16

Übungen Übungszeiten / Orte Donnerstag 12:45 14:30 Giuseppe Accaputo HIT F 31.1 Marko Pichler HIT F 12 Andrin Kasper HIT F 13 14:45 16:30 Tobias Verhulst HCI D4 Gruppeneinteilung selbstständig via Webseite E-Mail mit Link nur nach Belegung dieser Vorlesung in mystudies Genau eine E-Mail mit personalisiertem Link Link behalten! 17

Übungen Ablauf Übungsblattausgabe zur Vorlesung. Vorbesprechung der Übung am Donnerstag der selben Woche Abgabe der Übung spätestens eine Woche später (Dienstag 23:59). Abgabe via Autograder oder per email an den Assistenten. Nachbesprechung der Übung am Donnerstag darauf. Korrektur der Abgaben innerhalb einer Woche nach Nachbesprechung. Mo Di Mi Do Fr Sa So Mo Di Mi Do Fr Sa So V Ü V Ü Ausgabe Vorbesprechung Nachbesprechung Späteste Abgabe 18

Zu den Übungen Seit HS 2013 für Prüfungszulassung kein Testat mehr erforderlich. Bearbeitung der wöchentlichen Übungsserien ist freiwillig, wird aber dringend empfohlen! 19

Autograder In den Übungen wird ein Tool ("DOM Judge") zur automatischen Bewertung Ihrer Lösung eingesetzt. Vorgehen: - Erstellen eines Programmes mit Hauptklasse "Main" gemäss Problemstellung - Einreichen des Programmes beim judge (webseite). - Link auf dem Übungsblatt und Vorlesungshomepage Judge prüft, ob Ihr Code bei Vorliegen einer bestimmten Eingabe die richtige Ausgabe (innerhalb einer vorgegebenen Maximalzeit) erzeugt. 2/22/2016 20

Autograder 2/22/2016 21

Autograder Resultate Richtige Ausgabe Falsche Ausgabe Übersetzungsproblem (Compilation failed) Laufzeitproblem (Exception u.ä.) Timeout Sie können jederzeit neu einreichen bis alles funktioniert 2/22/2016 22

Unser Angebot! Eine spezielle Programmierübung. Punkte dieser Übungen werden als Bonus für die Note der Basisprüfung mitgenommen. Termin: Vorr. in der 10. Woche. Zwei Wochen Bearbeitungszeit. Maximal erreichbarer Bonus: 1/4 einer Note. Wir behalten uns mündliche Prüfgespräche für die geleisteten Übungen vor. 2/22/2016 23

Tipps Üben Sie! Wenn Sie zu zweit an Übungen arbeiten, stellen Sie Gleichverteilung des aktiven Parts sicher. Lassen Sie sich nicht frustrieren. Schlafen Sie eine Nacht, wenn Sie nicht vorwärtskommen. Holen Sie sich Hilfe, wenn Sie nicht vorwärtskommen. Üben Sie! 24

Computerarbeitsplätze In den Computerräumen des D BAUG ist die nötige Software (Java + Eclipse) installiert, genauso auch im Hauptgebäude im Zentrum. Falls Sie auf Ihrem eigenen Rechner arbeiten möchten: Installationsanweisung für Java / Eclipse auf dem ersten Übungsblatt Bringen Sie Ihren Computer doch bitte zur ersten Übungsstunde mit. 25

Literatur Robert Sedgewick, Kevin Wayne, Einführung in die Programmierung mit Java. Pearson, 2011 Thomas Ottmann, Peter Widmayer, Algorithmen und Datenstrukturen, Springer pdf derzeit auch als download bei Springer Kemper, Eickler: Datenbanksysteme: Eine Einführung. Oldenbourg Verlag, 9. Auflage, 2013. Weitere online-referenzen auf der Vorlesungshomepage. 26

Relevantes für die Prüfung Prüfungsstoff für die Endprüfung schliesst ein Vorlesungsinhalt und Übungsinhalte. Prüfung (120 min) ist schriftlich. Zugelassene Hilfsmittel: keine Programmierkenntnisse sind Minimalvoraussetzung zum Lösen der Prüfung. 27

In Ihrem und unserem Interesse... Bitte melden sie frühzeitig, wenn Sie Probleme sehen, wenn Ihnen die Vorlesung zu schnell, zu schwierig, zu... ist die Übungen nicht machbar sind... Sie sich nicht gut betreut fühlen... wichtig! Kurz: wenn Ihnen irgendetwas auf dem Herzen liegt 28

JAVA 2/22/2016 29

Erstes Pascal Programm PROGRAM Hello; BEGIN Write( Hello World. ); END. Aufruf: Hello 30

Erstes Java Programm class: ein Programm public class Hello { Methode: Eine (benannte) Folge von Anweisungen public static void main(string[] args) { System.out.println("Hello World."); Anweisung: ein Kommando, welches auszuführen ist Aufruf: java Hello Ein Funktionsaufruf einer Methode (Prozedur) einer anderen Klasse 31

Java Klassen Java-Programm besteht aus mindestens einer Klasse. Ein Java-Programm hat eine Klasse mit main-funktion (Methode). Diese spielt die Rolle des Programmrumpfes bei Pascal public class Test{ // potentiell weiterer Code und Daten public static void main(string[] args) {... 32

Prozedurale Programmierung mit Java Pascal Java Deklarationen, Ausdrücke und Anweisungen: separate Tabelle Programm Klasse mit public static void main Prozedur static Methode in dieser Klasse Globale Variablen static Variablen in dieser Klasse Records Klassen (Achtung: Referenzsemantik*) Arrays Arrays (Achtung: Referenzsemantik*) Var-Parameter es gibt in Java kein Pass-by-Reference! *wird noch erklärt 33

Ein Java-Programm entsteht Programm schreiben [z.b. im eclipse editor] Quellcode Programm compilieren [z.b. in der eclipse IDE] Quellcode wird zu Bytecode übersetzt Passiert in der eclipse IDE permanent im Hintergrund Ausführen [z.b. in der IDE oder an der Kommandozeile] Bytecode wird interpretiert und teilweise zu Maschinencode übersetzt und ausgeführt 2/22/2016 34

Der Euklidische Algorithmus in Java public class Euclidean { public static void main(string[] args){ int a = 24; int b = 20; while (b!= 0) { if (a>b) a = a - b; else b = b - a; Variablen müssen vor Gebrauch deklariert werden. Aber: keine separate Deklarationssequenz wie bei Pascal nötig. Blöcke werden durch geschweifte Klammern gekennzeichnet Bedingungen stehen bei if und while immer in runden Klammern. System.out.println("ggt(24,20)= " + a); 2/22/2016 35

Verhalten eines Programmes Zur Compilationszeit: vom Compiler akzeptiertes Programm syntaktisch korrekt* Compiler Fehler manchmal nicht einfach zu verstehen Zur Laufzeit: korrektes Resultat inkorrektes Resultat Programmabsturz Programm terminiert nicht 2/22/2016 *Compiler prüfen auch einen Teil der Semantik 36

Der Euklidische Algorithmus in Java public class Euclidean { public static void main(string[] args){ int a = 24; int b = 20; while (b!= 0) { if (a>b) a = a - b; else b = b - a; System.out.println("ggt(24,20)=" + a); 2/22/2016 37

Der Euklidische Algorithmus in Java public class Euclidean { public static void main(string[] args){ int a = 24; int b = 20; while (b!= 0) { while (b!= 0) { if (a>b) int h = a % b; a = a = b; a % b; else b = h; b = b % a; System.out.println("ggt(24,20)=" + a); 2/22/2016 38

Vergleich mit Pascal public class Euclidean { public static void main(string[] args) { int a = 24; int b = 20; while (b!= 0) { int h = a % b; a = b; b = h; System.out.println("ggt(24,20)= " + a); program Euklid; var a, b, rest: integer; begin a := 24; b := 20; while b <> 0 do begin Rest:=a mod b; a:=b; b:=rest; end; writeln( ggt(24,20)=,a:5); end. 2/22/2016 39

Euklid in einer Funktion (Methode) public class Euclidean { // PRE: a, b >= 0 // POST: gibt GGT(a,b) zurück static int ggt(int a, int b){ while (b!= 0) { int h = a % b; a = b; b = h; return a; public static void main(string[] args){ System.out.println("ggt(24,20)= " + ggt(24,20)); 2/22/2016 40

Ein- und Ausgabe Ausgabe via System.out mit System.out.print(...); System.out.println(...); Eingabe via System.in mit Scanner Scanner input = new Scanner(System.in); String s = input.next(); int i = input.nextint(); benötigt import java.util.scanner; 2/22/2016 41

Euklidischer Algorithmus mit Eingabe import java.util.scanner; public class Euclidean { static int ggt(int a, int b){ while (b!= 0) { int h = a % b; a = b; b = h; return a; public static void main(string[] args){ Scanner input = new Scanner(System.in); int a = input.nextint(); int b = input.nextint(); System.out.println("ggt(" + a + "," + b + ")= " + ggt(a,b)); 2/22/2016 42

Zeichenketten (Strings) Strings sind Objekte in Java. Zuweisung eines Stringliterals: Stringlänge: String hello = "Hallo Leute"; int len = hello.length(); Elementzugriff Verkettung char c = hello.charat(5); int length(): Funktionalität des Typs String, hier bezogen auf die Instanz hello. String hellolong = hello + ". Alles wird gut."; 2/22/2016 43