aboutsummaryrefslogtreecommitdiff
path: root/Info/25_26/11/21/11a_SP/slides.md
blob: e907ebec7a9f02193451cf2ed42b31271a117e4b (plain)
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"
>- ![](img/ask_parking_time.png){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

![](img/move_backwarts.png){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.

![](img/make_a_block.png){.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.

![](img/move_backwarts_n.png){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`.