Frage zu WHILE- Programmiersprache

Neue Frage »

centrino Auf diesen Beitrag antworten »
Frage zu WHILE- Programmiersprache
Guten Tag

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
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.


Zitat:

Was bedeutet aber X2 <- S(X2) resp. P(X2)?

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).

Zitat:

Und warum ist: `X2 <- X0 WHILE X1=/= 0 do (X2 <- S(X2); X1 <- P(X1)) od` eine Addition?

Hier wird X2 solange inkrementiert und X1 dekrementiert, bis X1 gleich 0 ist. Das heißt hier wird X0+X1 gerechnet.

Zitat:

Warum muss man Anfangs X2 X0 zuweisen?

X2 ist eine lokale Variable, auf der gerechnet wird. Da ja X0+X1 gerechnet werden soll, muss man X2 mit X0 initialisieren.

Zitat:

Wäre eine Subtraktion dann so: `X2 <- X0 WHILE X1=/= 0 do (X2 <- P(X2); X1 <- S(X1)) od`?

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.
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 smile
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
Dopap Auf diesen Beitrag antworten »

mich würde interessieren was nun der Witz dieser Sprache ist .

Wird da alles auf WHILE - Schleifen reduziert verwirrt
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »