Frage zu WHILE- Programmiersprache |
06.01.2014, 14:24 | centrino | Auf diesen Beitrag antworten » | ||||||||
Frage zu WHILE- Programmiersprache Ich verstehe die Idee hinter der WHILE-Sprache (also die do-while-Befehle) aber nicht die Details der Sprache. X2 <-X1; bedeutet ja Weise X2 den Wert X1 zu. Was bedeutet aber X2 <- S(X2) resp. P(X2)? Und warum ist: `X2 <- X0 WHILE X1=/= 0 do (X2 <- S(X2); X1 <- P(X1)) od` eine Addition? Warum muss man Anfangs X2 X0 zuweisen? Wäre eine Subtraktion dann so: `X2 <- X0 WHILE X1=/= 0 do (X2 <- P(X2); X1 <- S(X1)) od`? Danke für eure Hilfe! Liebe Grüsse, centrino |
||||||||||
06.01.2014, 14:39 | chrizke | Auf diesen Beitrag antworten » | ||||||||
RE: Frage zu WHILE- Programmiersprache Also ausdrücklich eine Sprache, die 'WHILE' heißt, kenne ich nicht, aber ich versuche mal dir die Konstrukte zu erklären.
Ich vermute mal, dass es sich bei S um den Successor und bei P um den Predecessor handelt, also um den natürlichen Vorgänger und Nachfolger. D.h. X2<-S(X2) bedeutet so viel wie Schreibe auf X2 den Nachfolger von X2, also addiere zu X2 eine 1 (Inkrementierung). Gleiches für den Vorgänger, nur das eins abgezogen wird (Dekrementierung).
Hier wird X2 solange inkrementiert und X1 dekrementiert, bis X1 gleich 0 ist. Das heißt hier wird X0+X1 gerechnet.
X2 ist eine lokale Variable, auf der gerechnet wird. Da ja X0+X1 gerechnet werden soll, muss man X2 mit X0 initialisieren.
Nicht ganz. Die erste Zuweisung mit dem P ist richtig, wir wollen von X0 ja was abziehen. Beim zweiten musst du aber das gleiche wie bei der Addition tun. Denn wenn du immer was auf X1 draufaddierst, wird es ja nicht 0 werden können (so lange man mit einer Signatur bzgl. der natürlichen Zahlen arbeitet.) Bei der Subtraktion musst du auch noch weiterhin prüfen, ob du nicht auf einmal negativ wirst, also sicherstellen, dass X0>=X1 (natürlich nur bei natürlichen Zahlen) oder angeben, dass X0-X1=0 für X0<X1. |
||||||||||
06.01.2014, 14:44 | centrino | Auf diesen Beitrag antworten » | ||||||||
Danke vielmals! Super Antwort. Muss mir nur das mit der X2 X0 Zuweisung noch ein bisschen durch das Hirn gehen lassen |
||||||||||
06.01.2014, 16:46 | chrizke | Auf diesen Beitrag antworten » | ||||||||
Die Zuweisung von X0 auf X2 macht man, damit X0 nicht verändert wird. Es ist nämlich nicht Ziel X0 um X1 zu erhöhen, sondern nur die Summe auszurechnen. Würde man das nicht machen und auf X0 rechnen hätte man folgendes: Input:X0, X1 Durchlaufe Schleife Output: X0=(X0+X1), X1=0 Durch das Einführen von X2 ergibt sich Input:X0, X1 Durchlaufe Schleife Output: X2=(X0+X1), X0, X1=0 |
||||||||||
06.01.2014, 18:36 | Dopap | Auf diesen Beitrag antworten » | ||||||||
mich würde interessieren was nun der Witz dieser Sprache ist . Wird da alles auf WHILE - Schleifen reduziert |
|