Funktion.src

  • Moinsen zusammen,


    ich wollte mal fragen für welche Zwecke ihr so die Funktion.src´s benutzt? Ich habe in meinem Programm eine Berechnung darüber laufen lassen. Ich habe sonst alles in den Modulen abgedeckt, möchte nun aber mehr mit der Funktion.src arbeiten.


    Würde mich über ein paar Vorschläge von euch freuen.


    Steuerung (alle KRC4)


    Sonnige Grüße

  • Schritt für Schritt zum Roboterprofi!
  • Hi,
    also eine Funktion hat einen Rückgabewert. Beispiel:


    ***
    DEFFCT INT AddIntegers(a: in, b: in)
    int a, b
    return (a+b)
    ENDFCT
    ***


    Beispiel Aufruf im KRL Programm:
    DEF MyProg
    int c
    c = AddIntegers(4,8)
    ;MachwasMit(c)
    END
    ***
    Verwendung z.B. falls du des öftereren wie in diesem Beispiel die Funition nutzen möchtest.


    Jetzt könntest Du sagen, dann nehme ich halt ein KRL-Modul als "Vorlage/Funktion" um zwei Zahlen zu addieren. Ja das geht auch, aber wo schreibst du denn das Ergebnis dann hin? Dazu benötigst / "verbrauchst" du dann z.B. eine globale Variable oder einen OUT Parameter.


    "Ich möchte nun aber mehr mit Funktionen arbeiten" ist wo möglich nicht immer der richtige Ansatz. Mann sollte sich immer überlegen, was man machen möchte und dann die passende Architektur auswählen. Wenn ich eine "Funktion" habe und ich keinen Rückgabewert benötige dann macht es keinen Sinn. Denn es muss ein Wert zurückgegeben werden. Wenn ich dann immer z.B einen Dummywert TRUE zurück gebe, dann könnte das der Aufrufer falsch interpretieren.


    z.B.:
    DEFFCT BOOL CheckState(a: in, b: in)
    ;Copyright Mr.Wrong
    bool a
    IF (a==b) THEN
    WHILE TRUE
    HALT
    MsgQuit("Fehler im Programm! Programm abwählen)
    ENDWHILE
    ENDIF
    RETURN TRUE ;Weil ich irgendetwas zurück geben muss und ansonsten wieder der Compiler meckert :)
    ENDFCT


    DEF MyProg()
    ...
    IF (CheckState(a, b) THEN
    ;Fahre zu Punkt 1
    else
    ;Fahre zu Punkt 2
    ENDIF


    Er wird den Punkt 2 nie anfahren. Aber der Benutzer der Funktion denkt dass er das macht ;)


    Viele Grüße

  • Hi zusammen.


    Danke für die Antworten. Ich habe mich in der Zwischenzeit mit der Thematik auseinander gesetzt und ein paar Funktionen angelegt, die mir ein paar Zeilen in der Programmen sparen.


    Kann geschlossen werden.


    Gruss Pat

  • Falls mal später einer die selbe Frage hat und hier nicht den Sinn versteht, folgende Funktionen sind immer ganz hilfreich und werden bei mir standardmäßig mit reingeladen, ob ich sie brauche oder nicht:


    - Modulo Funktion
    - Geschwindigkeitsregler für Punktgeschwindigkeiten
    - Vorpositionsberechner für Offset
    - Fehlermeldung an externe Steuerung oder Ausgabe aufs Panel


    VG

    Noch gestern standen wir vor dem Abgrund, und heute sind wir ein Schritt weiter!

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden