Programmiervorkurs WS 2014/15 Methoden Termin 5. Fakultät als Methode import java.util.Scanner;...

Preview:

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)

Recommended