• Keine Ergebnisse gefunden

252-0027 Einführung in die Programmierung 1.0 EBNF 2.0 Einfache Java Programme

N/A
N/A
Protected

Academic year: 2022

Aktie "252-0027 Einführung in die Programmierung 1.0 EBNF 2.0 Einfache Java Programme"

Copied!
71
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

252-0027

Einführung in die Programmierung 1.0 EBNF

2.0 Einfache Java Programme

Thomas R. Gross

(2)

Graphische Darstellung von EBNF Regeln

§ Syntax Graph: graphische Darstellung

§ Macht es leichter zu erkennen, welche Zeichen in einem Symbol (in welcher Reihenfolge) auftreten müssen

§ Aufreihung: A B C D als Graph:

§ Option: [ A ] als Graph:

2

§ Wiederholung: { A } als Graph:

(3)
(4)

6

(5)

Pfad durch Graph: legales Symbol

§ Aufreihung: durch jedes Element in der Reihe

§ Auswahl: ein Element in der Leiter

§ Option: entweder obere Kante (mit Element) oder untere (ohne)

§ Wiederholung: wie Auswahl

§ Einzige Form die einen Pfeil von rechts nach links hat

(6)

Wofür wir ( und ) brauchen

§ A B | C

§ Um Unklarheit zu vermeiden verwenden wir ( und )

§ A ( B | C )

§ (A B ) | C

10

A

B

C

A B

C

(7)

EBNF Beispiel (i1)

(8)

13

0 1 2 3 4 5 6 7 8 9 digit

+

integer digit

digit

(9)

Substitution

§ Können einen Syntax Graphen in einen

anderen einsetzen

§ “interne” Namen verschwinden

0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 +

integer

(10)

Was für Symbole sind legal?

1.

2.

21

3.

(11)
(12)

23

(13)

Was für Symbole sind legal?

§ ( und ) erlauben uns klare Darstellung A ( B|C ) vs. (AB) | C

C A

B

(14)

Control forms (zum Kombinieren)

§ Aufreihung

§ Auswahl (Entscheidung)

§ Option, Wiederholung

§ Rekursion

30

(15)

Rekursion

§ Eine rekursive Beschreibung manchmal nötig um komplizierte Symbole zu beschreiben

§ Rekursive Beschreibung enthält rekursive Regeln

§ Eine Regel ist direkt rekursiv wenn ihr Name in der Definition verwendet wird

§ Also LHS erscheint auch auf der RHS

§ r ⟸ | A r

(16)

32

(17)

Diskussion

§ Warum der Aufwand?

§ r ⟸ { A }

§ Kann jede Wiederholung durch Rekursion ausgedrückt werden?

§ Kann jede Rekursion durch Wiederholung(en) ausgedrückt

werden?

(18)

38

(19)
(20)

Diskussion

§ Kann jede Rekursion durch Wiederholung(en) ausgedrückt werden?

§ Nein

§ Finden Sie eine Beschreibung für An Bn (n Zahl ≥ 0: also gleiche Anzahl A, B)

EBNF Description balance balance ⟸ | A balance B

44

(21)

§ Direkte Rekursion

§ r ⟸ A | A r

§ Indirekte Rekursion

§ Folge von Regeln N1 … Nk so dass N2 auf der RHS von N1, N3 auf der RHS von R2, … und N1 auf der RHS von Nk erscheint

§ name1 ⟸ A name2

§ name2 ⟸ B name1 | C

(22)

Nachtrag : Ableitungsbaum, Tabellen, Graphen

§ Ein Ableitungsbaum oder eine Tabelle demonstrieren, dass ein Symbol legal gemäss einer EBNF Beschreibung sind.

§ In beiden Fällen kürzen wir die Schritte manchmal ab wenn keine Verwechslungsgefahr besteht.

§ Ein (EBNF) Graph ist eine andere Darstellung einer EBNF Beschreibung

§ Ein Pfad durch den Graphen entspricht einem Symbol das legal ist

§ Umgekehrt: um zu zeigen, dass ein Symbol legal ist, finden wir einen Pfad

§ Graph für rekursive Beschreibung: nicht elegant (muss endlich sein!) 50

(23)

rB | A r

§ Ist AAB legal? -- Tabelle

Regel

r Anfang jeder Tabelle

B | A r Ersetzen von r durch RHS (1)

A r 2. Auswahlmöglichkeit gewählt (2)

A ( B | A r ) Ersetzen von r durch RHS (1), () zur Vermeidung von Missverständnissen

A A r 2. Auswahlmöglichkeit gewählt (2)

(24)

r

B | A r

§ Ist AAB legal? -- Ableitungsbaum (Version 1)

§ In jeder Zeile wird eine EBNF Beschreibung durch die rechte Seite ersetzt (hier ist es immer r, bis auf den letzten Schritt)

52

r

B A r

B A r

B A r

Auswahl getroffen

(25)

§ Ist AAB legal? -- Ableitungsbaum (Version 2)

§ Wir fassen Schritt 1 (Ersetzen der RHS) mit Schritt 2 (Auswahl treffen) zusammen

§ Unwichtiges lassen wir weg

r

B A r

B A r

(26)

§ Ist AA legal? -- Ableitungsbaum (Version 2)

§ Wir fassen Schritt 1 (Ersetzen der RHS) mit Schritt 2 (Auswahl treffen) zusammen

§ Unwichtiges lassen wir weg

54

r

A r

A r

r

| A r

(27)
(28)

252-0027

Einführung in die Programmierung

2.0 Einfache Java Programme

Thomas R. Gross

Department Informatik ETH Zürich

(29)

2.0 Einfache Java Programme

§ Übersicht

§ Struktur

§ Namen

§ Output

(30)

2.0 Einfache Java Programme

§ Sie sollten Übung 0 gemacht haben

§ Oder sicher sein dass diese keine Schwierigkeiten macht

§ Ab Übung 1 müssen Sie in “mystudies” registriert sein um Aufgaben abgeben zu können

§ Stellt sicher dass Sie Programmfragmente erhalten können und Lösungen abgeben können

§ Fragen sie im Gruppentreffen heute/morgen bei Problemen

61

(31)

EBNF

§ Hält die Syntax Regeln von Java Programmen fest

§ Beispiel: Namen in Programmen

§ Bezeichner (“identifier”) müssen Anforderungen erfüllen

§ Bezeichner muss mindestens ein Zeichen lang sein

§ … muss mit Buchstaben anfangen (a-z, A-Z)

§ … kann Buchstaben oder Ziffern (0-9) enthalten

(32)

63

(33)

Java Regeln (vereinfacht)

EBNF Beschreibung bezeichner

lowercaseletter ⟸ a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z

uppercaseletter ⟸ A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

letterlowercaseletter | uppercaseletter digit ⟸ 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7| 8 | 9

(34)

Java Programme

§ Erstellen

§ Ausführen

66

(35)
(36)

Java Programme

§ Erstellen

§ Ausführen

§ Modifizieren

§ Eclipse IDE

70

(37)
(38)

73

(39)
(40)

Java

§ Wir ignorieren fürs erste viele Aspekte die nicht absolut notwendig zum Verständnis sind

§ 1. Ziel: Programm lesen

§ 2. Ziel: Programm verstehen

§ 3. Ziel: Programm erstellen

§ Oft durch Modifikation eines Programmes

§ Wir können aber nicht alles ignorieren …

75

(41)

§ class : Java Programm (nur 1 class/Datei fürs erste)

(42)

Java Programm

javaprogram public class bezeichner { method

}

79

(43)
(44)

Java Programm

javaprogram public class bezeichner { method

}

methodpublic static void bezeichner ( String [ ] args ) { statementsequence

}

81

(45)

§ main: Java Methode (Java Code den wir ausführen können)

(46)

83

§ println: Java Methode (Funktion)

§ Gibt String aus (“druckt”)

§ String: Text zwischen “ (Anführungszeichen, “quotation mark”,

“double quote”) und “ (beide “ müssen oben sein)

(47)

Java Details

§ Wir werden einen Teil des Programmes (fürs erste) ignorieren

§ Aber wir können ihn nicht weglassen!

§ Sonst können wir das Java Programm nicht ”übersetzen”

§ Übersetzen (kompilieren, “compile") heisst in eine Form bringen, die ausgeführt werden kann

§ Es gibt Fehlermeldungen wenn wir Teile weglassen oder falsch

(48)

86

(49)

Java

§ Nicht alle Rückmeldungen des Übersetzers (“compilers”) sind

so klar

(50)

88

(51)
(52)

Wir machen mal weiter ….

90

(53)
(54)

92

§ Leicht zu übersehen: die letzte } fehlt

(55)
(56)

Zusammenfassung

public class name {

public static void main(String[] args) { statement;

statement;

...

statement;

} }

94

class: ein Programm mit Namen

statement: Anweisung die ausgeführt werden soll

method: Gruppe von

Anweisungen mit Namen main

(57)

§ Jedes (ausführbare) Java Programm besteht aus einer Klasse ( class )

§ die eine Methode main enthält,

§ die eine Reihe von Anweisungen enthält

§ Später arbeiten wir mit Programmen mit mehreren Klassen

(58)

Namen und Bezeichner

§ Jedes Programm braucht einen Namen public class HelloWorld {

§ Konvention: fängt mit Grossbuchstaben an

§ Konvention: Grossbuchstaben zur verbesserten Lesbarkeit

§ Regel: Dateiname gleich Programmname HelloWorld.java

§ Gross/Kleinbuchstaben sind (in Java) unterschiedlich

97

(59)

§ Bezeichner: Name für ein Programmelement

§ Muss mit einem Buchstaben (gross oder klein) anfangen

§ oder mit _ (Unterstrich, “underscore”) oder mit “$” (Dollarzeichen)

§ Danach Ziffern oder obige Zeichen

§ Konvention: Methodenname Kleinbuchstaben

(60)

100

(61)

Kommentare

Kommentare (“comments”) sind Notizen im Programmtext, die einem Leser beim Verstehen des Programmes helfen (sollen)

§ Leser: kann auch der Author sein

§ Kommentare werden nicht ausgeführt, haben keinen Einfluss auf Programm

§ 2 Varianten

§ // Text bis zum Ende der Zeile

§ /* Text bis zum naechsten

(62)

102

(63)

Wo sollten Kommentare stehen

§ Anfang des Programms

§ Zweck

§ Algorithmus

§ Author

§ Anfang jeder Methode

§ Darüber später mehr

§ Für Code der nicht sofort verstandlich ist

(64)

Beispiel

/*

* Author: Ein Student; Herbst 2016, Uebung 1

* Entwurf uebernommen von einer Frau XXXX (Assistentin)

*/

public class HelloWorld {

public static void main(String[] args) { System.out.println("Hello World!");

} // end main } // end HelloWorld

104

(65)

Strings

§ String: eine Folge von Zeichen (“characters”) eingeschlossen in “ und ”

§ “hello”

§ “Hello”

§ “3+2”

§ Einschränkungen:

§ Nur eine Zeile lang

“Das ist

kein Java String”

(66)

106

(67)

Sonderzeichen

§ Und was machen wir wenn wir ein “ ausgeben wollen?

§ Es gibt sogenannte Ersatzdarstellungen (“escape sequences”) mit denen ein Sonderzeichen ausgedrückt werden kann

§ Fangen alle mit \ (Rückwärtsschrägstrich) (“backslash”) an

\t Tab character

\n Neue Zeile (new line character)

\" Quotation mark (double quote) character

(68)

Beispiele

§ Beispiel:

System.out.println(“\\Hallo\nWie\tgeht es \”Ihnen\”?\\\\");

§ Output:

\Hallo

Wie geht es ”Ihnen"?\\

109

(69)

Fragen

§ Was drucken diese println Statements?

System.out.println("\ta\tb\tc");

System.out.println("\\\\");

System.out.println("'");

System.out.println("\"\"\"");

System.out.println("C:\neuer Spor\t Wagen");

§ Welches println Statement druckt diesen String?

(70)

Antwort

§ Output jedes println Statements:

a b c

\\

'

"""

C:

euer Spor Wagen

111

(71)

Antwort

§ println Statement um die gewünschte Zeitle Output zu erzeugeni:

System.out.println("/ \\ // \\\\ /// \\\\\\");

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

§ Ein Ableitungsbaum oder eine Tabelle demonstrieren, dass ein Symbol legal gemäss einer EBNF Beschreibung sind. § In beiden Fällen kürzen wir die Schritte manchmal ab wenn

§ Wenn wir eine Methode deklarieren dann geben wir an, dass diese Methode einen Parameter braucht. § Wenn wir die Method aufrufen, dann geben wir einen

§ Eine Methode die einen Rückgabewert deklariert muss eine (oder mehrere) return Anweisung(en)

Ihr Programm muss diese Bedingung nicht zwingend testen, Sie können aber eine Überprüfung implementieren. Wenn zahl diese Bedingung nicht erfüllt, dann ist das Ergebnis des

§ 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

!  Schiedsrichter entscheidet ob das Symbol legal ist oder nicht (für diese EBNF Beschreibung).?. !  Genaue