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. 1. Einführung. Willkommen zur Vorlesung! Das Team. Vorlesung am D-BAUG der ETH Zürich

Informatik II. Woche 08, Giuseppe Accaputo

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

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 II. Felix Friedrich FS Vorlesung am D-BAUG der ETH Zürich

Programmieren und Problemlösen

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

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

Programmieren und Problemlösen

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

Vorkurs Informatik WiSe 17/18

1. Einf uhrung Material Das Team

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!

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

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

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

Programmieren und Problemlösen

2 Eine einfache Programmiersprache

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

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

5. Java Arrays und Strings

Martin Unold INFORMATIK. Geoinformatik und Vermessung

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache

systematischen Verarbeitung von Informationen Was ist Informatik?

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

2 Eine einfache Programmiersprache. Variablen. Operationen Zuweisung. Variablen

Repetitorium Informatik (Java)

II.1.1. Erste Schritte - 1 -

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

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

Einstieg in die Informatik mit Java

Programmierung für Mathematik HS11

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

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Programmiervorkurs. Wintersemester 2013/2014

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

pue13 January 28, 2017

II.1.1. Erste Schritte - 1 -

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

Klassenvariablen, Klassenmethoden

Informatik II (D-ITET)

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

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

Einführung in die Programmierung 1

2 Eine einfache Programmiersprache

Einstieg in die Informatik mit Java

Informatik II Übung 1

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

Vorkurs Informatik WiSe 16/17

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

Datenstrukturen und Algorithmen

Einführung in die Programmierung

Implementieren von Klassen

Informatik II. Woche 10, Giuseppe Accaputo

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

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

Informatik II (D-ITET) Informatik II (D-ITET) Übungsstunde 1. Distributed Systems Group, ETH Zürich

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

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

Definitionen/Vorarbeit zum Thema Java

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

Algorithmen und Datenstrukturen II

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

Übungen zum Bioinformatik-Tutorium. Blatt 3

Teil 3 - Java. Grundlagen Klassen, Attribute Methoden

Informatik I Übung, Woche 40

Objektorientierte Programmierung Studiengang Medieninformatik

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

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Vorkurs Informatik WiSe 17/18

Einführung in die Programmierung I. 1.0 EBNF 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

Informatik II. Woche 13, Giuseppe Accaputo

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

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

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

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

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

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

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

Vorlesung Informatik II

Es gibt keinen Algorithmus zum Schreiben eines Programms bzw. Algorithmus.

Transkript:

Informatik II Felix Friedrich Vorlesung am D-BAUG der ETH Zürich FS 2014 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/2015/ 2

Team Dozent Chefassistent Felix Friedrich Georg Ofenbeck 2. Chefassistent Claude Barthels Assistenten Alessio Bähler Silvan Eggli David Chettrit Tobias Verhulst Andrin Kasper Präsenzstunde Lei Zhong 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/wi ki/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 Prozessor - CPU Rechenwerk ALU 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 2/16/2015 11

Live Demo Turing Maschine 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 dann a a b Sonst b b a 2/16/2015 12

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. 13

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) 14

ORGANISATORISCHES 15

Übungen Mittwoch 14:45 16:30 Andrin Kasper HCI D 6 12:45 14:30 Alessio Bähler HCI J 8 David Chettrit HIT F 12 Donnerstag Silvan Eggli HIT F 13 14:45 16:30 Tobias Verhulst HCI D4 Claude Barthels HCI D 6 englisch/de/fr Donnerstag 12:45 16:30 Lei Zhong HIL C 29 Präsenzübung 16

Einschreiben in die Übungsgruppen 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 (Mittwoch 23:59). Abgabe per email an den Assistenten und via Autograder (s.u.). 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 Ab 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 - Datei einreichen oder Text Judge prüft, ob Ihr Code bei Vorliegen einer bestimmten Eingabe die richtige Ausgabe (innerhalb einer vorgegebenen Maximalzeit) erzeugt. 2/16/2015 20

Autograder 2/16/2015 21

Autograder Resultate Richtige Ausgabe Falsche Ausgabe Übersetzungsproblem (Compilation failed) Laufzeitproblem (Exception u.ä.) Timeout Sie können jederzeit neu einreichen bis alles funktioniert 2/16/2015 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/16/2015 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... wichtig! 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... kurz: wenn Ihnen irgendetwas auf dem Herzen liegt 28

JAVA 2/16/2015 29

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

Erstes Java Programm public class Hello { class: ein Programm Methode: Eine (benannte) Folge von Anweisungen public static void main(string[] args) { System.out.println("Hello World."); Aufruf: java Hello Ein Funktionsaufruf einer Methode (Prozedur) einer anderen Klasse Anweisung: ein Kommando, welches auszuführen ist 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. an der Kommandozeile] Bytecode wird interpretiert und teilweise zu Maschinencode übersetzt und ausgeführt 2/16/2015 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. Bedingungen stehen bei if und while immer in runden Klammern. Blöcke werden durch geschweifte Klammern gekennzeichnet System.out.println("ggt(24,20)= " + a); 2/16/2015 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/16/2015 *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/16/2015 37

Der Euklidische Algorithmus in Java public class Euclidean { public static void main(string[] args){ int a = 24; int b = 20; while while (b (b!=!= 0) 0) { if int (a>b) h = a % b; a = a b; = a % b; else b = h; b = b % a; System.out.println("ggt(24,20)=" + a); 2/16/2015 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; 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; System.out.println("ggt(24,20)= " + a); end. writeln( ggt(24,20)=,a:5); 2/16/2015 39

Euklidischer Algorithmus 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/16/2015 40

Ein- und Ausgabe Ausgabe mit System.out.print(...); System.out.println(...); Eingabe von 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/16/2015 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/16/2015 42

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