Gambas: Druckversion: Anhang
F11
[Bearbeiten]Das Direktfenster wird mit F11 aufgerufen.
Direkteingabe in das Direktfenster ohne Programm
[Bearbeiten]Willkommen zur Gambas Konsole. Um einen Ausdruck auszuwerten, geben Sie '?' gefolgt vom Ausdruck ein und drücken Return.
Beispiel:
? 5 + 3
Ausgabe: 8
Ausgabe im Direktfenster mit dem PRINT Befehl
[Bearbeiten]Die Ausgabe des Printbefehls erfolgt im Unterschied zu Visual Basic im Direktfenster.
Beispiel. Sie brauchen nur eine leer Form, um dieses Programm in Gang zu bringen. Start mit F5.
PUBLIC SUB Form_Open() PRINT "Hallo Welt!" END
Programmierung ohne Grafik nur im Direktfenster
[Bearbeiten]Sie können Gambas auch für Programme ohne die grafische Oberfläche nutzen. Diese Programme laufen im Direktfenster (= Terminalfenster) auf der Konsole ab. Mit Visual Basic gibt es diese Möglichkeit nicht mehr.
Starten Sie Gambas wie gewohnt.
Wählen Sie Neues Projekt.
Folgen Sie dem Wizard und drücken Sie Nächster.
Bei Typ des Projektes auswählen wählen Sie Terminal-Projekt erzeugen.
Folgen Sie dem Wizard und drücken Sie Nächster.
Geben Sie ihrem Projekt einen Namen z.B. 1mal1.
Folgen Sie dem Wizard und drücken Sie Nächster.
Wählen Sie das Verzeichnis, in dem ihr Projekt als Unterverzeichnis abgespeichert werden soll. (Meist belässt man die Voreinstellung /gambas-0.99)
Folgen Sie dem Wizard und drücken Sie Nächster.
Die Daten Ihres Projektes werden zusammengefasst dargestellt.
Drücken Sie OK.
Jetzt erscheint das Projektfenster. Drücken Sie mit der rechten Maustaste auf das Verzeichnis Klassen.
Drücken Sie dann mit der linken Maustaste auf Neu und Klasse.
Lassen Sie den Namen bei Class1 als Startklasse und Drücken Sie OK.
Geben Sie als Beispiel folgendes Programm ein:
STATIC PUBLIC SUB Main() DIM x AS Integer DIM y AS Integer FOR x = 1 TO 10 FOR y = 1 TO 10 PRINT x;" mal ";y; " = "; x*y NEXT NEXT END
Drücken Sie F5 um es zu starten.
Schauen Sie sich im Direktfenster das Ergebnis an. Eventuell mit Alt + Tab zwischen den Fenster hin und herschalten.
Beenden Sie das Programm mit einem Klick auf das rote Quardrat im Projektfenster. Oder mit ALT + F4.
Beenden Sie Gambas mit Datei Beenden oder mit Strg + Q oder programmieren Sie noch etwas weiter.
Frage:
[Bearbeiten]Wie kann man ein nicht grafisches Programm als ausführbare Datei auf dem Desktop zugänglich machen?
Wieso funktionieren Arrays im Terminalmodus nicht?
Wie kann man das Direktausgabefenster programmtechnisch verkleinern?
Datentypen
[Bearbeiten]gb.Null | Nullwert |
gb.Boolean | Wahrheitswert |
gb.Byte | Byte Ganzzahl |
gb.Short | Kurze Ganzzahl |
gb.Integer | Ganzzahl |
gb.Float | Fließkommazahl |
gb.Date | Datum und Uhrzeit |
gb.String | String (Text) |
gb.Variant | Variant |
gb.Object | Objekt Referenz |
Dateitypen
[Bearbeiten]gb.File | Reguläre Datei |
gb.Directory | Verzeichnis |
gb.Device | Special file for a device |
gb.Pipe | Named pipe |
gb.Socket | Special file for a socket |
gb.Link | Symbolischer Link |
String (Text) Konstanten
[Bearbeiten]gb.NewLine | Zeilenumbruch. Entspricht Chr$(10) |
gb.Tab | Tabulator. Entspricht Chr$(9) |
Sortierungsarten
[Bearbeiten]gb.Binary | Binaersortierung |
gb.Case | Groß- und Kleinschreibung wird nicht berücksichtigt |
gb.Lang | Sprachbasierte Sortierung |
Wochentage
[Bearbeiten]gb.Monday | Montag |
gb.Tuesday | Dienstag |
gb.Wednesday | Mittwoch |
gb.Thursday | Donnerstag |
gb.Friday | Freitag |
gb.Saturday | Samstag |
gb.Sunday | Sonntag |
Vordefinierte Zahlenformate
[Bearbeiten]gb.GeneralNumber | Schreibt eine Zahl mit 12 dezimalen Ziffern. Benutzen sie die wissenschaftliche Notation , wenn der absolute Betrag kleiner als 1 / 10000 oder größer als 10 000 000. |
gb.Fixed | entspricht "0.00" |
gb.Percent | entspricht "###%" |
gb.Scientific | Schreibt eine Zahl mit seinem Exponenten und 18 dezimal Ziffern. |
Vordefinierte Datums und Zeitformate
[Bearbeiten]gb.GeneralDate | Write a date only if the date and time value has a date part, and write a time only if it has a date part. |
gb.LongDate | Long date format. |
gb.MediumDate | Medium date format. |
gb.ShortDate | Short date format. |
gb.LongTime | Long time format. |
gb.MediumTime | Medium time format. |
gb.ShortTime | Short time format. |
Verschiedene Formate
[Bearbeiten]gb.Standard | Use gb.GeneralNumber for formatting numbers and gb.GeneralDate for formatting dates and times. |
Weitere Konstanten
[Bearbeiten]Farben
[Bearbeiten]Black, Blue, Cyan, DarkBlue, DarkCyan, DarkGray, DarkGreen, DarkMagenta, DarkRed DarkYellow, Default, Gray, Green, LightGray, Magenta, Orange, Pink, Red, Transparent, Violet, White, Yellow
Tasten
[Bearbeiten]BackSpace, BackTab, CapsLock, Delete, Down, End, Enter, Esc, Escape, F1, F10, F11, F12, F13, F14, F15, F16, F17, F18, F19, F2, F20, F21, F22, F23, F24, F3, F4, F5, F6, F7, F8, F9, Help, Home, Insert, Left, Menu, NumLock, PageDown, PageUp, Pause, Print, Return, Right, ScrollLock, Space, SysReq, Tab, Up
Rahmen
[Bearbeiten]Etched, None, Plain, Raised, Sunken
Konstanten
[Bearbeiten]Konstanten | Beispiele |
---|---|
Der true Wert. | TRUE
|
Der false Wert. | FALSE
|
Ganze Zahlen. | 0 , 123 , -32769
|
Hexadezimale Kurzzahlen. | &H1F5 , &HFFFF , &FFFF
|
Hexadezimal gekennzeichnete Zahlen. | &H10BF332E , &10BF332E
|
Hexadezimal unsigned Zahlen. | &H8000& , &HFFFF&
|
Binärzahlen. | &X1010010101 , %101001011
|
Fließkommazahlen. | 1.0 , -5.345219E+45
|
Textkonstanten. | "Hallo Welt !"
|
String constants to be translated. | ("This software is cool")
|
Null Konstante / Leerer Text. | NULL
|
Escape Sequenzen
[Bearbeiten]Textkonstanten können folgende Escape Sequenzen enthalten:
Escape Sequenz | ASCII Entsprechung | Entsprechung |
---|---|---|
\n |
CHR$(13) |
Zeilenumbruch |
\r |
CHR$(10) |
Wagenrücklauf |
\t |
CHR$(9) |
Tabulator |
\" |
CHR$(34) |
Doppelte Anführungszeichen |
\\ |
CHR$(92) |
Backslash |
\xx |
CHR$(&Hxx) |
Hexadezimalcode |
Sie können Textkonstanten in einzelnen Teilen oder zusammen schreiben. Z.B.
"Gambas" " ist " "großartig"
ergibt dasselbe wie "Gambas ist großartig"
GB Komponenten
[Bearbeiten]Komponenten sind Gambas plug-ins die neue Klassen zum Interpreter hinzufügen. Jedes Projekt hat eine Liste der Komponenten, die beim Starten geladen werden müssen. Man findet diese Liste unter dem Menüpunkt Projekt Eigenschaften.
Ein Gambas Projekt ohne jede Komponente ist eine einfache Textanwendung. Wenn es eine echte grafische Anwendung werden soll, muß zumindest die gb.qt Komponente geladen sein. Um eine Datenbank zu nutzen braucht man die gb.db Komponente etc.
gb | Gambas interne Basis Klasse |
gb.compress | Compression library |
gb.corba | Corba Client |
gb.crypt | Verschlüsselungskomponente |
gb.db | Datenbank Zugang |
gb.db.form | Daten und Datenbank Darstellung mit DataControl und DataSource |
gb.debug | Gambas Debugger Hilfe |
gb.eval | Gambas Auswertung mathematischer Ausdrücke |
gb.form | weitere Steuerelemente für grafische Anwendungen |
gb.gtk | Graphical GTK+ toolkit component |
gb.image | Bildverarbeitung |
gb.info | Information über die installierten Komponenten |
gb.ldap | Bibliothek von OpenLdap Code |
gb.net | Netzwerk Komponente |
gb.net.curl | Network high-level protocols management |
gb.opengl | OpenGL Bibliothek |
gb.pcre | Perl-compatible Regular Expression Matching |
gb.pdf | PDF komponente basierend auf der Poppler library |
gb.qt | Graphisches QT toolkit |
gb.qt.editor | Gambas editor with syntax highlighting |
gb.qt.ext | Graphische QT toolkit Erweiterung |
gb.qt.kde | KDE integration and scripting |
gb.qt.kde.html | KDE web browser |
gb.qt.opengl | Graphical QT toolkit opengl component |
gb.sdl | Library based on SDL |
gb.sdl.image | 2D Library based on SDL |
gb.sdl.opengl | OpenGL library based on SDL |
gb.sdl.sound | Sound library based on SDL |
gb.settings | Management von Voreinstellungen und Konfigurationsdateien |
gb.v4l | Video capture component |
gb.vb | Visual Basic compatibility |
gb.xml.libxml | XML tools based on libxml |
gb.xml.libxml.rpc | XML-RPC client based on libxml and libcurl |
gb.xml.libxml.xslt | XSLT tools based on libxslt |
Zusätzliche Komponenten laden
[Bearbeiten]Zusätzliche Gambas Komponenten kann man über den Menüpunkt Projekt – Eigenschaften des Gambashauptbildschirmes erreichen.
In der Komponentenanzeige wählt man die gewünschten Komponenten aus.
In der Werkzeugbox erscheint dann z.B. eine Schrift mit der Bezeichnung QT. Diese klickt man an und hat dann eine Reihe weiterer Steuerelemente zur Verfügung.
Liste der derzeitigen Gambaskomponenten
[Bearbeiten]Komponente | Beschreibung | Kontrollen |
---|---|---|
gb | Gambas internal native classes | |
gb.compress | Compression library | |
gb.db | Database access component | |
gb.debug | Gambas application debugger helper | |
gb.eval | Gambas expression evaluator | |
gb.net | Networking component | DnsClient, ServerSocket, SerialPort, Socket, UdpSocket |
gb.qt | Graphical QT toolkit component | Label, TextLabel, PictureBox, ProgressBar, Button, CheckBox, RadioButton, ToggleButton, ToolButton, TextBox, ComboBox, TextArea, ListBox, ListView, TreeView, IconView, GridView, ColumnView, HBox, VBox, HPanel, VPanel, Frame, Panel, TabStrip, ScrollView, DrawingArea, Timer |
gb.qt.editor | Gambas editor with syntax highlighting | GambasEditor |
gb.qt.ext | Graphical QT toolkit extension component | LCDNumber, Dial, SpinBox, ScrollBar, Slider, MovieBox, TableView, HSplit, VSplit, Workspace, TextView |
gb.qt.kde | KDE integration and scripting | URLLabel, ColorBox, DatePicker |
Experimentelle Komponenten
[Bearbeiten]WARNUNG! Folgende Komponenten befinden sich noch im BETA Stadium und können sich daher jederzeit ändern.
gb.qt.kde.html | KDE Webbrowser |
gb.vb | Visual Basic Kompatibilität |
gb.xml.libxml | XML Werkzeuge, basierend auf libxml |
gb.xml.libxml.rpc | XML-RPC Klient, basierend auf libxml und libcurl |
gb.xml.libxml.xslt | XSLT Werkzeuge, basierend auf libxslt |
Programmdateien
[Bearbeiten]Das Gambas-Programm befindet sich je nach Verwendeter Distribution bzw. Betriebssystem in verschiedenen Verzeichnissen. Unter Linux sollte ein
locate gambas
Auskunft darüber geben, wo Gambas selbst, die Beispiel-Programm usw. sich befinden.
Eigene Projekte
[Bearbeiten]Die eigenen Projekte stehen unter meist unter /home/BENUTZER/gambasxx/
Konfigurationsdateien
[Bearbeiten]Im versteckten Verzeichnis /home/BENUTZER/.gambas stehen Konfigurationsdateien
- file:/home/BENUTZER/.gambas/gambas.conf
- file:/home/BENUTZER/.gambas/gambas-database-manager.conf
Projektdateien
[Bearbeiten]Jedes Projekt hat sein eigenes Unterverzeichnis. Beispielsweise:
/home/rho/gambas-1.0/addy | Projektverzeichnis |
/home/rho/gambas-1.0/addy/addy | Ausführbare Datei |
/home/rho/gambas-1.0/addy/addy.png | Ein Icon für das Programm |
/home/rho/gambas-1.0/addy/Form1.class | GambasCode im Klartext |
/home/rho/gambas-1.0/addy/Form1.class~ | Sicherungsdatei |
/home/rho/gambas-1.0/addy/Form1.form | Formdatei im Klartext |
/home/rho/gambas-1.0/addy/.project | Projektdaten im Klartext |
/home/rho/gambas-1.0/addy/.gambas | Nochmal ein Verstecktes Unterverzeichnis. Wozu dient es? |
Beispiel einer Projektdatei
[Bearbeiten]# Gambas Project File 1.0 Project=addy Startup=Form1 TabSize=2 Version=0.0.2 Library=gb.qt SnapToGrid=1 ShowGrid=1 Snap=8 Localize=0 KeepDebugInfo=0 ControlPublic=0 ExecPath=/home/name/gambas-1.0/addy/addy Prefix=0
Beispiel einer einfachen Formdatei
[Bearbeiten]# Gambas Form File 1.0 { Form1 Form Move(227,172,216,400) Text = ("") Border = Window.Fixed { TextArea1 TextArea Move(16,8,184,280) Text = ("") } { Button1 Button Move(16,296,184,32) Font = Font["14"] Text = ("Summe") } { TextBox1 TextBox Move(16,336,184,32) Text = ("") } }
Wie arbeitet Gambas ?
[Bearbeiten]Wenn Sie ein Programm in Gambas schreiben, dann erzeugen Sie
- eine oder mehrere form Dateien
- Die form Datei enthält eine Beschreibung der gewünschten Programmoberfläche
- eine oder mehrere class Dateien
- Die class datei enthält den Programmcode, den man selbst geschrieben hat.
- eine .project Datei
- Die project Datei enthält Informationen über ihr Projekt wie zb den Namen und die Versionsnummer.
Diese Dateien werden durch den Complier gbc zu binärem pcode übersetzt. Der Pcode wird im Verzeichnis .gambas abgespeichert.
Danach wertet der Interpreter gbx den pcode aus und holt sich die benötigten Qt-Komponenten dazu. Die Qt-Komponeten sind Teil von gambas. Siehe Gambas: Komponenten
Eine QT-Komponente ist ein C++/qt Programm, das die GUI Beschreibung vom pCode erhält und das die Qt-Gui erzeugt.
gba ist ein Archivierer. Er nimmt die .project Information und klebt sie mit dem p-Code zu einem ausführbaren Programm zusammen executable file. Zum Ablaufen lassen des Programmes braucht man noch gbx.
- Project -- "compilieren (F7)" startet gbc.
- Project -- "run (F5)" startet gbc und gbx.
- Project -- "make executable (Ctrl-Alt-M)" startet gbc und gba
Wer hat Gambas entwickelt ?
Siehe auch: http://gambas.sourceforge.net/fosdem2005.jpg Benoit der Mann mit dem roten T-Shirt
- Benoît Minisini
- France
- Der Kopf des Ganzen
- France
- Fabien Bodard
- France
- IDE file/project/picture selector and mascot redesign.
- France
- Nigel Gerrard
- United Kingdom
- The MySQL database driver, the QT extended component, the SQLite database driver.
- United Kingdom
- Paul Gardner-Stephen
- Australia
- Porting Gambas on Solaris
- Australia
- Daniel Campos
- Spain
- The network component, the compression component. Works on the GTK+ component too!
- Spain
- Carlos F. A. Paniago
- Brazil
- Porting Gambas on FreeBSD.
- Brazil
- Rob Kudla
- United States
- GambasWiki webmaster and Mandrake RPM packages maintainer. The Percl Compatible Regular Expression component.
- United States
- Ronald Onstenk
- Netherlands
- The find list in the Development Environnement.
- Netherlands
- Brandon Bergren
- Porting Gambas on CygWin.
- Laurent Carlier
- France
- The SDL component.
- France
- José L. Redrejo Rodríguez
- Spain
- Let Gambas compile on all Debian architectures.
- Spain
Gambas ist näher verwandt mit VB2005 (Vb.net) als zu VB3,4,5,6, da es echt objektorientiert ist. Die VB Varianten 3-6 werden von Microsoft nicht mehr unterstützt und werden über kurz oder lang auslaufen. So gibt es dann mit Gambas unter Linux eine echte objektorientierte Open Source Basic Programmierumgebung, wie es unter Windows die objektorientierte Programmierumgebung VB.Net gibt.
Unterschiede zwischen Visual Basic und Gambas
[Bearbeiten]Siehe dazu folgende Seite: http://www.gambasdoc.org/help/doc/diffvb?de
Die Programmierung von Funktionen in Gambas unterscheidet sich etwas von der Programmierung in VB. In Gambas kann man den Funktionsnamen in der Funktion nicht aufrufen, in VB ist das möglich.
Der Befehl Select Case of in Gambas unterscheidet sich etwas von der Nutzung in VB.
Die Timerfunktion gibt die Zeit in Sekunden aus, die seit Programmbeginn verstrichen sind. In Visual Basic ist das anders. Hier wird mit demselben Programm die Zeit ausgegeben, die seit 0 Uhr verstrichen ist.
In VB wird der Programmcode des Formobjektes und der Formdefinition in ein und derselben Datei abgelegt. Gambas trennt beides: Es gibt eine .form und eine .class Datei.
Übersicht Dateiendungen im Vergleich:
[Bearbeiten]Art der Datei: VB Gambas Projekt Definition .vbp .project Module .bas .module Dateiendung Klasse .cls .class Form Definitions Datei .frm .form Binärdateien .frx beliebig
VB Form Import
[Bearbeiten]Es gibt ein ImportVBProject von Rob Kudla, welches die VB Forms in Gambas Klassen umwandelt. Die automatische Umwandlung von VB Code in Gambas Code ist schwieriger. Dazu ist einige Handarbeit notwendig.
Globale Variablen in Gambas
[Bearbeiten]In VB war es möglich zb aus der Form2 heraus eine Textbox in Form1 direkt anzusprechen. Der Befehl dazu lautet: Form1!Textbox1.Text = "zb". Dies funktioniert in Gambas nicht. In Gambas gibt es keine projektübergreifenden globalen Variablen. Man kann sich behelfen, wenn man eine Klasse erzeugt, die man Global nennt. Die globalen Variablen deklariert man als statische public Variablen in dieser Klasse. Dann kann man auf sie mit Global.variablename im ganzen Projekt zugreifen.
Minsini: It's still poor programming practice but at least they'll be identified as global variables whenever you use them ;)
Siehe Gambas:_Form#Globale_Variablen_in_Gambas
IsNumber
[Bearbeiten]Frage zu Isnumber
TextArea1.Text = "349" PRINT IsNumber(TextArea1.Text)
ergibt FALSE. Warum ?
IsNumber() überprüft nur den Typ eines Wertes beginnend von boolean bis float. Es verhält sich anders als IsNumber() in VB.
Wenn man wissen will ob ein Textstring eine Zahl ist, dann muß man Val()/CInt()/CFloat() nutzen und überprüfen ob man eine Fehlermeldung bekommt.
Unload Befehl unter Gambas nicht verfügbar
[Bearbeiten]Unter VB gibt es die Methode Unload. Diese ist unter Gambas nicht verfügbar. Als Alternative kann man die Methode Hide oder Delete verwenden. Bei einer Form gibt es noch die Close Methode.
Beispiel: Sie brauchen eine Form und einen Commandbutton für dieses Beispiel.
PUBLIC SUB Button1_Click() Button1.delete END
Oder
PUBLIC SUB Button1_Click() ME.delete 'Form1.close END
Schwierigkeiten mit Gambas
Die Inflation der Befehle
[Bearbeiten]Wer den Übergang von Basic am C64, zu GWBasic und QBasic unter Dos erlebt hat, dem fiel es relativ leicht auf Visual Basic umzusteigen. Die Version VB 3.0 war ( und ist) sehr stabil. Sie ist kompakt und hat ein sehr gut funktionierendes Hilfesystem mit Beispielprogrammen für jeden einzelnen Befehl. Die Zahl der Basicbefehle blieb in diesen Sprachen ziemlich konstant, nur die Art der Programmierung änderte sich und wurde komfortabler und übersichtlicher.
Schon VB 6 und um so mehr VB.Net sind für Anfänger weitaus schwieriger zu erlernen. Woran liegt das und was kann man als Gambaseinsteiger für Schlussfolgerungen daraus ziehen?
Meines Erachtens liegt es an der Inflation der vielen Möglichkeiten und Befehle, die einen Anfänger überfordern.
Ein Anfänger beim Programmieren braucht schnelle Erfolgserlebnisse. Mit relativ kleinen, leicht verstehbaren Programmbeispielen sollte er schon ganz gut brauchbare Ergebnisse erreichen. Dabei muß sein Wortschatz an Programmbefehlen erst wachsen. Er muß lernen, mit den neuen Befehlen umzugehen und sie sicher zu gebrauchen. Was sind grundlegende, sehr häufig gebrauchte Befehle und auf welche Befehle kann man am Anfang verzichten? Hier muß die Programmiersprache Gambas noch verbessert werden . Es sollte eine Statistik über die Häufigkeit der Befehle geben. Hilfreich wäre auch eine Einschätzung von erfahrenen Programmierern, welche Befehle von Ihnen häufig genutzt werden und welche anfangs verzichtbar sind.
Meines Erachtens sind folgende Befehle sehr wichtig:
DIM , AS , Print , = , & , FOR TO, NEXT, ME.Close. IF THEN, TRUE, FALSE
Fangen Sie mit diesen an und versuchen Sie sie gut zu verstehen.
Funktionen und Prozeduren
[Bearbeiten]Dem Anfänger bieten Prozeduren und Funktionen erhebliche Probleme, Dabei sind Prozeduren noch einfach zu verstehen, denn es werden keine Werte übergeben. Jedes Unterprogramm ist eine Prozedur. Der Rahmen eines Unterprogrammes wird in Gambas wie auch in VB automatisch erstellt wenn man in der Formularansicht auf das grafische Objekt klickt. In diesen Rahmen kann man dann seinen Code für das Unterprogramm eingeben.
Funktionen sind etwas schwieriger zu verstehen. Ist man den alten Spagetticode von Uraltbasic mit Gotos und Rücksprüngen gewohnt, dann fällt es einem anfangs schwer eine Aufgabe an ein Unterprogramm zu übergeben und dazu dessen Namen zu nutzen. Im Unterschied zu einer Prozedur wird in einer Funktion aber noch mindestens ein Wert mitübergeben. Man muß also wissen wie die Prozedur heißt , wie man sie aufruft, wie der Wert heißt den man beim Aufruf mitübergibt und wie der Wert heißt , der aus der Funktion wieder herauskommt. Als Anfänger ist man versucht ohne Funktionsaufrufe auszukommen und das Problem ohne Funktion zu codieren. Das erscheint am Anfang verständlicher. Es ist aber in jedem längeren Programm unökonomisch. Wohl oder übel muß man sich an Funktionen gewöhnen, denn sie erleichtern das Programmierleben ungemein.
Siehe auch http://www.madeasy.de/7/prgmini.htm#funk
Die Objektorientierte Programmierung ( OOP )
[Bearbeiten]Der Nutzen der objektorientierten Programmierung bleibt dem Anfänger leider oft zu lange verborgen. OOP macht das Programmieren anfangs unnötig kompliziert, bis man endlich begreift, dass die OOP vor allem dazu dient nicht immer wieder dasselbe neu programmieren zu müssen, wenn es schon einmal erarbeitet wurde.
Die Grafische Bedienoberfläche erleichtert es einem am Anfang auf die OOP Methode zu verzichten, obwohl eigentlich die vielen grafischen Werkzeuge die idealen Beispiele für Objekte und Klassen sind.
Denken Sie daran: Jede Programmiersprache hat ein paar grundlegende ("primitive") Datentypen , wie z.B. Zahlen, Buchstaben und Logische Datentypen.
z.B.
- boolean
- byte
- short
- int
- long
- float
- double
- char
- string
Diese einfachen Datentypen können nun miteinander kombiniert werden. So entstehen zusammengesetzte Datentypen wie Arrays, Strukturen oder auch Klassen.
Auch für diese komplexen Datentypen können nunmehr Variablen deklariert werden, und im Fall von Klassen heißen die Variablen Objekte.
Merke:
- Klassen sind zusammengesetzte Datentypen.
- Objekte sind die Daten, die man in diese zusammengesetzten Datentypen hineinschreibt.
Beispiel:
- Der Befehlsbutton in der Werkzeugkiste ist eine Klasse.
- Setzt man einen Commandbutton auf eine Form dann ist dieser spezielle Befehlsknopf zusammen mit seinen Eigenschaften ein Objekt.
Public, Private, Static
[Bearbeiten]Gegenüber den alten Basicversionen erscheinen in Gambas ( wie auch in VB6 oder VB.Net) die Befehle Public, Private, Static etc.. Es sind sogenannte Zugriffsbeschränkungen bei Zugriffen auf Klassen. Der Sinn dieser Zugriffsmodifizierer bleibt einem am Anfang verborgen.
Es gibt (keine) globale Variablen wie unter VB
[Bearbeiten]Unter VB kann man sich einfach eine globale Variable zb in einem Modul global.bas definieren und dann zb Text von einer Form zur anderen kopieren, wenn man diese globale Variable nutzt. Das geht unter Gambas nicht so einfach. Benoit Minisini ist da ziemlich streng und will uns zu einem sauberen Programmierstil erziehen.
Zitat: There is no such thing as a project-wide global variable in Gambas. As a workaround, consider making a class called Global and declaring your global variables as static public variables in that class, and then referring to them as Global.variablename in your project. It's still poor programming practice but at least they'll be identified as global variables whenever you use them ;)
Benoit Minisini mag sie nicht. Aber sie sind möglich und m.E. auch ganz praktisch. Siehe Gambas:_Form#Globale_Variablen_in_Gambas
Wünschenswert wäre ein interaktives Lernprogramm
[Bearbeiten]Vielleicht ist es auch wünschenswert , für die einzelnen Befehle kleine Lektionen zu entwickeln, die zunächst den Befehl erklären und dann in einem Übungsteil, die gelernten Erkenntnisse abfragen. Diese Lektionen kann man dann zur Wiederholung und bei Bedarf immer wieder einmal durcharbeiten. Legendär und didaktisch hervorragend war das Lernprogramm, welches bei den ersten Dosversionen der Textverarbeitung Word mitgeliefert wurde. So ein schönes interaktives Lernprogramm in Gambas, am besten selbst in Gambas programmiert und Internet basiert wäre ideal. Die Lektionen sollten, dabei nicht länger als 3 - 5 Minuten zur Bearbeitung dauern.
Ein Beispiel für ein schönes interaktives Lernprogramm der Sprache Java steht hier: http://www.gailer-net.de/tutorials/java/java-toc.html
Da Gambas auch mit Java verwandt ist, kann man es durchaus auch nutzen um Gambas zu verstehen.
Gambas light
[Bearbeiten]Vielleicht sollte es für Anfänger eine Lightversion von Gambas geben. Mit einigen wenigen Basisbefehlen und Basiswerkzeugen.
Nachteile von Gambas
[Bearbeiten]Gambas ist noch nicht so weit verbreitet.
Cplusplus und Java sind die meist genutzten erwachsenen Programmiersprachen. PHP, Perl und andere Scriptsprachen werden auch viel genutzt. Gambas bietet sich für die große Zahl der Visual Basic Programmierer an, die Open Source programmieren wollen und Linux und KDE nutzen.
Einen weiteren Nachteil sollte man nicht verschweigen. Bis jetzt gibt es keine portierbaren EXE Files. Gambasprogramme laufen zwar als compilierte Programme sehr gut. Aber auf dem Rechner muß eine Gambasumgebung aufgespielt sein. Eine einfache VBRUN.DLL, wie unter Windows, existiert noch nicht. Das wird sich aber sicher bald ändern.