# Operationalisierte Lernziele [Operatorenliste](https://www.nibis.de/nli1/gohrgs/operatoren/operatoren_ab_2010_2011/operatoren_informatik.pdf) Was wir wollen: ggT über einfaches runterzählen. Anschließend Algorithmus mit Modulo vorführen. Beide Algorithmen per Hand durchführen und darüber zur Laufzeit gehen. ## Einfache mathematische Algorithmen [Referenz](https://www.ruhr-uni-bochum.de/imperia/md/content/stochastik/stoppel/stochalg.pdf) #### Studenten: - beschreiben die Komponenten eines Flussdiagrams - beschreiben den Aufbau eines Flussdiagrams - entwerfen ein Flussdiagramm zur Beschreibung einfacher Aussagenlogischer wenn-dann Sätze. Bsp. "Wenn Peter Mathe mag, schreibt er nur Einsen" - entwerfen ein Flussdiagramm zu bekannten einfachen mathematischen Funktionen z.B. des Betrags - können Flussdiagramme in Struktogramme/Pseudocode überführen - können Struktogramme in Implemtationen in abbozza (?) überführen - Implementieren einfache mathematische Algorithmen (mit Hilfe eines Parsons-Puzzle) ### Euklidischer Algorithmus #### Studenten: - erklären den Aufbau eines euklidischen Algorithmus - entwerfen fehlende Teile eines euklidischen Algorithmus Zunächst Einführung in den euklidischen Algorithmus, für diejenigen, die den Ablauf nicht kennen: Der euklidische Algorithmus führt in drei Schritten zur Lösung: - Größere durch kleine Zahl dividieren - Divisor durch Rest dividieren - Ergebnis in mathematischer Schreibweise notieren Die Student*innen sollen daraus ein Flussdiagramm entwerfen und mit dessen Hilfe den Algorithmus implementieren: ``` int h; if (a == 0) return abs(b); if (b == 0) return abs(a); do { h = a % b; a = b; b = h; } while (b != 0); return abs(a); ``` ## Entscheidungsbäume #### Studenten: - Beschränkung auf binär -> evtl. Studenten nach Beispiel eigenen Baum erstellen lassen - Problemorientiert: Täterfindung - Merkmale der Täterbeschreibung: (Haare, Augenfarbe, etc.) - kurzer theoretischer Input - Textaufgabe - selbst Entscheidungsbaum erstellen - Überleitung wie programmiert man die einzelnen Komponenten - Implementierung des Entscheidungsbaumes - Übergang bzw. kurzer Ausblick KI ## Insertion Sort #### Studenten: - erklären die Funktionsweise von Insertion Sort - erstellen ein Struktogramm zur Beschreibung von Insertion Sort - Implementieren Insertion Sort anhand eines Struktograms - Weg zum Algorithmus in den Vordergrund stellen bzw. Vorgehen kleinschrittig erklären - Selection Sort meist intuitiver? - Beispiel vorführen (z.B. über Video), dann Beschreibung, dann Parson Puzzle. - Nach Parson Puzzle anderen Sortieralgorithmus komplett selber bauen. ``` void sort(int arr[]) { for (int i = 1; i < arr.length; i++) { for ( int j = i; (j>0) && (liste[j-1] > liste[j]); j--){ temp = liste[j-1]; liste[j-1] = liste[j]; liste[j] = temp; } } } ``` Parson Puzzle: ``` /* 1A */ temp = liste[j-1]; /* 1B */ temp = liste[j]; /* 2A */ liste[j] = liste[j-1]; /* 2B */ liste[j-1] = liste[j]; /* 3A */ liste[j+1] = temp; /* 3B */ liste[j] = temp; /* 4A */ for (int i = 1; i < arr.length; i++) /* 4B */ for (int i = 0; i > arr.length; i--) /* 5A */ for ( int j = arr.length; (j>=0) && (liste[j] > liste[j-1]); j--) /* 5B */ for ( int j = i; (j>0) && (liste[j-1] > liste[j]); j--) ``` ## Laufzeit #### Studenten: - bestimmen die Laufzeit eines Pseudocodebeispiels - beurteilen die Effektivität eines bestimmten Pseudocodebeispiels bezogen auf die Laufzeit - entwickeln Laufzeiteffizientere Alternativen