• Keine Ergebnisse gefunden

Einführung in die Programmierung. 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

N/A
N/A
Protected

Academic year: 2022

Aktie "Einführung in die Programmierung. 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich"

Copied!
118
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

252-0027

Einführung in die Programmierung

2.0 Einfache Java Programme

Thomas R. Gross

Department Informatik

ETH Zürich

(2)

Übersicht

§ 2.0 Einfache Java Programme

§ 2.1 Methoden

§ Struktur

§ 2.2 Typen und Variable

§ 2.2.1 Einführung

§ 2.2.2 Basistypen: Einfache (eingebaute) Typen

§ 2.2.3 Deklaration von Variablen

(3)

2.0 Einfache Java Programme

§ Übersicht

§ Struktur

§ Namen

§ Output

3

(4)

2.0 Einfache Java Programme

§ Sie sollten Übung 0 bis Mittwoch (29. 9.) 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

§ «Nachzügler» müssen eMail schicken (siehe Web Seite)

(5)

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

§ (Java erlaubt noch mehr) (Manchmal gibt es noch mehr Einschränkungen)

6

(6)

Beispiel: Bezeichner («identifier»)

(7)

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 bezeichnerletter { letter | digit }

9

(8)

Java Programme

§ Erstellen

§ Ausführen

(9)

Java Programme

§ Ganzes Programm

§ Braucht: Compiler

§ Für jede Datei …

§ Erstellen

§ Übersetzen (Compilieren)

§ Ausführen

§ Modifizieren

11

§ Einzelne Anweisungen

§ Braucht: Shell

§ Für jede Anweisung …

§ Lesen (Read)

§ Evaluieren (Ausführen)

§ Ausgeben (Print)

§ REPL

(10)

Infrastruktur – Java Programme

(11)

Java Programme

§ Ganzes Programm

§ Braucht: Compiler

§ Für jede Datei …

§ Erstellen

§ Übersetzen (Compilieren)

§ Ausführen

§ Modifizieren

§ Eclipse IDE enthält alle Komponenten

§ «Industrial strength» integrierte Entwicklungsumgebung

14

(12)
(13)

Java und Eclipse

§ Viele Aspekte

§ Zuerst: Fokus auf das wichtigste

§ Sie kennen Java/Eclipse schon: super

§ Aber denken Sie an die, die noch nicht so weit sind

§ Schrittweise erklären wir mehr Konzepte

§ Was uns (jetzt) nicht interessiert: abdecken

17

(14)
(15)

19

(16)

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 …

(17)

21

(18)
(19)

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

§ Name des Programms gleich Namen der Datei (!!)

24

(20)

Java Programm

javaprogram public class bezeichner { method

}

Hier fehlt noch etwas!

(21)

Java Programm

javaprogram public class bezeichner { methoddefinition

}

27

(22)
(23)

Java Programm

javaprogram public class bezeichner { methoddefinition

} methoddefinition

public static void main ( String [] args ) { statementsequence

}

30

(24)

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

(25)

Aufreihung von Anweisungen: statementsequence

§ Viele mögliche Anweisungen («Statements»)

§ Zuweisungen

§ Schleifen

§ Input/Output

§ Methoden/Funktionen–Aufruf

§ Liste nicht vollständig

32

(26)

Aufreihung von Anweisungen: statementsequence

§ Viele mögliche Anweisungen (Statements)

§ Wichtig für Java (und viele anderen Programmiersprachen):

§ Methodenaufruf global bekannter Methoden

§ Format:

MethodenName ( ) ;

(27)

Aufreihung von Anweisungen: statementsequence

§ Viele mögliche Anweisungen (Statements)

§ Wichtig für Java (und viele anderen Programmiersprachen):

§ Methodenaufruf für ein Objekt (Beispiel folgt)

§ Format:

Objekt . MethodenName ( ) ;

34

(28)

Aufreihung von Anweisungen: statementsequence

§ Viele mögliche Anweisungen (Statements)

§ Wichtig für Java (und viele anderen Programmiersprachen):

§ Methodenaufruf

§ Format:

Objekt . MethodenName ( ) ;

Zuerst einmal nur ( )

– später mehr.

(29)

Mit dem Objekt System.out können wir mit der println() Methode Text ausgeben

System.out.println( );

Mehr über Text in ein paar Minuten -- es gibt viele Methoden für Textbearbeitung

jshell> "Hello".toUpperCase();

37

Objekt . MethodenName ( ) ;

"Hello" . toUpperCase();

Beispiel

(30)
(31)

§ Viele (Textbearbeitungs)Methoden lassen das Objekt mit dem die Methode arbeitet unverändert

39

(32)

§ println: Java Methode (Funktion)

(33)

42

§ println: Java Methode (Funktion)

§ Gibt String aus («druckt»)

§ String: Text zwischen " (Anführungszeichen, «quotation mark»,

«double quote») und " (beide " müssen oben sein)

(34)

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

schreiben

(35)

46

(36)
(37)

Java

§ Nicht alle Rückmeldungen des Übersetzers («compilers») sind so klar

48

(38)
(39)

50

(40)

Wir machen mal weiter ….

(41)

52

(42)

§ Leicht zu übersehen: die letzte } fehlt

(43)

54

(44)

Zusammenfassung

public class name {

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

statement;

...

statement;

}

class: ein Programm mit Namen name

statement: Anweisung die method: Gruppe von

Anweisungen mit

Namen main

(45)

§ 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

56

(46)

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

(47)

Jede Methode braucht einen Namen

public static void main(String[] args) {…}

§ Konvention: fängt mit Kleinbuchstaben an

§ Konvention: Grossbuchstaben zur verbesserten Lesbarkeit

§ Beispiel: toUpperCase

§ Sonstige 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

§ Weitere Konventionen später

59

(48)

Reservierte Symbole

§ keyword: Ein Bezeichner («identifier») der reserviert ist (weil er für die Sprache eine besondere Bedeutung hat)

abstract default if private this boolean do implements protected throw break double import public throws byte else instanceof return transient case extends int short try

catch final interface static var char finally long strictfp void

(49)

Reservierte Symbole

62

§ Reserviert für besondere Werte

false null true

(50)

Kommentare

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

§ Leser: kann auch der Autor sein

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

§ 2 Varianten

§ // Text bis zum Ende der Zeile

§ /* Text bis

§

(51)

Ein triviales Programm …

/*

* Einfaches Programm aus vielen Texten

* Author: Unbekannt

*/

public class HelloWorld { // nur eine Methode!

// mit einer Anweisung!!

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

} // Ende von main }

65

(52)

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"

(53)

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

\\ Backslash character

71

(54)

Beispiele

§ Beispiel:

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

§ Output:

(55)

Beispiele

§ Beispiel:

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

§ Output:

\Hallo

Wie geht es "Ihnen"?\\

74

(56)

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?

(57)

Antwort

§ Output jedes println Statements:

a b c

\\

'

"""

C:

euer Spor Wagen

76

(58)

Antwort

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

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

(59)

252-0027

Einführung in die Programmierung 2.1 Methoden

Thomas R. Gross

Department Informatik ETH Zürich

79

(60)

Übersicht

§ 2.0 Einfache Java Programme

§ 2.1 Methoden

§ Struktur

§ 2.2 Typen und Variable

§ 2.2.1 Einführung

§ 2.2.2 Basistypen: Einfache (eingebaute) Typen

§ 2.2.3 Deklaration von Variablen

(61)

Übersicht

public class name {

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

statement;

...

statement;

} }

81

class: ein Programm mit Namen name

statement: Anweisung die ausgeführt werden soll

method: Gruppe von

Anweisungen mit

Namen main

(62)

Übersicht

public class name {

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

statement;

...

statement;

}

class: ein Programm mit Namen name

Folge von Anweisungen: Rumpf method: Gruppe von

Anweisungen mit

Namen main

(63)

2.1 Methoden

§ Beispiel: main im Program HelloWorld

§ Eine Klasse kann mehrere Methoden enthalten.

83

(64)

Methoden

public class name {

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

statement; ...

}

public static void helper() { statement;

statement; ...

method: Gruppe von

Anweisungen mit Namen main

method: Gruppe von

(65)

Methoden

§ Methode: Sequenz von Anweisungen mit einem Namen (dem der Methode)

§ Methoden strukturieren die Anweisungen

§ Anstatt alle Anweisungen in einer Methode (main) unterzubringen

§ Methoden erlauben es, Wiederholungen zu vermeiden

§ Mehrfache Ausführung, aber nur einmal im Programm(text)

§ Eine (neue) Methode stellt eine neue Anweisung zur Verfügung

86

(66)

static methods

§ static methods: Methode mit weiteren Eigenschaften

§ main ist eine static method (Keyword static vor Name)

§ main wird automatisch aufgerufen

§ Wir erklären gleich wie andere Methoden aufgerufen werden

(67)

(Zu) Einfaches Beispiel

public class PrintExample1 {

public static void main(String[] args) { System.out.println("\n---\n");

System.out.println("Warnung: sichern Sie die Daten\n");

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

System.out.println("Lange Erklaerung");

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

System.out.println("Warnung: sichern Sie die Daten\n");

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

} // main

} 88

(68)

Output

---

Warnung: sichern Sie die Daten ---

Lange Erklaerung ---

Warnung: sichern Sie die Daten ---

(69)

Wie entstehen Methoden?

§ Entwickeln des Algorithmus

§ Lösung des Problems

§ Aufteilung in Teil-Probleme

§ Festhalten des Algorithmus (auf- schreiben, codieren)

§ Ausführen (aufrufen, «call»,

«invoke») der Methode(n)

90

class

method main

n

statement

n

statement

n

statement

n

statement

n

statement

n

statement

n

statement

n

statement

n

statement

n

statement

(70)

Wie entstehen Methoden?

§ Entwickeln des Algorithmus

§ Lösung des Problems

§ Aufteilung in Teil-Probleme

§ Festhalten des Algorithmus (auf- schreiben, codieren)

§ Ausführen (aufrufen, «call»,

«invoke») der Methode(n)

class

method main

n

statement

n

statement

n

statement method one

n

statement

n

statement method two

n

statement

statement

(71)

(Zu) Einfaches Beispiel

public class PrintExample2 { // main fehlt noch

public static void printWarning() {

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

System.out.println("Warnung: sichern Sie die Daten\n");

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

} }

92

(72)

§ Entwickeln des Algorithmus

§ Lösung des Problems

§ Aufteilung in Teil-Probleme

§ Festhalten des Algorithmus (auf- schreiben, codieren)

§ Ausführen (aufrufen, «call»,

«invoke») der Methode(n)

class

method main

n

one

n

statement

n

two

method one

n

statement

n

statement method two

n

statement statement

Wie entstehen Methoden?

(73)

Methoden Definition (1. Approximation)

§ Zuerst definieren wir nur einfache Methoden

§ public static void name () {

§ statement(s); // Rumpf

§ }

§ Die Methode name kann überall aufgerufen werden ( public

static ) und gibt keinen Wert ( void ) zurück

§ Wir können uns vorstellen dass an der Stelle des Aufrufs der Rumpf (Body) der Methode ausgeführt (eingesetzt) wird.

94

(74)

Definition einer (static) Methode

methoddefinition

public static void main ( String [] args ) { statementsequence

} |

public static void name ( ) {

statementsequence

(75)

Aufruf einer Methode

§ Es gibt zwei Wege eine Methode aufzurufen

§ Mit explizitem Objekt: Objekt.methodName();

§ Beispiel: System.out.println("Text"); "Hello".toUpperCase();

§ Ohne Objekt

§ Geht nur für Methoden mit besonderen Eigenschaften

§ besondere Eigenschaften : static Keyword

§ static methods (Methoden mit Keyword static) werden ohne Objekt aufgerufen

§ Der Methodenname genügt

§ Beispiel:

printWarning();

96

(76)

(Zu) Einfaches Beispiel

public class PrintExample2 {

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

System.out.println("Lange Erklaerung");

printWarning();

} // main

public static void printWarning() {

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

System.out.println("Warnung: sichern Sie die Daten\n");

(77)

Aufruf einer (static) Methode

§ Syntax:

name();

§ Mehrfaches Aufrufen ist zulässig

methodinvocationbezeichner ( ) ;

§ Beispiel:

printWarning();

printWarning();

98

(78)

Aufruf einer Methode (mit oder ohne Objekt)

§ Wenn die Anweisung name() (für die Methode name) ...; // irgendeine Anweisung

name(); // z.B. in main

stmtN; // naechste Anweisung

ausgeführt wird, dann wird die Methode name aufgerufen («invoked», «called»)

§ Damit beginnt die Ausführung der Methode name.

§ Es gibt auch andere Wege, eine Ausführung zu starten, aber diese

interessieren uns (noch) nicht.

(79)

Ausführung einer Methode

§ Methode name wird aufgerufen (d.h. name() )

§ 1. Anweisung von name ausgeführt

§ Gibt es weitere Anweisungen?

§ Nein: Ende der Ausführung von name

§ Ja:

§ Nächste Anweisung ausgeführt, weiter wie oben

§ Wir bezeichnen die Abfolge der Ausführung von Anweisungen als Kontrolfluss («control flow»)

§ geradliniger Kontrollfluss: die ausgeführten Anweisungen folgen im Programm aufeinander

§ In Java: Anweisungsreihenfolge ist explizit

100

(80)

§ Wenn eine Methode aufgerufen wird, dann

§ «springt» die Ausführung zur Methode und führt die Anweisungen der Methode aus und danach

§ «springt» die Ausführung wieder zu dem Ort zurück von dem der Aufruf erfolgte

§ Und es geht weiter mit der nächsten Anweisung

§ Anordnung der Methoden im Programm(text) ohne Bedeutung

Kontrollfluss bei Methodenaufruf

(81)

Methoden die Methoden aufrufen

public class MethodsExample {

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

message2();

System.out.println("Ende von \"main\" ");

} // main

public static void message1() {

System.out.println("Nachricht 1: Fertig");

} // message1

public static void message2() {

System.out.println("Die 2. Nachricht:");

message1();

System.out.println("Ende von Nachricht 2");

} // message2 }

104

(82)

Methoden die Methoden aufrufen

public class MethodsExample {

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

message2();

System.out.println("Ende von \"main\" ");

} // main

public static void message1() {

System.out.println("Nachricht 1: Fertig");

} // message1

public static void message2() {

System.out.println("Die 2. Nachricht:");

message1();

System.out.println("Ende von Nachricht 2");

Hier fangen wir an

(83)

Methoden die Methoden aufrufen

public class MethodsExample {

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

message2();

System.out.println("Ende von \"main\" ");

} // main

public static void message1() {

System.out.println("Nachricht 1: Fertig");

} // message1

public static void message2() {

System.out.println("Die 2. Nachricht:");

message1();

System.out.println("Ende von Nachricht 2");

} // message2 }

106

1. Anweisung

(84)

Methoden die Methoden aufrufen

public class MethodsExample {

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

message2();

System.out.println("Ende von \"main\" ");

} // main

public static void message1() {

System.out.println("Nachricht 1: Fertig");

} // message1

public static void message2() {

System.out.println("Die 2. Nachricht:");

message1();

System.out.println("Ende von Nachricht 2");

Hier geht es weiter

(85)

Methoden die Methoden aufrufen

public class MethodsExample {

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

message2();

System.out.println("Ende von \"main\" ");

} // main

public static void message1() {

System.out.println("Nachricht 1: Fertig");

} // message1

public static void message2() {

System.out.println("Die 2. Nachricht:");

message1();

System.out.println("Ende von Nachricht 2");

} // message2 }

108

1. und letzte Anweisung

(86)

Methoden die Methoden aufrufen

public class MethodsExample {

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

message2();

System.out.println("Ende von \"main\" ");

} // main

public static void message1() {

System.out.println("Nachricht 1: Fertig");

} // message1

public static void message2() {

System.out.println("Die 2. Nachricht:");

message1();

System.out.println("Ende von Nachricht 2");

Hier geht es weiter

(87)

Methoden die Methoden aufrufen

public class MethodsExample {

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

message2();

System.out.println("Ende von \"main\" ");

} // main

public static void message1() {

System.out.println("Nachricht 1: Fertig");

} // message1

public static void message2() {

System.out.println("Die 2. Nachricht:");

message1();

System.out.println("Ende von Nachricht 2");

} // message2 }

110

Hier geht es weiter

(88)

Methoden die Methoden aufrufen

public class MethodsExample {

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

message2();

System.out.println("Ende von \"main\" ");

} // main

public static void message1() {

System.out.println("Nachricht 1: Fertig");

} // message1

public static void message2() {

System.out.println("Die 2. Nachricht:");

message1();

System.out.println("Ende von Nachricht 2");

1. Anweisung

(89)

Methoden die Methoden aufrufen

public class MethodsExample {

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

message2();

System.out.println("Ende von \"main\" ");

} // main

public static void message1() {

System.out.println("Nachricht 1: Fertig");

} // message1

public static void message2() {

System.out.println("Die 2. Nachricht:");

message1();

System.out.println("Ende von Nachricht 2");

} // message2 }

112

2. Anweisung

(90)

Methoden die Methoden aufrufen

public class MethodsExample {

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

message2();

System.out.println("Ende von \"main\" ");

} // main

public static void message1() {

System.out.println("Nachricht 1: Fertig");

} // message1

public static void message2() {

System.out.println("Die 2. Nachricht:");

message1();

System.out.println("Ende von Nachricht 2");

Hier geht es weiter

(91)

Methoden die Methoden aufrufen

public class MethodsExample {

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

message2();

System.out.println("Ende von \"main\" ");

} // main

public static void message1() {

System.out.println("Nachricht 1: Fertig");

} // message1

public static void message2() {

System.out.println("Die 2. Nachricht:");

message1();

System.out.println("Ende von Nachricht 2");

} // message2 }

114

1. und letzte Anweisung

(92)

Methoden die Methoden aufrufen

public class MethodsExample {

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

message2();

System.out.println("Ende von \"main\" ");

} // main

public static void message1() {

System.out.println("Nachricht 1: Fertig");

} // message1

public static void message2() {

System.out.println("Die 2. Nachricht:");

message1();

System.out.println("Ende von Nachricht 2");

(93)

Methoden die Methoden aufrufen

public class MethodsExample {

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

message2();

System.out.println("Ende von \"main\" ");

} // main

public static void message1() {

System.out.println("Nachricht 1: Fertig");

} // message1

public static void message2() {

System.out.println("Die 2. Nachricht:");

message1();

System.out.println("Ende von Nachricht 2");

} // message2 }

116

Letzte Anweisung

(94)

Methoden die Methoden aufrufen

public class MethodsExample {

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

message2();

System.out.println("Ende von \"main\" ");

} // main

public static void message1() {

System.out.println("Nachricht 1: Fertig");

} // message1

public static void message2() {

System.out.println("Die 2. Nachricht:");

message1();

System.out.println("Ende von Nachricht 2");

Hier geht es weiter

(95)

Methoden die Methoden aufrufen

public class MethodsExample {

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

message2();

System.out.println("Ende von \"main\" ");

} // main

public static void message1() {

System.out.println("Nachricht 1: Fertig");

} // message1

public static void message2() {

System.out.println("Die 2. Nachricht:");

message1();

System.out.println("Ende von Nachricht 2");

} // message2 }

Letzte Anweisung

118

(96)

Methoden die Methoden aufrufen

public class MethodsExample {

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

message2();

System.out.println("Ende von \"main\" ");

} // main

public static void message1() {

System.out.println("Nachricht 1: Fertig");

} // message1

public static void message2() {

System.out.println("Die 2. Nachricht:");

message1();

System.out.println("Ende von Nachricht 2");

(97)

Output

§ Nachricht 1: Fertig

§ Die 2. Nachricht:

§ Nachricht 1: Fertig

§ Ende von Nachricht 2

§ Ende von "main"

120

(98)

public class MethodsExample {

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

message2();

System.out.println("Done with \"main\".");

}

public static void message1() {

System.out.println("Nachricht 1: Fertig");

}

public static void message2() {

System.out.println(" Die 2. Nachricht:");

message1();

System.out.println("Ende von Nachricht 2");

}

Kontrollfluss

(99)

Einfaches Beispiel

(Wir verwenden jetzt println weil es einfach ist. Spätere Java Programme benutzen eine andere Schnittstelle für Benutzer.)

122

(100)

Beispiel mit static methods

Schreiben Sie ein Programm um diese Figuren zu drucken

______

/ \ / \

\ /

\______/

\ /

\______/

+---+

______

/ \ / \

| STOP |

\ /

\______/

______

(101)

Entwicklungsschritte

Version 1: (ohne Ausnutzen der Struktur)

n

Erstellen Sie ein Programm mit leerer main Methode.

n

Kopieren Sie den erwünschten Output in main und schreiben für jede Zeile eine entsprechende

System.out.println Anweisung.

n

Führen Sie die Methode aus um den Output mit der gewünschten Figur zu vergleichen

______

/ \ / \

\ /

\______/

\ /

\______/

+---+

______

/ \ / \

| STOP |

\ /

\______/

______

/ \ / \

+---+ 124

(102)

Program Version 1

public class Figures1 {

public static void main(String[] args){

System.out.println(" ______");

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

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

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

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

System.out.println();

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

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

System.out.println("+---+");

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

System.out.println("| STOP |");

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

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

System.out.println();

System.out.println(" ______");

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

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

(103)

Entwicklungsschritte

Version 2: (mit Ausnutzen der Struktur, mit Redundanz)

n

Identifizieren Sie (eventuell vorhandene) Strukture(n).

n

Unterteilen Sie die main Methode basierend auf Ihrer Strukturierung.

n

Führen Sie die Methode aus um den Output mit der gewünschten Figur zu vergleichen

______

/ \ / \

\ /

\______/

\ /

\______/

+---+

______

/ \ / \

| STOP |

\ /

\______/

______

/ \ / \ +---+

126

(104)

Struktur des Output

Strukturen in dieser Figur

n

oben: Sechseck (Hexagon) (oder Ball …)

n

darunter: «Wanne» (oder Suppentasse …)

n

drittens «STOP Schild» Figur

n

viertens «Trapez» (oder Hut Figur …) Struktur à Methoden :

n

hexagon

______

/ \ / \

\ /

\______/

\ /

\______/

+---+

______

/ \ / \

| STOP |

\ /

\______/

(105)

Program Version 2

public class Figures2 {

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

wanne();

stopSign();

hut();

} //main

...

128

(106)

Program Version 2, Fortsetzung

...public static void hexagon() {

System.out.println(" ______");

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

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

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

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

System.out.println();

}

public static void wanne() {

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

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

(107)

Program Version 2, Fortsetzung

...

public static void stopSign() {

System.out.println(" ______");

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

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

System.out.println("| STOP |");

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

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

System.out.println();

}

public static void hut() {

System.out.println(" ______");

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

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

System.out.println("+---+");

}

} //Figures2 130

(108)

______

/ \ / \

\ /

\______/

\ /

\______/

+---+

______

/ \ / \

| STOP |

\ /

\______/

Entwicklungsschritte

Version 3 (mit Ausnutzen der Struktur, ohne Redundanz)

n

Identifizieren Sie (eventuell vorhandene) Strukture(n) und Redundanz

n

Erstellen Sie Methoden um (soweit möglich) Redundanz zu vermeiden

n

Kommentieren Sie den Code

(109)

132

______

/ \ / \

\ /

\______/

\ /

\______/

+---+

______

/ \ / \

| STOP |

\ /

\______/

______

/ \ / \ +---+

Redundanz im Output

n

Hexagon oberer Teil: im Stop Schild und Hut wiederverwendet

n

Hexagon unterer Teil: in Wanne und Stop Schild

n

Trennlinie: in Wanne und Hut

n

Diese Redundanz kann durch diese Methoden ausgenutzt (d.h. eliminiert) werden:

n

hexagonTop

n

hexagonBottom

n

line

(110)

Program Version 3

// Ihr Name, 252-0027, Herbst 2020

// Prints several figures, with methods for structure and redundancy.

public class Figures3 {

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

wanne();

stopSign();

hut();

}

// Draws the top half of an an hexagon.

public static void hexagonTop() { System.out.println(" ______");

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

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

(111)

Program Version 3, Fortsetzung

...

// Draws the bottom half of an hexagon.

public static void hexagonBottom() { System.out.println("\\ /");

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

}

// Draws a complete hexagon.

public static void hexagon() { hexagonTop();

hexagonBottom();

System.out.println();

} ...

135

(112)

Program Version 3, Fortsetzung

...

// Draws a tub («Wanne») figure.

public static void wanne() { hexagonBottom();

line();

System.out.println();

}

// Draws a stop sign figure.

public static void stopSign() { hexagonTop();

System.out.println("| STOP |");

hexagonBottom();

(113)

Program Version 3, Fortsetzung

...

// Draws a figure that looks sort of like a hat («Hut»).

public static void hut() { hexagonTop();

line();

}

// Draws a line of dashes.

public static void line() {

System.out.println("+---+");

}

} //Figures3

137

(114)

Methoden (Übung)

Schreiben Sie ein Programm das diese Rackete ausgibt:

/\

/ \

/ \

/ \

+---+

| |

| |

| |

+---+

| |

| ISS |

| |

+---+

| |

| |

| |

+---+

(115)

2.2 Typen und Variable

140

(116)

Übersicht

§ 2.0 Einfache Java Programme

§ 2.1 Methoden

§ Struktur

§ 2.2 Typen und Variable

§ 2.2.1 Einführung

§ 2.2.2 Basistypen: Einfache (eingebaute) Typen

§ 2.2.3 Deklaration von Variablen

(117)

2.2.1 Einführung

142

(118)

Typen

§ Typen («types») beschreiben Eigenschaften von Daten

§ Ein Typ beschreibt eine Menge (oder Kategorie) von Daten Werten.

§ Bestimmt (beschränkt) die Operationen, die mit diesen Daten gemacht werden können

§ Viele Programmiersprachen erfordern die Angabe (Spezifikation) von Typen

§ Typen Beispiele: ganze Zahlen, reelle Zahlen, Strings

Referenzen

ÄHNLICHE DOKUMENTE

*/ begrenzt /* Das ist ein längerer - können über mehrere Zeilen gehen Kommentar, der über - dürfen nicht geschachtelt werden mehrere Zeilen geht */.. -

(Wir verwenden jetzt println weil es einfach ist. Spätere Java Programme benutzen eine andere Schnittstelle für Benutzer.).. Program Version

§ 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)

§ 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

Gibt an dass eine Methode einen Parameter braucht um ausgeführt werden zu können.. public static void methodName ( type name )

§ Eine Variable die in einer for Schleife deklariert wurde kann nur im Rumpf der Schleife verwendet werden. § Eine Variable die in einer Methode deklariert wurde existiert nur in

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