252-0027
Einführung in die Programmierung
Herbstsemester 2019/20
Thomas R. Gross
Department Informatik
ETH Zürich
Das Programm für heute
Eine (persönliche) Bitte
§ Eingeschriebene Studierende: 506 (16.9., 17:00)
§ Videoübertragung vom D28 à E 12
§ Aufzeichnung
§ Im D 28/E 12 keine Gespräche!
§ Wenn Sie SMS/Omlet/Threema/WhatsApp/Messenger nutzen:
§ Leise o.k.
Das Programm für heute
§ Warum Programmieren lernen?
§ Bezug zum Informatikstudium an der ETH
§ Praktische Aspekte
§ Übungen
§ Computer(räume)
§ Wie wir die Lernziele erreichen ...
Warum Programmieren lernen?
Warum Programmieren lernen?
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
Warum Programmieren lernen?
§ Was ist überhaupt “Programmieren”
§ Programmieren – Programm
§ Programm: griechisch prógramma = schriftliche Bekanntmachung, Aufruf; Tagesordnung [Duden]
§ Programmieren (Zusammenfassend): Software Entwicklung
§ Programmierung behandelt alle Aspekte – von Entwurf bis Installation
Tag des Programmierers [from Wikipedia]
Der Tag des Programmierers (russisch День программиста) ist ein russischer Gedenktag, der am 256. Tag des Jahres begangen wird. [1] Das ist der 13. September; in Schaltjahren jedoch der 12.
September. [..]
Der Tag des Programmierers ist ein „beruflicher Gedenktag“.
Russland hat einige dieser Gedenktage, an denen jeweils die
Spezialisten eines bestimmten Berufes geehrt werden. Diese sind
aber keine arbeitsfreien Tage. [2]
Programmieren
§ Erstellen eines Programms
§ Programm: Folge von Anweisungen, die von einem Computer ausgeführt werden (können)
§ Programm realisiert einen Algorithmus
§ Algorithmus: beschreibt Schritt-für-Schritt wie eine Aufgabe gelöst
wird
Programmierung und Informatik
§ Ein Thema der Informatik – es gibt auch andere
§ Zentral wenn Sie lernen wollen, wie die Informatik ein Problem angeht
§ Fokus auf “Möglichkeiten und Grenzen der maschinellen Informationsverarbeitung”
§ Es gibt “unmögliche” Probleme
§ Kosten der Berechnung (einer Lösung) sind sehr wichtig
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
Vinton Cerf (*1943)
Ph.D. UCLA (1972)
Assistant Professor Stanford (1972-76) Program Manager (D)ARPA (1976-82) Zusammen mit Bob Kahn massgeblich an der Entwicklung von TCP/IP beteiligt (Internet Protokoll)
Nach 1982 diverse Positionen in
Industrie & Verbänden, seit 2005 VP Google
Dr. h.c. ETH 1998 Schlagfertig beantwortete Vint Cerf die teilweise
ziemlich kritischen Fragen des ETH-Publikums.(2006)
http://web.ethlife.ethz.ch/articles/campuslife/vintcerf.html
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
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”
Wie Programmieren lernen?
§ Programm: Folge von Anweisungen, die von einem Computer ausgeführt werden (können)
§ Wir müssen verstehen welche Anweisungen der Computer ausführen kann
§ Dann Erstellen der Folge von Anweisungen
§ Mögliche Anweisungen: Programmiersprache
Einführung in die Programmierung
§ Müssen eine Programmiersprache verwenden
§ Sprache für Computer (führt aus)
§ ... schreibt
§ Sprache für Menschen (schreibt, liest)
§ ... selten führt aus (heute)
§ Charles [Peirce] was appointed to his first official position in the Coast
Guard Survey [..] in July 1861, as an assistant computer at $ 35 per
month. (J. Brent, Charles Sanders Peirce: A Life. 1993. p 61)
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 Sie einen Computer ?
§ Im Prinzip nein (Sie können die Systeme im CAB H56/57 oder im HG benutzen)
§ Irgendwann vielleicht schon …
§ Das Projekt Neptun bietet diverse Notebooks / Laptops zu günstigen Konditionen
http://www.projektneptun.ch
§ Fenster bis 30. September
§ Nächstes Fenster Anfang Frühjahrsemester
Programmieren
§ Wie kann man Programmieren lernen?
§ Braucht man eine besondere Begabung?
§ Gibt es nur Naturtalente (und der Rest kann zuschauen)?
§ Wie kann man XXXX lernen?
Jede(r) kann programmieren lernen
§ Ziel der Vorlesung: Kompetenz
§ Lernziel: Sie können korrekte Programme systematisch erstellen
§ Programmieren ist zentrales Thema der Informatik
§ Aber nicht das einzige!
§ Wichtig sind:
§ Aufmerksamkeit
§ Imagination, Phantasie
§ Übung
Diese Veranstaltung
§ Vorlesungen (ML D 28)
§ Dienstag 10 - 12
§ Freitag 8 - 10 (ausserdem Do 19.9. & 26.9. 13-14)
§ Übungen (diverse Räume)
§ Dienstag 13-15 oder Mittwoch 8-10
§ Nicht diese Woche
Informationen
§ Web Seiten der Gruppe (Laboratory for Software Technology) www.lst.inf.ethz.ch
§ Im ETH Corporate Design – nicht immer sofort online
§ Manchmal auch gar nicht 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
Übungen
§ Aufgabenblätter
§ Werden über Web Seite publiziert
§ In der Übungsgruppe vor-besprochen
§ Eine Gelegenheit zu lernen!
§ Praxis Übungen
§ Bonus Übungen
§ Teilnahme an Übungsgruppe nicht verbindlich aber sehr empfohlen
§ Es gibt selten nur eine Lösung
Praxis und Bonus Übungen
§ Werden teilweise automatisch korrigiert
§ "Automatisch" – durch einen Computer
§ d.h. durch ein Programm, das von einem Computer ausgeführt wird
§ Hinweis: Ihr Java Programm wird nicht direkt ausgeführt, die Java Anweisungen werden übersetzt (durch einen
Compiler)
§ Analyse des Programms
§ Selbe Technologie hilft bei der Bewertung von Programmen
§ Thema der Forschung
Praxis Übungen
§ Sie können die Lösungen im Internet (wahrscheinlich) finden
§ Musterlösung aus früheren Jahren
§ Langweilen die Assistierenden
§ Eine Gelegenheit zu lernen!
§ Besprechung in der Gruppe, Feedback, Überarbeiten
Bonus Ü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.
Bonus Übungen
§ Anreiz
§ Sie müssen die Aufgaben selber lösen.
§ Abschreiben (oder abschreiben lassen) ist unehrliches
Verhalten und wird nach der ETH Disziplinarverordnung
geahndet.
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
Zusammenhang Übungen – Prüfungserfolg
Da nk a n R M ei er & M Fa es fü r d ie Gr ap hi k. ( Se ss io n H er bs t 1 6/ 17 )
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!
Informationen
§ Wir benutzen verschiedene Systeme, Ihnen Informationen (insbesondere Programmfragmente o. ä.) zukommen zu
lassen.
§ Daher müssen wir wissen wer Sie sind ….
Wichtig:
Bitte belegen Sie die Vorlesung in myStudies.
Sonst können wir Sie nicht erreichen und Sie haben nicht
Zugang zu Aufgaben, usw.
Wichtig:
Bitte belegen Sie die Vorlesung in myStudies.
Sonst können wir Sie nicht erreichen und Sie haben nicht Zugang zu Aufgaben, usw.
Unbedingt bis Mittwoch den 18. 9., 12 Uhr mittags!
Ü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
§ Wird noch aufgeschaltet
§ Wir schicken dann Mail an alle eingeschriebenen Studierenden
§ Sehen Sie sich die Web Seite zur Vorlesung an.
§ Bitte bis Freitag (20. 9.) 12 Uhr mittags ausfüllen!
Übungsgruppen Einteilung
§ Fragebogen hilft uns, die Gruppen zu bilden.
§ Evtl. neue Gruppeneinteilung in der Mitte des Semesters
§ Sie wollen mit XXX (und YYY (und …)) in eine Gruppe?
§ Einigen Sie sich auf den Tag (wenn es eine Präferenz gibt)
§ Wählen Sie (mit XXX (und YYY (und …)) eine (gemeinsame) magische Zahl
§ Zwischen 0 und 2147483647
§ Geben Sie alle diese Zahl im Fragebogen an
Weitere Informationen
§ Viele Informationen auf dem Web
§ Bücher werden im Lauf des Semesters vorgestellt
Weiterer Ablauf (Plan)
§ 19.9.: 13:15 (Do): Vorlesung
§ 20.9. 8:15 (Fr): Vorlesung
§ 20.9. oder Wochenende: Einteilung in Gruppen
§ 23.9. 12:00 (Mo): Einschreibung abgeschlossen
§ Dienstag/Mittwoch nächste Woche: 1. Treffen der Gruppen
§ Thema: Arbeitsumgebung einrichten
Vorschau
§ 1. Übung (18. 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 (24. 9. -> 1. 10.): "Abgabe" durchspielen, einfache Aufgabe
§ So erhalten Sie auch Feedback
§ 3. Übung (1. 10. -> 8. 10.): einfachste Programme
§ 4. oder 5. Übung: Bonuspunkte möglich (später mehr) 54
Wie Programmieren lernen?
§ Programm: Folge von Anweisungen, die von einem Computer ausgeführt werden (können)
§ Mögliche Anweisungen: Programmiersprache
§ Sprache: erlaubte Folge von Anweisungen, Werten (Zahlen), …
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?
0027 "Einführung in die Programmierung"
§ Wir verwenden Java™
§ “Industrial strength” Sprache
§ Fangen wir also an ...
§ Aufgabe: Berechnen Sie den Durchschnitt von 3 Messwerten
§ Algorithmus (wenn wir den Ausdruck verwenden wollen):
§ Addiere die Messwerte
jshell : Java Shell
§ jshell erlaubt es uns, (einfache) Java Snippets direkt
auszuführen
staff-net-cx-0605:~ trg$ jshell
| Welcome to JShell -- Version 11.0.4
| For an introduction type: /help intro jshell> var wert1 = 10.0
wert1 ==> 10.0
jshell> var wert2 = 15.0 wert2 ==> 15.0
jshell> var wert3 = 12.0 wert3 ==> 12.0
jshell> var sum = wert1 + wert2 + wert3 sum ==> 37.0
jshell> var avg = sum/3 avg ==> 12.333333333333334
jshell> wert1 = 1000000000000000000000.0 wert1 ==> 1.0E21
jshell> wert3 = 2.0 wert3 ==> 2.0
jshell> wert2 = -(wert1 -1) wert2 ==> -1.0E21
jshell> var sum = wert1 + wert2 + wert3 sum ==> 2.0
jshell> /var
| double wert1 = 1.0E21
| double wert2 = -1.0E21
| double wert3 = 2.0
| double avg = 12.333333333333334
| double sum = 2.0
| double $11 = 0.0 jshell> var wert1 = 3 wert1 ==> 3
jshell> var wert2 = 4 wert2 ==> 4
jshell> var wert3 = 5 wert3 ==> 5
jshell> var sum = wert1 + wert2 + wert3 sum ==> 12
jshell> var avg = sum/3 avg ==> 4
jshell> /var
| double $11 = 0.0
| int wert1 = 3
| int wert2 = 4
| int wert3 = 5
| int sum = 12
| int avg = 4
jshell> wert1 = 2147483640 wert1 ==> 2147483640
jshell> var sum = wert1 + wert2 + wert3 sum ==> -2147483647
jshell> /var
| double $11 = 0.0
| int wert1 = 2147483640
| int wert2 = 4
| int wert3 = 5
| int avg = 4
| int sum = -2147483647 jshell> wert1 + 1
$20 ==> 2147483641 jshell> wert1 + 5
$21 ==> 2147483645 jshell> wert1 + 7
$22 ==> 2147483647 jshell> wert1 + 8
$23 ==> -2147483648 jshell> /exit
| Goodbye