| |
|
|
- Page 1 - |
|
Gary12345 | Ciao,
ich habe eine Include basierend auf leichtem XPROFAN Code erstellt.
Download
Funktionen aus dem Code ablesbar! |
|
|
| |
|
|
|
| |
|
- Page 4 - |
|
Jörg Sellmeyer | Du musst dir einige Sachen in der Aiuto 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
En /a>
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 per 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 per 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 finora 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). |
|
|
| |
|
|
| |
|
- Page 5 - |
|
|
Gary12345 | Das mit Set("decimals",2) und ROUND werde ich noch per den Benutzer anpassen. Keine Sorge.
Nur ich bin ein Anfänger und werde Problem per Problem löasen und nicht 10 auf einmal. Dazu sollte der COde per 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 Stabilire.
Gary12345 (31.01.13)
Dazu sollte der COde per 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 per die Öffentlichkeit geschrieben und per mich zum lernen. Das diese sich noch auf dem Anfängerniveau è, 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 necessario 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 per 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 Aiuto nach "Namensraum". In einer Include-File 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. |
|
|
| |
|
|