Basic - Programmkontrolle

"Verzweigungen" in Basic-Programmen

Alle Programmiersprachen verarbeiten Programme zeilenweise. Die Befehle werden in jener Reihenfolge ausgeführt, in welcher sie im Quelltext enthalten sind. Darüber hinaus bieten alle Programmiersprachen Möglichkeiten, den Programm-Fluss zu ändern, d.h. je nach Bedarf unterschiedliche Teile der Anweisungen auszuführen.
Basic LibreOffice-Basic, Visual Basic for Applications (VBA)
Bedingte Verzweigungen ('je nach Bedingung'):
If ThenBedingte Verzweigung
Select CaseMehrfach-Verzweigung
On Error Verzweigungen in der Fehler-Behandlung
Veraltete unbedingte Verzweigungen:
GoToUnbedingte Verzweigung
GoSub Unbedingte Verzweigung mit Rückkehr
On GoTo Unbedingte Mehrfach-Verzweigung
On GoSub Unbedingte Mehrfach-Verzweigung mit Rückkehr
Programm-Schleifen:
For Festgelegte Anzahl von Schleifen
For Each Je eine Schleife für jedes Element einer Liste
Do WhileSchleife mit Bedingung
Do UntilSchleife mit Bedingung
WhileSchleife mit Bedingung
Unterprogramme:
Function Programm mit Rückgabe eines Funktionswertes
Sub Allgemeines (Unter)-Programm
Call Aufruf von Functions und Subs
EndEnde eines Funktionsblocks
Exit Abbruch mit Exit Do, Exit For, Exit Function, Exit Property, Exit Sub
Links VBA-Links Ausgewählte Links zum Thema Basic @ Programm-Kontrolle

Bedingte Verzweigung (conditional branch)

Es kommt oft vor, dass ein Programm unterschiedlich arbeiten soll - je nachdem, ob eine Bedingung zutrifft oder nicht.
Im allgemeinen Fall (rechts) wird entweder der Programm-Block Anweisungen1 oder der Block Anweisungen2 ausgeführt.
Jeder Programm-Block kann beliebig viele Programmzeilen enthalten.
Am Ende jeder bedingten Verzweigung werden die getrennten Programm-Teile wieder zusammengeführt: Alle nachfolgenden Anweisungen werden wieder unbedingt (d.h. in jedem Fall, ohne Bedingung) ausgeführt.
Bedingte Verzweigung (allgemein)
If Bedingung=True
Then
[Anweisungen1]
Else
[Anweisungen2]
End If

Details zur Programmierung von bedingten Verzweigungen in Basic

Bedingung

Jede Programmiersprache bietet die Möglichkeit, Bedingungen zu einer logischen Aussage zu formulieren. Eine logische Aussage hat immer einen der beiden Werte True oder False
Meist werden zur Formulierung Vergleichs-Operatoren verwendet (Beispiel rechts).

Umkehrung

Fast alle Vergleichs-Operatoren haben ein Gegenstück, welches genau die umgekehrte Aussage liefert. Das bewirkt eine Umkehrung der logischen Aussage oder gleich-bedeutend einer Vertauschung der beiden Programm-Blöcke einer bedingten Verzweigung.
Vorgabe für ein Beispiel:
a=2
b=3
Einige Vergleiche:
a<b liefert True, a>=b liefert False
a=b liefert False, a<>b liefert True
a>b liefert False, a<=b liefert True

a=2 liefert True
a=3 liefert False

Der Operator = wird (nur) in Basic sowohl für Vergleiche als auch zur Zuweisung von Werten verwendet. Unterscheiden sie diese beiden Fälle !

Sonderfälle

Nur die True-Bedingung wird verarbeitet: In diesem häufigen Fall fällt der Teil Else mit dem gesamten Programm-Block Anweisungen2 weg.
Nur die False-Bedingung wird verarbeitet: Diese Konstruktion gilt als unsaubere Programmierung. Kehren sie die Bedingung um und verarbeiten sie nur die True-Bedingung.

Mehrfach-Verzweigung: Das Programm soll sich an einem Punkt in >2 Programm-Blöcke aufteilen. Diesen Fall kann man immer in mehrere einzelne Verzweigungen zerlegen. Die meisten Programmierssprachen (auch Basic) bieten allerdings Möglichkeiten, diesen Fall bequemer und übersichtlicher zu programmieren.
Details zur Basic-Anweisung Select Case

Basic - Bedingte Verzweigung

Details zu diesen Basic-Funktionen: ( Die Anweisung On Error wurde hier aufgenommen, obwohl sie keine Verzweigung sondern die Reaktion auf ein Ereignis (→ Event) ist).

Basic - Veraltete Funktionen

Details zu diesen Basic-Funktionen, die allerdings nicht (mehr) verwendet werden sollten:

Programm-Schleife

Häufig werden bestimmte Programm-Teile mehrfach ausgeführt. Die oftmalige (rasche) Wiederholung von Anweisungen zählt zu den besonderen Stärken des Computers. Alle Programmiersprachen bieten daher Anweisungen für Programm-Schleifen. Historisch haben sich 2 Schleifen-Grundformen herausgebildet:
Schleife mit Zähler und Schleife mit Bedingung.
Details zur Programmierung von Schleifen in Basic

Schleife mit Zähler

Eine Variable wird als Schleifen-Zähler verwendet. Sie enthält eine ganze Zahl, die angibt, welcher Schleifen-Durchlauf gerade ausgeführt wird. Meistens kann man Anfangswert, Endwert und Inkrement des Zählers wählen.

Anfangswert: wird je nach Aufgabe gewählt. In allgemeinen Fällen wählt man 0 als Anfangswert.
Endwert: je nach Aufgabe
Inkrement: Schleifen-Zähler aller Programmiersprachen erhöhen ihren Zählerstand pro Schleifen-Durchgang um +1, wenn nichts anderes angegeben wurde. Optional lassen sich andere Werte angeben, z.B. +2 oder -1 (in diesem Fall wird abwärts gezählt).

Tipps:
Ändern sie niemals den Wert des Schleifen-Zählers durch Programm-Anweisungen. Das Ergebnis ist je nach Programmiersprache und Version unterschiedlich, Sie können den Zähler jedoch problemlos lesen.
Nach dem Ende der Schleife ist der Wert des Schleifen-Zählers in den meisten Programmier-Sprachen unbestimmt. Wenn sie den Wert nachher noch benötigen, sollten sie ihn an eine andere Variable zuweisen.

Schleife mit Bedingung

Ähnlich wie bei der bedingten Programm-Verzweigung wird bei jedem Durchlauf der Schleife geprüft, ob eine Bedingung zutrifft oder nicht.

Die Anzahl der Durchläufe ist daher nicht festgelegt sondern ändert sich je nach den Live-Daten.

Es ist möglich, dass die Bedingung für den Abbruch der Schleife niemals eintritt (Endlos-Schleife, das Programm 'hängt' oder stürzt nach einigen Millionen Schleifen-Durchläufen ab). Vermeiden sie diesen typischen AnfängerInnen-Fehler durch zusätzliche Sicherungen (z.B. einen eigenen Zähler, der die Schleife nach 1000 Durchläufen auf jeden Fall abbricht).

Basic - Schleife mit Zähler

Details zu den Basic Anweisungen

Basic-Schleife mit Bedingung

Leider bietet Basic mehrere verschiedene Anweisungen für den gleichen Zweck.
Details zu den Basic Anweisungen

Unterprogramm

Ein Unterprogramm ist ein eigener Programmteil für eine bestimmte Aufgabe. Gute Unterprogramme bieten abstrakte Lösungen und können daher in vielen unterschiedlichen Fällen angewendet werden. Unterprogramme können von beliebig vielen anderen Programmen verwendet werden. In einem Sonderfall können sie sich sogar selbst (rekursiv) aufrufen.

Argumente

Man kann das Verhalten von Unterprogrammen mit Argumenten (Parametern) steuern. Das sind eigene Variable, in denen Daten vom aufrufenden Programm an das Unterprogramm übergeben werden.

Rückgabe

Umgekehrt ist es möglich, vom Unterprogramm (Function) berechnete Daten an das aufrufende Programm zu übergeben.

Beispiele

Für viele Arbeiten gibt es fertige Beispiele, z.B. im Internet. Je besser derartige Unterprogramme ausgeführt sind, desto leichter ist es, sie in jede beliebige Programmiersprache zu übertragen.

Bibliotheken

Gut programmierte Lösungen lassen sich für viele verschiedene Zwecke einsetzen. Sammlungen guter Unterprogramme werden in Bibliotheks-Dateien (libraries) zusammengefasst und können ohne erneute Programmierung von vielen verschiedenen Programmen verwendet werden.

VBA-Links Ausgewählte Links zum Thema Basic @ Programm-Kontrolle

  Visual Basic 2005 Handbuch (Andreas Kühnel / Galileo) - Grundlagen der Sprach-Syntax / Kontroll-Strukturen , Programm-Schleifen