|
1.2.1 Bartels User Language im Vergleich zu C
Wie bereits einleitend erwähnt, ist
Bartels User Language eine Programmiersprache, die auf dem Sprachumfang von C basiert. Kommentare sind wie in C üblich durch
/* und
*/ zu begrenzen bzw. werden wie in C++ üblich mit
// eingeleitet und durch das Zeilenende begrenzt.
Als elementare Datentypen sind
char ,
int und
double in
Bartels User Language enthalten. Im Unterschied zu C fehlt hier der Datentyp
float ebenso wie die Möglichkeit der Qualifizierung elementarer Datentypen
(short ,
unsigned ,
long ). Zeiger sind in der
Bartels User Language nicht implementiert. An Stelle von
char -Vektoren zur Darstellung von Zeichenketten kann in
Bartels User Language der als elementar zu betrachtende Datentyp
string verwendet werden. In Erweiterung zu C enthält
Bartels User Language den ebenfalls als elementar zu betrachtenden speziellen Datentyp
index . Über diesen Datentyp werden die Möglichkeiten des Zugriffs auf die Design-Datenbank (DDB) des
Bartels AutoEngineer definiert.
index kann dabei als Index in einen Vektor von DDB-Strukturen verstanden werden. Über einen speziellen Operator ist der Zugriff auf die Elemente der darüber adressierten Struktur möglich. Die
index -Typen sowie die zugehörigen Strukturelemente sind vordefiniert (siehe
Anhang B).
Vektoren werden im Gegensatz zu C dynamisch verwaltet, d.h. die Definition fester Vektorfeldgrenzen entfällt in der
User Language. Ebenso besteht in der
User Language die Möglichkeit, zusammengesetzte, komplexe Datentypen (Strukturen, Arrays) einander direkt zuzuweisen, sofern diese typkompatibel sind und dieselbe Dimensionierung aufweisen.
Die Vereinbarung der aus C bekannten Speicherklassen
auto ,
extern und
register ist in der
Bartels User Language nicht explizit möglich. Grundsätzlich werden in der
User Language alle innerhalb von Funktionen definierten Variablen der Speicherklasse
auto zugeordnet, alle außerhalb von Funktionen definierten Variablen gelten als globale Variablen, sofern sie nicht explizit der Speicherklasse
static zugeordnet sind. Ebenso gelten alle im Programmtext definierten Funktionen als global vereinbart, sofern sie nicht explizit der Speicherklasse
static zugeordnet sind. Der Geltungsbereich globaler Variablen und Funktionen erstreckt sich auf das gesamte Programm, während als
static deklarierte Variablen und Funktionen nur Gültigkeit im aktuellen Programmtext (nicht jedoch in einem noch zu linkenden Programmtext) besitzen.
Mechanismen zur Spracherweiterung mit Hilfe eines Makro-Preprozessors werden in
Bartels User Language ebenfalls unterstützt; so stehen die aus C bekannten Preprozessor-Anweisungen
#include ,
#define ,
#undef ,
#if ,
#ifdef ,
#ifndef ,
#else und
#endif auch in der
User Language zur Verfügung.
1.2.2 Datentypen, Konstanten, Variablen
Bartels User Language enthält die elementaren Datentypen
char (Zeichen),
int (ganzzahliger Wert),
double (rationale Zahl doppelter Genauigkeit),
string (Zeichenkette), sowie
index (vordefinierter Index auf DDB-Struktur; siehe
Anhang B). Daneben lassen sich aus den elementaren Datentypen abgeleitete Datentypen (Vektoren bzw. Arrays sowie Strukturen) definieren.
Bartels User Language erlaubt die Verwendung von Konstanten für die elementaren Datentypen.
char -Konstanten sind dabei durch einfache,
string -Konstanten durch doppelte Anführungszeichen zu begrenzen. Die in C übliche Verwendung des Backslashs
(\ ) als Fluchtsymbol zur Angabe grafisch nicht darstellbarer Zeichen ist zulässig. Ganzzahlige Konstanten können wahlweise in Dezimal-, Oktal- oder Hexadezimalschreibweise dargestellt werden. Festkommakonstanten müssen einen Dezimalpunkt enthalten. Daneben ist auch die wissenschaftliche Gleitkommadarstellung mit Exponent erlaubt.
Konstante Ausdrücke bestehen aus Konstanten und Operatoren und werden bereits während der Übersetzung durch den
Bartels User Language Compiler bewertet (Constant Expression Evaluation).
Alle Variablen müssen vereinbart werden, wodurch jeweils der Datentyp der Variablen, sowie deren Name festgelegt wird. Variablennamen müssen mit einem Buchstaben oder einem Unterstrich
(_ ) beginnen und können nachfolgend beliebig viele Buchstaben, Ziffern oder Unterstriche aufweisen. Der Compiler unterscheidet bei der Verwendung von Buchstaben in Variablennamen zwischen Groß- und Kleinschreibung. Variablen können bereits bei deren Vereinbarung initialisiert werden. Wird eine nicht initialisierte Variable verwendet, dann gibt der Compiler ggf. eine entsprechende Warnmeldung aus. Der Interpreter hingegen wird in solchen Fällen die entsprechende Variable mit einem Nullwert initialisieren.
1.2.3 Operatoren, Zuweisungen
Bartels User Language verfügt über die aus C bekannten Operatoren
(?: ,
+ ,
- ,
* ,
/ ,
% ,
> ,
>= ,
< ,
<= ,
== ,
!= ,
&& ,
|| ,
! ,
++ ,
-- ,
& ,
| ,
^ ,
<< ,
>> ,
~ ). Die Reihenfolge des Vorrangs für die Bewertung von Operatoren entspricht ebenfalls der Programmiersprache C. Erscheinen Operanden mit verschiedenen Datentypen zusammen in Ausdrücken, dann werden deren Werte in einen gemeinsamen Datentyp umgewandelt. Derartige Umwandlungen finden allerdings nur dann statt, wenn sie möglich und auch sinnvoll sind (ansonsten Fehlermeldung durch den Compiler). Eine Erweiterung gegenüber C ergibt sich aus der Möglichkeit, den Additionsoperator
+ sowie die Vergleichsoperatoren
(> ,
>= ,
< ,
<= ,
== ,
!= ) direkt auf den Datentyp
string anzuwenden.
Eine Zuweisung erfolgt üblicherweise durch den
= -Operator, wobei der Ausdruck auf der rechten Seite des Gleichheitszeichens der Variablen auf der linken zugewiesen wird. Die in C üblichen zusammengesetzten Zuweisungsoperatoren
(+= ,
-= ,
*= ,
/= ,
%= ,
&= ,
|= ,
^= ,
<<= ,
>>= ) sind auch in
Bartels User Language zulässig.
1.2.4 Kontrollstrukturen
Durch Kontrollstrukturen wird die Reihenfolge der auszuführenden Aktionen definiert.
Bartels User Language erlaubt alle aus C bekannten Kontrollstrukturen außer der
goto -Anweisung sowie der Definition von Marken. Die verfügbaren Kontrollstrukturen sind somit
if bzw.
if -else ,
switch ,
while ,
for ,
do -while ,
break und
continue . Eine Erweiterung gegenüber C bildet die
forall -Kontrollstruktur, mit der ein repetitives Abarbeiten von
index -Datentyp-Variablen möglich ist.
1.2.5 Programmfluss, Funktionen
Wie C ermöglicht auch
Bartels User Language die Zerlegung großer Problemstellungen in kleinere mit Hilfe von Funktionen. Zu unterscheiden ist dabei zwischen den in
Bartels User Language eingebundenen Systemfunktionen (siehe
Anhang C) und den Funktionen, die der Programmierer innerhalb eines Programms selbst definiert (Anwenderfunktionen). Die Definition und Deklaration der Anwenderfunktionen mit ihren Funktionsparametern entspricht der Vorgehensweise in C. Ebenso ist die Anwenderfunktion mit dem Namen
main immer die erste Funktion, die bei einem Programmlauf aufgerufen wird (d.h. die Funktion
main muss i.d.R. definiert sein, damit ein
User Language-Programm überhaupt "etwas tut"). Im Gegensatz zu C unterscheidet
Bartels User Language bei der Bewertung von an Funktionen übergebenen Parametern nicht zwischen "Call-By-Value" und "Call-By-Reference"; alle Parameter werden jeweils durch das "Call-By-Reference"-Verfahren bewertet, wodurch selbstverständlich nicht (wie sonst in C üblich) mit Zeigern gearbeitet werden muss, um geänderte Parameterwerte an einen Funktionsaufrufer zurückzumelden.
1.2.6 Integrierte Spezialfunktionen
Bartels User Language stellt dem Anwender einige spezielle Werkzeuge zur Verfügung, die es aufgrund ihres umfangreichen Funktionsspektrums und ihrer außerordentlichen Mächtigkeit verdienen, an dieser Stelle gesondert erwähnt zu werden.
So ist in die
Bartels User Language ein BNF-Precompiler zur Realisierung von Interfaceprogrammen für die Bearbeitung von Fremddatenformaten integriert. Unter Verwendung der zugehörigen Scanner- und Parserfunktionen lassen sich in einfacher und eleganter Weise Programme zur Verarbeitung praktisch beliebiger ASCII-Datenformate implementieren (siehe hierzu auch
Kapitel 2.6.4 dieses Handbuchs).
Bartels User Language enthält des Weiteren SQL (Structured Query Language)-Funktionen zur Verwaltung Relationaler Datenbanken. Damit stehen dem Anwender Softwaretools zur Programmierung von Datenbankmanagementsystemen zur Verfügung. Die entsprechenden SQL-Zugriffsfunktionen erlauben es, z.B. eine Datenbank für Bauteildaten zur Variantenverwaltung in den
Bartels AutoEngineer integrieren. Damit lassen sich in einfacher Weise "was wäre wenn"-Analysen (Kosten, Lagerbestand, usw.) für verschiedene Varianten eines Layouts durchführen, sowie komfortable Datenbankfunktionen zur schnellen Auswahl geeigneter Bauteile mit einer kontrollierten Zuordnung von Gehäusebauform und Bauteilwert implementieren. Dies ist jedoch nur ein Beispiel aus dem breiten Anwendungsspektrum; selbstverständlich lassen sich auch Datenbanksysteme zur Projektverwaltung, zum Projektmanagement, zur Versionsverwaltung, zur Produktionsplanung und -steuerung (PPS), zur Adressverwaltung, zur Verwaltung von Lieferantenverzeichnissen und Kundendateien, usw. realisieren.
Anhang C dieses Handbuchs enthält die Beschreibungen der SQL-Systemfunktionen.
Charakteristische Eigenschaften der User Language © 1985-2024 Oliver Bartels F+E • Aktualisiert: 11. October 2010, 10:33 [UTC]
|