Benutzer:Rho/Basic
Zurück zu Benutzer:Rho
Basic in Wikibooks
[Bearbeiten]Kleine Programmbeispiele
[Bearbeiten]Dies und Das
[Bearbeiten]- Stoppuhr
Ascii Zeichen
[Bearbeiten]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
Print Befehl
[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]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 ?
- Ja, wenn man den goldenen Schnitt heranzieht.
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]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]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]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]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
ggt
[Bearbeiten] 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.
IDE
[Bearbeiten]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.
- online compiler mit mehr als 50 Programmiersprachen, darunter auch Basic in mehreren Varianten.
- 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.
- basiccompiler von {w|freebasic}
- languages i.e. c, c++, fortran, java, pascal and basic.
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
- Man schreibt eine Internetseite mit HTML und ausführbarem Javscriptprogramm.
- 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
- https://web.archive.org/web/20180120055125/http://www.madeasy.de/2/prgmini.htm
- Visual_Basic
- https://www.vb-paradise.de/
- Forum für vb Fragen
Gambas
[Bearbeiten]- Eine geniale Programmierumgebung fuer Linux
- Gambas_(Programmiersprache)
X11 Basic auf dem Samsung Tablet
[Bearbeiten]- Eine seit Jahren bestehende und gut gepflegte Basic Umsetzung fuer Windows, Linux und Android Rechner
- http://x11-basic.sourceforge.net/
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 Basic auf dem Ipad
[Bearbeiten]- Eine Basic Programmierumgebung wie auf dem alten C 64
- Siehe https://sites.google.com/site/hawwashsoft/hbasic
- Siehe http://www.c64-wiki.com/index.php/C64-Commands
- siehe http://www.homecomputermuseum.de/doku/man18_de.htm
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
Links
[Bearbeiten]- https://github.com/yoann-darche/RetroBasicCode
- alte gwbasic Programme
- https://www.heise.de/download/product/bwbasic-62531
- Basicversion für Linux, MsDos und Windows
- http://www.compileonline.com/execute_basic_online.php
- Online Basic
- http://www.o-bizz.de/qbtuts/omastut/index.htm BASIC-Tutorial für absolute Neulinge
- http://www.tutorials.at/ Basic Tutorial für Einsteiger
- http://www.chemie.fu-berlin.de/lehre/edv/basic.html Übersicht über die BASIC-Befehle
- http://www.antonis.de/faq/progs/_inhalt.htm
- sehr umfassende Qbasic Seite und sehr viele Programmbeispiele
- https://www.proggen.org/?id=start
- Oesterreichische Programmier Community