Italia
Include

Mathematik leicht gemacht - INCLUDE mit leichtem Code.

 

Gary12345
Ciao,

ich habe eine Include basierend auf leichtem XPROFAN Code erstellt.

Download

Funktionen aus dem Code ablesbar!

10 kB
Hochgeladen:01.02.2013
Downloadcounter253
Download
 
MfG
Gary12345
27.01.2013  
 



Tip:

Du schreibst z.B.:
KompilierenMarkierenSeparieren
Proc ADreieck

    parameters a!,b!
    declare ADreieck!
    set("decimals",2)
    ADreieck! = 0.5*a!*b!
    ROUND(ADreieck!,2)
    return

E

richtiger wäre:
KompilierenMarkierenSeparieren
Proc ADreieck

    parameters a!,b!
    declare ADreieck!
    set("decimals",2)
    ADreieck! = 0.5*a!*b!
    return ROUND(ADreieck!,2)

EndProc


oder gleich:
KompilierenMarkierenSeparieren
Proc ADreieck

    parameters a!,b!
    set("decimals",2)
    return ROUND(0.5*a!*b!,2)

EndProc

 
27.01.2013  
 




Gary12345
Warum? Scheint doch alles richtig zu gehe? Ich verstehe einfach das return nicht ganz, obwohl ich es tausendmal in der Aiuto nachgelesen habe o.O
 
XProfan X2
MfG
Gary12345
27.01.2013  
 




Jörg
Sellmeyer
Da sind wir alle froh, dass die ganzen Rechenoperationen nicht mehr mit Funktionen corsa werden müssen, sondern direkt mit den Operanden erledigt werden können und du willst sie wieder einführen?

Return kehrt aus einer Prozedur direkt an der Stelle zurück in das Hauptprogramm. Wenn man Nach Return einen Wert schreibt, wird dieser Wert als Ergebnis aus der Prozedur zurückgeliefert:
KompilierenMarkierenSeparieren
Proc Ergebnis

    Parameters Wert$
    Declare Rueckgabe$
    Rueckgabe$ = "Nix passiert"

    If Wert$ = "Ja"

        Return Wert$

    ElseIf Wert$ = "Nein"

        Return "Da könnte ja jeder kommen"

    Else

        Return Rueckgabe$

    EndIf

EndProc

Cls
Print Ergebnis("Ja")
Print Ergebnis("Nein")
Print Ergebnis("Vielleicht")
WaitInput

Das ist eine wenig elegante Methode, zeigt aber, wie Return funktioniert.
Besser wäre gewesen, in der If-Abfrage den String Rueckgabe$ mit dem gewünschten Ergebnis zu bestücken und ganz am Ende die Prozedur mit Return Rueckgabe$ zu verlassen:
KompilierenMarkierenSeparieren
Proc Ergebnis

    Parameters Wert$
    Declare Rueckgabe$
    Rueckgabe$ = "Nix passiert"

    If Wert$ = "Ja"

        Rueckgabe$ = Wert$

    ElseIf Wert$ = "Nein"

        Rueckgabe$ = "Da potuto ja jeder kommen"

    EndIf

    Return Rueckgabe$

EndProc

Cls
Print Ergebnis("Ja")
Print Ergebnis("Nein")
Print Ergebnis("Vielleicht")
WaitInput
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
27.01.2013  
 




Gary12345
Ciao,
KompilierenMarkierenSeparieren
'Include programmiert von Gary12345

Proc Summe

    parameters a!,b!
    declare Summe!
    set("decimals",2)
    Summe! = a!+b!
    return ROUND(Summe!,2)

EndProc

Proc Minus

    parameters a!,b!
    declare Minus!
    set("decimals",2)
    Minus! = a!-b!
    return ROUND(Minus!,2)

EndProc

Proc Teilen

    parameters a!,b!
    declare Teilen!
    set("decimals",2)
    Teilen! = a!/b!
    return ROUND(Teilen!,2)

EndProc

Proc Multiplizieren

    parameters a!,b!
    declare multiplizieren!
    set("decimals",2)
    multiplizieren! = a!*b!
    return ROUND(Multiplizieren!,2)

EndProc

Proc Wurzel

    parameters a!
    declare Wurzel!
    set("decimals",2)
    Wurzel! = sqrt(a!)
    return Round(Wurzel!,2)

EndProc

Proc ADreieck

    parameters a!,b!
    declare ADreieck!
    set("decimals",2)
    ADreieck! = 0.5*a!*b!
    return ROUND(ADreieck!,2)

EndProc

Proc AQuadrat

    parameters a!
    declare Quadrat!
    set("decimals",2)
    Quadrat!=a!*a!
    return ROUND(Quadrat!,2)

EndProc

Proc ARechteck

    parameters a!,b!
    declare Rechteck!
    set("decimals",2)
    Rechteck! = a!*b!
    return ROUND(Rechteck!,2)

EndProc

Proc AKreis

    parameters a!
    declare Kreis!
    set("decimals",2)
    Kreis! = @Pi()*a!
    return ROUND(Kreis!,2)

EndProc

Proc ATrapez

    parameters a!,c!,h!'Trapezformel: 0.5*(a+c)*höhe! (h!)
    declare Trapez!
    set("decimals",2)
    Trapez! = 0.5*(a!+c!)*h!
    return ROUND(Trapez!,2)

EndProc

Proc AParallelogramm

    parameters g!,h!
    declare Parallelogramm!
    set("decimals",2)
    Parallelogramm! = g!*h!'Grundfläche*Höhe
    return ROUND(Parallelogramm!,2)

EndProc

Proc VWürfel

    Parameters a!
    declare Würfel!
    set("decimals",2)
    Würfel! = a!*a!*a!
    return ROUND(Würfel!,2)

EndProc

Proc VQuader

    Parameters a!,b!,c!
    declare Quader!
    set("decimals",2)
    Quader! = a!*b!*c!
    return ROUND(Quader!,2)

EndProc

Proc VKugel

    parameters r!
    declare Kugel!
    set("decimals",2)
    Kugel! = 4/3*@PI()*r!*r!*r!
    return ROUND(Kugel!,2)

EndProc

Proc VKegel

    parameters r!,h!
    declare Kegel!
    set("decimals",2)
    Kegel! = 1/3*@PI()*r!*r!*h!
    return ROUNDss=s2>(Kegel!,2)

EndProc


Sprich, das wäre dann richtig?

LG
 
XProfan X2
MfG
Gary12345
28.01.2013  
 



iF (27.01.13)


...

richtiger wäre:
KompilierenMarkierenSeparieren
Proc ADreieck

    parameters a!,b!
    declare ADreieck!
    set("decimals",2)
    ADreieck! = 0.5*a!*b!
    return ROUND(ADreieck!,2)

En
/a>

oder gleich:
KompilierenMarkierenSeparieren
Proc ADreieck

    parameters a!,b!
    set("decimals",2)
    return ROUND(0.5*a!*b!,2)

EndProc


...



Ergo?
 
28.01.2013  
 




Gary12345
Nimm Option2. Die ist zwar länger, aber scheint mir leichter zu sein. Dann ist mein Code doch richtig.

Werde dann vll nochmals nachfragen, weil ich auf ein Problem gestoßen bin. Erstmal auf Handarbeit nachrechnen und dann den Fehler suchen (In Mathe bin ich ja nich der beste ;) )

Danke!
 
XProfan X2
MfG
Gary12345
28.01.2013  
 




Gary12345

KompilierenMarkierenSeparieren
Proc Lösungsformel1'Wert bei -b-...

    parameters a!,b!,c!
    declare Lösungsformel!
    set("decimals",2)
    Lösungsformel! = (-b!-sqrt(b!*b!-4*a!*c!))/(2*a!)
    return ROUND(Lösungsformel!,2)

En
/a>

Ich definiere, was ich machen will:

1. Was ist eine quadratische Gleichung?

ax²+bx+c=0

Beispiel: 
3x²+2x+4=0

2. Wie kann man solche quadratischen Gleichungen ausrechnen?

Da gibt es eine offizielle Formel (genannt Lösungsformel der quadratischen Gleichungen):

-b+Wurzel(b²-4⋅a⋅c) / 2*a
-b-Wurzel(b²-4*a*c) / 2*a

Soweit verstanden?

3. Wie kann ich das in XPROFAN umwandeln?

Oben habt ihr bisher geschriebenen Code per diese Formel. Nun liefert sie falsche Werte und stürzt bei negativen Werten ab? (EDIT: Stürzt nicht nur bei negativen Werten ab!)

Habe das in praktischer Form versucht (also handschriftlich), komme jedoch immer noch nicht zur Lösung des Problems (Umwandlung in XPROFANCODE).

Testwert, wo es bei mir abstürzt:
KompilierenMarkierenSeparieren
var test1! = Lösungsformel1(2,3,4)
print test1!

Danke per eure Aiuto schon mal im Vorraus!
 
MfG
Gary12345
28.01.2013  
 




Dieter
Zornow
Das set("decimals",2) braucht man doch nicht in jeder proc. Einmal am Anfang außerhalb der Procs einfügen reicht doch.
KompilierenMarkierenSeparieren
set("decimals",2)

Proc Summe

    parameters a!,b!
    return ROUND( a!+b!,2)

EndProc

proc .......

endproc

proc ........

endproc

usw.

Dann potuto der User auch noch als Option die Anzahl der Nachkommastellen festlegen.

an& = readini .........
set("decimals",an&)
 
XProfan X2
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2
28.01.2013  
 




Thomas
Freier
Ich gehe sogar soweit, dass weder DECIMALS noch ROUND etwas in der PROC zu suchen zu haben. Das ist im Programm zu regeln. Berechnungen sollten max. Nachkommastellen haben um weitere Berechnungen nicht zu verfälschen.
 
Gruß Thomas
Windows XP SP2, XProfan X2
28.01.2013  
 




Gary12345
Jo Danke. Ich würde ehrlicherweise erstmal noch paar Funktionen einbauen, danach potuto ich mich um dieses Problem kümmern.

Hat jemand eine Ahnung von quadratischen Gleichungen. Post siehe 2-3 Beiträge circa mir

LG
 
XProfan X2
MfG
Gary12345
28.01.2013  
 



Ehm?

r!=b!+sqrt(b!*b!-4*a!*c!) / 2*a!
 
28.01.2013  
 




Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

49.678 Views

Untitledvor 0 min.
Erhard Wirth14.06.2024
XProfan Newbie18.02.2023
rafl21.06.2022
Member 229993121.10.2019
Di più...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie