Programm mit vielen Bedingungen RICHTIG programmieren

Gast #2446508
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!
#2446518
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...)
Angehängte Dateien:
Gast #2447048
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.
Gast #2447296
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren