Zum Inhalt springen

Benutzer:Rho/Basic

Aus Wikibooks

Zurück zu Benutzer:Rho

Basic in Wikibooks

[Bearbeiten]

Kleine Programmbeispiele

[Bearbeiten]

Dies und Das

[Bearbeiten]

Ascii Zeichen

[Bearbeiten]

Druckbare Ascii Zeichen

10 For a = 40 to 140 
20 print chr(a)
30 next a

Was heißt  ascii ? Was heißt der Befehl chr ?

Alle Zeichen zwischen 30 und 126

[Bearbeiten]
rem ascii Zeichen
FOR c = 32 TO 126
   PRINT c
   PRINT " ": print CHR(c):PRINT " ";
NEXT c
[Bearbeiten]

Der Printbefehl dient zu Ausgabe von Text und Zahlen auf dem Bildschirm. Ein Doppelpunkt hinter dem Printbefehl erzeugt eine neue Zeile. Ein Semikolon hinter dem Printbefehl gibt an, daß die Einfügemarke direkt hinter dem letzten gedruckten Zeichen positioniert wird. Ein Komma gibt an, daß die Einfügemarke am Anfang des nächsten Druckbereichs positioniert wird.

rem Der Printbefehl dient zu Ausgabe von Text und Zahlen auf dem Bildschirm
Print "Was auf den Bildschirm kommt, steht hinter dem Printbefehl in Anführungszeichen"
Print Spc(5); "Druck mit 5 Leerzeichen davor."
Print Tab(4); "Druck mit Tab = 4"
Print , "Komma", "Komma", "Komma", "Komma = 14 Spalten"
Print ; "Semikolon"; " Semikolon = sofort anschließen ohne Zwischenraum"
Print "Doppelpunkt" & Chr(13) & "Wagenrücklauf":Print "Nächste Zeile"

Mathematik

[Bearbeiten]

Vorzeichen beim Malnehmen und Teilen

[Bearbeiten]
5 REM VORZEICHEN BEIM MALNEHMEN UND TEILEN
10 PRINT "+*+=+
20 PRINT "+*-=-"
30 PRINT "-*+=-"
40 PRINT "-*-=+"
50 PRINT "+/+=+"
60 PRINT "+/-=-"
70 PRINT "-/+=-"
80 PRINT "-/-=+"
+*+ = +
+*- = -
-*+ = -
-*- = +
+/+ = +
+/- = -
-/+ = -
-/- = +

Int Integer Befehl

[Bearbeiten]

Der Int Befehl gibt den ganzzahligen Anteil einer Zahl zurück. Vorsicht: Der Befehl hat seine Tücken, vor allem im negativen Bereich.

Probieren Sie dazu folgendes Programm:

10 FOR X = -10 TO 0 STEP 0.1
20 PRINT " x = ";X;" int(X) = ";INT(X)
30 NEXT

Die übliche Definition ist also nicht korrekt. Richtiger sollte man sagen:

Die Funktion INT(x) liefert die nächstkleinere Ganzzahl von x.

Modulo Rest einer Division

[Bearbeiten]

Modulo (mod)

Modulo (mod) ist eine mathematische Funktion, die den Rest aus einer Division zweier ganzer Zahlen berechnet.

Beispiel: 10 mod 3 = 1 (sprich: „zehn modulo drei ist gleich eins“) Denn 10 : 3 = 3, Rest 1 (3 x 3 + 1 = 10)

Den Mod Befehl gibt es in c 64 Basic nicht. Man kann ihn folgendermaßen nachbilden

10 Z=11: N=2: rem beispielwerte z/n
20 REM MOD(Z,N)
30 PRINT INT(Z)-INT(INT(Z)/INT(N))*INT(N)

Gerade oder ungerade Zahl Zum Testen dieser Frage für eine beliebigen Zahl kann man in C64 Basic folgendes Programm nutzen.

5 CLS
7 PRINT ""
10 INPUT "Gib eine Zahl ein!";X
15 PRINT X,2,INT(X)-INT(INT(X)/INT(2))*INT(2)
20 IF INT(X)-INT(INT(X)/INT(2))*INT(2)= 0 THEN PRINT X;" ist eine gerade Zahl"
30 IF INT(X)-INT(INT(X)/INT(2))*INT(2)> 0 THEN PRINT X;" ist eine ungerade Zahl"
40 END

Der Modus Ersatz in C64 Basic wird in der folgenden Schleife erläutert.

10 FOR Z = 100 TO 1 STEP - 1
  12 FOR N = Z TO 1 STEP - 1
      20 A = INT(Z/N)
      25 REM B = MOD(Z,N)
      28 B = INT(Z)-INT(INT(Z)/INT(N))*INT(N)
      30 PRINT Z "DURCH " N " IST " A " MIT REST" B
   40 NEXT N
50 NEXT Z

Da der c 64 keinen Modulobefehl kennt, muß er nachgemacht werden . Siehe oben

10 INPUT Z
20 QU= QU + INT(Z)-INT(INT(Z)/INT(10))*INT(10)
25 rem qu = qu + z Mod 10 
30 Z = Z / 10 
40 IF Z <> 0 THEN GOTO 20
50 PRINT QU

In X11 Basic für Android schaut das so aus:

cls
INPUT z
qu = 0
REPEAT 
qu = qu + (z Mod 10) 
z = int(z/10)
UNTIL z < 1
PRINT QU

Statt der Goto Schleife wird in X11 der Befehl REPEAT UNTIL verwendet. Die Klammer um den Ausdruck z Mod 10 ist wichtig, weil sonst der Rest von q + z berechnet wird. Das Pluszeichen steht in der mathematischen Befehlshierarchie höher als der Modulobefehl.

Der Zufallsgenerator

[Bearbeiten]

zufall.bas

  • kleines Programm zur Erklärung der Random Funktion RND()
10 X=RND(-TI)             : REM STARTWERT SETZEN
20 PRINT INT(RND(1)*100)  : REM WIEDERGABE VON GANZEN ZUFALLSZAHLEN VON 0 BIS 99
30 PRINT INT(RND(1)*6)+1 
35 REM ZUFALLSZAHLEN VON 1 BIS 6 WIE EIN WUERFEL
40 PRINT INT(RND(1)*49)+1
45 REM ZUFALLSZAHLEN VON 1 BIS 49 (LOTTOSIMULATIONEN)
50 PRINT RND(0)*101+100    
55 REM WIEDERGABE VON ZUFAELLIGEN GLEITPUNKTZAHLEN VON 100 BIS 201

Die Quadratwurzel SQR()

[Bearbeiten]

Für die Quadratwurzel gibt es eine feste Funktion SQR() entsprechend z = x^(1/2). Probieren Sie dazu folgendes Programm

10 for x = 1 to 100 
20 y = sqr(x)
30 print x,y
40 next

Wurzelziehen

[Bearbeiten]

Man kann beliebige Wurzel in Basic mit z = x^(1/y) programmieren . Das folgende Basic Programm ist ein X11 Basic Programm fuer Androidsysteme.

rem Wurzelziehen
for x = 1 to 10
 for y = 1 to 10
     z = x^(1/y)
     print x,y,z
  next y
next x

Schön wäre es, wenn die Ausgabe der langen Zahlenreihen in eine Datei laufen würde. Das geht dann in X11 Basic so

rem Wurzelziehen
OPEN "O",#1,"data.txt"
print #1, "Dies ist eine Liste von Wurzeln x^(1/y)"
for x = 1 to 10
for y = 1 to 10
z = x^(1/y)
print #1, x,"  ",y,"  ",z
next y
next x
close #1
F!  = 1*2*3*4*5* ......*F

Die Fakultät einer natürlichen Zahl wird berechnet.

10 INPUT F
12 S = 1
20 FOR N = 1 TO F
30 S = S*N
50 NEXT 
60 PRINT "die Fakultaet von ";F;" = ";S


Die ganze Reihe aller Fakultäten von 1 bis 100 wird berechnet.

F = 1
For k = 1 To 100
F = F * k
Print "Die Fakultät von "; k; " = ", F
Next k

Fibonacci Zahlenfolge

[Bearbeiten]
Fibonaccizahlen in binärer Darstellung

Siehe  Fibonacci-Folge

5 REM FIBONACCI 
10 A = 1
20 B = 1
30 FOR X = 1 TO 20
40 PRINT A
50 PRINT B
60 A = A + B
70 B = A + B
80 NEXT 

Gibt es ein Programm mit nur einer Variablen A ?

10 PHI = (1 + 5^0.5) / 2
20 FOR N = 1 TO 20
30 FIB = INT(((PHI^N - (1-PHI)^N) / 5^0.5)+0.5)
40 PRINT N,FIB
50 NEXT

Wegen Rundungsfehlern ist die Folge nicht ganz korrekt.

Eine Variante mit einem Array

10 REM FIBONACCI FOLGE
20 CLS
30 REM DER ARRAY F WIRD MIT DEN FIBONACCI ZAHLEN GEFUELLT
40 DIM F(50) 
50 F(0) = 0
60 F(1) = 1
70 N = 1
80 LET F(N+1) = F(N) + F(N-1)
90 LET N = N + 1
100 PRINT F(N);", ";
110 REM STOP NACH 50 ZAHLEN
120 IF N < 50 THEN GOTO 80

Zahlenfolge der Pentagonalzahlen

[Bearbeiten]
grafische Darstellung der Pentagonalzahlen

Siehe  Pentagonalzahl, sie werden auch Fünfeckzahlen genannt. Warum das so ist, zeigt die Grafik.

Pentagonalzahlen werden mit der folgenden Formel erzeugt:

Pn=n(3n−1)/2

Die ersten zehn Pentagonalzahlen sind :
1, 5, 12, 22, 35, 51, 70, 92, 117, 145, ...
Ein Listing in C64 Basic schaut so aus:

10 Rem Folge der Fuenfeckzahlen bis 20
20 FOR N = 1 TO 20
30 P = N * (3 * N - 1) / 2
40 PRINT N,P
50 NEXT

Runden

[Bearbeiten]

Es wird eine mathematische Funktion ausgewählt, die Fließkommazahlen liefert: y = log(x) d.h. die Logarithmusfunktion zur Basis e.

Das errechnete Ergebnis wird auf 2 Stellen gerundet mit Z = INT(Y* 100 + 0.5)/100

Was hat die 0.5 in dieser Fomel zu bedeuten ? Vergleichen Sie die Programme, wenn Sie auf 0,5 verzichten zb

Z = (Int(Y * 100)) / 100


5 REM RUNDEN AUF 2 STELLEN
10 FOR X = 1 TO 16
20 Y = LOG(X)
29 Z = INT(Y* 100 + 0.5)/100
30 PRINT " variable ";X
32 PRINT " log ";Y
33 PRINT " gerundet auf 2 Stellen ";Z
40 NEXT 


Weiteres Beispiel dazu : Statt der Logarihmusfunktion nehmen wird die Wurzelfunktion und runden auf 3 Stellen hinter dem Komma.

5 REM RUNDEN AUF 3 STELLEN
10 FOR X = 1 TO 100
20 Y = SQR(X)
29 Z = INT(Y* 1000 + 0.5)/1000
30 PRINT " variable ";X,
32 PRINT " sqr ";Y,
33 PRINT " gerundet auf 3 Stellen ";Z
40 NEXT

Runden auf ganze Zahlen vor dem Komma Y ist eine beliebige Gleitkommazahl. R ist die Zahl gerundet auf null Stellen hinter dem Komma

R = INT(Y + 0.5),  
  falsch ist R = INT(Y)

Beispielprogramm

5 REM RUNDEN AUF GANZE ZAHLEN
10 FOR X = 1 TO 16
20 Y = SQR(X)
29 R = INT(Y + 0.5)
30 PRINT "x = ";X;"   ";
32 PRINT "Wurzel aus x = ";Y,
33 PRINT " gerundet ";R
40 NEXT 

Wie würde man eine Zahl 1234 auf Hunderter Stellen runden, so daß gerundet 1200 herauskommt ?

Lernprogramm Größer und kleiner

[Bearbeiten]

< und > lernen

10 CLS 
15 R=0:F=0
20 FOR X = 1 TO 10
30 A = INT(RND(1) * 10): PRINT A,
40 B = INT(RND(1) * 10): PRINT B
50 INPUT D$
60 IF D$ = "<" THEN D = ASC(D$): REM PRINT D
70 IF D$ = "=" THEN D = ASC(D$): REM PRINT D
80 IF D$ = ">" THEN D = ASC(D$): REM PRINT D
110 IF A > B THEN C = 62
120 IF A < B THEN C = 60
130 IF A = B THEN C = 61
140 IF D = C THEN R=R+1:PRINT "Richtig";:PRINT A;:PRINT D$;:PRINT B
150 IF D <> C THEN F=F+1:PRINT "Falsch !! Richtig waere gewesen ";:PRINT CHR$(C)
155 PRINT "Zahl der Aufgaben";X; " Davon richtig:  ";R;" Davon falsch: ";F
160 NEXT

Berechnung der  Kreiszahl pi

[Bearbeiten]

Am schnellsten geht es mit

Pi = 4*Atn(1)

Ein iteratives Verfahren zeigt folgendes Programm für die Formel


5 X = 0
10 FOR N = 0 TO 2000
25 X = X + (-1)^N/(2*N+1)
27 PRINT X;
28 PRINT 4 * X
30 NEXT

pi-Bestimmung durch N-Ecke 6,12,24 etc n Ecken u Umfang

n = 6
u = 3
PRINT n, u
for x = 1 to 30
 u = 2 * u / SQR(2 + 2 * SQR(1 - (u / n) ^ 2))
 n = 2 * n
 PRINT n, u
next x
END

 Eulersche Zahl e = 2,718281828459....

[Bearbeiten]

Am schnellsten kann man e mit dem Befehl exp darstellen.

10 print exp(1) 

Exp oder EXP ist die Abkürzung für  Exponentialfunktion.

Iterativ mit einer Variablen funktioniert folgendes Programm

10 REM BERECHNUNG VON E MIT EINER VARIABLEN
15 FOR N = 1 TO 1000
20 E = (1+1/N)^N
30 PRINT E
40 NEXT 

Etwas länger ist das folgende iterative Programm

10 E = 1
15 F = 1
20 FOR K = 1 TO 15:
30 F = F * K:
40 E = E + 1/F:
50 PRINT E:
60 NEXT

Die Zahl e ist das Ergebnis eines Grenzüberganges. Die beiden bekanntesten Darstellungen dieser transzendenten Zahl lauten:

1. e = lim (1+1/n)^n (n strebt gegen positiv unendlich)

2. e = 1 + 1/1 + 1/(1*2) + 1/(1*2*3) + 1/(1*2*3*4) +.....

Die 2.Formel kann man mit dem Zeichen für die Fakultätsberechnung , dem Ausrufezeichen !, auch anders schreiben:

e = 1 + 1 / 1! + 1 / 2! + 1/ 3! + 1/ 4! + ...... + 1/ n!

Diese mathematische Reihe kann man sehr einfach in ein Basicprogramm umsetzen :

Folgender allgemeiner Code wird dazu gebraucht:

E = 1 : F = 1
For K = 1 to 10
    F = F*K
    E = E + 1/F
     Print E
Next K

Wenn man die Schleife K ein paarmal durchlaufen läßt, wird der Wert E = e immer genauer. Am Anfang hat man E gleich 1 gesetzt.

F ist die Fakultätsvariable ! , Je größer der Wert von K wird desto größer wird die Fakultät. Auch sie setzt man am Anfang gleich 1.

Potenzieren

[Bearbeiten]

Potenzieren heißt hochnehmen. 2 hoch 2 heißt in mathematischer Sprache

2^2 

Das Ergebnis lautet

2^2  = 2 * 2 = 4

Ein weiteres Beispiel

2^3 = 2 * 2 * 2 = 8 

Mit dem folgenden Basicprogramm können Sie die Rechengenauigkeit des Basicinterpreters beim Potenzieren überprüfen:

PRINT 4^3
PRINT 3^4
PRINT 4^1/2
PRINT 4^(1/2)
PRINT 8^0.333
PRINT 8^(1/3)
PRINT 8^1/3
PRINT 2^(-2)
PRINT 1/2^2

Als Ergebnis sollten Sie Folgendes erhalten:

64
81
2
2
1,998614185981
2
2,666666666667
0,25
0,25

Expotentialfunktion

[Bearbeiten]
Exponentialfunktion

Das folgende Programm zeigt die Exponentialfunktion zur Basis e und den Befehl EXP()

10 REM EXPONENTIAL e^x e hoch x
20 FOR X = 0 TO 20
30 PRINT "e^";x;" = ";EXP(X)
40 NEXT

Primzahlen

[Bearbeiten]

Basicprogramm in X11 Basic zur Berechnung der Primzahlen

 rem primzahlen
for x = 1 to 100
a = nextprime(x)
b = nextprime(x+1)
if a = b 
 print "";
else 
 print a
endif
next x

Das folgende Programm errechnet alle Primzahlen bis 10000 und wandelt sie in binaere Zahlen um. Ausgabe des Ergebnis in eine Textdatei.

rem primzahlen binaer
OPEN "O",#1,"binaerprime.txt"
for x = 1 to 10000
a = nextprime(x)
b = nextprime(x+1)
if a = b 
 print "";
else 
 print #1, a,"  ",Bin$(a)
endif
next x
close #1

Logarithmen

[Bearbeiten]

Zitat von Laplace Die Logarithmen haben das Leben der Astronomen verdoppelt, weil sie deren Arbeit halbiert haben. Siehe https://web.archive.org/web/20170803084331/http://www.madeasy.de/2/prglog.htm

Natürlicher Logarithmus zur Basis e

10 FOR X = 1 TO 100
20 Y = LOG(X):
30 PRINT X,:PRINT Y
40 NEXT 

Logarithmus zur Basis 2

50 INPUT "Geben Sie eine Zahl zwischen 0 und 10000 ein"; Z
55 Z2 = 1.44265 * LOG(Z)
57 Z2 = INT(Z2* 100 + 0.5)/100: REM RUNDEN AUF 2 STELLEN
60 PRINT " der Logarithmus zur Basis 2 der Zahl ";Z;" ist :";Z2

Logarithmus zu einer beliebigen Basis

50 INPUT "Geben Sie eine Zahl zwischen 0 und 10000 ein"; Z
52 INPUT "Geben Sie die Basis des Logarithmus ein zb 10 "; B
55 Z2 = LOG(Z)/LOG(B)
56 REM LOGB(Z) = LOG(Z) / LOG(B)
57 Z2 = INT(Z2* 100 + 0.5)/100: REM RUNDEN AUF 2 STELLEN
 60 PRINT "Der Logarithmus zur Basis ";B;" der Zahl ";Z;" ist :";Z2

Umwandlung Dezimalzahl in Binärzahl

[Bearbeiten]
10 CLS
20 INPUT DEZ
30 IF DEZ >= 2 ^ 32 THEN PRINT "Zahl ist groesser als 32 Bit": END
40 FOR Y = 1 TO DEZ
42 Z = 2^Y
45 REM PRINT Y,Z
50 IF Z > DEZ THEN A = Y - 1: GOTO 60
55 NEXT 
60 REM PRINT A
62 FOR X = 0 TO A
70 IF (DEZ AND 2^X) THEN BIN$ = "1" + BIN$
80 IF (DEZ AND 2^X) = FALSE THEN BIN$ = "0" + BIN$
120 NEXT
140 PRINT BIN$

Sehr gut funktioniert die Umrechnung auch mit MOD

  • Teile die Dezimalzahl mit Rest durch 2.
  • Der Divisionsrest ist die nächste Binärziffer (von rechts nach links).
  • Falls der ganzzahlige Quotient = 0 ist,
    • ist die Rechnung fertig und das Programm wird beendet
    • andernfalls nimm man den ganzzahligen Quotienten als neue Dezimalzahl
    • und wiederholt die Prozedur von vorne .

Beispiel : Dezimalzahl 1234

1234 : 2 =  617  Rest: 0
  617 : 2 =  308  Rest: 1
  308 : 2 =  154  Rest: 0
  154 : 2 =   77  Rest: 0
    77 : 2 =   38  Rest: 1
    38 : 2 =   19  Rest: 0
    19 : 2 =    9  Rest: 1
      9 : 2 =    4  Rest: 1
      4 : 2 =    2  Rest: 0
      2 : 2 =    1  Rest: 0
      1 : 2 =    0  Rest: 1

Resultat Binärzahl 10011010010

Der Goldene Schnitt

[Bearbeiten]
Konstruktion des Fünfecks mit dem Goldenen Schnitt

M / m = M + m / M

M / m ist der  Goldene Schnitt. Er hat einige besondere Eigenschaften und findet sich beispielsweise im gleichseitigen  Fünfeck.

Andere Darstellung a/ b = a + b / a = GS

GS = ( 1 + SQR(5))/2       

SQR ist die Abkürzung in Basic für Wurzel aus oder Squareroot

Dazu ein Programm in C 64 Basic

10 REM GOLDENER SCHNITT
20 GS = ( 1 + SQR(5)) /2
30 PRINT GS
40 INPUT A
50 B = A/(1+SQR(5))*2
60 PRINT B

Der Vierfeldertest

[Bearbeiten]
Vierfeldertafel

Der Vierfeldertest ist ein relativ einfaches aber sehr wirkungsvolles statistisches Testverfahren.

Er dient dazu die Häufigkeit eines Merkmals in zwei statistisch unabhängigen Gruppen zu vergleichen.

Ist die Gesamtzahl der Merkmalsträger N<30 oder einer der Erwartungswerte kleiner als 5 dann wird der exakte Fisher-Test durchgeführt. Ansonsten wird ein Chi-Quadrat-Test durchgeführt.

Beispiel: Man befragt 50 Frauen ( GRUPPE 1) ob sie rauchen oder nicht. Dasselbe macht man mit 50 Männern ( GRUPPE 2). Man erhält das Ergebnis :

   FRAUEN : 25 Raucher 25 Nichtraucher
   MÄNNER : 30 Raucher 20 Nichtraucher

Führt man mit diesen Werten einen Vierfeldertest durch bei einer Irrtumswahrscheinlichkeit von p = 0.05 dann ergeben sich folgende Werte:

Erwartungswert E1 = 27.5 Erwartungswert E2 = 27.5 Erwartungswert E3 = 22.5 Erwartungswert E4 = 22.5 Probe 100- 100= 0=0? CHI-QUADRAT= 1.01010101010101 D.h. Es besteht bei P=0.05 kein signifikanter Unterschied .

Beispiel 2

   Frauen: 250 Nichtraucher 250 Raucher
   Männer: 300 Nichtraucher 200 Raucher

Erwartungswert E1 = 275 Erwartungswert E2 = 275 Erwartungswert E3 = 225 Erwartungswert E4 = 225 Probe 1000- 1000= 0=0? CHI-QUADRAT= 10.1010101010101

Hier besteht bei P=0.05 ein signifikanter Unterschied .

rem 4 Felder Test , 4feld.bas
    input N1 
    input N2 
    input M1 
    input M2 
Rem ERWARTUNGSWERT EN1
 R1 = N1 + M1
    NN = N1 + N2
    N = N1 + N2 + M1 + M2
    E1 = R1 * NN / N 
print "Erwartungswert E1 =";E1
Rem ERWARTUNGSWERT EN2
    MM = M1 + M2
    E2 = R1 * MM / N 
print "Erwartungswert E2 =";E2
Rem ERWARTUNGSWERT EN3
    R2 = N2 + M2
    E3 = R2 * NN / N 
print "Erwartungswert E3 =";E3
Rem ERWARTUNGSWERT EN4
    E4 = R2 * MM / N 
print "Erwartungswert E4 =";E4
Rem PROBE=0?
    S = E1 + E2 + E3 + E4
    P = S - N 
print "Probe ";S;"-";N;"=";P;"=0?"
Rem CHI^2
    D1 = (N1 - E1) ^ 2
    C1 = D1 / E1
    D2 = (M1 - E2) ^ 2
    C2 = D2 / E2
    D3 = (N2 - E3) ^ 2
    C3 = D3 / E3
    D4 = (M2 - E4) ^ 2
    C4 = D4 / E4
    C = C1 + C2 + C3 + C4 
print "CHI-QUADRAT=";C
If (C - 3.841) > 0 
   print "Bei P=0.05 besteht ein signifikanter Unterschied"
   else
    print "Bei P=0.05 besteht kein signifikanter Unterschied " 
endif
 rem Groesster gemeinsamer Teiler zweier ganzer Zahlen a, b
 print "Dieses Programm berechnet den groessten gemeinsamen Teiler zweier Zahlen."
 input a
 input b
 rem absolute Beträge bilden, weil ggT auch für negative Zahlen definiert ist
 rem ggT(a, b) = ggT(|a|, |b|) 
 a = Abs(a)
 b = Abs(b)
 While (a > 0) And (b > 0) 
 rem Weiter, solange a·b > 0
 rem Berechnung für den allgemeinen Fall a·b <> 0
        If a > b 
          rem Der größere Wert wird überschrieben
            a = a Mod b
        Else
            b = b Mod a
        Endif
 Wend
 ggT = a + b 
 print ggT

Wie kann man Programmieren lernen ?

[Bearbeiten]

Programmieren lernen schult das logische Denken und läßt einen Zusammenhänge besser verstehen. Es gibt sehr gute Lernprogramme für Programmiersprachen und online Tutorials im Netz. Am besten gefallen haben mir die einfachen online Programmierübungen bei

Welche Programmiersprache soll man wählen ?

[Bearbeiten]

Man soll die wählen, die man am schnellsten lernt und am häufigsten braucht. Für mich war Basic am simpelsten, da es auf allen alten Computern schon eingebaut war. Der grosse Vorteil der alten Basicdialekte wie Basic 64, Quickbasic etc ist die sehr schlanke Programmierumgebung. Ma kann auch auf einem Tablett schnell einmal eine mathematische Formel programmieren, um sie besser zu verstehen. Entscheidend verbessert wurden diese simplen Basicdialekte durch

  • die Verfügbarkeit von Grafikbefehlen
  • die Einbindung von Datenbanken in ein Basicprogramm
  • grafische Programmierumgebungen wie VB oder Gambas.

Leider gab es ein Problem mit der Standardisierung von Basic, so das Basic von C und anderen Sprachen überholt wurde.

Entscheidend verbessert hat sich die Basic Programmierung mit der Einführung von  IDEs (Integrierte Entwicklungsumgebung) wie zb Visual Basic oder Gambas. Das war ein echte Erleichterung und ein Meilenstein. Auch Android Apps kann man heute sehr schön visuell programmieren.

Online Programmieren

[Bearbeiten]

Ein weiterer Schritt vorwärts ist das online Programmieren. Allerdings ist die reale praktische Umsetzung manchmal noch holperig.

  • http://www.quitebasic.com
    • Etwas gewöhnungsbedürftig, aber funktioniert.
  • Gambas Programmierumgebung online im Internet
    • funktioniert ganz gut
  • codepad.org
    • Kein Basic
  • ideone.com
    • ideone hat leider kein Basic,
    • aber beispielsweise den programmierbaren Taschenrechner bc  Basic Calculator von Linux
  • compileonline.com
    • online compiler mit mehr als 50 Programmiersprachen, darunter auch Basic in mehreren Varianten.
      • Yabasic v2.768
      • freebasic
      • scriptbasic
        • m.E. derzeit kein effektives Arbeiten damit möglich.
  • onlinecompiler.net
    • languages i.e. c, c++, fortran, java, pascal and basic.
      • basiccompiler von {w|freebasic}
        • m.E. derzeit kein effektives Arbeiten damit möglich.
Apps auf dem Smartphone

Eine  App programmieren

[Bearbeiten]

Apps sind Programme für Smartphones oder Tabletts. Meistens braucht man heute noch einen PC um eine App zu programmieren. Es geht nur schwer, eine lauffähige App direkt auf dem Smartphone zu programmieren. - Will man eine App für Android programmieren kann man folgende Wege nutzen:

  •  Html + CSS +  Javascript
    • Man schreibt eine Internetseite mit HTML und ausführbarem Javscriptprogramm.
      • Das ist der schnellste und einfachste Weg
  •  Android Entwicklungsumgebung von Google
    • Die ganze Programmierumgebung lädt man sich auf seinen Rechner und startet mit der Programmierung
    • Ausprobieren kann man das Programm, wenn man das Smartphone mit dem Rechner verbindet.
  • Man nutzt die Programmiersprache  Kotlin

Eine App frei verfügbar machen und beispielsweise in den  Playstore hochladen:

  • Das ist wieder aufwendig, da allerlei bürokratische Bremsen und ein Bezahlsystem eingebaut sind.

Statistik der Bedeutung von Programmiersprachen.

[Bearbeiten]

Visual Basic

[Bearbeiten]

Eine geniale Programmierumgebung von Microsoft

Gambas

[Bearbeiten]

X11 Basic auf dem Samsung Tablet

[Bearbeiten]

Farben

[Bearbeiten]
  • LIGHT_RED'      => "[1;31m",        
  • LIGHT_GREEN'     => "[1;32m",      
  • YELLOW'     => "[1;33m",    
  • LIGHT_BLUE'     => "[1;34m",      
  • MAGENTA'     => "[1;35m",    
  • LIGHT_CYAN'     => "[1;36m",        
  • WHITE'     => "[1;37m",        
  • NORMAL'     => "[0m",        
  • BLACK'     => "[0;30m",        
  • RED'         => "[0;31m",        
  • GREEN'     => "[0;32m",        
  • BROWN'     => "[0;33m",        
  • BLUE'         => "[0;34m",        
  • CYAN'         => "[0;36m",        
  • BOLD'         => "[1m",        
  • UNDERSCORE'     => "[4m",        
  • REVERSE'     => "[7m", 
C64 Startbildschirm

c64 Basic auf dem Ipad

[Bearbeiten]

BASIC V2.0-Befehle des Commodore 64

ABS | AND | ASC | ATN | CHR$ | CLOSE | CLR | CMD 
CONT | COS | DATA | 
DEF | DIM | END | EXP | FN | FOR | FRE | GET | GET#
GOSUB | GOTO | IF | 
INPUT | INPUT# | INT | LEFT$ | LEN | LET | LIST 
LOAD | LOG | MID$ | NEW | 
NEXT | NOT | ON | OPEN | OR | PEEK | POKE 
POS | PRINT | PRINT# | READ | 
REM | RESTORE | RETURN | RIGHT$ | RND 
RUN | SAVE | SGN | SIN | SPC | 
SQR | STATUS/ST | STEP | STOP | STR$ | SYS | TAB 
TAN | THEN | 
TIME/TI | TIME$/TI$ | TO | USR | VAL | VERIFY | WAIT

Literatur

[Bearbeiten]
  • Kleines Buechlein mit dem man gut die Sprache lernen kann.
    • Dr. Hans-Joachim Sacht: Programmiersprache BASIC – Schritt für Schritt.
    • Humboldt-Taschenbuchverlag, München 1983 ISBN 3-581-66456-9
[Bearbeiten]

Liste der wichtigsten Basicbefehle

[Bearbeiten]

http://www.chemie.fu-berlin.de/lehre/edv/comchem1-3.html