• 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!
80
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

252-0027

Einführung in die Programmierung

Herbstsemester 2019/20

Thomas R. Gross

Department Informatik

ETH Zürich

(2)

Das Programm für heute

(3)

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.

(4)

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

(5)

Warum Programmieren lernen?

(6)
(7)
(8)

Warum Programmieren lernen?

(9)

Warum Programmieren lernen?

§ Was ist überhaupt “Programmieren”

§ Programmieren – Programm

§ Programm: griechisch prógramma = schriftliche Bekanntmachung,

Aufruf; Tagesordnung [Duden]

(10)

Warum Programmieren lernen?

§ Was ist überhaupt “Programmieren”

§ Programmieren – Programm

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

§ Programmieren: Erstellen eines Programms

(11)

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

(12)

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]

(13)

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

(14)

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

(15)

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

(16)

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

(17)

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

(18)

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

(19)

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”

(20)

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

(21)

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)

(22)

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

(23)

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

(24)

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?

(25)

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

(26)
(27)

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

(28)

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

(29)

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

(30)

Ü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

(31)

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

(32)

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

(33)

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.

(34)
(35)

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.

(36)

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

(37)

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 )

(38)

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!

(39)

Informationen

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

lassen.

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

(40)

Wichtig:

Bitte belegen Sie die Vorlesung in myStudies.

Sonst können wir Sie nicht erreichen und Sie haben nicht

Zugang zu Aufgaben, usw.

(41)

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!

(42)

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

(43)

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!

(44)

Ü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

(45)

Weitere Informationen

§ Viele Informationen auf dem Web

§ Bücher werden im Lauf des Semesters vorgestellt

(46)

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

(47)

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

(48)

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), …

(49)

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?

(50)

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

(51)

jshell : Java Shell

§ jshell erlaubt es uns, (einfache) Java Snippets direkt

auszuführen

(52)

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

(53)

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

(54)

Ein trivialer Algorithmus

§ … und trotzdem einige Probleme beim Programmieren

§ Wir werden die möglichen Anweisungen und die Datentypen

im Verlauf der nächsten Wochen kennenlernen.

(55)

Über jshell hinaus

§ Nicht gedacht für grössere Programme

§ Kein einfacher Zugang zu automatischen Tests

§ Einige “Überraschungen” …

§ Daher verwenden wir für die Übungen eine andere

Umgebung (Eclipse)

(56)

eclipse Infrastruktur

Von Programmtext zur Ausführung

(57)
(58)
(59)

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)

(60)

Programmierung

§ Eine Programmiersprache gibt uns vor, wie wir Lösung(en) eines Problems beschreiben können.

§ Mehr Einschränkungen (in der Sprache) machen die Kommunikation leichter

§ …. und erfordern mehr Aufwand bei der Entwicklung

§ Genaue Beschreibung (von Programmiersprachen, Werten,

Input, ...) wichtiges Thema für Informatik

(61)

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?

(62)
(63)

Übersicht

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

§ ….

(64)
(65)

EBNF

§ Programmierung im ganz Kleinen

§ Vier Elemente (“control forms”) die Sie in Java wiederfinden

werden

(66)

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

(67)

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

(68)

EBNF Regeln und Beschreibungen

§ EBNF Beschreibung: eine Menge EBNF Regeln

§ Menge: Reihenfolge unwichtig

§ EBNF Regel

(69)
(70)

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

(71)

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

Seiten)

(72)
(73)

EBNF

§ digit 9

(74)

EBNF

§ digit 9

§ <digit> 9

(75)

Control forms (zum Kombinieren)

§ Aufreihung

§ Von links nach rechts gelesen

§ Reihenfolge ist wichtig

§ Aufreihung Beispiel

(76)

Control forms (zum Kombinieren)

§ Aufreihung

§ Von links nach rechts gelesen

§ Reihenfolge ist wichtig

§ Aufreihung Beispiel

raum1 D 2 8

(77)
(78)

Control forms (zum Kombinieren)

§ Aufreihung

§ Von links nach rechts gelesen

§ Reihenfolge ist wichtig

§ Aufreihung Beispiel

buchstabe_d ⟸ D

buchstabe_2 ⟸ 2

buchstabe_8 ⟸ 8

(79)

Control forms (zum Kombinieren)

§ Aufreihung

§ Von links nach rechts gelesen

§ Reihenfolge ist wichtig

§ Aufreihung Beispiel

buchstabe_e ⟸ E buchstabe_1 ⟸ 1 buchstabe_2 ⟸ 2

raum2 buchstabe_e buchstabe_1 buchstabe_2

(80)

Control forms (zum Kombinieren)

§ Auswahl

§ Eine Menge von Alternativen

§ Reihenfolge unwichtig

§ Durch | (gesprochen senkrechter Strich) (“stroke”) getrennt

§ Alternativen folgen den EBNF Regeln

§ Auswahl Beispiel

raum raum1 | raum2

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

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

!  jahr ist Schaltjahr wenn jahr durch 4 teilbar ist (ohne Rest), jahr aber nicht durch 100 ohne Rest teilbar ist, es sei denn dass jahr ohne Rest durch 400 teilbar