aboutsummaryrefslogtreecommitdiff
path: root/Info
diff options
context:
space:
mode:
Diffstat (limited to 'Info')
-rw-r--r--Info/10/2/JumpNRun/.vis-lspc-settings.json2
-rw-r--r--Info/11/MUG_SWG_SG/1/Bedingte_Anweisungen/slides.md16
-rw-r--r--Info/11/MUG_SWG_SG/1/LogischeOperationen/slides.md6
m---------Info/11/NTG/4/Perzeptron-Implementierung/BlueJ_Projekt0
l---------Info/11/NTG/4/Perzeptron-Implementierung/ImplementierungPerzeptron Vorlage1
-rw-r--r--Info/11/NTG/4/Perzeptron-Implementierung/ImplementierungPerzeptron.mp4bin0 -> 4960033 bytes
-rw-r--r--Info/11/NTG/4/Perzeptron-Implementierung/slides.md23
-rw-r--r--Info/12/Listen/Kompositum/.gitignore2
-rw-r--r--Info/12/Listen/Kompositum/slides-wiederholung.md91
-rw-r--r--Info/12/Listen/Kompositum/slides.md486
-rw-r--r--Info/12/Listen/Trennung_Strukur_Daten/.gitignore2
-rw-r--r--Info/12/Listen/Trennung_Strukur_Daten/slides-wiederholung.md60
-rw-r--r--Info/12/Listen/Trennung_Strukur_Daten/slides.md174
-rw-r--r--Info/26_27/09/15/9d/schedule.md22
l---------Info/26_27/09/15/9d/topic1
-rw-r--r--Info/26_27/09/17/9c/schedule.md17
l---------Info/26_27/09/17/9c/topic1
-rw-r--r--Info/26_27/09/18/gA12/schedule.md19
l---------Info/26_27/09/18/gA12/topic11
-rw-r--r--Info/26_27/09/22/9d/schedule.md17
l---------Info/26_27/09/22/9d/topic1
-rw-r--r--Info/26_27/09/22/gA12/schedule.md39
-rw-r--r--Info/26_27/09/29/9d/schedule.md17
l---------Info/26_27/09/29/9d/topic1
-rw-r--r--Info/26_27/09/29/gA12/schedule.md20
l---------Info/26_27/09/29/gA12/topic1
-rw-r--r--Info/9/1/Funktionen/slides.md4
-rw-r--r--Info/9/1/Zellbezuege/slides.md18
-rw-r--r--Info/9/3/Planet/Readme.md1
29 files changed, 1020 insertions, 23 deletions
diff --git a/Info/10/2/JumpNRun/.vis-lspc-settings.json b/Info/10/2/JumpNRun/.vis-lspc-settings.json
index 9408be41..51bc4d61 100644
--- a/Info/10/2/JumpNRun/.vis-lspc-settings.json
+++ b/Info/10/2/JumpNRun/.vis-lspc-settings.json
@@ -5,6 +5,6 @@
{
"commands": {"\\texttt{}": "dummy"}
},
- "dictionary": {"de-DE": ["Snake"]}
+ "dictionary": {"de-DE": ["JumpNRun"]}
}
}
diff --git a/Info/11/MUG_SWG_SG/1/Bedingte_Anweisungen/slides.md b/Info/11/MUG_SWG_SG/1/Bedingte_Anweisungen/slides.md
index 91cd8646..7945783b 100644
--- a/Info/11/MUG_SWG_SG/1/Bedingte_Anweisungen/slides.md
+++ b/Info/11/MUG_SWG_SG/1/Bedingte_Anweisungen/slides.md
@@ -127,10 +127,10 @@ Botty hat die Aufgabe Müll einzusammeln.
Dazu irrt er durch dunkle Gänge solange bis er den **Müll** [berührt]{.underline}.
\pause
-Damit sein Leben nicht so traurig ist sammelt er alle **Blumen** ein die er auf dem Weg findet.
+Damit sein Leben nicht so traurig ist sammelt er alle **Blumen** ein, die er auf dem Weg findet.
\pause
-Nur leider hat Botty vergessen wie er sich fortbewegen soll.
+Nur leider hat Botty vergessen, wie er sich fortbewegen soll.
Hilf ihm indem du seine Bewegung programmierst!
## \faIcon{desktop} Arbeitsauftrag
@@ -142,11 +142,11 @@ Hilf ihm indem du seine Bewegung programmierst!
## Laufen oder nicht Laufen?
-Wenn Botty gegen eine Wand rumpelt wird er zurückgesetzt und muss von Vorne anfangen.
+Wenn Botty gegen eine Wand rumpelt, wird er zurückgesetzt und muss von Vorne anfangen.
-Was muss Botty machen um die Kurve zu kriegen und wann?
+Was muss Botty machen, um die Kurve zu kriegen und wann?
-## Bedingte Anweisungen
+## Bedingte Anweisungen {.t}
Mit einer **bedingten Anweisung** kann man Sequenzen in Abhängigkeit einer Bedingung ausführen.
@@ -175,7 +175,7 @@ Mit einer **bedingten Anweisung** kann man Sequenzen in Abhängigkeit einer Bedi
::::
:::: {.column width=50%}
-\only<5->{ Anweisungen die nur ausgeführt werden wenn eine Bedingung erfüllt ist nennt man \boldred{einseitig bedingte Anweisung}. }
+\only<5->{ Anweisungen die nur ausgeführt werden, wenn eine Bedingung erfüllt ist, nennt man \boldred{einseitig bedingte Anweisung}. }
::::
:::
@@ -192,7 +192,7 @@ Mit einer **bedingten Anweisung** kann man Sequenzen in Abhängigkeit einer Bedi
::::
:::
-## \faIcon{desktop} Arbeitsauftrag: Level 1 - 10 min
+## \faIcon{desktop} Arbeitsauftrag: Level 1 \hfill 10 min
::: {.columns align=center}
:::: {.column width=70%}
@@ -215,7 +215,7 @@ verwendest.
\vspace{0.5cm}
Schaffst du auch beide Kurven in Level 2?
-## \faIcon{desktop} Arbeitsauftrag: Level 3 - 15 min
+## \faIcon{desktop} Arbeitsauftrag: Level 3 \hfill 15 min
::: {.columns align=center}
:::: {.column width=70%}
diff --git a/Info/11/MUG_SWG_SG/1/LogischeOperationen/slides.md b/Info/11/MUG_SWG_SG/1/LogischeOperationen/slides.md
index 9a370237..9bf977ae 100644
--- a/Info/11/MUG_SWG_SG/1/LogischeOperationen/slides.md
+++ b/Info/11/MUG_SWG_SG/1/LogischeOperationen/slides.md
@@ -61,7 +61,7 @@ Anweisungen die nur ausgeführt werden, wenn eine Bedingung erfüllt ist, nennt
## \faIcon{pencil-alt} Arbeitsauftrag: Ampelschaltung \hfill 7 min
-Entwerfe einen Algorithmus auf Papier der eine Ampelschaltung realisiert.
+Entwerfe einen Algorithmus auf Papier, der eine Ampelschaltung realisiert.
* Welche Phasen hat eine Ampel?
* Von welcher Phase wird in welche andere gewechselt?
@@ -93,7 +93,7 @@ slides-operationen.md
Parkgebühren sind in der Regel zeitabhängig.
\faIcon{pencil-alt} Entwerfe einen Algorithmus, der abhängig von der **Parkdauer** den **Preis** ausgibt.
\faIcon{desktop} Übertrage deinen Algorithmus in ein Snap! Programm.
-Verwende logische Operationen um die Ausgabe zu bestimmen.
+Verwende logische Operationen, um die Ausgabe zu bestimmen.
Folgende Preisstaffelung gilt:
@@ -105,7 +105,7 @@ bis zu 4 Stunden & 5€ \\
Tageskarte & 8€ \\
\end{tabular}
-[**Zusatz:**]{.underline} Wenn die Eingabe keine Zahl ist gib "Ungültige Parkdauer!" aus.
+[**Zusatz:**]{.underline} Wenn die Eingabe keine Zahl ist, gib "Ungültige Parkdauer!" aus.
\begin{tikzpicture}[overlay, remember picture]
\node[anchor=west, xshift=8cm, yshift=3cm, rotate=7.5] at (current page.south west) {\includegraphics[keepaspectratio, width=4cm]{img/ask_block.png}};
diff --git a/Info/11/NTG/4/Perzeptron-Implementierung/BlueJ_Projekt b/Info/11/NTG/4/Perzeptron-Implementierung/BlueJ_Projekt
new file mode 160000
+Subproject 3336d3a0f6b63cc5abe50ad130d067ca16b2b71
diff --git a/Info/11/NTG/4/Perzeptron-Implementierung/ImplementierungPerzeptron Vorlage b/Info/11/NTG/4/Perzeptron-Implementierung/ImplementierungPerzeptron Vorlage
new file mode 120000
index 00000000..e19fe1e2
--- /dev/null
+++ b/Info/11/NTG/4/Perzeptron-Implementierung/ImplementierungPerzeptron Vorlage
@@ -0,0 +1 @@
+../../../4/Copyrighted/5.3 Perzeptron/5.3.3/ImplementierungPerzeptron Vorlage/ \ No newline at end of file
diff --git a/Info/11/NTG/4/Perzeptron-Implementierung/ImplementierungPerzeptron.mp4 b/Info/11/NTG/4/Perzeptron-Implementierung/ImplementierungPerzeptron.mp4
new file mode 100644
index 00000000..e69ae507
--- /dev/null
+++ b/Info/11/NTG/4/Perzeptron-Implementierung/ImplementierungPerzeptron.mp4
Binary files differ
diff --git a/Info/11/NTG/4/Perzeptron-Implementierung/slides.md b/Info/11/NTG/4/Perzeptron-Implementierung/slides.md
new file mode 100644
index 00000000..65cef057
--- /dev/null
+++ b/Info/11/NTG/4/Perzeptron-Implementierung/slides.md
@@ -0,0 +1,23 @@
+## \faIcon{desktop} Arbeitsauftrag: Implementierung künstliches Neuron \hfill 25min
+
+Lade die Perzeptron Vorlage herunter, [entpacke]{.underline} sie und öffne das Projekt in BlueJ.
+
+\let\tightlist\relax
+1. Attribute des Perzeptrons
+ 1. Ergänze die Attribute der Klasse `Perzeptron`, die zur Berechnung der Ausgabe benötigt werden.
+ 2. Implementiere einen Konstruktor, mit dem die Attributwerte festgelegt werden können
+2. Vervollständige die Methode `berechne(...)`{.java}
+3. Teste deine Implementierung mit der Methode `visualisiere` der Klasse `Labor` und den in der Vorlage enthaltenen Daten (`daten.csv`).
+
+\begin{tcolorbox}[title=Tipp]
+Die Vorlage entält ein Video, das die Benutzung der Klasse `Labor` zeigt.
+\end{tcolorbox}[title=Tipp]
+
+## \faIcon{desktop} Arbeitsauftrag: Implementierung Perzeptron \hfill 25min
+
+\let\tightlist\relax
+4. Implementierung der Delta-Lernregel
+ 1. Ergänze das Attribute der Klasse `Perzeptron`, das zum Lernen benötigt wird.
+ 2. Implementiere einen Konstruktor, der nur den Attributwert des neuen Attributs festlegt.
+ 3. Vervollständige die Methode `lerne(...)`{.java}.
+5. Teste deine Implementierung mit der Klasse `Labor` und den in der Vorlage enthaltenen Daten (`daten.csv`).
diff --git a/Info/12/Listen/Kompositum/.gitignore b/Info/12/Listen/Kompositum/.gitignore
new file mode 100644
index 00000000..dd6b8c3d
--- /dev/null
+++ b/Info/12/Listen/Kompositum/.gitignore
@@ -0,0 +1,2 @@
+slides-wiederholung.pdf
+slides-wiederholung.pptx
diff --git a/Info/12/Listen/Kompositum/slides-wiederholung.md b/Info/12/Listen/Kompositum/slides-wiederholung.md
new file mode 100644
index 00000000..68e6c5c2
--- /dev/null
+++ b/Info/12/Listen/Kompositum/slides-wiederholung.md
@@ -0,0 +1,91 @@
+---
+author: Florian Fischer
+theme: metropolis
+aspectratio: 169
+---
+
+## \faIcon{comments} Wiederholung: Allgemeine Liste \hfill 1/3
+
+Nimm Stellung zu folgender Aussage: \vspace{0.25cm}
+
+> Bei jeder Listen-Implementierung, müssen immer die Klassen für die Daten-Objekte im Code angepasst werden.
+
+::: {.columns}
+:::: {.column width=50%}
+```java
+class Praxis {
+ ...
+ Patient find(...) {}
+}
+class Knoten {
+ Knoten next;
+ Patient daten;
+ ...
+}
+```
+::::
+
+:::: {.column width=50%}
+```java
+class CallCenter {
+ ...
+ Kunde find(...) {}
+}
+class Knoten {
+ Knoten next;
+ Kunde daten;
+ ...
+}
+```
+::::
+:::
+
+\pause
+
+\begin{tikzpicture}[overlay, remember picture]
+ \node[rotate=5,scale=2] at (4, 4.3) {\large \boldred{Falsch}};
+\end{tikzpicture}
+
+Generics!
+
+## \faIcon{comments} Wiederholung: Find-Aufruf \hfill 2/3
+
+Nimm Stellung zu folgender Aussage: \vspace{0.5cm}
+
+> Folgende Meldung ist normal, beim Versuch ein Element in einer leeren Liste zu finden.
+> `NullPointerException in thread main thread: Auf ein Attribut/eine Methode von null kann nicht zugegriffen werden.`
+
+\pause
+
+\begin{tikzpicture}[overlay, remember picture]
+ \node[rotate=5,scale=2] at (4, 0.3) {\large \boldred{Falsch}};
+\end{tikzpicture}
+
+\pause
+
+Eine **NullPointerException** ist ein \boldred{Programmabsturz}, da nicht auf ein nicht vorhandenes Objekt zugegriffen werden kann.
+
+## \faIcon{comments} Wiederholung: Find \hfill 3/3
+
+Nimm Stellung zu folgender Aussage: \vspace{0.5cm}
+
+> Folgender Code implementiert die rekursive Methode, um einen Eintrag in einer Liste zu finden.
+
+```java
+Entry find(Data tofind) {
+ if (data == tofind) // Ich bin gesucht
+ return this.data;
+
+ return next.find(tofind); // Ich frage den Nächsten
+ }
+```
+
+\pause
+
+\begin{tikzpicture}[overlay, remember picture]
+ \node[rotate=5,scale=2] at (4, 0.3) {\large \boldred{Falsch}};
+\end{tikzpicture}
+
+\pause
+
+Wenn es keinen Nächsten mehr gibt, stürzt das Programm ab.
diff --git a/Info/12/Listen/Kompositum/slides.md b/Info/12/Listen/Kompositum/slides.md
new file mode 100644
index 00000000..e06cedb3
--- /dev/null
+++ b/Info/12/Listen/Kompositum/slides.md
@@ -0,0 +1,486 @@
+---
+author: Florian Fischer
+theme: metropolis
+aspectratio: 169
+---
+
+```{.include}
+slides-wiederholung.md
+```
+
+## {.standout}
+
+Je weniger benötigte Bedingungen, desto einfacher ist der Code und desto weniger Fehler sind möglich.
+
+## Listenabschluss
+
+Wie werden wir die Überprüfung des Listenendes los?
+
+::: {.columns}
+:::: {.column width=50%}
+```java
+if (first == null) ...
+```
+::::
+
+:::: {.column width=50%}
+```java
+if (next == null) ...
+```
+::::
+:::
+
+### \faIcon{lightbulb} Idee
+
+\pause
+
+Wir nutzen ein besonderes Abschluss-Objekt, das immer am Ende steht.
+
+## Listenabschluss: Objektdiagramm
+
+\begin{tikzpicture}
+ \begin{object}[text width=3cm]{liste}{0,0}
+ \attribute{anfang}
+ \end{object}
+
+ \begin{object}[text width=3.5cm]{node1}{-5,-2.5}
+ \attribute{next}
+ \attribute{daten}
+ \end{object}
+
+ \begin{object}[text width=3.5cm]{daten1}{-5,-4.5}
+ \attribute{inhalt}
+ \end{object}
+
+ \node[fill=black, circle, minimum size=0.005cm, scale=0.5] (d1) at (-5.7, -3.85) {};
+ \draw[line width=2pt, draw=blue!80] (d1) edge [bend left=15, -latex] (daten1);
+
+ \node[fill=black, circle, minimum size=0.005cm, scale=0.5] (n1) at (-5.8, -3.3) {};
+ \draw[line width=2pt, -latex, draw=blue!80] (n1) edge [bend right=15] (-2, -2.75);
+
+ \begin{object}[text width=3.5cm]{node2}{0,-2.5}
+ \attribute{next}
+ \attribute{daten}
+ \end{object}
+
+ \begin{object}[text width=3.5cm]{daten2}{0,-4.5}
+ \attribute{inhalt}
+ \end{object}
+
+ \node[fill=black, circle, minimum size=0.005cm, scale=0.5] (d2) at (-0.7, -3.85) {};
+ \draw[line width=2pt, draw=blue!80] (d2) edge [bend left=15, -latex] (daten2);
+
+ \node[fill=black, circle, minimum size=0.005cm, scale=0.5] (n1) at (-0.8, -3.3) {};
+ \draw[line width=2pt, -latex, draw=blue!80] (n1) edge [bend right=15] (3, -2.75);
+
+ \begin{object}[fill=white!30!blue, text width=3.5cm]{abschluss}{5,-2.5}
+ \end{object}
+
+ \only<2->{
+ \node[text width=4cm, below=of abschluss] {Jetzt hat jeder Knoten immer einen Nachfolger.};
+ }
+
+ % Anfang
+ \node[fill=black, circle, minimum size=0.005cm, scale=0.5] (anfang) at (-1.6, -0.81) {};
+ \draw[line width=2pt, -latex, draw=blue!80] (anfang) edge [bend right=25] (-5.1, -2.45);
+\end{tikzpicture}
+
+## Listenabschluss: Klassendiagramm
+
+::: {.columns}
+:::: {.column width=50%}
+\begin{tikzpicture}
+ \node[draw] (list) {\large Liste};
+ \node[draw] (leaf) at (-1.5, -2) {\large Abschluss};
+ \node[draw] (node) at (1.5, -2) {\large Knoten};
+
+ \draw[red] (list) edge[sloped, above] node {anfang} (leaf);
+ \draw[red] (list) edge[sloped, below] node {anfang} (node);
+ \draw (node.north) |- ($(node.north) + (0, 0.5cm)$) edge[above] node {\textcolor{red}{0,1 < Nachfolger}} ($(node.north) + (2.5cm, 0.5cm)$);
+ \draw ($(node.north) + (2.5cm, 0.5cm)$) |- (node.east);
+\end{tikzpicture}
+::::
+
+:::: {.column width=50%}
+```java
+class Liste {
+ // Kann keinen Abschluss speichern!
+ Knoten first;
+ // Kann keinen Knoten speichern!
+ Abschluss first;
+}
+```
+::::
+:::
+
+Ein Referenzattribut kann nicht mehrere Datentypen haben!
+
+## Listenabschluss: Klassendiagramm Polymorphismus
+
+### \faIcon{lightbulb} Idee
+
+Eine gemeinsame Oberklasse!
+
+::: {.columns}
+:::: {.column width=50%}
+\begin{tikzpicture}
+ \node[draw] (list) {\large Liste};
+ \node[draw, text width=2.5cm, align=center] (abstract) at (0, -1.5) {\large ListenElement \newline <abstract>};
+ \node[draw] (leaf) at (-1.5, -3) {\large Abschluss};
+ \node[draw] (node) at (1.5, -3) {\large Knoten};
+
+ \draw (list) edge[left] node {anfang} (abstract);
+ \draw[-{Triangle[open, scale=1.5]}] (leaf) -- (abstract);
+ \draw[-{Triangle[open, scale=1.5]}] (node) -- (abstract);
+ \draw ($(node.north) + (0.5cm, 0)$) |- (abstract.east);
+\end{tikzpicture}
+::::
+
+:::: {.column width=50%}
+```java
+class Liste {
+ // Abschluss oder Knoten
+ ListenElement first;
+}
+```
+::::
+:::
+
+\vspace{0.25cm}
+Ein Referenzattribut auf eine Oberklasse kann Objekte aller Unterklassen speichern.
+
+## Kompositum
+
+:::{.env .merke}
+Das \boldred{Kompositum}, ist ein **Entwurfsmuster** (bewährte Lösung), bei dem primitive Objekte sowie ihre **Komposition** von einer gemeinsamen abstrakten Klasse erben.
+Die Vererbung ermöglicht, alle Objekte gleich zu behandeln.
+:::
+
+::: {.columns}
+:::: {.column width=50%}
+**Beispiel: Liste** `\\[0.25cm]`{=latex}
+
+\begin{tikzpicture}
+ \node[draw, text width=2.5cm, align=center] (abstract) at (0, -1.5) {\large Listeneintrag \newline <abstract>};
+ \node[draw] (leaf) at (-1.5, -3) {\large Abschluss};
+ \node[draw] (node) at (1.5, -3) {\large Eintrag};
+
+ \draw[-{Triangle[open, scale=1.5]}] (leaf) -- (abstract);
+ \draw[-{Triangle[open, scale=1.5]}] (node) -- (abstract);
+ \draw ($(node.north) + (0.5cm, 0)$) |- (abstract.east);
+\end{tikzpicture}
+::::
+
+:::: {.column width=50%}
+**Beispiel: Dateisystem** `\\[0.25cm]`{=latex}
+
+\begin{tikzpicture}
+ \node[draw, text width=3cm, align=center] (abstract) at (0, -1.5) {\large Verzeichniseintrag \newline <abstract>};
+ \node[draw] (leaf) at (-1.5, -3) {\large Datei};
+ \node[draw] (node) at (1.5, -3) {\large Verzeichnis};
+
+ \draw[-{Triangle[open, scale=1.5]}] (leaf) -- (abstract);
+ \draw[-{Triangle[open, scale=1.5]}] (node) -- (abstract);
+ \draw ($(node.north) + (0.5cm, 0)$) |- (abstract.east);
+\end{tikzpicture}
+::::
+:::
+
+
+## Liste mit Kompositum
+::: {.columns}
+:::: {.column width=40%}
+\begin{tikzpicture}
+\begin{abstractclass}[text width=5cm]{Listenelement}{0,0}
+ \operation{naechsterSetzen(Listenelement)}
+ \operation{naechsterGeben(): Listenelement}
+ \operation{datenGeben(): Daten}
+\end{abstractclass}
+\end{tikzpicture}
+::::
+
+:::: {.column width=60%}
+### \faIcon{desktop} Arbeitsauftrag: Neue Liste \hfill 10 min
+
+Erstelle in einem **neuen** Workspace, die fünf Klassen:
+
+* `Liste`
+* `Listenelement`
+* `Eintrag`
+* `Abschluss`
+* `Daten`
+
+... mit den dir bekannten Attributen, Methoden und Vererbung.
+
+\textit{Welche Daten die Liste verwaltet, ist dir überlassen.}
+
+::::
+:::
+
+## Liste mit Kompositum: Minimal Version \hfill 1/2
+
+```java
+class Liste {
+ Listenelement anfang;
+}
+abstract class Listenelement {
+ abstract void naechsterSetzen(ListenElement n);
+ abstract ListenElement naechsterGeben();
+ abstract Daten datenGeben();
+}
+class Abschluss extends Listenelement {
+ void naechsterSetzen(ListenElement n) {}
+ ListenElement naechsterGeben() { return this; }
+ Daten datenGeben() { return null; }
+}
+```
+
+## Liste mit Kompositum: Minimal Version \hfill 2/2
+
+```java
+class Eintrag extends Listenelement {
+ Listenelement nachfolger;
+ Daten daten;
+
+ Eintrag(Daten d) { daten = d; }
+
+ void naechsterSetzen(ListenElement n) { nachfolger = n; }
+ ListenElement naechsterGeben() { return nachfolger; }
+ Daten datenGeben() { return daten; }
+}
+class Daten {}
+```
+
+## {.standout}
+
+Ist das jetzt wirklich besser?
+
+## Vergleich: `getLength()`
+
+::: {.columns align=center}
+:::: {.column width=47.5%}
+```java
+class Liste { // [...]
+ int getLength() {
+ if (first == null) return 0;
+ return first.getLength();
+ }
+}
+class Eintrag { // [...]
+ int getLength() {
+ if (next == null) return 0;
+ return next.getLength() + 1;
+ }
+}
+```
+::::
+
+:::: {.column width=5%}
+\boldred{vs.}
+::::
+
+:::: {.column width=47.5%}
+```java
+class Liste { // [...]
+ int getLength() {
+ return first.getLength();
+ }
+}
+class Eintrag { // [...]
+ int getLength() {
+ return next.getLength() + 1;
+ }
+}
+class Abschluss {
+ int getLength() {
+ return 0;
+ }
+}
+```
+::::
+:::
+
+## \faIcon{hands-helping} Arbeitsauftrag: Methoden mit Kompositum \hfill 15 min
+
+Sucht euch zu zweit eine Methode aus.
+
+* `void vorneEinfuegen(Daten)`
+* `void hintenEinfuegen(Daten)`
+* `Daten vorneEntfernen()`
+* `Daten endeGeben()`
+* `void elementEntfernen(Daten)`
+* `Daten hintenEntfernen()`
+
+Erarbeitet einen Algorithmus für eure Liste mit Kompositum:
+
+1. Visualisiert euren Algorithmus mit Sequenz-/ oder Objektdiagrammen.
+2. Implementiert euren Algorithmus in Java oder Pseudocode.
+
+## \faIcon{desktop} Arbeitsauftrag: Kompositum implementieren
+
+Implementiere eine Liste mit dem Entwurfsmuster **Kompositum**.
+
+Deine Liste sollte die folgenden Methoden rekursiv implementieren:
+
+* `int laengeGeben()`
+* `void vorneEinfuegen(Daten)`
+* `void hintenEinfuegen(Daten)`
+* `Daten vorneEntfernen()`
+* `Daten endeGeben()`
+* `Daten elementEntfernen(Daten)`
+* `Daten hintenEntfernen()`
+
+### \faIcon{earlybirds} Für Schnelle:
+
+Implementiere eine allgemeine Liste, die mit Hilfe von **Generics** ohne Code-Änderungen, Objekte beliebiger Klassen verwalten kann.
+
+## \faIcon{desktop} Implementierung: `int laengeGeben()`
+
+```java
+class Liste { // [...]
+ int laengeGeben() {
+ return anfang.getLength();
+ }
+}
+class Eintrag { // [...]
+ int laengeGeben() {
+ return nachfolger.getLength() + 1;
+ }
+}
+class Abschluss {
+ int laengeGeben() {
+ return 0;
+ }
+}
+```
+
+## Implementierung: `void vorneEinfuegen(daten)`
+
+```java
+class Liste { // [...]
+ void vorneEinfuegen(daten) {
+ Eintrag n = new Eintrag(daten);
+ n.naechsterSetzen(first);
+ anfang = n;
+ }
+}
+class Eintrag { // [...]
+ void naechsterSetzen(Listeneintrag n) {
+ nachfolger = n;
+ }
+}
+class Abschluss {
+ void naechsterSetzen(Listeneintrag n) {}
+}
+```
+
+## Implementierung: `void hintenEinfuegen(daten)`
+
+```java
+class Liste { // [...]
+ void hintenEinfuegen(Daten daten) {
+ anfang = anfang.hintenEinfuegen(daten);
+}}
+class Eintrag { // [...]
+ Listeneintrag hintenEinfuegen(Daten daten) {
+ nachfolger = nachfolger.hintenEinfuegen(daten);
+ return this;
+}}
+class Abschluss {
+ Listeneintrag hintenEinfuegen(Daten daten) {
+ Eintrag n = new Eintrag(daten);
+ n.naechsterSetzen(this);
+ return n;
+ }
+}
+```
+
+## Implementierung: `Daten vorneEntfernen()`
+
+```java
+class Liste { // [...]
+ Daten vorneEntfernen() {
+ Daten d = anfang.datenGeben();
+ anfang = anfang.naechsterGeben();
+ return d;
+ }
+}
+class Abschluss {
+ ListenElement naechsterGeben() { return this; }
+}
+```
+
+## Implementierung: `Daten endeGeben()`
+```java
+class Liste { // [...]
+ Daten endeGeben() {
+ return anfang.endeGeben(null);
+ }
+}
+class Eintrag {
+ Daten endeGeben(Daten prev) {
+ return nachfolger.endeGeben(this.daten);
+ }
+}
+class Abschluss {
+ Daten endeGeben(Daten prev) {
+ return prev;
+ }
+}
+```
+
+## Implementierung: `Daten elementEntfernen(daten)`
+
+```java
+class Liste { // [...]
+ void elementEntfernen(Daten daten) {
+ if (anfang.datenGeben() == daten) { vorneEntfernen(); }
+ else { anfang.elementEntfernen(daten); }
+ }
+}
+class Eintrag {
+ void elementEntfernen(Daten daten) {
+ if (nachfolger.datenGeben() == daten) {
+ nachfolger = nachfolger.naechsterGeben();
+ } else {
+ nachfolger.elementEntfernen(daten);
+ }
+ }
+}
+class Abschluss {
+ void elementEntfernen(Daten daten) { }
+}
+```
+
+## Implementierung: `Daten elementEntfernen(daten)` v2
+
+```java
+class Liste { // [...]
+ void elementEntfernen(Daten daten) {
+ anfang = anfang.elementEntfernen(daten);
+ }
+}
+class Eintrag {
+ void elementEntfernen(Daten daten) {
+ if (this.datenGeben() == daten) {
+ return naechsterGeben();
+ }
+ nachfolger = nachfolger.elementEntfernen(daten);
+ return this;
+ }
+}
+class Abschluss {
+ void elementEntfernen(Daten daten) { return this; }
+}
+```
+
+## Implementierung: `Daten hintenEntfernen()`
+```java
+class Liste { // [...]
+ Daten hintenEntfernen() {
+ Daten ende = anfang.endeGeben(null);
+ anfang.elementEntfernen(ende);
+ return ende;
+ }
+}
+```
diff --git a/Info/12/Listen/Trennung_Strukur_Daten/.gitignore b/Info/12/Listen/Trennung_Strukur_Daten/.gitignore
new file mode 100644
index 00000000..dd6b8c3d
--- /dev/null
+++ b/Info/12/Listen/Trennung_Strukur_Daten/.gitignore
@@ -0,0 +1,2 @@
+slides-wiederholung.pdf
+slides-wiederholung.pptx
diff --git a/Info/12/Listen/Trennung_Strukur_Daten/slides-wiederholung.md b/Info/12/Listen/Trennung_Strukur_Daten/slides-wiederholung.md
new file mode 100644
index 00000000..2b8c0d89
--- /dev/null
+++ b/Info/12/Listen/Trennung_Strukur_Daten/slides-wiederholung.md
@@ -0,0 +1,60 @@
+---
+author: Florian Fischer
+theme: metropolis
+aspectratio: 169
+header-includes:
+ \usepackage{pgf-umlsd}
+---
+
+## \faIcon{comments} Wiederholung: Sonderfälle \hfill 1/3
+
+Nimm Stellung zu folgender Aussage: \vspace{1cm}
+
+> Alle Sonderfälle: leere Liste, gesuchtes Element ist das Erste/Letzte müssen in der Liste behandelt werden.
+
+\pause
+
+\begin{tikzpicture}[overlay, remember picture]
+ \node[rotate=5,scale=2] at (0.75\textwidth, 2) {\large \textbf{\textcolor{green!80!black}{Korrekt}}};
+\end{tikzpicture}
+
+## \faIcon{comments} Wiederholung: Sequenzdiagramm \hfill 2/3 {.t}
+
+Nimm Stellung zu folgender Aussage: \vspace{0.5cm}
+
+> Das Sequenzdiagramm zeigt einen Ablauf der rekursiven Methode `getLength()`.
+
+\centering
+\begin{sequencediagram}
+ \newthread{A}{playlist}{}
+ \newinst[1.5]{B}{s1}{}
+ \newinst[1.5]{C}{s2}{}
+ \newinst[1.5]{D}{s3}{}
+ \begin{call}{A}{?}{B}{null}
+ \begin{call}{B}{?}{C}{null}
+ \begin{call}{C}{?}{D}{null}
+ \end{call}
+ \end{call}
+ \end{call}
+\end{sequencediagram}
+
+\pause
+
+\begin{tikzpicture}[overlay, remember picture]
+ \node[rotate=5,scale=2] at (5, 3.5) {\large \boldred{Falsch}};
+\end{tikzpicture}
+
+## \faIcon{comments} Wiederholung: Arten von Listen \hfill 3/3 {.t}
+
+Nimm Stellung zu folgender Aussage: \vspace{0.75cm}
+
+> Eine rekursiver Methodenaufruf bedeutet, dass das Objekt eine Methode der eigenen Klasse aufruft.
+
+\pause
+
+\begin{tikzpicture}[overlay, remember picture]
+ \node[rotate=5,scale=2] at (4, 0.3) {\large \boldred{Falsch}};
+\end{tikzpicture}
+
+\vspace{0.25cm}
+> Eine rekursiver Methodenaufruf bedeutet, dass das Objekt die \boldred{gleiche} Methode der Klasse aufruft.
diff --git a/Info/12/Listen/Trennung_Strukur_Daten/slides.md b/Info/12/Listen/Trennung_Strukur_Daten/slides.md
new file mode 100644
index 00000000..1e24602d
--- /dev/null
+++ b/Info/12/Listen/Trennung_Strukur_Daten/slides.md
@@ -0,0 +1,174 @@
+---
+author: Florian Fischer
+theme: metropolis
+aspectratio: 169
+header-includes:
+ \usepackage{pgf-umlsd}
+---
+
+```{.include}
+slides-wiederholung.md
+```
+
+## \faIcon{chalkboard-teacher} Wiederholung: Die Liste
+
+\centering
+\begin{tikzpicture}
+ \begin{object}[text width=3cm]{liste}{0,0}
+ \attribute{anfang}
+ \attribute{ende}
+ \end{object}
+
+ \begin{object}[text width=3.5cm]{lied1}{-5,-2.5}
+ \attribute{name = "foo"}
+ \attribute{next}
+ \end{object}
+
+ \node[fill=black, circle, minimum size=0.005cm, scale=0.5] (n1) at (-5.8, -3.9) {};
+ \draw[line width=2pt, -latex, draw=blue!80] (n1) edge [bend right=15] (-2, -2.75);
+
+ \begin{object}[text width=3.5cm]{lied2}{0,-2.5}
+ \attribute{name = "bar"}
+ \attribute{next}
+ \end{object}
+
+ \node[fill=black, circle, minimum size=0.005cm, scale=0.5] (n1) at (-0.8, -3.9) {};
+ \draw[line width=2pt, -latex, draw=blue!80] (n1) edge [bend right=15] (3, -2.75);
+
+ \begin{object}[text width=3.5cm]{lied3}{5,-2.5}
+ \attribute{name = "baz"}
+ \attribute{next}
+ \end{object}
+
+ % Anfang
+ \node[fill=black, circle, minimum size=0.005cm, scale=0.5] (anfang) at (-1.6, -0.81) {};
+ \draw[line width=2pt, -latex, draw=blue!80] (anfang) edge [bend right=25] (-5.1, -2.45);
+
+ % Ende
+ \node[fill=black, circle, minimum size=0.005cm, scale=0.5] (ende) at (-0.35, -1.4) {};
+ \draw[line width=2pt, -latex, draw=blue!80] (ende) edge [bend left=20] (5.1, -2.45);
+\end{tikzpicture}
+
+## {.standout}
+
+Könnten wir mit unserer Playlist nicht auch Kurzvideos verwalten?
+
+## Problem
+
+### Daten und Verwaltung
+
+In unserer Implementierung ist der Code für die Daten und die Verwaltung der Liste vermischt.
+
+\pause
+
+### \faIcon{lightbulb} Trennung von Struktur und Daten
+
+Wie bekommen wir den Code zur Verwaltung von dem Code für die Daten (Songs, Videos, Kund*innen) getrennt?
+
+##
+
+\begin{tikzpicture}
+ \begin{object}[text width=3cm]{liste}{0,0}
+ \attribute{anfang}
+ \attribute{ende}
+ \end{object}
+
+ \begin{object}[text width=3.5cm]{node1}{-5,-2.5}
+ \attribute{next}
+ \attribute{daten}
+ \end{object}
+
+ \begin{object}[text width=3.5cm]{daten1}{-5,-4.5}
+ \attribute{inhalt}
+ \end{object}
+
+ \node[fill=black, circle, minimum size=0.005cm, scale=0.5] (d1) at (-5.7, -3.85) {};
+ \draw[line width=2pt, draw=blue!80] (d1) edge [bend left=15, -latex] (daten1);
+
+ \node[fill=black, circle, minimum size=0.005cm, scale=0.5] (n1) at (-5.8, -3.3) {};
+ \draw[line width=2pt, -latex, draw=blue!80] (n1) edge [bend right=15] (-2, -2.75);
+
+ \begin{object}[text width=3.5cm]{node2}{0,-2.5}
+ \attribute{next}
+ \attribute{daten}
+ \end{object}
+
+ \begin{object}[text width=3.5cm]{daten2}{0,-4.5}
+ \attribute{inhalt}
+ \end{object}
+
+ \node[fill=black, circle, minimum size=0.005cm, scale=0.5] (d2) at (-0.7, -3.85) {};
+ \draw[line width=2pt, draw=blue!80] (d2) edge [bend left=15, -latex] (daten2);
+
+ \node[fill=black, circle, minimum size=0.005cm, scale=0.5] (n1) at (-0.8, -3.3) {};
+ \draw[line width=2pt, -latex, draw=blue!80] (n1) edge [bend right=15] (3, -2.75);
+
+ \begin{object}[text width=3.5cm]{node3}{5,-2.5}
+ \attribute{next}
+ \attribute{daten}
+ \end{object}
+
+ \begin{object}[text width=3.5cm]{daten3}{5,-4.5}
+ \attribute{inhalt}
+ \end{object}
+
+ \node[fill=black, circle, minimum size=0.005cm, scale=0.5] (d3) at (4.3, -3.85) {};
+ \draw[line width=2pt, draw=blue!80] (d3) edge [bend left=15, -latex] (daten3);
+
+ % Anfang
+ \node[fill=black, circle, minimum size=0.005cm, scale=0.5] (anfang) at (-1.6, -0.81) {};
+ \draw[line width=2pt, -latex, draw=blue!80] (anfang) edge [bend right=25] (-5.1, -2.45);
+
+ % Ende
+ \node[fill=black, circle, minimum size=0.005cm, scale=0.5] (ende) at (-0.35, -1.4) {};
+ \draw[line width=2pt, -latex, draw=blue!80] (ende) edge [bend left=20] (5.1, -2.45);
+\end{tikzpicture}
+
+## \faIcon{pencil-alt} Arbeitsauftrag: Klassendiagramm \hfill 5min
+
+Erweitere das Klassendiagramm der Liste, sodass Daten-/ und Listenverwaltung von getrennten Klassen umgesetzt werden.
+
+### Einfaches Klassendiagramm {.tipp}
+
+\centering
+\begin{tikzpicture}
+ \node[draw] (list) {\large Liste};
+ \node[draw] (song) at (5, 0) {\large Lied};
+
+ \draw ($(list.east) + (0, 0.1cm)$) edge[above] node {hat als Anfang > 0,1} ($(song.west) + (0, 0.1cm)$);
+ \draw ($(list.east) - (0, 0.1cm)$) edge[below] node {hat als Ende > 0,1} ($(song.west) - (0, 0.1cm)$);
+ \draw (song.north) |- ($(song.north) + (0, 0.5cm)$) edge[above] node {0,1 < hat als Nachfolger} ($(song.north) + (3.5cm, 0.5cm)$);
+ \draw ($(song.north) + (3.5cm, 0.5cm)$) |- (song.east);
+\end{tikzpicture}
+
+## Klassendiagramm mit Trennung zwischen Struktur und Inhalt
+
+\centering
+\begin{tikzpicture}
+ \node[draw] (list) {\large Liste};
+ \node[draw] (node) at (5, 0) {\large ListenElement};
+ \node[draw] (song) at (5, -3) {\large Lied};
+
+ \draw ($(list.east) + (0, 0.1cm)$) edge[above] node {anfang > 0,1} ($(node.west) + (0, 0.1cm)$);
+ \draw ($(list.east) - (0, 0.1cm)$) edge[below] node {ende > 0,1} ($(node.west) - (0, 0.1cm)$);
+ \draw (node.north) |- ($(node.north) + (0, 0.5cm)$) edge[above] node {0,1 < nachfolger} ($(node.north) + (3.5cm, 0.5cm)$);
+ \draw ($(node.north) + (3.5cm, 0.5cm)$) |- (node.east);
+
+ \draw (song.north) edge[above] node[rotate=-90] {verwaltet > 1} (node.south);
+\end{tikzpicture}
+
+## \faIcon{desktop} Arbeitsauftrag: Trennung zwischen Struktur und Inhalt
+
+1. Dupliziere deinen Listen Workspace
+2. Übertrage die Rekursiven Methoden aus der Klasse Song in eine Klasse `ListEntry`.
+3. Passe die Methoden der Playlist entsprechend an, dass jeder Song von einem `ListEntry` Objekt verwaltet wird.
+
+### Beispiel: `void add(Song s)`{.java} {.example}
+```java
+ void add(Song s) {
+ ListEntry e = new ListEntry(s); // Listenelement für s anlegen
+ if (last)
+ last.next = e; // e kommt nach dem aktuell Letzten
+ last = e; // Das Element wirdam Ende eingefügt
+ }
+```
diff --git a/Info/26_27/09/15/9d/schedule.md b/Info/26_27/09/15/9d/schedule.md
new file mode 100644
index 00000000..2b227a9a
--- /dev/null
+++ b/Info/26_27/09/15/9d/schedule.md
@@ -0,0 +1,22 @@
+---
+lang: de
+geometry: margin=2cm
+---
+# Thema der Stunde
+
+* **Klasse**: 9d
+* **Datum**: 15.09
+
+## Lernziele
+
+## Verlaufplan
+
+---------------------------------------------------------------------------------------------------
+Zeit Phase Unterrichtsgeschehen Ziel Methode Medien
+----- --------------- -------------------------------------------- ----------- ---------- ---------
+---------------------------------------------------------------------------------------------------
+
+## Feedback
+
+* Bisschen trocken
+* Coolerer Einstieg
diff --git a/Info/26_27/09/15/9d/topic b/Info/26_27/09/15/9d/topic
new file mode 120000
index 00000000..3df9a004
--- /dev/null
+++ b/Info/26_27/09/15/9d/topic
@@ -0,0 +1 @@
+../../../../9/1/Intro \ No newline at end of file
diff --git a/Info/26_27/09/17/9c/schedule.md b/Info/26_27/09/17/9c/schedule.md
new file mode 100644
index 00000000..26355768
--- /dev/null
+++ b/Info/26_27/09/17/9c/schedule.md
@@ -0,0 +1,17 @@
+---
+lang: de
+geometry: margin=2cm
+---
+# Thema der Stunde
+
+* **Klasse**: 9c
+* **Datum**: 17.09
+
+## Lernziele
+
+## Verlaufplan
+
+---------------------------------------------------------------------------------------------------
+Zeit Phase Unterrichtsgeschehen Ziel Methode Medien
+----- --------------- -------------------------------------------- ----------- ---------- ---------
+---------------------------------------------------------------------------------------------------
diff --git a/Info/26_27/09/17/9c/topic b/Info/26_27/09/17/9c/topic
new file mode 120000
index 00000000..3df9a004
--- /dev/null
+++ b/Info/26_27/09/17/9c/topic
@@ -0,0 +1 @@
+../../../../9/1/Intro \ No newline at end of file
diff --git a/Info/26_27/09/18/gA12/schedule.md b/Info/26_27/09/18/gA12/schedule.md
new file mode 100644
index 00000000..9a9e379e
--- /dev/null
+++ b/Info/26_27/09/18/gA12/schedule.md
@@ -0,0 +1,19 @@
+---
+lang: de
+geometry: margin=2cm
+---
+# Intro
+
+* **Klasse**: gA12
+* **Datum**: 18.09
+
+## Lernziele
+
+## Verlaufplan
+
+---------------------------------------------------------------------------------------------------
+Zeit Phase Unterrichtsgeschehen Ziel Methode Medien
+----- --------------- -------------------------------------------- ----------- ---------- ---------
+10 Orga
+
+---------------------------------------------------------------------------------------------------
diff --git a/Info/26_27/09/18/gA12/topic1 b/Info/26_27/09/18/gA12/topic1
new file mode 120000
index 00000000..cde08d21
--- /dev/null
+++ b/Info/26_27/09/18/gA12/topic1
@@ -0,0 +1 @@
+../../../../12/gA/Intro \ No newline at end of file
diff --git a/Info/26_27/09/22/9d/schedule.md b/Info/26_27/09/22/9d/schedule.md
new file mode 100644
index 00000000..092bbbb9
--- /dev/null
+++ b/Info/26_27/09/22/9d/schedule.md
@@ -0,0 +1,17 @@
+---
+lang: de
+geometry: margin=2cm
+---
+# Formerln / Datentypen \& Formatierung
+
+* **Klasse**: 9d
+* **Datum**: 22.09
+
+## Lernziele
+
+## Verlaufplan
+
+---------------------------------------------------------------------------------------------------
+Zeit Phase Unterrichtsgeschehen Ziel Methode Medien
+----- --------------- -------------------------------------------- ----------- ---------- ---------
+---------------------------------------------------------------------------------------------------
diff --git a/Info/26_27/09/22/9d/topic b/Info/26_27/09/22/9d/topic
new file mode 120000
index 00000000..0202d805
--- /dev/null
+++ b/Info/26_27/09/22/9d/topic
@@ -0,0 +1 @@
+../../../../9/1/Datentyp_Formatierung/ \ No newline at end of file
diff --git a/Info/26_27/09/22/gA12/schedule.md b/Info/26_27/09/22/gA12/schedule.md
new file mode 100644
index 00000000..c9df26f8
--- /dev/null
+++ b/Info/26_27/09/22/gA12/schedule.md
@@ -0,0 +1,39 @@
+---
+lang: de
+geometry: margin=2cm
+---
+# Intro Listen
+
+* **Klasse**: gA12
+* **Datum**: 22.09
+
+## Lernziele
+1. SuS modellieren eine verkettete Liste
+2. SuS begründen den Unterschied zwischen FIFO und LIFO
+3. Implementieren eine einfach verkettete Liste
+4. Implementieren die Rekursive Methode length
+
+## Verlaufplan
+
+---------------------------------------------------------------------------------------------------
+Zeit Phase Unterrichtsgeschehen Ziel Methode Medien
+----- --------------- -------------------------------------------- ----------- ---------- ---------
+7 Wdh Diskussion 2
+
+10 Modellierung SuS entwerfen Klassendiagramm zu einer 1 PA
+ Playlist-Implementierung, die unbegrenzt
+ Lieder aufnehmen kann aber bei einer leeren
+ Liste so wenig wie moeglich Speicherplatz
+ verschwendet.
+
+15 Sicherung Warteschlange Klassendiagramm 1
+
+30 Impl Warteschlange 3
+
+10 Erarbeitung Warteschlange 4
+
+10 Impl SuS implementieren rekursive Methode length 4
+
+ Puffer Übung Abi (2013) 1,2
+ Regallager
+---------------------------------------------------------------------------------------------------
diff --git a/Info/26_27/09/29/9d/schedule.md b/Info/26_27/09/29/9d/schedule.md
new file mode 100644
index 00000000..7892d53b
--- /dev/null
+++ b/Info/26_27/09/29/9d/schedule.md
@@ -0,0 +1,17 @@
+---
+lang: de
+geometry: margin=2cm
+---
+# Zellbezuege
+
+* **Klasse**: 9d
+* **Datum**: 29.09
+
+## Lernziele
+
+## Verlaufplan
+
+---------------------------------------------------------------------------------------------------
+Zeit Phase Unterrichtsgeschehen Ziel Methode Medien
+----- --------------- -------------------------------------------- ----------- ---------- ---------
+---------------------------------------------------------------------------------------------------
diff --git a/Info/26_27/09/29/9d/topic b/Info/26_27/09/29/9d/topic
new file mode 120000
index 00000000..7d8ddecc
--- /dev/null
+++ b/Info/26_27/09/29/9d/topic
@@ -0,0 +1 @@
+../../../../9/1/Zellbezuege \ No newline at end of file
diff --git a/Info/26_27/09/29/gA12/schedule.md b/Info/26_27/09/29/gA12/schedule.md
new file mode 100644
index 00000000..faadec21
--- /dev/null
+++ b/Info/26_27/09/29/gA12/schedule.md
@@ -0,0 +1,20 @@
+---
+lang: de
+geometry: margin=2cm
+---
+# Funktionen der Liste
+
+* **Klasse**: gA12
+* **Datum**: 29.09
+
+## Lernziele
+
+## Verlaufplan
+
+---------------------------------------------------------------------------------------------------
+Zeit Phase Unterrichtsgeschehen Ziel Methode Medien
+----- --------------- -------------------------------------------- ----------- ---------- ---------
+20 Widerholung
+
+70 Implementierung
+---------------------------------------------------------------------------------------------------
diff --git a/Info/26_27/09/29/gA12/topic b/Info/26_27/09/29/gA12/topic
new file mode 120000
index 00000000..1d071f95
--- /dev/null
+++ b/Info/26_27/09/29/gA12/topic
@@ -0,0 +1 @@
+../../../../12/Listen/Funktionen \ No newline at end of file
diff --git a/Info/9/1/Funktionen/slides.md b/Info/9/1/Funktionen/slides.md
index 4ca1600d..613507d0 100644
--- a/Info/9/1/Funktionen/slides.md
+++ b/Info/9/1/Funktionen/slides.md
@@ -62,8 +62,8 @@ Erläutere die Formel um die *kleine Ein-mal-Eins* Matrix bequem zu befüllen?
\begin{tikzpicture}
\only<1> { \node {\includegraphics[keepaspectratio, width=0.8\textwidth]{img/ein_mal_eins.png}}; }
\only<2-> { \node {\includegraphics[keepaspectratio, width=0.8\textwidth]{img/ein_mal_eins_formular.png}}; }
-\only<3-> { \draw[line width=1pt, blue, -Triangle] (-3.7cm, 1.1cm) -- (-3.7cm, -2.2cm); }
-\only<4-> { \draw[line width=1pt, red, -Triangle] (-2.4cm, 1.35cm) -- (5cm, 1.35cm); }
+\only<3-> { \draw[line width=1pt, red, -Triangle] (-3.7cm, 1.1cm) -- (-3.7cm, -2.2cm); }
+\only<4-> { \draw[line width=1pt, blue, -Triangle] (-2.4cm, 1.35cm) -- (5cm, 1.35cm); }
\end{tikzpicture}
\end{center}
diff --git a/Info/9/1/Zellbezuege/slides.md b/Info/9/1/Zellbezuege/slides.md
index 7943ac8b..ad6bc59c 100644
--- a/Info/9/1/Zellbezuege/slides.md
+++ b/Info/9/1/Zellbezuege/slides.md
@@ -96,7 +96,7 @@ Sie möchten die Eigentümerin Frau Kremig davon überzeugen, den Arbeitslohn in
![](img/salary_formular.png){.center height=50%}
-## \faIcon{desktop} Arbeitsauftrag - 5 min
+## \faIcon{desktop} Arbeitsauftrag \hfill 5 min
![](img/salary_formular.png){.center height=40%}
@@ -138,7 +138,7 @@ Daher möchte sie diesen nur in einer Zelle erfassen:
}
\end{tikzpicture}
-## \faIcon{desktop} Arbeitsauftrag - 5 min
+## \faIcon{desktop} Arbeitsauftrag \hfill 5 min
![](img/salary_single_truth.png){ .center width=80% }
@@ -191,17 +191,17 @@ Um eine automatische Anpassung beim Kopieren zu verhindern, setzt man ein \textc
}
\end{tikzpicture}
-## \faIcon{desktop} Arbeitsauftrag: Zellbezüge anwenden - 15 min
+## \faIcon{desktop} Arbeitsauftrag: Zellbezüge anwenden \hfill 15 min
**Kopiere** das Dokument `Zellbezuege.ods` (aus ByCS Drive) in dein eigenes Laufwerk.
Bearbeite anschließend die ersten **3** Rechenblätter des Dokuments.
-\vspace{2cm}
+\vspace{1cm}
![](img/rechenblaetter.png)
\begin{tikzpicture}[overlay, remember picture]
-\node[draw=red, line width=1pt, minimum width=4.2cm, minimum height=0.5cm, anchor=west, xshift=3.9cm, yshift=2.7cm] at (current page.south west) {};
+\node[draw=red, line width=1pt, minimum width=4.2cm, minimum height=0.5cm, anchor=west, xshift=3.9cm, yshift=3.25cm] at (current page.south west) {};
\end{tikzpicture}
## \faIcon{pencil-alt} Relative und absolute Zellbezüge
@@ -232,20 +232,20 @@ Zur Verhinderung dieser automatischen Anpassung wird ein **$-Zeichen** (Dollarze
::::
:::
-## \faIcon{desktop} Arbeitsauftrag: Zellbezüge anwenden 2 - 15 min
+## \faIcon{desktop} Arbeitsauftrag: Zellbezüge anwenden 2 \hfill 15 min
Bearbeite die letzten **4** Rechenblätter des Dokuments.
-\vspace{1cm}
+\vspace{0.5cm}
![](img/rechenblaetter.png)
\begin{tikzpicture}[overlay, remember picture]
-\node[draw=red, line width=1pt, minimum width=7.2cm, minimum height=0.5cm, anchor=west, xshift=8cm, yshift=4.7cm] at (current page.south west) {};
+\node[draw=red, line width=1pt, minimum width=7.2cm, minimum height=0.5cm, anchor=west, xshift=8cm, yshift=5cm] at (current page.south west) {};
\end{tikzpicture}
\begin{tcolorbox}[colframe=orange]
\textbf{\faIcon{crown} King of the Zellbezüge} \\[0.1cm]
-Wer als erster fertig, erhält eine Belohnung \faIcon{gift}.
+Wer als erster fertig ist, erhält eine Belohnung \faIcon{gift}.
\end{tcolorbox}
## \faIcon{desktop} Arbeitsauftrag
diff --git a/Info/9/3/Planet/Readme.md b/Info/9/3/Planet/Readme.md
index 529819a2..9e8c915d 100644
--- a/Info/9/3/Planet/Readme.md
+++ b/Info/9/3/Planet/Readme.md
@@ -46,6 +46,7 @@ Einige werden automatisch mit dem Abschließen mancher *TODO*-Aktivitäten verge
* Ergänze mehr Begriffe
* Vergebe einen Badge wenn alle Begriffe gefunden wurden.
* Mache den Style von Glossar-Einträgen weniger aufdringlich
+ https://stackoverflow.com/questions/58700523/how-to-add-a-circle-on-the-top-right-corner-of-a-button-above-the-background-and
* Tipps für bedingte Wiederholung (SuS) sollten Code mal gesehen haben oder Hilfe beim Erarbeiten bekommen.
## Entwicklung des Kurses