diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2023-12-12 14:21:25 +0100 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2023-12-12 14:21:25 +0100 |
| commit | b0756ce77ecdac6551eb25f991dfbd8d490d8b03 (patch) | |
| tree | 0c78d7ef986071b41be1de6c3ab0d76bc8ac07f5 /Info | |
| parent | 011e76107d068959a9f31b8e0a2b6bf734bea7df (diff) | |
| download | unterricht-b0756ce77ecdac6551eb25f991dfbd8d490d8b03.tar.gz unterricht-b0756ce77ecdac6551eb25f991dfbd8d490d8b03.zip | |
add my todays info lesson in 11B
Diffstat (limited to 'Info')
| -rw-r--r-- | Info/11/MUG_SWG_SG/1/Pfade/img/simplesort_snap.png | bin | 0 -> 66228 bytes | |||
| -rw-r--r-- | Info/11/MUG_SWG_SG/1/Pfade/slides.md | 288 | ||||
| -rw-r--r-- | Info/23_24/12/12/11B/handout.tex | 161 | ||||
| -rw-r--r-- | Info/23_24/12/12/11B/img/snap_steps.png | bin | 0 -> 4991 bytes | |||
| -rw-r--r-- | Info/23_24/12/12/11B/schedule.md | 28 | ||||
| l--------- | Info/23_24/12/12/11B/topic | 1 |
6 files changed, 478 insertions, 0 deletions
diff --git a/Info/11/MUG_SWG_SG/1/Pfade/img/simplesort_snap.png b/Info/11/MUG_SWG_SG/1/Pfade/img/simplesort_snap.png Binary files differnew file mode 100644 index 00000000..61ec7569 --- /dev/null +++ b/Info/11/MUG_SWG_SG/1/Pfade/img/simplesort_snap.png diff --git a/Info/11/MUG_SWG_SG/1/Pfade/slides.md b/Info/11/MUG_SWG_SG/1/Pfade/slides.md new file mode 100644 index 00000000..69e36876 --- /dev/null +++ b/Info/11/MUG_SWG_SG/1/Pfade/slides.md @@ -0,0 +1,288 @@ +--- +header-includes: | + \makeatletter + \beamer@ignorenonframefalse + \makeatother + \usepackage{booktabs} + \newcommand{\graph}{ + \begin{tikzpicture} + \node[fill=red, circle, minimum size=0.2cm] (ts) {}; + \node[above=0.1cm of ts] {Traunstein}; + + \node[fill=red, circle, minimum size=0.2cm] (ib) at (-2, -1) {}; + \node[xshift=-0.3cm, above=0.1cm of ib] {Innsbruck}; + + \node[fill=red, circle, minimum size=0.2cm] (ms) at (1, -2) {}; + \node[right=0.1cm of ms] {Millstadt}; + + \draw (ts) -- node[fill=yellow!30] {138} (ib); + \draw (ts) -- node[fill=yellow!30] {211} (ms); + + \node[fill=red, circle, minimum size=0.2cm] (ic) at (-1, -2.5) {}; + \node[left=0cm of ic, yshift=-0.2cm] {Innichen}; + + \draw (ib) -- node[fill=yellow!30] {139} (ic); + \draw (ms) -- node[fill=yellow!30] {120} (ic); + + \node[fill=red, circle, minimum size=0.2cm] (vd) at (0, -4) {}; + \node[right=0.1cm of vd] {Venedig}; + \draw (ic) -- node[fill=yellow!30] {197} (vd); + \draw (ms) -- node[fill=yellow!30] {278} (vd); + \end{tikzpicture} + } +--- + +## Wdh - Sortieren {.standout} + +Sortieren + +## Wdh - Sortieren + +Beschreibe einen Algorithmus damit ich 5 Spielkarten der Größe nach sortieren kann. + +\pause +### Algorithmen (Auswahl) + +- Insertionsort - [wikipedia.org/wiki/Insertionsort](https://de.wikipedia.org/wiki/Insertionsort) +- Selectionsort - [wikipedia.org/wiki/Selectionsort](https://de.wikipedia.org/wiki/Selectionsort) +- [Simplesort]{.underline} - [wikipedia.org/wiki/Simplesort](https://de.wikipedia.org/wiki/Simplesort) +- Bubblesort - [wikipedia.org/wiki/Bubblesort](https://de.wikipedia.org/wiki/Bubblesort) +- Mergesort - [wikipedia.org/wiki/Mergesort](https://de.wikipedia.org/wiki/Mergesort) +- Quicksort - [wikipedia.org/wiki/Quicksort](https://de.wikipedia.org/wiki/Quicksort) +- Bogosort - [wikipedia.org/wiki/Bogosort](https://de.wikipedia.org/wiki/Bogosort) +- ... - [wikipedia.org/wiki/Sortierverfahren](https://de.wikipedia.org/wiki/Sortierverfahren) + +## Wdh - Simplesort + +Vereinfachung des Selectionsorts. + +\pause +### **Algortihmus** + +``` +Wiederhole für jeden Index → zielIndex + // KOMMENTAR: Suche kleinere Elemente im nachfolgenden, noch unsortieren Bereich: + Wiederhole für jeden größeren Index → pruefIndex + Falls Eintrag an preufIndex < Eintrag an zielIndex + Vertausche Eintrag an pruefIndex mit dem Eintrag an zielIndex +``` + +\pause +### \faIcon{desktop} Arbeitsauftrag - Simplesort in `Snap!` + +Implementiere den Simplesort Algorithmus in einer Snap! Methode + +## \faIcon{chalkboard-teacher} Lösung - Simplesort in `Snap!` + +{.center height=85%} + +## Radtour nach Venedig + +::: columns +:::: {.column width=50%} +Für die kommenden Sommerferien plant ihr eine Radtour durch die Alpen nach \boldred{Venedig}. +\vspace{1cm} + +\pause + +Als Startpunkt habt ihr euch \boldred{Traunstein} ausgesucht. +:::: + +:::: {.column width=50%} +\graph +:::: +::: + +## Radtour nach Venedig + +::: columns +:::: {.column width=50%} +\vspace{2cm} +Wie finden wir den kürzesten Weg von Traunstein nach Venedig? +:::: + +:::: {.column width=50%} +\graph +:::: +::: + +## Dijkstra Algortihmus + +Eine Möglichkeit \boldred{effizient} den kürzesten Weg zwischen zwei Punkten zu finden ist der Algorithmus des niederländischen Informatikers Dijkstra. + +Dazu benötigen wir zu erst eine Tabelle aller Orte mit den vier Spalten: +**Ort, kommt von, Distanz zum Start, bearbeitet** + +::: columns +:::: {.column width=60%} +\begin{tabular}{l | l | l | l} +Ort & kommt von & Distanz zum Start & bearbeitet \\ +\toprule +Traunstein & & 0 & \\ +\hline +Innsbruck & & $\infty$ & \\ +\hline +Innichen & & $\infty$ & \\ +\hline +Millstatt & & $\infty$ & \\ +\hline +Venedig & & $\infty$ & \\ +\end{tabular} +:::: + +:::: {.column width=40%} +\hspace{0.3cm} \scalebox{0.8}{\graph} +:::: +::: + + +## Dijkstra Algortihmus Start + +Zuerst tragen wir alle benachbarten Orte vom Start und ihre Distanzen ein und vermerken den Start als \textbf{bearbeitet}. + +::: columns +:::: {.column width=60%} +\begin{tabularx}{\textwidth}{X | X | X | X} +Ort & kommt von & Distanz zum Start & bearbeitet \\ +\toprule +Traunstein & & 0 & \cellcolor{green!20} X \\ +\hline +\rowcolor{blue!10} Innsbruck & Traunstein & 138 & \\ +\hline +Innichen & & $\infty$ & \\ +\hline +\rowcolor{blue!10} Millstatt & Traunstein & 211 & \\ +\hline +Venedig & & $\infty$ & \\ +\end{tabularx} +:::: + +:::: {.column width=40%} +\hspace{0.3cm} \scalebox{0.8}{\graph} +:::: +::: + +## Dijkstra Algortihmus Fortsetzung + +Wir wählen den \boldred{nicht bearbeiteten} Ort mit der \boldred{kürzesten} Distanz zum Start. + +\only<1>{\phantom{Setzen in auf \textbf{bearbeitet}.}} +\only<2->{Setzen in auf \textbf{bearbeitet}.} + +\only<-2>{\phantom{Von dem gewählten Ort bestimmen wir alle Distanzen zum Start und aktualisieren Einträge für die wir einen kürzeren Weg gefunden haben.}} +\only<3->{Von dem gewählten Ort bestimmen wir alle Distanzen zum Start und aktualisieren Einträge für die wir einen kürzeren Weg gefunden haben.} + +::: columns +:::: {.column width=60%} +\only<-5>{ +\begin{tabularx}{\textwidth}{X | X | X | X} +Ort & kommt von & Distanz zum Start & bearbeitet \\ +\toprule +Traunstein & & 0 & X \\ +\hline +\rowcolor{red!20} Innsbruck & Traunstein & 138 & \only<2->{\cellcolor{green!20}} \only<2->{X} \only<-2>{\\ \hline} +\only<3->{\\ \hline \rowcolor{blue!10}} Innichen & \only<4->{Innsbruck} & \only<-3>{$\infty$}\only<4->{277} & \\ +\hline +Millstatt & Traunstein & 211 & \\ +\hline +Venedig & & $\infty$ & \\ +\end{tabularx} +} +\only<6-8>{ +\begin{tabularx}{\textwidth}{X | X | X | X} +Ort & kommt von & Distanz zum Start & bearbeitet \\ +\toprule +Traunstein & & 0 & X \\ +\hline +Innsbruck & Traunstein & 138 & X \\ +\hline +Innichen & Innsbruck & \only<-3>{$\infty$}\only<4->{277} & \\ +\hline +\rowcolor{red!20} Millstatt & Traunstein & 211 & \only<7->{\cellcolor{green!20}} \only<7->{X} \only<-7>{\\ \hline} +\only<8->{\\ \hline \rowcolor{blue!10}} Venedig & \only<8->{Millstadt} & \only<-7>{$\infty$}\only<8>{498} & \\ +\end{tabularx} +} +\only<9-10>{ +\begin{tabularx}{\textwidth}{X | X | X | X} +Ort & kommt von & Distanz zum Start & bearbeitet \\ +\toprule +Traunstein & & 0 & X \\ +\hline +Innsbruck & Traunstein & 138 & X \\ +\hline +\rowcolor{red!20} Innichen & Innsbruck & 277 & \only<7->{\cellcolor{green!20} X} \\ +\hline +Millstatt & Traunstein & 211 & X \only<-9>{\\ \hline} +\only<10->{\\ \hline \rowcolor{blue!10}} Venedig & \only<9->{Innichen} & \only<-9>{498}\only<10>{\textbf{474}} & \\ +\end{tabularx} +} +\only<11->{ +\begin{tabularx}{\textwidth}{X | X | X | X} +Ort & kommt von & Distanz zum Start & bearbeitet \\ +\toprule +Traunstein & & 0 & X \\ +\hline +Innsbruck & Traunstein & 138 & X \\ +\hline +Innichen & Innsbruck & 277 & X \\ +\hline +Millstatt & Traunstein & 211 & X \\ +\hline +\rowcolor{red!20} Venedig & Innichen & 474 & \only<11->{\cellcolor{green!20} X}\\ +\end{tabularx} +} +:::: + +:::: {.column width=40%} +\hspace{0.3cm} \scalebox{0.8}{\graph} +:::: +::: + +## Dijkstra Algortihmus Ende + +Der kürzeste Weg zu einem Ort wurde gefunden sobald dieser als bearbeitet markiert ist. +\begin{tabularx}{\textwidth}{X | X | X | X} +Ort & kommt von & Distanz zum Start & bearbeitet \\ +\toprule +Traunstein & & 0 & X \\ +\hline +Innsbruck & Traunstein & 138 & X \\ +\hline +Innichen & Innsbruck & 277 & X \\ +\hline +Millstatt & Traunstein & 211 & X \\ +\hline +\rowcolor{red!20} Venedig & Innichen & 474 & X\\ +\end{tabularx} + +Der Weg nach Venedig lässt sich aus der Tabelle ablesen: +**Venedig < Innichen < Innsbruck < Traunstein** + +## \faIcon{pencil-alt} Arbeitsauftrag - Dijkstra + +::: columns +:::: {.column width=70%} +\begin{enumerate}[a)] +\item Ermittle alle möglichen Wege von A nach D mit ihren Längen. +\item Ermittle den kürzesten Weg von A nach D mit dem Dijkstra-Algortihmus. +\item Vergleiche den Aufwand von \textbf{a)} und \textbf{b)}. Warum wird der Dijkstra-Algortihmus erst bei vielen Knoten überlegen sein? +\end{enumerate} +:::: + +:::: {.column width=30%} +\begin{tikzpicture} +\node[circle, fill=blue!10] (a) {A}; +\node[circle, fill=blue!10, yshift=1cm, right=1cm of a] (b) {B}; +\node[circle, fill=blue!10, right=2cm of a] (d) {D}; +\node[circle, fill=blue!10, yshift=-1cm, right=1cm of a] (c) {C}; + +\draw (a) -- node[fill=bg] {3} (b); +\draw (b) -- node[fill=bg] {2} (d); +\draw (d) -- node[fill=bg] {5} (c); +\draw (c) -- node[fill=bg] {1} (a); +\draw (c) -- node[fill=bg, above] {3} (b); +\draw (a) -- node[fill=bg] {7} (d); +\end{tikzpicture} +:::: +::: + diff --git a/Info/23_24/12/12/11B/handout.tex b/Info/23_24/12/12/11B/handout.tex new file mode 100644 index 00000000..cda56b37 --- /dev/null +++ b/Info/23_24/12/12/11B/handout.tex @@ -0,0 +1,161 @@ +\documentclass[]{handout} +\usepackage{booktabs} +\usepackage{tabularx} +\newcommand{\boldred}[1]{\textcolor{red}{\textbf{#1}}} +\newcommand{\vcenteredinclude}[2]{\begingroup +\setbox0=\hbox{\includegraphics[#1]{#2}}% +\parbox{\wd0}{\box0}\endgroup} + +\title{} + +\begin{document} +\thispagestyle{empty} +\makedate + +\subsection*{Die Liste} + +\begin{tabularx}{\textwidth}{X X} +\vspace{-2cm} +Die Verwaltung vieler (oft gleichartiger) Datenelemente wird durch eine \boldred{Liste} stark erleichtert. \vspace{0.2cm}\newline +Die Elemente einer Liste können über den \boldred{Index} (ihre Position in der Liste) verwendet werden. & \includegraphics[width=0.3\textwidth,keepaspectratio]{img/Copyrighted/array.png} \\ +\end{tabularx} \vspace{0.2cm} +Die Liste bietet Methoden um die Verwaltung zu erleichtern, bspw. um Elemente \textbf{zu suchen, hinzuzufügen, zu löschen, ...} + +\subsection*{Algorithmen verstehen} + +Um Algorithmen leichter zu verstehen, Ablaufe nachzuvollziehen und Fehler zu finden bieten sich folgende Möglichkeiten: + +\begin{itemize} +\item Zwischenergebnisse anzeigen lassen +\item \parbox{\linewidth}{Das Programm Schrittweise ausführen \vcenteredinclude{height=1cm, keepaspectratio}{img/snap_steps.png}} +\item Testfälle auswählen und Erwartungen testen +\end{itemize} + +\subsubsection*{Testen} + +Um einen Test zu schreiben benötigen wir eine \boldred{Erwartung} die wir testen können. \\[0.1cm] + +\underline{\textbf{Beispiel:}} \\[0.1cm] +\phantom{a}\hspace{0.4cm} Die Methode \texttt{Addiere(a, b)} addiert die zwei Zahlen $a$ und $b$. \\ +\phantom{a}\hspace{0.4cm} Unserer Erwartung ist \texttt{Addiere(2, 1) = 2}. \\[0.1cm] + +Ein Testfall würde unsere Erwartung überprüfen und wenn sie nicht erfüllt wird einen Fehler anzeigen. + +\subsection*{Sortieren} +\begin{tabularx}{\textwidth}{p{0.39\textwidth} X} +\vspace{-5cm}Sortieren ist ein verbreitetes Problem in der Informatik, deshalb existieren eine Vielzahl an Sortier-Verfahren. & +\includegraphics[width=0.6\textwidth, keepaspectratio]{img/Copyrighted/Cornelson11_S57_card_sort.png} +\\ +\end{tabularx} \\[0.2cm] + +Ein einfaches Verfahren das dem menschlichen Sortierverhalten nachempfunden ist \boldred{Simplesort}. + +\subsubsection*{Simplesort} + +\begin{verbatim} +Wiederhole für jeden Index → zielIndex + // KOMMENTAR: Suche kleinere Elemente im nachfolgenden, noch unsortieren Bereich: + Wiederhole für jeden größeren Index → pruefIndex + Falls Eintrag an preufIndex < Eintrag an zielIndex + Vertausche Eintrag an pruefIndex mit dem Eintrag an zielIndex +\end{verbatim} + +\newpage +\subsection*{Kürzesten Wege} +\begin{tabularx}{\textwidth}{p{0.6\textwidth} X} +\vspace{-3cm} +Den \boldred{kürzesten Weg} von einem Punkt zu einem anderen lässt sich mit dem von \boldred{Dijkstra} bereits 1956 veröffentlichten Algorithmus effizient bestimmen. \vspace{0.2cm} \newline +Wir planen eine Radtour von Traunstein nach Venedig. & +\begin{tikzpicture} +\node[fill=red, circle, minimum size=0.2cm] (ts) {}; +\node[above=0.1cm of ts] {Traunstein}; + +\node[fill=red, circle, minimum size=0.2cm] (ib) at (-2, -1) {}; +\node[xshift=-0.3cm, above=0.1cm of ib] {Innsbruck}; + +\node[fill=red, circle, minimum size=0.2cm] (ms) at (1, -2) {}; +\node[right=0.1cm of ms] {Millstadt}; + +\draw (ts) -- node[fill=yellow!30] {138} (ib); +\draw (ts) -- node[fill=yellow!30] {211} (ms); + +\node[fill=red, circle, minimum size=0.2cm] (ic) at (-1, -2.5) {}; +\node[left=0cm of ic, yshift=-0.2cm] {Innichen}; + +\draw (ib) -- node[fill=yellow!30] {139} (ic); +\draw (ms) -- node[fill=yellow!30] {120} (ic); + +\node[fill=red, circle, minimum size=0.2cm] (vd) at (0, -4) {}; +\node[right=0.1cm of vd] {Venedig}; +\draw (ic) -- node[fill=yellow!30] {197} (vd); +\draw (ms) -- node[fill=yellow!30] {278} (vd); +\end{tikzpicture} \\ +\end{tabularx} + +\subsubsection*{Schritt 0 Vorbereitung} +Erstelle eine Tabelle mit \underline{allen} Orten und den Spalten: \textbf{Ort, kommt von, Distanz zum Start, bearbeitet}. +Fülle die Spalte Distanz zum Start, bei dem Startort mit 0 und bei allen anderen Reihen mit $\infty$. + +\begin{center} +\begin{tabular}{l | l | l | l} +Ort & kommt von & Distanz zum Start & bearbeitet \\ +\toprule +Traunstein & & 0 & \\ +\hline +Innsbruck & & $\infty$ & \\ +\hline +Innichen & & $\infty$ & \\ +\hline +Millstatt & & $\infty$ & \\ +\hline +Venedig & & $\infty$ & \\ +\end{tabular} +\end{center} + +\subsubsection*{Schritt 1 Start} + +Ermittle vom Startort alle Distanzen zu den benachbarten Orten. +Danach ist der Startort bearbeitet. + +\begin{center} +\begin{tabular}{l | l | l | l} +Ort & kommt von & Distanz zum Start & bearbeitet \\ +\toprule +Traunstein & & 0 & X \\ +\hline +Innsbruck & Traunstein & 138 & \\ +\hline +Innichen & & $\infty$ & \\ +\hline +Millstatt & Traunstein & 211 & \\ +\hline +Venedig & & $\infty$ & \\ +\end{tabular} +\end{center} + +\subsubsection*{Schritt 2 Wiederhole bis Zielort erreicht} + +Wähle den \boldred{noch nicht bearbeiteten} Ort mit der \boldred{niedrigsten} Distanz zum Start. +Setze in auf \textbf{bearbeitet}. \\[0.1cm] +Ermittle von ihm aus alle kürzesten Distanzen zum Startort aller \boldred{noch nicht bearbeiteter Nachbarn}. \\[0.1cm] +Solltest du eine kürzere Distanz gefunden habe aktualisiere sie sowie den Eintrag in der Spalte \textbf{kommt von}. + +\begin{center} +\begin{tabular}{l | l | l | l} +Ort & kommt von & Distanz zum Start & bearbeitet \\ +\toprule +Traunstein & & 0 & X \\ +\hline +Innsbruck & Traunstein & 138 & X \\ +\hline +Innichen & Innsbruck & 277 & X \\ +\hline +Millstatt & Traunstein & 211 & X \\ +\hline +Venedig & Innichen & 477 & X\\ +\end{tabular} +\end{center} + +Der kürzeste Weg zum Ziel wurde gefunden wenn das Ziel \textbf{bearbeitet} wurde. \\[0.1cm] +Den Weg können wir rückwärts aus der Tabelle ablesen: Venedig < Innichen < Innsbruck < Traunstein mit einer Länge von 474 km. +\end{document} diff --git a/Info/23_24/12/12/11B/img/snap_steps.png b/Info/23_24/12/12/11B/img/snap_steps.png Binary files differnew file mode 100644 index 00000000..b3a8e2bf --- /dev/null +++ b/Info/23_24/12/12/11B/img/snap_steps.png diff --git a/Info/23_24/12/12/11B/schedule.md b/Info/23_24/12/12/11B/schedule.md new file mode 100644 index 00000000..33e1528a --- /dev/null +++ b/Info/23_24/12/12/11B/schedule.md @@ -0,0 +1,28 @@ +--- +lang: de +geometry: margin=2cm +--- +# Thema der Stunde + +* **Klasse**: 11B +* **Datum**: 12.12 + +## Lernziele + +## Verlaufplan + +--------------------------------------------------------------------------------------------------- +Zeit Phase Unterrichtsgeschehen Ziel Methode Medien +----- --------------- -------------------------------------------- ----------- ---------- --------- +20 Wdh Algorithmik + +10 Wdh Testen + +10 Wdh Sortieren + +10 Wdh Sortieren in Snap + +15 Erarbeitung Radtour Traunstein Venedig + +20 Uebung Dijkstra Cornelson A57 A1 +--------------------------------------------------------------------------------------------------- diff --git a/Info/23_24/12/12/11B/topic b/Info/23_24/12/12/11B/topic new file mode 120000 index 00000000..669ecebf --- /dev/null +++ b/Info/23_24/12/12/11B/topic @@ -0,0 +1 @@ +../../../../11/MUG_SWG_SG/1/Pfade/
\ No newline at end of file |
