252-0027
Einführung in die Programmierung
Herbstsemester 2018/19
Thomas R. Gross
Department Informatik ETH Zürich
Der Plan für heute
4
§ Vorlesung – Links, Übungsgruppen, usw
§ Inhalt
§ Bezug zum Informatikstudium an der ETH
§ Praktische Aspekte
§ Übungen
§ Computer(räume)
§ Warum Programmieren lernen?
Diese Veranstaltung
§ Vorlesungen
§ Dienstag 10 - 12
§ Freitag 8 - 10
§ Übungen
§ Dienstag 13-15 oder Mittwoch 8-10 oder Mittwoch 15-17
§ Nicht diese Woche (mehr dazu später)
Diese Veranstaltung
§ Eingeschriebene Studierende: 447 (17.9., 18:00)
§ Videoübertragung vom D28 à E 12
§ Im D 28: keine Gespräche!
§ Im E 12 auch nicht.
6
Diese Veranstaltung
§ Bringen Sie Stift und Papier mit
§ Wir werden versuchen in der Vorlesung Aufgaben zu lösen
§ Sie sollten sich Notizen machen (dazu später mehr)
§ Sie können einen Computer/Tablet/Smartphone mitbringen
§ … und für die Vorlesung verwenden
§ Im D 28/E 12 keine Gespräche!
§ Wenn Sie SMS/Omlet/Threema/WhatsApp/Messenger nutzen: Leise o.k.
Diese Veranstaltung
§ Fragen (an den Dozenten) sind immer erlaubt und erwünscht
§ Fragen Sie nicht die Nachbarin/den Nachbar
§ Wie kann ich wissen was Ihnen Schwierigkeiten macht (oder was Sie nicht lesen können)??
§ Auch off-line sind Fragen möglich
§ Assistierende
§ eMail -- aber bitte mit Ihrer student.ethz.ch Adresse!
8
Informationen
§ Web Seiten der Gruppe (Laboratory for Software Technology) www.lst.inf.ethz.ch
§ Im ETH Corporate Design – nicht immer sofort online
§ Manchmal auch garnicht erreichbar
Informationen
§ Auf unserer Web Seite finden Sie
§ Folien (wenn möglich vor der Vorlesung aber keine Garantie)
§ Achtung: 1 Seite/Slide
§ Drucken Sie 2, 4, 6 Seiten pro Blatt A4 Papier
§ Besser: drucken Sie nicht …
§ In der Vorlesung geschriebene Folien
§ Vielleicht 24h-48h nach der Vorlesung
§ Auf dem Videoportal der ETH finden Sie (demnächst)
§ Aufzeichnung des übertragenen Videos
§ Nur Hauptprojektor
10
Informationen
§ Wir benutzen verschiedene Systeme, Ihnen Informationen (insbesondere Programmfragmente o. ä.) zukommen zu
lassen.
§ Daher müssen wir wissen wer Sie sind ….
Wichtig:
Bitte registrieren Sie sich in myStudies.
Sonst können wir Sie nicht erreichen und Sie haben nicht Zugang zu Aufgaben, usw.
Unbedingt bis Donnerstag, 20. 9. 12 Uhr mittags!
13
Übungsgruppen
§ Wir müssen wissen wer in der Vorlesung mitmacht und wie wir am besten helfen können
§ Fragebogen für alle, die sich in mystudies registrieren.
Fragebogen
§ Übungsaufgaben & Prüfung auf Deutsch
§ Wörterbuch o.k.
15
Fragebogen
§ Verschiedene Universitäten bieten Gruppen im 1. Semester
"nur für Frauen" an.
§ Wenn dies hier auch gewünscht wird dann können wir solche anbieten.
§ Diskussion am CSNOW Apero
Fragebogen
§ Wird heute aufgeschaltet
§ Sehen Sie sich die Web Seite zur Vorlesung an.
§ Bitte bis Donnerstag (20. 9.) 12 Uhr mittags ausfüllen!
17
Weiterer Ablauf (Plan)
§ 12:00 Donnerstag: Fragebogen ausfüllen
§ 8:15 Freitag: nächste Vorlesung
§ 12:00 Freitag: Einschreibung in Gruppen möglich
§ Link auf der Web Seite
§ 12:00 Montag: Einschreibung abgeschlossen
§ Dienstag/Mittwoch/Donnerstag: 1. Treffen
§ Thema: Arbeitsumgebung einrichten
Vorschau
§ 1. Übung (20. 9. -> 26. 9.): Einrichten der Arbeitsumgebung
§ Keine Abgabe – wir wollen Ihnen helfen schnell arbeiten zu können
§ Bei Problemen ggf. in der Gruppe einrichten
§ 2. Übung (25. 9. -> 2. 10.): "Abgabe" durchspielen, einfache Aufgabe
§ So erhalten Sie auch Feedback
§ 3. Übung (2. 10. -> 9. 10.): einfache Programme
§ 4. oder 5. Übung: Bonuspunkte möglich (später mehr) 19
Warum Programmieren lernen?
§ Was ist überhaupt “Programmieren”
§ Programmieren – Programm
§ Programm: griechisch prógramma = schriftliche Bekanntmachung, Aufruf; Tagesordnung [Duden]
Warum Programmieren lernen?
§ Was ist überhaupt “Programmieren”
§ Programmieren – Programm
§ Programm: griechisch prógramma = schriftliche Bekanntmachung, Aufruf; Tagesordnung [Duden]
§ Programmieren: Erstellen eines Programms
22
Programmierung
“Programming as universal activity” by Vinton Cerf, CACM March 2016, vol 59(3) p 7
§ analyzing problems
§ breaking them down into manageable parts
§ finding solutions
§ integrating the results
Programmierung
“Programming as universal activity” by Vinton Cerf, CACM March 2016, vol 59(3) p 7
§ Probleme analysieren
§ Probleme in (beherrschbare) Teilprobleme zerlegen
§ Lösungen finden
§ Ergebnisse zusammenfügen/kombinieren
25
Programmierung
§ Lösungen finden: für andere Menschen
§ Beschreiben wie eine Lösung aussehen soll
§ Lösungen finden: für eine Maschine
§ Anweisungen für eine Maschine/Computer
§ Beschreibung, Anweisung: in einer “Sprache”
Sprache – Aufgabe 1
§ Bilden Sie (mit Ihrem Nachbarn/Ihrer Nachbarin) ein 2-Team.
§ Auch 3-Team möglich
§ Nehmen Sie ein Blatt Papier (jeder)
§ Im Team gibt es 2 Rollen
§ Lotse: bestimmt Kurs (1)
§ Pilot: folgt Kurs (beliebig viele)
28
§ Die Lotsin wird einen Kurs zeichnen und diesen der Pilotin beschreiben.
§ Mündlich!
§ Die Pilotin darf nicht das Blatt mit dem Kurs sehen
§ Die Pilotin darf keine (Rück)Fragen stellen.
§ Nur die Lotsin darf etwas sagen.
§ Sie muss den Kurs so gut wie möglich beschreiben.
Lotsenaufgabe
§ Zeichnen Sie ein einfaches 2-dimensionales Koordinatensystem mit Ursprung O
§ Piloten machen das bitte auch.
§ Zeichnen Sie einen Kurs von O nach P und der aus 2 Geraden besteht
§ Beide Geraden müssen auf dem Blatt vollständig dargestellt werden und verbunden sein
§ Beschreiben Sie den Kurs von O nach P ihrem Piloten.
§ Vergleichen Sie die Position von P (Pilot) mit P (Lotse) 32
O
P
§ Es ist (fast) unmöglich, als Lotse genug Informationen an den Piloten zu übermitteln
§ Insbesondere da wir keine Rückfragen zugelassen haben
36
Sprache(n)
§ Eine zweite Übung. Nehmen Sie ein Blatt Papier (Rückseite ok) und einen Stift.
§ Behalten Sie die Teams und Rollen bei.
Lotsenaufgabe 2
§ Zeichnen Sie ein einfaches 2-dimensionales
Koordinatensystem mit Ursprung O mit einem Gitter (1 cm)
§ Piloten machen das bitte auch.
38
O
A B C D
-A -B -C -D
1 -1
-2 -3
-4 -5
-6 2 3 4 5
Lotsenaufgabe 2
§ Zeichnen Sie ein einfaches 2-dimensionales
Koordinatensystem mit Ursprung O mit einem Gitter (1 cm)
§ Piloten machen das bitte auch.
§ Zeichnen Sie einen Kurs von O nach P und der aus 2 Geraden besteht
§ Nur Gitterpunkte sind als Endpunkte der Gerade zulässig
§ Beschreiben Sie den Kurs von O nach P ihrem Piloten
§ Vergleichen Sie die Position von P (Pilot) mit P (Lotse)
40
Diskussion
§ 2. Aufgabe viel einfacher
§ Kleine Einschränkung der Kurse (müssen auf einem Gitterpunkt enden)
§ Genau(ere) Beschreibung möglich
Programmierung
§ Ähnliche Situation wenn wir ein Programm schreiben das ein anderer liest (und verstehen soll)
§ Mehr Einschränkungen (in der Sprache) machen die Kommunikation leichter
§ …. und erfordern mehr Aufwand bei der Entwicklung
§ Welche Einschränkungen wollen wir akzeptieren?
42
Programmierung
“Programming as universal activity” by Vinton Cerf, CACM March 2016, vol 59(3) p 7
§ Probleme analysieren
§ Probleme in (beherrschbare) Teilprobleme zerlegen
§ Lösungen finden
§ Ergebnisse zusammenfügen/kombinieren
Programmierung
§ Ähnliche Situation wenn wir ein Programm schreiben das ein anderer liest (und verstehen soll)
§ Mehr Einschränkungen (in der Sprache) machen die Kommunikation leichter
§ …. und erfordern mehr Aufwand bei der Entwicklung
§ Eine Programmiersprache gibt uns vor, wie wir Lösung(en) eines Problems beschreiben können.
44
Programmiersprachen
Diskutieren Sie mit ihrem Nachbarn/ihrer Nachbarin
1. Eine Programmiersprache sollte es möglichst einfach machen ein Programm zu schreiben
2. Eine Programmiersprache sollte es möglichst einfach machen, ein Programm zu lesen
Was ist Ihre Meinung?
Einführung in die Programmierung
§ Müssen eine Programmiersprache verwenden
§ Wir verwenden Java™
§ “Industrial strength” Sprache
§ Viele Konzepte
§ Nicht alle werden in ”Einf. in die Programmierung”
vorgestellt/verwendet
§ … diese werden auch nicht für die Prüfung erwartet
§ Mehr Themen/Konzepte in weiteren Vorlesungen
§ Brauchen eine Infrastruktur um zu programmieren
47
Einstieg ins Programmieren
§ Werden die erste Woche damit zubringen, die Umgebung für das Programmieren einzurichten
§ Wiederverwendung für Ihr ganzes Studium
§ .. und darüber hinaus
§ Machen Sie dies damit Sie mitmachen können.
§ Wir benutzen Eclipse (später dazu mehr)
51
Brauchen Sie einen Computer ?
§ Im Prinzip nein (Sie können die Systeme im CAB H56/57 benutzen)
§ Irgendwann vielleicht schon …
§ Das Projekt Neptun bietet diverse Notebooks / Laptops zu günstigen Konditionen
http://www.projektneptun.ch
§ Fenster bis 1. Oktober
§ Nächstes Fenster Anfang Frühjahrsemester
Weitere Informationen
§ Viele Informationen auf dem Web
§ Bücher werden im Lauf des Semesters vorgestellt
54
Programmieren
§ Kann man Programmieren lernen?
§ Oder gibt es Naturtalente (und der Rest kann zuschauen)?
Jede(r) kann programmieren lernen
§ Ziel der Vorlesung: Kompetenz
§ Programmieren ist zentrales Thema der Informatik
§ Aber nicht das einzige!
§ Wichtig sind:
§ Aufmerksamkeit
§ Imagination, Phantasie
§ Übung
60
Übungen
§ Aufgabenblätter
§ Selber lösen!
Zusammenhang Übungen – Prüfungserfolg
Dank an R Meier & M Faesfürdie Graphik. (Session Herbst16/17)
62
Übungen
§ Aufgabenblätter
§ Selber lösen!
§ Besprechung der Aufgaben in Übungsgruppen
§ Teilnahme nicht verbindlich aber sehr empfohlen
§ Es gibt selten nur eine Lösung
§ Üben Sie das Diskutieren und Vergleichen verschiedener Lösungen
Selber lösen!
§ Sie können (sollen!) mit anderen über die Aufgaben reden.
§ Vielleicht zeichnen Sie eine Skizze auf eine Tafel, ein Blatt, ein Tablet …
§ Sie entwicklen ein Programm(segment)
§ Sie dürfen keine Aufzeichnungen aus dem Treffen mitnehmen
§ Alle Aufzeichnungen werden weggeworfen.
§ Sie warten (mindestens) 1 Stunde bevor Sie etwas aufschreiben
§ Skizzen, Entwürfe, Programmsegmente, etc.
64
Übungen
§ Sie können (ab 4. oder 5. Aufgabenblatt) “Bonuspunkte” für die Basisprüfung sammeln
§ Bonuspunkte helfen die Note anzuheben
§ Maximalnote auch ohne Bonus erreichbar
§ Programmieren ist Teil der Basisprüfung
§ Details später.
Bonuspunkte
§ Anreiz
§ Sie müssen die Aufgaben selber lösen.
§ Abschreiben (oder abschreiben lassen) ist unehrliches Verhalten und wird nach der ETH Disziplinarverordnung geahndet.
66
72
EBNF
§ Programmierung im ganz Kleinen
§ Vier Elemente (“control forms”) die Sie in Java wiederfinden werden
§ Aufreihung (“sequence”)
§ Entscheidung (“decision”) – Auswahl und Option
§ Wiederholung (“repetition”)
§ Rekursion (“recursion”)
EBNF
§ Beschreibungen haben einen Namen und diese Namen können wieder verwendet werden
§ Um kompliziertere Beschreibungen zu erstellen
§ Erstellen einer EBNF Beschreibung ßà Programmieren in Java
§ Ähnliche Schritte
§ EBNF eine formale Beschreibung
§ Präzise und verständlich
75
EBNF Regeln und Beschreibungen
§ EBNF Beschreibung: eine Menge EBNF Regeln
§ Menge: Reihenfolge unwichtig
§ EBNF Regel
80