diff --git a/info4/kapitel-8/GOTO-Programme.ipynb b/info4/kapitel-8/GOTO-Programme.ipynb
index 6aa8827b23c3542d9953fde1038339a255767c7b..a966f2c69713bd956b3f13c1b6e1bd124869ab77 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 884e03c7887d155d2be5d4aa4a71300b0be8e64a..3b282796b952439a3c33ecfae195789d4211bf8c 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 4dcdb7d2137168ab04d9a623103c651a73301d5c..ead34dc0e28e00b39260124f176f9f1023cb5628 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])"
    ]
   },
   {