BASIC

Beginner's All-Purpose Symbolic Instruction Code

BASIC war das erste weltweit in großer Zahl verbreitete Software-Produkt - Ein 'Interpreter'-Programm zur Herstellung und Ausführung eigener Programme. Die heutigen Nachfolger sind zwar viel leistungsfähiger, jedoch weitaus weniger bekannt: LibreOffice-Basic, Visual Basic (for Applications, VBA) OpenOffice-Basic, Star-Basic, ...
Basic Kurze Geschichte
Basic-Versionen Moderne Versionen: LibreOffice-Basic, MS Visual Basic (VBA), ...
Basic Anwendung Installation fertiger Basic-Funktionen
Basic Entwicklung Entwicklung eigener Basic-Funktionen
Links Ausgewählte Links zum Thema 'VBA'
Allgemeine Basic-Seiten:
Basic-Module Portable Anwendung von Basic in LibreOffice, MS-Excel, ...
Funktionen Portable Funktionen zur Berechnung spezieller Aufgaben
Variablen-Typen Das Rohmaterial von VB
Array Arrays (Listen, Vektoren) in VBA
Programmkontrolle Verzweigungen und Schleifen, Kommentare
Datum & Zeit Datenformate, Umwandlung ...
String Programmierung von Zeichen und Text
Zufall Erzeugung zufälliger Zahlen und Strings, Mischen
VB-Algorithmen Einige praktische Beispiele für Algorithmen in VBA
Spezielle Basic-Seiten:
Große Zahlen Funktionen zum genauen Rechnen mit (sehr) großen oder kleinen Zahlen
Sub - Programme Sub - Programme für jeden Zweck
Zellen & Bereiche Adressierung, Lesen, Ändern von Kalkulations-Zellen
Objekte Arbeitsblätter, Diagramme, Buttons, Menüleisten, ...
Ereignisse Reaktion auf Events
Dateisystem Zugriff auf Volumes (Drives), Verzeichnisse (Ordner) & Dateien
Interaktion Meldungen, Eingabe, Formulare
Farben Versuch einer Übersicht: Color, ColorIndex, SchemeColor, QBColor, ...
Animation Animation von Modellen (Grafik) mit VBA
FehlerAbfangen von Fehlern, Errorhandler
IterationVersuch & Irrtum mit Methode
RegExp Reguläre Ausdrücke - nur für Standalone-VB
System Betriebssystem, Konsole & Umgebung
Beispiele Arcustangens, Bernoulli-Zahlen, Binomial-Koeffizient, BitLevel (Bool-Funktionen), Cosinus, Datum und Zeit (ISO-8601, Julianischer Tag (JD, MJD), Kalenderwoche, Ostern, Sommerzeit, Sternzeit, Tag des Jahres, Wochentag, Zeitzone), Ellipsen-Umfang, Euler-Zahl, Exponential-Funktion, Julia-Funktion, beliebig große und genaue Zahlen, Kartografie (Bogenmaß, Dezimalgrad, Ebene-Abstand, Ebene-Richtung, Fehler-Funktion, Kugel-Abstand, Kugel-Richtung, UTM-Länge), Kepler-Bewegung, Legendre-Polynome, Logarithmus, Mandelbrot-Funktion, Mittelwerte, Normalverteilung, Pi (Kreiszahl), Quadratwurzel, Sinus, Text (UTF-8)

Basic

BASIC (Beginner’s All-purpose Symbolic Instruction Code) war die erste weit verbreitete und die einzige jemals populäre Programmiersprache. Die Sprache wurde schon 1964 von von dem aus Ungarn stammenden John George Kemeny (links, 1926-1992) und Thomas Eugene Kurtz (rechts, *1928) am Dartmouth College in den USA entwickelt.

In dieser Zeit gab es keine Anwendungs-Programme im heutigen Sinn, sondern man programmierte selbst. Die Aufgaben waren fast ausnahmslos Rechnungen.

Zur Programmierung brauchte man Programmiersprachen (Compiler), die teuer und für AnfängerInnen schwierig zu erlernen waren.
Das Ziel von BASIC war eine bessere Ausbildung: Diese Programmiersprache war besonders leicht zu erlernen und zu bedienen. Sie wurde von den StudentInnen von Dartmouth angenommen, verwendet und rasch weiterentwickelt.

Auf Wunsch von Kemeny und Kurtz war BASIC für Schulen und Universitäten kostenfrei. Diese damals ungewöhnliche Idee verhalf BASIC zu einer raschen Verbreitung und der Informatik zu einer weltweit enormen Beschleunigung.

Alle Hersteller von Computern und später auch von anspruchsvollen Taschenrechnern nahmen BASIC in ihre Produkte auf. Man findet noch heute alle wichtigen Algorithmen als BASIC-Programme.

Die Informatik dieser Zeit wurde mit BASIC weitgehend gleichgesetzt. Auch in Europa wurde BASIC von allen Informatik-LehrerInnen und in der Folge von ihren SchülerInnen erlernt.

IT-Verbreitung

Die Zeit der ersten Expansion der Informatik war geprägt von der fast ausschließlichen Verwendung von BASIC. Vorher wurden Computer-Anwendungen von MathematikerInnen für den speziellen Bedarf der Universitäten (und Militärs) entwickelt - auch Kemeny und Kurtz waren Mathematiker.
Mit BASIC wurde die Informatik dagegen für alle geöffnet. Dieses Ziel war beabsichtigt, aber in seinen heutigen Dimensionen unvorstellbar.

Mathematik

Die einseitige Orientierung auf Mathematik und Naturwissenschaften erwies sich in der Folge als Nachteil: An den meisten Schulen wurden nur MathematikerInnen für BASIC ausgebildet. Die an sich allgemein verwendbare Programmiersprache wurde nur zum Rechnen verwendet. Andere Anwendungen wären möglich gewesen, wurden jedoch wegen der Fixierung auf die Mathematik stark behindert.
Diese Vereinnahmung ist noch heute spürbar: Die IT-Ausbildung wird noch immer von Technikern dominiert, andere Fächer (z.B. Sprachen, Kunst, ...) sind viel zu wenig präsent.

AnwenderInnen-Programme

Textverarbeitung und → Tabellen-Kalkulation waren die ersten weit verbreiteten Programme im heutigen Sinne. Man brauchte dazu erstmals keine Programmiersprache und keine Kenntnisse der Programmierung.

Mit der raschen Verbreitung der Personal Computer und dieser AnwenderInnen-Programme war ein ebenso rascher Niedergang von BASIC verbunden.
Die ersten Produkte von Microsoft enthielten - im Gegensatz zu den rasch verdrängten Mitbewerbern - keine BASIC Komponenten.

Visual Basic

Etwa gleichzitig mit der Umstellung auf das neue Betriebssystem Windows brachte Microsoft 1991 Visual Basic auf den Markt.
Diese Programmiersprache ist ein Kompromiss: Man nahm Elemente der damals modernsten Entwicklungen auf, musste jedoch das extrem einfache Konzept von Ur-BASIC aufgeben.

Visual Basic wurde weiterentwickelt, später in .NET umbenannt und stellt heute die wichtigste Entwicklungs-Umgebung für jene EntwicklerInnen dar, die ausschließlich an MS-Produkten arbeiten.
Visual Basic und verwandte Produkte (.NET, C#, ASP) sind an einen Hersteller und dessen Produkte gebunden. In diesem Web werden offene und portable Lösungen bevorzugt, deshalb wird Visual Basic in seiner allgemeinen Form hier nicht weiter vorgestellt.

Als 'Benutzer-definierte Funktionen' für → Kalkulations-Programme sind Basic-Programme jedoch weiterhin praktisch und wichtig. Sie finden solche Funktionen auf vielen Seiten dieses Webs.

Visual Basic for Applications (VBA) und seine Verwandten

Visual Basic for Applications - VBA

Visual Basic wurde von Microsoft in seine erfolgreichen Office-Programme integriert und erweitert, um mit den Objekten dieser Programme zu arbeiten. Damit könnte man die Funktionalität aller Office-Programme fast beliebig erweitern.

In der Praxis hat VBA nur für MS-Excel größere Bedeutung gewonnen: Die Kalkulation lässt sich ausgezeichnet mit VBA-Funktionen ergänzen:
Man findet VBA-Funktionen für alle denkbaren Aufgaben der Kalkulation - meist sogar kostenfrei -im Internet.

Leider ist es möglich, in VBA-Programme (wie in jedes andere ausführbare Programm) auch schädlichen Code einzusetzen. Die Verbreitung einiger VBA-Viren setzte der allgemeinen Verwendung von VBA ein rasches Ende: VBA-Funktionen (irreführend als 'Makro'-Programme bezeichnet) sind heute in allen Kalkulations-Programmen abgeschaltet und nur auf ausdrückliche Anweisung verwendbar.

Damit ist VBA wieder auf den Kreis der ersten BASIC-AnwenderInnen aus Mathematik, Naturwissenschaft und Technik reduziert. Leider nutzt nur diese Gruppe das enorme Potential von VBA zusammen mit → Kalkulations-Programmen.

StarBasic

Der damals 16jährige Marco Börnes begann 1985 in Lüneburg mit der Entwicklung eigener Programme. Sein späteres Unternehmen StarDivision war mit dem integrierten Programm-Paket StarOffice (auch kommerziell) sehr erfolgreich.

1998 wurde StarOffice für den privaten und später auch für den kommerziellen Gebrauch freigegeben.

In das StarOffice Programm-Paket wurde die Programmiersprache StarBasic integriert. StarBasic verwendet die gleiche Syntax wie VBA.

Funktionen zur Verwendung in Kalkulations-Programmen sind daher zwischen VBA und StarBasic (und seinen heutigen Nachfolgern) meist ohne Änderung portabel.

Subs, (HilfsProgramme) insbesondere mit Zugriff auf das User-Interface sind zwischen VBA und StarBasic nicht portabel. StarBasic verwendet andere Objekte und Methoden als VBA.

OpenOffice-Basic

StarDivision wurde 1999 von Sun Microsystems aufgekauft und das Programm-Paket als OpenOffice, die integrierte Programmiersprache als OpenOffice-Basic weiter entwickelt.

OpenOffice war sehr erfolgreich und wurde u.a. auf fast jedem Linux-System eingesetzt. Leider nahm das ausgezeichnete Programm mit der Übernahme von Sun durch Oracle ein jähes Ende.

LibreOffice-Basic

Die Übernahme von Sun durch Oracle 2010 führte zu Konflikten mit dem neuen Eigentümer. Die Office-EntwicklerInnen gründeten das freie Projekt LibreOffice, die integrierte Programmiersprache nennt sich folgerichtig LibreOffice-Basic.

LibreOffice wird heute mit allen gängigen Linux-Distributionen ausgeliefert. Auch die meisten OpenOffice AnwenderInnen sind mittlerweile auf LibreOffice umgestiegen. Das ausgezeichnete Programm-Paket ist kostenfrei für alle gängigen Betriebssysteme verfügbar.

In diesem Web

werden viele Beispiele vorgestellt, die mit → Kalkulations-Programmen gelöst werden, und zwar meist mit Hilfe von Basic-Funktionen.

Die meisten vorgestellten Funktionen sind unabhängig von der jeweiligen Basic-Versionen portabel. Nur in wenigen Fällen werden getrennte Versionen für LibreOffice-Basic und Visual Basic (VBA) verwendet.
Details zur Verwendung von Basic-Funktionen mit Kalkulations-Programmen

Visual Basic Script

ist eine Visual Basic Variante, die man ähnlich wie → JavaScript zur Herstellung dynamischer (veränderbarer) Webseiten verwenden kann. VB-Script hat jedoch keine nennenswerte Verbreitung erlangt und ist heute sogar in MS-Browsern ohne besondere Maßnahmen abgeschaltet.

In diesem Web sind noch einige → VBScript-Seiten enthalten. Sie sind jedoch überflüssig geworden und werden demnächst aufgelassen.

Tipp: Verwenden sie zur Programmierung auf Client-Seite → JavaScript.

Basic Anwendung

Funktionen

Basic-Function's sind fast immer portabel. Man kann sie ohne Änderung zusammen mit jedem Standard (Tabellen)-Kalkulations-Programm (LibreOffice, OpenOffice, MS-Excel, ...) verwenden. Diese Funktionen sind besonders nützlich, weil man damit die Möglichkeiten von Kalkulations-Programmen fast beliebig erweitern kann. Man findet im Internet eine große Anzahl von Basic-(VBA)-Funktionen, darunter viele gut brauchbare.
Vorsicht ist allerdings angebracht:
Viren sind heute kaum noch ein Problem. Sie werden von allen gängigen Sicherheits-Programmen entdeckt und entfernt.
Es gibt jedoch kein Mittel gegen Programm-Fehler. Amateur-Programme funktionieren zwar meist im typischen Anwendungs-Bereich. Sie sind jedoch selten gegen Fehlbedienung abgesichert und nehmen auf besondere Bedingungen keine Rücksicht.
Testen sie daher Funktionen unbekannter Herkunft sorgfältig.

Installation auf LibreOffice

Der LibreOffice-Basic Interpreter ist bereits installiert. Diese Anleitung betrifft daher lediglich den Text (QuellText, Sourcecode) von Basic-Funktionen.

Starten sie LibreOffice und öffnern sie eine (neue) Tabellen-Kalkulations-Datei.

Öffnen sie mit Alt-F11 den Basic-(Makro)-Manager, markieren sie links die verwendete Datei (z.B. 'Unbenannt1') und legen sie mit Klick auf Neu ein Basic-Modul an.

Kopieren sie den Basic-Text (z.B. die Funktion Hallo ↓ unten) in das QuellText-Fenster. Wenn sich darin bereits Basic Text befindet, dann fügen sie den neuen Text am Ende an.

Schließen sie das Fenster des Basic-(Makro)-Managers.

Installation auf MS-Excel

Der Visual Basic for Applications (VBA) Interpreter ist bereits installiert.

Starten sie MS-Excel und öffnen sie eine (neue) Tabellen-Kalkulations-Datei.

Öffnen sie mit Alt-F11 die VBA-Ansicht, markieren sie links im Projekt-Manager die verwendete Datei (z.B. 'Mappe1') und legen sie mit Menü-Befehl Einfügen | Modul ein Basic-Modul an.

Kopieren sie den Basic-Text (z.B. die Funktion Hallo ↓ unten) in das QuellText-Fenster.
Wenn sich darin bereits Basic Text befindet, dann fügen sie den neuen Text am Ende an.

Kehren sie mit Taste Alt-F11 oder mit Klick auf das Excel-Icon zum Kalkulations-Programm zurück.
Demo-Funktion 'Hallo'
Diese Funktion öffnet bei Anwendung ein kleines Fenster (MessageBox) mit dem angegebenen Text und berechnet die Antwort auf die zentrale Frage des Universums. Die Funktion ist - wie fast alle Basic-Funktionen - mit jedem Kalkulations-Programm verwendbar.
Basic-Quelltext der Funktion Hallo
Function Hallo()
MsgBox "Hallo"
Hallo = 5*8+2
End Function

Anwendung in LibreOffice-Calc

Basic-Funktionen sind sofort nach Einfügen des Funktions-Textes verwendbar. Markieren sie eine beliebige Zelle der Kalkulation und geben sie ein:
=Hallo()
Bestätigen sie mit Return-Taste oder durch Klick auf das grüne Häkchen 'Übernehmen'.

Anwendung in MS-Excel

In MS-Excel können sie die Funktion wahlweise manuell eintragen, so wie links für LibreOffice beschrieben, oder mit dem Funktions-Assistenten, z.B. mit Menü Einfügen | Funktion, wählen sie Kategorie=BenutzerInnen-definiert, Name=Hallo.
Bestätigen sie ihre Wahl.
Wenn man die kleine Unanehmlichkeit in Kauf nimmt, um den Basic-Text zu installieren, dann ist die Verwendung von Basic-Funktionen denkbar einfach. Die meisten Funktionen sind umfangreicher, aber auch nützlicher als das hier verwendete Beispiel.

Sowohl LibreOffice als auch MS-Excel bieten darüber hinaus zusätzliche Möglichkeiten zum Import fertiger Funktions-Module.
Insbesondere die Verwendung von Algorithmen mit Schleifen ist in einfachen Kalkulations-Programmen schwierig, mit Basic jedoch ganz einfach.
Weitere Optionen erlauben die fixe Installation praktischer Basic-Funktionen für alle Kalkulations-Dateien bzw. alle AnwenderInnen des jeweiligen PC.

Details zu Basic-Modulen in LibreOffice und MS-Excel.

Sicherheit

Die Ausführung von Basic-Programmen (irreführend 'Makro'-Programmen) ist ohne weitere Maßnahmen zur Sicherheit abgeschaltet. Das gilt für alle Dateien, die Basic-Programme enthalten, auch für selbst erstellte.
Sie müssen ausdrücklich die Zustimmung zur Freigabe der Basic-(Makro)-Programme geben, um sie zu verwenden.

Zustimmung in MS-Excel:
Erfolgt leider je nach Version sehr unterschiedlich. Konsultieren sie evtl. die Hilfe (Stichworte Makro, Visual basic, VBA, ...). Manchmal müssen sie danach die Datei sogar schließen und erneut öffnen.
Neuere Excel-Versionen speichern Dateien mit Basic-Programmen mit der speziellen Datei-Erweiterung *.xlsm

Zustimmung in LibreOffice:
Menü Extras | Optionen | LibreOffice | Sicherheit | Makro-Sicherheit | Sicherheits-Stufe.
Tipp: Wählen sie die mittlere Stufe: Dann wird bei jedem Öffnen der Datei ihre Zustimmung eingeholt.

LibreOffice bietet eine praktische Option: Im Register Vertrauenswürdige Quellen | Datei-Quellen des gleichen Fensters können sie oft verwendete Dateien eintragen - In diesem Fall gilt ihre Zustimmung ohne weitere Fragen.

(Hilfs)-Programme

Basic-Sub's sind im Gegensatz zu Funktionen kleine Programme, die meist zur Unterstützung des Unter-Interface dienen. Die Möglichkeiten sind nur durch die Phantasie begrenzt.

Man kann damit auf alle Zellen und Arbeitsblätter zugreifen, deren Daten lesen, schreiben oder löschen, neue Objekte (Arbeitsblätter, Diagramme, ...) erstellen, ihre Eigenschaften bis ins kleinste Detail nach Bedarf anpassen, usw.
Darüber hinaus kann man auf alle Dateien und sogar auf die Registry-Datenbank zugreifen, Betriebssystem-Funktionen ausführen, Programme starten, sogar den PC abschalten...


Subs sind normalerweise nicht portabel. Man muss sie mindestens in getrennten Versionen für LibreOffice und MS-Excel herstellen, weil die Objekte dieser Programme unterschiedlich organisiert sind und mit anderen Methoden manipuliert werden.

Die Entwicklung aufwändiger Subs ist mehr eine teure Sackgasse als eine praktische Erweiterung. In diesem Web werden daher nur wenige Sub-Beispiele vorgestellt.
Tipp: Aufwändige Spezial-Anwendungen erstellt man besser als dynamische Webseiten (→ ein einfaches interaktives Beispiel).

Basic Entwicklung

Zur Entwicklung von Basic-Funktionen braucht man außer einem Kalkulations-Programm keine weiteren Hilfsmittel, und selbst das erhält man mit LibreOffice kostenfrei für alle gängigen Betriebssysteme.

Ein weiterer Vorteil ist die einfache Anwendung: Nach jeder Änderung kann man die Basic-Funktion sofort neu starten und ausprobieren.
Aus diesem Grund wird Basic in diesem Web bevorzugt: Diese Form der Entwicklung kommt der ursprünglichen Idee der BASIC-Erfinder sehr nahe:

Mit Basic-Funktionen kann man alle wesentlichen Elemente von Programmiersprachen rasch und problemlos erlernen.

Zur fortgeschrittenen Ausbildung ist Basic allerdings wenig geeignet.

Grenzen

Von - nach eigener Einschätzung - versierten EntwicklerInnen wird gelegentlich eingewendet, dass Basic heute ein veraltetes Spielzeug für Amateure ist.

Das ist Unsinn. Basic bietet für AnfängerInnen der IT-Entwicklung gute Bedingungen, unmittelbare Erfolgs-Erlebnisse und rasche Fortschritte. Profis können mit sehr wenig Aufwand nützliche Ergänzungen für Kalkulations-Programme herstellen.

Allerdings ist es sinnvoll, die Grenzen von Basic zu kennen und einzuhalten: Sie werden in diesem Web dort gesetzt, wo Basic-Funktionen nicht mehr portabel sind.

Basic ist kompliziert, aufwändig und teuer, wenn man sich mit den Details des jeweiligen Betriebssystems herumschlagen muss. Das gilt insbesondere auch für die - teilweise sogar staatlich unterstützten - PC-Kurse, soferne sie sich ausschließlich mit dem Betriebssystem und den Programmen eines einzigen Herstellers befassen.

VBA-Entwickung mit MS-Excel

Excel bietet die besten Bedingungen zur Entwicklung von VBA-Funktionen. Der VBA-Programmteil bietet umfangreiche Unterstützung, so wie man es von einem komfortablen Entwicklungs-System erwartet.

Tipp: Entwickeln sie Basic-Funktionen - wenn möglich - mit MS-Excel und portieren sie den fertigen QuellText anschließend (zusätzlich) auf LibreOffice.

Basic-Entwicklung mit LibreOffice

LibreOffice bietet praktisch keine Unterstützung bei der Basic-Entwicklung.
Das ist kein Problem für versierte EntwicklerInnen, die den ProgrammText einfach eintippen können, aber für AnfängerInnen recht mühsam.

Tipp: LibreOffice ist zur Anwendung ausgezeichnet geeignet, teilweise sogar deutlich überlegen. Die Entwicklung von Basic-Funktionen ist aber nicht die Stärke dieses Programms.

Ausgewählte Links zum Thema 'Basic'

Standards und Hersteller:
MSDN - Die offizielle VBA-Homepage bei Microsoft
Tutorials & Beispiele:
TU Harburg - VBA in 21 Tagen
Resourcen:
programmer.com - knapp aber gut
planet-source-code -
aboutvb - VB Archiv
Visual Basic 2005 Handbuch (Andreas Kühnel / Galileo)
Umfassend, Doku, Beispiele und Kommentare.
XHTML CSS