Zum Inhalt springen

Gambas: Druckversion: Anhang

Aus Wikibooks


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
  • Fabien Bodard
    • France
      • IDE file/project/picture selector and mascot redesign.
  • Nigel Gerrard
    • United Kingdom
      • The MySQL database driver, the QT extended component, the SQLite database driver.
  • Paul Gardner-Stephen
    • Australia
      • Porting Gambas on Solaris
  • Daniel Campos
    • Spain
      • The network component, the compression component. Works on the GTK+ component too!
  • Carlos F. A. Paniago
    • Brazil
      • Porting Gambas on FreeBSD.
  • Rob Kudla
    • United States
      • GambasWiki webmaster and Mandrake RPM packages maintainer. The Percl Compatible Regular Expression component.
  • Ronald Onstenk
    • Netherlands
      • The find list in the Development Environnement.
  • Brandon Bergren
    • Porting Gambas on CygWin.
  • Laurent Carlier
    • France
      • The SDL component.
  • José L. Redrejo Rodríguez
    • Spain
      • Let Gambas compile on all Debian architectures.


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.