Skip to content
Snippets Groups Projects
hausaufgabe2.ipynb 11.1 KiB
Newer Older
Michel Schwab's avatar
Michel Schwab committed
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 2. 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 (hausaufgabe2.ipynb) in Moodle hoch. Verwenden Sie Kommentare im Python-Quellcode und Markdown-Textboxen im Jupyter-Notebook ([Syntax-Beispiele](https://de.wikipedia.org/wiki/Markdown#Auszeichnungsbeispiele)) um ihr Programm zu kommentieren.\n",
Michel Schwab's avatar
Michel Schwab committed
    "\n",
    "\n",
    "* Geben Sie bitte Ihrem **Notebook einen Namen**, sodass es Ihnen und Ihrem Partner zugeordnet werden kann (z.B. *nachname1_nachname2_hausaufgabe2.ipynb*)\n",
Michel Schwab's avatar
Michel Schwab committed
    "* Für das Aufwärmen sind in den Seminar-Notebooks schon Musterlösungen gegeben, die nur geringfügig angepasst werden müssen. Falls Sie eine davon nutzen, **ändern Sie zumindest die Namen der Argumente, Literale  und Variablen.** \n",
    "* Fügen Sie außerdem **Kommentare ** zu jedem Code hinzu, mit denen Sie erklären, was die Funktion macht (Schleife, Bedingungen, etc. beschreiben). \n",
    "* Schauen Sie sich das notebook **[FAQ.ipynb](FAQ.ipynb)** an, hier sind turtle-Methoden beschrieben, die Sie in dieser Hausaufgabe benötigen. \n",
    "* In jedem Codeblock steht eine **Testfunktion**, die am Ende die von Ihnen definierte Funktion aufruft. Dies sollte funktionieren (dort kann man auch direkt ablesen, wieviele und welche Argumente gebraucht werden). Anfangs können Sie den Aufruf gerne auskommentieren, damit nicht immer eine Fehlermeldung angezeigt wird (danach wieder Kommentare entfernen).\n",
Michel Schwab's avatar
Michel Schwab committed
    "* Schreiben Sie bitte zu jeder definierten Funktion einen **Funktionsaufruf mit eigens definierten *turtles* und Parametern**.\n",
    "* Nutzen Sie **Schleifen** in allen Aufgaben, in denen Sie geometrische Figuren zeichnen müssen (Sie haben diese in den Seminaren kennengelernt)!\n",
Michel Schwab's avatar
Michel Schwab committed
    "\n",
    "\n",
    "Wir wünschen viel Erfolg beim Lösen der Aufgaben!"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Aufwärmen\n",
    "\n",
    "\n",
    "\n",
    " - **Aufgabe 1:** Schreiben Sie eine Funktion `square`, die zwei Parameter  `t` und `length` erwartet. `t` ist eine Schildkröte, `length` eine Ganzzahl. Die Funktion soll die Schildkröte nutzen, um ein Quadrat mit Seitenlänge `length` zu zeichnen. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import turtle\n",
    "# Implementieren Sie hier ihre Funktion und schreiben Sie Kommentare dazu\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "# Testen Sie hier ihre Funktion; fügen Sie auch eigene Tests hinzu\n",
    "otto = turtle.Turtle()\n",
    "square(t = otto, length = 100)\n",
Michel Schwab's avatar
Michel Schwab committed
    "turtle.mainloop()\n",
    "turtle.bye()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Aufgaben\n",
    "\n",
    "\n",
    "\n",
    " - **Aufgabe 1:** Schreiben Sie eine Funktion `triangle`, die zwei Parameter  `t` und `l` erwartet. `t` ist eine Schildkröte, `l` eine Ganzzahl. Die Funktion soll die Schildkröte nutzen, um ein gleichseitiges Dreieck mit Seitenlänge `l` zu zeichnen. \n",
    " - **Aufgabe 2:** Schreiben Sie einen Funktionsaufruf, der `bob` als Argument an `square` übergibt und rufen Sie ihr Programm auf."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import turtle\n",
    "# Implementieren Sie hier ihre Funktion und schreiben Sie Kommentare dazu\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "# Testen Sie hier ihre Funktion; fügen Sie auch eigene Tests hinzu\n",
    "otto = turtle.Turtle()\n",
Michel Schwab's avatar
Michel Schwab committed
    "triangle(otto, 100)\n",
    "\n",
    "turtle.mainloop()\n",
    "turtle.bye()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- **Aufgabe 3:** Nutzen Sie die folgenden Funktionen, um die Schildkröte in einer Farbe Ihrer Wahl zu färben."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- **Aufgabe 4:** Nutzen Sie die folgenden Funktionen, um Ihr Dreieck in einer Farbe Ihrer Wahl zu färben."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- **Aufgabe 5:** Nutzen Sie die folgenden Funktionen, um an jeder Ecke Ihres Dreiecks eine Schildkröte zu platzieren."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### turtle-Methoden:\n",
    "- Dokumention von python: https://docs.python.org/3/library/turtle.html\n",
    "    - Dort finden Sie alle Funktionen, die Sie auf Ihre Schildkröte anwenden können. Wichtig für die Hausaufgabe sind (neben denen, die Sie schon kennengelernt haben):\n",
    "- `t.shape('turtle')`: ändert die Gestalt der \"Schildkröte\" in eine Schildkröte.\n",
    "-  Die Farbe der Schildkröte und der Färbung der Muster wählt man mit `t.color(c)`, wobei `c` eine Zeichenkette ist (z.B. 'red', 'green', etc.) \n",
    "- `t.begin_fill()` ... `t.end_fill()`: Färbt das Muster, was die Schildkröte zwischen den beiden Anweisungen gezeichnet hat, ein.\n",
    "- `t.stamp()`: Platziert bei Aufruf eine Schildkröte an der Stelle, an der die Schildkröte sich zu diesem Zeitpunkt befindet."
Michel Schwab's avatar
Michel Schwab committed
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- **Aufgabe 6:** Schreiben Sie eine Funktion `repeat_triangle`, die **vier Dreiecke nebeneinander** zeichnet.  Sie soll zwei Argumente `t` und `l` erhalten. `t` ist eine Schildkröte, `l` eine Ganzzahl. Die Funktion soll die Schildkröte nutzen, um die gleichseitigen Dreiecke mit Seitenlänge `l` zu zeichnen. Die Farbe der Dreiecke soll nicht schwarz sein.  <br>\n",
    "    - *Zusatz*: Jedes Dreieck soll eine eigene Farbe haben.\n",
    "    - *Zusatz*: Verändern Sie die Funktion so, dass sie eine variable Anzahl von Dreiecken zeichnen kann, die als Argument übergeben wird.\n",
Michel Schwab's avatar
Michel Schwab committed
    "\n",
    "- Eine mögliche Lösung könnte so aussehen:\n",
    "![repeat](https://box.hu-berlin.de/f/7ceeb79b004e4e9f8ab5/?dl=1)"
Michel Schwab's avatar
Michel Schwab committed
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import turtle\n",
    "# Implementieren Sie hier ihre Funktion und schreiben Sie Kommentare dazu\n",
    "\n",
    "\n",
    "\n",
    "# Testen Sie hier ihre Funktion; fügen Sie auch eigene Tests hinzu\n",
    "otto = turtle.Turtle()\n",
Michel Schwab's avatar
Michel Schwab committed
    "repeat_triangle(otto, 40)\n",
    "\n",
    "turtle.mainloop()\n",
    "turtle.bye()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- **Aufgabe 7:** Schreiben Sie eine Funktion `pile_triangle`, die **vier Dreiecke übereinander** zeichnet. Sie soll zwei Argumente  `t` und `l` erhalten. `t` ist eine Schildkröte, `l` eine Ganzzahl. Die Funktion soll die Schildkröte nutzen, um die gleichseitigen Dreiecke mit Seitenlänge `l` zu zeichnen. Die Farbe der Dreiecke soll nicht schwarz sein.  <br>\n",
    "    - *Zusatz* : Jedes Dreieck soll eine eigene Farbe haben.\n",
    "\n",
    "\n",
    "- Eine mögliche Lösung könnte so aussehen:    \n",
    "![pile](https://box.hu-berlin.de/f/0499c8c173cc441e835f/?dl=1)"
Michel Schwab's avatar
Michel Schwab committed
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import turtle\n",
    "# Implementieren Sie hier ihre Funktion und schreiben Sie Kommentare dazu\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "# Testen Sie hier ihre Funktion; fügen Sie auch eigene Tests hinzu\n",
    "otto = turtle.Turtle()\n",
Michel Schwab's avatar
Michel Schwab committed
    "pile_triangle(otto, 80)\n",
    "\n",
    "\n",
    "turtle.mainloop()\n",
    "turtle.bye()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- **Aufgabe 8:** Schreiben Sie eine Funktion `tiled_triangle`, die **drei Dreiecke übereinander und drei Dreiecke nebeneinander** zeichnet. Sie soll zwei Argumente  `t` und `l` erhalten. `t` ist eine Schildkröte, `l` eine Ganzzahl. Die Funktion soll die Schildkröte nutzen, um die gleichseitigen Dreiecke mit Seitenlänge `l` zu zeichnen. Die Farbe der Dreiecke soll nicht schwarz sein.  <br>\n",
    "    - *Zusatz* : Jedes Dreieck soll eine eigene Farbe haben.\n",
    "    \n",
    "\n",
    "- Eine mögliche Lösung könnte so aussehen:\n",
    "![tiled](https://box.hu-berlin.de/f/811e98f587e040098a83/?dl=1)"
Michel Schwab's avatar
Michel Schwab committed
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import turtle\n",
    "# Implementieren Sie hier ihre Funktion und schreiben Sie Kommentare dazu\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "# Testen Sie hier ihre Funktion; fügen Sie auch eigene Tests hinzu\n",
    "otto = turtle.Turtle()\n",
Michel Schwab's avatar
Michel Schwab committed
    "tiled_triangle(otto, 80)\n",
    "\n",
    "turtle.mainloop()\n",
    "turtle.bye()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- **Aufgabe 9:** Schreiben Sie eine Funktion `tiled_triangle`, die **n Dreiecke übereinander und m Dreiecke nebeneinander** zeichnet. Sie soll vier Argumente  `t`, `l`, `n` und `m` erhalten. `t` ist eine Schildkröte, `l`, `n` und `m` Ganzzahlen. Die Funktion soll die Schildkröte nutzen, um `n` gleichseitige Dreiecke mit Seitenlänge `l` übereinander und `m` gleichseitige Dreiecke mit Seitenlänge `l` nebeneinander zu zeichnen.  <br>"
Michel Schwab's avatar
Michel Schwab committed
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import turtle\n",
    "# Implementieren Sie hier ihre Funktion und schreiben Sie Kommentare dazu\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "# Testen Sie hier ihre Funktion; fügen Sie auch eigene Tests hinzu\n",
    "otto = turtle.Turtle()\n",
Michel Schwab's avatar
Michel Schwab committed
    "tiled_triangle(otto, 80,4,6)\n",
    "\n",
    "\n",
    "turtle.mainloop()\n",
    "turtle.bye()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- **Aufgabe 10:** Stellen Sie sich vor, sie müssen `tiled_triangle` so verändern, dass die Funktion ein zusätzliches Argument erhält, nämlich die Anzahl der Ecken. (`tiled_triangle(t,l,m,n,ecken)`) Die geometrische Form (bis jetzt das Dreieck) soll also in Zukunft verallgemeinert werden. Die Funktion selbst müssen Sie nicht schreiben. An welchen Stellen könnte es aber Schwierigkeiten in Ihrer jetzigen Funktion geben?\n",
    "    - *Zusatz*: Schreiben Sie die oben beschriebene Funktion"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- \n",
    "- \n",
    "- \n",
    "- \n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- **Aufgabe 11:** Überraschen Sie mich. Seien Sie **kreativ** und malen Sie mit turtle, auf was Sie Lust haben :) Die einzige Vorgabe ist es, eine ***for*-Schleife**, eine ***while*-Schleife** und eine ***if*-Anweisung** zu benutzen. Gerne können diese verschachtelt sein. Kommentieren Sie Ihren Code. Beschreiben Sie, was die Schleifen und Anweisungen machen. \n",
    "    - Google kann für Inspirationen helfen, mit \"google python turtle drawings\" o.ä. sollten Sie viele Ideen zu sehen bekommen"
   ]
  }
 ],
 "metadata": {
  "language_info": {
   "name": "python",
   "pygments_lexer": "ipython3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}