aboutsummaryrefslogtreecommitdiff
path: root/Info/11/MUG_SWG_SG/1/Methoden/slides.md
blob: 8f35e1602785156c16c21876da2f3c6e06623aa3 (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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
---
author: Florian Fischer
lang: de
theme: metropolis
aspectratio: 169
header-includes: |
    \usepackage{tabulary}
    \let\tightlist\relax
---


## Wiederholung - Operationen

![](img/operation.jpg){.center}

```{.include}
../LogischeOperationen/slides-operationen.md
```


## Wiederholung - Parkgebühren
Parkgebühren sind in der Regel zeitabhängig.
Entwerfe einen Algorithmus, der abhängig von der **Parkdauer** den **Preis** ausgibt.
Übertrage deinen Algorithmus in ein `Snap!` Programm.
Verwende logische Operationen um die Ausgabe zu bestimmen.

Folgende Preisstaffelung gilt:

\begin{tabular}{l l}
Parkdauer & Preis \\
bis zu 1 Stunde & 1€ \\
bis zu 2 Stunden & 3€ \\
bis zu 4 Stunden & 5€ \\
Tageskarte & 8€ \\
\end{tabular}

[**Zusatz:**]{.underline} Wenn die Eingabe keine Zahl ist gib "Ungültige Parkdauer!" aus.

## \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%}


## \faIcon{desktop} Arbeitsauftrag - 10 min

* Erstelle eine Methode `ZeichneDreieck` die ein gleichseitiges Dreieck mit Seitenlänge 50 zeichnet.

::: {.columns align=center}
:::: {.column width=40%}
![](img/triangles.png){.center}
::::

:::: {.column width=60%}
* Verwende deine Methode um das oder ein ähnliches Bild zu zeichnen:
::::
:::

## 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{desktop} Arbeitsauftrag Würfel - 20min

* Erstelle eine Methode `ZeichneKreis`, die annäherungsweise einen Kreis mit einem Parameter Schrittlänge zeichnet.
* Erstelle eine Methode `ZeichneWuerfel`, die als Parameter die Augenzahl erhält und die entsprechende Würfelseite zeichnet

```\begin{tcolorbox}[colframe=gray]```{=latex}

* \faIcon{earlybirds} **Für Schnelle**: Lasse deine Funktion `ZeichneWuerfel` auch die Umrandung zeichnen
* \faIcon{earlybirds} **Für Schnelle**: Erstelle ein Script, das eine zufällige Würfelseite zeichnet 
* \faIcon{earlybirds} **Für ganz Schnelle**: Erstelle ein einfaches Würfelspiel, bei dem abwechselnd geworfen und die Gesamt-Augenzahl aufgeschrieben wird.

```\end{tcolorbox}```{=latex}