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
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
|
---
author: Florian Fischer
lang: de
theme: metropolis
aspectratio: 169
header-includes: |
\usepackage{tabulary}
---
## Wiederholung - Operationen
{.center}
## Wiederholtung - Bekannte Operationen {.t}
\begin{center}
\scalebox{1.2}{
\begin{tabular}{l c c l}
Datentyp & Operation & $\rightarrow$ & Datentyp \\
\hline
\textcolor{orange!70}{Zahl} & + & $\rightarrow$ & \only<1>{\phantom{\textcolor{orange!70}{Zahl}}}\only<2->{\textcolor{orange!70}{Zahl}} \\
\textcolor{orange!70}{Zahl} & - & $\rightarrow$ & \only<2->{\textcolor{orange!70}{Zahl}} \\
\textcolor{orange!70}{Zahl} & * & $\rightarrow$ & \only<2->{\textcolor{orange!70}{Zahl}} \\
\textcolor{orange!70}{Zahl} & / & $\rightarrow$ & \only<2->{\textcolor{orange!70}{Zahl}} \\
\only<3->{\textcolor{orange!70}{Zahl}} & > & $\rightarrow$ & \only<-3>{\phantom{\textcolor{blue!70}{Wahrheitswert}}}\only<4->{\textcolor{blue!70}{Wahrheitswert}}\\
\only<3->{\textcolor{orange!70}{Zahl}} & < & $\rightarrow$ & \only<4->{\textcolor{blue!70}{Wahrheitswert}}\\
\only<3->{\textcolor{orange!70}{Zahl}} & = & $\rightarrow$ & \only<4->{\textcolor{blue!70}{Wahrheitswert}}\\
\only<-4>{\phantom{\textcolor{blue!70}{Wahrheitswert}} & & & \phantom{\textcolor{blue!70}{Wahrheitswert}} \\}\only<5>{\textcolor{blue!70}{Wahrheitswert} & ??? & $\rightarrow$ & \textcolor{blue!70}{Wahrheitswert} \\}
\end{tabular}
}
\end{center}
## Logischen Operationen
\large
Mit \boldred{logische Operationen} lassen sich Wahrheitswerte zu anderen Wahrheitswerten **umformern** oder **zusammenfassen**.
**Welche logischen Operationen kennt ihr aus dem Alltag?** \vspace{0.5cm}
\pause
::: columns
:::: {.column width=30%}
**Und** (engl. **And**) \vspace{0.2cm}

Das Ergebnis ist nur dann *wahr*, wenn [alle]{.underline} Eingabewerte *wahr* sind.
::::
:::: {.column width=30%}
\pause
**Oder** (engl. **Or**) \vspace{0.2cm}

Das Ergebnis ist *wahr*, wenn [mindestens]{.underline} einer der Eingabewerte *wahr* sind
::::
:::: {.column width=30%}
\pause
**Nicht** (engl. **Not**) \vspace{0.2cm}

Das Ergebnis ist *wahr*, wenn die Eingabe *falsch* ist, und *falsch*, wenn die Eingabe *wahr* ist.
::::
:::
## Wahrheitstabelle
\large
Die Ergebnisse der Logischen Operationen können in einer \boldred{Wahrheitstabelle} dargestellt werden.
\begin{center}
\begin{tabulary}{\textwidth}{C | C | C | C | C}
Wert1 & Wert2 & Wert1 \textbf{UND} Wert2 & Wert1 \textbf{ODER} \newline Wert2 & \textbf{NICHT} WERT1 \\
\hline
Wahr & Wahr & \only<2>{\textcolor{green!60!black}{Wahr}}\only<3->{Wahr} & \only<3>{\textcolor{green!60!black}{Wahr}}\only<4->{Wahr} & \only<4>{\textcolor{red}{Falsch}}\\
\hline
Wahr & Falsch & \only<2>{\textcolor{red}{Falsch}}\only<3->{Falsch} & \only<3>{\textcolor{green!60!black}{Wahr}}\only<4->{Wahr} & \only<4>{\textcolor{red}{Falsch}}\\
\hline
Falsch & Wahr & \only<2>{\textcolor{red}{Falsch}}\only<3->{Falsch} & \only<3>{\textcolor{green!60!black}{Wahr}}\only<4->{Wahr} & \only<4>{\textcolor{green!60!black}{Wahr}}\\
\hline
Falsch & Falsch & \only<2>{\textcolor{red}{Falsch}}\only<3->{Falsch} & \only<3>{\textcolor{red}{Falsch}}\only<4->{Falsch} & \only<4>{\textcolor{green!60!black}{Wahr}}\\
\end{tabulary}
\end{center}
## 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} *"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
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=70%}
## Methoden und Parameter
Ähnlich zu mathematischen Funktionen kann man Methoden Werte als 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 *plus*-Symbol klickst.
{height=4cm}
## \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`.
|