Mathe

1. Jo ich ziehe es mir. Sowas dachte ich mir schon...

2.Mach dir nicht allzuviel Mühe (wenn ich ne Frage habe werde ich sie stellen...)

3.Doch Doch.
Ich hab da wohl was verwechselt...
 
Ok, dann gehe ich mal davon aus, dass du Grundkenntnisse von Java hast und weißt, wie z.B. eine Klasse aussieht und in welcher Form Befehle und Variablen definiert und angewendet werden.
 
Ich hab die alten Klassen überarbeitet, jetzt läuft das Programm mit dem Verfahren von Heron.

Klasse 1
klasse1.gif


Klasse2:
klasse2.gif


In Klasse 1 wird eine Methode zur Wurzelberechnung definiert und in Klasse 2 wird diese Methode dann beispielhaft für die Zahl 3 ausprobiert.

Die Kommentare schreib ich morgen oder am Ende der Woche - bin jetzt ziemlich müde.
 
Ich komm wohl morgen dazu da noch ein paar kommentare einzufügen, vielleicht mach ich auch eine grafische Oberfläche, wenn dann klicke ich die eh nur mit einem WYSIWYG Editor zusammen also eigentlich sinnlos, schauen mer mal...
 
Anleitung: du kopierst den Code in eine Datei mit dem Namen Wurzel.java Zur Ausführung brauchst du das JDK 1.3,
das bekommst du zum beispiel bei Sun. Wenn du es installiert hast rufst du in der Kommandozeile
javac wurzel.java auf, das erzeugt eine wurzel.class. Nun kannst du mit java wurzel dsa Programm aufrufen, sämtliche Ein und Ausgabe
erfolgt über die Konsole, eine grafische Oberfläche scheint mir für diesen zweck doch ein wenig unzweckmäßig.
der rest einer Zeile nach einem // ist ein Komentar

Code:
import java.io.*;  //wird für das Einlesen von Zahlen benötigt

public class Wurzel {        //hier fängt die Klasse Wurzel an
  private double in;         //fließkommazahl
  private double out;       //fleißkommazahl 
  private boolean istzahl;  //kann die werte true und false haben

  private double heron(double d) { //berechnet die Wurzel nach dem Verfahren von Heron warum hier was wie ist weiss ich auch nicht mehr, musst dir halt mal die Links weiter oben ansehen
    double fehler = 0.0004; //gibt die genauigkeit an, hier drei Stellen nach dem Komma, wenn es z.B. 0.0000irgendwas wäre, wäre die Genauigkeit vier stellen nach dem Komma, das glaub ich jedenfalls *g*
    double a;
    double b;
    a=1;
    b=d;
    while ((b-a)>fehler) {
      b=(a+b)/2;
      a=d/b;
    }
    return b; //gibt das ergebnis zurück, also die wurzel
  } //ende heron

  private double einlesen() { //Methode zum einlesen von Zahlen von der Konsole, hat mit wurzelziehen nix am hut
    Double d = new Double(0);
    System.out.print("Bitte die Zahl von der die Wurzel gezogen werden soll eingeben: "); //gibt eingabeaufforderung aus
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    try {
      d = Double.valueOf(br.readLine());
      istzahl = true;
    }
    catch(Exception e) {  //behandelt fehler die beim einlesen auftreten können, z.B. wenn man einen buchstaben anstatt eienr zahl einliest
      System.out.println("Fehler beim einlesen, bitte nur Zahlen eingeben.");
      istzahl = false;
    }

    return d.doubleValue();  //gibt die gelesene Zahl zurück
  } //Ende einlesen

  public void rechne() {  //methode die die wurzel berechnen lässt, zum einenn durch die heron methode oben, zum anderen von java mit Math.sqrt
    in = einlesen();  //ruft die methode einlesen auf und weist den von ihr zurückgegebenen wert der variablen in zu
    if ((in >= 0) && (istzahl)) { //wenn die eingelesene Zahl >= 0 ist und es wirklich eine Zahl ist dann wird die Wurzel gezogen
      out = Math.sqrt(in); //weist out den wert der von java berechnet wird zu
      System.out.println("Die Wurzel aus "+in+" ist "+out+"."); //gibt out aus
      System.out.println("Die Wurzel aus "+in+" nach dem Verfahren von Heron: "+heron(in)); //gibt das ergebnis das mit hilfe von heron berechnet wurde aus, der methodenaufruf ist hier integriert
    }
    else { //sonst Fehlermeldung ausgeben und nochmal
      System.out.println("Die Zahl muss grösser gleich 0 sein!");
      rechne();
    }
  } //ende der methode rechne

  public static void main(String[] args) { //methode main, gehört zu jedem ausführbaren java programm
    Wurzel wurzel1 = new Wurzel(); //erzeugt ein neues Objekt der Klasse Wurzel mit dem namen wurzel1
    wurzel1.rechne(); //ruft die methode rechne des Objekts wurzel1 auf
  }  //ende von main
}  //ende der Klasse Wurzel
 
So, hier sind meine beiden Klassen mit Kommentaren:

Klasse 1
Code:
public class KlasseMitWurzelDefinition
{
//Anfang der öffentlichen Klasse WurzelDefinition

    public double wurzel(double eingabeZahl)
      {
      //Definition der öffentlichen Methode 'wurzel' mit dem Eingabeparameter 'eingabeZahl' vom Typ 'double' - die Methode liefert eine Ausgabevariable vom Typ 'double' zurück
        double x = eingabeZahl;
        double y = 1;
        //lokale Variablen x und y, beide vom Typ double, Wertzuweisung
        
        while( java.lang.Math.abs(x - y) >= 0.000001 )
          {
            x = (x + y) / 2;
            y = eingabeZahl / x;
          };
        //Umsetzung des Verfahrens von Heron mit einer While-Schleife: solange gilt (...>=...), wird die Anweisung {...} ausgeführt
          
        return x;
        //Nach Beendigung der While-Schleife wird die Variable x als Rückgabewert der Methode zurückgegeben
      }
      //Ende der Methodendefinition für "wurzel"

}
//Ende der Klasse

Klasse 2:
Code:
public class KlasseMitHauptprogramm
{
//Anfang der öffentlichen Klasse KlasseMitHauptprogramm
	
 public static void main(String[] args)
  {  
  //Anfang des in der Klasse enthaltenen Hauptprogramms
    double ausgangszahl = 3;
    //Deklaration und Wertzuweisung einer Variable vom Typ double (aus ihr wird die Wurzel gezogen)
    
    if (ausgangszahl < 0)
        {System.out.println("Aus einer negativen Zahl wie " + ausgangszahl + " kann man keine Wurzel ziehen.");}
    else
        { 
          KlasseMitWurzelDefinition d = new KlasseMitWurzelDefinition();
          double errechneteWurzel = d.wurzel(ausgangszahl);
          System.out.println("Die Wurzel aus " + ausgangszahl + " ist " + errechneteWurzel +".");
        };
    //If-Schleife:
    //Falls die obige Variable kleiner als 0 ist, wird in der DOS-Box ausgegeben, dass man aus ihr keine Wurzel ziehen kann,
    //Ansonsten wird eine Instanz (hier mit d bezeichnet) der Klasse KlasseMitWurzeldefinition erzeugt,
    //eine Variable 'errechneteWurzel' erzeugt, die das Ergebnis des Methodenaufrufs 'wurzel' auf 'd' mit 'ausgangszahl' als Eingabeparameter aufnimmt,
    //anschließend gibt der Befehl 'System.out.println(...)' das Ergebnis in der DOS-Box aus
          
  }
  //Ende des Hauptprogramms
}
//Ende der Klasse

Haben die Downloads geklappt?
 
ja okay
Ein Kumpel von mir hat sich das Zeug gezogen...
Ich bekomme es dann auf der nächsten LAN.
Und in den Ferien will ich das "Projekt Mathe" noch abschließen...
 
Zurück
Oben