Sinn des programmes

Romolus

Mitglied
Für eine Übung muss ich das Programm verstehen und alle Werte erklären.

Aufgabe:
Java:
boolean ex1(int x){
  if (x % 2 == 0) return false;
  for(int i =3;i <= Math.sqrt(x); i+=2){
     if (x % i ==0) return false;
  }
  return true;
}

Ich verstehe das Programm und kann es auch erklären, aber zwei Fragen hab ich dazu:

Frage 1) Wieso steht ex1(int x) so da, was heißt das in der Reihenfolge?
Frage 2) Was bedeutet return true?
Return steht sonst in Funktionen und kehrt die Ausführung wieder an den die Funktion aufrufenden Programmteil zurück.
WIeso sollte das Programm mir dan true wiedergeben, wenn vorher gar kein System.out.println("true") steht?
Frage 3)
Das Programm läuft bei mir leider nicht, dehalb kann ich es nicht testen.
 
Ganz sicher dass du den Code verstehst? 😱
Frage 1) Wieso steht ex1(int x) so da, was heißt das in der Reihenfolge?
? Das ist eine Methodendeklaration : Chapter*8.*Classes
Frage 2) Was bedeutet return true?
Return steht sonst in Funktionen und kehrt die Ausführung wieder an den die Funktion aufrufenden Programmteil zurück.
WIeso sollte das Programm mir dan true wiedergeben, wenn vorher gar kein System.out.println("true") steht?
? Weil jmd die Methode aufruft und dann eben true oder false zurückgegeben bekommt und er dann meinetwegen dort das Sytem.out machen kann? - Kapitel Methoden lesen! :rtfm:
Frage 3)
Das Programm läuft bei mir leider nicht, dehalb kann ich es nicht testen.

Das ist ja auch kein komplettes Programm sondern eben nur eine Methode, die lässt sich auch kompilieren, da ist nichts verkehrt!
 
Also:
Mit dem Typ boolean werden Wahrheitswerte dargestellt, dieser Datentyp kann nur den Wert true oder false annehmen.
Es wir in der if-Schleife überprüft, ob die Zahl x durch 2 teilbar ist, wenn diese Bedingung erfüllt ist wird das programm abgebrochen und false ausgegeben.
Wenn die Zahl nicht durch 2 teilbar ist, geht es in die for Schleife mit der Deklaration von i mit den Anfangswert 3. Nun wird überprüft ob i kleiner oder gleich der Wurzel aus x ist, wenn das nicht der fall ist wird die SChleife abgebrochen. Der Wert von i wird um 2 erhöht, steht jedoch jetzt noch am ANfangswert 3.
Wenn x durch das 3 teilbar ist wird die Methode vorzeitig abgebrochen und gibt false aus ansonsten geht for-Schleife mit i =4 weiter. Wenn alle definierten Zahlen passiert wurden wird das programm abgebrochen und es wird true ausgegeben.


Wie hatten das Kapitel methoden noch nicht In der Vorlesung, deshlab wusste ich das nicht.

Wie ruft man dan die methode auf?

LG
 
Zu 1:
Java:
boolean ex1(int x){
Eine Methode vom Typ boolean mit dem Namen ex1 und in den Klammern stehen () stehen wie bekannt Parameter. Diese Methode bekommt den Parameter int x zugewiesen. Es ist diese Reihenfolge:
Zugriffsmodifikatoren, Datentyp, Name, ggf. Parameter.
Nur fehlt hier der Zugriffsmodifikator (public, protected, private ).

Zu 2:
return true heißt einfach das selbe wie es übersetzt heißt. Er liefert einen wahren wert zurück. Und zwar gibt er ihn zurück, nachdem er sich die Zahl unter die Lupe nimmt.
Es ist quasi ein Bestehungstest.

Zu 3:
Kein Wunder, dass es nicht läuft. Es fehlt die main-Methode und eine Klasse. Was du vor dir hast, ist lediglich nur eine Methode. Kompilieren kannst du es, ohne dass eine Exception geworfen wird o.ä..
 
kommt darauf an wo sich die Methode befindet, aber da ihr noch keine Methoden hattet ist wahrscheinlich eh alles in einer Klasse.

Somit sollte:

Java:
ex1(5);
//oder
ex1(10);

funktionieren. Natürlich kannst du der Methode andere Werte übergeben mit denen dann gerechnet werden.

Kompilieren kannst du es, ohne dass eine Exception geworfen wird o.ä..

Es wird eine Exception geworfen, wenn man keine main Methode hat.
Code:
java.lang.NoSuchMethodError: main
Exception in thread "main"
 
Zuletzt bearbeitet:
Kompilieren müsste man es können, nur beim Ausführen wird die Exception geworfen. Von daher hat Kababär soweit schon Recht mit seiner Aussage.
 
Soweit ich weiß, KANN eine Methode auch als Funktion bezeichnet werden.
In anderen Sprachen ist die Hauptbezeichnung glaub Funktion statt Methode.

Unwichtiges:
Als Algorithmenprogrammer wäre dies aber nicht sehr sinnvoll,
da man eine Funktion wohl eher als Anweisungsblock betrachten würde.

Sage doch lieber Methode und nenne die Dinge bei den formalen Namen.

Als Funktion könnte ich mir aber auch mathematisch zusammengesetzte Ausdrücke und Anweisungen vorstellen wie:
Code:
fak(n)
if ( n <= 1 )
       return 1;
else
  return ( n * fak(n-1) )

EDIT: Wobei mir gerade auffällt, dass es auch wieder eine Methode ist.
Also Methode <=> Funktion
 
Zuletzt bearbeitet:
Dann schreibe ich auch mal was dazu...

Normalerweise wird zwischen Prozedur und Funktion unterschieden, wobei eine Funktion im gegensatz zur Prozedur einen Rückgabewert liefert. In Java jedoch wird beides einfach als "Methode" zusammengefasst.
 

Zurück
Oben