04 Beispiele

Was wäre eine Programmiersprache ohne Beispiele? … eben …

Hello World

PRINT "HELLO WORLD"

Druckt “Hello World” in der Ausgabe.

Tannenbaum – ASCII-Art

Z = 1
WHILE Z != 0
  INPUT "ZEILEN:", Z
  IF Z = 0 THEN 
    BREAK
  ENDIF
  PRINT ""
  FOR J = Z TO 1 STEP - 1
    ZEILE = " "
      FOR I = 1 TO J
    ZEILE = ZEILE + " "
    NEXT
    FOR K = 1 TO (Z+1-J)*2-1 
      ZEILE = ZEILE + "#"
    NEXT
    PRINT ZEILE
  NEXT  
    ZEILE = ""
    FOR L = 1 TO Z+1
      ZEILE = ZEILE + " "
    NEXT
    ZEILE = ZEILE + "#"
    PRINT ZEILE   
  PRINT ""
WEND  

Fragt nach der Anzahl der Zeilen und druckt einen Tannenbaum in der Ausgabe.
0 beendet das Programm.

Geo-Art

REM mit Button lat/lon Koordinaten holen
a = GETLAT()
b = GETLON()
c = 0.0
FOR i = 1 TO 10
  PROJECTION(a, b, 100.0, c)
  c = c + 36.0
  x = GETLAT()
  y = GETLON()
  WPTSADD(x, y)
NEXT

Liest eine Koordinate ein und speichert einen Kreis mit Radius 100m und 10 Punkten im Abstand von 36 Grad in der Wegpunktliste.

Suche nach vier Ziffern

FOR Z = 1 TO 9
FOR A = 1 TO 9
FOR H = 1 TO 9
FOR L = 0 TO 9
C = 0
U = Z * 1000 + A * 100 + H * 10 + L
V = A * 1000 + H * 100 + Z * 10 + L
W = H * 1000 + A * 100 + Z * 10 + L
IF ISSQR(U) = 1 THEN
C = C + 1
ENDIF
IF ISSQR(V) = 1 THEN
C = C + 1
ENDIF
IF ISSQR(W) = 1 THEN
C = C + 1
ENDIF
IF C = 3 THEN
PRINT "ZAHL: "; Z, A, H, L
ENDIF
NEXT
NEXT
NEXT
NEXT

Gesucht werden vier Ziffern, die entsprechend kombiniert drei vier-stellige Quadratzahlen bilden.

Abstand

R = 197
LAT = 50.9621667
LON = 11.03585
C = 0
FOR M = 0 TO 999
FOR S = 1 TO 2
FOR N = 0 TO 999
X = 50 + (57 + M / 1000) / 60
Y = 11 + (S + N / 1000) / 60
D = DISTANCE(LAT, LON, X, Y)
IF D <= R THEN
C = C + 1
ENDIF
NEXT
NEXT
NEXT
PRINT "Punkte im Radius ", R, " SIND ", C

Sucht die Anzahl der möglichen Koordinaten, die innerhalb eines Radius R um die Koordinate (LAT|LON) liegen.

Teilen

FOR A = 1 TO 9
FOR B = 0 TO 9
Z = A * 10000 + 6790 + B
C = Z / 72
R = MOD(Z, 72)
IF R = 0 THEN
PRINT Z, A,B,C
ENDIF
NEXT
NEXT

Jemand kauft 72 identische Produkte.
Diese Produkte kosten alle denselben Preis C
und dieser Preis ist ein ganzzahliger Eurobetrag.
(also 1 Euro oder 2 Euro oder 3 Euro usw.)

Die Gesamtsumme des Kaufpreises beträgt A679B Euro.

Dabei ist B eine Zahl aus der Menge der ganzen Zahlen von 0 bis 9
und A eine Zahl aus der Menge der ganzen Zahlen von 1 bis 9.
Der Gesamtkaufpreis ist also fünfstellig.

Was ist A und B?
Und wieviel kostet nun ein einzelnes Produkt?

Komplexe Zahlen

DATA 1.91372648, 2.4914364, 3.05909465, 0.71522325
DIM L
FOR I = 1 TO 2
LISTCLEAR(L)
READ X
READ Y
POLAR(L, X, Y)
PRINT L
NEXT

Liest aus einem Datenblock jeweils eine komplexe Zahl in Form von kartesischen Koordinaten und wandelt diese in ihre polare Form um.

Fast vollkommene Zahlen

DIM T
FOR I = 15 TO 99
LISTCLEAR(T)
DIVISORS(T, I)
S = SUM(T) - I
D = I - 4
IF S = D THEN
PRINT I, D, T
ENDIF
NEXT

Gesucht seien nicht vollkommene Zahlen, sondern – sagen wir – “fast vollkommene Zahlen”.

Die seien so definiert:
Eine natürliche Zahl n soll eine “fast vollkommene Zahl” sein, wenn die Summe aller ihrer (positiven) Teiler außer sich selbst um eine bestimmte Differenz kleiner ist als die Zahl n.

Frage: was ist die nächstgrößere fast vollkommene Zahl A bezüglich der Differenz 4 nach der 14?

Summe der Teiler

DIM T
FOR I = 1 TO 999
LISTCLEAR(T)
DIVISORS(T, I)
S = SUM(T) - I
IF S > I THEN
PRINT I, S, T
END
ENDIF
NEXT

Es gibt tatsächlich auch natürliche Zahlen, bei denen die Summe aller ihrer (positiven) Teiler außer sich selbst größer ist als die Zahl selbst. Welches ist die kleinste natürliche Zahl B, für die das der Fall ist?

DATA

DATA 120,064,064,048,008,072,048,000
DATA 024,036,004,008,016,032,060,000
DATA 012,018,018,012,000,000,000,000
DATA 024,036,004,008,004,036,024,000
DATA 016,048,080,120,016,016,016,000
DATA 000,000,000,000,000,000,000,000
DATA 120,064,064,048,008,072,048,000
DATA 024,036,004,008,004,036,024,000
DATA 120,064,064,048,008,072,048,000
DATA 000,000,000,000,000,000,000,000
DATA 056,076,076,084,100,100,056,000
DATA 016,048,016,016,016,016,056,000
DATA 024,036,004,008,004,036,024,000
DATA 012,018,018,012,000,000,000,000
DATA 056,076,076,084,100,100,056,000
DATA 120,064,064,048,008,072,048,000
DATA 000,000,000,000,000,000,000,000
DATA 016,048,080,120,016,016,016,000
DATA 016,048,080,120,016,016,016,000
DATA 048,072,072,048,072,072,048,000
FOR I = 1 TO 20
FOR J = 1 TO 8
READ A
S = CONVERTBASE(A, 10, 2)
T = PADLEFT(S, "0", 8)
T = SUBST(T, "0", " ", 0)
T = SUBST(T, "1", "#", 0)
PRINT T
NEXT J
NEXT I

DATA 120,064,064,048,008,072,048,000
DATA 024,036,004,008,016,032,060,000
DATA 012,018,018,012,000,000,000,000
DATA 024,036,004,008,004,036,024,000
DATA 016,048,080,120,016,016,016,000
DATA 000,000,000,000,000,000,000,000
DATA 120,064,064,048,008,072,048,000
DATA 024,036,004,008,004,036,024,000
DATA 120,064,064,048,008,072,048,000
DATA 000,000,000,000,000,000,000,000
DATA 056,076,076,084,100,100,056,000
DATA 016,048,016,016,016,016,056,000
DATA 024,036,004,008,004,036,024,000
DATA 012,018,018,012,000,000,000,000
DATA 056,076,076,084,100,100,056,000
DATA 120,064,064,048,008,072,048,000
DATA 000,000,000,000,000,000,000,000
DATA 016,048,080,120,016,016,016,000
DATA 016,048,080,120,016,016,016,000
DATA 048,072,072,048,072,072,048,000
SCREEN(1)
STROKE(1)
ANTIALIAS(0)
COLOR(0, 0, 0)
FOR I = 1 TO 20
FOR J = 1 TO 8
READ A
S = CONVERTBASE(A, 10, 2)
T = PADLEFT(S, "0", 8)
Y = 100 +I * 9 + J
FOR K = 1 TO 8
X = 100 + K
C = MID(T, K, 1)
IF C = "1" THEN
DOT(X, Y)
ENDIF
NEXT K
NEXT J
NEXT I

Wurzelzwerg

Lat= 53.4738833
Lon= 11.4083167
for i = 4 to 20
N = i*7
if mod(N,2)=1 then
if mod(N,3)=2 then
if mod(N,4)=3 then
if mod(N,5)=4 then
if mod(N,6)=5 then
X=N*8+83
Y=N*10-8*N-77
print "N=",N,"X=",X,"Y=",Y
projection(Lat, Lon, X,Y)
La=GETLAT()
Lo=GETLON()
LaNach=ROUND((La - TRUNC(La))60,3)

LoNach=ROUND((Lo - TRUNC(Lo))60,3)
print "N"+ STR(TRUNC(La))+"° "+STR(LaNach)+" E"+ STR(TRUNC(Lo))+"° "+STR(LoNach)
endif
endif
endif
endif
endif
next

Gehe von hier in Richtung Y Grad genau X Meter.“

Finde dazu die kleinste ganze Zahl „N“, die beim Dividieren durch 2 einen Rest von 1, beim Dividieren durch 3 einen Rest von 2, beim Dividieren durch 4 einen Rest von 3, beim Dividieren durch 5 einen Rest von 4, beim Dividieren durch 6 einen Rest von 5, doch beim Dividieren durch 7 keinen Rest ergibt.

X=N*8+83

Y=N*10-8*N-77