Upload
emeric-arbeiter
View
114
Download
0
Tags:
Embed Size (px)
Citation preview
Programmiervorkurs WS 2014/15
MethodenTermin 5
Fakultät als Methode
import java.util.Scanner;
public class Fakultaet {
public static void main(String[] args) {
//Eingabe einer Zahl n:
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
//Berechne die Fakultaet f von n:
long f = 1;
for (int i = 1; i <= n; i++) f *= i;
System.out.println(
"Die Fakultaet von " + n + " ist " + f);
}
}
Fakultät als Methode
Idee: Kapselung der Fakultätsberechnung als Programmeinheit, die einfach wiederverwendet werden kann.
Fakultät als Methode
import java.util.Scanner;
public class Fakultaet {
public static void main(String[] args) {
//Eingabe einer Zahl n:
int n = liesGanzzahl();
//Berechne die Fakultaet f von n:
long f = fakultaet(n);
System.out.println(
"Die Fakultaet von " + n + " ist " + f);
}
}
Fakultät als Methode
import java.util.Scanner;
public class Fakultaet {
public static void main(String[] args) {
//Eingabe einer Zahl n:
int n = liesGanzzahl();
//Berechne die Fakultaet f von n:
long f = fakultaet(n);
System.out.println(
"Die Fakultaet von " + n + " ist " + f);
}
}
Diese Methoden sind dem Compiler noch nicht bekannt.
Fakultät als Methode
public class Fakultaet {
public static void main(String[] args) {
int n = liesGanzzahl();
long f = fakultaet(n);
System.out.println(
"Die Fakultaet von " + n + " ist " + f);
}
}
Fakultät als Methode
public class Fakultaet {
public static void main(String[] args) {
int n = liesGanzzahl();
long f = fakultaet(n);
System.out.println(
"Die Fakultaet von " + n + " ist " + f);
}
//Methode zur Eingabe einer Ganzzahl
public static int liesGanzzahl() {
}
}
Fakultät als Methode
public class Fakultaet {
public static void main(String[] args) {
int n = liesGanzzahl();
long f = fakultaet(n);
System.out.println(
"Die Fakultaet von " + n + " ist " + f);
}
//Methode zur Eingabe einer Ganzzahl
public static int liesGanzzahl() {
}
}
Rückgabewert (hier: eine Ganzzahl)
Fakultät als Methode
public class Fakultaet {
public static void main(String[] args) {
int n = liesGanzzahl();
long f = fakultaet(n);
System.out.println(
"Die Fakultaet von " + n + " ist " + f);
}
//Methode zur Eingabe einer Ganzzahl
public static int liesGanzzahl() {
}
}
Name der Methode (Konvention: Beginn mit Kleinbuchstabe)
Fakultät als Methode
public class Fakultaet {
public static void main(String[] args) {
int n = liesGanzzahl();
long f = fakultaet(n);
System.out.println(
"Die Fakultaet von " + n + " ist " + f);
}
//Methode zur Eingabe einer Ganzzahl
public static int liesGanzzahl() {
}
}
jede Methode ist in einer Klasse definiert
Fakultät als Methode
public class Fakultaet {
public static void main(String[] args) {
int n = liesGanzzahl();
long f = fakultaet(n);
System.out.println(
"Die Fakultaet von " + n + " ist " + f);
}
//Methode zur Eingabe einer Ganzzahl
public static int liesGanzzahl() {
}
} innerhalb der Klasse durch {} abgegrenzt
Fakultät als Methodeimport java.util.Scanner;
public class Fakultaet {
public static void main(String[] args) {
int n = liesGanzzahl();
long f = fakultaet(n);
System.out.println(
"Die Fakultaet von " + n + " ist " + f);
}
//Methode zur Eingabe einer Ganzzahl
public static int liesGanzzahl() {
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
}
}
Fakultät als Methodeimport java.util.Scanner;
public class Fakultaet {
public static void main(String[] args) {
int n = liesGanzzahl();
long f = fakultaet(n);
System.out.println(
"Die Fakultaet von " + n + " ist " + f);
}
//Methode zur Eingabe einer Ganzzahl
public static int liesGanzzahl() {
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
return i;
}
}
Fakultät als Methodeimport java.util.Scanner;
public class Fakultaet {
public static void main(String[] args) {
int n = liesGanzzahl();
}
//Methode zur Eingabe einer Ganzzahl
public static int getGanzzahl() {
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
return i;
}
}
Variable i ist nur innerhalb der Methode getGanzzahl bekannt!
Mit return i wird Wert zurückgegeben.
Fakultät als Methodeimport java.util.Scanner;
public class Fakultaet {
public static void main(String[] args) {
int n = liesGanzzahl();
long f = fakultaet(n);
System.out.println(
"Die Fakultaet von " + n + " ist " + f);
}
//Methode zur Berechnung der Fakultaet einer Ganzzahl
public static long fakultaet(int arg) {
}
}
Fakultät als Methodeimport java.util.Scanner;
public class Fakultaet {
public static void main(String[] args) {
int n = liesGanzzahl();
long f = fakultaet(n);
System.out.println(
"Die Fakultaet von " + n + " ist " + f);
}
//Methode zur Berechnung der Fakultaet einer Ganzzahl
public static long fakultaet(int arg) {
}
}
Methode nimmt eine Zahl vom Typ int entgegen.
Fakultät als Methodeimport java.util.Scanner;
public class Fakultaet {
public static void main(String[] args) {
int n = liesGanzzahl();
long f = fakultaet(n);
System.out.println(
"Die Fakultaet von " + n + " ist " + f);
}
//Methode zur Berechnung der Fakultaet einer Ganzzahl
public static long fakultaet(int arg) {
}
} Methode gibt eine Zahl vom Typ long zurück.
Methode nimmt eine Zahl vom Typ int entgegen.
Fakultät als Methodeimport java.util.Scanner;
public class Fakultaet {
public static void main(String[] args) {
int n = liesGanzzahl();
long f = fakultaet(n);
System.out.println(
"Die Fakultaet von " + n + " ist " + f);
}
//Methode zur Berechnung der Fakultaet einer Ganzzahl
public static long fakultaet(int arg) {
long fak = 1;
for (int i = 1; i <= arg; i++) fak *= i;
return fak; //gib das Ergebnis zurueck
}
}
Fakultät als Methodeimport java.util.Scanner;
public class Fakultaet {
public static void main(String[] args) {
int n = liesGanzzahl();
long f = fakultaet(n);
}
public static long fakultaet(int arg) {
long fak = 1;
for (int i = 1; i <= arg; i++) fak *= i;
return fak; //gib das Ergebnis zurueck
}
}
1. Aufruf der Methode mit Parameterübergabe
Fakultät als Methodeimport java.util.Scanner;
public class Fakultaet {
public static void main(String[] args) {
int n = liesGanzzahl();
long f = fakultaet(n);
}
public static long fakultaet(int arg) {
long fak = 1;
for (int i = 1; i <= arg; i++) fak *= i;
return fak; //gib das Ergebnis zurueck
}
}
1. Aufruf der Methode mit Parameterübergabe
2. Methodewirdausgeführt
Fakultät als Methodeimport java.util.Scanner;
public class Fakultaet {
public static void main(String[] args) {
int n = liesGanzzahl();
long f = fakultaet(n);
}
public static long fakultaet(int arg) {
long fak = 1;
for (int i = 1; i <= arg; i++) fak *= i;
return fak; //gib das Ergebnis zurueck
}
}
1. Aufruf der Methode mit Parameterübergabe
2. Methodewirdausgeführt
3. Ergebnis wird zurückgegeben
Fakultät als Methode
public static long fakultaet(int arg) {
long fak = 1;
for (int i = 1; i <= arg; i++) fak *= i;
return fak; //gib das Ergebnis zurueck
System.out.println("Keiner hoert auf mich :-(");
}
Fakultät als Methode
public static long fakultaet(int arg) {
long fak = 1;
for (int i = 1; i <= arg; i++) fak *= i;
return fak; //gib das Ergebnis zurueck
System.out.println("Keiner hoert auf mich :-(");
}
"Unresolved compilation problem: Unreachable code"
Fakultät als Methodeimport java.util.Scanner;
public class Fakultaet {
public static void main(String[] args) {
int n = liesGanzzahl();
long f = fakultaet(n);
System.out.println("Die Fakultaet von " + n + " ist " + f);
}
public static int liesGanzzahl() {
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
return i;
}
public static long fakultaet(int arg) {
long fak = 1;
for (int i = 1; i <= arg; i++) fak *= i;
return fak;
}
}
Methoden mit Referenzdatentypen public class FeldAusgabe {
public static void main(String[] args) {
int[] i = {3, 1, 4, 2, 1};
gibWerteAus(i);
}
public static void gibWerteAus(int[] werte) {
for (int i = 0; i < werte.length; i++) {
System.out.println("Wert " + i + " = " + werte[i]);
}
}
}
Methoden mit Referenzdatentypen public class FeldAusgabe {
public static void main(String[] args) {
int[] i = {3, 1, 4, 2, 1};
gibWerteAus(i);
}
public static void gibWerteAus(int[] werte) {
for (int i = 0; i < werte.length; i++) {
System.out.println("Wert " + i + " = " + werte[i]);
}
}
}
kann auch Feld oder Klasse sein
Rückgabewert void:Es wird nichts zurückgegeben.
Methoden mit Referenzdatentypen public class FeldAusgabe {
public static void main(String[] args) {
int[] i = {3, 1, 4, 2, 1};
gibWerteAus(i);
}
public static void gibWerteAus(int[] werte) {
for (int i = 0; i < werte.length; i++) {
System.out.println("Wert " + i + " = " + werte[i]);
}
}
}
Wert 0 = 3Wert 1 = 1Wert 2 = 4Wert 3 = 2Wert 4 = 1
Methoden mit Referenzdatentypen public class FeldAusgabe {
public static void main(String[] args) {
int[] i = {3, 1, 4, 2, 1};
doppel(i);
gibWerteAus(i);
}
public static void gibWerteAus(int[] werte) {
for (int i = 0; i < werte.length; i++) {
System.out.println("Wert " + i + " = " + werte[i]);
}
}
public static void doppel(int[] werte) {
for (int i = 0; i < werte.length; i++) werte[i] *= 2;
}
}
Methoden mit Referenzdatentypen public class FeldAusgabe {
public static void main(String[] args) {
int[] i = {3, 1, 4, 2, 1};
doppel(i);
gibWerteAus(i);
}
public static void gibWerteAus(int[] werte) {
for (int i = 0; i < werte.length; i++) {
System.out.println("Wert " + i + " = " + werte[i]);
}
}
public static void doppel(int[] werte) {
for (int i = 0; i < werte.length; i++) werte[i] *= 2;
}
}
Wert 0 = 6Wert 1 = 2Wert 2 = 8Wert 3 = 4Wert 4 = 2
Methoden mit Referenzdatentypen public class FeldAusgabe {
public static void main(String[] args) {
int[] i = {3, 1, 4, 2, 1};
doppel(i);
gibWerteAus(i);
}
public static void doppel(int[] werte) {
for (int i = 0; i < werte.length; i++) werte[i] *= 2;
}
}
3
i 1421
Methoden mit Referenzdatentypen public class FeldAusgabe {
public static void main(String[] args) {
int[] i = {3, 1, 4, 2, 1};
doppel(i);
gibWerteAus(i);
}
public static void doppel(int[] werte) {
for (int i = 0; i < werte.length; i++) werte[i] *= 2;
}
}
3
i 1421
Methoden mit Referenzdatentypen public class FeldAusgabe {
public static void main(String[] args) {
int[] i = {3, 1, 4, 2, 1};
doppel(i);
gibWerteAus(i);
}
public static void doppel(int[] werte) {
for (int i = 0; i < werte.length; i++) werte[i] *= 2;
}
}
3
i 1421
werte
Methoden mit Referenzdatentypen public class FeldAusgabe {
public static void main(String[] args) {
int[] i = {3, 1, 4, 2, 1};
doppel(i);
gibWerteAus(i);
}
public static void doppel(int[] werte) {
for (int i = 0; i < werte.length; i++) werte[i] *= 2;
}
}
6
i 2842
werte
Methoden mit Referenzdatentypen public class FeldAusgabe {
public static void main(String[] args) {
int[] i = {3, 1, 4, 2, 1};
doppel(i);
gibWerteAus(i);
}
public static void doppel(int[] werte) {
for (int i = 0; i < werte.length; i++) werte[i] *= 2;
}
}
6
i 2842
Methoden mit Referenzdatentypen public class FeldAusgabe {
public static void main(String[] args) {
int[] i = {3, 1, 4, 2, 1};
doppel(i);
gibWerteAus(i);
}
public static void doppel(int[] werte) {
for (int i = 0; i < werte.length; i++) werte[i] *= 2;
}
}
6
i 2842
Methoden mit Referenzdatentypen public class FeldAusgabe {
public static void main(String[] args) {
int[] i = {3, 1, 4, 2, 1};
doppel(i);
gibWerteAus(i);
}
public static void doppel(int[] werte) {
for (int i = 0; i < werte.length; i++) werte[i] *= 2;
}
}
6
i 2842
Methoden mit Referenzdatentypen public class FeldAusgabe {
public static void main(String[] args) {
int[] i = {3, 1, 4, 2, 1};
doppel(i);
gibWerteAus(i);
}
6
i 2842
Felder und Objekte werden per Referenz an Methoden übergeben.
Methoden mit Referenzdatentypen
• Back to the roots:
public class MyFirstClass {public static void main(String[] args) {
System.out.println("Hello World!");
}}
Methoden mit Referenzdatentypen
• Back to the roots:
public class MyFirstClass {public static void main(String[] args) {
System.out.println("Hello World!");
}}Die Methode main gibt nichts zurueck
Methoden mit Referenzdatentypen
• Back to the roots:
public class MyFirstClass {public static void main(String[] args) {
System.out.println("Hello World!");
}}Die Methode main gibt nichts zurueck
Die Methode main nimmt ein Feld mit Zeichenketten entgegen (vom System, welches das Programm aufruft)
Methoden mit Referenzdatentypen
• Back to the roots:
public class MyFirstClass {public static void main(String[] args) {
System.out.println("Hello World!");
}}Die Methode main gibt nichts zurueck
Die Methode main nimmt ein Feld mit Zeichenketten entgegen (vom System, welches das Programm aufruft)
Was steht da drin?
Methoden mit Referenzdatentypen
• Back to the roots:public class MyFirstClass {public static void main(String[] args) {
System.out.println("Hello World!");
}}
Methoden mit Referenzdatentypen
• Back to the roots:public class MyFirstClass {public static void main(String[] args) {
for (int i = 0; i < args.length; i++) System.out.println(args[i]);
}}
Methoden mit Referenzdatentypen
• Back to the roots:public class MyFirstClass {public static void main(String[] args) {
for (int i = 0; i < args.length; i++) System.out.println(args[i]);
}}
Methoden mit Referenzdatentypen
• Back to the roots:public class MyFirstClass {public static void main(String[] args) {
for (int i = 0; i < args.length; i++) System.out.println(args[i]);
}}
AufgabeErstellt eine Klasse Flaechenberechnung mit einer Methode public static void main(String[] args).
In dieser Methode soll der Nutzer zur Eingabe eines Polygons aufgefordert werden. Ein Objekt der Klasse Polygon hat als einziges Attribut ein Feld punkte, welches Objekte derKlasse Punkt enthält (die Ecken des Polygons). Ein Punkt hatdie Attribute x und y (die Koordinaten, beide Typ double).
(Es sind also 2 Klassen zu erstellen, auf die x-Koordinate eines Punktes könnt ihr so zugreifen: INSTANZNAME.punkte[i].x)
Anschließend soll eine Methode public static double flaeche(Polygon p)aufgerufen werden. Diese Methode soll zu der KlasseFlaechenberechnung gehören und den Flächeninhalt des Polygons p
berechnen. Die Methode main soll diesen Flächeninhalt ausgeben.
Aufgabe
x
y
Flächenberechnung durch Summe über (orientierte) Flächen von Trapezen (Gaußsche Trapezformel)
Aufgabe
x
y
+
Flächenberechnung durch Summe über (orientierte) Flächen von Trapezen (Gaußsche Trapezformel)
Aufgabe
x
y
+
Flächenberechnung durch Summe über (orientierte) Flächen von Trapezen (Gaußsche Trapezformel)
Aufgabe
x
y
-
Flächenberechnung durch Summe über (orientierte) Flächen von Trapezen (Gaußsche Trapezformel)
Aufgabe
x
y
-
Flächenberechnung durch Summe über (orientierte) Flächen von Trapezen (Gaußsche Trapezformel)
Aufgabe
x
y
-
Flächenberechnung durch Summe über (orientierte) Flächen von Trapezen (Gaußsche Trapezformel)