Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
ich war der Ansicht das ganze einigermaßen verstanden zu haben, nur sagen meine Korrekturen vom Übungsblatt etwas anderes.
Kann mir vielleicht mal jemand an nem Beispiel zeigen wie ich so ein wp-Kalkül berechne?
Beispielsweise:
wp(’b = 2 - 2*a; b += a + a++; a -= --b + b;’, a < 0 < b)
Zu allererst: Aus den ganzen “komischen” zusammengesetzten Zuweisungen schöne einfache machen. Also so etwas wie
a -= --b + b;
umformen zu:
b = b - 1;
a = a - (b + b);
Wenn man alle Anweisungen in dieser schönen Form hat braucht man nurnoch von hinten nach vorne die Anweisung in die Bedingung einsetzen. Also aus
wp(“b = b - 1; a = a - (b + b);”, a < 0 < b) wird durch Ersetzen von “a” in der Bedingung durch (a-(b+b))
wp(“b = b - 1;”, (a- (b+b)) < 0 < b) wird durch Ersetzen von “b” in der Bedingung durch (b-1)
(a-(b+b)) < 0 < (b-1)
aber dann liegt mein Problem darin die komischen Sachen “schön” zu schreiben.
kann mir vielleicht jemand erklären wie man dann von
a -= --b + b;
auf
b = b - 1;
a = a - (b + b);
umformen kann?
ich weiß, dass a-=x das gleiche ist wie a=a-x
ich weiß, dass b-- das gleich ist wie [color=limegreen]b=b+1
[/color]
aber ich würde da dann ehr sowas rauskriegen :
a=a-b=b+1[color=deepskyblue]+b[/color]
Ich habs von den Farben her versucht mal kenntlich zu machen wie mein gedankengang ist. Vielleicht erkennt ja jemand meinen denkfehler :huh:
Assignments innerhalb einer Expression finde ich persönlich extrem hässlich und noch komplizierter als einfach den unären Operator dastehen zu lassen, aber des ist jedem selbst überlassen.
wischmob ich stimme dir da zu, nur hab ichs nicht gerafft wie man drauf kommt. Weil ich die ganze zeit diese verbindung durch das + gesehen hab und die ned weggekriegt hab.
Danke!!
Und blos nicht verlesen! Da wird man ganz kirre beim schreiben / lesen Aber ja, alles der Reihe nach ersetzten. Was rauskommt müsste dann ungefähr so aussehen (kann gut sein, dass irgendwo noch ein Fehler steckt ;-))
wp("b = 2 - 2*a; b = b + a + a; a = a + 1; b = b - 1; a = a - (b + b);", a < 0 < b)
= wp("b = 2 - 2*a; b = b + a + a; a = a + 1; b = b - 1;", a - 2b < 0 < b)
= wp("b = 2 - 2*a; b = b + a + a; a = a + 1;", a - 2(b-1) < 0 < (b-1))
= wp("b = 2 - 2*a; b = b + a + a;", a + 1 - 2(b-1) < 0 < (b-1))
= wp("b = 2 - 2*a; b = b + a + a;", a + 3 - 2b < 0 < (b-1))
= wp("b = 2 - 2*a;", a + 3 - 2(b + 2a) < 0 < (b + 2a -1))
= wp("b = 2 - 2*a;", -3a + 3 - 2b < 0 < (b + 2a -1))
= (-3a + 3 - 2(2 - 2a) < 0 < (2 - 2a + 2a -1)
= (-3a + 3 - 4 + 4a) < 0 < 1
= a - 1 < 0 < 1
= a < 1