Logo-Beispiele verwenden benannte Werte, Listenblöcke und klare Befehle. Hier steht die Konsolenrechnung im Vordergrund; Turtle-Grafik ist ein weiterer eigener Bereich.
Logo-Beispiele verwenden benannte Werte, Listenblöcke und klare Befehle. Hier steht die Konsolenrechnung im Vordergrund; Turtle-Grafik ist ein weiterer eigener Bereich. Grafik in voller Größe öffnen

Logo: Beispiele und Erklärung

Reifegrad und Grenzen: experimentell

Umgesetzter Umfang: Prozeduren, Rekursion, Schleifen, Wörter, Listen, Konsolenausgabe und Bitmap-Turtle-Operationen sind abgedeckt.

Grenzen: Zahlen verwenden Binary64 und Primitive/Kapazitäten sind begrenzt; READLIST/MAP fehlen, Mischlisten- und Host-Grenzen bleiben.

Zur PBXB64-V9-Übersicht English

Logo unterstützte Prozeduren und Umfang

Die sprachspezifische Referenz der unterstützten Befehle und des Umfangs mit durchsuchbaren Kategorien und klaren Grenzen öffnen.

Umfangsreferenz öffnen

Logo-Beispiele verwenden benannte Werte, Listenblöcke und klare Befehle. Hier steht die Konsolenrechnung im Vordergrund; Turtle-Grafik ist ein weiterer eigener Bereich.

Zwölf Kurzbeispiele und ein größeres Programm. Wählen Sie ein Thema oder arbeiten Sie die Beispiele der Reihe nach durch.

1. 1 + 2 + 3 + 4 + 5 = 15

Die Zahlen 1 bis 5 werden zu 15 addiert. Das Programm gibt 15 aus und endet mit Exitcode 0.

MAKE "sum 0
MAKE "i 1
REPEAT 5 [
    MAKE "sum :sum + :i
    MAKE "i :i + 1
]
PRINT :sum

Erwarteter Exitcode: 0; Ausgabe-Prüfmuster (Regex): '15'

PBXB64.exe sum15-logo.logo -O2 -o example.exe
.\example.exe
$LASTEXITCODE

Quelltext herunterladen

Nativ geprüft mit dem V22-Kandidaten vom 30.09.2026; Prüfung mit dem finalen Compiler noch ausstehend.

2. MAKE und IF: einen benannten Wert prüfen

MAKE "x 3 bindet den Wert 3. :x liest ihn; bei :x = 3 führt IF den Listenblock aus und PRINT gibt ok aus. STOP beendet den Ablauf.

; Logo control-flow coverage fixture.
MAKE "x 3
IF :x = 3 [ PRINT "ok ]
STOP

Erwarteter Exitcode: 0

PBXB64.exe control.logo -O2 -o example.exe
.\example.exe
$LASTEXITCODE

Quelltext herunterladen

Kanonischer Testfall mit erwartetem Ergebnis; hier keine neue native V22-Prüfung. Finale Ausführung noch ausstehend.

3. Zwei Befehle auf einer Zeile

HOME und PRINT 7 stehen in derselben Quellzeile. Der Parser muss beide Befehle erkennen; der Ausgabe-Vertrag erwartet 7. HOME ist ein Turtle-Befehl, PRINT erzeugt die Konsolenausgabe.

HOME PRINT 7

Erwarteter Exitcode: 0; Ausgabe-Prüfmuster (Regex): '7'

PBXB64.exe same_line_command_sequence.logo -O2 -o example.exe
.\example.exe
$LASTEXITCODE

Quelltext herunterladen

Kanonischer Testfall mit erwartetem Ergebnis; hier keine neue native V22-Prüfung. Finale Ausführung noch ausstehend.

4. SQR und SQRT in einem Ausdruck

Ablauf Schritt für Schritt

  1. SQR 81 berechnet die Quadratwurzel 9.
  2. SUM erhält als Argumente die Ergebnisse von SQR 16 und SQRT 9.
  3. 4 + 3 ergibt die zweite Ausgabe 7; SQR ist hier ein Wurzel-Alias.
PRINT SQR 81
PRINT SUM SQR 16 SQRT 9

Erwarteter Exitcode: 0

Kanonisches Ausgabe-Prüfmuster (Regex)
9\s+7
PBXB64.exe logo-sqr_alias.logo -O2 -o example.exe
.\example.exe
$LASTEXITCODE

Quelltext herunterladen

Ergebnisvertrag aus tests/validate.toml. Keine neue native Compilerprüfung in dieser Website-Erweiterung. Finale Ausführung mit dem freigegebenen Compiler steht aus.

5. Potenzen in geschachtelten Ausdrücken

Ablauf Schritt für Schritt

  1. POW 2 3 liefert 8.
  2. SUM kombiniert POW 2 5 und POWER 2 2.
  3. 32 + 4 ergibt 36; POW und POWER zeigen zwei Schreibweisen derselben Potenzoperation.
PRINT POW 2 3
PRINT SUM POW 2 5 POWER 2 2

Erwarteter Exitcode: 0

Kanonisches Ausgabe-Prüfmuster (Regex)
8\s+36
PBXB64.exe logo-pow_alias.logo -O2 -o example.exe
.\example.exe
$LASTEXITCODE

Quelltext herunterladen

Ergebnisvertrag aus tests/validate.toml. Keine neue native Compilerprüfung in dieser Website-Erweiterung. Finale Ausführung mit dem freigegebenen Compiler steht aus.

6. Wörter ohne eingefügtes Leerzeichen verbinden

Ablauf Schritt für Schritt

  1. WORD erhält zwei zitierte Wörter.
  2. alpha und beta werden direkt zu alphabeta zusammengesetzt.
  3. Die zweite Schreibweise mit schließenden Anführungszeichen ergibt entsprechend leftright.
PRINT WORD "alpha "beta
PRINT WORD "left" "right"

Erwarteter Exitcode: 0

Kanonisches Ausgabe-Prüfmuster (Regex)
alphabeta\s+leftright
PBXB64.exe logo-word_quote_words.logo -O2 -o example.exe
.\example.exe
$LASTEXITCODE

Quelltext herunterladen

Ergebnisvertrag aus tests/validate.toml. Keine neue native Compilerprüfung in dieser Website-Erweiterung. Finale Ausführung mit dem freigegebenen Compiler steht aus.

7. Mehrteilige Texte und WORD

Ablauf Schritt für Schritt

  1. Der zitierte Text hello world enthält ein eigenes Leerzeichen.
  2. WORD erhält den Text front door und das Wort bell.
  3. Die Zusammensetzung fügt kein weiteres Leerzeichen hinzu und ergibt front doorbell.
PRINT "hello world"
PRINT WORD "front door" "bell"

Erwarteter Exitcode: 0

Kanonisches Ausgabe-Prüfmuster (Regex)
hello world\s+front doorbell
PBXB64.exe logo-multiword_string.logo -O2 -o example.exe
.\example.exe
$LASTEXITCODE

Quelltext herunterladen

Ergebnisvertrag aus tests/validate.toml. Keine neue native Compilerprüfung in dieser Website-Erweiterung. Finale Ausführung mit dem freigegebenen Compiler steht aus.

8. Elemente und Zeichen zählen

Ablauf Schritt für Schritt

  1. LIST 1 2 3 wird unter dem Variablennamen items gespeichert.
  2. COUNT :items zählt drei Listenelemente.
  3. COUNT auf dem Wort alpha zählt dagegen fünf Zeichen.
MAKE "items LIST 1 2 3
PRINT COUNT :items
PRINT COUNT "alpha

Erwarteter Exitcode: 0

Kanonisches Ausgabe-Prüfmuster (Regex)
3\s+5
PBXB64.exe logo-count_expression.logo -O2 -o example.exe
.\example.exe
$LASTEXITCODE

Quelltext herunterladen

Ergebnisvertrag aus tests/validate.toml. Keine neue native Compilerprüfung in dieser Website-Erweiterung. Finale Ausführung mit dem freigegebenen Compiler steht aus.

9. LOCALMAKE und spätere Zuweisung

Ablauf Schritt für Schritt

  1. LOCALMAKE weist x zunächst den Wert 7 zu.
  2. :x liest diesen Wert; SUM :x 5 berechnet 12.
  3. MAKE ersetzt anschließend den gespeicherten Wert. Beide PRINT-Anweisungen machen die Änderung sichtbar.
LOCALMAKE "x 7
PRINT :x
MAKE "x SUM :x 5
PRINT :x

Erwarteter Exitcode: 0

Kanonisches Ausgabe-Prüfmuster (Regex)
7\s+12
PBXB64.exe logo-localmake_statement.logo -O2 -o example.exe
.\example.exe
$LASTEXITCODE

Quelltext herunterladen

Ergebnisvertrag aus tests/validate.toml. Keine neue native Compilerprüfung in dieser Website-Erweiterung. Finale Ausführung mit dem freigegebenen Compiler steht aus.

10. OP beendet eine Prozedur mit einem Ergebnis

Ablauf Schritt für Schritt

  1. TO definiert twice mit dem Parameter :x.
  2. OP ist hier die Kurzform für OUTPUT und gibt SUM :x :x zurück.
  3. Die nachfolgende Ausgabe bad wird übersprungen; twice 6 liefert 12.
TO twice :x
  OP SUM :x :x
  PRINT "bad
END

PRINT twice 6

Erwarteter Exitcode: 0

Kanonisches Ausgabe-Prüfmuster (Regex)
12
PBXB64.exe logo-procedure_op_alias.logo -O2 -o example.exe
.\example.exe
$LASTEXITCODE

Quelltext herunterladen

Ergebnisvertrag aus tests/validate.toml. Keine neue native Compilerprüfung in dieser Website-Erweiterung. Finale Ausführung mit dem freigegebenen Compiler steht aus.

11. Eine Liste aus einer Prozedur zurückgeben

Ablauf Schritt für Schritt

  1. listout verwendet OUTPUT [1 2].
  2. Der Aufruf LISTOUT zeigt die im Test verwendete Groß-/Kleinschreibungsbehandlung.
  3. PRINT gibt das zurückgegebene Listenobjekt als [1 2] aus.
TO listout
  OUTPUT [1 2]
END

PRINT LISTOUT

Erwarteter Exitcode: 0

Kanonisches Ausgabe-Prüfmuster (Regex)
\[1 2\]
PBXB64.exe logo-procedure_list_output_case.logo -O2 -o example.exe
.\example.exe
$LASTEXITCODE

Quelltext herunterladen

Ergebnisvertrag aus tests/validate.toml. Keine neue native Compilerprüfung in dieser Website-Erweiterung. Finale Ausführung mit dem freigegebenen Compiler steht aus.

12. Abstand zwischen zwei Turtle-Positionen

Ablauf Schritt für Schritt

  1. SETPOS stellt die Turtle auf den Punkt (3, 4).
  2. DISTANCE fragt den Abstand zum Punkt (6, 8) ab.
  3. Die Differenzen 3 und 4 ergeben nach dem Satz des Pythagoras √(3² + 4²) = 5.
DEFAULTBITMAP 32 32
SETPOS 3 4
PRINT DISTANCE 6 8

Erwarteter Exitcode: 0

Kanonisches Ausgabe-Prüfmuster (Regex)
5
PBXB64.exe logo-turtle_distance.logo -O2 -o example.exe
.\example.exe
$LASTEXITCODE

Quelltext herunterladen

Ergebnisvertrag aus tests/validate.toml. Keine neue native Compilerprüfung in dieser Website-Erweiterung. Finale Ausführung mit dem freigegebenen Compiler steht aus.

Großes Beispiel: Eine vollständige Logo-Werkstatt

Ablauf Schritt für Schritt

  1. DEFAULTBITMAP richtet eine 96 × 96 große Zeichenfläche ein; Stift-, Farb- und Bewegungsbefehle arbeiten auf dieser Fläche.
  2. Die Zahlenfunktionen, Vergleiche und beiden Schleifen werden anschließend mit Variablen und PRINT kombiniert.
  3. Die Liste zeigt FIRST, LAST, ITEM, FPUT und LPUT; double verwendet einen lokalen Zwischenwert und OUTPUT. double 5 liefert 10. RANDOM besitzt einen eigenen Prüfbereich statt einer fest behaupteten Zufallszahl.
; V14 LOGO help surface: all documented commands and forms in headless mode.
DEFAULTBITMAP 96 96
CS
CLEAN
HOME
SETPC 14
SETBG 1
PENSIZE 2
PD
FD 10
RT 90
FD 5
LT 45
BK 3
PU
SETH 180
SETXY 4 5
SETPOS [6 7]
SETSCRUNCH 1
PENREVERSE
FILL
LABEL "v14
HT
ST
TEXTSCREEN
FULLSCREEN
SPLITSCREEN
CT

MAKE "value SUM 20 22
PRINT :value
PRINT THING "value
PRINT DIFFERENCE 8 3
PRINT PRODUCT 3 4
PRINT QUOTIENT 12 3
PRINT REMAINDER 13 5
PRINT POWER 2 3
PRINT ABS -4
PRINT INT 4.8
PRINT ROUND 4.5
PRINT SQRT 81
PRINT SIN 90
PRINT COS 0
PRINT RANDOM 1
IF GREATERP 3 2 [ PRINT "greater ]
IF LESSP 2 3 [ PRINT "less ]
IF EQUALP 2 2 [ PRINT "equal ]
IFELSE 0 [ PRINT 0 ] [ PRINT 1 ]
REPEAT 2 [ FD 1 ]
MAKE "count 0
WHILE LESSP :count 2 [ MAKE "count SUM :count 1 ]

MAKE "items LIST 1 2 3
PRINT FIRST :items
PRINT LAST :items
PRINT ITEM 2 :items
MAKE "front FPUT 0 :items
MAKE "back LPUT 4 :front
PRINT FIRST BUTFIRST :back
PRINT LAST BUTLAST :back

TO double :x
  LOCAL "scratch
  MAKE "scratch SUM :x :x
  OUTPUT :scratch
END

TO stopped
  STOP
END

PRINT double 5
stopped

Erwarteter Exitcode: 0

Kanonisches Ausgabe-Prüfmuster (Regex)
42\s+42\s+5\s+12\s+4\s+3\s+8\s+4\s+4\s+5\s+9\s+1\s+1\s+[0-9.]+\s+greater\s+less\s+equal\s+1\s+1\s+3\s+2\s+1\s+3\s+10
PBXB64.exe logo-v14_full_frontend.logo -O2 -o example.exe
.\example.exe
$LASTEXITCODE

Quelltext herunterladen

Ergebnisvertrag aus tests/validate.toml. Keine neue native Compilerprüfung in dieser Website-Erweiterung. Finale Ausführung mit dem freigegebenen Compiler steht aus.

Alle Quellen dieser Lernseite

Jedes Beispiel hat einen eigenen Ordner; die README nennt die jeweiligen Compileraufrufe. Enthaltene Includes behalten ihre passenden Pfade.

Alle 13 Beispiele als ZIP

Bridging

Ein kompiliertes Logo-Programm kann als native EXE ausgeführt werden. Eine native EXE allein belegt noch keinen beliebigen sprachübergreifenden Symbolvertrag. Für direkte Daten- und Funktionsbrücken zeigen die Bridging-Beispiele konkrete unterstützte Paare.

Vollständige Quellenpaare ansehen