blog.sketchit.de Glaubt mir ich hab den Weihnachtsmann mit eigenen Augen gesehen…

9Nov/094

Visiual Programming with Structograms (VIPS)

Die visuelle Programmiersprache VIPS dient dazu Programmabläufe in Form von Struktugrammen zu erstellen (es werden alle Kontrollstrukturen von Java unterstützt) und diese dann laufen zu lassen. Das Programm ist Plattformunabhängig, da in Java geschrieben, entspricht der DIN 66261 und komplett erscheint komplett auf deutsch. 2005 hat VIPS den ersten Platz bei der JavaStars (Sun Microsystems Award) belegt. Das Programm wurde für die Darstellung von Programmabläufen in der Informatik konzipiert oder auch für den Unterricht um beispielsweise Intervallschachtelung oder Wurzelberechnung graphisch darzustellen. Da jedoch neben den bekannten Kontrollstrukturen wie Schleifen oder Verzweigungen auch "professionelle" Features zur Verfügung stehen ist es auch möglich ganze Programme zu schreiben. Die wichtigsten hierbei wären wohl:

  • lokale und globale Variablen und Konstanten
  • Möglichkeit eigene Objekte zu erstellen
  • Rekursion
  • 5 Datentypen (Wahrheitswert, Zeichen, Zeichenkette, Ganzzahl, Gleitkommazahl)
  • Listen (Arrays)
  • Debugging
  • Export des Struktugramms als Grafik
  • eine große Bibliothek für mathematische Funktionen, Stringverarbeitung, Listen-Handling, einfach Grafikobjekte (Turtle-Grafik) und Ein- und Ausgabe

Um ein Programm mit VIPS zu erstellen, wählt man in der Navigationsleiste "Neues Projekt". Man kann innerhalb eines Projekts mehrere Struktugramme verwalten, die als Art Objekte dienen und von anderen Struktugrammen aufgerufen werden können. Auch kann jedes Struktugramm Paramter und Rückgabe Werte enthalten. Das Hauptprogramm ist immer als "main" betitelt. Um sein Programm nun zu strukturieren hat man neun verschiedene Möglichkeiten, die auch alle in Java als Schleifen, Verzweigungen oder ähnlichem enthalten sind:
Screen shot 2009-11-09 at 4.52.51 PM

Das Einfügen einer neuen Verzweigung läuft nach einem einfachen Klick-Prinzip ab: Zuerst wird das zu erstellende Element ausgewählt und danach an die Stelle geklickt, an der es eingefügt werden soll.

Screen shot 2009-11-09 at 4.56.19 PM

Screen shot 2009-11-09 at 4.56.30 PM

Das Ganze ist relativ logisch aufgebaut, könnte jedoch aufgrund der mangelnden farblichen Gestaltung schnell unübersichtlich werden. Um nun zum Beispiel vom Benutzer Eingaben entgegen zu nehmen, fügt man einen Aufruf ein, und wählt nach dem Doppelklick auf den leeren Aufruf (der mit unbekannt betitelt ist) die Funktion "Input" aus, die wiederrum zwei Paramter erhält: MSG und INITTEXT (MSG = Die Meldung an den Benutzer; INITTEXT = Default-Text der im Eingabefeld angezeigt werden soll). Als Rückgabe Wert wird eine Variable vom Typ Zeichenkette benötigt:

Screen shot 2009-11-09 at 5.57.32 PM

Im Struktugramm erscheint der Aufruf der Input Funktion folgendermaßen:

Screen shot 2009-11-09 at 5.57.00 PM

Um jetzt auch andere Objekte aus der Bibliothek nutzen zu können, wird wieder das Objekt "Aufruf" verwendet. Dieses führt Funktionen aus der Bibliothek aus, übergibt ihnen Parameter oder liefert deren Wert zurück. Die Struktur dabei ist relativ simple: Die Funktion "SL_Set" zum Beispiel setzt einen bestimmten Wert an einen gegebenen Index in einer Liste. Jedoch muss man keine Klammern oder ähnliches schreiben, dies passiert in einem Eingabefenster:

Screen shot 2009-11-09 at 5.18.57 PM

  • Operation: Hier erhält man eine Liste mit verfügbaren Funktionen
  • Rückgabevariable: Falls die Funktion einen Wert zurückliefert, wird die Variable in der dieser Wert gespeichert werden soll hier eingetragen (praktisch das, was links vorm = Zeichen steht)
  • Argumente: Eine Liste von Argumenten, die die Funktion erhält

Wie oben schon zu sehen ist, bekommt eine unbekannte oder falsch aufgerufene Funktion sofort nach dem Erstellen oder Ändern ein kleines rotes Kreuz verpasst. Beim darüber fahren mit dem Mauszeiger wird unten in der Statusleiste ein recht verständlicher Error ausgegeben (natürlich in deutsch) der auch anfänglich ungemeint bei der Fehlersuche oder beim Verständnis des ganzen Programms hilft.

Beim Testen der Anwendung bin ich darauf gekommen, dass man mit komplexeren Kontrollstrukturen jedoch schnell an seine Grenzen stößt. So ist es zum Beispiel nicht möglich mit der gewohnten [ ]-Syntax auf ein Element einer Liste zuzgreifen. Hier muss der Wert zuerst per SL_Get in einer Temp-Variable zwischengespeichert werden, um anschließend verwendet werden zu können. Ebenfalls sind keine Mehrfachabfragen möglich, wenn man zum Beispiel in einer If-Anweisungen zwei Bedingungen prüfen will (oder auch in einer while-Schleife). Auch ist die Verwendung der einzelnen Funktionen umständlicher als in anderen (nicht-visuellen) Programmiersprachen.

Im Paket mit enthalten sind einige Demoprogramme, die z.B. verschiedene Sortieralgorithmen oder ein Überprüfungen für Primzahlen implementieren:

BubbleSort:

Screen shot 2009-11-09 at 5.41.53 PM

Primzahl Überprüfung:

Screen shot 2009-11-09 at 5.42.23 PM

Nachdem ich mir die Struktur ein wenig angeschaut habe, habe ich den InsertionSort implementiert:

Screen shot 2009-11-09 at 5.44.39 PM

Dieses Objekt wird vom Hauptprogramm aufgerufen in dem eine Liste von Zahlen generiert wird und dem InsertionSort Objekt übergeben wird. Mehr zur Verfahrensweise von InsertionSort hier: http://de.wikipedia.org/wiki/Insertionsort

Kommentare (4) Trackbacks (588)
  1. Die Überschrift ist nicht richtig. Richtig ist, dass die Abkürzung VIPS auch für “Vision-based Page Segmentation” stehen kann. Darin geht es aber um das Aufteilen eines Webdokuments in semantische Blöcke (http://research.microsoft.com/pubs/70027/tr-2003-79.pdf).

    Was hier beschrieben wird ist ein anderes VIPS, nämlich “Visiual Programming with Structograms” (http://partheil.com/vips/).

  2. dankeschön, ist ausgebessert ;)

  3. Get up to 100000 forum backlinks with our backlinks service & massive targeted traffic Get incredible web traffic using amazing backlink service today. We can post your custom post up to 100’000 forums worldwide, get insane amount of backlinks and amazing targeted web traffic in very short time. Most affordable and most powerful service for web traffic and backlinks in the world!!!! Your post will be published up to 100000 forums worldwide your website or blog will get instant traffic and massive increase in seo rankings just after few days or weeks so your site will get targeted long term traffic from search engines. Order now: backlink service

  4. Normally I don’t read post on blogs, but I would like to say that this write-up very forced me to check out and do so! Your writing taste has been surprised me. Thank you, very great article.


Leave a comment

(required)