<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>blog.sketchit.de &#187; VISP</title>
	<atom:link href="http://blog.sketchit.de/tag/visp/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.sketchit.de</link>
	<description>Glaubt mir ich hab den Weihnachtsmann mit eigenen Augen gesehen...</description>
	<lastBuildDate>Mon, 31 Oct 2011 10:21:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Visiual Programming with Structograms (VIPS)</title>
		<link>http://blog.sketchit.de/2009/11/visiual-programming-with-structograms/</link>
		<comments>http://blog.sketchit.de/2009/11/visiual-programming-with-structograms/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 17:01:02 +0000</pubDate>
		<dc:creator>Hubert Hölzl</dc:creator>
				<category><![CDATA[Multimedia Technology]]></category>
		<category><![CDATA[Struktugramme]]></category>
		<category><![CDATA[VISP]]></category>
		<category><![CDATA[visual programming]]></category>

		<guid isPermaLink="false">http://blog.sketchit.de/?p=147</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>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 <a href="http://www.javastars.de/" target="_blank">JavaStars (Sun Microsystems Award)</a> 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:</p>
<ul>
<li>lokale und globale Variablen und Konstanten</li>
<li>Möglichkeit eigene Objekte zu erstellen</li>
<li>Rekursion</li>
<li>5 Datentypen (Wahrheitswert, Zeichen, Zeichenkette, Ganzzahl, Gleitkommazahl)</li>
<li>Listen (Arrays)</li>
<li>Debugging</li>
<li>Export des Struktugramms als Grafik</li>
<li>eine große Bibliothek für mathematische Funktionen, Stringverarbeitung, Listen-Handling, einfach Grafikobjekte (Turtle-Grafik) und Ein- und Ausgabe</li>
</ul>
<p style="text-align: left;">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:    <a href="http://blog.sketchit.de/wp-content/uploads/2009/11/Screen-shot-2009-11-09-at-4.52.51-PM.png"><br />
<img class="size-full wp-image-148 aligncenter" title="Screen shot 2009-11-09 at 4.52.51 PM" src="http://blog.sketchit.de/wp-content/uploads/2009/11/Screen-shot-2009-11-09-at-4.52.51-PM.png" alt="Screen shot 2009-11-09 at 4.52.51 PM" width="691" height="53" /></a></p>
<p><span id="more-147"></span></p>
<p>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.</p>
<p style="text-align: center;"><a href="http://blog.sketchit.de/wp-content/uploads/2009/11/Screen-shot-2009-11-09-at-4.56.19-PM.png"><img class="size-full wp-image-149 aligncenter" title="Screen shot 2009-11-09 at 4.56.19 PM" src="http://blog.sketchit.de/wp-content/uploads/2009/11/Screen-shot-2009-11-09-at-4.56.19-PM.png" alt="Screen shot 2009-11-09 at 4.56.19 PM" width="464" height="615" /></a></p>
<p style="text-align: center;"><a href="http://blog.sketchit.de/wp-content/uploads/2009/11/Screen-shot-2009-11-09-at-4.56.30-PM.png"><img class="size-full wp-image-150 aligncenter" title="Screen shot 2009-11-09 at 4.56.30 PM" src="http://blog.sketchit.de/wp-content/uploads/2009/11/Screen-shot-2009-11-09-at-4.56.30-PM.png" alt="Screen shot 2009-11-09 at 4.56.30 PM" width="487" height="632" /></a></p>
<p>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:</p>
<p style="text-align: center;"><a href="http://blog.sketchit.de/wp-content/uploads/2009/11/Screen-shot-2009-11-09-at-5.57.32-PM.png"><img class="size-full wp-image-165 aligncenter" title="Screen shot 2009-11-09 at 5.57.32 PM" src="http://blog.sketchit.de/wp-content/uploads/2009/11/Screen-shot-2009-11-09-at-5.57.32-PM.png" alt="Screen shot 2009-11-09 at 5.57.32 PM" width="336" height="328" /></a></p>
<p>Im Struktugramm erscheint der Aufruf der Input Funktion folgendermaßen:</p>
<p style="text-align: center;"><a href="http://blog.sketchit.de/wp-content/uploads/2009/11/Screen-shot-2009-11-09-at-5.57.00-PM.png"><img class="size-full wp-image-164 aligncenter" title="Screen shot 2009-11-09 at 5.57.00 PM" src="http://blog.sketchit.de/wp-content/uploads/2009/11/Screen-shot-2009-11-09-at-5.57.00-PM.png" alt="Screen shot 2009-11-09 at 5.57.00 PM" width="571" height="26" /></a></p>
<p>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:</p>
<p style="text-align: center;"><a href="http://blog.sketchit.de/wp-content/uploads/2009/11/Screen-shot-2009-11-09-at-5.18.57-PM.png"><img class="size-full wp-image-157 aligncenter" title="Screen shot 2009-11-09 at 5.18.57 PM" src="http://blog.sketchit.de/wp-content/uploads/2009/11/Screen-shot-2009-11-09-at-5.18.57-PM.png" alt="Screen shot 2009-11-09 at 5.18.57 PM" width="336" height="328" /></a></p>
<ul>
<li>Operation: Hier erhält man eine Liste mit verfügbaren Funktionen</li>
<li>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)</li>
<li>Argumente: Eine Liste von Argumenten, die die Funktion erhält</li>
</ul>
<p>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.</p>
<p>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.</p>
<p>Im Paket mit enthalten sind einige Demoprogramme, die z.B. verschiedene Sortieralgorithmen oder ein Überprüfungen für Primzahlen implementieren:</p>
<p>BubbleSort:</p>
<p style="text-align: center;"><a href="http://blog.sketchit.de/wp-content/uploads/2009/11/Screen-shot-2009-11-09-at-5.41.53-PM.png"><img class="size-full wp-image-160 aligncenter" title="Screen shot 2009-11-09 at 5.41.53 PM" src="http://blog.sketchit.de/wp-content/uploads/2009/11/Screen-shot-2009-11-09-at-5.41.53-PM.png" alt="Screen shot 2009-11-09 at 5.41.53 PM" width="579" height="384" /></a></p>
<p>Primzahl Überprüfung:</p>
<p style="text-align: center;"><a href="http://blog.sketchit.de/wp-content/uploads/2009/11/Screen-shot-2009-11-09-at-5.42.23-PM.png"><img class="size-full wp-image-161 aligncenter" title="Screen shot 2009-11-09 at 5.42.23 PM" src="http://blog.sketchit.de/wp-content/uploads/2009/11/Screen-shot-2009-11-09-at-5.42.23-PM.png" alt="Screen shot 2009-11-09 at 5.42.23 PM" width="317" height="302" /></a></p>
<p>Nachdem ich mir die Struktur ein wenig angeschaut habe, habe ich den InsertionSort implementiert:</p>
<p style="text-align: center;"><a href="http://blog.sketchit.de/wp-content/uploads/2009/11/Screen-shot-2009-11-09-at-5.44.39-PM.png"><img class="size-full wp-image-162 aligncenter" title="Screen shot 2009-11-09 at 5.44.39 PM" src="http://blog.sketchit.de/wp-content/uploads/2009/11/Screen-shot-2009-11-09-at-5.44.39-PM.png" alt="Screen shot 2009-11-09 at 5.44.39 PM" width="452" height="551" /></a></p>
<p>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</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sketchit.de/2009/11/visiual-programming-with-structograms/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
	</channel>
</rss>

