- 12V Akku mit 280 Ah bauen         
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 26

Thema: Funktionen in bascom deklarieren?

  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    02.11.2005
    Ort
    Dortmund
    Alter
    31
    Beiträge
    1.641

    Funktionen in bascom deklarieren?

    Anzeige

    E-Bike
    Hallo,
    mein problem ist, dass ich C aufgrund der Möglichkeit der Funktionen geil finde, aber mit dem ganzen Bitgeschubse (rofl) nicht klar komme. Bascom wiederum hat das problem, dass man schwierig Funktionen reinbringen kann.

    Meine Frage: Kann mir jemand vielleicht zwei Codeschnipsel zum verständnis schreiben (und kommentieren), indem a) in einer eigenen Datei ne Funktion deklariert wird, die die übergebenen Werte x und y multipliziert und b) im Programm selbst die Funktion aufgerufen wird, die Werte übergeben werden und z (das produkt von x und y) abgerufen wird?

    Ich hab mir das zwar in der Bascomhilfe angeguckt, blick das aber nicht.

    Wichtig wäre für mich, dass alles in Basic (also kein Assembler) geproggt wird, da ich nicht sehr viel Lust hätte, dafür jetzt noch extra Assembler zu lernen. Wenn das jemand für mich machen könnte, wäre das supernett!
    o
    L_
    OL
    This is Schäuble. Copy Schäuble into your signature to help him on his way to Überwachungsstaat!

    http://de.youtube.com/watch?v=qV1cZ6jUeGE

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Code:
    '--------------------------- deklaration ------------------
    Declare Function Multiplizieren(x As Byte , Y As Byte) As Word
    
    
    Dim Wert1 As Byte
    Dim Wert2 As Byte
    Dim Ergebnis As Word
    
    DO
        wert1   = 125
        wert2  =  48
        ergebnis = multiplizieren(wert1, wert2)    ' Aufruf
        print  ergebnis
        LOOP
    
    END
    
    
    '--------------------------- die funktion selbst------------------
    Function Multiplizieren(x As Byte , Y As Byte) As Word
     Multiplizieren = X * Y
    end function
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    02.11.2005
    Ort
    Dortmund
    Alter
    31
    Beiträge
    1.641
    Danke. Diese

    Declare Function Multiplizieren(x As Byte , Y As Byte) As Word

    muss das mit in mein Hauptprogramm oder kann ich das auch in der externen Datei hinschreiben?
    o
    L_
    OL
    This is Schäuble. Copy Schäuble into your signature to help him on his way to Überwachungsstaat!

    http://de.youtube.com/watch?v=qV1cZ6jUeGE

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    23.04.2007
    Ort
    stuttgart
    Beiträge
    1.127
    danke fuer die antwort.. das wollte ich auch grade fragen ..

    und noch ne frage... wie kann ich eine funktion declarieren, die nur aufgerufen wird,und dann ein paar ports setzt oder aehnliches, ohne irgendwelche werte zuruckzugeben.... also ohne dieses As Integer oder sowas in der art...

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.09.2005
    Beiträge
    276
    Als
    Sub Ohneworte()
    Gento

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.07.2004
    Beiträge
    138
    Hallo,

    eine "Funktion", die etwas tut, aber keinen Wert zurückgibt, heißt Prozedur oder Unterprogramm, in Bascom mit SUB ... ENDSUB realisiert.
    Prozeduren können wie Funktionen auch Parameter besitzen, die an die Prozedur übergeben werden (und ggf. von der Prozedur verändert werden können).

    Das Verständnis von Prozeduren mit oder ohne Parametern ist wichtig, wenn man ein Programm modular aufbauen möchte (oder arbeitsteilig vorgeht). Es lohnt sich also, darüber nachzudenken, viele Programme und Algorithmen werden dadurch erst gut realisierbar und verständlich.
    Prozeduren und Funktionen gibt es in jeder besseren (Hoch-)Sprache!

    MfG

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    23.04.2007
    Ort
    stuttgart
    Beiträge
    1.127
    ok. das mit den subs hab ich jetz verstanden.. allerdings hab ich da noch irgednwie syntaxprobleme... folgendes beispiel:
    Code:
    Declare Sub Greifer_auf()
    Sub Greifer_auf()
         M_5_v = 1
         M_5_e = 1
         M_5_r = 0
       End Sub
    '#######################################################################
    Do
    B = Waitkey(#4)                                             'Motor 6'
    Select Case B
    Case "a" :
    Greifer_auf
    Case "d" 
    ......
    wenn ich das so schriebe wird die sub immer ausgeführt auch wenn kein "a" eingegeben wird....
    der ursprüngliche code war so:
    Code:
    Do
    B = Waitkey(#4)                                             'Motor 6'
    Select Case B
    Case "a" :
         M_5_v = 1
         M_5_e = 1
         M_5_r = 0
    Case "d" :
    .....
    im prinzip is das doch das gleiche oder was hab ich falsch gemacht...
    beim ursprünglichen beisiel werden die ports nur gesetzt wenn man die taste drückt, bei der variante mit sub tut er es sobald man das programm auf den controller ueberspielt... wo is mein denkfehler ?? danke shcon mal...

  8. #8
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Holla !

    De Sub selbst muß irgendwo hinten (nach "END") stehen.

    declare sub subfunc()


    DO
    subfunc() ' AUFRUF sub
    LOOP
    END

    sub subfunc()
    .. tu was
    end sub
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    02.11.2005
    Ort
    Dortmund
    Alter
    31
    Beiträge
    1.641
    Genau genommen kann man mit ner SUB durchaus Werte zurückerhalten. Ich kann die Sub ja einfach ne Variable verändern lassen und die danach mit dem Hauptprogramm oder ner anderen Sub aufrufen. Aber was ich noch nicht ganz verstanden habe, kann ich den Code

    Code:
    Sub Greifer_auf()
         M_5_v = 1
         M_5_e = 1
         M_5_r = 0
       End Sub
    , also die eigentliche Funktionsanweisung (was macht meine Funktion) auch in eine externe Datei (lib oder bas???) reinschreiben wie in c?
    o
    L_
    OL
    This is Schäuble. Copy Schäuble into your signature to help him on his way to Überwachungsstaat!

    http://de.youtube.com/watch?v=qV1cZ6jUeGE

  10. #10
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Beides geht. Nur LIB bzw. LBX ist Assembler. das wirst du nicht wollen.

    Schreib am besten 2 externe Dateien:
    EIne mit der Declare .......,
    und eine mit der Sub selbst.
    #----------------------------------------
    'das steht ganz vorne im Hauptprogramm
    $include "Meine_deklarationen.bas"

    ' und das dann irgendwo hinten, nach "END"
    $include "Meine_funktionen.bas"
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress