copyright 1999 - 2014 by heinz prelle - hannover  - lenbachstraße 42 - www.visual-basic5.de | impressum
2. Einleitung:
Die im vorangegangenen Zeichenkettenfunktionen gehoeren zu den interessantesten vorgerfertigten (oder eingebauten) Funktion in BASIC, sind aber laengst nicht die einzigen Funktionen. Immerhin haben wir an ihrem Beispiel sehen koennen, wie man mit Funktionen arbeitet. BASIC bietet u.a. noch eine Reihe von Funktionen, die das Programmieren mathematischer Probleme vereinfachen, ausserdem noch Funktionen, die man unter Diverses oder Raritaeten zusammenfassen koennte. Der folgende Abschnitt behandelt sogenannte mathematische Funktionen. Der Leser der auf dem Gebiet der Mathematik wenig Ergeiz hat, kann diesen Abschnitt getrost ueberschlagen, sollte aber beim Abschnitt ABS(...), INT(...),...weiterlesen.

Mathematische Funktionen:

1. Quadratwurzel SQR(...)


Die Funktion SQR(X) berechnet die Quadratwurzel der nichtnegativen Zahl X. Beispiel:

N = SQR(7.5) PRINT N
sollte das Ergebnis 2.7836...liefern.
Kuerzer kann man auch schreiben:

PRINT SQR(7.5)
So kann man sich leicht mit folgendem Programm eine Funktionstafel fuer die Wurzeln aller Zahlen X zwischen 0 und 1 berechnen lassen, wobei die X-Werte einen Abstand von z.B. 0.01 haben:
FOR X = 0 To 1 STEP 0.01
PRINT X,SQR(X)
NEXT X

Anstelle der Funktion SQR(...) kann man natuerlich auch zum Wurzelziehen folgendes programmieren:

N = 7.5^0.5

Trigonometrische Funktionen SIN(...), COS(...),TAN(...),ATN(...)

Die BASIC - Interpreter verfuegen ueber eingebaute Funktionen fuer den Sinus, Cosinus, Tangens und Arcustangens. Sie lauten:

SIN(...)
COS(...)
TAN(...)
ATN(...)

Auf zwei wichtige Dinge soll hier hingewiesen werden:
1. Das Argument der Funktionen SIN(...), COS(...), TAN(...) wird so interpretiert, als sei es ein im Bogenmass und nicht im Gradmass angegebener Winkel. Das wird oft nicht beachte und fuehrt dann zu nichterwarteten Ergebnissen. Will man also den Sinus von 10 Grad berechenen, so muss das Gradmass erst ins Bogenmass umgewandelt werden. Das erfolgt mittels der Beziehung
Winkel im Bogenmass = Winkel im Gradmass * PI / 180
wobei PI die Kreiszahl 3.14159...ist.
Dann erhaelt man den Sinus von 10° folgendermassen:
PRINT SIN(10 * 3.14159 / 180)
Das Ergebnis ist 0.173684... Pruefen Sie es mit Ihrem Computer oder dem Taschenrechner nach (aber vergessen Sie nicht, letzteren auf DEG bzw. Grad einzustellen, wenn Sie den Winkel im Gradmass eingeben!).
Das hier Gesagte gilt natuerlich auch fuer die Winkelfunktionen COS(...) und TAN(...).
2. Benoetigt man Winkelfunktionen, die nicht als eingebaute Funktionen vorhanden sind, so kann man diese meist mit Hilfe der vorhandenen Funktionen berechenen. Den Cotangens erhaelt man z.B. ueber die Beziehung cotan(x) = 1 / tan(x). Den Cotangens von 10° erhaelt man also mit:
PRINT 1 / TAN(10 * 3.14159 / 180)
Zusammen mit den gleich zu besprechenden Funktionen EXP(...) und LOG(...) kann man noch kompliziertere Funktionen, z. B. die hyperbolischen Funktionen, vermittels passender Beziehungen berechnen.

2. Die Funktionen ABS(...), INT(...)

Die im folgenden beschriebenen Funktionen sind auch fuer den mathematisch nicht interessierten Leser wichtig. Es handelt sich um die Funktionen ABS(...), SGN(...) und INT(...).

ABS(...)
ABS steht fuer Absolutwert. Hat das Argument z. B. den Wert -3.5, so liefert
PRINT ABS(-3.5)
den Wert 3.5. Das negative Vorzeichen wird also in ein (nicht ausgegebenes) positives Vorzeichen umgewandelt.

ABS(3.5) jedoch hat keine Wirkung auf das Argument, das Ergebnis ist 3.5. Diese Funktion findet z.B. Anwendung beim Vergleich der Werte zweier Variablen. Will man pruefen, ob x oder y nur um den Wert 0.001 oder weniger voneinander abweichen, wobei unwichtig ist, ob x groesser als y ist oder kleiner, dann kann man das folgendermassen tun:
IF ABS(X - Y) weniger 0.001 THEN PRINT "ABWEICHUNG KLEINER 0.001"

Etwas schwieriger ist die Funktion INT(...) zu verstehen : INT steht fuer integer, das englische Wort fuer ganze Zahl. INT(...) liefert als Ergebnis die groesste ganze Zahl, die nicht groesser als das Argument ist. Beispiele machen das klarer:

INT(2.6)
hat den Wert 2, dann 2 ist die groesste ganze Zahl, die nicht groesser als 2.6 ist. Welchen Wert hat dann

INT(-2.6)

Nicht -2, sondern -3! Denn -3 ist die groesste ganze Zahl, die nicht groesser als das Argument ist. Das kann nur -3 sein, denn -2 ist groesser als das Argument -2.6.
Die INT - Funktion findet Anwendung beim Runden von Zahlenwerten. Ihr Computer gibt ja Zahlen immer mit allen von ihm berechneten Stellen aus. Z.B. bei PRINT SQR(2.6) koennte 1.61245155 auf dem Screen erscheinen. Meist sind diese vielen Stellen hinter dem Dezimalpunkt jedoch unerwuenscht. Mit Hilfe von INT(...) kann man sie abschneiden und einen gerundeten Wert ausgeben. Will man den Wert W beispielsweise auf 2 Stellen hinter dem Dezimalpunkt genau und gerundet ausgeben, dann kann man so vorgehen:

W = SQR(2.6)
W = INT(W * 100 + .5) / 100
PRINT W


Will man die Zahl der auszugebenden Stellen hinter dem Dezimalpunkt und das Argument von SQR(...) variabel halten, so kann man auch schreiben :

INPUT A,N
W = SQR(A)
W = INT(W * 10 ^ N + .5) / 10 ^N
PRINT W

oder kuerzer:
INPUT A,N
PRINT INT(SQR(A) * 10 ^N + .5) / 10 ^N


Was hier geschieht, verdeutlicht ein Zahlenspiel: Sei A = 2. Dann ist W = SQR(2) = 1.414214, wenn der Computer z.B. 6 Stellen hinter dem Dezimalpunkt ausgibt. Wir moechten aber nur 4 Stellen mit Rundung, geben deshalb fuer N den Wert 4 ein. Setzen wir diese Zahlen in eine bestimmte Zeile ein, so steht da:

INT(1.414214 * 10 ^ 4 + 0.5) / 10 ^ 4
also
INT(14142.14 + 0.5) / 10000
bzw.
INT(14142.64) / 10000
INT(14142.64)


ist aber 14142
14142 / 10000 ust 1,4142,
das gewuenschte Ergebnis also und richtig abgerundet.
Wuerden wir z.B SQR(3) berechenen, dann ergaebe sich:
INT(1.732051 * 10 ^4 + 0.5) / 10 ^4
oder
INT(17320.51) / 10000
somit
INT(17321.01) / 1000
oder 17321 / 10000 = 1.7321

Hier wurde also aufgerundet.

3. Die Funktion FIX(...)

Manche Computer haben eine Funktion, die die Dezimalstellen hinter dem Komma abschneidet. Aus 27.1234 wird dann 27. Diese Funktion darf man nicht mit INT(...) verwechseln.. FIX(-27.1234) liefert -27, INT(-27.1234) aber -28! Wenn Ihnen das nicht mehr klar ist dann lesen Sie die Beschreibung der INT-Funktion nochmals nach. FIX(...) liefert also die Stellen vor dem Dezimalpunkt. Die Stellen hinter dem Dezimalpunkt kann man mit

ABS(X - FIX(X))
erhalten.
PRINT ABS(X - FIX(X))
liefert z.B. sowohl bei 27.1234 als auch bei -27.1234 den Wert .1234.


4. Die Funktion SGN(...)

Mit der Funktion SGN(...) ( von engl. sign, Vorzeichen, oder lat. signum) kann man feststellen, ob der Wert einer Variablen positiv, 0 oder negativ ist. Ist er positiv, dann liefert SGN(...) den Wert 1, ist er NULL, dann liefert SGN(...) den Wert 0, und ist er negativ, dann liefert SGN(...) den Wert -1.

PRINT SGN(-5)
liefert also -1.
X = 7.5
PRINT SGN(X)

liefert 1.
 
 
 
 
 
[SQR] [SIN] [COS] [TAN] [ATN] [ABS] [INT] [FIX] [SGN]
Mathematische Funktionen
1. Funktionen: