252-0027
Einführung in die Programmierung
2.0 Einfache Java Programme
Thomas R. Gross
Department Informatik
2.2 Variablen
Variable
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);
...
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
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) );
}
§ Der Ausdruck (Anzahl Stunden) (38 + 40 + 30 + 10) wird wiederholt
§ Abzüge werden mehrfach berechnet
§ So viele println Anweisungen
Variable
§ Variable (“variable”): Name der es erlaubt, auf einen
gespeicherten Wert zuzugreifen
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)
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)
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
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;
xDeklaration
Variable müssen deklariert sein bevor sie verwendet werden können.
type name ;
EBNF Description variabledeclaration
typeidentifier ⟸ bezeichner variableidentifier ⟸ bezeichner
variabledeclaration ⟸ typeidentifier variableidentifier { , variableidentifier } ;
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
Assignment
§ Java verwendet = um eine Zuweisung auszudrücken
§ "Assignment operator"
name = expression;
EBNF Description assignment
variableidentifier ⟸ bezeichner
assignment ⟸ variableidentifier = expression ;
Die EBNF Beschreibung für expression kommt später.
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
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
Deklaration mit Initialisierung
EBNF Description variabledeclaration
typeidentifier ⟸ bezeichner variableidentifier ⟸ bezeichner
variablelist ⟸ variableidentifier { , variableidentifier } variableinitialization ⟸ variableidentifier = expr
variablespecification ⟸ variableinitialization | variablelist
variabledeclaration ⟸ typeidentifier variablespecification ;
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
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 ???
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
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
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.");
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
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);
...
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) );
}
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);
} }
Methoden (Übung)
Schreiben Sie ein Programm das diese Rackete ausgibt:
/\
/ \
/ \
/ \
+---+
| |
| |
| |
+---+
| |
| ISS |
| |
+---+
| |
| |
| |
+---+
/\
/ \
/ \
2.3 Schleifen ("Loops")
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
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
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)
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
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”)
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
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..."
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
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:
+----+
\ /
/ \
\ /
/ \
\ /
/ \
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
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
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.
2.3.2 Verschachtelte for Schleifen
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)
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
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:
*
**
***
****
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
Mögliche Fehler
§ Die Schleife terminiert nicht
§ Läuft und läuft und läuft
§ Endlosschleife ("infinite loop")
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();
}
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();
}
Was tun?
§ Eclipse kann solche Programme stoppen.
§ Klicken auf "Terminate"
Mehr Beispiele
§ Welche verschachtelten for Schleifen erzeugen diesen Output?
....1 ...2 ..3 .4 5
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)
Ä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.
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 + " ");
}
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
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
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
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
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();
}
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
Verschachtelte for Schleifen Übung
§ Verändern Sie das letzte Programm so dass dieser Output erzeugt wird:
....1 ...2.
..3..
.4...
5....
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(".");
}
2.4 Methoden mit Parametern
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
}
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
}
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
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
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
Parametrisierung
§ Parameter: Ein Wert den eine aufgerufene Methode von der
aufrufenden Methode erhält.
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
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
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
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.
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
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
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 }