252-0027 Einführung in die Programmierung I 2.0 Einfache Java

Werbung
252-0027
Einführung indie Programmierung I
2.0Einfache JavaProgramme
ThomasR.Gross
DepartmentInformatik
ETHZürich
Uebersicht
§ 2.0Einfache JavaProgramme
§ Struktur
§ Namen
§ Output
2
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:
4
§ 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
8
9
10
EBNFBeispiel
11
13
Substitution
§ Können einen Syntax
Graphen ineinen
anderen einsetzen
§ “interne”Namen
verschwinden
14
Wasfür Symbole sind legal?
1.
3.
2.
15
18
19
20
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)
21
23
Diskussion
§ Warum derAufwand?
§ r ⟸ {A}
§ Kann jede Wiederholung durch Rekursion ausgedrückt
werden?
§ Kann jede Rekursion durch Wiederholung(en)ausgedrückt
werden?
24
26
27
§ Direkte Rekursion
§ r ⟸ A|Ar
§ Indirekte Rekursion
§ Folge vonRegeln N1 …Nk sodass N2 aufderRHSvonN1,N3 aufder
RHSvonR2,…undN1 aufderRHSvonNk erscheint
§ name1 ⟸ Aname2
§ name2 ⟸ Bname1 |C
28
Nochmal integer
29
Nochmal integer
§ BNFenthielt erst nur Rekursion undAuswahl
§ OptionundWiederholung vonNicklausWirthhinzugefügt
§ Daher “E”– extended
30
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)
32
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
digit
bezeichner
⟸ lowercaseletter |uppercaseletter
⟸ 0|1|2|3|4|5|6|7|8|9
⟸ letter {letter |digit }
34
Konstruktion derBeschreibung
1. VerstehenderAufgabe
2. Konstruktion einer Lösung
3. Prüfen ob Aufgabe gelöst ist
4. Fertig
35
2.0Einfache JavaProgramme
§ Sie sollten Uebung 0gemacht haben
§ Odersicher seindass diese keine Schwierigkeiten macht
§ AbUebung 1müssen Sie in“mystudies”registriert sein
§ Heute hochgeladen
§ Stellt sicher dass Sie Programmfragmente erhalten können und
Lösungen abgeben können
§ Keine Gruppentreffen heute (wohl aber nächste Woche)
36
37
38
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 …
40
41
§ class :JavaProgramm (nur 1class/Datei fürs erste)
§ NamedesProgramm gleich Namen derDatei
43
§ main:JavaMethode (JavaCodedenwir ausführen können)
§ Methode enthält Aufreihung (“sequence”)vonAnweisungen
(“statements”)
45
§ println:JavaMethode (Funktion)
§ Gibt Stringaus (“druckt”)
§ String:Textzwischen “(Anführungszeichen,“quotationmark”,
46
“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
47
49
Java
§ Nicht alle Rückmeldungen desUebersetzers (“compilers”)
sind soklar
50
52
Wir machen malweiter ….
53
54
§ Leicht zu übersehen:dieletzte } fehlt
55
56
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
57
§ 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
58
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!
59
Namen undBezeichner
§ 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 (inJava)unterschiedlich
60
§ Bezeichner:Namefür ein Programmelement
§ Mussmit einem Buchstaben (grossoder klein)anfangen
§ oder mit _(Unterstrich,“underscore”)oder mit “$”(Dollarzeichen)
§ danach Ziffern oder obige Zeichen
§ Konvention:Methodenname Kleinbuchstaben
61
Reservierte Symbole
§ keyword:Ein Bezeichner (“identifier”)derreserviert ist (weil er
für dieSprache eine besondere Bedeutung hat)
abstract
boolean
break
byte
default
do
double
else
if
implements
import
instanceof
private
protected
public
return
this
throw
throws
transient
case
catch
extends
final
int
interface
short
static
try
void
char
class
const
continue
finally
float
for
goto
long
native
new
package
strictfp
volatile
super
while
switch
synchronized
62
Kommentare
Kommentare (“comments”)sind Notizen im Programmtext,die
einem Leser beim Verstehen desProgrammes helfen (sollen)
§ Leser:kann auch der Authorsein
§ Kommentare werden nicht ausgeführt,haben keinen Einfluss auf
Programm
§ 2Varianten
§ // Text bis zum Ende der Zeile
§ /* Text bis zum
naechsten
*/
63
Wo sollten Kommentare stehen
§ Anfang desProgramms
§ Zweck
§ Algorithmus
§ Author
§ Anfang jeder Methode
§ Darüber später mehr
§ Für Codedernicht sofort verstandlich ist
§ Kommentare wichtig für grosse Projekte,Programme mit
mehreren Authoren,Programme diesich oftändern
64
Beispiel
/*
* Author:
Ein Student; Herbst 2016, Uebung 1
* Entwurf uebernommen von einer Assistentin
*/
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
} // end main
}
// end HelloWorld
65
Strings
§ String:eine Folge vonZeichen (“characters”)eingeschlossen
in“und“
§ “hello”
§ “Hello”
§ “3+2”
§ Einschränkungen:
§ Nur eine Zeile lang
“Das ist
kein Java String”
§ Darf nicht “enthalten (“So etwas “geht” nicht”)
66
Sonderzeichen
§ Undwasmachen wir wenn wir ein “ausgeben wollen?
§ Esgibt sogenannte Ersatzdarstellungen (“escapesequences”)
mit denen ein Sonderzeichen ausgedrückt werden kann
§ Fangen alle mit \ (Rückwärtsschrägstrich) (“backslash”)an
\t
Tabcharacter
\n
Neue Zeile (newlinecharacter)
\"
Quotationmark (doublequote)character
\\
Backslashcharacter
67
Beispiele
§ Beispiel:
System.out.println(“\\Hallo\nWie\tgeht es \”Ihnen\”?\\\\");
§ Output:
\Hallo
Wie
geht es ”Ihnen"?\\
69
Fragen
§ Wasdrucken 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");
§ Welchesprintln Statementdruckt dieser String?
/ \ // \\ /// \\\
70
Antwort
§ Outputofeachprintln statement:
a
\\
'
"""
C:
euer Spor
b
c
Wagen
71
Antwort
§ println statementtoproducethelineofoutput:
System.out.println("/ \\ // \\\\ /// \\\\\\");
72
Herunterladen