[BuK] While Programme: Was passiert bei 0-1 ?

[FoSAP] Formale Systeme, Automaten, Prozesse
[BuK] Berechenbarkeit und Komplexität
[MaLo] Mathematische Logik

While Programme: Was passiert bei 0-1 ?

Beitragvon Commo » 15.02.08 23:00

Hallo,

was passiert bei while Programmen, wenn irgendwo 0-1 gerechnet wird? Hatte das Problem speziell bei der Präsenzübung "x0 mod 2", wo ich mich auf ein "x0 -= 2" versteift hatte und nicht wusste, wie negative Werte zu erkennen sind. Wurde dazu etwas gesagt?
Commo
 
Beiträge: 380
Registriert: 12.07.06 21:45

Beitragvon AGo » 15.02.08 23:15

naja, was soll großartig passieren?

Dann wird der wert deiner variablen halt negativ, so what?

Das einzige was ungünstig wäre ist, wenn das negative x deine Schleifenvariable ist, denn die bricht nur bei x == 0 und nicht bei x < 0 ab.
Benutzeravatar
AGo
0x41476F
 
Beiträge: 2181
Registriert: 09.09.05 18:21
Wohnort: Awf
Studiengang: Informatik (Dipl.)
Anwendungsfach: BWL

Beitragvon CrazyPumuckl » 16.02.08 00:02

im While gibt es keine negativen Registerwerte. Das schlimmste was passiert, ist dass das bei 0 bleibt, egal wie oft Du -1 drauf addierst.
\frac{0}{0}
Benutzeravatar
CrazyPumuckl
 
Beiträge: 557
Registriert: 17.11.06 11:31

Beitragvon AGo » 16.02.08 00:30

hmkay, ich find zwar keine Stelle im skript wo negative werte explizit ausgeschlossen werden, aber sie machen halt einfach keinen Sinn ;)
Benutzeravatar
AGo
0x41476F
 
Beiträge: 2181
Registriert: 09.09.05 18:21
Wohnort: Awf
Studiengang: Informatik (Dipl.)
Anwendungsfach: BWL

Beitragvon Martin » 16.02.08 00:43

AGo hat geschrieben:hmkay, ich find zwar keine Stelle im skript wo negative werte explizit ausgeschlossen werden


"WHILE-Programme berechnen k-stellige Funktionen der Form f : \mathbb{N}^k \rightarrow \mathbb{N}." (S. 55)
Martin
10100111001
 
Beiträge: 1932
Registriert: 09.09.05 17:47
Studiengang: Informatik (Dipl.)
Studiert seit: fertig
Anwendungsfach: BWL

Beitragvon mirko » 16.02.08 00:51

mister_nu hat geschrieben:
AGo hat geschrieben:hmkay, ich find zwar keine Stelle im skript wo negative werte explizit ausgeschlossen werden


"WHILE-Programme berechnen k-stellige Funktionen der Form f : \mathbb{N}^k \rightarrow \mathbb{N}." (S. 55)


sagt was genau über die zwischenergebnisse aus?
mirko
 
Beiträge: 1032
Registriert: 22.10.06 18:33
Studiert seit: WS 12/13

Beitragvon Martin » 16.02.08 00:57

mirko hat geschrieben:sagt was genau über die zwischenergebnisse aus?


Wie willst du sicherstellen, dass das Endergebnis in \mathbb{N} ist, wenn beliebige Zwischenergebnisse in \mathbb{Z} sein dürfen?
Martin
10100111001
 
Beiträge: 1932
Registriert: 09.09.05 17:47
Studiengang: Informatik (Dipl.)
Studiert seit: fertig
Anwendungsfach: BWL

Beitragvon AGo » 16.02.08 01:03

ich könnte meine Schleife z.B. nicht von oben sondern von unten gegen 0 laufen lassen, aus welchem grund auch immer ich das wollen würde ;)

Ausserdem kann ich mit meiner letzten Anweisung immer sicher stellen, dass 1 oder 0 im Akku stehn.

Aber wie gesagt, mir fällt spontan auch kein sinnvoller gebrauch von negativen werten ein.
Benutzeravatar
AGo
0x41476F
 
Beiträge: 2181
Registriert: 09.09.05 18:21
Wohnort: Awf
Studiengang: Informatik (Dipl.)
Anwendungsfach: BWL

Beitragvon Martin » 16.02.08 01:07

AGo hat geschrieben:Ausserdem kann ich mit meiner letzten Anweisung immer sicher stellen, dass 1 oder 0 im Akku stehn.


Aber wie soll der Interpreter sicherstellen, dass der Programmierer sich daran hält?
Martin
10100111001
 
Beiträge: 1932
Registriert: 09.09.05 17:47
Studiengang: Informatik (Dipl.)
Studiert seit: fertig
Anwendungsfach: BWL

Beitragvon Sheol » 16.02.08 01:41

Kommentar von meinem Tutor war,
"Passt halt auf, dass die nicht negativ werden."
Das ist zwar sehr unbefriedigend, aber wird wohl reichen.
Sheol
 
Beiträge: 60
Registriert: 26.07.07 23:14

Beitragvon Commo » 16.02.08 02:56

mister_nu hat geschrieben:
AGo hat geschrieben:hmkay, ich find zwar keine Stelle im skript wo negative werte explizit ausgeschlossen werden


"WHILE-Programme berechnen k-stellige Funktionen der Form f : \mathbb{N}^k \rightarrow \mathbb{N}." (S. 55)


Okay danke. Ich glaube, weil x_i = x_j + \{-1,0,1\} wiederum ein While-Programm ist, können die Werte wohl nicht negativ werden.

Aber 0-1 = 0 ist ja bisher immernoch eine These.
Commo
 
Beiträge: 380
Registriert: 12.07.06 21:45

Beitragvon philipp » 16.02.08 11:24

Also in der Musterloesung zu Blatt 7 stehts auch noch mal ganz deutlich
"[...] Das Programm P01 könen wir nun wie folgt verallgemeinern. Dabei müssen wir berücksichtigen, dass
Variablen nicht negativ werden dürfen."

Ich habe deshalb Punktabzug in meiner Lösung bekommen, nur weil ich nicht vor jedem "-1" geguckt habe ob die Variable != 0 ist...
Und 0 - 1 = 0 ist quatsch. sobald sowas auftreten kann ist dein Programm einfach falsch.. runtime error halt ;)
Benutzeravatar
philipp
 
Beiträge: 394
Registriert: 05.11.06 23:36
Studiengang: Informatik (M.Sc.)
Studiert seit: WS 07/08
Anwendungsfach: Medizin

Beitragvon mirko » 16.02.08 11:44

Commo hat geschrieben:
mister_nu hat geschrieben:
AGo hat geschrieben:hmkay, ich find zwar keine Stelle im skript wo negative werte explizit ausgeschlossen werden


"WHILE-Programme berechnen k-stellige Funktionen der Form f : \mathbb{N}^k \rightarrow \mathbb{N}." (S. 55)


Okay danke. Ich glaube, weil x_i = x_j + \{-1,0,1\} wiederum ein While-Programm ist, können die Werte wohl nicht negativ werden.


dann darf aber nur x_0 nicht negativ werden. die anderen werte gehören schließlich nicht zum ergebnis der funktion.

@philipp: das mit dem runtime-error kann nicht sein. schließlich ist die zielmenge \mathbb{N} und nicht \mathbb{N}~\cup~\lbrace runtime-error \rbrace
mirko
 
Beiträge: 1032
Registriert: 22.10.06 18:33
Studiert seit: WS 12/13

Beitragvon AGo » 16.02.08 12:39

Hab grad nochmal mit einem Hiwi gesprochen, und revidiere meine Meinung ;)

Das Argument ist wohl in der tat, dass x = y -1 auch ein while-program ist bzw. sein muss, und daher nach dieser zeile x mindestens gleich 0 sein muss.

Aber ist ja eh nur eine theoretische frage, bisher hatte ich noch kein Problem, wofür ich negative Werte gebraucht hätte.
Benutzeravatar
AGo
0x41476F
 
Beiträge: 2181
Registriert: 09.09.05 18:21
Wohnort: Awf
Studiengang: Informatik (Dipl.)
Anwendungsfach: BWL

Beitragvon mirko » 16.02.08 12:58

dann ist aber x_1=x_2+-1 erlaubt, auch wenn x_2=0 ist. denn das ergebnis des while-programms steht ja p.d. in x_0 und nicht in x_1 oder?
mirko
 
Beiträge: 1032
Registriert: 22.10.06 18:33
Studiert seit: WS 12/13

Nächste

Zurück zu Theoretische Informatik