Wenn Du die Anweisungen in der Aufgabe zur Funktion absSub() nochmal liest, wirst Du schnell feststellen, dass Deine Lösung sehr wenig damit zu tun hat. Hervorgehoben wurde z. B. extra, dass eine Konstante verwendet werden soll. Eine solche taucht in Deiner Lösung überhaupt nicht auf, somit kann die Lösung nicht richtig sein.bin mir nur unsicher, ob das auch wirklich richtig ist.
Hallo, danke für dein Feedback! Ehrlich gesagt stehe ich gerade ein bisschen auf dem Schlauch und bin unsicher, wie ich die Lösung korrekt umsetzen soll. (das war eigentlich alles was mir dazu eingefallen ist...)Wenn Du die Anweisungen in der Aufgabe zur Funktion absSub() nochmal liest, wirst Du schnell feststellen, dass Deine Lösung sehr wenig damit zu tun hat. Hervorgehoben wurde z. B. extra, dass eine Konstante verwendet werden soll. Eine solche taucht in Deiner Lösung überhaupt nicht auf, somit kann die Lösung nicht richtig sein.
Das zweite Struktogramm soll wohl für die Funktion berechne() sein? Dort verwendest Du Parameter im Aufruf von absSub() - solche gibt es nicht, da zur Übergabe der Werte einfach die Register genutzt werden sollen. Auch sehe ich in der Formel zwei Beträge, wo ist der zweite Aufruf von absSub()? Außerdem führst Du eine Variable Ergebnis ein. Wozu? Reicht Dir R0 nicht?
Halte Dich einfach genau an die Aufgabe. Machen wir mal absSub():Hallo, danke für dein Feedback! Ehrlich gesagt stehe ich gerade ein bisschen auf dem Schlauch und bin unsicher, wie ich die Lösung korrekt umsetzen soll. (das war eigentlich alles was mir dazu eingefallen ist...)
Also:Implementiere die Funktion absSub(), die zwei Zahlen, die in den Registern R0 und R1 übertragen wurden, voneinander subtrahiert und anschließend, falls das Ergebnis negativ ist, über eine reverse Subtraktion mit einer Konstanten, einen Absolutbtrag bildet (|R0|) . Das Ergebnis wird in R0 zurückgeliefert.
Funktion addSub():
R0 := R0 - R1
IF R0 < 0 THEN
R1 := R0
R0 := 0 // Konstante
R0 := R0 - R1 // oder addSub() nochmal aufrufen
END IF
END // Ergebnis steht in R0