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