LazaLab - Einfache Visualisierung für Schulzwecke

Mitteilungen und Ankündigungen
Antworten
pdauscher
Beiträge: 4
Registriert: Do 9. Aug 2012, 18:17

LazaLab - Einfache Visualisierung für Schulzwecke

Beitrag von pdauscher »

Hallo,

Informatiklehrer stehen häufig vor dem Dilemma, dass einfache imperative Pascal-Programme (Konsolenanwendungen) leicht zu schreiben sind, das Endprodukt aber nicht schön aussieht. Schöner sind Programme mit graphischer Benutzeroberfläche. Lazarus unterstützt zwar die Erstellung solcher Programme in hervorragender Weise, trotzdem erfordert eine Einarbeitung in die visuellen Komponenten, ihren Eigenschaften und Ereignissen einen gewissen Zeitaufwand.

Deshalb habe ich ein System aus Lazarus-Units implementiert, die vier graphische "Szenarien" realisiert, die aus einfachen (quasi-imperativen* ) Programmen heraus angesteuert werden können:

+ ein Gitterwelt-Szenario, in dem eine Figur bewegt werden kann (ähnlich wie Kara oder Robot Karol)
+ ein Koordinatensystem zum Plotten von (mehreren) Funktionen (Punkte und/oder Linien)
+ eine Visualisierungsumgebung für Sortieralgorithmen. Listenelemente und Indizes der Algorithmen werden graphisch dargestellt.
+ eine Zeichenumgebung, in die geometrische Figuren eingezeichnet werden können, aber auch Bitmaps geladen werden können. Die Pixel können einzeln über
ihre RGB-Werte angesprochen werden.

LazaLab ist also quasi ein "Labor" für den Informatikunterricht auf Lazarus-Basis (daher der Name).
Die Software ist Open Source und damit erweiterbar.

Sie steht unter http://sourceforge.net/projects/lazalab/
zur Verfügung. Dort stehen auch einige Screenshots. Es steht ein Benutzerhandbuch auf Englisch mit einer Reihe von Beispielen zur Verfügung.

Über die aktive Mitarbeit von anderen Interessierten, über Anregungen und konstruktive Kritik würde ich mich sehr freuen.

------------------------
*) "Quasi-imperativ" soll bedeuten, dass objektorientierte Konstrukte auf ein Minimum reduziert werden können, wenn man das will.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: LazaLab - Einfache Visualisierung für Schulzwecke

Beitrag von Christian »

Ich fänds fast sinvoller die beispiele (oder versteh ich das falsch) beim Lazarus mitzuliefern und die Beschreibungen in die Hilfe oder die Beispielprojekte zu intigrieren. Dann müssen sich die lehrer nicht das projekt extra von Sourceforge holen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pdauscher
Beiträge: 4
Registriert: Do 9. Aug 2012, 18:17

Re: LazaLab - Einfache Visualisierung für Schulzwecke

Beitrag von pdauscher »

Christian hat geschrieben:Ich fänds fast sinvoller die beispiele (oder versteh ich das falsch) beim Lazarus mitzuliefern und die Beschreibungen in die Hilfe oder die Beispielprojekte zu intigrieren. Dann müssen sich die lehrer nicht das projekt extra von Sourceforge holen.


Vielen Dank für die schnelle Antwort. Ich sehe, ich habe mich vielleicht ein bisschen undeutlich ausgedrückt:
Die Units, die ich gebastelt habe, sind als eine Art "vereinfachender Zwischenschicht" zwischen den quasi-imperativen Programmen der Schüler einerseits und dem objektorientierten Konzept von Lazarus zu verstehen. Der Zugriff ist didaktisch einfacher, aber natürlich eingeschränkt.

Langfristig wäre es aber in der Tat eine nette Überlegung, diese Möglichkeiten in Lazarus (etwa als gesonderte) Komponenten einzubinden. Aber dafür fehlen mir a) die Kenntnisse über Komponentenentwicklung und b) die notwendige Zeit.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: LazaLab - Einfache Visualisierung für Schulzwecke

Beitrag von Christian »

Ich habs mir noch nicht angeschaut, bezweifel aber einfach mal von vornherein das das für Schulische Zwecke sinvoll ist.
Denn, die Komponenten haben bei nahezu allen Programmiersprachen fast die selben Eigenschaften. Wenn du das vereinfachst, müssen die Schüler später umlernen wenn sie mit realen Projekten zu tun haben.
Was ich aber schick finde ist die Idee mehr Beispiele, die aufs programmieren lernen ausgelegt sind mitzuliefern evntl ne Tutorialserie o.ä.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: LazaLab - Einfache Visualisierung für Schulzwecke

Beitrag von mschnell »

Wenn das tatsächlich eine sinnvolle "Zwischenschicht" ist, könnte es sinnvoll sein, es enger in die Lazarus IDE zu integrieren, so dass der Schüler beim aufsetzten eines Projektes statt einer neuen normalen "Application" eine neue entsprechende "LazaLab Anwendung" aufsetzen kann, in die er dann seinen Code implementieren kann.

Da es vermutlich nicht sinnvoll ist, das im Mainline Lazarus zu verankern, könntest Du ein entsprechende Patch machen, dass vor dem Kompilieren auf den Lazarus Quellcode angewendet werden kann und dann eine Lazarus IDE mit LazaLab-Features erzeugt.

-Michael

pdauscher
Beiträge: 4
Registriert: Do 9. Aug 2012, 18:17

Re: LazaLab - Einfache Visualisierung für Schulzwecke

Beitrag von pdauscher »

Christian hat geschrieben:Ich habs mir noch nicht angeschaut, bezweifel aber einfach mal von vornherein das das für Schulische Zwecke sinvoll ist.
Denn, die Komponenten haben bei nahezu allen Programmiersprachen fast die selben Eigenschaften.
[...]



Nochmal zur Verdeutlichung: Es geht mir weniger darum, dass die Schüler lernen, mit GUI-Komponenten zu programmieren. Der Nutzen hierfür wäre in der Tat sehr fragwürdig. Mir geht es aber viel mehr um das Erlernen von Algorithmik mit möglichst wenig Ablenkung. Die GUI-Anteil der Schüler-Programme soll also möglichst KLEIN sein, damit sie sich auf die eigentliche Algorithmik konzentrieren können.

Ein Beispiel: Ein Schüler-Algorithmus zum Sortieren von Werten. Dieser hängt in der OnClick-Routine eines einfachen Buttons.

Code: Alles auswählen

procedure TForm1.pb_SelectionSortClick(Sender: TObject);
var left_elem, min, i: integer;
begin
  ShowDisplay(2);
  SortingList.FillRandom;
  for left_elem:=1 to 19
  do begin
     SortingList.MarkA(left_elem,'left_elem');
     min:=left_elem;
     SortingList.MarkB(min,'min');
     for i:=left_elem+1 to 20
     do begin
        SortingList.MarkC(i,'i');
        if SortingList.greater_than(min,i)
           then begin
                min:=i;
                SortingList.MarkB(min,'min');
                end;
        end;
     SortingList.exchange(min,left_elem);
     Print('Exchange ');     Print(min,7);     Print(',');     PrintLn(left_elem);
     end;
end;   
// ================


Mit Ausnahme von ein paar Befehlen wie SortingList.MarkB(...), die den Marker der Variable "min" in der GUI anzeigen, sieht es praktisch aus wie ein imperatives Programm aus der "guten alten Zeit".
Beim Laufen wird allerdings der Ablauf des Algorithmus in regelbarem Tempo angezeigt mit der Möglichkeit, zwischendring anzuhalten usw. Man sieht, wie sich die Indizes verschieben und auch, wie sich die Liste langsam sortiert.
Wenn die Schüler die Visualisierung nun auch noch schreiben müssten, würde der Code DEUTLICH länger und wahrscheinlich auch deutlich weniger übersichtlich.

Wenn du das vereinfachst, müssen die Schüler später umlernen wenn sie mit realen Projekten zu tun haben.

Das stimmt. Ich sehe es so: die starken Schüler fühlen sich vielleicht motiviert, selbst GUIs zu schreiben. Die können sich das entweder aus dem Netz oder wie auch immer aneignen, und sie können auch die LazaLab-Sourcen als "Steinbruch" für eigenen Code verwenden.
Bei schwachen Schülern ist die Frage, ob es sinnvoll ist, diese überhaupt eigene GUIs entwickeln zu lassen. Diese können die Units einfach so benutzen.

Antworten