Skip to content
Snippets Groups Projects
seminar05.ipynb 39.2 KiB
Newer Older
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1. Was würde passieren, wenn wir diese Funktion so aufrufen würden: `recurse(-1, 0)`?\n",
    "\n",
    "2. Schreiben Sie einen Docstring der alles erklärt, was man wissen sollte, um diese Funktion nutzen zu können (und nicht mehr!)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Die folgenden Aufgaben nutzen das `turtle`-Modul welches in [Kapitel 4](seminar04.ipynb) beschrieben wurde.\n",
    "\n",
    "#### Aufgabe 5\n",
    "Lesen Sie sich die folgende Funktion durch und versuchen Sie herauszufinden, was sie tut (schauen Sie sich auch die [Beispiele in Kapitel 4](seminar04.ipynb#4.12-%C3%9Cbung) an). Rufen Sie erst dann die Funktion auf und schauen Sie, ob Sie richtig liegen."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def draw(t, length, n):\n",
    "    if n == 0:\n",
    "        return\n",
    "    angle = 50\n",
    "    t.fd(length*n)\n",
    "    t.lt(angle)\n",
    "    draw(t, length, n-1)\n",
    "    t.rt(2*angle)\n",
    "    draw(t, length, n-1)\n",
    "    t.lt(angle)\n",
    "    t.bk(length*n)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![Pythagoras-Baum](https://upload.wikimedia.org/wikipedia/commons/thumb/8/89/Pythagoras_baum_Filled.png/610px-Pythagoras_baum_Filled.png)\n",
    "\n",
    "Die [Koch-Kurve](https://de.wikipedia.org/wiki/Koch-Kurve) ist ein [Fraktal](https://de.wikipedia.org/wiki/Fraktal), welches ungefähr so aussieht:\n",
    "\n",
    "![Kochkurve](http://greenteapress.com/thinkpython2/html/thinkpython2006.png)\n",
    "\n",
    "Um eine Koch-Kurve der Länge x zu zeichnen, müssen wir nur folgendes tun:\n",
    "1. Eine Koch-Kurve der Länge x/3 zeichnen.\n",
    "2. Um 60° nach links drehen.\n",
    "3. Eine Koch-Kurve der Länge x/3 zeichnen.\n",
    "2. Um 120° nach rechts drehen.\n",
    "3. Eine Koch-Kurve der Länge x/3 zeichnen.\n",
    "2. Um 60° nach links drehen.\n",
    "3. Eine Koch-Kurve der Länge x/3 zeichnen.\n",
    "\n",
    "Eine Ausnahme gibt es, falls x kleiner als 3 ist: dann zeichnen wir einfach eine Strecke der Länge 3.\n",
    "\n",
    "1. Schreiben Sie eine Funktion `koch`, die eine Schildkröte und eine Länge als Argumente erwartet und die Schildkröte nutzt, um eine Koch-Kurve der gegebenen Länge zu zeichnen.\n",
    "2. Schreiben Sie eine Funktion `schneeflocke`, die drei Koch-Kurven zeichnet, so dass sich der Umriss einer Schneeflocke ergibt.\n",
    "\n",
    "   Lösung: http://thinkpython2.com/code/koch.py\n",
    "3. Die Koch-Kurve kann auf verschiedene Art und Wiese verallgemeinert werden. Schauen Sie sich die [Beispiele auf Wikipedia](https://en.wikipedia.org/wiki/Koch_snowflake#Variants_of_the_Koch_curve) an und implementieren Sie ihren Favoriten.\n",
    "\n",
    "![Koch-Kurve in 3D](https://upload.wikimedia.org/wikipedia/commons/thumb/3/39/Koch_Curve_in_Three_Dimensions_%28%22Delta%22_fractal%29.jpg/480px-Koch_Curve_in_Three_Dimensions_%28%22Delta%22_fractal%29.jpg)\n",
    "\n",
    "([Eric Baird](https://commons.wikimedia.org/wiki/File:Koch_Curve_in_Three_Dimensions_%28%22Delta%22_fractal%29.jpg))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![Speichern](https://amor.cms.hu-berlin.de/~jaeschkr/teaching/spp/floppy.png) Speichern Sie dieses Notebook, so dass Ihre Änderungen nicht verlorengehen (nicht auf einem Pool-Rechner). Klicken Sie dazu oben links auf das Disketten-Icon und nutzen Sie beispielsweise einen USB-Stick, E-Mail, Google Drive, Dropbox oder Ihre [HU-Box](https://box.hu-berlin.de/).  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![Smiley](https://upload.wikimedia.org/wikipedia/commons/3/3e/Cool-smiley.svg)\n",
    "Herzlichen Glückwunsch! Sie haben das 5. Kapitel geschafft. Weiter geht es in [6: Ergebnisreiche Funktionen](seminar06.ipynb)."
   ]
  }
 ],
 "metadata": {
  "language_info": {
   "name": "python",
   "pygments_lexer": "ipython3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}