From 91d1503f05b65ac09b9af75d38f181907d057258 Mon Sep 17 00:00:00 2001
From: schwabmi <michel.j.schwab@gmail.com>
Date: Tue, 8 Nov 2022 10:35:00 +0100
Subject: [PATCH] minor changes in ha1

---
 notebooks/hausaufgabe1.ipynb | 163 +++++++++++++++++++++++++----------
 1 file changed, 118 insertions(+), 45 deletions(-)

diff --git a/notebooks/hausaufgabe1.ipynb b/notebooks/hausaufgabe1.ipynb
index 4e93ec0..86c4828 100644
--- a/notebooks/hausaufgabe1.ipynb
+++ b/notebooks/hausaufgabe1.ipynb
@@ -14,21 +14,21 @@
    "source": [
     "# 1. Hausaufgabe\n",
     "\n",
-    "Geben Sie diese Hausaufgabe gemeinsam mit Ihrem/r Partner/in ab. Füllen Sie dazu dieses Notebook aus und speichern Sie es ab (Disketten-Icon oben links). Laden Sie dann die Datei (hausaufgabe1.ipynb) in Moodle hoch. Verwenden Sie Kommentare im Python-Quellcode (#), um ihr Programm zu kommentieren.\n",
-    "\n",
-    "Bitte ändern Sie den Dateinamen ihrer Hausaufgabe zu: **hausaufgabe1_nachnamePartner1_nachnamePartner2.ipynb**\n",
-    "\n",
-    "z.B. hausaufgabe1_schwab_jaeschke.ipynb\n",
+    "### Lesen Sie sich die nachfolgenden Hinweise gut durch und folgen Sie den Anweisungen, um Missverständnisse zu vermeiden.\n",
     "\n",
-    "Das können Sie einfach machen, indem Sie **jetzt** oben links auf `hausaufgabe1` klicken und den neuen Namen eingeben.\n",
-    "\n",
-    "Nutzen Sie das Wissen aus den bisher bearbeiteten Notebooks (1-3). \n",
+    "Geben Sie diese Hausaufgabe gemeinsam mit Ihrem/r Partner/in ab. Füllen Sie dazu dieses Notebook aus und speichern Sie es ab (Disketten-Icon oben links). Laden Sie dann die Datei (hausaufgabe1.ipynb) in Moodle hoch. Verwenden Sie Kommentare im Python-Quellcode (#), um ihr Programm zu kommentieren.\n",
     "\n",
-    "Es reicht, wenn ein Gruppenmitglied die Hausaufgabe einreicht.\n",
+    "**Tipps und Anmerkungen**:\n",
+    "- Es reicht, wenn ein Gruppenmitglied die Hausaufgabe einreicht. Passen Sie auf, dass Sie in moodle auf Abgabe drücken, damit es nicht nur ein Entwurf ist.\n",
+    "- Nutzen Sie das Wissen aus den bisher bearbeiteten Notebooks (1-3). \n",
+    "- Nutzen Sie http://pythontutor.com, um ihren Code nachvollziehen zu können und Fehler zu finden!\n",
+    "- Bitte ändern Sie den Dateinamen ihrer Hausaufgabe zu: **hausaufgabe1_nachnamePartner1_nachnamePartner2.ipynb**\n",
+    "    - z.B. `hausaufgabe1_schwab_jaeschke.ipynb`\n",
+    "    - Das können Sie einfach machen, indem Sie **jetzt** oben links auf `hausaufgabe1` klicken und den neuen Namen eingeben.\n",
+    "- Bei (Verständnis-)Fragen können Sie mich **frühzeitig** und nicht am Abend des Abgabetages per E-Mail oder während der Sitzungen erreichen.\n",
     "\n",
-    "Wir wünschen viel Erfolg beim Lösen der Aufgaben!\n",
     "\n",
-    "**Tipp**: Nutzen Sie http://pythontutor.com, um ihren Code nachvollziehen zu können und Fehler zu finden!"
+    "Wir wünschen viel Erfolg beim Lösen der Aufgaben!"
    ]
   },
   {
@@ -38,10 +38,17 @@
     "## Aufgabe 1\n",
     "\n",
     "Was gibt jede der folgenden Anweisungen aus? Erklären Sie jeweils die Ausgabe. \n",
-    "- Welche Funktionen werden genutzt und was machen diese Funktionen? (die print-Funktion muss nicht erklärt werden)\n",
-    "- Was ist die Ausgabe? Geben Sie Wert und Datentyp an\n",
-    "Nutzen Sie Kommentare wie im Beispiel beschrieben.\n",
-    "Nutzen Sie **mehrere Zeilen pro Anweisung, damit Ihre Antwort in die Breite des Codeblocks passt** und man nicht hin- und herscrollen muss. (Sie finden heraus, was ich meine, wenn es passiert ;) )\n"
+    "- Welche Funktionen werden genutzt und was machen diese Funktionen? (die `print` -Funktion muss nicht erklärt werden). Achten Sie darauf, in welcher Reihenfolge die Anweisungen ausgeführt werden.\n",
+    "- Was ist die Ausgabe? Geben Sie Wert und Datentyp an.\n",
+    "- Nutzen Sie Kommentare wie im Beispiel beschrieben.\n",
+    "- Nutzen Sie **mehrere Zeilen pro Anweisung, damit Ihre Antwort in die Breite des Codeblocks passt** und man nicht hin- und herscrollen muss. (Sie finden heraus, was ich meine, wenn es passiert ;) )\n",
+    "\n",
+    "Beispiel\n",
+    "```\n",
+    "print(\"a\"+\"b\") \n",
+    "# zwei Zeichenketten werden durch den Operator \"+\" verkettet\n",
+    "# Ausgabe: \"ab\", Datentyp: Zeichenkette/string\n",
+    "```"
    ]
   },
   {
@@ -50,31 +57,82 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "# Beispiel:\n",
-    "print(\"a\"+\"b\") \n",
-    "# zwei Zeichenketten werden durch den Operator \"+\" verkettet \n",
-    "# Ausgabe: \"ab\" (Zeichenkette)\n",
-    "\n",
-    "\n",
-    "\n",
-    "# Hier könnte Ihre Erklärung zur ersten Codezeile stehen.\n",
-    "# Hier könnte die zweite Zeile der Erklärung zur ersten Codezeile stehen\n",
     "print(2 + 3)\n",
+    "# \n",
+    "# \n",
     "print(2.2 + 3.3)\n",
+    "# \n",
+    "# "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
     "print('2' + '3')\n",
+    "# \n",
+    "# \n",
     "print('2.2' + '3.3')\n",
-    "\n",
+    "# \n",
+    "# "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
     "print(str(2) + str(3))\n",
+    "# \n",
+    "# \n",
     "print(str(2.2) + str(3.3))\n",
-    "\n",
+    "# \n",
+    "# "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
     "print(int('2') + int('3'))\n",
+    "# \n",
+    "# \n",
     "print(int('2' + '3'))\n",
-    "\n",
+    "# \n",
+    "# "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
     "print(float('2') + float('3'))\n",
+    "# \n",
+    "# \n",
     "print(float('2' + '3'))\n",
-    "\n",
+    "# \n",
+    "# "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
     "print(int(2.6 + 2.6))\n",
-    "print(int(2.6) + int(2.6))"
+    "# \n",
+    "# \n",
+    "print(int(2.6) + int(2.6))\n",
+    "# \n",
+    "# "
    ]
   },
   {
@@ -83,11 +141,12 @@
    "source": [
     "\n",
     "## Aufgabe 2\n",
-    "### Aufgabe 2a\n",
     "\n",
     "**Tipp**: Wichtig bei den folgenden Aufgaben ist der Umgang mit Zeichenketten und der `print`-Funktion. Das haben Sie in den seminar-Notebooks schon gelernt. Gehen Sie diese zu Beginn der Hausaufgabe noch einmal durch und achten Sie, mit welchen **Operatoren** man Zeichenketten zusammenfügen und verketten kann.\n",
     "\n",
     "\n",
+    "### Aufgabe 2a\n",
+    "\n",
     "Ihre Aufgabe ist es, eine Funktion `boxprint` zu implementieren, die eine als Argument übergegebene Zeichenkette innerhalb einer Box ausgibt. Die horizontalen Linien der Box sollen durch `-` erzeugt werden, die vertikalen Linien durch `|` und die Ecken durch `+`. Zwischen der Zeichenkette und dem linken und rechten Rand der Box soll jeweils genau ein Leerzeichen stehen. \n",
     "\n",
     "\n",
@@ -126,7 +185,8 @@
     "def boxprint(zeichenkette):\n",
     "    '''Die Funktion nimmt eine Zeichenkette entgegen und gibt \n",
     "    die Zeichenkette innerhalb einer Textbox aus.\n",
-    "    '''    \n"
+    "    '''    \n",
+    "    pass # Diese Zeile können Sie bei der Implementierung löschen\n"
    ]
   },
   {
@@ -137,10 +197,17 @@
    "source": [
     "# Funktionsaufrufe\n",
     "boxprint(\"Hello World!\")\n",
-    "boxprint(\"Dieser Text muss auch in die Box passen.\")\n",
-    "boxprint(\"Das Reh springt hoch, das Reh springt weit. Warum auch nicht, es hat ja Zeit.\")\n",
-    "\n",
-    "# Schreiben Sie hier mindestens zwei Funktionsaufrufe:\n"
+    "boxprint(\"Das Reh springt hoch, das Reh springt weit. Warum auch nicht, es hat ja Zeit.\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Schreiben Sie hier zwei Funktionsaufrufe der Funktion mit eigenen Argumenten\n",
+    "\n"
    ]
   },
   {
@@ -186,6 +253,8 @@
     "\n",
     "Nutzen Sie dazu Ihre bei der Programmierung von `boxprint` gesammelte Erfahrung. Auch hier soll das Argument eine variable Länge aufweisen können, die \"Sprechbox\" soll sich anpassen.\n",
     "\n",
+    "**Achung**: Die Denkblase ist verschieden zu der Sprachblase auf Aufgabe 2a.\n",
+    "\n",
     "**Tipp**: Man kann den Stegosaurus im Editiermodus kopieren, Sie müssen nicht jedes Zeichen selbst abtippen.\n",
     "Durch\n",
     "\n",
@@ -214,7 +283,7 @@
     "    die Zeichenkette innerhalb einer Denkblase eines Dinos wieder aus. \n",
     "    In dieser Funktion soll der Dinosaurier inklusive der Denkblase ausgegeben werden.\n",
     "    '''    \n",
-    "\n"
+    "    pass # Diese Zeile können Sie bei der Implementierung löschen\n"
    ]
   },
   {
@@ -225,7 +294,6 @@
    "source": [
     "# Testen Sie hier ihre Funktion; fügen Sie auch eigene Tests hinzu\n",
     "stegosay(\"Wo bleibt mein Frühstück?\")\n",
-    "\n",
     "stegosay(\"Auf einem Baum, da saß ein Specht. Der Baum war hoch, dem Specht war schlecht.\")"
    ]
   },
@@ -236,7 +304,7 @@
     "## Aufgabe 3\n",
     "### Aufgabe 3a\n",
     "\n",
-    "Schreiben Sie eine Funktion `sinprint`, die die Sinusfunktion (`math.sin`) im Bereich zwischen 0 und 2π um 90° gedreht ausgibt, also ungefähr so:\n",
+    "Schreiben Sie eine Funktion `sinprint`, die die Sinusfunktion (`math.sin`) im Bereich zwischen 0 und 2π  um 90° gedreht ausgibt, also ungefähr so:\n",
     "\n",
     "```\n",
     "          *\n",
@@ -274,12 +342,13 @@
     "```\n",
     "Hinweise:\n",
     "- Lösen Sie diese Aufgabe mit Hilfe einer Schleife. Sie kennen die Syntax und Semantik der `while`-Schleife schon aus der Vorlesung. Sie funktioniert in Python genau so, wie sie für den Pseudocode definiert wurde. \n",
-    "- Sie müssen selbst entscheiden, wieviele Werte Sie im verlangten Intervall berechnen. Die Kurve oben wurde mit einem Rasterabstand von 0.2 berechnet (d.h., für die Werte 0, 0.2, 0.4, 0.6, ..., 6.2). \n",
-    "- Denken Sie daran, dass Sie mit der `int`-Funktion eine Gleitkommazahl in eine ganze Zahl umwandeln können (der Dezimalanteil wird abgeschnitten).\n",
+    "- Sie müssen selbst entscheiden, wieviele Werte Sie im verlangten Intervall berechnen. Die Kurve oben wurde z.B. mit einem Rasterabstand von 0.2 berechnet (d.h., für die Werte 0, 0.2, 0.4, 0.6, ..., 6.2). Dies können Sie übernehmen.\n",
     "- Damit Sie die Funktion `math.sin` nutzen können, müssen Sie anfangs das `math`-Modul importieren.\n",
-    "- Falls Sie das Problem nicht lösen können, fragen Sie im Seminar nach. Dort können Sie wertvolle Tipps erhalten.\n",
-    "\n",
-    "Tipp: Nutzen Sie die `print`-Funktion, um die Sternchen an verschiedenen Stellen zu zeichnen."
+    "- Folgende Probleme müssen gelöst werden:\n",
+    "  - Umwandeln von Gleitkommazahlen in Ganzzahlen \n",
+    "  - Umwandeln von negativen in positive Zahlen\n",
+    "- Nutzen Sie die `print`-Funktion, um die **Sternchen** (*) an verschiedenen Stellen zu zeichnen.\n",
+    "- Falls Sie das Problem nicht lösen können, fragen Sie im Seminar nach. Dort können Sie wertvolle Tipps erhalten.\n"
    ]
   },
   {
@@ -305,6 +374,7 @@
     "\n",
     "def sinprint():\n",
     "    '''Diese Funktion zeichnet eine Sinus-Kurve ohne eine plot-Bibliothek.'''    \n",
+    "    pass # Diese Zeile können Sie bei der Implementierung löschen\n",
     "\n",
     "\n",
     "\n"
@@ -347,6 +417,7 @@
     "    '''Diese Funktion nimmt den Parameter `func` entgegen, der ein Funktionsobjekt repräsentiert und zeichnet \n",
     "    die Funktionskurve\n",
     "    '''    \n",
+    "    pass # Diese Zeile können Sie bei der Implementierung löschen\n",
     "\n",
     "\n",
     "\n"
@@ -358,6 +429,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
+    "# Funktionsaufruf\n",
     "funcprint(math.sin)\n",
     "funcprint(math.cos)"
    ]
@@ -390,7 +462,8 @@
     "def funcprint_advanced(func, start, end, step, shift, scale_x, scale_y):\n",
     "    '''Diese Funktion nimmt den Parameter `func` entgegen, der ein Funktionsobjekt repräsentiert und zeichnet \n",
     "    die Funktionskurve. Zudem nimmt die Funktion mehrere Parameter entgegen, die die Kurve verändern können.\n",
-    "    '''"
+    "    '''\n",
+    "    pass # Diese Zeile können Sie bei der Implementierung löschen\n"
    ]
   },
   {
@@ -399,7 +472,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "\n",
+    "# Funktionsrauf\n",
     "funcprint_advanced(math.cos, 2, 10, 0.1, 30, 15, 10)"
    ]
   },
-- 
GitLab