|
Vergleich Delphi / WinLogo / Visual BasicProblemstellung : Ampel für einen Fußgängerüberweg mit Bedarfssteuerung (AutoAmpel Grün(1), Gelb(2),Rot(3), FußgängerGrün(4)). Verwendet wurde das parallele fischertechnik Interface 30 520. Schaltung als Motor (beide Pole einer Lampe an dem Motorausgang). In der Tabelle Lösungsausschnitte der Programmiersprachen Delphi 4 (Versionen 2 - 4 sind möglich), WinLogo 2.0 und Visual Basic 6.0 (Versionen 4 - 6 sind möglich). Treiber Fischer.DLL von WinLogo und umFish.DLL. Die vollständigen Programme sind in Schule.ZIP zu finden. Für den Betrieb des seriellen fischertechnik-Interfaces (30 402) gibt es hier einen Treiber comFish.ZIP
Die Procedure Ampel bzw. cmdAction startet das Ampelprogramm. Es wird auf "Bedarf" gewartet (Betätigung Schalter 1). Hier sind die größten sprachbedingten Unterschiede zu finden. Bei Delphi und VB wurde mit ftEin / ftAus das Starten und Beenden des Interface in die Routine integriert, Bei WinLogo wurde das nicht gemacht, da die Interfacebefehle in der Entwicklungsumgebung nur bei geladenem Treiber nutzbar sind. Das Warten auf Tastendruck wurde bei Delphi und VB über eine Schleife (repeat / until bzw. Do / loop Until) realisiert, Schleifenende durch einen zusätzlichen Schalter (2). Bei WinLogo wurde die dort übliche Rekursion eingesetzt. Auf ein Endbedingung wurde verzichtet, da nur in der Entwicklungsumgebung gearbeitet werden kann. FussPhase steuert den Ablauf einer Fußgängerphase (mit Verzögerung bei der Anforderung der Phase, die Pausewerte sind 1/10 Sek.) Hier sind die Unterschiede gering, da in allen Fällen fast vollständig mit den gleichen Prozeduren gearbeitet wurde (Die Ausgabe der Nachrichten hätte natürlich auch noch in ein Prozedur verlagert werden können (und sollen?)). Am Rande : Delphi läßt keine Umlaute in Prozedurnamen zu, WinLogo (wie VB) schon, aber nicht in Zeile "Wenn Schalter? 1 Dann FussPhase", deswegen hier das "ss". Die Prozeduren zum Schalten der Lampen basieren auf den - hier auch einheitlich angebotenen - WinLogo-Befehlen zum Zugriff auf Interfaces (fischertechnik und einige andere) :
Sie wurden bei Delphi und VB auf Basis der DLL umFish.DLL nachgebildet (eine modifizierte DLL, die diese Befehle unterstützt wäre natürlich genauso möglich). Bei Delphi können die erforderlichen Deklarationen und Prozeduren auch in einer kompilierten Unit (DCU) verborgen werden, bei VB ist eine ActiveX.DLL möglich. Die Prozeduren zur Schaltung der Lampen sind trivial : Private Sub GelbAus() In den Programmiersprachen Delphi und VB könnte durchaus auch auf diese Prozeduren zugunsten von Konstantendefinitionen verzichtet werden : Public Const Gelb = 2, Grün = 1, Rot = 3, FußGrün = 4 und eine FussPhase : Motor Grün, ftiEin Das dürfte genauso lesbar sein und spart den Prozedur-Overhead. Hier ist abzuwägen zwischen formaler Handhabung - die dann auch einfache Umstellungen erlaubt - und einfacherer Programmierung. Eine direkte Nutzung der umFish.DLL Funktionen erscheint in diesem Kontext nicht sinnvoll, da die Adaption auf den WinLogo Befehlssatz eine Systemunabhängigkeit mit sich bringt.
|