From f66baff4fb2be8d287f0cdef76c656cd379817c2 Mon Sep 17 00:00:00 2001
From: Chris <Christopher.Happe@uni-duesseldorf.de>
Date: Wed, 2 Dec 2020 12:13:25 +0100
Subject: [PATCH] =?UTF-8?q?Fix:=20Notebooks=20an=20neue=20Syntax=20f=C3=BC?=
 =?UTF-8?q?r=20Parameter=20angepasst?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 info4/kapitel-8/GOTO-Programme.ipynb  | 45 +++++++++++++++++++++------
 info4/kapitel-8/LOOP-Programme.ipynb  |  8 ++---
 info4/kapitel-8/WHILE-Programme.ipynb |  9 +++---
 3 files changed, 45 insertions(+), 17 deletions(-)

diff --git a/info4/kapitel-8/GOTO-Programme.ipynb b/info4/kapitel-8/GOTO-Programme.ipynb
index 6aa8827..a966f2c 100644
--- a/info4/kapitel-8/GOTO-Programme.ipynb
+++ b/info4/kapitel-8/GOTO-Programme.ipynb
@@ -36,7 +36,7 @@
    "metadata": {},
    "source": [
     "Eine Funktion heißt GOTO-berechenbar, falls es ein GOTO-Programm gibt, das mit $n_1,...,n_k$ in den Variablen $x_1,...,x_k$ gestartet wird und mit $f(n_1,n_2,...,n_k)$ in der Variablen $x_0$ endet, falls $f(n_1,n_2,...,n_k)$ definiert ist. Andernfalls stoppt das GOTO-Programm nicht.\n",
-    "Ein Beispiel dafür ist die 2er-Potenz $f(n) = n^2$:"
+    "Ein Beispiel dafür ist die 2er-Potenz $f(n) = 2^n$:"
    ]
   },
   {
@@ -50,9 +50,11 @@
      "text": [
       "Help on function interpret in module __main__:\n",
       "\n",
-      "interpret(program, timeout=60)\n",
+      "interpret(program, value_list=None, timeout=60)\n",
       "    Funktion zum Ausführen eines GOTO-Programms.\n",
       "    :param program: GOTO-Programm als String 'M1: A1; M2: A2; ... Mn: An;'\n",
+      "    :param value_list: Array von Integern ([v1, ..., vn]).\n",
+      "                   Das GOTO-Programm startet mit diesen Werten in x1, ..., xn.\n",
       "    :param timeout: Zeit nach der die Ausführung eines Programms pausiert wird.\n",
       "                    Gibt eine Möglichkeit zum Abbrechen bei einer Endlosschleife.\n",
       "                    Ein Wert von 0 deaktiviert den Timeout.\n",
@@ -74,7 +76,7 @@
     {
      "data": {
       "text/plain": [
-       "14"
+       "256"
       ]
      },
      "execution_count": 2,
@@ -84,14 +86,24 @@
    ],
    "source": [
     "interpret('''\n",
-    "M1:x1:=6;\n",
-    "M2:x2:=8;\n",
-    "M3:x0:=x1+0;\n",
+    "M1:x0:=1;\n",
+    "M2: IF x1=0 THEN GOTO M10;\n",
+    "M3:x2:=x0+0;\n",
     "M4:IF x2=0 THEN GOTO M8;\n",
     "M5:x0:=x0 + 1;\n",
     "M6:x2:=x2 − 1;\n",
     "M7:GOTO M4;\n",
-    "M8:HALT;''')"
+    "M8: x1:=x1-1;\n",
+    "M9:GOTO M2;\n",
+    "M10: HALT;''', [8])"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Mit GOTO- und WHILE-Programmen kann man auch partielle Funktionen berechnen.\n",
+    "das folgende GOTO-Programm berechnet die Funktion f(x)=x, falls x>5 und undefiniert sonst:"
    ]
   },
   {
@@ -101,10 +113,21 @@
     "scrolled": true
    },
    "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Die Funktion rechnet relativ lange.\n",
+      "Vielleicht liegt eine Endlosschleife vor.\n",
+      "Möchten sie abbrechen? [J,n]:Ja\n",
+      "Die Ausführung des Programms wurde unterbrochen.\n",
+      "Daher ist der Rückgabewert des Programms nicht definiert.\n"
+     ]
+    },
     {
      "data": {
       "text/plain": [
-       "10"
+       "-1"
       ]
      },
      "execution_count": 3,
@@ -113,7 +136,11 @@
     }
    ],
    "source": [
-    "interpret('M1: x0 := x0 + 1; M2: IF x0 = 10 THEN GOTO M4; M3: GOTO M1; M4: HALT;')"
+    "interpret('''\n",
+    "M1: x2 := x1 -5;\n",
+    "M2: IF x2 = 0 THEN GOTO M2;\n",
+    "M3: x0:=x1+0;\n",
+    "M4: HALT;''', [5])"
    ]
   }
  ],
diff --git a/info4/kapitel-8/LOOP-Programme.ipynb b/info4/kapitel-8/LOOP-Programme.ipynb
index 884e03c..3b28279 100644
--- a/info4/kapitel-8/LOOP-Programme.ipynb
+++ b/info4/kapitel-8/LOOP-Programme.ipynb
@@ -47,9 +47,11 @@
      "text": [
       "Help on function interpret in module __main__:\n",
       "\n",
-      "interpret(program)\n",
+      "interpret(program, value_list=None)\n",
       "    Funktion zum Ausführen eines LOOP-Programms.\n",
       "    :param program: LOOP-Programm als String 'x1 := 4; LOOP x1 DO x0:=x0+1 END'\n",
+      "    :param value_list: Array von Integern ([v1, ..., vn]).\n",
+      "                       Das LOOP-Programm startet mit diesen Werten in x1, ..., xn.\n",
       "    :returns integer: Gibt bei Abbruch -1 und sonst den Wert von x0 nach dem LOOP-Programm zurück.\n",
       "    :usage interpret('x1:=10; x2:=8; x0:=x2+0; LOOP x1 DO x0:=x0+1 END')\n",
       "\n"
@@ -78,12 +80,10 @@
    ],
    "source": [
     "interpret('''\n",
-    "x1:=3;\n",
-    "x2:=6;\n",
     "LOOP x1 DO\n",
     "    x2≔ x2 + 1\n",
     "END;\n",
-    "x0≔ x2 + 0''')"
+    "x0≔ x2 + 0''', [3,6])"
    ]
   },
   {
diff --git a/info4/kapitel-8/WHILE-Programme.ipynb b/info4/kapitel-8/WHILE-Programme.ipynb
index 4dcdb7d..ead34dc 100644
--- a/info4/kapitel-8/WHILE-Programme.ipynb
+++ b/info4/kapitel-8/WHILE-Programme.ipynb
@@ -29,7 +29,7 @@
    "metadata": {},
    "source": [
     "Eine Funktion heißt WHILE-berechenbar, falls es ein WHILE-Programm gibt, das mit $n_1,...,n_k$ in den Variablen $x_1,...,x_k$ gestartet wird und mit $f(n_1,n_2,...,n_k)$ in der Variablen $x_0$ endet, falls $f(n_1,n_2,...,n_k)$ definiert ist. Andernfalls stoppt das WHILE-Programm nicht.\n",
-    "Ein Beispiel dafür ist die 2er-Potenz $f(n) = n^2$:"
+    "Ein Beispiel dafür ist die 2er-Potenz $f(n) = 2^n$:"
    ]
   },
   {
@@ -43,9 +43,11 @@
      "text": [
       "Help on function interpret in module __main__:\n",
       "\n",
-      "interpret(program, timeout=60)\n",
+      "interpret(program, value_list=None, timeout=60)\n",
       "    Funktion zum Ausführen eines WHILE-Programms.\n",
       "    :param program: WHILE-Programm als String 'x1:=10; x2:=8; x0:=x2+0; WHILE x1 /=0 DO x0:=x0+1; x1:=x1-1 END'\n",
+      "    :param value_list: Array von Integern ([v1, ..., vn]).\n",
+      "                       Das WHILE-Programm startet mit diesen Werten in x1, ..., xn.\n",
       "    :param timeout: Zeit nach der die Ausführung eines Programms pausiert wird.\n",
       "                    Gibt eine Möglichkeit zum Abbrechen bei einer Endlosschleife.\n",
       "                    Ein Wert von 0 deaktiviert den Timeout.\n",
@@ -77,7 +79,6 @@
    ],
    "source": [
     "interpret(''' \n",
-    "x1:=10;\n",
     "x0:=1;\n",
     "WHILE x1 /= 0 DO\n",
     "    x2:=x0+0;\n",
@@ -85,7 +86,7 @@
     "        x0:=x0+1\n",
     "    END;\n",
     "    x1:=x1-1\n",
-    "END''')"
+    "END''', [10])"
    ]
   },
   {
-- 
GitLab