Forum: Compiler & IDEs Programm mit vielen Bedingungen RICHTIG programmieren


von Sven (Gast)


Lesenswert?

Hi
ich habe einen Ablauf, den ich in ein c-Programm stecken möchte:

Aktion 1

Ergebnis von Aktion 1 true oder false

    Wenn true > Aktion 1

    Wenn false > Aktion 2

        Aktion 2 erfolgreich ausgeführt
        ja > Aktion 3
        nein > Aktion 2

            Aktion 3 erfolgreich ausgeführt
            ja > Aktion 4
            nein > Aktion 3

            Aktion 4 erfolgreich ausgeführt
            ja > Warten auf Ereignis
            nein > Aktion 4 bis erfolgreich ausgeführt

EREIGNIS auswerten
je nach dem Ergebnis des Ereignis geht es bei Aktion 1 oder Aktion 2 
weiter.

Ich habe nun Programmiertechnisch mich total in lauter if-else Schleifen 
verhaspelt und mein Programm findet immer ein Schlupfloch zwischen 
Aktion 3 und Aktion 1 und nun wollte ich es mit Variablen sperren und 
freischalten...

Nun bin ich auf die Idee gekommen es wäre besser euch zu fragen, wie man 
es professionell macht nun nicht nur "Hinpuscht".
Ich wäre euch sehr dankbar, wenn mir wer helfen könnte!

von Heiko (Gast)


Lesenswert?


von Εrnst B. (ernst)


Angehängte Dateien:

Lesenswert?

Zeichne dir zuerst (Papier&Bleistift) auf, wie das Programm wann was 
machen soll.
Dann das Programm entsprechend programmieren (Eine Variable speichert 
den aktuellen Zustand, die Hauptschleife ruft entsprechend des Zustandes 
eine Funktion auf, die entscheidet wann es Zeit ist den Zustand zu 
wechseln...)

von Jasch (Gast)


Lesenswert?

Sven schrieb:
> Hi
> ich habe einen Ablauf, den ich in ein c-Programm stecken möchte:
>
> Aktion 1
>
> Ergebnis von Aktion 1 true oder false
>
>     Wenn true > Aktion 1
>
>     Wenn false > Aktion 2
>
>         Aktion 2 erfolgreich ausgeführt
>         ja > Aktion 3
>         nein > Aktion 2
>
>             Aktion 3 erfolgreich ausgeführt
>             ja > Aktion 4
>             nein > Aktion 3
>
>             Aktion 4 erfolgreich ausgeführt
>             ja > Warten auf Ereignis
>             nein > Aktion 4 bis erfolgreich ausgeführt
>
> EREIGNIS auswerten
> je nach dem Ergebnis des Ereignis geht es bei Aktion 1 oder Aktion 2
> weiter.

Statemachine wie schon vorgeschlagen.

Oder so:

while (Aktion 1)
    /* EMPTY */ ;
while (!Aktion 2)
    /* EMPTY */ ;
while (!Aktion 3)
    /* EMPTY */ ;
while (!Aktion 4)
    /* EMPTY */ ;
Warten auf Ereignis
Ereignis auswerten
Wie Du nun wieder zu Aktion 1 oder Aktion 2 kommst überlasse ich Dir... 
;-)

Alle Fehler sind meine.

von Ulrich E. (ulrich_e)


Lesenswert?

Statemachine for the win.
Das funktioniert auf jedenfall und ist sehr professionel.
Außerdem kann man sehr leicht debuging machen.
Du brauchst nur ein interface um den Zustand auszulesen oder um das 
device in einen bestimmten zustand zu setzen.

von Daniel Held (Gast)


Lesenswert?

Statemachine ist gut, allerdings würde ich mit Switch-Case arbeiten. Hat 
den Vorteil auch noch außerhalb der Statemachine Funktionen auszuführen 
wohingegen das Prog sonst in einer while "hängen" bleibt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.