From da012d103e520dc003a8d56c32414641beaa8e10 Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Mon, 13 Apr 2026 16:56:57 +0200 Subject: initial planet commit --- Info/9/3/Planet/.gitignore | 6 + Info/9/3/Planet/Makefile | 45 ++++ .../3/Planet/algorithmik/if/bedingte-anweisung.md | 2 + .../3/Planet/algorithmik/sequenzen/h5p-sequenz3.md | 30 +++ .../3/Planet/algorithmik/sequenzen/img/canyon1.png | Bin 0 -> 238958 bytes .../3/Planet/algorithmik/sequenzen/img/canyon2.png | Bin 0 -> 235445 bytes .../3/Planet/algorithmik/sequenzen/img/canyon3.png | Bin 0 -> 263308 bytes .../algorithmik/sequenzen/img/h5p-sequenzen3.png | Bin 0 -> 3836 bytes .../algorithmik/sequenzen/img/sequenzen1-file.png | Bin 0 -> 5676 bytes .../algorithmik/sequenzen/img/sequenzen2-file.png | Bin 0 -> 4811 bytes Info/9/3/Planet/algorithmik/sequenzen/sequenzen.md | 95 ++++++++ Info/9/3/Planet/algorithmik/while/.gitignore | 7 + .../while/aufgabe-4_3-struktogramm.tikz | 8 + .../algorithmik/while/bedingte-wiederholung.md | 254 ++++++++++++++++++++ .../algorithmik/while/img/bergkette-flowchart.png | Bin 0 -> 34913 bytes .../9/3/Planet/algorithmik/while/img/rover-4_2.png | Bin 0 -> 681281 bytes .../9/3/Planet/algorithmik/while/img/rover-4_3.png | Bin 0 -> 38536 bytes .../Planet/algorithmik/while/img/sammle-steine.png | Bin 0 -> 161842 bytes .../Planet/algorithmik/while/img/suche-stein1.png | Bin 0 -> 82526 bytes .../Planet/algorithmik/while/img/suche-stein2.png | Bin 0 -> 89277 bytes .../Planet/algorithmik/while/img/suche-stein3.png | Bin 0 -> 82776 bytes .../algorithmik/while/sucheStein-flowchart.tikz | 41 ++++ .../algorithmik/while/sucheStein-struktogramm.tikz | 5 + Info/9/3/Planet/algorithmik/while/tuwas.tex | 23 ++ .../Planet/algorithmik/while/while-flowchart.tikz | 40 ++++ .../algorithmik/while/while-struktogramm.tikz | 5 + .../img/20170122_gasa-gullies-kevin-gill.jpg | Bin 0 -> 438909 bytes ..._365660222_ZP4JkbCB5R5DuYGQgF2TGgkv3cAgmrMB.jpg | Bin 0 -> 63370 bytes ..._365660222_ZP4JkbCB5R5DuYGQgF2TGgkv3cAgmrMB.png | Bin 0 -> 21695 bytes Info/9/3/Planet/img/NASA_Mars_Rover.jpg | Bin 0 -> 210787 bytes ...a-martian-rock-called-rocknest-3-3da0a3-640.jpg | Bin 0 -> 83830 bytes Info/9/3/Planet/img/base-dome.svg | 1 + Info/9/3/Planet/img/bergkette-abfahren.png | Bin 0 -> 221570 bytes Info/9/3/Planet/img/cave-entrance.svg | 1 + Info/9/3/Planet/img/earth-crack.svg | 1 + Info/9/3/Planet/img/lunar-module.svg | 1 + Info/9/3/Planet/img/map.png | Bin 0 -> 4259492 bytes Info/9/3/Planet/img/map.xcf | Bin 0 -> 8680240 bytes Info/9/3/Planet/img/mars.jpg | Bin 0 -> 639286 bytes Info/9/3/Planet/img/mountains.svg | 1 + Info/9/3/Planet/img/online-ide-overview.png | Bin 0 -> 271919 bytes Info/9/3/Planet/img/online-ide-overview.xcf | Bin 0 -> 601931 bytes Info/9/3/Planet/img/stone-pile.svg | 1 + Info/9/3/Planet/karten-beschreibung.md | 5 + Info/9/3/Planet/modellierung/landung/.gitignore | 5 + .../Planet/modellierung/landung/datentypen-quiz.md | 6 + .../modellierung/landung/gestein-object.plantuml | 7 + .../modellierung/landung/huegel-object.plantuml | 6 + .../modellierung/landung/img/default-planet.png | Bin 0 -> 267345 bytes .../landung/img/h5p-datentyp-zuordnung.png | Bin 0 -> 5038 bytes .../modellierung/landung/koordinatensystem.tikz | 4 + .../modellierung/landung/marke-object.plantuml | 6 + .../3/Planet/modellierung/landung/modellierung.md | 119 ++++++++++ Info/9/3/Planet/modellierung/landung/online-ide.md | 107 +++++++++ .../modellierung/landung/rover-object.plantuml | 7 + Info/9/3/Planet/modellierung/landung/todo.md | 8 + Info/9/3/Planet/modellierung/landung/welcome.md | 38 +++ .../Planet/modellierung/zwischenlager/bauplaene.md | 17 ++ .../zwischenlager/img/block-comment.png | Bin 0 -> 34789 bytes .../zwischenlager/img/fahreDreiFelder.png | Bin 0 -> 56165 bytes .../zwischenlager/img/h5p-methoden-sortieren.png | Bin 0 -> 4591 bytes .../zwischenlager/img/h5p-methoden-testen.png | Bin 0 -> 3918 bytes .../zwischenlager/img/methoden-teile.png | Bin 0 -> 30781 bytes .../zwischenlager/img/oide-methodenTest.png | Bin 0 -> 9106 bytes .../modellierung/zwischenlager/img/oide-rover.png | Bin 0 -> 17152 bytes .../modellierung/zwischenlager/img/quadrat.png | Bin 0 -> 30779 bytes .../zwischenlager/img/zusatzaufgabe1.png | Bin 0 -> 209148 bytes .../zwischenlager/img/zusatzaufgabe2.png | Bin 0 -> 205558 bytes .../zwischenlager/methoden-schreiben.md | 260 +++++++++++++++++++++ .../zwischenlager/methoden-sortieren-quiz.md | 6 + .../methoden-testen-h5p-questionset.txt | 26 +++ .../zwischenlager/methoden-testen-quiz.md | 7 + .../modellierung/zwischenlager/methoden-testen.md | 142 +++++++++++ Info/9/3/Planet/pandoc/center-img.lua | 14 ++ Info/9/3/Planet/pandoc/color-text.lua | 15 ++ Info/9/3/Planet/pandoc/default-metadata.yml | 3 + Info/9/3/Planet/pandoc/wrap-merke.lua | 7 + 77 files changed, 1382 insertions(+) create mode 100644 Info/9/3/Planet/.gitignore create mode 100644 Info/9/3/Planet/Makefile create mode 100644 Info/9/3/Planet/algorithmik/if/bedingte-anweisung.md create mode 100644 Info/9/3/Planet/algorithmik/sequenzen/h5p-sequenz3.md create mode 100644 Info/9/3/Planet/algorithmik/sequenzen/img/canyon1.png create mode 100644 Info/9/3/Planet/algorithmik/sequenzen/img/canyon2.png create mode 100644 Info/9/3/Planet/algorithmik/sequenzen/img/canyon3.png create mode 100644 Info/9/3/Planet/algorithmik/sequenzen/img/h5p-sequenzen3.png create mode 100644 Info/9/3/Planet/algorithmik/sequenzen/img/sequenzen1-file.png create mode 100644 Info/9/3/Planet/algorithmik/sequenzen/img/sequenzen2-file.png create mode 100644 Info/9/3/Planet/algorithmik/sequenzen/sequenzen.md create mode 100644 Info/9/3/Planet/algorithmik/while/.gitignore create mode 100644 Info/9/3/Planet/algorithmik/while/aufgabe-4_3-struktogramm.tikz create mode 100644 Info/9/3/Planet/algorithmik/while/bedingte-wiederholung.md create mode 100644 Info/9/3/Planet/algorithmik/while/img/bergkette-flowchart.png create mode 100644 Info/9/3/Planet/algorithmik/while/img/rover-4_2.png create mode 100644 Info/9/3/Planet/algorithmik/while/img/rover-4_3.png create mode 100644 Info/9/3/Planet/algorithmik/while/img/sammle-steine.png create mode 100644 Info/9/3/Planet/algorithmik/while/img/suche-stein1.png create mode 100644 Info/9/3/Planet/algorithmik/while/img/suche-stein2.png create mode 100644 Info/9/3/Planet/algorithmik/while/img/suche-stein3.png create mode 100644 Info/9/3/Planet/algorithmik/while/sucheStein-flowchart.tikz create mode 100644 Info/9/3/Planet/algorithmik/while/sucheStein-struktogramm.tikz create mode 100644 Info/9/3/Planet/algorithmik/while/tuwas.tex create mode 100644 Info/9/3/Planet/algorithmik/while/while-flowchart.tikz create mode 100644 Info/9/3/Planet/algorithmik/while/while-struktogramm.tikz create mode 100644 Info/9/3/Planet/img/20170122_gasa-gullies-kevin-gill.jpg create mode 100644 Info/9/3/Planet/img/220_F_365660222_ZP4JkbCB5R5DuYGQgF2TGgkv3cAgmrMB.jpg create mode 100644 Info/9/3/Planet/img/220_F_365660222_ZP4JkbCB5R5DuYGQgF2TGgkv3cAgmrMB.png create mode 100644 Info/9/3/Planet/img/NASA_Mars_Rover.jpg create mode 100644 Info/9/3/Planet/img/a-martian-rock-called-rocknest-3-3da0a3-640.jpg create mode 100644 Info/9/3/Planet/img/base-dome.svg create mode 100644 Info/9/3/Planet/img/bergkette-abfahren.png create mode 100644 Info/9/3/Planet/img/cave-entrance.svg create mode 100644 Info/9/3/Planet/img/earth-crack.svg create mode 100644 Info/9/3/Planet/img/lunar-module.svg create mode 100644 Info/9/3/Planet/img/map.png create mode 100644 Info/9/3/Planet/img/map.xcf create mode 100644 Info/9/3/Planet/img/mars.jpg create mode 100644 Info/9/3/Planet/img/mountains.svg create mode 100644 Info/9/3/Planet/img/online-ide-overview.png create mode 100644 Info/9/3/Planet/img/online-ide-overview.xcf create mode 100644 Info/9/3/Planet/img/stone-pile.svg create mode 100644 Info/9/3/Planet/karten-beschreibung.md create mode 100644 Info/9/3/Planet/modellierung/landung/.gitignore create mode 100644 Info/9/3/Planet/modellierung/landung/datentypen-quiz.md create mode 100644 Info/9/3/Planet/modellierung/landung/gestein-object.plantuml create mode 100644 Info/9/3/Planet/modellierung/landung/huegel-object.plantuml create mode 100644 Info/9/3/Planet/modellierung/landung/img/default-planet.png create mode 100644 Info/9/3/Planet/modellierung/landung/img/h5p-datentyp-zuordnung.png create mode 100644 Info/9/3/Planet/modellierung/landung/koordinatensystem.tikz create mode 100644 Info/9/3/Planet/modellierung/landung/marke-object.plantuml create mode 100644 Info/9/3/Planet/modellierung/landung/modellierung.md create mode 100644 Info/9/3/Planet/modellierung/landung/online-ide.md create mode 100644 Info/9/3/Planet/modellierung/landung/rover-object.plantuml create mode 100644 Info/9/3/Planet/modellierung/landung/todo.md create mode 100644 Info/9/3/Planet/modellierung/landung/welcome.md create mode 100644 Info/9/3/Planet/modellierung/zwischenlager/bauplaene.md create mode 100644 Info/9/3/Planet/modellierung/zwischenlager/img/block-comment.png create mode 100644 Info/9/3/Planet/modellierung/zwischenlager/img/fahreDreiFelder.png create mode 100644 Info/9/3/Planet/modellierung/zwischenlager/img/h5p-methoden-sortieren.png create mode 100644 Info/9/3/Planet/modellierung/zwischenlager/img/h5p-methoden-testen.png create mode 100644 Info/9/3/Planet/modellierung/zwischenlager/img/methoden-teile.png create mode 100644 Info/9/3/Planet/modellierung/zwischenlager/img/oide-methodenTest.png create mode 100644 Info/9/3/Planet/modellierung/zwischenlager/img/oide-rover.png create mode 100644 Info/9/3/Planet/modellierung/zwischenlager/img/quadrat.png create mode 100644 Info/9/3/Planet/modellierung/zwischenlager/img/zusatzaufgabe1.png create mode 100644 Info/9/3/Planet/modellierung/zwischenlager/img/zusatzaufgabe2.png create mode 100644 Info/9/3/Planet/modellierung/zwischenlager/methoden-schreiben.md create mode 100644 Info/9/3/Planet/modellierung/zwischenlager/methoden-sortieren-quiz.md create mode 100644 Info/9/3/Planet/modellierung/zwischenlager/methoden-testen-h5p-questionset.txt create mode 100644 Info/9/3/Planet/modellierung/zwischenlager/methoden-testen-quiz.md create mode 100644 Info/9/3/Planet/modellierung/zwischenlager/methoden-testen.md create mode 100644 Info/9/3/Planet/pandoc/center-img.lua create mode 100644 Info/9/3/Planet/pandoc/color-text.lua create mode 100644 Info/9/3/Planet/pandoc/default-metadata.yml create mode 100644 Info/9/3/Planet/pandoc/wrap-merke.lua diff --git a/Info/9/3/Planet/.gitignore b/Info/9/3/Planet/.gitignore new file mode 100644 index 00000000..e9ac88a1 --- /dev/null +++ b/Info/9/3/Planet/.gitignore @@ -0,0 +1,6 @@ +plots/ +*.html +*.pdf +*.log +*.aux +_minted/ diff --git a/Info/9/3/Planet/Makefile b/Info/9/3/Planet/Makefile new file mode 100644 index 00000000..f825714e --- /dev/null +++ b/Info/9/3/Planet/Makefile @@ -0,0 +1,45 @@ +PRINTOUT=modellierung/landung/modellierung.pdf \ + modellierung/zwischenlager/methoden-testen.pdf \ + modellierung/zwischenlager/methoden-schreiben.pdf \ + algorithmik/sequenzen/sequenzen.pdf \ + algorithmik/while/bedingte-wiederholung.pdf + +PLOTSRCS := $(shell find -name "*.plantuml") +TIKSSRC := $(shell find -name "*.tikz") +PLOTS := $(PLOTSRCS:.plantuml=.svg) $(TIKSSRC:.tikz=.svg) + +SRC := $(shell find -name "*.md") + +PANDOC_FILTER := --filter pandoc-plot +PANDOC_FILTER += --lua-filter pandoc/color-text.lua +PANDOC_FILTER += --lua-filter pandoc/wrap-merke.lua +PANDOC_FILTER += --lua-filter pandoc/center-img.lua + +COMMON_PANDOC_OPTIONS := --embed-resources --standalone \ + $(PANDOC_FILTER) \ + --metadata-file=pandoc/default-metadata.yml + +PANDOC=pandoc $(COMMON_PANDOC_OPTIONS) + +all: $(PLOTS) $(SRC:.md=.html) $(PRINTOUT) + +%.html: %.md planet-mebis-page-template.html Makefile + $(PANDOC) --template planet-mebis-page-template.html --resource-path="$(@D):." $< > $@ + +%.pdf: %.html Makefile + chromium --headless --disable-gpu --print-to-pdf="$@" --generate-pdf-document-outline --no-pdf-header-footer $< + +%.svg: %.plantuml Makefile + plantuml --svg $< > $@ + +%.svg: %.tikz Makefile + tikztosvg -l shapes.geometric -l arrows.meta -l positioning -l calc -p struktex -o $@ $< + inkscape --actions="page-fit-to-selection" -o $@ $@ + +algorithmik/while/bedingte-wiederholung.html: algorithmik/while/tuwas.svg + +algorithmik/while/tuwas.pdf: algorithmik/while/tuwas.tex + latexmk -pdf -outdir=$(@D) $< + +algorithmik/while/tuwas.svg: algorithmik/while/tuwas.pdf + pdf2svg $< $@ diff --git a/Info/9/3/Planet/algorithmik/if/bedingte-anweisung.md b/Info/9/3/Planet/algorithmik/if/bedingte-anweisung.md new file mode 100644 index 00000000..0edf6cc1 --- /dev/null +++ b/Info/9/3/Planet/algorithmik/if/bedingte-anweisung.md @@ -0,0 +1,2 @@ +:::{.terminal} +::: diff --git a/Info/9/3/Planet/algorithmik/sequenzen/h5p-sequenz3.md b/Info/9/3/Planet/algorithmik/sequenzen/h5p-sequenz3.md new file mode 100644 index 00000000..1a723d01 --- /dev/null +++ b/Info/9/3/Planet/algorithmik/sequenzen/h5p-sequenz3.md @@ -0,0 +1,30 @@ +![](img/canyon3.png){.center} + +``` +rover.*fahre();* +*rover.drehe("rechts");* +*rover*.fahre(); +rover.fahre(); +rover.drehe(*"links"*); +*rover.fahre();* +*rover.fahre();* +*rover.drehe("links");* +*rover.fahre();* +*rover.fahre();* +*rover.drehe("rechts");* +*rover.fahre();* +*rover.drehe("links");* +*rover.fahre();* +*rover.drehe("rechts");* +*rover.fahre();* +*rover.fahre();* +*rover.drehe("rechts");* +*rover.fahre();* +*rover.fahre();* +*rover.fahre();* +*rover.drehe("rechts");* +*rover.fahre();* +*rover.drehe("links");* +*rover.fahre();* +``` + diff --git a/Info/9/3/Planet/algorithmik/sequenzen/img/canyon1.png b/Info/9/3/Planet/algorithmik/sequenzen/img/canyon1.png new file mode 100644 index 00000000..8a33caf8 Binary files /dev/null and b/Info/9/3/Planet/algorithmik/sequenzen/img/canyon1.png differ diff --git a/Info/9/3/Planet/algorithmik/sequenzen/img/canyon2.png b/Info/9/3/Planet/algorithmik/sequenzen/img/canyon2.png new file mode 100644 index 00000000..9dfa9478 Binary files /dev/null and b/Info/9/3/Planet/algorithmik/sequenzen/img/canyon2.png differ diff --git a/Info/9/3/Planet/algorithmik/sequenzen/img/canyon3.png b/Info/9/3/Planet/algorithmik/sequenzen/img/canyon3.png new file mode 100644 index 00000000..a3053705 Binary files /dev/null and b/Info/9/3/Planet/algorithmik/sequenzen/img/canyon3.png differ diff --git a/Info/9/3/Planet/algorithmik/sequenzen/img/h5p-sequenzen3.png b/Info/9/3/Planet/algorithmik/sequenzen/img/h5p-sequenzen3.png new file mode 100644 index 00000000..b744a4ee Binary files /dev/null and b/Info/9/3/Planet/algorithmik/sequenzen/img/h5p-sequenzen3.png differ diff --git a/Info/9/3/Planet/algorithmik/sequenzen/img/sequenzen1-file.png b/Info/9/3/Planet/algorithmik/sequenzen/img/sequenzen1-file.png new file mode 100644 index 00000000..bedf4714 Binary files /dev/null and b/Info/9/3/Planet/algorithmik/sequenzen/img/sequenzen1-file.png differ diff --git a/Info/9/3/Planet/algorithmik/sequenzen/img/sequenzen2-file.png b/Info/9/3/Planet/algorithmik/sequenzen/img/sequenzen2-file.png new file mode 100644 index 00000000..85096383 Binary files /dev/null and b/Info/9/3/Planet/algorithmik/sequenzen/img/sequenzen2-file.png differ diff --git a/Info/9/3/Planet/algorithmik/sequenzen/sequenzen.md b/Info/9/3/Planet/algorithmik/sequenzen/sequenzen.md new file mode 100644 index 00000000..3ac07df2 --- /dev/null +++ b/Info/9/3/Planet/algorithmik/sequenzen/sequenzen.md @@ -0,0 +1,95 @@ +:::{.terminal} +Um mit dem Rover die Landezone zu verlassen, müssen wir durch einen Canyon fahren. +Deine Aufgabe ist es den Rover erfolgreich zu den markierten Stellen zu lenken. +Dazu musst du ihn richtig programmieren. +Wir verwenden *Java* zum Programmieren. +Das ist nicht nur der Name einer indonesischen Insel, sondern gleichzeitig auch der Name der weltweit sehr beliebten Programmiersprache. + +Der Rover befolgt einzelne Befehle, sogenannte **Anweisungen**. +**Anweisungen** können in einer nacheinander abgearbeitet werden. +Eine Abfolge von **Anweisungen** nennt man eine **Sequenz**. +_ +::: + +:::{.merke data-class="Merke: Anweisungen und Sequenzen"} +Eine **Sequenz** ist eine Folge von **Anweisungen**, die in der angegebenen Reihenfolge abgearbeitet werden. + +Ein **Programm** ist eine Folge von Anweisungen in einer *Programmiersprache*. +::: + +#### Schritt 2.1 + +Der Eingang des Canyon liegt direkt vor dem Rover. +Jetzt musst du ihn nur noch bewegen. + +![](img/canyon1.png){.center} + +:::{.aufgabe data-class="Aufgabe 1.1"} +::: {.columns align=center} +:::: {.column width=30%} +![](img/sequenzen1-file.png) +:::: + +:::: {.column width=70%} +Öffne die Datei **Sequenzen1** in der [Online-IDE](online-ide.de). +Schreibe eine Sequenz von Anweisungen, um den Rover auf die grüne Markierung zu fahren. + +*Teste deine Sequenz in dem du den grünen Startknopf ▶ drückst.* +:::: +::: +::: + +:::{.tipp style="margin-top:1em;"} +*Die Stelle, an der du im Code etwas ergänzen musst, ist mit `// TODO: ...`{.java} markiert.* +::: + +#### Schritt 2.2 + +:::{.terminal} +Im Canyon angekommen, verzweigt sich der Weg. +Das letzte Team hat bereits die richtige Abzweigung markiert. +_ +::: + +![](img/canyon2.png){.center} + +:::{.aufgabe data-class="Aufgabe 1.2"} +::: {.columns align=center} +:::: {.column width=30%} +![](img/sequenzen2-file.png) +:::: + +:::: {.column width=70%} +Öffne die Datei **Sequenzen2** in der Online-IDE. +Schreibe eine Sequenz von Anweisungen, um den Rover auf die grüne Markierung zu fahren. + +*Teste deine Sequenz in dem du den grünen Startknopf ▶ drückst.* +:::: +::: +::: + +:::{.tipp style="margin-top:1em;"} +*Du kannst die Fahrtrichtung mit der **Anweisung** `rover.drehe("rechts");`{.java} beziehungsweise `rover.drehe("links");`{.java} ändern.* +::: + +:::{.terminal} +Sehr gut der Canyon liegt fast hinter uns. +Du hast gelernt wie du den Rover durch eine **Sequenz** von **Anweisungen** kontrollierst. +Im letzte Stück des Canyons müssen wir einige Kurven fahren. +_ +::: + +:::{.aufgabe data-class="Aufgabe 1.3"} +::: {.columns align=center} +:::: {.column width=30%} +![](img/h5p-sequenzen3.png) +:::: + +:::: {.column width=70%} +Öffne die Aktivität **Planet: Sequenzen3** in diesem Kurs. +Bringe die Anweisungen in die richtige Reihenfolge, um den Rover auf die grüne Markierung zu fahren. + +*Wenn du willst kannst du deine Seuqenz in der Online-IDE testen.* +:::: +::: +::: diff --git a/Info/9/3/Planet/algorithmik/while/.gitignore b/Info/9/3/Planet/algorithmik/while/.gitignore new file mode 100644 index 00000000..f236d30e --- /dev/null +++ b/Info/9/3/Planet/algorithmik/while/.gitignore @@ -0,0 +1,7 @@ +aufgabe-4_3-struktogramm.svg +sucheStein-flowchart.svg +sucheStein-struktogramm.svg +tuwas.* +!tuwas.tex +while-flowchart.svg +while-struktogramm.svg diff --git a/Info/9/3/Planet/algorithmik/while/aufgabe-4_3-struktogramm.tikz b/Info/9/3/Planet/algorithmik/while/aufgabe-4_3-struktogramm.tikz new file mode 100644 index 00000000..e0d52af9 --- /dev/null +++ b/Info/9/3/Planet/algorithmik/while/aufgabe-4_3-struktogramm.tikz @@ -0,0 +1,8 @@ +\begin{struktogramm}(90,50) + \assign{fahre vorwärts} + \while{solange Gestein vorhanden} + \assign{nimm Gestein} + \assign{fahre vorwärts} + \whileend + \assign{setze eine Marke} +\end{struktogramm} diff --git a/Info/9/3/Planet/algorithmik/while/bedingte-wiederholung.md b/Info/9/3/Planet/algorithmik/while/bedingte-wiederholung.md new file mode 100644 index 00000000..7e7d89cb --- /dev/null +++ b/Info/9/3/Planet/algorithmik/while/bedingte-wiederholung.md @@ -0,0 +1,254 @@ +:::{.terminal} +Um unser gesuchten Mineral zu finden, wollen wir Gesteinsproben untersuchen. +Der Rover kann Gestein unter sich aufnehmen damit es später genauer analysiert werden kann. +Es ist deine Aufgabe eine **Methode** zu schreiben, mit der der Rover auf das Gestein vor ihm fährt und es aufsammelt. +Das letzte Team hat die folgenden Vorschläge gemacht. +_ +::: + +::: {.columns} +:::: {.column width=33%} +![](img/suche-stein1.png) + +```java +void sucheGestein() +{ + fahre(); + fahre(); + nimmGestein(); +} +``` +:::: + +:::: {.column width=33%} +![](img/suche-stein2.png) + +```java +void sucheGestein() +{ + fahre(); fahre(); fahre(); + fahre(); fahre(); fahre(); + fahre(); fahre(); + nimmGestein(); +} +``` +:::: + +:::: {.column width=33%} + +![](img/suche-stein3.png) + +```java +void sucheGestein() +{ + wiederhole solange kein Stein vorhanden + fahre(); + nimmGestein(); +} +``` +:::: +::: + +:::{.merke data-class="Merke: Wiederholung mit Bedingung"} +Mit einer **Wiederholung mit Bedingung** (while-Schleife) können bestimmte [Anweisungen]{color="orange"} mehrmals ausgeführt werden. +Solange die [Bedingung]{color="magenta"} *wahr* ist, wird die Sequenz wiederholt. +Wenn die Bedingung *falsch* ist, wird der Programmcode nach der Wiederholung fortgesetzt. + +::: {.columns} +:::: {.column width=33%} +**Programmcode:** + + +while([Bedingung]{color="magenta"})
+{
+[Anweisungen]{style="color: orange; margin-left: 20px;"}
+} +
+:::: + +:::: {.column width=33%} +**Programmablauf:** + +![](while-flowchart.svg) +:::: + +:::: {.column width=33%} +**Struktogramm:** + +![](while-struktogramm.svg) +:::: +::: +::: + +![](img/suche-stein3.png){.center} + +:::{.terminal} +Der letzte Vorschlag unseres Teams sieht schon nicht schlecht aus. +Leider ist der vorgeschlagene Code noch kein korrektes Java Programm. +In Java kann das **kein** in *kein Gestein* durch ein `!`{.java} ausgedrückt werden. +_ +::: + +:::{.aufgabe data-class="Aufgabe 4.1"} +Übertrage die Methode `sucheStein()` in die drei Darstellungsformen. + +:::: {.columns} +::::: {.column width=33%} +**Programmcode:** +
+::::: + +::::: {.column width=33%} +**Programmablauf:** +::::: + +::::: {.column width=33%} +**Struktogramm:** +::::: +:::: +::: + +:::{.terminal} +Nun bist du auf dich selbst gestellt. +Schaffst du die unterschiedlichen Aufgaben auf der Planetenoberfläche? +_ +::: + +#### Schritt 4.1 + +Vervöllständige die Methode `sammleSteine()`{.java} der Klasse `Rover` in der [Online-IDE](online-ide.de), mit der der Rover eine beliebig lange Gesteinsreihe aufsammeln kann. + +![](img/sammle-steine.png){.center} + +Teste die Methode in der Datei **SammleSteine**. + +#### Schritt 4.2 + +Mit der Methode `bergketteAbfahren()`, kann der Rover an einer beliebig langen Bergkette entlang fahren. +Der Programmablaufplan beschreibt den Aufbau der Methode. + +::: {.columns} +:::: {.column width=60%} +![](img/bergkette-abfahren.png) +:::: + +:::: {.column width=40%} +![](img/bergkette-flowchart.png){style="max-height:6cm;"} +:::: +::: + +* Überlege dir zunächst genau, wo der Rover nach Aufruf der Methode steht und an welchen Stellen er Marken gesetzt hat. +* Setze die Methode `bergketteAbfahren()`{.java} in der [Online-IDE](online-ide.de) in der Klasse `Rover` um. +* Teste die Methode in der Datei **BergketteAbfahren** und finde heraus, ob deine Vermutung richtig war. + +#### Schritt 4.3 + +::: {.columns} +:::: {.column width=50%} +:::::{.aufgabe data-class="Aufgabe 4.2"} +Analysiere die folgenden Wiederholungen im abgebildeten Szenario, indem du jeweils angibst, wie oft die Bedingung überprüft wird, wie oft die Anweisung ausgeführt wird, auf welchen Feldern eine Marke gesetzt wird und auf welchem Feld der Rover nach Ausführung des Programms steht. +::::: +:::: + +:::: {.column width=50%} +![](img/rover-4_2.png) +:::: +::: + + + + + + + + + + + + +
+ **Code A** + + ```java + while(huegelVorhanden("links")) + { + fahre(); + } + ``` + + **Code B** + + ```java + while(huegelVorhanden("rechts")) + { + fahre(); + } + ``` + + **Code C** + + ```java + while(!huegelVorhanden("links")) + { + fahre(); + } + ``` +
+ **Code D** + + ```java + while(!huegelVorhanden("rechts")) + { + fahre(); + } + ``` + + **Code E** + + ```java + while(huegelVorhanden("rechts")) + { + fahre(); + setzeMarke(); + } + ``` + + **Code F** + + ```java + while(!huegelVorhanden("links")) + { + fahre(); + } + setzeMarke(); + ``` +
+ +::: {.columns} +:::: {.column width=50%} +:::::{.aufgabe data-class="Aufgabe 4.3"} +Der Rover soll alle Gesteine sammeln. +Dazu hat Tim einen Algorithmus verfasst und ihn als Struktogramm dargestellt. +Beschreibe, welches Problem im abgebildeten Szenario auftritt. +::::: +:::: + +:::: {.column width=50%} +![](img/rover-4_3.png) + +![](aufgabe-4_3-struktogramm.svg) +:::: +::: + +::: {.columns} +:::: {.column width=50%} +:::::{.aufgabe data-class="Aufgabe: 4.4"} +Im nebenstehenden Code befinden sich 6 Fehler. +Gib die Zeilennummern der Fehler an und beschreibe den Fehler kurz. +::::: +:::: + +:::: {.column width=50%} +![](tuwas.svg) +:::: +::: diff --git a/Info/9/3/Planet/algorithmik/while/img/bergkette-flowchart.png b/Info/9/3/Planet/algorithmik/while/img/bergkette-flowchart.png new file mode 100644 index 00000000..3c620074 Binary files /dev/null and b/Info/9/3/Planet/algorithmik/while/img/bergkette-flowchart.png differ diff --git a/Info/9/3/Planet/algorithmik/while/img/rover-4_2.png b/Info/9/3/Planet/algorithmik/while/img/rover-4_2.png new file mode 100644 index 00000000..0a423f1c Binary files /dev/null and b/Info/9/3/Planet/algorithmik/while/img/rover-4_2.png differ diff --git a/Info/9/3/Planet/algorithmik/while/img/rover-4_3.png b/Info/9/3/Planet/algorithmik/while/img/rover-4_3.png new file mode 100644 index 00000000..25d4089e Binary files /dev/null and b/Info/9/3/Planet/algorithmik/while/img/rover-4_3.png differ diff --git a/Info/9/3/Planet/algorithmik/while/img/sammle-steine.png b/Info/9/3/Planet/algorithmik/while/img/sammle-steine.png new file mode 100644 index 00000000..6480a927 Binary files /dev/null and b/Info/9/3/Planet/algorithmik/while/img/sammle-steine.png differ diff --git a/Info/9/3/Planet/algorithmik/while/img/suche-stein1.png b/Info/9/3/Planet/algorithmik/while/img/suche-stein1.png new file mode 100644 index 00000000..63ab8b40 Binary files /dev/null and b/Info/9/3/Planet/algorithmik/while/img/suche-stein1.png differ diff --git a/Info/9/3/Planet/algorithmik/while/img/suche-stein2.png b/Info/9/3/Planet/algorithmik/while/img/suche-stein2.png new file mode 100644 index 00000000..dd73e7bd Binary files /dev/null and b/Info/9/3/Planet/algorithmik/while/img/suche-stein2.png differ diff --git a/Info/9/3/Planet/algorithmik/while/img/suche-stein3.png b/Info/9/3/Planet/algorithmik/while/img/suche-stein3.png new file mode 100644 index 00000000..4580c60e Binary files /dev/null and b/Info/9/3/Planet/algorithmik/while/img/suche-stein3.png differ diff --git a/Info/9/3/Planet/algorithmik/while/sucheStein-flowchart.tikz b/Info/9/3/Planet/algorithmik/while/sucheStein-flowchart.tikz new file mode 100644 index 00000000..393e85df --- /dev/null +++ b/Info/9/3/Planet/algorithmik/while/sucheStein-flowchart.tikz @@ -0,0 +1,41 @@ +\tikzset{ + process/.style={ + rectangle, + minimum width=2.5cm, minimum height=1cm, + draw, + text centered + }, + % Decision (diamond) + decision/.style={ + diamond, aspect=2, + minimum width=2.5cm, minimum height=1cm, + draw, + text width=3cm, + align=center + }, + % Input/Output (parallelogram) + io/.style={ + trapezium, trapezium left angle=70, trapezium right angle=110, + minimum width=2.5cm, minimum height=1cm, + draw, fill=green!20, + text centered + }, + % Arrow style + arrow/.style={ + thick, ->, >=Stealth + } +} + +\begin{tikzpicture} + \node (start) {}; + \node[decision, below=of start] (decision1) {\textcolor{magenta}{Kein Gestein vorhanden}}; + \node[process, below=of decision1] (process2) {\textcolor{orange}{fahre()}}; + + % Arrows + \draw[arrow] (start) -- (decision1); + \draw[arrow] (decision1) -- node[right] {Wahr} (process2); + + % Decision branch + \draw[arrow] (decision1) -- node[above] {Falsch} ($(decision1.east) + (1cm, 0)$) -- ($(decision1.east) + (1cm, -3cm)$); + \draw[arrow] (process2.west) -| (-3, -2.4) |- (decision1.west); +\end{tikzpicture} diff --git a/Info/9/3/Planet/algorithmik/while/sucheStein-struktogramm.tikz b/Info/9/3/Planet/algorithmik/while/sucheStein-struktogramm.tikz new file mode 100644 index 00000000..1ca2403a --- /dev/null +++ b/Info/9/3/Planet/algorithmik/while/sucheStein-struktogramm.tikz @@ -0,0 +1,5 @@ +\begin{struktogramm}(90,50) + \while{solange \textcolor{magenta}{kein Gestein vorhanden}} + \assign{\textcolor{orange}{fahre()}} + \whileend +\end{struktogramm} diff --git a/Info/9/3/Planet/algorithmik/while/tuwas.tex b/Info/9/3/Planet/algorithmik/while/tuwas.tex new file mode 100644 index 00000000..7d7c4b6c --- /dev/null +++ b/Info/9/3/Planet/algorithmik/while/tuwas.tex @@ -0,0 +1,23 @@ +\documentclass[border={8mm, 0mm, 2mm, 0mm}, varwidth]{standalone} +\usepackage{minted} +\begin{document} +\begin{minipage}{6cm} +\begin{minted}[ +linenos, +frame=lines, +]{java} +boolean tueWas() +{ + while(!gesteinVorhanden() + { + fahre(); + } + drehe("rechts"); + while(!huegelVorhanden(vorne)) + fahre(); + } + nimmGestein() +} +\end{minted} +\end{minipage} +\end{document} diff --git a/Info/9/3/Planet/algorithmik/while/while-flowchart.tikz b/Info/9/3/Planet/algorithmik/while/while-flowchart.tikz new file mode 100644 index 00000000..e11c711d --- /dev/null +++ b/Info/9/3/Planet/algorithmik/while/while-flowchart.tikz @@ -0,0 +1,40 @@ +\tikzset{ + process/.style={ + rectangle, + minimum width=2.5cm, minimum height=1cm, + draw, + text centered + }, + % Decision (diamond) + decision/.style={ + diamond, aspect=2, + minimum width=2.5cm, minimum height=1cm, + draw, + text centered + }, + % Input/Output (parallelogram) + io/.style={ + trapezium, trapezium left angle=70, trapezium right angle=110, + minimum width=2.5cm, minimum height=1cm, + draw, fill=green!20, + text centered + }, + % Arrow style + arrow/.style={ + thick, ->, >=Stealth + } +} + +\begin{tikzpicture} + \node (start) {}; + \node[decision, below=of start] (decision1) {\textcolor{magenta}{Bedingung}}; + \node[process, below=of decision1] (process2) {\textcolor{orange}{Anweisungen}}; + + % Arrows + \draw[arrow] (start) -- (decision1); + \draw[arrow] (decision1) -- node[right] {Wahr} (process2); + + % Decision branch + \draw[arrow] (decision1) -- node[above] {Falsch} ($(decision1.east) + (1cm, 0)$) -- ($(decision1.east) + (1cm, -3cm)$); + \draw[arrow] (process2.west) -| (-2,-2) |- (decision1.west); +\end{tikzpicture} diff --git a/Info/9/3/Planet/algorithmik/while/while-struktogramm.tikz b/Info/9/3/Planet/algorithmik/while/while-struktogramm.tikz new file mode 100644 index 00000000..cecc55ad --- /dev/null +++ b/Info/9/3/Planet/algorithmik/while/while-struktogramm.tikz @@ -0,0 +1,5 @@ +\begin{struktogramm}(70,50) + \while{solange \textcolor{magenta}{Bedingung}} + \assign{\textcolor{orange}{Anweisungen}} + \whileend +\end{struktogramm} diff --git a/Info/9/3/Planet/img/20170122_gasa-gullies-kevin-gill.jpg b/Info/9/3/Planet/img/20170122_gasa-gullies-kevin-gill.jpg new file mode 100644 index 00000000..ff35d27e Binary files /dev/null and b/Info/9/3/Planet/img/20170122_gasa-gullies-kevin-gill.jpg differ diff --git a/Info/9/3/Planet/img/220_F_365660222_ZP4JkbCB5R5DuYGQgF2TGgkv3cAgmrMB.jpg b/Info/9/3/Planet/img/220_F_365660222_ZP4JkbCB5R5DuYGQgF2TGgkv3cAgmrMB.jpg new file mode 100644 index 00000000..67b92e83 Binary files /dev/null and b/Info/9/3/Planet/img/220_F_365660222_ZP4JkbCB5R5DuYGQgF2TGgkv3cAgmrMB.jpg differ diff --git a/Info/9/3/Planet/img/220_F_365660222_ZP4JkbCB5R5DuYGQgF2TGgkv3cAgmrMB.png b/Info/9/3/Planet/img/220_F_365660222_ZP4JkbCB5R5DuYGQgF2TGgkv3cAgmrMB.png new file mode 100644 index 00000000..37c2095b Binary files /dev/null and b/Info/9/3/Planet/img/220_F_365660222_ZP4JkbCB5R5DuYGQgF2TGgkv3cAgmrMB.png differ diff --git a/Info/9/3/Planet/img/NASA_Mars_Rover.jpg b/Info/9/3/Planet/img/NASA_Mars_Rover.jpg new file mode 100644 index 00000000..c815ea58 Binary files /dev/null and b/Info/9/3/Planet/img/NASA_Mars_Rover.jpg differ diff --git a/Info/9/3/Planet/img/a-martian-rock-called-rocknest-3-3da0a3-640.jpg b/Info/9/3/Planet/img/a-martian-rock-called-rocknest-3-3da0a3-640.jpg new file mode 100644 index 00000000..9159c219 Binary files /dev/null and b/Info/9/3/Planet/img/a-martian-rock-called-rocknest-3-3da0a3-640.jpg differ diff --git a/Info/9/3/Planet/img/base-dome.svg b/Info/9/3/Planet/img/base-dome.svg new file mode 100644 index 00000000..5246cfa1 --- /dev/null +++ b/Info/9/3/Planet/img/base-dome.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Info/9/3/Planet/img/bergkette-abfahren.png b/Info/9/3/Planet/img/bergkette-abfahren.png new file mode 100644 index 00000000..e3018b3d Binary files /dev/null and b/Info/9/3/Planet/img/bergkette-abfahren.png differ diff --git a/Info/9/3/Planet/img/cave-entrance.svg b/Info/9/3/Planet/img/cave-entrance.svg new file mode 100644 index 00000000..7f2ce42b --- /dev/null +++ b/Info/9/3/Planet/img/cave-entrance.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Info/9/3/Planet/img/earth-crack.svg b/Info/9/3/Planet/img/earth-crack.svg new file mode 100644 index 00000000..19211489 --- /dev/null +++ b/Info/9/3/Planet/img/earth-crack.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Info/9/3/Planet/img/lunar-module.svg b/Info/9/3/Planet/img/lunar-module.svg new file mode 100644 index 00000000..d5203d4d --- /dev/null +++ b/Info/9/3/Planet/img/lunar-module.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Info/9/3/Planet/img/map.png b/Info/9/3/Planet/img/map.png new file mode 100644 index 00000000..3007e806 Binary files /dev/null and b/Info/9/3/Planet/img/map.png differ diff --git a/Info/9/3/Planet/img/map.xcf b/Info/9/3/Planet/img/map.xcf new file mode 100644 index 00000000..6a3d089c Binary files /dev/null and b/Info/9/3/Planet/img/map.xcf differ diff --git a/Info/9/3/Planet/img/mars.jpg b/Info/9/3/Planet/img/mars.jpg new file mode 100644 index 00000000..96fae3f0 Binary files /dev/null and b/Info/9/3/Planet/img/mars.jpg differ diff --git a/Info/9/3/Planet/img/mountains.svg b/Info/9/3/Planet/img/mountains.svg new file mode 100644 index 00000000..0c48ee46 --- /dev/null +++ b/Info/9/3/Planet/img/mountains.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Info/9/3/Planet/img/online-ide-overview.png b/Info/9/3/Planet/img/online-ide-overview.png new file mode 100644 index 00000000..45a993ae Binary files /dev/null and b/Info/9/3/Planet/img/online-ide-overview.png differ diff --git a/Info/9/3/Planet/img/online-ide-overview.xcf b/Info/9/3/Planet/img/online-ide-overview.xcf new file mode 100644 index 00000000..cfa8b025 Binary files /dev/null and b/Info/9/3/Planet/img/online-ide-overview.xcf differ diff --git a/Info/9/3/Planet/img/stone-pile.svg b/Info/9/3/Planet/img/stone-pile.svg new file mode 100644 index 00000000..5ac9603a --- /dev/null +++ b/Info/9/3/Planet/img/stone-pile.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Info/9/3/Planet/karten-beschreibung.md b/Info/9/3/Planet/karten-beschreibung.md new file mode 100644 index 00000000..585d38b1 --- /dev/null +++ b/Info/9/3/Planet/karten-beschreibung.md @@ -0,0 +1,5 @@ +:::{.terminal} +Das ist die Karte des roten Planeten. +Bahne dir deinen Weg von der Landung bis zur Höhle auf der anderen Seite, um die seltenen Mineralien zu bergen und die Mission abzuschließen. +_ +::: diff --git a/Info/9/3/Planet/modellierung/landung/.gitignore b/Info/9/3/Planet/modellierung/landung/.gitignore new file mode 100644 index 00000000..0e53667b --- /dev/null +++ b/Info/9/3/Planet/modellierung/landung/.gitignore @@ -0,0 +1,5 @@ +gestein-object.svg +huegel-object.svg +koordinatensystem.svg +marke-object.svg +rover-object.svg diff --git a/Info/9/3/Planet/modellierung/landung/datentypen-quiz.md b/Info/9/3/Planet/modellierung/landung/datentypen-quiz.md new file mode 100644 index 00000000..1460caa3 --- /dev/null +++ b/Info/9/3/Planet/modellierung/landung/datentypen-quiz.md @@ -0,0 +1,6 @@ +:::{.terminal} +Kannst du dich noch an die Datentypen von Datenbanken erinnern? +_ +::: + +Zurück zu TODO: Landung diff --git a/Info/9/3/Planet/modellierung/landung/gestein-object.plantuml b/Info/9/3/Planet/modellierung/landung/gestein-object.plantuml new file mode 100644 index 00000000..916caec8 --- /dev/null +++ b/Info/9/3/Planet/modellierung/landung/gestein-object.plantuml @@ -0,0 +1,7 @@ +@startuml +object gestein7 { + x = 3 + y = 7 + farbe="rot" +} +@enduml diff --git a/Info/9/3/Planet/modellierung/landung/huegel-object.plantuml b/Info/9/3/Planet/modellierung/landung/huegel-object.plantuml new file mode 100644 index 00000000..42f278e5 --- /dev/null +++ b/Info/9/3/Planet/modellierung/landung/huegel-object.plantuml @@ -0,0 +1,6 @@ +@startuml +object huegel3 { + x = 5 + y = 8 +} +@enduml diff --git a/Info/9/3/Planet/modellierung/landung/img/default-planet.png b/Info/9/3/Planet/modellierung/landung/img/default-planet.png new file mode 100644 index 00000000..5781bfcc Binary files /dev/null and b/Info/9/3/Planet/modellierung/landung/img/default-planet.png differ diff --git a/Info/9/3/Planet/modellierung/landung/img/h5p-datentyp-zuordnung.png b/Info/9/3/Planet/modellierung/landung/img/h5p-datentyp-zuordnung.png new file mode 100644 index 00000000..469e61f3 Binary files /dev/null and b/Info/9/3/Planet/modellierung/landung/img/h5p-datentyp-zuordnung.png differ diff --git a/Info/9/3/Planet/modellierung/landung/koordinatensystem.tikz b/Info/9/3/Planet/modellierung/landung/koordinatensystem.tikz new file mode 100644 index 00000000..ac9c6c66 --- /dev/null +++ b/Info/9/3/Planet/modellierung/landung/koordinatensystem.tikz @@ -0,0 +1,4 @@ +\begin{tikzpicture} +\draw[->, line width=1pt] (0, 0.2) -- (0, -1); +\draw[->, line width=1pt] (-0.2, 0) -- (1, 0); +\end{tikzpicture} diff --git a/Info/9/3/Planet/modellierung/landung/marke-object.plantuml b/Info/9/3/Planet/modellierung/landung/marke-object.plantuml new file mode 100644 index 00000000..759e6abd --- /dev/null +++ b/Info/9/3/Planet/modellierung/landung/marke-object.plantuml @@ -0,0 +1,6 @@ +@startuml +object marke19 { + x = 12 + y = 1 +} +@enduml diff --git a/Info/9/3/Planet/modellierung/landung/modellierung.md b/Info/9/3/Planet/modellierung/landung/modellierung.md new file mode 100644 index 00000000..c12651b5 --- /dev/null +++ b/Info/9/3/Planet/modellierung/landung/modellierung.md @@ -0,0 +1,119 @@ +:::{.terminal} +Bevor wir los legen, müssen wir uns kurz damit beschäftigen, welche Dinge auf dem roten Planeten existieren und wie die YASA damit umgeht. +::: + +#### Schritt 0.1 + +:::{.merke data-class="Merke: Modellierung"} +**Modellierung** bezeichnet die Übertragung von Dingen aus der "echten" Welt in Konzepte einer Programmiersprache, wie beispielsweise **Klassen** und **Objekte**. +::: + +:::{.tipp style="margin-top:1em;"} +Vergiss nicht einen Screenshot des Merkkastens abzugeben. +::: + +#### Schritt 0.2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
**Realität****Objekt**
![](img/NASA_Mars_Rover.jpg)**Rover** + Ein Rover muss seine Position in Form einer x- und einer y-Koordinate kennen. + Die Rotation bestimmt seine Fahrtrichtung. + ![](rover-object.svg)![](img/Copyrighted/rover.png)
![](img/20170122_gasa-gullies-kevin-gill.jpg)**Hügel** + Ein Hügel ist eine Erhebung, die im Gegensatz zur ebenen Oberfläche eine Steigung größer als 30 Grad besitzt. + Jeder Hügel hat einen festen, durch x und y festgelegten Standort. + ![](huegel-object.svg)![](img/Copyrighted/huegel.png)
![](img/a-martian-rock-called-rocknest-3-3da0a3-640.jpg)**Gestein** + Das Gestein besitzt wie alle anderen Objekte auch eine x- und eine y-Koordinate. + Außerem kann Gestein rot oder blau sein. + Es kann vom Rover aufgenommen werden. + ![](gestein-object.svg)![](img/Copyrighted/gesteinRot.png)
![](img/220_F_365660222_ZP4JkbCB5R5DuYGQgF2TGgkv3cAgmrMB.png)**Marke** + Eine Marke wird von einem Rover an einem bestimmten Ort, der durch eine x- und eine + y-Koordinate festgelegt ist, abgelegt. + ![](marke-object.svg)![](img/Copyrighted/marke.png)
+ +:::{.page-break} +::: + +#### Schritt 0.3 + +![](img/default-planet.png) + +::: {.columns} +:::: {.column width=80%} +Anders als in der Mathematik zeigt die y-Achse des Koordinatensystems stets nach unten. +Außerdem beginnt man in der Informatik beim Zählen mit der 0 und nicht mit der 1. +Der Rover aus der obigen Grafik hat also die Koordinaten $(1|2)$. +:::: + +:::: {.column width=20%} +![](koordinatensystem.svg) +:::: +::: + +:::{.aufgabe data-class="Aufgabe 0.1"} +Welche Koordinaten haben die Markierung und das rote Gestein? +::: + +:::{.page-break} +::: + +#### Schritt 0.4 + +Bisher hast du nur Datentypen für Datenbanken kennengelernt. +Recherchiere im Internet, welche Datentypen es in Java gibt. +Fülle mit deinen gewonnenen Informationen nachfolgende Übersicht über Datentypen: + +:::{.merke data-class="Merke: Datentypen"} +Ein Datentyp gibt an, welche Art von Wert eine Variable hat. Z. B. ob es sich bei dem Wert um einen Text, Zahl oder Wahrheitswert handelt. + +--------------------------------------------------------------------- +Datentyp Bedeutung Beispiel +------------ ----------------------- ------------------------------ +`String` Zeichenkette bzw. Text "Hallo", "Informatik ist toll" + + [int]{color="white"} + + [double]{color="white"} + + [boolean]{color="white"} + + [char]{color="white"} +--------------------------------------------------------------------- +::: + +:::{.aufgabe data-class="Aufgabe 0.2"} +Schaffst du es den Java Datentypen den entsprechenden Datentyp der Datenbanken zuzuordnen? +Hier geht's zur Aktivität: SQL-Java-Datentypen-Match +![](img/h5p-datentyp-zuordnung.png) +::: + +<< Zurück zu TODO: Landung diff --git a/Info/9/3/Planet/modellierung/landung/online-ide.md b/Info/9/3/Planet/modellierung/landung/online-ide.md new file mode 100644 index 00000000..0811920c --- /dev/null +++ b/Info/9/3/Planet/modellierung/landung/online-ide.md @@ -0,0 +1,107 @@ +--- +include-after: | + +--- + +:::{.terminal} +### Online-IDE + +Die YASA benutzt für alle Programmieraufgaben die [Online-IDE](https://www.online-ide.de/). +Rufe die Seite auf und melde dich an. + +#### Dein Zugang + +Die YASA hat dir einen Zugang für die Online-IDE angelegt. + +::::{.oide-login} +:::: + +Bitte ändere dein Passwort und notiere dir deine Login-Informationen! +::: + +#### Aufbau der Seite + +Die Online-IDE ist folgendermaßen aufgebaut. + +![](img/online-ide-overview.png){.center} + +##### [Datei-Fenster]{color="#004CFF"} + +Das Datei-Fenster befindet sich in der linken oberen Ecke und zeigt dir alle Dateien und Ordner in deinem aktuellen Projekt. +Durch anklicken einer Datei siehst du deren Inhalt. +Wird rechts neben einer Datei ein grüner Pfeil angezeigt, dann kann Code in der Datei mit einem Klick auf den grünen Pfeil im Controls-Fenster direkt ausgeführt werden. + +##### [Workspace-Fenster]{color="#770088"} + +Das Workspace-Fenster zeigt dir alle deine Projekte. +Ein Projekt heißt in der Online-IDE workspace. + +##### [Code-Fenster]{color="#028121"} + +Das größte und wichtigste Fenster ist das Code-Fenster. +Hier erscheint der Code der in der ausgewählten Datei steht. +Für dich wichtige Dateien sind alle die mit einem grünen Pfeil markiert sind und die Datei **Rover**. + +##### [Status-Fenster]{color="#FF0000"} + +Das Status-Fenster unter dem Code-Fenster zeigt dir an, ob du noch Fehler in deinem Code hast. +Für jeden Fehler wird eine kurze Beschreibung angezeigt. +Oft hilft es aufmerksam die Beschreibung des Fehlers zu lesen wenn du zum Beispiel einfach nur einen Strichpunkt (Semikolon) `;`{.java} vergessen hast. + +##### [Ausgabe-Fenster]{color="#EEDD00"} + +Das Ausgabe-Fenster ist der Ort an dem die spannenden Dinge passieren, dein Fenster zum roten Planeten. +Hier kannst du bequem von deinem sicheren Arbeitsplatz die karge Welt des Planeten beobachten und was der Rover darin so tut. + +##### [Controls-Fenster]{color="#00B2FF"} + +Zuletzt kannst du über dem Code-Fenster mit den Controls dein Programm starten, die Geschwindigkeit in der es ausgeführt werden soll einstellen und vieles mehr. + +<< Zurück zu TODO: Landung + +##### Wenn du mehr wissen willst + +Der Entwickler der Online-IDE hat ausführlichere Erklärvideos zum Aufbau und der Benuztung der Online-IDE erstellt. + +###### Funktionen + +[Funktionen](https://youtu.be/gh7CM8RFCQ0) + +###### Code-Hilfen + +[Code-Hilfen](https://youtu.be/1xIEjj2NhTI) diff --git a/Info/9/3/Planet/modellierung/landung/rover-object.plantuml b/Info/9/3/Planet/modellierung/landung/rover-object.plantuml new file mode 100644 index 00000000..ddf21ff2 --- /dev/null +++ b/Info/9/3/Planet/modellierung/landung/rover-object.plantuml @@ -0,0 +1,7 @@ +@startuml +object rover { + x = 3 + y = 7 + rotation = 270 +} +@enduml diff --git a/Info/9/3/Planet/modellierung/landung/todo.md b/Info/9/3/Planet/modellierung/landung/todo.md new file mode 100644 index 00000000..14c5381c --- /dev/null +++ b/Info/9/3/Planet/modellierung/landung/todo.md @@ -0,0 +1,8 @@ +:::{.terminal} +Schön dass du uns auf dem roten Planeten unterstützt! +Pro Bereich auf der Planetenoberfläche hast du gewissene Aufgaben zu erledigen. +Die Aufgaben werden in einer *TODO* Übersicht zusammengefasst. +Wenn du genug Aufgaben eines Bereiches erledigt hast, gelangst du zum Nächsten. +Eine ausführliche Einführung in die Abläufe auf dem roten Planet findest du unter: Willkommen. +_ +::: diff --git a/Info/9/3/Planet/modellierung/landung/welcome.md b/Info/9/3/Planet/modellierung/landung/welcome.md new file mode 100644 index 00000000..3ae31047 --- /dev/null +++ b/Info/9/3/Planet/modellierung/landung/welcome.md @@ -0,0 +1,38 @@ +:::{.terminal} +Willkommen {firstname} auf dem roten Planet! + +Als Teil der Erkundungsmission der YASA (Yet Another Space Agancy) bist du verantwortlich für die technische Kontrolle des Rovers. + +Da die Zeit auf der Erde knapp war, wirst du in den kommenden Wochen alles Nötige lernen, um den Rover zusteuern und unsere Mission zu erfüllen. + +### Was brauchst du dafür? + +* Zugang zu einem Computer/(Tablet) an dem du bequem arbeiten und tippen kannst. +* Ein (digitales) Notizbuch/Schnellhefter, wo du Wissenswertes und Übungen aufschreiben kannst. +* Zugang zu unserer Programmierumgebung [Online-IDE](https://www.online-ide.de/), um den Rover zu steuern. + Deinen Zugang und Informationen zur Nutzung der Online-IDE findest du auf der Seite "Überblick Online-IDE" in diesem Kurs. + +### Planetenerkundung + +Zweck dieser YASA-Mission ist den roten Planet Schritt-für-Schritt zu erkunden. +Unser Ziel ist die seltenen Mineralien aus Höhle auf der anderen Seite des Planeten zu bergen. + +Hast du alle Aufgaben in einem Bereich erledigt, gelangst du zum Nächsten. + +::::{.tipp} +::::: +Vergiss nicht die Seiten als *erledigt* zu markieren. +::::: +:::: + +Jeder Bereich hat ein eigenes Aufgabenblatt, lade das Blatt deines Bereichs runter oder nimm dir eine ausgedruckte Version und füge es deinen Notizen hinzu. + +::::{.merke data-class="Merke"} +Wichtige Information sind als Merksätze markiert. Übertrage sie **handschriftlich** auf dein Blatt. +:::: + +Die YASA verlangt oft bei Missionen, dass ein Nachweis für die Erledigung von Aufgaben eingereicht wird. +Dazu reicht ein Bild/Screenshot deiner Notizen. +::: + +<< Zurück zu TODO: Landung diff --git a/Info/9/3/Planet/modellierung/zwischenlager/bauplaene.md b/Info/9/3/Planet/modellierung/zwischenlager/bauplaene.md new file mode 100644 index 00000000..94c7ca52 --- /dev/null +++ b/Info/9/3/Planet/modellierung/zwischenlager/bauplaene.md @@ -0,0 +1,17 @@ +:::{.terminal} +Sehr gut! Du bist im Zwischenlager der YASA auf dem roten Planeten angekommen. + +Nachdem du bereits gelernt hast, wie du dich im Ausbildungsmaterial zurechtfindest und den Rover kontrollierst (Online-IDE), findest du hier Bauanleitungen und Programme, die dir dein Leben einfacher machen. + + +Bisher hast du einfach alle Anweisungen, die der Rover ausführen sollte nach einander aufgeschrieben. +Das klappt für kurze Programme sehr gut, allerdings kommt dieses Vorgehen schnell an seine Grenzen bei komplizierteren Programmen. +Stell dir vor der Rover soll in Quadraten um mehrere Hügel fahren, um die Umgebung nach Geröll abzusuchen. +Dabei wäre es doch praktisch wenn du das Absuchen **eines** Hügels nur einmal programmieren müsstest und dann einfach wiederverwenden kannst. + +Genau dazu gibt die **Methoden** einer **Klasse**. + +Hier im Zwischenlager lernst du was eine **Methode** ist und wie du selbst **Methoden** schreiben kannst. + +Aber lass uns zuerst einmal ausprobieren was der Rovers schon kann, indem wir die Methoden Testen. +::: diff --git a/Info/9/3/Planet/modellierung/zwischenlager/img/block-comment.png b/Info/9/3/Planet/modellierung/zwischenlager/img/block-comment.png new file mode 100644 index 00000000..af3e3fbb Binary files /dev/null and b/Info/9/3/Planet/modellierung/zwischenlager/img/block-comment.png differ diff --git a/Info/9/3/Planet/modellierung/zwischenlager/img/fahreDreiFelder.png b/Info/9/3/Planet/modellierung/zwischenlager/img/fahreDreiFelder.png new file mode 100644 index 00000000..9bcb4a58 Binary files /dev/null and b/Info/9/3/Planet/modellierung/zwischenlager/img/fahreDreiFelder.png differ diff --git a/Info/9/3/Planet/modellierung/zwischenlager/img/h5p-methoden-sortieren.png b/Info/9/3/Planet/modellierung/zwischenlager/img/h5p-methoden-sortieren.png new file mode 100644 index 00000000..c6b9f2d9 Binary files /dev/null and b/Info/9/3/Planet/modellierung/zwischenlager/img/h5p-methoden-sortieren.png differ diff --git a/Info/9/3/Planet/modellierung/zwischenlager/img/h5p-methoden-testen.png b/Info/9/3/Planet/modellierung/zwischenlager/img/h5p-methoden-testen.png new file mode 100644 index 00000000..1bcaafc7 Binary files /dev/null and b/Info/9/3/Planet/modellierung/zwischenlager/img/h5p-methoden-testen.png differ diff --git a/Info/9/3/Planet/modellierung/zwischenlager/img/methoden-teile.png b/Info/9/3/Planet/modellierung/zwischenlager/img/methoden-teile.png new file mode 100644 index 00000000..90da7b44 Binary files /dev/null and b/Info/9/3/Planet/modellierung/zwischenlager/img/methoden-teile.png differ diff --git a/Info/9/3/Planet/modellierung/zwischenlager/img/oide-methodenTest.png b/Info/9/3/Planet/modellierung/zwischenlager/img/oide-methodenTest.png new file mode 100644 index 00000000..b8007c82 Binary files /dev/null and b/Info/9/3/Planet/modellierung/zwischenlager/img/oide-methodenTest.png differ diff --git a/Info/9/3/Planet/modellierung/zwischenlager/img/oide-rover.png b/Info/9/3/Planet/modellierung/zwischenlager/img/oide-rover.png new file mode 100644 index 00000000..8e7653fd Binary files /dev/null and b/Info/9/3/Planet/modellierung/zwischenlager/img/oide-rover.png differ diff --git a/Info/9/3/Planet/modellierung/zwischenlager/img/quadrat.png b/Info/9/3/Planet/modellierung/zwischenlager/img/quadrat.png new file mode 100644 index 00000000..d5551e59 Binary files /dev/null and b/Info/9/3/Planet/modellierung/zwischenlager/img/quadrat.png differ diff --git a/Info/9/3/Planet/modellierung/zwischenlager/img/zusatzaufgabe1.png b/Info/9/3/Planet/modellierung/zwischenlager/img/zusatzaufgabe1.png new file mode 100644 index 00000000..d92f0529 Binary files /dev/null and b/Info/9/3/Planet/modellierung/zwischenlager/img/zusatzaufgabe1.png differ diff --git a/Info/9/3/Planet/modellierung/zwischenlager/img/zusatzaufgabe2.png b/Info/9/3/Planet/modellierung/zwischenlager/img/zusatzaufgabe2.png new file mode 100644 index 00000000..04ed56cf Binary files /dev/null and b/Info/9/3/Planet/modellierung/zwischenlager/img/zusatzaufgabe2.png differ diff --git a/Info/9/3/Planet/modellierung/zwischenlager/methoden-schreiben.md b/Info/9/3/Planet/modellierung/zwischenlager/methoden-schreiben.md new file mode 100644 index 00000000..de8f1ada --- /dev/null +++ b/Info/9/3/Planet/modellierung/zwischenlager/methoden-schreiben.md @@ -0,0 +1,260 @@ +#### Schritt 3.2.1 +Öffne in der [Online-IDE](online-ide.de) den Workspace "Planet". + +Lade das Methoden Schreiben Arbeitsblatt herunter, und füge es deinen Notizen hinzu. + +#### Schritt 3.2.2 + +::: {.columns style="margin-bottom:-5%"} +:::: {.column width=70%} +* Heute lernst du, wie man eigene Methoden programmiert. +* Um eigene Methoden zu schreiben, muss man den Quellcode öffnen. + Klicke dazu auf die Datei **Rover** im linken oberen Fenster. +:::: + +:::: {.column width=30%} +![](img/oide-rover.png){width=80%} +:::: +::: + +#### Schritt 3.2.3 +Du solltest nun den Quellcode offen haben. +Schau dir den Code kurz an, aber beachte nachfolgenden Hinweis: + +:::{.verboten} +Verboten: Ändere keinesfalls den Code der vorgegebenen Methoden. Ohne Vorwissen zerstörst du sonst nur dein Projekt. +::: +Der Code wird zur besseren Übersicht farblich hervorgehoben. +Die [gelbe Linie]{.underline color="#625615"} umschließt die komplette Klasse. +Methoden werden mit einer [lila Linie]{.underline color="#573756"} dargestellt. +Kontrollstrukturen (dazu kommen wir erst später) werden als [blaue Linien]{.underline color="#1F4067"} angezeigt. + +:::{.aufgabe data-class="Aufgabe 3.2.1"} +Wozu dienen die Absätze, die mit `/**`{.java} anfangen und `*/`{.java} aufhören? +Z. B.: + +![](img/block-comment.png){.center width=80%} +::: + +#### Schritt 3.2.4 +Nun wird es Zeit für unsere erste eigene Methode. +Übertrage dazu den Code der Methode `fahreDreiFelder()`{.java} in deinen eigenen Quellcode der Klasse Rover. +Achte darauf, dass du alles genau so wie abgebildet abtippst. + +![](img/fahreDreiFelder.png){.center width=80%} + +Änderungen werden automatisch übernommen. +Teste deine Methode, indem du in der Datei **MethodenTest** deine neue Methode Aufrufst. + +#### Schritt 3.2.5 +Nun analysieren wir die Bestandteile des Codes. +Eine Methode besteht immer aus einem Methodenkopf und einem Methodenrumpf. + +![](img/methoden-teile.png){.center width=60%} + +Der Kopf besteht aus: + +* **Rückgabetyp:** + * Bei Methoden ohne Rückgabewert: `void`{.java} + * Bei Methoden mit Rückgabewert: der Datentyp des zurückgebenden Wertes (z. B. `boolean`{.java} oder `String`{.java}) +* **Methodenname:** ohne Leerzeichen! + Der Name ist grundsätzlich immer frei wählbar, sollte aber so gewählt sein, damit klar ist, was die Methode macht. +* **rundes Klammernpaar:** Hier werden ggf. Eingaben (sog. Parameter) eingetragen. + Wird keine Eingabe verlangt, bleibt die Klammer leer `()`{.java}. + +Anfang und Ende des Rumpfes werden durch geschweifte Klammern `{ }`{.java} gekennzeichnet. +Im Rumpf werden **Anweisungen** geschrieben, z. B. `fahre()`{.java}. +Jede Anweisung endet immer mit einem Semikolon `;`{.java}. + +:::{.merke data-class="Merke: Methoden programmieren"} +Eine Methode besteht aus: + +* **Methodenkopf:** Rückgabetyp (`void`{.java} oder der entsprechende Datentyp des Rückgabewertes), Methodenname, rundes Klammernpaar `()`{.java}. + Allgemeine Form: ` ([Parameter])` +* **Methodenrumpf:** Anweisungen (Das Ende einer Anweisung wird durch ein Semikolon `;`{.java} gekennzeichnet). +::: + +:::{.page-break} +::: + +#### Schritt 3.2.6 + +Um unseren Code noch besser zu verstehen, führen wir ein paar mehr oder weniger sinnvolle Änderungen durch. + +:::{.aufgabe data-class="Aufgabe 3.2.2"} +Ändere den Rückgabetyp der Methode `fahreDreiFelder()`{.java} zu `boolean`{.java}. +Was fällt dir auf, wenn du die Methode des Rovers in `MethodenTest` aufrufen willst? +::: + +Setze den Rückgabetyp nun wieder auf `void`{.java}. + +:::{.aufgabe data-class="Aufgabe 3.2.3"} +Lass in der Methode `fahreDreiFelder()`{.java} bei der ersten Anweisung `fahre()`{.java} das Semikolon `;`{.java} weg und übersetze den Code. +Was passiert? +::: + +Füge das gelöschte Semikolon wieder hinzu. + +#### Schritt 3.2.7 + +Eine Programmiersprache folgt klaren und eindeutigen Regeln. +Diese nennt man in der Informatik Syntax. +In einer normalen Sprache ist dies vergleichbar mit der Grammatik. + +Unser Tool (Online-IDE), das wir zum Programmieren verwenden, kann die Syntax überprüfen. +Es schaut also, ob alle Regeln der Programmiersprache eingehalten wurde. +Also ob beispielsweise nach jeder Anweisung ein Semikolon folgt. +Syntaxfehler werden in der Online-IDE dankenswerterweise immer rot markiert. +Geht man mit dem Mauszeiger im Code über die rot markierte Stelle, werden einem nähere Informationen über den vorliegenden Syntaxfehler angezeigt. + +:::{.merke data-class="Merke: Syntax"} +Beim Programmieren legt die Syntax die formalen Regeln einer Programmiersprache fest. +::: + +#### Schritt 3.2.8 + +Schreibe nun eine eigene Methode `fahreUndDreheRechts()`{.java}. +Durch diese soll der Rover ein Feld nach vorne fahren und sich anschließend nach rechts drehen. +Überlege dir dazu, welchen Rückgabetyp die Methode braucht. + +#### Schritt 3.2.9 + +::: {.columns} +:::: {.column width=60%} +Übernehme die abgebildete Methode `quadrat()`{.java} in deinen Quellcode. +Teste und analysiere sie anschließend. +:::: + +:::: {.column width=40%} +![](img/quadrat.png){.center} +:::: +::: + +### Aufgaben für Schnelle + +#### Zusatzaufgabe 3.1 + +![](img/zusatzaufgabe1.png){.center width=80%} + +Beurteile die nachfolgenden Algorithmen hinsichtlich ihrer Korrektheit und Strategie. + +::: {.columns} +:::: {.column width=33%} +Algorithmus 1 + +```{.java} +void algo1 +{ + fahre(); + fahre(); + nimmGestein(); + fahre(); + nimmGestein(); + drehe("rechts"); + fahre(); + drehe("rechts"); + fahre(); + nimmGestein(); +} +``` +:::: + +:::: {.column width=33%} +Algorithmus 2 + +```{.java} +void algo2 +{ + fahre(); + fahre(); + nimmGestein(); + fahre(); + nimmGestein(); + drehe("rechts"); + drehe("rechts"); + fahre(); + drehe("rechts"); + fahre(); + nimmGestein(); +} +``` +:::: + +:::: {.column width=33%} +Algorithmus 3 + +```{.java} +void algo3 +{ + fahre(); + fahre(); + nimmGestein(); + drehe("rechts"); + fahre(); + nimmGestein(); + drehe("rechts"); + drehe("rechts"); + drehe("rechts"); + fahre(); + drehe("rechts"); + drehe("rechts"); + drehe("rechts"); + fahre(); + nimmGestein(); +} +``` +:::: +::: + +#### Zusatzaufgabe 3.2 + +![](img/zusatzaufgabe2.png){.center width=80%} + +1. Programmiere in der Klasse `Rover` eine Methode so, dass der Rover losfährt und nach und nach alle drei, Gesteinsproben aufnimmt. + +2. Angenommen, mit der Methode `fahre()`{.java} würde der Rover immer genau zwei Felder vorwärtsfahren. + Begründe, dass er unter dieser Annahme nicht mehr alle Gesteine aufnehmen kann. + + +#### Zusatzaufgabe 3.3 + +Gegeben sind folgende Methoden: + +::: {.columns} +:::: {.column width=45%} +```{.java} +void methode2() +{ + setzeMarke(); + fahre(); + setzeMarke(); + fahre(); + setzeMarke(); + fahre(); + setzeMarke(); + fahre(); + setzeMarke(); + fahre(); + setzeMarke(); + fahre(); + drehe("rechts"); +} +``` +:::: + +:::: {.column width=55%} +```{.java} +void methode1() +{ + methode2(); + methode2(); + methode2(); + methode2(); +} +``` + +1. Analysiere die Arbeitsweise der Methoden `methode2()`{.java} und `methode1()`{.java} und beschreiben Sie, wie die Planetenoberfläche nach dem Aufruf von `methode1()`{.java} aussieht. +2. Schreibe für beide Methoden passende Methodendokumentationen. +3. Optimiere das Programm so, dass wiederkehrende Gruppen von Anweisungen in eine eigene Methode ausgelagert werden. +:::: +::: diff --git a/Info/9/3/Planet/modellierung/zwischenlager/methoden-sortieren-quiz.md b/Info/9/3/Planet/modellierung/zwischenlager/methoden-sortieren-quiz.md new file mode 100644 index 00000000..eea9e42e --- /dev/null +++ b/Info/9/3/Planet/modellierung/zwischenlager/methoden-sortieren-quiz.md @@ -0,0 +1,6 @@ +:::{.terminal} +Welche Methoden verändern den Zustand der Welt und Welche prüfen etwas und geben das Ergebnis zurück? +_ +::: + +<< Zurück zu TODO: Zwischenlager diff --git a/Info/9/3/Planet/modellierung/zwischenlager/methoden-testen-h5p-questionset.txt b/Info/9/3/Planet/modellierung/zwischenlager/methoden-testen-h5p-questionset.txt new file mode 100644 index 00000000..1780d001 --- /dev/null +++ b/Info/9/3/Planet/modellierung/zwischenlager/methoden-testen-h5p-questionset.txt @@ -0,0 +1,26 @@ +Was passiert, wenn man beim Aufruf der Methode drehen() die Anführungszeichen beim Parameter vergisst? Also wenn man z. B. rechts anstelle von "rechts" eintippt? +Eine Fehlermeldung erscheint, dass der Bezeichner rechts nicht definiert ist. +Alles funktioniert wie geplant. + +Was passiert, der Rover an der Wand mit Richtung zur Wand steht und man die Methode fahre() aufruft? +Eine Meldung im Display erscheint. +Der Rover verlässt die PLaneten Oberfläche. +Das Programm stürzt ab. + +Was passiert, man die Methode gesteinVorhanden() aufruft? +Eine Meldung im Display zeigt, ob unter dem Rover Gestein liegt. +Eine Meldung im Display zeigt, ob vor dem Rover Gestein liegt. +Nichts. + +Was passiert, man die Methode huegelVorhanden("vorne") aufruft und vor dem Rover ein Hügel steht? +Es erscheint keine Meldung im Display, aber ob in die Angegeben Richtung ein Hügel liegt wird als Antwort zurückgegeben. +Es erscheint eine Meldung im Display. + +Was passiert, vor dem Rover ein Hügel steht und man die Methode fahre() aufruft? +Es erscheint eine Meldung im Display, dass der Untergrund zu steil ist. +Der Rover erklimmt den Hügel. + +Was passiert, der Rover auf einem Gestein steht und er eine Marke setzen will? +Es erscheint eine Marke auf dem Stein. +Das Programm stürzt ab. +Eine Fehlermeldung wird im Display angezeigt. diff --git a/Info/9/3/Planet/modellierung/zwischenlager/methoden-testen-quiz.md b/Info/9/3/Planet/modellierung/zwischenlager/methoden-testen-quiz.md new file mode 100644 index 00000000..6d1d804c --- /dev/null +++ b/Info/9/3/Planet/modellierung/zwischenlager/methoden-testen-quiz.md @@ -0,0 +1,7 @@ +:::{.terminal} +Hast du den Rover unter Kontrolle? +Dann kannst du sicher folgende Fragen zu seinem Verhalten beantworten. +_ +::: + +<< Zurück zu TODO: Zwischenlager diff --git a/Info/9/3/Planet/modellierung/zwischenlager/methoden-testen.md b/Info/9/3/Planet/modellierung/zwischenlager/methoden-testen.md new file mode 100644 index 00000000..06e6b1e5 --- /dev/null +++ b/Info/9/3/Planet/modellierung/zwischenlager/methoden-testen.md @@ -0,0 +1,142 @@ +#### Schritt 3.1.1 +Vergiss nicht das Methoden Testen Arbeitsblatt herunterzuladen. + +#### Schritt 3.1.2 +Klassen legen fest, was Objekte tut können. +Die Logik was ein Objekt tun kann nennt man **Methode**. + +* Jede Methode hat einen Namen gefolgt von einem Klammernpaar `()`{.java}, z. B. besitzt ein Rover die Methode `fahre()`{.java}. +* Methoden verändern den Zustand von Objekten, z. B. wird durch Aufruf der Methode `fahre()`{.java} die Position des Rovers verändert: + +::: {.columns} +:::: {.column width=20%} +bisheriger Zustand + +```{.plantuml executable=plantuml command_line_arguments=""} +@startuml +object rover { + x=4 + y=5 + rotation = 0 +} +@enduml +``` +:::: + +:::: {.column width=20%} +Methodenaufruf + +``` + fahre() +----------------> +``` +:::: + +:::: {.column width=20%} +neuer Zustand + +```{.plantuml executable=plantuml command_line_arguments=""} +@startuml +object rover { + x=5 + y=5 + rotation = 0 +} +@enduml +``` +:::: +::: + +* Manche Methoden verlangen eine Eingabe, einen sogenannten Parameter, z. B. `drehe(String richtung)`{.java}. +→ `richtung` ist ein Parameter vom Datentyp `String`. Ein `String` ist eine Zeichenkette, als Wert muss man also einen Text eingeben und diesen in Anführungszeichen setzen, z. B. `drehe("rechts")`{.java}. + +:::{.merke data-class="Merke: Methoden"} +Durch **Methoden** kann der Zustand eines Objektes verändert oder zurückgegeben werden. +Manche Methoden verlangen eine Eingabe, einen sogenannten **Parameter**. +::: + +#### Schritt 3.1.3 +::: {.columns style="align-items:center;"} +:::: {.column width=70%} +Teste die folgenden Methoden des Rover-Objekts in der Datei **MethodenTest** in der [Online-IDE](online-ide.de). +Beantworte anschließend die Fragen in deinem Kurs. +:::: + +:::: {.column width=30%} +![](img/oide-methodenTest.png) +:::: +::: + +::: {.columns} +:::: {.column width=40%} +`void fahre()`{.java} +Der Rover bewegt sich ein Feld in Fahrtrichtung weiter, sofern sich dort kein Hügel befindet oder die Grenze der Welt erreicht ist. + +`void drehe(String richtung)`{.java} +Der Rover dreht sich um 90 Grad in die Richtung, die mit richtung ("links” oder "rechts") übergeben wurde. + +`boolean huegelVorhanden(String richtung)`{.java} +Der Rover überprüft, ob sich in der angegebenen Richtung ("lınks", "rechts” oder "vorne") ein Objekt der Klasse Huegel befindet. +Das Ergebnis wird zurückgegeben. + +`boolean gesteinVorhanden()`{.java} +Der Rover gibt durch einen Wahrheitswert (`true`{.java} oder `false`{.java}) zurück, ob sich auf seiner Position ein Objekt der Klasse Gestein befindet. +:::: + +:::: {.column width=40%} +`void nimmGestein()`{.java} +Sofern an der Position des Rovers ein Gestein vorhanden ist, so nimmt er es auf. + +`void setzeMarke()`{.java} +Der Rover erzeugt ein Objekt der Klasse Marke und legt es auf seiner Position ab. + +`boolean markeVorhanden()`{.java} +Der Rover gibt durch einen Wahrheitswert (true oder false) zurück, ob sich auf seiner Position ein Objekt der Klasse Marke befindet. + +`void entferneMarke()`{.java} +Falls an der Position des Rovers eine Marke vorhanden ist, so entfernt er diese. +:::: +::: + +:::{.aufgabe data-class="Aufgabe 3.1.1"} +Was hast du herraus gefunden? +Überprüfe deine Erekenntnisse in Planet: Methoden Testen +![](img/h5p-methoden-testen.png) +::: + +#### Schritt 3.1.4 +Man kann die verschiedenen Methoden des Rovers in zwei Kategorien unterteilen: In Methoden, die versuchen, den Zustand zu ändern (z. B. `fahre()`) und in Methoden, die eine Rückmeldung geben (z. B. `huegelVorhanden()`). + +:::{.aufgabe data-class="Aufgabe 3.1.2"} +Fülle die Tabelle auf deinem Aufgabenblatt und sortiere alle Methoden aus der vorherigen Übersicht ein: + +:::{style="width:80%"} +---------------------------------------------------------------------- + Veränderne Zurückgebende + Methoden Methoden +-------------------------------- ------------------------------------- + `void fahre()`{.java} `boolean huegelVorhanden()`{.java} + + [foo]{color="white"} + + [bar]{color="white"} + + [nase]{color="white"} + +----------------------------------------------------------------------- +::: + +Teste deine Sortierung unter Planet: Methoden Sortieren +![](img/h5p-methoden-sortieren.png) +::: + +:::{.page-break} +::: + +:::{.merke data-class="Merke: Verändernde und zurückgebende Methoden"} +**Verändernde Methoden** verändern den Objektzustand, sie beginnen mit dem Schlüsselwort `void`{.java}. +Beispiel: `void fahre()`{.java} + +**Zurückgebende Methoden** geben Attributwerte aus, sie beginnen mit dem Datentyp des zurückzugebenden Wertes. +Beispiel: `boolean huegelVorhanden()`{.java} +::: diff --git a/Info/9/3/Planet/pandoc/center-img.lua b/Info/9/3/Planet/pandoc/center-img.lua new file mode 100644 index 00000000..a6a5e1fb --- /dev/null +++ b/Info/9/3/Planet/pandoc/center-img.lua @@ -0,0 +1,14 @@ +-- Based on: +-- https://pandoc.org/lua-filters.html#center-images-in-latex-and-html-output +-- Licensed under MIT License found at: +-- https://github.com/TomBener/pandoc-templates/blob/05aba224519d8a2b037108948bde0d820860b786/LICENSE +-- Filter images with this function if the target format is HTML +if FORMAT:match 'html' then + function Image (elem) + if elem.classes[1] == 'center' then + -- Use CSS style to center image + elem.attributes.style = 'margin:auto; display: block;' + end + return elem + end +end diff --git a/Info/9/3/Planet/pandoc/color-text.lua b/Info/9/3/Planet/pandoc/color-text.lua new file mode 100644 index 00000000..65347659 --- /dev/null +++ b/Info/9/3/Planet/pandoc/color-text.lua @@ -0,0 +1,15 @@ +-- transform to +if FORMAT:match 'html' then + function Span(el) + color = el.attributes['color'] + -- if no color attribute, return unchange + if color == nil then return el end + + -- remove color attributes + el.attributes['color'] = nil + -- use style attribute instead + el.attributes['style'] = 'color: ' .. color .. ';' + -- return full span element + return el + end +end diff --git a/Info/9/3/Planet/pandoc/default-metadata.yml b/Info/9/3/Planet/pandoc/default-metadata.yml new file mode 100644 index 00000000..dddcaaf9 --- /dev/null +++ b/Info/9/3/Planet/pandoc/default-metadata.yml @@ -0,0 +1,3 @@ +--- +lang: de +--- diff --git a/Info/9/3/Planet/pandoc/wrap-merke.lua b/Info/9/3/Planet/pandoc/wrap-merke.lua new file mode 100644 index 00000000..c2a7cfb0 --- /dev/null +++ b/Info/9/3/Planet/pandoc/wrap-merke.lua @@ -0,0 +1,7 @@ +Div = function(el) + if el.classes[1] == 'merke' then + local wrapper = pandoc.Div(el.content, {class='merke-content'}) + el.content = wrapper + end + return el +end -- cgit v1.2.3