• Keine Ergebnisse gefunden

252-0027 Einführung in die Programmierung

N/A
N/A
Protected

Academic year: 2022

Aktie "252-0027 Einführung in die Programmierung"

Copied!
55
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

252-0027

Einführung in die Programmierung

Herbstsemester 2018/19

Thomas R. Gross

Department Informatik ETH Zürich

(2)

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?

(3)

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)

(4)

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

(5)

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.

(6)

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

(7)

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

(8)

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

(9)

Informationen

§ Wir benutzen verschiedene Systeme, Ihnen Informationen (insbesondere Programmfragmente o. ä.) zukommen zu

lassen.

§ Daher müssen wir wissen wer Sie sind ….

(10)

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

(11)

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

(12)

Fragebogen

§ Übungsaufgaben & Prüfung auf Deutsch

§ Wörterbuch o.k.

15

(13)

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

(14)

Fragebogen

§ Wird heute aufgeschaltet

§ Sehen Sie sich die Web Seite zur Vorlesung an.

§ Bitte bis Donnerstag (20. 9.) 12 Uhr mittags ausfüllen!

17

(15)

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

(16)

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

(17)

Warum Programmieren lernen?

§ Was ist überhaupt “Programmieren”

§ Programmieren – Programm

§ Programm: griechisch prógramma = schriftliche Bekanntmachung, Aufruf; Tagesordnung [Duden]

(18)

Warum Programmieren lernen?

§ Was ist überhaupt “Programmieren”

§ Programmieren – Programm

§ Programm: griechisch prógramma = schriftliche Bekanntmachung, Aufruf; Tagesordnung [Duden]

§ Programmieren: Erstellen eines Programms

22

(19)

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

(20)

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

(21)

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”

(22)

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

(23)

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

(24)

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

(25)

O

P

(26)

§ Es ist (fast) unmöglich, als Lotse genug Informationen an den Piloten zu übermitteln

§ Insbesondere da wir keine Rückfragen zugelassen haben

36

(27)

Sprache(n)

§ Eine zweite Übung. Nehmen Sie ein Blatt Papier (Rückseite ok) und einen Stift.

§ Behalten Sie die Teams und Rollen bei.

(28)

Lotsenaufgabe 2

§ Zeichnen Sie ein einfaches 2-dimensionales

Koordinatensystem mit Ursprung O mit einem Gitter (1 cm)

§ Piloten machen das bitte auch.

38

(29)

O

A B C D

-A -B -C -D

1 -1

-2 -3

-4 -5

-6 2 3 4 5

(30)

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

(31)

Diskussion

§ 2. Aufgabe viel einfacher

§ Kleine Einschränkung der Kurse (müssen auf einem Gitterpunkt enden)

§ Genau(ere) Beschreibung möglich

(32)

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

(33)

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

(34)

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

(35)

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?

(36)

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

(37)
(38)

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

(39)

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

(40)

Weitere Informationen

§ Viele Informationen auf dem Web

§ Bücher werden im Lauf des Semesters vorgestellt

54

(41)

Programmieren

§ Kann man Programmieren lernen?

§ Oder gibt es Naturtalente (und der Rest kann zuschauen)?

(42)

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

(43)

Übungen

§ Aufgabenblätter

§ Selber lösen!

(44)

Zusammenhang Übungen – Prüfungserfolg

Dank an R Meier & M Faesrdie Graphik. (Session Herbst16/17)

62

(45)

Ü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

(46)

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

(47)

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

(48)

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

(49)
(50)

72

(51)

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

(52)

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

(53)

EBNF Regeln und Beschreibungen

§ EBNF Beschreibung: eine Menge EBNF Regeln

§ Menge: Reihenfolge unwichtig

§ EBNF Regel

(54)

80

(55)

Referenzen

ÄHNLICHE DOKUMENTE

Um Eclipse einfacher zu starten, können Sie eine Verknüpfung erstellen.. Gehen Sie mit Ihrem Datei-Explorer in den Ordner, wo Sie Eclipse

§ Programm: Folge von Anweisungen, die von einem Computer ausgeführt werden (können).. § Programm realisiert

ArrayList § Java stellt die Klasse ArrayList für solche Listenobjekte zur Verfügung § "Array" erinnert daran, dass die Elemente über einen Index erreicht werden können § Die Anzahl

§ Schiedsrichter entscheidet ob das Symbol legal ist oder nicht (für diese EBNF Beschreibung)2. § Symbol legal gemäss einer Regel: alle Buchstaben des Symbols stimmen mit den

set( index , value ) replaces value at given index with given value size() returns the number of elements in list.. toString() returns a string representation of the list such as

§ Definiert einen Loop über alle Elemente einer Ansammlung (z.B., Set , List – die Interface Collection implementieren) oder eines

containsAll( coll ) returns true if this set contains every element from given set equals( set ) returns true if given other set contains the same elements iterator() returns

§ Eine Aussage gilt für den Zustand eines Programms wenn die Auswertung der Aussage mit dem Zustand das Ergebnis true ergibt. § Die Auswertung jedes Variable ergibt den Wert