• Keine Ergebnisse gefunden

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

N/A
N/A
Protected

Academic year: 2022

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

Copied!
84
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

(2)

2.2 Variablen

(3)

Variable

(4)

Beispiel Lohnabrechnung

Was ist an diesem Programm schlecht?

public class Lohn{

public static void main(String[] args) {

// Calculate net wages based on weekly hours worked // deduct AHV 4.2%, IV 0.7%, ALV 1.0%, 30 CHF/Stunde

System.out.println("Hours worked:");

System.out.println(38 + 40 + 30 + 10);

System.out.println("AHV:");

System.out.println(30*(38 + 40 + 30 + 10) * .042);

System.out.println("IV:");

System.out.println(30*(38 + 40 + 30 + 10) * .007);

...

(5)

Beispiel Lohnabrechnung

...

System.out.println("ALV:");

System.out.println(30*(38 + 40 + 30 + 10) * .01);

System.out.println("Lohn:");

System.out.println(30*(38 + 40 + 30 + 10) – ((30*(38 + 40 + 30 + 10) * .042 +

30*(38 + 40 + 30 + 10) * .007 + 30*(38 + 40 + 30 + 10) * .01) );

} //main } // Lohn

(6)

public class Lohn{

public static void main(String[] args) {

// Calculate net wages based on weekly hours worke; deduct AHV 4.2%, IV 0.7%, ALV 1.0%

System.out.println("Hours worked:");

System.out.println(38 + 40 + 30 + 10);

System.out.println("AHV:");

System.out.println(30*(38 + 40 + 30 + 10) * .042);

System.out.println("IV:");

System.out.println(30*(38 + 40 + 30 + 10) * .007);

System.out.println("ALV:");

System.out.println(30*(38 + 40 + 30 + 10) * .01);

System.out.println("Lohn:");

System.out.println(30*(38 + 40 + 30 + 10) – ((30*(38 + 40 + 30 + 10) * .042 +

(30*(38 + 40 + 30 + 10) * .007 + (30*(38 + 40 + 30 + 10) * .01) );

}

(7)

§ Der Ausdruck (Anzahl Stunden) (38 + 40 + 30 + 10) wird wiederholt

§ Abzüge werden mehrfach berechnet

§ So viele println Anweisungen

(8)

Variable

§ Variable (“variable”): Name der es erlaubt, auf einen

gespeicherten Wert zuzugreifen

(9)

Variable

§ Variable (“variable”): Name der es erlaubt, auf einen gespeicherten Wert zuzugreifen

§ Wert muss (irgendwo) vom Programm gespeichert werden

§ In Speicherzelle(n) im Computer

§ Ähnlich Schnellwahl (Telefon)

(10)

Variable

§ Variable (“variable”): Name der es erlaubt, auf einen gespeicherten Wert zuzugreifen

§ Wert muss (irgendwo) vom Programm gespeichert werden

§ In Speicherzelle(n) im Computer

§ Ähnlich Schnellwahl (Telefon)

(11)

Variable

§ Wie man diese Wahlknöpfe benutzt:

§ Konfiguration

§ Einsatz

§ Ähnlicher Ablauf für Variablen in einem Programm

§ Deklaration - gibt Namen und Typ an

§ Initialisierung - speichert einen Wert in der Variablen

§ Gebrauch - in einem Ausdruck oder println Anweisung

(12)

Deklaration

Deklaration einer Variablen: Reserviert Speicher für Werte

§ Variable müssen deklariert sein bevor sie verwendet werden können

§ Fürs erste: in einer Methode

§ Syntax:

type name;

name ist ein Bezeichner (“identifier”) type ist der Typ

§ int x;

§ double meineNote;

x

(13)

Deklaration

Variable müssen deklariert sein bevor sie verwendet werden können.

type name ;

EBNF Description variabledeclaration

typeidentifierbezeichner variableidentifierbezeichner

variabledeclarationtypeidentifier variableidentifier { , variableidentifier } ;

(14)

Zuweisungen (“Assignment”)

§ Zuweisung: Eine Anweisung die einen Wert in einer Variable speichert.

§ Der Wert kann ein Ausdruck sein, die Zuweisung speichert das Ergebnis

§ Fürs erste: Zuweisungen in einer Methode

§ Syntax:

name = expression;

§ int x;

x = 3;

§ double meineNote;

x

meineNote

3

5.25

(15)
(16)

Assignment

§ Java verwendet = um eine Zuweisung auszudrücken

§ "Assignment operator"

name = expression;

EBNF Description assignment

variableidentifierbezeichner

assignment ⟸ variableidentifier = expression ;

Die EBNF Beschreibung für expression kommt später.

(17)
(18)

Gebrauch von Variablen

§ Nachdem eine Variable einen Wert erhalten hat, kann die Variable in Ausdrücken verwendet werden:

int x;

x = 3;

System.out.println("x is " + x); // x is 3 System.out.println(5 * x - 1); // 5 * 3 – 1

§ Wiederholte Zuweisungen sind erlaubt:

int x;

x = 3;

System.out.println(x + " here"); // 3 here x = 4 + 7;

System.out.println("now x is " + x); // now x is 11

x 3

x 11

(19)

Deklaration/Initialisierung

§ Deklaration und Initialisierung können in einer Anweisung gemacht werden.

§ Syntax:

type name = expression;

§ double meineNote = 4.95;

x 14

meineNote 4.95

(20)

Deklaration mit Initialisierung

EBNF Description variabledeclaration

typeidentifierbezeichner variableidentifierbezeichner

variablelistvariableidentifier { , variableidentifier } variableinitializationvariableidentifier = expr

variablespecificationvariableinitialization | variablelist

variabledeclarationtypeidentifier variablespecification ;

(21)

Zuweisung (Programm) und Algebra (Mathematik)

§ Zuweisung verwendet = , aber eine Zuweisung ist keine algebraische Gleichung!

= bedeutet: ”speichere den Wert der RHS in der Variable der LHS "

Die rechte Seite des Ausdrucks wird zuerst ausgewertet,

dannwird das Ergebnis in der Variable auf der linken Seite gespeichert

§ Was passiert hier?

int x = 3;

x = x + 2; // ???

x 3

x 5

(22)
(23)

Was passiert hier ?

Sehen Sie sich diese Anweisungen an. Welchen Wert hat x am Ende?

int x;

int y;

x = 1; // (S1) y = 2; // (S2) x = y; // (S3) y = 3; // (S4)

x hat den Wert ???

(24)

Zuweisungen und Typen

§ Eine Variable kann nur Werte ihres eigenen Typs speichern.

int x = 2.5; // ERROR: incompatible types

§ Ein int Wert kann in einer double Variable gespeichert werden

§ Wert in äquivalente reelle Zahl umgewandelt.

§ double meineNote = 4;

§ double avg = 11 / 2;

§ Warum hat avg den Wert 5.0 und nicht5.5 ?

meineNote 4.0

avg 5.0

(25)
(26)

Compiler Fehler Meldungen

§ Eine Variable kann erst nach einer Zuweisung verwendet werden.

§ int x;

System.out.println(x); // ERROR: x has no value

§ Keine Doppeltdeklarationen.

§ int x;

int x; // ERROR: x already exists

§ int x = 3;

int x = 5; // ERROR: x already exists

(27)

Drucken des Wertes einer Variablen

Operator + zum Drucken eines String und des Wertes einer Variable in einer Zeile.

double punkte = (95.1 + 71.9 + 82.6) / 3.0;

System.out.println("Im Schnitt " + punkte + " Punkte");

int students = 11 + 17 + 4 + 19 + 14;

System.out.println("There are " + students +

" students in the course.");

(28)

Drucken des Wertes einer Variablen

Operator + zum Drucken eines String und des Wertes einer Variable in einer Zeile.

double punkte = (95.1 + 71.9 + 82.6) / 3.0;

System.out.println("Im Schnitt " + punkte + " Punkte");

int students = 11 + 17 + 4 + 19 + 14;

System.out.println("There are " + students +

" students in the course.");

Output

:

Im Schnitt 83.2 Punkte

(29)

Beispiel Lohnabrechnung

Wir erinnern uns … wie können wir dieses Programm verbessern?

public class Lohn{

public static void main(String[] args) {

// Calculate net wages based on weekly hours worked // deduct AHV 4.2%, IV 0.7%, ALV 1.0%, 30 CHF/Stunde

System.out.println("Hours worked:");

System.out.println(38 + 40 + 30 + 10);

System.out.println("AHV:");

System.out.println(30*(38 + 40 + 30 + 10) * .042);

System.out.println("IV:");

System.out.println(30*(38 + 40 + 30 + 10) * .007);

...

(30)

public class Lohn{

public static void main(String[] args) {

// Calculate net wages based on weekly hours worke; deduct AHV 4.2%, IV 0.7%, ALV 1.0%

System.out.println("Hours worked:");

System.out.println(38 + 40 + 30 + 10);

System.out.println("AHV:");

System.out.println(30*(38 + 40 + 30 + 10) * .042);

System.out.println("IV:");

System.out.println(30*(38 + 40 + 30 + 10) * .007);

System.out.println("ALV:");

System.out.println(30*(38 + 40 + 30 + 10) * .01);

System.out.println("Lohn:");

System.out.println(30*(38 + 40 + 30 + 10) – ((30*(38 + 40 + 30 + 10) * .042 +

(30*(38 + 40 + 30 + 10) * .007 + (30*(38 + 40 + 30 + 10) * .01) );

}

(31)

Lohnabrechnung, Version 2

public class Lohn{

public static void main(String[] args) {

// Calculate net wages based on weekly hours worke; deduct AHV 4.2%, IV 0.7%, ALV 1.0%

int stunden = 38 + 40 + 30 + 10;

int lohnBrutto = 30 * stunden;

double ahvAbzug = lohnBrutto * .042;

double ivAbzug = lohnBrutto * .007;

double alvAbzug = lohnBrutto * .01;

double lohnNetto = lohnBrutto – (ahvAbzug + ivAbzug +alvAbzug);

System.out.println("Lohn: " + lohnNetto);

} }

(32)

Methoden (Übung)

Schreiben Sie ein Programm das diese Rackete ausgibt:

/\

/ \

/ \

/ \

+---+

| |

| |

| |

+---+

| |

| ISS |

| |

+---+

| |

| |

| |

+---+

/\

/ \

/ \

(33)

2.3 Schleifen ("Loops")

(34)

2.3.1 Einfache Schleifen: for loop

§ Schleifen erlauben wiederholte Ausführung einer (oder mehrerer) Anweisung(en).

§ Schleifen (“loops”) kommen in verschiedenen Varianten

§ Zuerst: for loop

(35)

for loops erlauben Wiederholungen

§ … aber sie sind hässlich und eigentlich redundant:

System.out.println(”Ich werde die Uebungsaufgaben machen");

System.out.println(”Ich werde die Uebungsaufgaben machen");

System.out.println(”Ich werde die Uebungsaufgaben machen");

System.out.println(”Ich werde die Uebungsaufgaben machen");

System.out.println(”Ich werde die Uebungsaufgaben machen");

§ Sie machen das Programm unübersichtlich

§ Javas for loop Anweisung führt Anweisungen wiederholt aus.

for (int i = 1; i <= 5; i = i + 1) { // repeat 5 times

(36)

for loop Syntax

for (initialization; test; update) { statement;

statement;

... statement;

}

§ Initialisierung ("Initialization") wird einmal ausgeführt.

§ Wiederhole diese Schritte:

§ Prüfe ob test wahr ("true") ergibt. Wenn nicht, stop.

§ Führe die Anweisung(en) ("statement"s) aus.

§ Führe die Aktualisierung ("update") aus.

body (Rumpf) header (Kopf)

(37)
(38)

Initialisierung

for (int i = 1; i <= 5; i = i + 1) {

System.out.println("Ich werde die Uebungsaufgaben machen");

}

§ Legt die Variable fest, die im Loop verwendet wird

§ Wird einmal am Anfang der Schleife ausgeführt

§ Diese Variable heisst Schleifenzähler (“loop counter”)

§ Kann jeden Namen haben, nicht nur i

§ Kann mit jedem Wert anfangen, nicht nur 1

(39)

Test

for (int i = 1; i <= 5; i = i + 1) {

System.out.println("Ich werde die Uebungsaufgaben machen");

}

§ Vergleicht die Zählervariable (loop counter) mit einem Grenzwert

§ Verwendet Vergleichsoperatoren (“comparison operators”):

< kleiner als (“less than”)

<= kleiner als oder gleich (“less than or equal to”)

> grösser als (“greater than”)

(40)

Aktualisierung

for (int i = 1; i <= 5; i = i + 1) {

System.out.println("Ich werde die Uebungsaufgaben machen");

}

§ Die Zählervariable muss sich ändern

§ Sonst findet die Schleife kein Ende

§ test ergibt immer true

§ Ein beliebiger Ausdruck zulässig

§ Compiler prüft nicht dass die Zählervariable verwendet wird

(41)

Wiederholungen für ein Interval [1..6]

System.out.println("1 hoch 2 = " + 1 * 1);

System.out.println("2 hoch 2 = " + 2 * 2);

System.out.println("3 hoch 2 = " + 3 * 3);

System.out.println("4 hoch 2 = " + 4 * 4);

System.out.println("5 hoch 2 = " + 5 * 5);

System.out.println("6 hoch 2 = " + 6 * 6);

§ Intuition: ”Ich will eine Zeile für jede Zahl von 1 bis 6 ausgeben”

§ Ein for loop erledigt genau diesen Job!

for (int i = 1; i <= 6; i = i+1) {

System.out.println(i + " hoch 2 = " + (i * i));

}

§ "Für jede ganze Zahl i von 1 bis 6, drucke..."

(42)

Die Schleife in Zeitlupe

for (int i = 1; i <= 4; i = i+1) {

System.out.println(i + " hoch 2 = " + (i * i));

}

System.out.println("Whoa!");

Output:

1 hoch 2 = 1 2 hoch 2 = 4 3 hoch 2 = 9 4 hoch 2 = 16 Whoa!

1 2 3

4

5 1

2

3 4

Initialisierung einmal ausführen

Anweisung(en) im Loop ausführen Ist test wahr?

Aktualisierung ausführen ja

nein

(43)

Mehrere Anweisungen im Rumpf

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

for (int i = 1; i <= 3; i = i+1) { System.out.println("\\ /");

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

}

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

§ Output:

+----+

\ /

/ \

\ /

/ \

\ /

/ \

(44)

Schleifenkontrolle

int highTemp = 5;

for (int i = -3; i <= highTemp / 2; i = i + 1) { System.out.println(i + " C = " + (i * 1.8 + 32)

+ " F");

}

Output:

-3 C = 26.6 F -2 C = 28.4 F -1 C = 30.2 F 0 C = 32.0 F 1 C = 33.8 F 2 C = 35.6 F

(45)

System.out.print

§ Druckt ohne eine Reihe mit “newLine” abzuschliessen

§ Erlaubt es eine Zeile sukzessive auszugeben int highTemp = 5;

for (int i = -3; i <= highTemp / 2; i = i+1) { System.out.print((i * 1.8 + 32) + " ");

}

Output:

26.6 28.4 30.2 32.0 33.8 35.6

§ Verwende " " um die Zahlen zu trennen

(46)

Hochzählen, herunterzählen

§ Die Aktualisierung (“update”) kann auch den Schleifenzähler herunterzuzählen

Aber der Vergleich in “test” muss dann > anstatt von < verwenden System.out.print("T-minus ");

for (int i = 10; i >= 1; i = i-1) { System.out.print(i + ", ");

} System.out.println("blastoff!");

System.out.println("The end.");

Output:

T-minus 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, blastoff!

The end.

(47)

2.3.2 Verschachtelte for Schleifen

(48)

for Schleife

for (initialization; test; update) { statement;

statement;

...

statement;

}

statement (Anweisung im Rumpf der Schleife) kann beliebige Java Anweisung sein

Auch wieder eine Schleife ….

body (Rumpf) header (Kopf)

(49)

Verschachtelte Schleifen

§ Verschachtelte Schleifen ("nested loop"): Schleife in einer Schleife

for (int i = 1; i <= 5; i = i+1) {

for (int j = 1; j <= 10; j = j+1) { System.out.print("*");

}

System.out.println(); // to end the line }

Output:

**********

**********

**********

**********

§ Der Rumpf der äusseren Schleife wird 5-mal

ausgeführt, der Rumpf der inneren

(50)

Verschachtelte Schleifen

Was gibt dieses Programmsegment aus?

for (int i = 1; i <= 5; i = i+1) {

for (int j = 1; j <= i; j = j+1) { System.out.print("*");

}

System.out.println();

}

§ Output:

*

**

***

****

(51)

Verschachtelte Schleifen

Was gibt dieses Programmsegment aus?

for (int i = 1; i <= 5; i = i+1) {

for (int j = 1; j <= i; j = j+1) { System.out.print(i);

}

System.out.println();

}

§ Output:

1

22

333

4444

(52)

Mögliche Fehler

§ Die Schleife terminiert nicht

§ Läuft und läuft und läuft

§ Endlosschleife ("infinite loop")

(53)

Mögliche Fehler

§ Die Schleife terminiert nicht

§ Läuft und läuft und läuft

§ Endlosschleife ("infinite loop")

§ Beispiele:

for (int i = 1; i <= 5; i = i+1) {

for (int j = 1; i <= 10; j = j+1) { System.out.print("*");

} System.out.println();

}

(54)

Mögliche Fehler

§ Die Schleife terminiert nicht

§ Läuft und läuft und läuft

§ Endlosschleife ("infinite loop")

§ Beispiele:

for (int i = 1; i <= 5; i = i+1) {

for (int j = 1; j <= 10; i = i+1) { System.out.print("*");

} System.out.println();

}

(55)

Was tun?

§ Eclipse kann solche Programme stoppen.

§ Klicken auf "Terminate"

(56)

Mehr Beispiele

§ Welche verschachtelten for Schleifen erzeugen diesen Output?

....1 ...2 ..3 .4 5

(57)

Mehr Beispiele

§ Welche verschachtelten for Schleifen erzeugen diesen Output?

....1 ...2 ..3 .4 5

§ Wir müssen eine Ausgabezeile konstruieren:

§ mit einer äusseren Schleife für jede Zeile

äussere Schleife (5-mal da es 5 Zeilen gibt) innere Schleife (für jede Zeile)

(58)

Äussere und innere Schleife

§ Legen Sie erst die äussere Schleife fest, zählt von 1 bis zur Anzahl der Zeilen

for (int line = 1; line <= 5; line = line+1) { ...

}

§ Analysieren Sie jede Zeile. Entdecken Sie das Muster:

ein paar Punkte (0 Punkte in der letzten Zeile) gefolgt von Zahl

....1 ...2 ..3 .4

5

Beobachtung: Die Anzahl der

Punkte hängt von der

Zeilennummer ab.

(59)

Zahlenfolgen à Schleifen

for (int count = 1; count <= 5; count = count+1) { System.out.print( ... );

}

Welche Anweisung im Rumpf würde diesen Output ergeben:

4 7 10 13 16

for (int count = 1; count <= 5; count = count+1) { System.out.print(3 * count + 1 + " ");

}

(60)

Zahlenfolgen à Schleifen mit Tabellen

§ Welche Anweisung im Rumpf würde diesen Output ergeben:

2 7 12 17 22

§ Zum Finden des Musters erstellen Sie eine Tabelle mit count und den Zahlen.

§ Wenn sich count um 1 erhöht, sollte die Zahl um 5 heraufgehen.

§ Aber count * 5 ist zu gross (um 3), also subtrahieren wir 3.

count Zahl in Folge 5 * count

1 2 5

2 7 10

3 12 15

4 17 20

5 * count - 3

2 7 12 17

count Zahl in Folge

1 2

2 7

3 12

4 17

(61)

Weiteres Tabellen Beispiel

§ Welche Anweisung im Rumpf würde diesen Output ergeben:

17 13 9 5 1

§ Konstruieren wir die Tabelle.

§ Wenn sich count um 1 erhöht, sollte die Zahl ...

§ Aber dieses Produkt ist zu ...

count Zahl in Folge

1 17

2 13

3 9

4 5

-4 * count -4 * count + 21

-4 17

-8 13

-12 9

-16 5

-4 * count -4

-8 -12 -16

(62)

Zurück zum Beispiel mit for Schleife

§ Konstruieren wir eine Tabelle

....1 ...2 ..3 .4 5

§ Um einen Buchstaben mehrfach zu drucken verwenden wir eine for Schleife.

for (int j = 1; j <= 4; j = j+1) {

System.out.print("."); // 4 Punkte

line # Punkte

1 4

2 3

3 2

4 1

5 0

-1 * line -1

-2 -3 -4 -5

-1 * line + 5

4 3 2 1 0

(63)

Lösung mit for Schleife

§ Antwort:

for (int line = 1; line <= 5; line = line+1) {

for (int j = 1; j <= (-1 * line + 5); j = j+1) { System.out.print(".");

}

System.out.println(line);

}

§ Output:

....1

...2

..3

.4

(64)

Verschachtelte for Schleifen

§ Was ist der Output dieser verschachtelten Schleifen?

for (int line = 1; line <= 5; line = line+1) {

for (int j = 1; j <= (-1 * line + 5); j = j+1) { System.out.print(".");

}

for (int k = 1; k <= line; k = k+1) { System.out.print(line);

}

System.out.println();

}

(65)

Verschachtelte for Schleifen

§ Was ist der Output dieser verschachtelten Schleifen?

for (int line = 1; line <= 5; line = line+1) {

for (int j = 1; j <= (-1 * line + 5); j = j+1) { System.out.print(".");

}

for (int k = 1; k <= line; k = k+1) { System.out.print(line);

}

System.out.println();

}

§ Answer:

....1

...22

..333

.4444

(66)

Verschachtelte for Schleifen Übung

§ Verändern Sie das letzte Programm so dass dieser Output erzeugt wird:

....1 ...2.

..3..

.4...

5....

(67)

Verschachtelte for Schleifen Übung

Verändern Sie das letzte Programm so dass dieser Output erzeugt wird:

....1 ...2.

..3..

.4...

5....

(Eine) Antwort:

for (int line = 1; line <= 5; line=line+1) {

for (int j = 1; j <= (-1 * line + 5); j=j+1) { System.out.print(".");

}

System.out.print(line);

for (int j = 1; j <= (line - 1); j=j+1) { System.out.print(".");

}

(68)

2.4 Methoden mit Parametern

(69)

Zurück zu unserem einfachen Beispiel

§ Jede/r soll die Aufgaben machen (können):

class Beispiel {

public static void main (String[] args) { for (int i = 1; i <= 5; i = i+1) {

System.out.println(

"Ich werde die Uebungsaufgaben machen");

}

} // end main

}

(70)

Mit Methode

§ Jede/r soll die Aufgaben machen (können):

class Beispiel {

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

} // end main

public static void vorsatz() {

} // end vorsatz

}

(71)

Mit Methode

public static void vorsatz () {

for (int i = 1; i <= 5; i = i+1) { System.out.println(

"Ich werde die Uebungsaufgaben machen");

}

} // end vorsatz

(72)

Mit Methoden vorsatz5, vorsatz10, vorsatz15

public static void vorsatz5 () {

for (int i = 1; i <= 5; i = i+1) { ... } } // end vorsatz5

public static void vorsatz10 () {

for (int i = 1; i <= 10; i = i+1) { ... } } // end vorsatz10

public static void vorsatz15 () {

for (int i = 1; i <= 15; i = i+1) { ... }

} // end vorsatz15

(73)

Noch mehr Vorsätze …

§ Diese "Lösung" lässt nur eine vorgebene Anzahl von Wiederholungen zu …

§ Was wenn wir auch andere Kombinationen wollen?

§ OK, kein echtes Thema aber es geht uns ja um das Prinzip

§ Wir brauchen einen Weg, die Anzahl Wiederholungen der Situation anzupassen

§ Parametrisierung: mit (veränderbaren) Parametern versehen

(74)

Parametrisierung

§ Parameter: Ein Wert den eine aufgerufene Methode von der

aufrufenden Methode erhält.

(75)
(76)

Parametrisierung

§ Parameter: Ein Wert den eine aufgerufene Methode von der aufrufenden Methode erhält.

§ Statt vorsatz5, vorsatz10, vorsatz15 entwicklen wir eine Methode flexVorsatz so dass verschiedene

Wiederholungen gewählt werden können.

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

§ Wenn wir die Method aufrufen, dann geben wir einen Wert für

(77)

Parametrisierung

main 5 flexVorsatz flexVorsatz 10

Ich werde die Hausaufgaben machen Ich werde die Hausaufgaben machen Ich werde die Hausaufgaben machen Ich werde die Hausaufgaben machen Ich werde die Hausaufgaben machen

Ich werde die Hausaufgaben machen Ich werde die Hausaufgaben machen Ich werde die Hausaufgaben machen Ich werde die Hausaufgaben machen Ich werde die Hausaufgaben machen Ich werde die Hausaufgaben machen Ich werde die Hausaufgaben machen Ich werde die Hausaufgaben machen Ich werde die Hausaufgaben machen Ich werde die Hausaufgaben machen

(78)

Parameterdeklarationen

Gibt an dass eine Methode einen Parameter braucht um ausgeführt werden zu können

public static void methodName ( type name ) { statement;

} name: Parameter Variable

(79)

Parameterdeklarationen

Gibt an dass eine Methode einen Parameter braucht um ausgeführt werden zu können

public static void name ( type name ) { statement;

}

§ Beispiel:

public static void echoPin(int code) {

Wenn echoPin aufgerufen wird dann muss

der Aufrufer einen int Wert angeben.

(80)

Wert(e) für Parameter

Beim Aufruf einer Methode muss ein Wert für den Parameter angegeben werden.

name (expression);

§ Beispiel:

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

echoPin(12345);

}

§ Output

Die Geheimnummer ist: 42

(81)

Wie werden Parameter übergeben?

§ Übergeben: vom Aufrufer zur aufgerufenen Methode

§ Wenn eine Methode aufgerufen wird dann:

§ Der Wert wird in der Parameter Variable gespeichert

§ Die Anweisungen der Methode werden ausgeführt (mit diesem Wert für die Parameter Variable).

§ Der Wert, den der Aufrufer übergibt, kann durch eine Variable gegeben sein

§ Der Wert kann durch einen Ausdruck berechnet werden

(82)

Methode mit Parameter

§ Zurück zum Beispiel:

class Beispiel {

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

} // end main

public static void flexVorsatz(int wieoft) { for (int i = 1; i <= wieoft; i = i+1) {

System.out.println("Ich werde die Hausaufgaben machen");

}

} // end flexVorsatz }

(83)

Parameter

§ Ein Parameter in der Deklaration einer Methode heisst formaler Parameter (formal parameter).

§ Formal parameter: definiert

§ Der übergebene Wert heisst tatsächlicher Parameter (actual parameter) oder Argument (argument)

§ Aktuell: augenblicklich, derzeitig [Duden]

§ Aktueller Wert

(84)

Parameter

Ein Parameter kann in der Methode wie jede Variable verwendet werden (z.B. Anzahl der Iterationen einer Schleife kontrollieren)

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

}

public static void printPunkt(int times) { for (int i = 1; i <= times; i = i+1) {

System.out.print(“.");

}

System.out.println();

} Output: ...

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

§ 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

containsAll( coll ) returns true if this set contains every element from given set equals( set ) returns true if given other set contains the same elements iterator() returns

§ Eine Aussage gilt für den Zustand eines Programms wenn die Auswertung der Aussage mit dem Zustand das Ergebnis true ergibt. § Die Auswertung jedes Variable ergibt den Wert

Eclipse hilft Ihnen dabei, indem es anzeigt, wo die Fehler sind (und eine mehr oder weniger hilfreiche Fehlermeldung dazu ausgibt), aber Sie müssen selber herausfinden, was das