- fchao-Sinus-Wechselrichter AliExpress    Werbung      
Ergebnis 1 bis 10 von 25

Thema: Ergebnis einer ungültiger Rechnung erkennen?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    HaWe
    Gast
    die Fehler muss man normalerweise vorher abfangen, indem man die Werte außerhalb der Definitionsbereiche der Funktion vorher ausschließt.

    z.B. bei
    Code:
    float x, y;
    y=1/x;
    Serial.print(y);

    muss es mathematisch und programmier-logisch richtig heißen:

    Code:
    float x, y;
    if(x!=0) {
       y=1/x;
       Serial.print(y);
    }
    else {
       Serial.print("ERROR! x=0 => NAN! Ungültiger Wertebereich!");
    }
    Genauso musst du deine x-Werte beim acos vorher prüfen und eingrenzen.

    Andere Programmiersprachen benutzen dafür eine Konstruktion wie
    try / catch / throw exception
    etc., die genau solche Fehler durch interne Routinen abfangen.

    In C geht das nicht, in C++ aber doch, ist aber nicht meine Baustelle.

    try catch throw exception C++:
    http://www.cplusplus.com/doc/tutorial/exceptions/
    http://www.tutorialspoint.com/cplusp...s_handling.htm

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Im Arduino-Kontext sind die C++ Exceptions ausgeschaltet, u.a. weil die Implementierung von Exceptions größere Programme produziert.

  3. #3
    HaWe
    Gast
    nur aus Interesse, C++ ist ja eh nicht mein Ding...
    Im Arduino-Kontext sind die C++ Exceptions ausgeschaltet, u.a. weil die Implementierung von Exceptions größere Programme produziert.
    tatsächlich? immer? oder nur bei AVRs?

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Zitat Zitat von HaWe Beitrag anzeigen
    tatsächlich? immer? oder nur bei AVRs?
    So weit ich weiss gilt das für alle Arduinos, definitiv auch für z.B. den DUE.

  5. #5
    HaWe
    Gast
    ok, das ist mal wieder ne Einschränkung, die ziemlich dämlich ist, wenngleich sie auch mich nicht persönlich betrifft.... Bild  

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Zitat Zitat von HaWe Beitrag anzeigen
    ok, das ist mal wieder ne Einschränkung, die ziemlich dämlich ist, wenngleich sie auch mich nicht persönlich betrifft.... Bild  
    Exceptions sind defaultmäßig aus, weil sie normalerweise nicht gebraucht werden. Ansonsten rede mit dem Compiler, er lässt sich (mittels Flag) überreden. Bild  

  7. #7
    HaWe
    Gast
    Ansonsten rede mit dem Compiler, er lässt sich (mittels Flag) überreden.
    DAS wäre dann vlt der richtige Tipp für fredyxx Bild  

  8. #8
    HaWe
    Gast
    @fredyxx:
    bevor du hier den Überblick verlierst...

    ich würde es so machen wie hier beschrieben:
    https://www.roboternetz.de/community...l=1#post629121

  9. #9
    HaWe
    Gast
    du hast Recht, es ist wirklich ein sehr ausgefallenes Spezial-Rand-Thema.
    Normalerweise unmschifft man das Problem ungültiger Funktionswertbereiche eben anders, wie bereits beschrieben.

    Übrigens ist wichtig für dich zu wissen:
    C-Programme können durchaus absolut unbemerkt vom Beobachter Myriaden von nans bei Berechnungen produzieren, ohne dass das Programm irgendwie in welcher Weise auch immer auffällig wird (sich aufhängt, abstürzt, was auch immer)
    - nur wenn du zufällig einen Wert genauer betrachten willst, und eine Ausgabe auf den Bildschirm machst, fällt dir plötzlich ein "nan" auf.

    Selber schon erlebt, bei einem Benchmark-Test, der für manche Benchmarks auf manchen Systemen unglaublich (unglaubhaft) schnell lief.
    Der Grund war, dass es zu nans kam, mit denen er einfach die folgenden Operationen nicht mehr durchgeführt hat, und daher war er damit ntl sehr schnell fertig und hat dann einfach die nächsten Programmschritte etwas früher als geplant in Angriff genommen... Bild  

Ähnliche Themen

  1. Methoden zum Erkennen einer Fehlerbedingung in Microcontroller-Systemen
    Von Dirk im Forum Software, Algorithmen und KI
    Antworten: 23
    Letzter Beitrag: 24.03.2016, 20:01
  2. Sensor oder Schalter zum erkennen einer PokerKarte
    Von Andreas1984 im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 1
    Letzter Beitrag: 25.12.2013, 01:17
  3. Division mit Nachkommastellen als Ergebnis???
    Von erik_wolfram im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 22.08.2011, 16:13
  4. Beenden einer ISR erkennen
    Von hacker im Forum C - Programmierung (GCC u.a.)
    Antworten: 12
    Letzter Beitrag: 12.08.2009, 17:34
  5. Wie Abzweigung einer Linie erkennen?
    Von p_mork im Forum Software, Algorithmen und KI
    Antworten: 2
    Letzter Beitrag: 16.08.2007, 10:39

Berechtigungen

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

    Werbung      Labornetzteil AliExpress