252-0027
Einführung in die Programmierung
Thomas R. Gross
Department Informatik
Der Plan für heute
§ Vorlesung – Links, Durchführung, Raum, usw
§ Inhalt
§ Bezug zum Informatikstudium an der ETH
§ Praktische Aspekte
§ Uebungen
§ Computer(räume)
Diese Veranstaltung
§ Vorlesungen
§ Dienstag 10 - 12
§ Freitag 8 - 10
§ Uebungen
§ Dienstag 13-15 oder Mittwoch 8-10 oder Mittwoch 15-17
§ Nicht diese Woche (mehr dazu später)
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!
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
§ Forum
§ eMail -- aber mit Ihrer student.ethz.ch Adresse!
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
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 Sie keiner Uebungsgruppe zugeteilt
werden, haben nicht Zugang zu Aufgaben, usw.
Wichtig:
Bitte registrieren Sie sich in myStudies. Sonst können Sie keiner Uebungsgruppe zugeteilt werden, haben nicht
Zugang zu Aufgaben, usw.
Warum Programmieren lernen?
Warum Programmieren lernen?
§ Was ist überhaupt “Programmieren”
§ Programmieren – Programm
§ Programm: griechisch prógramma = schriftliche Bekanntmachung, Aufruf; Tagesordnung [Duden]
§ Programmieren: Erstellen eines Programms
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
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”
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)
§ 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)
O
P
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)
§ Es ist (fast) unmöglich, als Lotse genug Informationen an den Piloten zu übermitteln
§ Insbesondere da wir keine Rückfragen zugelassen haben
Sprache(n)
§ Eine zweite Uebung. 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.
§ 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)
O
A B C D
-A -B -C
1 -1
-2 -3
-4 -5
-6 2 3 4 5
Diskussion
§ 2. Aufgabe viel einfacher
§ Kleine Einschränkung der Kurse (müssen auf einem Gitterpunkt enden)
§ Genau(ere) Beschreibung möglich
Programmierung
§ Aehnliche 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.
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
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
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)
Umgebungen
§ Windows
§ Linux
§ Mac OS X
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 2. Oktober
Weitere Informationen
§ Viele Informationen auf dem Web
§ Bücher werden im Lauf des Semesters vorgestellt
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
§ Uebung
Uebungen
§ Aufgabenblätter
§ Selber lösen!
Zusammenhang Uebungen – Prüfungserfolg
an R Meier & M Faesfürdie aphik. (Session Herbst16/17)
Uebungen
§ Aufgabenblätter
§ Selber lösen!
§ Besprechung in Gruppen
§ Teilnahme nicht verbindlich aber sehr empfohlen
§ Es gibt selten nur eine Lösung
Uebungen
§ Sie können (ab 3. oder 4. 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.
Uebungsgruppen
§ 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
Fragebogen
Fragebogen
§ Wird heute aufgeschaltet
§ Sehen Sie sich die Web Seite zur Vorlesung an.
Wenn Sie noch nie mit Computern arbeiteten
§ … und keinen eigenen haben: Der Computerraum CAB H56 ist für diese Veranstaltung reserviert
§ Mittwoch (20.9.) 8:30 – 10:00
§ Dienstag (26.9.) 13:00 – 15:00
Wie kann man eine (Programmier)sprache beschreiben?
§ Notation EBNF E – Extended
B – Backus
N – Naur oder Normal F – Form
§ Beschreibt die Syntax einer Sprache
§ Food for thought: Welche Sprachen kann man damit beschreiben?
Uebersicht
§ Sie lernen die vier elementaren Ausdrucksmöglichkeiten in EBNF kennen
§ Sie lernen EBNF Beschreibungen zu lesen und verstehen
§ Sie lernen zu entscheiden ob ein Symbol legal ist (für eine EBNF Beschreibung)
§ ….
EBNF
§ Programmierung im ganz Kleinen
§ Vier Elemente (“control forms”) die Sie in Java wiederfinden werden
EBNF
§ Programmierung im ganz Kleinen
§ Vier Elemente (“control forms”) die Sie in Java wiederfinden werden
§ Aufreihung (“sequence”)
§ Entscheidung oder Auswahl (“decision”)
§ 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
§ Aehnliche Schritte
§ EBNF eine formale Beschreibung
§ Präzise und verständlich
EBNF Regeln und Beschreibungen
§ EBNF Beschreibung: eine Menge EBNF Regeln
§ Menge: Reihenfolge unwichtig
§ EBNF Regel
§ Hat 3 Bestandteile
§ Linke-Seite (Left-Hand Side, LHS), Rechte-Seite (Right-Hand Side, RHS), ⟸
§ ⟸ trennt LHS von RHS, ausgesprochen “ist definiert als”
§ LHS ⟸ RHS
§ LHS
§ Ein Wort (kursiv, kleingeschrieben) – der Name der EBNF Regel
§ RHS
§ Die Beschreibung für den Namen (d.h., der LHS)
§ Kann enthalten
§ Namen
§ Buchstaben ( stellen den Buchstaben da, d.h. wir erwarten diesen Buchstaben und keinen anderen)
§ Kombinationen der vier Kontrolelemente (“control forms”) (auf den nächsten Seiten mehr)
Control forms (zum Kombinieren)
§ Auswahl
§ Eine Menge von Alternativen
§ Reihenfolge unwichtig
§ Durch | (gesprochen senkrechter Strich) (“stroke”) getrennt
§ Alternativen folgen den EBNF Regeln
§ Auswahl Beispiel ta_initial ⟸ ta1 | ta2 ta1 ⟸ Michael Faes ta2 ⟸ Remi Meier