- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 28

Thema: if then else Schleife möglich mit goto zu verlassen?

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #8
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    25.03.2006
    Ort
    Hinsdorf
    Alter
    50
    Beiträge
    381
    Hallo Jungs!

    Danke für die vielen konstruktiven Anregungen!

    @vitis
    "Es bleibt eine Verzweigung.
    Wenn man im Forum die richtigen Termini
    verwendet hilft das den Lesern die Fragen
    auch zu verstehen und die Chance auf qualitative
    Hinweise erhöht sich. "
    => da gebe ich Dir Recht und das war mein Fehler!

    in welchen Teilen siehst Du bei mir einen schlechten "Programmierstil"? => Bsp's. bitte

    Hier noch einmal ein etwas bessere Form meines Codes:
    Code:
    Case 2 : If Rel_kue_auf = 0 And Fenster_kue_zu = 0 Then
                      Toggle Rel_kue_zu
                     Fenster_kue_auf = 0
                      Else
                      Twi_daten = 0
                      Goto Ende
                      End If
    
                       If Rel_kue_zu = 1 And Flag_kue_zu_2 = 0 And Flag_kue_auf_2 = 0 Then
                          Flag_kue_zu_1 = Rolltime + Timecount
                          Elseif Rel_kue_zu = 1 And Flag_kue_auf_2 > 0 Then
                          Flag_kue_zu_2 = Rolltime - Flag_kue_auf_2
                          Flag_kue_zu_1 = Timecount + Flag_kue_zu_2
                          Flag_kue_auf_2 = 0
                       End If
    
                       If Rel_kue_zu = 0 And Flag_kue_zu_2 > 0 Then
                          Elseif Rel_kue_zu = 1 And Flag_kue_zu_2 > 0 Then
                          Flag_kue_zu_1 = Timecount + Flag_kue_zu_2
                          Flag_kue_zu_2 = 0
                          End If
                       If Rel_kue_zu = 0 And Flag_kue_zu_1 > 0 Then
                          Flag_kue_zu_2 = Timecount
                          Flag_kue_zu_2 = Flag_kue_zu_1 - Flag_kue_zu_2
                       End If
                     Twi_daten = 0
    
           Case 22 : If Rel_kue_auf = 0 And Fenster_kue_zu = 0 Then
                      Toggle Rel_kue_zu
                     Fenster_kue_auf = 0
                      Else
                      Twi_daten = 0
                      Goto Ende
                      End If
    
                       If Rel_kue_zu = 1 And Flag_kue_zu_2 = 0 And Flag_kue_auf_2 = 0 Then
                          Flag_kue_zu_1 = Rolltime + Timecount
                          Elseif Rel_kue_zu = 1 And Flag_kue_auf_2 > 0 Then
                          Flag_kue_zu_2 = Rolltime - Flag_kue_auf_2
                          Flag_kue_zu_1 = Timecount + Flag_kue_zu_2
                          Flag_kue_auf_2 = 0
                       End If
    
                       If Rel_kue_zu = 0 And Flag_kue_zu_2 > 0 Then
                          Elseif Rel_kue_zu = 1 And Flag_kue_zu_2 > 0 Then
                          Flag_kue_zu_1 = Timecount + Flag_kue_zu_2
                          Flag_kue_zu_2 = 0
                          End If
                       If Rel_kue_zu = 0 And Flag_kue_zu_1 > 0 Then
                          Flag_kue_zu_2 = Timecount
                          Flag_kue_zu_2 = Flag_kue_zu_1 - Flag_kue_zu_2
                       End If
                     Twi_daten = 0
                      Ende:                         <<<==== hier ist das ende
    
    end select
    Was wollte ich damit bezwecken?:

    tritt eine Case-Fall ein:
    case 22: If Rel_kue_auf = 0 And Fenster_kue_zu = 0 Then
    Toggle Rel_kue_zu
    Fenster_kue_auf = 0
    Else
    Twi_daten = 0
    Goto Ende
    End If

    und die If-Anweisung ist nicht wahr dann sollen Daten in "Twi_daten " gelöscht werden und es soll aus der Case-Verzweigung gesprungen werden. Somit müssen die weiteren Cases nicht durch gegangen werden.

    Wie kann ich nun das besser programmieren, besser wie komme ich aus der Case-Verzweigung heraus?

    Vielleicht habe ich die Struktur und/oder den Ablauf eines Programms noch nicht verstanden!
    Laut Simulation werden alle Schritte, die man proggt, doch hintereinander abgearbeitet. Was passiert nun in einer Case-Verzweigung?

    @ for_ro
    Danke für die tröstenden Worte


    wieso ist ein einzelnes Goto schlechter Programmierstil? Du weißt doch gar nicht, ob sein Programm aus Spaghetti-Code besteht, oder dies eine Notbremse zum Verlassen eines Programmteils ist.
    und genau darum geht es!!!!

    Wenn die Case-Verzweigung angesprungen wird und die Bedingungen darin nicht erfüllt werden, soll einfach aus der Verzweigung gesprungen werden und die weiteren Programmteile abgearbeitet werden!

    Ich hänge noch das gesamte Prog an und bitte!!!! sagt was ich am Stil ändern sollte!

    Danke für Eure Hilfen, denn nur so lerne ich es besser und schneller!!!
    Angehängte Dateien Angehängte Dateien

Berechtigungen

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

LiFePO4 Speicher Test