- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Rechnen mit Bascom

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    05.07.2009
    Beiträge
    22

    Rechnen mit Bascom

    Anzeige

    E-Bike
    Hallo ersma,

    ich hab da mal eine Frage:

    so eine Zeile:

    a = X+Y*3

    oder

    a= (x+Y)*4

    Geht das in Bascom nicht so wie in anderen BASIC-Dialekten?

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    44
    Beiträge
    1.273
    Hi!
    Bascom kann nur eine Rechenoperation pro Zeile. Das ist eine fiese Stolperfalle, die irgendwie nicht offensichtlich ist...
    Viele Grüße, William
    -> http://william.thielicke.org/

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253
    a=y*3
    a=a+x

    leider nur so rechenbar in bascom
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.01.2004
    Beiträge
    2.441
    Geht das in Bascom nicht so wie in anderen BASIC-Dialekten?
    Dabei sollte man vielleicht im Auge behalten, dass Bascom speziell auf die Programmierung von Microcontrollern ausgelegt ist. Da hat das meiner Meinung nach auch Vorteile.

    Wenn man statt "a= (x+Y)*4 "
    a = x +y
    a = a * 4
    schreibt, hat man einen etwas besseren Überblick, was man seinem kleinen Controller da überhaupt alles zumutet.

    Das ist bei obigem Beispiel zwar trivial, aber wenn es möglich ist mehrere Ausdrücke zu verketten, verketten viele Programmierer gleich massenweise Rechenoperationen in einer Zeile.

    Bei den Einzelschritten sieht man auch wo die einfachen Operationen, z.B. Addition stehen und wo man aufwendigere Operationen, z.B. Divisionen eventuell ganz sparen oder durch Bitverschiebung oder ähnliches optimieren kann.

    Besonders in kurzen Interrupt Routinen ist es ja schon interessant einen Eindruck zu behalten, wieviele Rechenschritte der Controller da machen muss.

    Ein weiteres Problem dürfte das Casting (Datentypumwandlung) sein.
    Da wäre es bei langen verketteteten Ausdrücken sicherlich auch schwieriger zu sehen, wo Daten durch Typzuweisung verloren gehen und die ganze Sache wäre wesentlich fehleranfälliger.

    Bei Basic Dialekten für den PC interessieren diese Punkte meist nicht.
    Da interessiert es meist niemanden, ob der Rechner ain paar Takte mehr oder weniger rödelt und ein paar MB mehr oder weniger Speicher belegt.
    Bei einigen Basic Dialekten muss man Datentypen nichtmals deklarieren und bei der Umwandlung wird automatisch immer der grösste Datentyp in den alles "reinpasst" verwendet.

    Das wäre für die Programmierung von Microcontrollern bei der man immer einen Blick auf die Resourcen haben sollte alles eher unschön.

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    15.06.2008
    Ort
    Rösrath
    Alter
    40
    Beiträge
    332
    Zitat Zitat von recycle
    Dabei sollte man vielleicht im Auge behalten, dass Bascom speziell auf die Programmierung von Microcontrollern ausgelegt ist. Da hat das meiner Meinung nach auch Vorteile.
    ...
    Das wäre für die Programmierung von Microcontrollern bei der man immer einen Blick auf die Resourcen haben sollte alles eher unschön.
    Naja, trotz der eventuellen Vorteile ist es letztendlich doch eine nervige Einschränkung, die zumindest bei mir einen Anteil daran hatte, mich zu C zu bringen.

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.01.2004
    Beiträge
    2.441
    Naja, trotz der eventuellen Vorteile ist es letztendlich doch eine nervige Einschränkung, die zumindest bei mir einen Anteil daran hatte, mich zu C zu bringen.
    Klar, was ich da geschrieben habe ist ja auch nur meine persönliche Meinung.
    Welche Programmiersprache man lieber mag ist sicherlich immer geschmacksache und welche am besten geeignet ist hängt auch vom Anwendungszweck ab.

    Ich mag Bascom Basic, weil man da sehr wenig Lern- und Einarbeitungszeit braucht.
    Für einfache Sachen, reichen da ja oft schon einfache Englischkenntnisse und die Liste der Befehle und Beispiele in der Online-Hilfe.
    Wenn man wie ich mit so wenig Kenntnissen and die Programmierung ran geht, finde ich es halt hilfreich, wenn der Compiler einen vor Fehlern und Resourcenverschwendung schützt.

    In C muss man sich da meiner Meinung nach schon wesentlich mehr einarbeiten, und wenn ein Programmierer weiss was er tut, ist es sicherlich ok, wenn er mehrere Schritte zusammenfassen und verknüpfen kann.

    Vielleicht steckt da bei mir auch ein bischen Schadenfreude mit drin
    Ich musste früher öfter mal in Quellcodes von PC Programmierern reinsehen und es hat mich oft genervt, wenn die zig Funktionen in einer Zeile zusammengefasst und verschachtelt haben, und kaum noch nachvollziehbar war, was da alles abgeht.

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253
    es ist auf alle fälle nervig, aber "so what"
    hab gerade n projekt, bei dem mit funktionen 5ten grades
    als single gerechnet wird, der code dazu ist recht
    "abenteuerlich" und nicht gerade einfach zu lesen ... ist halt so
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  8. #8
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Die Einschränkung auf nur eine Operation pro Zeile macht den Compiler einfach, macht aber den Quellcode unübersichtlicher und auch den erzeugten Code länger und langsamer. Ein einigermaßener Compiler ist in aller Regel besser dabei solche mathematischen Ausdrücke aufzuteilen und kann auch noch etwas optimieren indem nicht alle Zwischenergebnisse ins RAM kommen. Wenn man unbedingt will kann man sich ja auf ein operation pro Zeile beschränken, wenn man wirklich die volle Kontrolle haben will.

    Einen Vorteil für den Benutzer kann ich da beim besten Willen nicht sehen. Für mich war das auch ein Hauptgrund mich nicht so viel mit Bascom zu beschäftigen.

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.11.2006
    Ort
    olargues
    Beiträge
    776
    ... und vielleicht zum thema passend:

    sollten double verwendet werden , die nachher mit integer (oder long) verrechnet werden sollen, scheint immer der schritt über eine temporäre single nötig zu sein.... sonst kommt nur müll raus

    gruss klaus

  10. #10
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    29.01.2005
    Alter
    52
    Beiträge
    294
    Zitat Zitat von Besserwessi
    und auch den erzeugten Code länger und langsamer.
    Das glaube ich nicht. Der Compiler muß die Rechenoperationen sowieso in kleine Häppchen (Assembler!) zerlegen.

    Und ob ich das nun in einer oder 2 Zeilen machen, ist völlig irrelevant.

    Zu meiner Schulzeit (vor gefühlten 150 Jahren) haben wir das ausprobiert, mit C.

    Der auslöser war der "naive" Programmierstil eines Schulkamaraden.
    Der Lehrer meinte damals das es egal sein und wir es ausprobieren sollen.
    Nun, wir haben es getan.

    Ergebnis: Complimiertes Programm genau gleich lang und gleich schnell.

    Gruß Dnerb
    Das Gegenteil von "gut" ist "gut gemeint"!

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

Solar Speicher und Akkus Tests