9. Ingenieurpädagogische Regionaltagung 2014 Informatik für Ingenieure Tools für den erfolgreichen Einstieg in die Programmierung Prof. Dr.-Ing. Martin Gräfe, Technische Hochschule Mittelhessen Informatik für Ingenieure Prof. Dr.-Ing. Martin Gräfe 1
Übersicht Lernziele der Lehrveranstaltung Informatik für Ingenieure besondere Herausforderungen in der Lehre StruktoSim Motivation und Zielsetzung Funktionsweise des Tools Live-Demonstration Simple Draw Motivation und Zielsetzung Funktionsweise des Tools Beispiele und Live-Demonstration Feedback der Studierenden Fazit und Diskussion Informatik für Ingenieure Prof. Dr.-Ing. Martin Gräfe 2
Lernziele der Lehrveranstaltung Welche Kompetenzen sollen die Studierenden erwerben? Primäres Lernziel ist die Fertigkeit, einfache und praxisorientierte Programme in C schreiben zu können. ( angewandte Informatik) Beispiele: Messdaten einlesen, verarbeiten und speichern elektrotechnische Berechnungen vom ohmschen Gesetz bis zu partiellen Differenzialgleichungen Vorbereitung auf die Programmierung von Mikrocontrollern Informatik für Ingenieure Prof. Dr.-Ing. Martin Gräfe 3
Lernziele der Lehrveranstaltung (2) Auf dem Weg zum Kompetenzziel Programmieren können müssen zwei Hürden genommen werden: 1. algorithmisches Denken Aufgabenstellung als Algorithmus formulieren 2. Sprachelemente von C kennen und anwenden Befehle, Syntax Insbesondere Punkt 1 bereitet vielen Studierenden große Schwierigkeiten. Informatik für Ingenieure Prof. Dr.-Ing. Martin Gräfe 4
Besondere Herausforderungen in der Lehre Vergleicht man die angewandte Informatik mit der Mathematik oder der Physik, zeigen sich zwei grundlegende Unterschiede: Die meisten Studierenden haben keinerlei Vorkenntnisse. (Informatik ist kein Pflichtfach in der Schule) In der Informatik gibt es (fast) immer mehrere richtige aber trotzdem unterschiedliche Lösungen. Informatik für Ingenieure Prof. Dr.-Ing. Martin Gräfe 5
Besondere Herausforderungen in der Lehre (2) Beispielaufgabe: Erstellen Sie einen Algorithmus, der die größte von drei Zahlen (Z1, Z2, Z3) ermittelt! Variante 1: parallele Verzweigungen 2 N-1-1 Verzweigungen ja ja ja ja Z1 Z1 > Z3 Z3? Ausgabe: Z1 Z1 Z1 Z1 > Z2 Z2? nein nein Ausgabe: Z3 Z3 ja ja Ausgabe: Z2 Z2 nein nein Z2 Z2 > Z3 Z3? nein nein Ausgabe: Z3 Z3 Variante 2: sequenzielle Verzweigungen mit einer Hilfsvariablen N-1 Verzweigungen Beide Lösungen sind richtig! ja ja Maximum = Z1 Z1 ja ja Ausgabe: Z3 Z3 Z1 Z1 > Z2 Z2? Z3 Z3 > Maximum? nein nein Maximum = Z2 Z2 nein nein Ausgabe: Maximum Informatik für Ingenieure Prof. Dr.-Ing. Martin Gräfe 6
Besondere Herausforderungen in der Lehre (3) Konsequenzen für die Lehre: 1. fehlende Vorkenntnisse zunächst nur mit einer Hürde beginnen: Wie formuliert man aus einer Aufgabenstellung einen Algorithmus? symbolische Darstellung mit Struktogrammen (unabhängig von einer Programmiersprache) 2. viele mögliche Lösungen eine Musterlösung an der Tafel ist nicht sinnvoll! Die Studierenden benötigen ein Werkzeug, um ihre Lösung zu überprüfen! StruktoSim 3. Das Kompetenzziel kann nur durch ensives selbstständiges Üben (Programmieren) erreicht werden! ( aktivierende Lehre) Es muss ein Anreiz für selbständiges Programmieren geschaffen werden! Simple Draw Informatik für Ingenieure Prof. Dr.-Ing. Martin Gräfe 7
StruktoSim : Motivation Zielsetzung: ein Werkzeug, mit dem die Studierenden einen selbst entworfenen Algorithmus überprüfen können. Lösungsansatz: ein Interpreter-Programm für Struktogramme vorhandene Tools: Online-Struktogramm-Simulator: http://www.learn2prog.de/ sehr stringente Syntax fast wie eine eigene Programmiersprache! Variablen müssen (wie in C) zunächst deklariert werden. Struktogramm-Editor/Simulator: http://structorizer.fisch.lu/ kann nur mit ganzen Zahlen rechnen (keine Nachkommastellen) für manche Beispielaufgaben ungeeignet Jede Ausgabe ersche als einzelnes Fenster. sehr umständlich in der Anwendung Informatik für Ingenieure Prof. Dr.-Ing. Martin Gräfe 8
StruktoSim : Funktionsweise Die Einschränkungen der vorhandenen Tools führten zu der Entwicklung eines neuen Werkzeugs, das auf die Lehrveranstaltung Informatik für Ingenieure zugeschnitten ist: XML- Datei Struktogrammeditor oder Struktograf 2 StruktoSim Informatik für Ingenieure Prof. Dr.-Ing. Martin Gräfe 9
StruktoSim : Beispiele, Live-Demonstration Beispiel: Euklidischer Algorithmus (größter gemeinsamer Teiler) Informatik für Ingenieure Prof. Dr.-Ing. Martin Gräfe 10
Simple Draw : Motivation und Zielsetzung Gründe für die Programmierung von Grafikausgaben: vielseitiger und ansprechender als reine Textausgaben auf der Konsole eröffnet eressante und anspruchsvolle Übungsaufgaben anschauliche Darstellung von zweidimensionalen Feldern und Rekursionen Einstieg in die Computergrafik wird vermittelt auch für das weitere Studium hilfreich (z. B. Visualisierung von Ergebnissen) Anreiz zum Ausprobieren und Experimentieren ( selbstständiges Lernen) Problem: C und C++ bieten keine eingebauten Grafikfunktionen! Verwendung von Betriebssystem-abhängigen Funktionsbibliotheken notwendig Programmierung ist sehr komplex (WinAPI, GTK+ etc.) Lösung: ein einfaches Tool für grundlegende Zeichenbefehle Informatik für Ingenieure Prof. Dr.-Ing. Martin Gräfe 11
Simple Draw : Funktionsweise Simple Draw besteht (nur) aus 3 Dateien: simple_draw.c simple_draw.h Simple DDE Draw.exe simple_draw.c DDE (Win) bzw. Message Queue (Mac) main.exe Simple Draw.exe main.c (Konsolenanwendung) (Konsolen- simple_draw.h Informatik für Ingenieure Prof. Dr.-Ing. Martin Gräfe 12
Grafikfunktionen von Simple Draw Das Programm stellt folgende Funktionen zum Zeichnen zur Verfügung: ClearGraphic() Inhalt des Grafikfensters löschen MoveTo(x, y) den Zeichenstift positionieren ohne eine Linie zu zeichnen DrawTo(x, y) eine Linie von der aktuellen Position zu Punkt (x y) zeichnen DrawLine(x1, y1, x2, y2) eine Linie von (x1 y1) zu (x2 y2) zeichnen SetPen(red, green, blue, width) Stiftfarbe und -breite ändern DrawPixel(x, y, red, green, blue) einen einzelnen Punkt zeichnen PlaceText(x, y, string) einen Text an Position (x y) ausgeben ResizeGraphic(x, y, width, height) Position und Größe des Grafikfensters ändern Informatik für Ingenieure Prof. Dr.-Ing. Martin Gräfe 13
Simple Draw : Beispiele Schwingkreissimulation Schwingkreis-Simulation Lissajous-Figuren 3D-Plot Informatik für Ingenieure Prof. Dr.-Ing. Martin Gräfe 14
Simple Draw : Beispiele (2) fraktale Grafik (Mandelbrot) Potenzialverlauf am Kondensator Informatik für Ingenieure Prof. Dr.-Ing. Martin Gräfe 15
Simple Draw : Beispiele (3) void void Kreis( Kreis( Xm, Xm, Ym, Ym, Radius) Radius) { { winkel, winkel, x, x, y; y; // // lokale lokale Variablen Variablen } } MoveTo(Xm+Radius, MoveTo(Xm+Radius, Ym); Ym); for for (winkel=2; (winkel=2; winkel<=360; winkel<=360; winkel+=2) winkel+=2) {{ x x = = Xm Xm + + Radius*cos(winkel*M_PI/180) Radius*cos(winkel*M_PI/180) + + 0.5; 0.5; y y = = Ym Ym - - Radius*sin(winkel*M_PI/180) Radius*sin(winkel*M_PI/180) + + 0.5; 0.5; DrawTo(x, DrawTo(x, y); y); } } main() main() { { i, i, x, x, y; y; Erklärung Erklärung von von Funktionen Funktionen am am Beispiel Beispiel Kreis Kreis zeichnen zeichnen } } for for (i=0; (i=0; i<360; i<360; i+=10) i+=10) { { x x = = 350 350 + + 200*cos(i*M_PI/180); 200*cos(i*M_PI/180); y y = = 250 250 - - 150*sin(i*M_PI/180); 150*sin(i*M_PI/180); Kreis(x, Kreis(x, y, y, 70); 70); } } return return 0; 0; Informatik für Ingenieure Prof. Dr.-Ing. Martin Gräfe 16
Feedback der Studierenden Beispiele für die Kreativität der Studierenden: ursprüngliche Aufgabenstellung: Kreis zeichnen Erweiterungen durch Studierende: Kreis mit Farbverläufen, ausgefüllte Kreise ursprüngliche Aufgabenstellung: Funktionsplotter für Parabeln (1. Quadrant) Erweiterungen durch Studierende auf 4 Quadranten, Wertebereich der Achsen kann durch den Benutzer eingegeben werden. Visualisierung von Sortieralgorithmen Aufgrund der einfachen Anwendung wurde das Tool auch für Projektarbeiten zur Visualisierung genutzt. Informatik für Ingenieure Prof. Dr.-Ing. Martin Gräfe 17
Fazit Durch die Einführung von StruktoSim können die Studierenden in den Übungsstunden ihre Lösung selbstständig überprüfen und ggf. korrigieren. wird den Studierenden die Klausurvorbereitung erleichtert, weil sie auch im Selbststudium Aufgaben zum Thema Algorithmen bearbeiten und kontrollieren können. Die Einführung von Simple Draw konnte zumindest einen Teil der Studierenden motivieren, eigene Ideen für Erweiterungen der Übungsaufgaben zu entwickeln und in C-Programme umzusetzen. führte zu einer Anwendung über die Lehrveranstaltung Informatik hinaus. Leider empfand ein kleiner Teil der Studierenden das Thema Computergrafik als besonders schwierig. Informatik für Ingenieure Prof. Dr.-Ing. Martin Gräfe 18
Bezugsquellen StruktoSim und Simple Draw Download der Programme für Windows, Mac OS und Linux, sowie einer Anleitung finden Sie auf meiner Homepage: http://www.iem.thm.de/iem/graefe.html#downloads Struktogrammeditor von Kevin Krummenauer http://www.whiledo.de/index.php?p=struktogrammeditor Struktograf 2 von Thomas Metschies http://www.bbz-dithmarschen.de/lernen-am-bbz/bildungsgaenge-im-detail/fachschule-technik/ Informatik für Ingenieure Prof. Dr.-Ing. Martin Gräfe 19