| |
|
|
- Seite 1 - |
|
Gary12345 | Hallo,
ich habe eine Include basierend auf leichtem XPROFAN Code erstellt.
Download
Funktionen aus dem Code ablesbar! |
|
|
| |
|
|
|
| |
|
- Seite 4 - |
|
Jörg Sellmeyer | Du musst dir einige Sachen in der Hilfe und hier im Thread noch mehrmals und sehr gründlich durchlesen!! KompilierenMarkierenSeparieren
Proc Addieren//Addiert Floatwerte a! und b! miteinander. Funktion ist also: Addieren(a!,b!). Beispiel dazu wäre: Addieren(2,4). Das Ergebnis wäre dann logischerweise 6
parameters a!,b!
declare ?_Addieren!
set("decimals",2)//Kürzt die Zahl auf zwei Nachkommastellen
?_Addieren! = a!+b!//Funktion
return ROUND(?_Addieren!,2)//Rundet die Zahlen auf zwei Nachkommastellen
EndProc
Hier rufst du zB die Proc Addieren mit Return nochmal auf und erhälst eine endlose Wiederholung. Und solange du Set("Decimals",2) und Round in deiner Prozedur hast, sind die Funktionen schlicht unbrauchbar. Außerdem: mal ganz unter uns... wenn ich x = 1+3 schreiben kann, warum sollte ich dann x = Addieren(1,3) schreiben?
Damit will ich gar nicht sagen, dass du nicht weitermachen sollst. Ist bestimmt ne gute Übung für dich. Aber häng doch einfach alles etwas tiefer. Anstatt das hier wie die Neuerfindung von geschnittenem Brot anzupreisen, schreib einfach, dass du das ganze für dich zum Lernen sehr nützlich findest. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 31.01.2013 ▲ |
|
|
|
|
Gary12345 | Gehen wird die Sache mal ganz gechillt an
Mit Return will ich das Ergebnis Round(?_Addieren!,2) angeben. Das wurde mir hier sogar im Thread gesagt. Damit wird eine Prozedur abgeschlossen.
Mit Set("Decimals",2) will ich die Nachkommastellen auf 2 kürzen und diese dann auf zwei Nachkommastellen runden. Siehe da keinen Fehler.
Wenn ich eine mathematische Include schreiben will, warum nicht gleich alltägliche Funktionen? Sehe da schon den Sinn.
Oder verstehe ich mit Return was falsches? Servus |
|
|
| |
|
|
|
Julian Schmidt | Gary12345 (31.01.13)
Mit Set("Decimals",2) will ich die Nachkommastellen auf 2 kürzen und diese dann auf zwei Nachkommastellen runden. Siehe da keinen Fehler.
Der Fehler liegt darin, das du damit den Anwender vorschreibst, dass er Zahlen mit zwei Nachkommastellen verwenden muss. Besser wäre, wenn du den Programmierer den Freiraum läst diese selbst zu definieren, ohne das er in deinen Include-Code herumwühlen muss. |
|
|
| |
|
|
|
Julian Schmidt | Gary12345 (31.01.13)
Wenn ich eine mathematische Include schreiben will, warum nicht gleich alltägliche Funktionen? Sehe da schon den Sinn.
Dann wenigsten Funktionen, welche gleichwertig mit XProfan-Funktionen sind.
In XProfan kannst du Beispielsweise auch Summen mit mehreren Summand ausrechnen. Bei dir können bislang nur maximal zwei Summanden angegeben werde, andernfalls muss man mehrere Funktionsaufrufe ineinander verknüpfen.
Du könntest nun hergehen und in deiner Funktion die angabe von unendlich vielen Summanden als Parameter erlauben. Dann würde deine Funktion unter Umständen sogar Vorteile bringen, weil man weniger Klammern setzten müsste. Falls du es versuchen willst schau dir %ParCount in Kombination mit einer whileloop-Schleife an. Die Parameter bekommt du dann per @!(N). |
|
|
| |
|
|
| |
|
- Seite 5 - |
|
|
Gary12345 | Das mit Set("decimals",2) und ROUND werde ich noch für den Benutzer anpassen. Keine Sorge.
Nur ich bin ein Anfänger und werde Problem für Problem löasen und nicht 10 auf einmal. Dazu sollte der COde für mich leicht verständlich sein. Und das mit mehrern Summanden kann auch irgendwann mal eingebaut werden. Keine Sorge
Servus |
|
|
| |
|
|
|
Gary12345 | Neues Update raus. Bei einigen Funktionen kann man decimals! und Rundungswert angeben. Bei Flächen und Volumen habe ich das bewusst nicht gemacht.
Besser? Irgendeinen Fehler im Code? |
|
|
| |
|
|
|
Julian Schmidt | Gary12345 (31.01.13)
Neues Update raus. Bei einigen Funktionen kann man decimals! und Rundungswert angeben. Bei Flächen und Volumen habe ich das bewusst nicht gemacht.
Ich würde generell aus allen Routinen Round und SetDecimals entfernen, aus den bereits oben genannten Gründen.
Gary12345 (31.01.13)
Dazu sollte der COde für mich leicht verständlich sein.
Dann solltest du mal anfangen deinen Code einzurücken. So ist er nämlich wirklich unübersichtlich und es ist eine Qual sich darin zurechzufinden.
Gary12345 (31.01.13)
Und das mit mehrern Summanden kann auch irgendwann mal eingebaut werden.
Bezog sich nicht nur auf Summanden, sondern auch auf Minuenden und und und.
Für was gibt es eig. die Info-Routinen? Schreib doch alles direkt in die Routinen als Kommentar so wie du es Teilweise auch schon gemacht hast. |
|
|
| |
|
|
|
Gary12345 | Ich habe teilweise kommentiert. Die Info ist nur zur Show da (wers braucht, kanns ja verwenden).
Ich habe die Include für die Öffentlichkeit geschrieben und für mich zum lernen. Das diese sich noch auf dem Anfängerniveau befindet, ist mir bewusst.
Ich überlege noch, ob ich ROUND und SetDecimals aus dem Code entfernen werden.
Ja ich weiss....meine Einrückungen
Servus |
|
|
| |
|
|
|
Jörg Sellmeyer | Ok - ich muss mich korrigieren. Hatte mich verlesen und gedacht, du sendest die Funktion Addieren mit Return zurück. Du hast aber die Variable Addieren! mit einem Namensraum-Tag versehen. Das ist hier nicht notwendig, da du Addieren! nur lokal in einer Prozedur deklarierst. Diese Variable ist außerhalb der Prozedur nicht sichtbar und benötigt keine Maskierung durch einen Namensraum. Wichtiger wäre es, die Funktion Addieren mit ?_Addieren zu versehen, da das ein Name ist, der im ganzen Programm bekannt ist, und zu Kollisionen führen kann, wenn jemand, die gleiche Bezeichnung für eine Funktion verwendet.
Die Einrückungen, kannst du dir hier im Editfeld übrigens vornehmen lassen und brauchst das dann nur noch in deinen Editor kopieren und abspeichern. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 01.02.2013 ▲ |
|
|
|
|
Gary12345 | Das würde dann bedeuten, dass wenn ich die Proc mit ?_Addieren bezeichnet habe, auch die Funktion so heißen muss? Also ?:Addieren(4,2,2,2) =6.00 ?
LG |
|
|
| |
|
|
|
Jörg Sellmeyer | Such mal in der Hilfe nach "Namensraum". In einer Include-Datei ist das nicht zwingendnotwendig, da der Anwender ja sehen kann, welche Funktionsnamen verwendet werden und seinen Quelltext oder den der Include ggf. anpassen kann. Ich nehme an, du meinst ?_Addieren(4,2,2,2) decimals!,runden! sollten Integerwerte sein. Man kann nicht auf 1,5 Stellen Runden und auch die Nachkommastellen können nur ganzzahlig sein. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 01.02.2013 ▲ |
|
|
|
|
Gary12345 | Neues Update raus. decimals und runden wurden jetzt auf integer gesetzt. Auch wurden den Prozeduren ein Namensraum gegeben (nicht die Infos, da ich überlege, ob ich die ausbaue).
Vieta wird jetzt offiziell nicht eingebaut. Werde jetzt an einem Taschenrechner arbeiten, um dann Beispielcodes mitliefern zu können. |
|
|
| |
|
|