SmileBASIC mérite plus d'attention. Je n'ai vu que 3 utilisateurs ici (moi y compris!) Fournir des réponses SB, et même si cela ne me surprend pas, cela me déçoit. C'est une langue payée et un dialecte BASIC qui découragent certainement les gens, mais pour ceux qui le possèdent, c'est en fait assez flexible et, étonnamment, jouable au golf. J'ai pensé que j'ouvrirais ce fil de conseils pour voir ce qui se passerait.
Je m'attends à ce que 12Me21 visite fréquemment :)
En utilisant
?
,.
,@
et les chaînes non ferméesDe nombreux dialectes de base prennent en charge l'
?
impression, et SB ne fait pas exception. Avoir une fonction de sortie de texte extrêmement courte est un gros avantage.Dans SmileBASIC,
.
est évalué à0.0
, il peut donc être utilisé à la place de 0 pour économiser de l'espace. Par exemple:SPSET 0,21
peut êtreSPSET.,21
, en économisant 1 octet. (SPSET0,21
n'est pas valide carSPSET0
pourrait être une fonction définie par l'utilisateur)EXEC.
est un moyen extrêmement court de faire une boucle de programme pour toujours (mais il réinitialise toutes vos variables, il n'est donc pas toujours utilisable)Les étiquettes (utilisées pour
GOTO
,GOSUB
et la lectureDATA
) sont représentées comme@LABEL
dans SmileBASIC. Lorsqu'elles sont utilisées dans une expression, elles sont en fait traitées comme des chaînes. Par exemple,BGMPLAY"@305C"
peut être écrit commeBGMPLAY@305C
Les chaînes sont automatiquement fermées à la fin d'une ligne (ou à la fin du programme).
?"Hello, World!"
peut être écrit comme?"Hello, World!
. Cela peut également être utilisé pour rendre les programmes plus lisibles en les divisant en plusieurs lignes sans changer la longueur:?"Meow"BEEP 69
peut êtrela source
@A<POP(H$)
est plus court que"@"<POP(H$)
(celaA
n'a pas d'importance, il ne vérifie que le premier caractère car il ne sera jamais le même)Utilisez l'indexation de chaînes au lieu de
MID$
La
MID$
fonction est une fonction courante dans de nombreux BASIC pour obtenir une sous-chaîne quelque part au milieu d'une chaîne. Cependant, si vous avez juste besoin d'obtenir le caractère à un index, l'utilisation de l'indexation de chaîne est beaucoup plus courte. Par exemple:Ces deux chaînes C. d'impression prennent en charge l'indexation de type tableau sur une base de caractères, donc si vous n'avez besoin de vérifier qu'un caractère à la fois, c'est la meilleure façon de le faire.
la source
A$=@AA:A$[2]="BD":A$[0]="":A$[2]="C"
Quand utiliser
:
(ou non)Le
:
caractère est utilisé comme séparateur d'instructions dans SB. Fondamentalement, vous l'utilisez pour empiler des instructions sur une ligne comme suit:Sinon, votre déclaration moyenne est interrompue par une nouvelle ligne:
En réalité, vous n'avez souvent pas besoin du tout d'utiliser le côlon. Tant que les instructions peuvent être divisées en jetons syntaxiquement valides, l'analyseur a tendance à déterminer quand l'une se termine et l'autre commence. Il en va souvent de même pour les espaces blancs.
Bien sûr, cela ne fonctionne pas toujours. Il existe toujours des cas ambigus et des syntaxes invalides où vous devez rompre explicitement les instructions. Prends pour exemple:
Le point-virgule signifie que l'
PRINT
on s'attend à ce qu'une autre expression s'imprime, à moins que l'instruction ne s'y casse (nous utilisons des points-virgules pendantes pour supprimer le retour à la ligne.) Ici, il suppose queEND
c'est censé être une valeur, bien qu'il s'agisse d'un mot-clé, et essaie de l'imprimer, résultant dans une erreur. Ainsi, nous devons rompre explicitement cette déclaration, que ce soit les deux-points ou la nouvelle ligne.En général, si quelque chose semble ambigu, essayez-le pour voir si cela fonctionne. Si ce n'est pas le cas, cassez la déclaration. De plus, tout ce qui produirait une syntaxe non valide n'est pas mis en surbrillance correctement comme 12Me21 l'a mentionné.
la source
Utilisez le surligneur de syntaxe!
L'éditeur de code de SmileBASIC a un surligneur de syntaxe intégré, qui peut être utilisé pour déterminer si le code fonctionnera ou non. Par exemple, si vous essayez de le faire
BEEP0
, il ne le mettra pas en surbrillance, car il doit y avoir un espace entre une fonction et un chiffre. Fonctionne cependantBEEP.
, car. n'est pas un chiffre.Normalement, le code comme
X=7BEEP
est valide, car les fonctions ne peuvent pas commencer par un nombre, donc SB suppose cela7
etBEEP
est séparé. Pourtant.X=7END
n'est PAS autorisé (et n'est pas mis en surbrillance), car il essaie d'interpréter7E...
comme un nombre, mais comme il n'y a pas de chiffre après le E, il échoue, provoquant une erreur. Normalement, cela serait assez difficile à comprendre, mais avec un surligneur de syntaxe très fiable, il est beaucoup plus facile de dire ce que vous pouvez et ne pouvez pas faire.Mon surligneur de syntaxe SmileBASIC est conçu pour (espérons-le) correspondre parfaitement au comportement de SB, vous pouvez donc l'utiliser pour vérifier si le code est valide.
la source
Évitez l'opérateur MOD
L'opérateur de module est vraiment long et doit être évité si possible.
Si vous obtenez des caractères d'une chaîne, vous pouvez simplement répéter la chaîne à la place:
Parfois, vous pouvez enregistrer 1 caractère avec à la
AND
place:la source
Omettre les
OUT
valeurs de retourUne
OUT
fonction de formulaire est une fonction avec plusieurs retours; vous spécifiez les variables pour accepter les valeurs de retour après leOUT
mot - clé. Un exemple utilisantDTREAD
:Mais que se passe-t-il si vous ne voulez qu'une des valeurs, comme le mois en cours? Vous pouvez "ignorer" le reste des valeurs en n'écrivant simplement aucun nom de variable pour les accepter! Vous devez cependant laisser des virgules (à part le retour facultatif occasionnel).
Qui peut être encore joué au golf
la source
Utilisation
LAST()
Maintenant que SmileBASIC 4 est sorti au Japon, nous pouvons vérifier certaines des économies potentielles sur le golf. L'une qui me saute immédiatement aux yeux est la nouvelle
LAST()
fonction, qui renvoie le dernier index d'un tableau ou d'une chaîne. Vous pouvez enregistrer un octet.la source