1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
## \faIcon{lightbulb} Waren unsere Anweisungen genau genug?
Kann ein Mensch/Roboter/Computer folgende Anweisungen ausführen?
:::{.block}
### Beispiele
>- "Falte die langen Kanten des Blatts aufeinander"
>- "Schalte die Ampel auf rot"
>- {height=1cm}
:::
\pause
\boldred{Nicht ohne weiteres!}
\pause
Die Anweisungen bestehen eigentlich aus noch weiteren Anweisungen.
## Methoden
Als Methoden bezeichnet man in der Informatik [benannte]{.underline} \textit{"Unterprogramme"}.
\pause
\vspace{0.2cm}
### Gut. Aber warum?
\pause
Methoden können Algorithmen vereinfachen, da sie erlauben ganze Sequenzen mehrmals wieder zu verwenden.
\pause
### Beispiel - Rückwärtsgehen
{height=4cm}
## Methoden {.t}
Methoden bestehen aus zwei Teilen:
::: columns
:::: {.column width=50%}
\begin{itemize}
\item<1-> Einem \boldred{Methodenkopf} der den Namen und die Eigenschaften der Methode festlegt \vspace{0.5cm}
\item<2-> Einem \boldred{Methodenrumpf} der die Anweisungen der Methode enthält
\end{itemize}
::::
:::: {.column width=50%}
\begin{tikzpicture}
\node[circle, draw, minimum size=1cm] (head) {};
\node[align=left] at ($(head) + (2cm, 0)$) {\textcolor{red}{Methodenkopf} \\ \textit{GeheRueckwaerts}};
\only<2-> {
\coordinate (shoulders) at ($(head) - (0, 1.2cm)$);
\coordinate (hip) at ($(shoulders) - (0, 2cm)$);
\draw (head) -- (shoulders);
\draw (shoulders) -- ($(shoulders) + (0.5cm, 0.5cm)$);
\draw (shoulders) -- ($(shoulders) + (-0.5cm, 0.5cm)$);
\draw (shoulders) -- (hip);
\draw (hip) -- ($(hip) - (0.5cm, 0.5cm)$);
\draw (hip) -- ($(hip) - (-0.5cm, 0.5cm)$);
\node[align=left] at ($(shoulders) + (2cm, -1cm)$) {\textcolor{red}{Methodenrumpf} \\ Drehe 180 Grad \\ Gehe 10 Schritte \\ Drehe 180 Grad};
}
\end{tikzpicture}
::::
:::
## Methoden in `Snap!`
In `Snap!` kannst du Methoden als neue Blöcke erzeugen.
{.center height=75%}
## Methoden und Parameter
Ähnlich zu mathematischen Funktionen kann man Methoden Werte, sogenannte \boldred{Parameter}, übergeben.
\pause
Der als Parameter übergebene Wert ist innerhalb der Methode wie eine Variable benutzbar.
\pause
**In `Snap!`** kannst du Parameter einer Methode erzeugen in dem du in ihrem **Head-Block** das \textit{plus}-Symbol klickst.
{height=3.8cm}
## \faIcon{pencil-alt} Arbeitsauftrag - 15 min
* Recherchiere was es mit der B-Sprache auf sich hat.
* Entwerfe einen Algorithmus der eine beliebige Zeichenfolge in die B-Sprache übersetzt.
## \faIcon{desktop} Arbeitsauftrag - 10min
* Übertrage deinen Algorithmus der eine Zeichenfolge in die B-Sprache übersetzt in ein `Snap!`-Programm
* Erstelle eine Methode `SagInBSprache`, die eine Zeichenfolge als Parameter übergeben bekommt und das Wort in B-Sprache ausgibt.
* Du brauchst die Operatoren `join`, `length of` und `letter of`.
|