252-0027 Einführung in die Programmierung I 1.0

Werbung
252-0027
Einführung indie Programmierung I
1.0EBNF
2.0Einfache JavaProgramme
ThomasR.Gross
DepartmentInformatik
ETHZürich
Graphische Darstellung vonEBNFRegeln
§ SyntaxGraph:graphische Darstellung
§ Macht es leichter zu erkennen,welche Zeichen ineinem
Symbol(inwelcher Reihenfolge)auftreten müssen
§ ABCDals Graph:
§ [A]als Graph:
§ {A}als Graph:
2
3
§ A|B|C|Dals Graph
6
Pfad durch Graph:legales Symbol
§ Aufreihung:durch jedes ElementinderReihe
§ Auswahl:ein ElementinderLeiter
§ Option:entweder obere Kante (mit Element)oder untere
(ohne)
§ Wiederholung:wie Auswahl
§ Einzige Formdieeinen Pfeil vonrechts nach linkshat
7
11
Substitution
§ Können einen Syntax
Graphen ineinen
anderen einsetzen
§ “interne”Namen
verschwinden
15
16
Wasfür Symbole sind legal?
1.
3.
2.
17
18
19
Wasfür Symbole sind legal?
B
A
C
§ (und)erlauben uns klare Darstellung
A(B|C)vs.(AB)|C
22
Controlforms(zum Kombinieren)
§ Aufreihung
§ Auswahl (Entscheidung)
§ Option,Wiederholung
§ Rekursion
24
Rekursion
§ Eine rekursive Beschreibung manchmal nötig um
komplizierte Symbole zu beschreiben
§ Rekursive Beschreibung enthält rekursive Regeln
§ Eine Regelist direkt rekursiv wenn ihr NameinderDefinition
verwendet wird
§ AlsoLHSerscheint auch aufderRHS
§ r ⟸ |Ar
§ EBNFDescriptionr (Folge vonnulloder mehr As)
25
27
30
32
33
Diskussion
§ Kann jede Rekursion durch Wiederholung(en)ausgedrückt
werden?
§ Nein
§ Finden Sie eine Beschreibung für An Bn (nZahl ≥0:alsogleiche Anzahl A,
B)
EBNFDescriptionbalance
balance ⟸ |AbalanceB
34
36
§ Direkte Rekursion
§ r ⟸ A|Ar
§ Indirekte Rekursion
§ Folge vonRegeln N1 …Nk sodass N2 aufderRHSvonN1,N3aufder
RHSvonR2,…undN1 aufderRHSvonNk erscheint
§ name1 ⟸ Aname2
§ name2 ⟸ Bname1 |C
39
252-0027
Einführung indie Programmierung
2.0Einfache JavaProgramme
ThomasR.Gross
DepartmentInformatik
ETHZürich
2.0Einfache JavaProgramme
§ Uebersicht
§ Struktur
§ Namen
§ Output
44
2.0Einfache JavaProgramme
§ Sie sollten Uebung 0gemacht haben
§ Odersicher seindass diese keine Schwierigkeiten macht
§ AbUebung 1müssen Sie in“mystudies”registriert seinum
Aufgaben abgeben zu können
§ Stellt sicher dass Sie Programmfragmente erhalten können und
Lösungen abgeben können
§ Keine Gruppentreffen heute/morgen(wohl aber nächste Woche)
45
EBNF
§ Hält dieSyntaxRegeln vonJavaProgrammen fest
§ Beispiel:Namen inProgrammen
§ Bezeichner (“identifier”)müssen Anforderungen erfüllen
§ Bezeichner mussmindestens ein Zeichen lang sein
§ …mussmit Buchstaben anfangen (a-z,A-Z)
§ …kann Buchstaben oder Ziffern (0-9)enthalten
§ (Javaerlaubt noch mehr)(Manchmal gibt es noch mehr
Einschränkungen)
46
JavaRegeln (vereinfacht)
EBNFBeschreibung 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
letter
⟸ lowercaseletter |uppercaseletter
digit
⟸ 0|1|2|3|4|5|6|7|8|9
bezeichner
⟸ letter {letter |digit }
48
JavaProgramme
§ Erstellen
§ Ausführen
§ Modifizieren
§ EclipseIDE
52
54
55
56
Java
§ Wir ignorieren fürs erste viele Aspekte dienicht absolut
notwendig zum Verständnis sind
§ 1.Ziel:Programm lesen
§ 2.Ziel:Programm verstehen
§ 3.Ziel:Programm erstellen
§ Oftdurch Modifikation eines Programmes
§ Wir können aber nicht alles ignorieren …
57
§ class :JavaProgramm (nur 1class/Datei fürs erste)
§ NamedesProgramm gleich Namen derDatei
60
JavaProgramm
javaprogram ⟸ publicclassbezeichner {
method
}
61
62
JavaProgramm
javaprogram ⟸ publicclassbezeichner {
method
}
method ⟸ publicstaticvoidbezeichner (String[]args ){
statementsequence
}
63
§ main:JavaMethode (JavaCodedenwir ausführen können)
§ Methode enthält Aufreihung (“sequence”)vonAnweisungen
(“statements”)
64
§ println:JavaMethode (Funktion)
§ Gibt Stringaus (“druckt”)
§ String:Textzwischen “(Anführungszeichen,“quotationmark”,
65
“doublequote”)und“(beide “müssen oben sein)
JavaDetails
§ Wir werden einen Teil desProgrammes (fürs erste)
ignorieren
§ Aberwir können ihn nicht weglassen!
§ Sonst können wir dasJavaProgramm nicht ”übersetzen”
§ Uebersetzen (kompilieren,“compile")heisst ineine Formbringen,die
ausgeführt werden kann
§ Es gibt Fehlermeldungen wenn wir Teile weglassen oder falsch
schreiben
66
68
Java
§ Nicht alle Rückmeldungen desUebersetzers (“compilers”)
sind soklar
69
71
Wir machen malweiter ….
72
73
§ Leicht zu übersehen:dieletzte } fehlt
74
75
Zusammenfassung
public class name {
class: ein Programm mit Namen
public static void main(String[] args) {
statement;
statement;
...
statement;
method: Gruppe von
Anweisungen mit
Namen main
}
}
statement: Anweisung die
ausgeführt werden soll
76
§ Jedes (ausführbare)JavaProgramm besteht aus einer Klasse
(class)
§ dieeine Methode main enthält,
§ dieeine Reihe vonAnweisungen enthält
§ Später arbeiten wir mit Programmen mit mehreren Klassen
77
println(),println(“Hello”)
§ Gross/Kleinschreibung wird unterschiedlich behandelt
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
System.out.println();
System.out.println("Hello World!");
}
}
Output:
Hello World!
Hello World!
78
Herunterladen