Wurzeln in Pascal?
Hallo, ich würde gern Wurzel ziehen, aber wenn ich sqrt(x); eingebe funktioniert das nicht :c
3 Antworten
Dein Programm hat den gleichen Namen wie dir Funktion sqrt(r).
Beim Aufruf von sqrt erwartet nun der Compiler, das Sqrt ein Qualifzierer auf eine Programm/Unit Sqrt ist. (Sqrt.irgendwas). ...aber da kommt kein Punkt... sondern eine Klammer.
Wenn es Namengleichheiten gibt, musst den Aufruf einer Variable/Funktion etc. mit dem Namen der Unit qualifizieren, in welcher diese definiert ist.
c := System.Sqrt(r);
...dann klappt es auch. (Besser ist es jedoch Namengleichheiten zu vermeiden)
Ich glaube es liegt daran, dass das Programm auch sqrt heißt. Ich würde das sqrt in Zeile 4 umbenennen.
Komisch, wenn ich es austeste, funktioniert es: https://onlinegdb.com/LYB5ulDaC
Wenn das Programm/Unit den gleichen Namen wie eine Funktion/Variable in einer eingebunden unit hat, gibt es Missverständnisse.
Dem könnte man aus dem Weg gehen, wenn man prinzipiell qualifiziert Aufruft.
Unitname.VarName, Unitname.FuncName() ....
Macht bloß keiner... (auch wenn es sinnvoll ist, denn überschreiben von Methoden ist auch in Pascal zulässig und man weiß nie was in Nutzerdefinierten Units für Namen definiert sein könnten)
Die Unit System muss nicht mal explizit eingebunden werden, deshalb hat das bei Sqrt(r) nichtmal jemand auf dem Schirm...
Du must noch die uses Math implementieren.
Käse ... sqrt(r) ist in der Unit System implementiert und die wird immer implizit eingebunden.
Das wahre Problem ist, das niemand qualifizierte Namen verwendet... (üble Unart, solange es modulare Programmiersprachen gibt. ...und seit Ewigkeiten wird diese als normal angesehen...)
geht nicht. Ich kann entweder crt oder Math aber nichts davon geht
Ne, leider nicht, aber danke