• Keine Ergebnisse gefunden

252-0027 Einführung in die Programmierung I

N/A
N/A
Protected

Academic year: 2022

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

Copied!
51
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

252-0027

Einführung in die Programmierung I

Thomas R. Gross

Department Informa:k ETH Zürich

(2)

Der Plan für heute

§  Vorlesung – Links, Durchführung, Raum, usw

§  Inhalt

§  Bezug zum Informa:kstudium an der ETH

§  Prak:sche Aspekte

§  Uebungen

§  Computer(räume)

(3)

Diese Veranstaltung

§  Vorlesungen

§  Dienstag 10-12

§  Freitag 10-12

§  Uebungen

§  Dienstag 13-15 oder Mi>woch 15-17

§  Nicht diese Woche (mehr dazu später)

(4)

Diese Veranstaltung

§  Eingeschriebene Studierende: 345

§  Videouebertragung vom D28 à E 12

§  Im D 28: keine Gespraeche!

§  Im E 12 auch nicht.

(5)

Diese Veranstaltung

§  Bringen Sie S:V und Papier mit

§  Wir werden versuchen in der Vorlesung Aufgaben zu loesen

§  Sie sollten sich NoRzen machen (dazu spaeter mehr)

§  Sie koennen einen Computer/Tablet/Smartphone mitbringen

§  … und fuer die Vorlesung verwenden

§  Im D 28/E 12 keine Gespraeche!

§  Wenn Sie SMS/Omlet/Threema/Whatsapp/Messenger nutzen: Leise o.k.

(6)

Diese Veranstaltung

§  Fragen (an den Dozenten) sind immer erlaubt und erwuenscht

§  Fragen Sie nicht die Nachbarin/den Nachbar

§  Wie kann ich wissen was Ihnen Schwierigkeiten macht (oder was Sie nicht lesen koennen)??

§  Auch off-line sind Fragen moeglich

§  AssisRerende

(7)

Informa:onen

§  Web Seiten der Gruppe (Laboratory for SoVware Technology) www.lst.inf.ethz.ch

§  Im ETH Corporate Design – nicht immer sofort online

§  Manchmal auch garnicht erreichbar

§  EinsReg zu anderen Servern (im D-INFK)

(8)

Informa:onen

§  Auf unserer Web Seite finden Sie

§  Folien (wenn moeglich vor der Vorlesung aber keine GaranRe)

§  Achtung: 1 Seite/Slide

§  Drucken Sie 2, 4, 6 Seiten pro Bla> A4 Papier

§  Besser: drucken Sie nicht …

§  In der Vorlesung geschriebene Folien

§  Vielleicht 24h-48h nach der Vorlesung

§  Auf dem Videoportal der ETH finden Sie (demnaechst)

(9)

Informa:onen

§  Wir benutzen verschiedene Systeme, Ihnen Informa:onen (insbesondere Programmfragmente o. ae.) zukommen zu lassen.

§  Daher muessen wir wissen wer Sie sind ….

(10)

Wich:g:

Bice registrieren Sie sich in myStudies. Sonst können Sie keiner Uebungsgruppe zugeteilt werden, haben nicht

Zugang zu Aufgaben, usw.

(11)
(12)

Warum Programmieren lernen?

§  Was ist ueberhaupt “Programmieren”

§  Programmieren – Programm

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

§  Programmieren: Erstellen eines Programms

(13)

Programmierung

“Programming as universal acEvity” by Vinton Cerf, CACM 16/3 vol 59(3) p 7

§  Probleme analysieren

§  Probleme in (beherrschbare) Teilprobleme zerlegen

§  Loesungen finden

§  Ergebnisse zusammenfuegen/kombinieren

(14)

Programmierung

§  Loesungen finden: fuer andere Menschen

§  Beschreiben wie eine Loesung aussehen soll

§  Loesugen finden: fuer eine Maschine

§  Anweisungen fuer eine Maschine/Computer

§  Beschreibung, Anweisung: in einer “Sprache”

(15)

Sprache – Aufgabe 1

§  Bilden Sie (mit Ihrem Nachbarn/Ihrer Nachbarin) ein 2-Team.

§  Auch 3-Team moeglich

§  Nehmen Sie ein Bla4 Papier (jeder)

§  Im Team gibt es 2 Rollen

§  Lotse: bes:mmt Kurs (1)

§  Pilot: folgt Kurs (beliebig viele)

(16)

§  Der Lotse wird einen Kurs zeichnen und diesen dem Piloten beschreiben.

§  Muendlich!

§  Der Pilot darf nicht das Blac mit dem Kurs sehen

§  Es sind keine Rueckfragen moeglich.

(17)

Lotsenaufgabe

§  Zeichnen Sie ein einfaches 2-dimensionales Koordinatensystem mit Ursprung O

§  Piloten machen das bi>e auch.

§  Zeichnen Sie einen Kurs von O nach P und der aus 2 Geraden besteht

§  Beide Geraden muessen auf dem Bla> vollstaendig dargestellt werden und verbunden sein

§  Beschreiben Sie den Kurs von O nach P ihrem Piloten.

§  Vergleichen Sie die Posi:on von P (Pilot) mit P (Lotse)

(18)

O

P

(19)

§  Es ist (fast) unmoeglich, als Lotse genug Informa:onen an den Piloten zu uebermiceln

§  Insbesondere da wir keine Rueckfragen zugelassen haben

(20)

Sprache(n)

§  Eine zweite Uebung. Nehmen Sie ein Bla4 Papier (Rueckseite ok) und einen SEQ.

§  Behalten Sie die Teams und Rollen bei.

(21)

Lotsenaufgabe 2

§  Zeichnen Sie ein einfaches 2-dimensionales

Koordinatensystem mit Ursprung O mit einem Gicer (1 cm)

§  Piloten machen das bi>e auch.

§  Zeichnen Sie einen Kurs von O nach P und der aus 2 Geraden besteht

§  Nur Gi>erpunkte sind als Endpunkte der Gerade zulaessig

§  Beschreiben Sie den Kurs von O nach P ihrem Piloten

§  Vergleichen Sie die Posi:on von P (Pilot) mit P (Lotse)

(22)

O

A B C D

-A -B -C

1 -1

-2 -3

-4 -5

-6 2 3 4 5

(23)

Diskussion

§  2. Aufgabe viel einfacher

§  Kleine Einschraenkung der Kurse (muessen auf einem Gicerpunkt enden)

§  Genau(ere) Beschreibung moeglich

(24)

Programmierung

§  Aehnliche Situa:on wenn wir ein Programm schreiben das ein anderer liest (und verstehen soll)

§  Mehr Einschraenkungen (in der Sprache) machen die KommunikaRon leichter

§  …. und erfordern mehr Aufwand bei der Entwicklung

§  Welche Einschraenkungen wollen wir akzep:eren?

(25)

Programmierung

“Programming as universal acEvity” by Vinton Cerf, CACM 16/3 vol 59(3) p 7

§  Probleme analysieren

§  Probleme in (beherrschbare) Teilprobleme zerlegen

§  Loesungen finden

§  Ergebnisse zusammenfuegen/kombinieren

(26)

Programmierung

§  Aehnliche Situa:on wenn wir ein Programm schreiben das ein anderer liest (und verstehen soll)

§  Mehr Einschraenkungen (in der Sprache) machen die KommunikaRon leichter

§  …. und erfordern mehr Aufwand bei der Entwicklung

§  Eine Programmiersprache gibt uns vor, wie wir Loesung(en)

(27)

Programmiersprachen

DiskuEeren Sie mit ihrem Nachbarn/ihrer Nachbarin

1.  Eine Programmiersprache sollte es moeglichst einfach machen ein Programm zu schreiben

2.  Eine Programmiersprache sollte es moeglichst einfach machen, ein Programm zu lesen

Was ist Ihre Meinung?

(28)

Einfuehrung in die Programmierung I

§  Muessen eine Programmiersprache verwenden

§  Dieses Jahr verwenden wir Java

§  “Industrial strength” Sprache

§  Viele Konzepte

§  Nicht alle werden in ”Einf. Programmieren I” vorgestellt/

verwendet

§  … diese werden auch nicht fuer die Pruefung erwartet

(29)
(30)

Eins:eg ins Programmieren

§  Werden die erste Woche damit zubringen, die Umgebung fuer das Programmieren einzurichten

§  Wiederverwendung fuer Ihr ganzes Studium

§  .. und darueber hinaus

§  Teilweise in Gruppen, teilweise in (Freitag)Vorlesung

(31)

Umgebungen

§  Windows

§  Linux

§  Mac OS X

(32)

Brauchen Sie einen Computer ?

§  Im Prinzip nein (Sie koennen die Systeme im CAB H56/57 benutzen)

§  Irgendwann vielleicht schon …

§  Das Projekt Neptun bietet diverse Notebooks / Laptops zu guens:gen Kondi:onen

hcp://www.projektneptun.ch

(33)

Weitere Informa:onen

§  Viele Informa:onen auf dem Web

§  Buecher werden im Lauf des Semesters vorgestellt

(34)

Uebungsgruppen

§  Wir muessen wissen wer in der Vorlesung mitmacht und wie wir am besten helfen koennen

§  Fragebogen fuer alle, die sich in mystudies registrieren.

(35)

Fragebogen

(36)

Fragebogen

(37)

Fragebogen

(38)

Wenn Sie noch nie mit Computern arbeiteten

§  … und keinen eigenen haben: Der Computerraum CAB H56 ist fuer diese Veranstaltung reserviert

§  Dienstag (20.9., 27.9.) 13:00 – 15:00

§  Mi>woch (21.9., 28.9.) 15:00 – 17:00

(39)
(40)

Uebersicht

§  Sie lernen die vier elementaren Ausdrucksmoeglichkeiten in EBNF kennen

§  Sie lernen EBNF Beschreibungen zu lesen und verstehen

§  Sie lernen zu entscheiden ob ein Symbol legal ist (fuer eine EBNF Beschreibung)

§  ….

(41)

EBNF

§  Programmierung im ganz Kleinen

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

§  Aufreihung (“sequence”)

§  Entscheidung (“decision”)

§  Wiederholung (“repeRRon”)

§  Rekursion (“recursion”)

(42)

EBNF

§  Beschreibungen haben einen Namen und diese Namen koennen wieder verwendet werden

§  Um kompliziertere Beschreibungen zu erstellen

§  Erstellen einer EBNF Beschreibung ßà Programmieren in Java

§  Aehnliche Schri>e

§  EBNF eine formale Beschreibung

(43)
(44)

EBNF Regeln und Beschreibungen

§  EBNF Beschreibung: eine Menge EBNF Regeln

§  Menge: Reihenfolge unwichRg

§  EBNF Regel

§  Hat 3 Bestandteile

§  Linke-Seite (Lei-Hand Side, LHS), Rechte-Seite (Right-Hand Side, RHS),

§  trennt LHS von RHS, ausgesprochen “ist definiert als”

§  LHS RHS

(45)

§  RHS

§  Die Beschreibung fuer den Namen (d.h., der LHS)

§  Kann enthalten

§  Namen

§  Buchstaben ( stellen den Buchstaben da, d.h. wir erwarten diesen Buchstaben und keinen anderen)

§  KombinaRonen der vier Kontrolelemente (“control forms”) (auf der naechsten Seite)

(46)

Control forms (zum Kombinieren)

§  Aufreihung

§  Von links nach rechts gelesen

§  Reihenfolge ist wichRg

§  Aufreihung Beispiel

§  iniEalen T R G

(47)
(48)
(49)

Control forms (zum Kombinieren)

§  Op:on

§  Element in [ und ] (eckige Klammern) (“square bracket”)

§  Kann gewaehlt werden, muss aber nicht

§  Op:on Beispiel

§  vorzeichen [ + | - ]

(50)
(51)

EBNF Beispiel

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

§ 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

Eine Programmiersprache sollte es möglichst einfach machen, ein Programm zu lesen. Was ist

§ Beispiel: Ein Programm soll Zahlen einlesen bis der Benutzer eine 0 eingibt; dann soll die Summe aller eingegebenen Zahlen ausgegeben werden.. § Beispiel: Ein Programm soll

!  1.) method2 wird in Snow deklariert – “treatPaVent” (Arzt Methode) ist nicht in Angestellte deklariert und daher.. unbekannt. !  2.) Der aktuelle Typ eines

§ Wenn eine Klasse behauptet, eine Shape (Form) zu sein, aber dann nicht die Methoden area und perimeter implementiert, dann kann sie nicht übersetzt werden. §

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