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