Systemfunktionen
  • 01 Jul 2024
  • 8 Minuten zu lesen
  • Dunkel
    Licht
  • pdf

Systemfunktionen

  • Dunkel
    Licht
  • pdf

Artikel-Zusammenfassung

Allgemeine Systemfunktionen

EVAL

Format: sRet = EVAL(sVariablenname)

Zweck: Eruiert den den Inhalt einer Variablen oder eines Frageparameters falls es diesen namentlich gibt.

Diese Funktion kann ineinander geschachtelt werden. Mit ihr kann man auch Formeln auswerten.

Beispiel:

A = "B"

B = "C"

C = "D"

D = 1000

E = 11 : F = 89 : sSumme = "E+F"

Erg1 = EVAL(A) !Erg1 = "C"

Erg2 = EVAL(EVAL(EVAL(A))) !Erg2 = 1000

Erg3 = EVAL("A") !Erg3 = "B"

Erg4 = EVAL(sSumme) !Erg4 = 100

DEFINED

Format: DEFINED [ ( ] Variablename [ ) ]

Zweck: Legt fest, ob die Variable Variablename vorhanden (deklariert) ist.

Bemerkungen: Diese Funktion liefert TRUE oder FALSE abhängig davon ob Variablename existiert.

Beispiel:
IF DEFINED(a) THEN a = 10 ! Kein Laufzeitfehler wenn a nicht vorhanden

DELETE

Format: DELETE Variable

Zweck: Löscht die Variable aus der Variablenliste und gibt den Speicherplatz frei.

Bemerkungen: Dieser Befehl wird verwendet um Zwischenvariablen zu löschen, die für die weitere Verarbeitung uninteressant sind, jedoch das System nur unnötig belasten.

Beispiel:

a = 10:b = 20:c = 30:d = 40

DELETE a : DELETE b

a = c ! OK

d = b ! Fehler! (Variable b wurde gelöscht)

Zeichenkettenfunktionen

LEN

Format: v = LEN(sString)

Zweck: Ermittelt die Anzahl der Zeichen in sString

Bemerkung: sString ist ein Zeichenketten-Ausdruch. Nicht druckbare Zeichen werden auch berücksichtigt.

Beispiel:

sProg = "BASIC PROGRAMM"

1 = LEN(sProg + "123")

MESSAGE 1 !Ausgabe 17

LEFT$

Format: sRet = LEFT$(sString, n)

Zwecks: Übergibt die am weitesten links liegenden n Zeichen der Zeichenkette sString

Bemerkung: sString ist ein Zeichenketten-Ausdruck. n ist die Anzahl der Zeichen, die das Ergebnis enthalten soll.

Ist n größer als LEN (sString), wird sString übergeben. Ist n gleich 0 wird "" übergeben.

Beispiel:

sProg = "BASIC PROGRAMM"

sErg = LEFT$(sProg, 5)

MESSAGE sErg !Ausgabe "Basic"

RIGHT$

Format: sRet = RIGHT$(sString, n)

Zweck: Übergibt die am weitesten rechts liegenden n Zeichen der Zeichenkette sString.

Bemerkung: sRet ist ein Zeichenkette-Ausdruck, also ein String. n ist ein ganzahliger Ausdruck, der die Anzahl der Zeichen angibt,

die im Ergebnis stehen sollen. Ist n größer oder gleich LEN (sString), wird sString übergeben.

Ist n gleich 0 wird eine leere Zeichenkette "" übergeben.

Beispiel:

a = "BASIC PROGRAMM"

b = RIGHT$(a, 8)

MESSAGE b !Ausgabe "PROGRAMM"

MID$

Format: sRet = MID$(sString, n, m)

Zwecks: Übergibt die angeforderten Teil einer gegebenen Zeichenkette sString

Bemerkung: sString ist einer Zeichenketten-Ausdruck.

n ist ein numerischer Ausdruck im Bereich von 1 bis 255

m ist ein numerischer Ausdruck im Bereich von 1 bis 255

Beispiel:

! 1 3 5 7 9

a = "ANOTHER BASIC PROGRAMM"

b = MID$(a, 9, 5)

MESSAGE b !Ausgabe "BASIC"

INSTR

Format: sRet = INSTR(n, sX, sY)

Zweck: Übergibt die Position des ersten Auftretens von sY in sX, beginnend mit Position n.

Bemerkung: n muss ein gültiger numerischer Ausdruck sein. Wird n nicht angegeben, so wird n auf 1 gesetzt.

Wird die Zeichenkette nicht gefunden, wird als Ergebnis Null zurückgegeben.

Wird die Zeichenkette gefunden, wird die Position zurückgegeben.

Beispiel:

a = "12 08 17 45 33 21 09 03 17"

p = INSTR(1, a, "09")

s = "09 an Stelle" + STR$(p) + "gefunden!" !s = 09 an Stelle 19 gefunden!

STRING$

Format: sRet = STRING$(n, m)

sRet = STRING$(n, sX)

Zweck: Übergibt eine zeichenkette der Länge n, deren Zeichen alle aus dem ASCII-Code m oder dem ersten Zeichen von sX bestehen.

Bemerkung: n und m liegen im Bereich 0 bis 255

UCASE$

Format: sRet = UCASE$(sX)

Zweck: Wandelt die Zeichenkette sX in Großbuchstaben um und retourniert diese auf sRet.

Bemerkung: sX ist ein alphanumerischer Ausdruck (String).

Beispiel:

sTitel = "der Titel"

MESSAGE UCASE$(sTitel) !liefert "DER TITEL"

LCASE$

Format: sRet = LCASE$(sX)

Zweck: Wandelt die Zeichenkette sX in Kleinbuchstaben um und retourniert diese auf sRet

Bemerkungen: sX ist ein alphanumerischer Ausdruck (String)

Beispiel:

sTitel = "Der Titel"

MESSAGE LCASE$(sTitel) !Ausgab: der Titel

DATE$

Format: sDate = DATE$

Zweck: Ermittelt das aktuelle Datum und retourniert dieses auf dem String sDate

Bemerkung: Eine Zeichenkette aus zehn Zeichen im Format TT:MM:JJJJ wird zurückgegeben

Beispiel:

sDate = DATE$ !Datum übernehmen

MESSAGE "Heute ist der " + sDate !Ausgabe "Heute ist der 25:04:1994"

TIME$

Format: sTimeStamp = TIME$

Zweck: Ruft die laufende Zeit ab und retourniert diese auf dem String sTimeStamp

Bemerkung: Die laufende Zeit wird als String in der Form HH:MM:SS retourniert, wobei HH die Stunde (00 bis 23),

MM die Minute (00 bis 59) und SS die Sekunde (00 bis 59) darstellen.

Beispiel:

sZeit = TIME$

MESSAGE "aktuelle Zeit: " + sZeit ! Ausgabe "aktuelle Zeit: 12:12:12"

Konvertierungsfunktionen

CNVRT$

Format: sRet = CNVRT$(sFormat, n)

Zweck: Wandelt den numerischen Wert n in einen alphanumerischen Wert um und benutzt dabei die Formatanweisung spezifiziert in sFormat

Bemerkung: n muss ein numerischer Ausdruck, eine numerische Konstante oder eine numerische Variable sein.

Parameter sFormat muss eine Konvertierungsangabe sein.

Beispiel:

Prozensatz = 444 / 1111 * 100

sText = CNVRT$("##,##", Prozensatz) !sText = "39,96"

STR$

Format: sRet = STR$(n)

Zweck: Wandelt den numerischen Wert n in einen String um.

Bemerkungen: n ist ein numerischer Ausdruck. Ist n positiv, enthält die mit STR$ übergebene Zeichenkette eine führende

Leerstelle (die Leerstelle ist für das Plusvorzeichen reserviert). die Funktion VAL ist die Gegenfunktion von

STR$. Die Funktion wird benutzt, wenn numerische Werte in Zeichenketten eingebunden werden sollen.

Beispiel:

hyp = SQRT (5 ^ 2 + 7 ^ 2)

sText = "Ergebnis: " + STR$(ROUND (hyp,3)) !sText = "Ergebnis = 8.602"

VAL

Format:nErg = VAL(sZahl)

Zweck: Versucht den String sZahl als num. Wert zu interpretieren und gibt diesen auf nErg zurück

Bemerkungen: sZahl ist ein Zeichenketten-Ausdruck. Die Funktion VAL entfernt Leerstellen, Tabulatoren und Zeilenvor-schubzeichen

aus der Zeichenkette des Arguments, um das Ergebnis bestimmen zu können.

Beispiel:

sZahl = "123.34" : nErg = VAL(sZahl) !v="123.34"

sZahl = "a123.34" : nErg = VAL(sZahl) !v="0"

CHR$

Format: Zeichen = CHR$(nAsciiC) !Ascii-Zeichen ermitteln

CHR$ (65) entspricht "A"

ASC

Format: nAsciiC = ASC(Zeichen) !Ascii-Code ermitteln

ASC ("?") entspricht 63

DEG

Format: erg = DEG(Zahl) !Wandelt Radianten in Grad um

DEG (PI/4) entspricht 45° Grad

RAD

Format: erg = RAD(Zahl) !Wandelt Grade in Radianten um

RAD (90) entspricht 3.14159... (PI)

Mathematische Funktionen

ABS

Format: erg = ABS(Zahl) !Liefert den Absolutbetrag von Zahl (Betragsfunktion!)

erg = ABS(-10.5) !erg = 10.5

SGN

Format: erg = SGN(x) !Liefert das Vorzeichen des Ausdruckes x (Signumfunktion)

erg = SGN(5-10) !erg = -1 da x<0; liefert 0 bei x=0 und 1 falls x > 0

MAX

Format: v = MAX ( x, y [ , z ... ] )

Zweck: Übergibt den Maximalwert der angegebenen Variablen

Beispiel:

DIMBr(4)

Br(01)= 120:Br(02) = 140: Br(03)= 112: Br(04) = 170

m = MAX(Br(1), Br(2), Br(3), Br(4))

s = "Der höchste Wert ist "+ STR$(m) !s="Der höchste Wert ist 140"

MIN

Format: v = MIN( x, y [ , z ... ] )

Zweck: Übergibt den Minimalwert der angegebenen Variablen.

Beispiel:

Breite = 1400: Hoehe = 2800

myMin = MIN(Breite,Hoehe) !myMin = 1400

SQR

Format: erg = SQR(Zahl) !Quadrat des Wertes

erg = SQR(8) !8² = 8*8 = 64

SQRT

Format: erg = SQRT(Zahl) !Quadratwurzel berechnen

erg = (64) ^(1/3) !Dritte Wurzel -> liefert 4

^

Format: erg = (16) ^ 2 ! = 256, Hochoperator -> bitte Basis immer in Klammer setzen

EXP

Format: erg = EXP( x )!Errechnet die Exponentialfunktion von x, wenn x=1 -> exp(x) = E

LN

Format:erg = LN(Zahl) !liefert den Logarithmus naturalis von zahl

LOG

Format:erg = LOG (Zahl) !liefert den Logarithmus zur Basis 10

PI

Die Kreiszahl PI = 3,14159…

E

Die Eulersche Zahl E = 2,71828…

INT

Format:erg = INT (2.7) !Liefert den ganzzahligen Wert -> hier die 2

ROUND

Format:erg = ROUND (2.7 [,n]) !Rundet kaufmännisch auf, in diesem Fall 3 !n steht für die Anzahl der Nachkommstellen

MOD

Format:erg = 14 MOD 5 !Eruiere ganzzahligen Rest -> hier 4!

Winkelfunktionen

Alle Winkelfunktionen benötigen im Argument den Winkel in Radianten

SIN

Format:erg = SIN (n) !message sin(90 * PI / 180) liefert 1

COS

Format: erg = COS (n)

TAN

Format:erg = TAN (n)

ASIN

Format: winkelInRad = ASIN (n) !Arcus Sinus

ACOS

Format:winkelInRad = ACOS (n) !Arcus Cosinus

ATN

Format:winkelInRad = ATN (n) !Arcus Tangens

2D-Gradfunktionen

SPLIT

Format: StreckenzugListe = SPLIT(Profil, Gerade)

Zweck: Ein Profil kann z.b. in zwei Teile geschnitten werden. Die Variable Gerade spezifiziert die Strecke, wie z.b. gerade = SEGMENT([100,0],[100,100]).

Kann das Profil geteilt werden so enthält StreckenzugListe zwei Teile die wiederum vom Typ Liste sind.

Andere Beispiele:

EXTRUDE

Format: Profil = EXTRUDE(ProfilAlt, lstAbstaende)

Profil = EXTRUDE(ProfilAlt, nAbstand)

Zweck: Ein Profil kann vergrößert bzw. verkleinert werden. Dies kann über verschiedene Abstände oder überall gleich mit einem Abstand realisiert werden.

(lstAbstaende.NUM muß gleich ProfilAlt.NUM sein!)

Beispiel:

Profil mit 4 Streckenzügen und 2 Bögen vor und nach negativem EXTRUDE!

S1 = SEGMENT(P1, P2)

S2 = SEGMENT(P2, P3)

K3 = ARCFROMSTRINGH(P3,P4,100)

lstP={S1,S2,K3,S4,K5,S6}

lstA={-10,-5,-5,-5,-5,-5}

lstN=EXTRUDE(lstP, lstA}

DISTANCE

Format: Vd = DISTANCE(V, AB)

Zweck: Ermittelt den geringsten Abstand zwischen einem Punkt und einer Geraden.

Beispiel:

A = [3,0]

B = [7,4]

AB = SEGMENT(A,B)

P = POINT(3,4)

d = DISTANCE(P, AB) !von P aus mit [-2,2] auf AB

P_AB = SEGMENT(P, P+d) !Vektoraddition

MESSAGE P_AB.MOD !Wurzel aus 8 = 2.828...

INTERSECTION

Format: lstPunkte = INTERSECTION(gerade1/bogen, gerade2/bogen)

lstPunkte = INTERSECTION(gerade1/bogen, gerade2/bogen, UNRESTRICTED)

Zweck: Ermittelt die Schnittpunkte zwischen einer/einem Geraden/Kreisbogen und einer/einem anderen Geraden/Kreisbogen.

Das Ergebnis kann eine leere Liste sein, oder Liste mit einem oder zwei Schnittpunkten (Kreisbogen mit Gerade).

Die Option UNRESTRICTED verlängert beide Geraden ins Unendliche – somit wird garantiert wenn die Geraden nicht parallel sind, das immer ein Schnittpunkt gefunden wird.

Beispiel:

g1 = SEGMENT([0,0],[1,1])

g2 = SEGMENT([1,0],[0,1])

lstP = INTERSECTION(g1, g2) !lstP = {[0.5,0.5]}

ADJUST

Format: ErgPolyline = ADJUST( Liste )

Zweck: Die Funktion ADJUST erstellt eine Polyline aus einer Liste geometrischer Objekte.

Bemerkungen: ErgPolyline ist eine Polyline, die von ADJUST erstellt wird.

Liste ist eine Liste geometrischer Objekte, zB: Strecken und Kreisbögen, die keinen geschlossenen Verlauf bilden.

Falls Liste bereits eine Polyline ist, passiert nichts weiter: Die Polyline wird unverändert in ErgPolyline zurückgegeben.

Beispiel:

S1 = SEGMENT([1,2],[6,2]) ! 1. OBJEKT: STRECKE

S2 = SEGMENT([7,2],[8.5,9.5]) ! 2. OBJEKT: STRECKE

K3 = ARC([6,7],[8,7],PI/3) ! 3. OBJEKT: KREISBOGEN

S4 = SEGMENT([6,9],[4,9]) ! 4. OBJEKT: STRECKE

S5 = ARC([4,7],[4,9],PI) ! 5. OBJEKT: KREISBOGEN

S6 = SEGMENT([2,7],[3,2]) ! 6. OBJEKT: STRECKE

LST = {S1, S2, K3, S4, K5, S6} ! LISTE IST NICHT ZUSAMMENHÄNGEND

PL = ADJUST(LST) ! VERBINDEN DER LISTE

INSIDE

Format: bRet = INSIDE(Punkt, lstProfil)

Zweck: Die Funktion INSIDE prüft, ob ein Punkt innerhalb oder außerhalb von lstProfil liegt

Bemerkungen: bRet hat den Wert 1 wenn der Punkt innerhalb oder auf der Polyline lstProfil liegt, sonst 0!

Punkt vom Typ VECTOR wird überprüft.

lstProfil ist eine geschlossene Polyline (beliebige Strecken und Kreisbögen).

Beispiel:

!Polyline zusammenstellen

S1 = SEGMENT([2,1], [13.5,0.5])

K2 = ARC([13.5,5.5], [13.5,0.5], -PI/2)

K3 = ARC([10,2.5], [8.5,5.5], PI/2)

K4 = ARC([9.5,3.5], [7,1], -PI/2)

K5 = ARC([7,3], [7,6], PI/2)

K6 = ARC([2,3], [4,3], -PI/2)

!Sicherstellen, daß die Polyline geschlossen ist

PL = ADJUST ({S1, K2, K3, K4, K5, K6})

!Einige beliebige Punkte definieren

V1 = [5,2]: V2 = [11,5] :V3 = [8,5]

!SP wird als Schnittpunkt erzeugt

V4 = [5.97,3.5]

S2 = SEGMENT([3,4],[5,4])

SP = INTERSECT(S2, K5) !SP ist eine Liste

!Die einzelnen Punkte prüfen

Erg1 = INSIDE(V1, PL) !V1 liegt innerhalb, Erg1 = 1

Erg2 = INSIDE(V2, PL) !V2 liegt außerhalb, Erg1 = 0

Erg3 = INSIDE(V3, PL) !V3 liegt innerhalb, Erg1 = 1

!SP[1] liegt genau auf PL, Erg1 = 1

Erg4 = INSIDE(SP[1], PL) !Wert von SP[1]= [4.17157, 4]

!Ein Punkt ganz knapp neben SP[1] liegt außerhalb, Erg1 = 0

Erg5 = INSIDE([4.17157, 4.0001], PL)

ROTATE

Format: ergObj = ROTATE(obj, drehwinkel)

Zweck: Dreht ein Objekt um einen bestimmten Winkel. Das Zentrum ist [0,0]

Bemerkungen: obj kann ein Objekt vom Typ VECTOR, SEGMENT, ARC oder Polyline (Profil) sein drehwinkel ist ein Winkel im Bogenmaß.

Bei einem DrehWinkel von 2 * PI (360 °) wird das Objekt ergObj wieder auf das Objekt obj abgebildet

Beispiel:

A = [3,1]

B = [2,5]

AB = SEGMENT(A, B)

AB2 = ROTATE(AB, PI/2) !AB2 hat die Punkte [-1,3] und [-5,2]

!tan alpha = H / B

p1 = [3,4] : p2 = [4, 3]

p3 = ROTATE(p1, -(ATN(4/3)-ATN(3/4)))

SCALE

Format: erg = SCALE(obj, faktor)

Zweck: Skaliert einen Vektor oder einen Streckenzug um einen Faktor

Beispiel:

seg1 = SEGMENT([0,0],[3,4]) !seg1.mod = 5

seg2 = SCALE(seg1, 2) !seg2.mod = 10


War dieser Artikel hilfreich?