Häääh, ich versteh nur Bahnhof. Könntest Du bitte das Formel-/Bedingungswirrwar mal näher erläutern. Was soll das alles heißen?
Guten Tag,
Ich bin neu auf dem Gebiet der programmierung neu und muss für die Uni eine Bedingung in ST umsetzen. Dafür reichen jedoch meine programmierkenntnisse nicht aus.
Die Bedingung lautet:
....0, u1=0&u2=1
y=1, u1=1&u2=0
....2, sonst
Ich möchte von euch keine Lösung jedoch wäre eine erklärung und eventuell eine kleine einstiegshilfe sehr nett![]()
Geändert von Tobias_h (11.10.2018 um 16:42 Uhr)
Häääh, ich versteh nur Bahnhof. Könntest Du bitte das Formel-/Bedingungswirrwar mal näher erläutern. Was soll das alles heißen?
Also ich würde das so verstehen:
y soll 0 sein, wenn u1 = 0 und u2 = 1
y soll 1 sein, wenn u1 = 1 und u2 = 0
y soll 2 sein, für alle anderen Kombinationen
@Tobias_h
kannst du das so bestätigen
Als Programmiertipp:
Bitte selber füllenCode:IF ... THEN ... ELSIF .... THEN ... ELSE ... END_IF![]()
Geändert von marlob (11.10.2018 um 15:56 Uhr)
Tobias_h (11.10.2018)
entschuldigt ich dachte die leerzeichen werden beibehalten. Da wir erst eine vorlesung hatten und ich es bis Montag brauche, kann ich auch nicht genau sagen worum es geht aber ich würde es auch so verstehen, dass y 0 sein soll wenn...
Ich versuche es mal mit der If bedingung und würde sagen
IF u1=0 Then
IF u2=1 Then
y=0;
End_IF
ELSIF u1=1 THEN
IF u2=0 THEN
y=1;
END_IF
ELSE
y=2
END_IF oder END_ELSE (weiß nicht ob es END_ELSE gibt)
Bin mir auch nicht sicher ob ich 2 IF´s untereinander schreiben kann oder ob ich IF u1=0 & u2=1 Then y=0 schreiben müsste
Geändert von Tobias_h (11.10.2018 um 16:53 Uhr)
Ein END-ELSE gibt es nicht nur ein END_IF.
Du machst es Dir zu kompliziert, eine If-Abfrage kann aus mehreren Bedingungen bestehen die dann mit z.B. AND oder OR verknüpft werden. Du musst das Beispiel von Marlob nur mit Leben füllen, dann hast Du die Lösung.
Ein Tipp noch, wenn Du Code-Schnipsel posten willst nutz den Button # und füg Dein Programm da dann ein, dann passt das mit der Optik auch besser.
Geändert von oliver.tonn (16.10.2018 um 07:08 Uhr)
Tobias_h (11.10.2018)
Hallo Tobias
Dein Code ist allerdings anders als im Post #1 formuliert
z.B. u1 = 0 und u2 =0
Somit bleibt y unverändertCode:IF u1=0 Then -- Bediengung erfüllt IF u2=1 Then -- Bedingung nicht erfüllt y=0; End_IF ELSIF u1=1 THEN -- der Zweig wird nicht mehr betrachtet, da die erste Bedingung bereits erfüllt war IF u2=0 THEN y=1; END_IF ELSE -- der Zweig wird nicht mehr betrachtet, da die erste Bedingung bereits erfüllt war y=2 END_IF
Holger
Danke für den Tip
Dann müsste es so richtig sein ?Code:IF u1=0 And u2=1 THEN y=0; ELSIF u1=1 AND u2=0 THEN y=1; ELSE y=2; END_IF
So wäre es korrekt.
Was du jetzt noch Überlegen könntest, welche Kombination am häufigsten Auftritt und diese als erste Bedingung legen um Zeit zu sparen.
Nachdem jetzt Klarheit herrscht, hier noch ein Spass für die Jäger der verlorenen Mikrosekunde:
Geht natürlich nur, wenn u1, u2 keine anderen Werte als 0 und 1 annehmen können.Code:IF (u1 XOR u2)=1 THEN y:=u1; ELSE y:=2; END_IF
Lesezeichen