Blue Max
The King of Retro®
- Joined
- 13 Οκτ 2020
- Μηνύματα
- 5.158
- Αντιδράσεις
- 16.938
Η επερχόμενη έκδοση 2.4.1 της Hobby BASIC ενισχύει τον continuation character, τον χαρακτήρα backslash (\), προσθέτοντας νέες δυνατότητες. Αυτή η φαινομενικά μικρή αλλά σημαντική επέκταση διαμορφώνει ριζικά τη σύνταξη της Hobby BASIC από εδώ και πέρα.
Ισοδύναμο με: print "hello"
Ο περιορισμός στην προηγούμενη έκδοση:
Η γραμμή αμέσως μετά τον χαρακτήρα \ δεν μπορούσε να είναι κενή ούτε να περιέχει σχόλια - έπρεπε να συνεχίζει απευθείας την εντολή.
Παραδείγματα που προκαλούν σφάλμα σύνταξης:
Και τα δύο ισοδύναμα με: Syntax Error
Δεν είχα προβλέψει αυτή τη σύνταξη, παρόλο που είναι απολύτως λογική και αναμενόμενη από τους χρήστες.
Η νέα έκδοση 2.4.1 διορθώνει αυτή την παράλειψη. Ας δούμε το παράδειγμα ξανά:
Η διαφορά είναι σημαντική: προσφέρει μεγαλύτερη ευελιξία στον κώδικα και, κατ' επέκταση, στον προγραμματιστή, ενώ ταυτόχρονα βελτιώνει την αναγνωσιμότητα.
Η εντολή TIMES:
• Εκτελεί εντολές πολλές φορές σε μία γραμμή
• Χρησιμοποιεί τη μεταβλητή V3 ως μετρητή (zero-based: 0 έως n-1)
• Δέχεται πολλαπλές εντολές χωρισμένες με άνω κάτω τελεία :
• Κάνει inline loops χωρίς να χρειάζεται ξεχωριστή γραμμή για FOR/NEXT
Παράδειγμα:
Το παραπάνω ισοδυναμεί με:
H TIMES δεν υποστήριζε continuation character. Με την έκδοση 2.4.1 μπορούμε να σπάμε τα loops σε πολλές γραμμές χρησιμοποιώντας τον χαρακτήρα backslash (\) !
Παλιά σύνταξη (έως 2.4.0):
Ή ακόμα χειρότερα για nested loops:
Νέα σύνταξη (2.4.1):
Test 1: Βασικό test με single line
Output: Hello 3 φορές
Test 2: Multi-line με backslash
Output:
Line 1
Line 2
Line 3
Line 1
Line 2
Line 3
Line 1
Line 2
Line 3
Test 3: Backslash μέσα σε quotes
Output: Να τυπώσει τα strings όπως είναι (δεν να θεωρηθεί continuation)
Test 4: Complex expressions με arithmetic
Output:
Iteration 0 value 0
Iteration 1 value 10
Iteration 2 value 20
Iteration 3 value 30
Test 5: Nested commands με graphics
Output: 5 διαφορετικά χρωματισμένα κουτιά
Test 6: Με κενή γραμμή continuation
Output:
Start
Middle
End
Start
Middle
End
Start
Middle
End
Test 7: Πολλαπλά backslashes σε διαφορετικές γραμμές
Output:
Sum = 3
Sum = 3
Test 8: Backslash στο τέλος χωρίς κενό
Output:
Test
Continued
Test
Continued
Test
Continued
Test 9: Backslash με κενά και σχόλια
Output:
Hello
World
Hello
World
Hello
World
Test 10: Zero count
Output: Μόνο Skipped
Nested TIMES
Nested FOR/TIMES με Full Continuation Support
Δυναμικός Υπολογισμός Μέσου Όρου Πινάκων
Σε κάθε αναβάθμιση, προσπαθώ να κάνω τη σύνταξη της Hobby BASIC πιο ελεύθερη και ευέλικτη για τον προγραμματιστή, διατηρώντας παράλληλα τη λογική της και το βασικό BASIC-style. Το περιβάλλον είναι χτισμένο από το μηδέν σε 100% Win32 Assembly, με χειροποίητο parser, μηδέν εξαρτήσεις και απευθείας byte επεξεργασία.

10 years of fun with Hobby BASIC.
➤ Παράδειγμα continuation character πριν την έκδοση 2.4.1:
Κώδικας:
print \
"hello"
Ο περιορισμός στην προηγούμενη έκδοση:
Η γραμμή αμέσως μετά τον χαρακτήρα \ δεν μπορούσε να είναι κενή ούτε να περιέχει σχόλια - έπρεπε να συνεχίζει απευθείας την εντολή.
Παραδείγματα που προκαλούν σφάλμα σύνταξης:
Κώδικας:
print \
← κενή γραμμή
"hello"
Κώδικας:
print \
! Αυτό είναι σχόλιο
"hello"
Δεν είχα προβλέψει αυτή τη σύνταξη, παρόλο που είναι απολύτως λογική και αναμενόμενη από τους χρήστες.
Η νέα έκδοση 2.4.1 διορθώνει αυτή την παράλειψη. Ας δούμε το παράδειγμα ξανά:
Κώδικας:
print \ ! Συνέχιση στην επόμενη γραμμή
! <-- Αυτό το κενό επιτρέπεται τώρα στην 2.4.1
"Καλημέρα κόσμε" ! Η εντολή ολοκληρώνεται εδώ
Η διαφορά είναι σημαντική: προσφέρει μεγαλύτερη ευελιξία στον κώδικα και, κατ' επέκταση, στον προγραμματιστή, ενώ ταυτόχρονα βελτιώνει την αναγνωσιμότητα.
➤ Line Continuation Support για την εντολή TIMES!
Η εντολή TIMES:
• Εκτελεί εντολές πολλές φορές σε μία γραμμή
• Χρησιμοποιεί τη μεταβλητή V3 ως μετρητή (zero-based: 0 έως n-1)
• Δέχεται πολλαπλές εντολές χωρισμένες με άνω κάτω τελεία :
• Κάνει inline loops χωρίς να χρειάζεται ξεχωριστή γραμμή για FOR/NEXT
Παράδειγμα:
Κώδικας:
times repeatCount swap 0, 0, 80, 11, 0, 12 : title repeatCount-V3 : wait 120
Το παραπάνω ισοδυναμεί με:
Κώδικας:
FOR i = 0 TO repeatCount-1
swap 0, 0, 80, 11, 0, 12
title repeatCount-i
wait 120
NEXT i
H TIMES δεν υποστήριζε continuation character. Με την έκδοση 2.4.1 μπορούμε να σπάμε τα loops σε πολλές γραμμές χρησιμοποιώντας τον χαρακτήρα backslash (\) !
Παλιά σύνταξη (έως 2.4.0):
Κώδικας:
times 10 print "Hello" : print "World" : wait 100
Ή ακόμα χειρότερα για nested loops:
Κώδικας:
times 5 times 5 print "X:", V3;" Y:", V3
Νέα σύνταξη (2.4.1):
Κώδικας:
times 10 \
print "Hello" : \
print "World" : \
wait 100
➤ Παραδείγματα της TIMES με continuation:
Test 1: Βασικό test με single line
Κώδικας:
times 3 print "Hello"
Test 2: Multi-line με backslash
Κώδικας:
times 3 \
print "Line 1" : \
print "Line 2" : \
print "Line 3"
Line 1
Line 2
Line 3
Line 1
Line 2
Line 3
Line 1
Line 2
Line 3
Test 3: Backslash μέσα σε quotes
Κώδικας:
times 2 \
print "This has backslash \\ in string" : \
print "Another with '\' quote"
Test 4: Complex expressions με arithmetic
Κώδικας:
times 4 \
x = V3 * 10 : \
print "Iteration ", V3, " value ", x
Iteration 0 value 0
Iteration 1 value 10
Iteration 2 value 20
Iteration 3 value 30
Test 5: Nested commands με graphics
Κώδικας:
times 5 \
color \
RND(15), RND(15) : \
paint V3*5, V3*5, 5, 5, -1, 1
Test 6: Με κενή γραμμή continuation
Κώδικας:
times 3 \
print "Start" : \
\
print "Middle" : \
\
print "End"
Start
Middle
End
Start
Middle
End
Start
Middle
End
Test 7: Πολλαπλά backslashes σε διαφορετικές γραμμές
Κώδικας:
times 2 \
a = 1 : b = 2 : \
\
c = a + b : \
\
print "Sum = ", c : \
\
wait 100
Sum = 3
Sum = 3
Test 8: Backslash στο τέλος χωρίς κενό
Κώδικας:
times 3 print "Test"\
: print "Continued"
Test
Continued
Test
Continued
Test
Continued
Test 9: Backslash με κενά και σχόλια
Κώδικας:
times 3 \
! Σχόλιο \
print "Hello" : \
print "World"
Hello
World
Hello
World
Hello
World
Test 10: Zero count
Κώδικας:
times 0 \
print "This should not print"
print "Skipped"
➤ Προχωρημένα παραδείγματα της TIMES με continuation:
Nested TIMES
Κώδικας:
print "Nested TIMES test:"
times 2 \
print "Outer ", V3, ":" : \
times 3 \
print " Inner ", V3
inkey
Nested FOR/TIMES με Full Continuation Support
Κώδικας:
for \
outer = 1 \
to 3 \
print "┌─ OUTER ITERATION ", outer, " ───────────────────────┐" : \
for \
middle = 1 \
to 4 \
print "│ Middle: ", middle, " " : \
times \
2 \
print "│ Times[", V3, "] " : \
if \
V3 = 0 \
then \
print "First " : \
else \
print "Second" : \
print "│"
next \
middle : \
print "└──────────────────────────────────────────────┘" : \
print ! Blank line
next \
outer
Δυναμικός Υπολογισμός Μέσου Όρου Πινάκων
Κώδικας:
forever#
dim data[5,5].RND 10000
data[].SIZE
array_length = V0
times array_length : \
sum = 0 : \
times 5 \
value = data[V3,V3] : \
sum = sum + value : \
average = sum / 5 : \
print "row ", V3, " average: ", average
goto forever
Σε κάθε αναβάθμιση, προσπαθώ να κάνω τη σύνταξη της Hobby BASIC πιο ελεύθερη και ευέλικτη για τον προγραμματιστή, διατηρώντας παράλληλα τη λογική της και το βασικό BASIC-style. Το περιβάλλον είναι χτισμένο από το μηδέν σε 100% Win32 Assembly, με χειροποίητο parser, μηδέν εξαρτήσεις και απευθείας byte επεξεργασία.
➤ Νέα Παραδείγματα στην έκδοση 2.4.1
Στην ενημέρωση 2.4.1 προστέθηκαν δύο νέα παραδείγματα:- CIRCLES.BAS - Multiple Random Circles Generator
Δημιουργεί τυχαίους κύκλους με διαφορετικά μεγέθη, χρώματα και θέσεις. - EQUALIZER.BAS - Πλήρως παραμετροποιήσιμο Equalizer / VU Meter
Προσομοίωση οπτικού equalizer με μπάρες που αντιδρούν σε τυχαίες τιμές.

10 years of fun with Hobby BASIC.
Τελευταία επεξεργασία: