Aufgabe 9.1 (0 muss immer positiv sein?)

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.

Aufgabe 9.1 (0 muss immer positiv sein?)
Hallo,

ich bin mir nicht sicher, wie die Aufgabenstellung der Aufgabe 9.1 zu lesen ist. Und zwar soll in dieser Aufgabe sichergestellt werden, dass die “ganze Zahl 0” stehts positiv ist. Für mich bedeutet das entweder,

  1. , dass die Signumsfunktion stets positiv zurückgeben soll, wenn die natürliche Zahl des Zweiertupels 0 ist,

oder

2), dass bei den Rechenoperationen darauf geachtet werden soll, dass nie die Zahl (negativ,0) herauskommt (also z.B. nicht mul((negativ,1),(positiv,0))=(negativ,0)) ist.

Was davon, denkt ihr, trifft zu?

Schonmal danke für die potentielle Hilfe :slight_smile:


Beides dürfte gefordet sein, also insbesondere letzteres.

Denn wenn du als Ergebniss einer Rechnung 0 erhälst, aber (negativ, 0) ausgibst, dann wäre das dem Zitat aus der Aufgabenstellung nach falsch, da das Ergebnis(0) stehts positiv ist.


An sich ja, allerdings war ich dahingehend verwirrt, weil wir für diese Aufgabe nicht alle Methoden selber programmieren müssen, sondern uns ein Teil, nämlich der Konstruktor mitgegeben wird. Diesen Konstruktor dürfen wir auch nicht umschreiben. In ihm würde der Aufruf new Int(negativ,0) nicht verhindert werden, ganze Zahlen der Form (negativ, 0) könnte man also sowieso nicht verhindern. Man könnte aber für diese dann einfach trotzdem das Vorzeichen positiv zurückggeben. Deswegen hat sich mir zumindest nicht ganz erschlossen, wieso wir verhindern sollen, dass (negativ,0) in den von uns programmierten Methoden rauskommt wenn Werte wie (negativ,0) sowieso nicht verhindert werden können?


Demnach ist lediglich die Semantik von (negativ, 0) nicht definiert.

Das ist vermutlich eine der Sachen, die bewusst von Lehrstuhl eingebaut werden, um Studenten zu verwirren.


Müsste eine Semantik für einen ADT nicht für jeden Wert definiert sein?


Das es sich um ein ADT handelt, wusste ich nicht.

An sich dürfte die Semantik aber ziemlich geal sein.

Es muss aber natürlich jede Eingabe auf Axiome zurückführbar sein, wodurch jede Eingabe eine Semantik erhält, sofern die überführungen und die Axiome eine Semantik haben.


Ok, danke.


Ich habe das so verstanden, dass das nur bei der sign()-Funktion relevant ist. Wenn man bei den Rechen-Funktionen nat2int(Sign.minus, Nat.zero) aufruft und man sign() richtig definiert hat, gibt dieses ja trotzdem Sign.plus zurück. Deswegen steht das auch in der Teilaufgabe, in der sign() zu definieren ist - denke ich.


Ja ich denk das würd am meisten Sinn machen.