Brauche Dringend Hilfe...Prozedur/Funktionsprozedur Ergebnis augeben

DreamingMe

Mitglied
Brauche dringend Hilfe. Ich soll diese Berechnung(Abstand zweier Punkte) als Funktionsprozedur und als Prozedur lösen und beides ausgeben. Ich schaffe es aber nicht.. wo liegt mein Fehler? Bei system.out.println kommt die fehlermeldung 'void' type not allowed here. Habe viel versucht aber mache es irgendwie nur schlimmer...

Java:
public class Distanz {

        static double n;
        static double n1;

        public static void berechneDistanzAlsProzedurp ( double x1, double y1, double x2, double y2){
            n = x1 - x2;
            n1 = y1 - y2;
            n = n * n;
            n1 = n1 * n1;
            n = n + n1;
            n = Math.sqrt(n);
        }


        public static double berechneDistanzAlsFunktion ( double x1, double y1, double x2, double y2){
            double s = 0;
            double s1 = 0;

            s = x1 - x2;
            s1 = y1 - y2;
            s = s * s;
            s1 = s1 * s1;
            s = s + s1;
            s = Math.sqrt(s);
            return s;
        }
    public static void main(String[] args) {

        System.out.println("Distanz von p1 und p2 berechnet mit einer Prozedur:" + berechneDistanzAlsProzedurp(10, 8, 2, 12));
        System.out.println("Distanz von p1 und p2 berechnet mit einer Funktion:" + berechneDistanzAlsFunktion(10, 8, 2, 12));

    }
}
 
Zuletzt bearbeitet von einem Moderator:
Der Unterschied zwischen Prozedur und Funktion soll wahrscheinlich sein, dass erstere keinen Rückgabetyp hat?

Da berechneDistanzAlsProzedurp nichts zurück gibt, kannst du sie nicht direkt in der Ausgabe nutzen. Stattdessen musst du die Variable nutzen, die von der Prozedur gefüllt wird.
 
Der Unterschied zwischen Prozedur und Funktion soll wahrscheinlich sein, dass erstere keinen Rückgabetyp hat?

Da berechneDistanzAlsProzedurp nichts zurück gibt, kannst du sie nicht direkt in der Ausgabe nutzen. Stattdessen musst du die Variable nutzen, die von der Prozedur gefüllt wird.
Okay vielen Dank 🙂 Ich versuche es nochmal.. Also muss ich bei System.out.printl n ausgeben?
 
Also wenn der Code nun in einer Klasse Distanz ist, dann musst Du zum starten auch diese Klasse angeben und nicht die Klasse Main,
 
Brauche dringend Hilfe. Ich soll diese Berechnung(Abstand zweier Punkte) als Funktionsprozedur und als Prozedur lösen und beides ausgeben
Eine Funktion hat immer eine Parameterliste und einen Rückgabewert.
Eine Methode oder Prozedur kann sowohl eine Parameterliste als auch einen Rückgabewert haben.
Das eigentliche Kriterium zur Unterscheidung ist aber, dass eine Funktion nach außen keine Veränderungen vornimmt.

z.B.
[CODE lang="java" title="Funktion"]/**
* Berechnet die Distance zwischen 2 Punkten A,B.
*
* @param x1
* Punkt A X- Koordinate
* @param y1
* Punkt A Y- Koordinate
* @param x2
* Punkt B X- Koordinate
* @param y2
* Punkt B Y- Koordinate
* @return double
*/
public static double distance(double x1, double y1, double x2, double y2) {
double diffX = x1 - x2;
double diffY = y1 - y2;
return Math.sqrt(diffX * diffX + diffY * diffY);
}[/CODE]
[CODE lang="java" title="Keine echte Funktion" highlight="4"]public static double distance(double x1, double y1, double x2, double y2) {
double diffX = x1 - x2;
double diffY = y1 - y2;
System.out.println(diffX); // Verändert den Zustand der Konsole
return Math.sqrt(diffX * diffX + diffY * diffY);
}[/CODE]
 
Eine Funktion hat immer eine Parameterliste und einen Rückgabewert.
Eine Methode oder Prozedur kann sowohl eine Parameterliste als auch einen Rückgabewert haben.
Das eigentliche Kriterium zur Unterscheidung ist aber, dass eine Funktion nach außen keine Veränderungen vornimmt.
Die Unterscheidungen sind völlig beliebig und je nach Sprache auch unterschiedlich. In manchen Sprachen gibt es einen definierten Unterschied zwischen Funktion, Methode & Prozedur – in Java dagegen gibt es per JLS nur Methoden.


Eine Prozedur ist in dieser Aufgabe ziemlich sicher als hat keinen Rückgabewert definiert.
 
Ich erkläre euch mal gerad den Unterschied. Java kennt nur Methoden; Funktionen und Prozeduren sind allerdings Synonyme. Im Kontext dieser Aufgabenstellung ist aber davon auszugehen, dass mit Prozedur eine Methode/Funktion gemeint ist, welche keine Rückgabe besitzt. D h., du brauchst hier noch eine Klassen- oder Objektvariable, auf die die Prozedur operiert - und die zum Schluss hin ausgegeben wird.
 
Die Unterscheidungen sind völlig beliebig und je nach Sprache auch unterschiedlich
Das stimmt. Obige Definition geht direkt auf die Mathematik zurück. Findet aber auch Anwendung bei der Unterscheidung von Funktionaler und Prozeduraler Programmierung. Ich halte es aber nicht für falsch per Definition eine Unterscheidung zwischen Prozedur und Funktion zu machen. Das ist für das Verständnis für Seiteneffekte von Methoden die eben bei Funktionen nicht auftreten können wesentlich. Unser Professor hatte auf diese Definition immer einen großen Wert gelegt unabhängig von der benutzen Sprache. Wir benutzen unter anderem Java, C/C++ ...
 

Zurück
Oben