SmileBASIC merece mais atenção. Eu só vi três usuários aqui (incluindo eu!) Fornecendo respostas do SB e, embora isso não me surpreenda, me decepciona. Ser um idioma pago, além de ser um dialeto BASIC certamente desativa as pessoas, mas para quem o possui , é realmente bastante flexível e, surpreendentemente, jogável. Eu pensei em abrir esse tópico de dicas e ver o que aparece.
Espero 12Me21 para visitar com freqüência :)
Usando
?
,.
,@
, e as cordas não fechadasMuitos dialetos do BASIC suportam
?
impressão, e o SB não é exceção. Ter uma função de saída de texto extremamente curta é uma grande vantagem.No SmileBASIC,
.
é avaliado como0.0
, portanto, pode ser usado no lugar de 0 para economizar espaço. Por exemplo:SPSET 0,21
pode serSPSET.,21
, economizando 1 byte. (SPSET0,21
é inválido porqueSPSET0
poderia ser uma função definida pelo usuário)EXEC.
é uma maneira extremamente curta de fazer um loop de programa para sempre (mas redefine todas as suas variáveis, portanto nem sempre é utilizável)Os rótulos (usados para
GOTO
,GOSUB
e leituraDATA
) são representados como@LABEL
no SmileBASIC. Quando usados em uma expressão, eles são realmente tratados como seqüências de caracteres. Por exemplo,BGMPLAY"@305C"
pode ser escrito comoBGMPLAY@305C
As strings são fechadas automaticamente no final de uma linha (ou no final do programa).
?"Hello, World!"
pode ser escrito como?"Hello, World!
. Isso também pode ser usado para tornar os programas mais legíveis, dividindo-os em várias linhas sem alterar o comprimento:?"Meow"BEEP 69
pode serfonte
@A<POP(H$)
é menor que"@"<POP(H$)
(oA
que não importa, ele só verifica o primeiro caractere, pois nunca será o mesmo)Use indexação de string em vez de
MID$
A
MID$
função é uma função comum em muitos BASICs para obter uma substring de algum lugar no meio de uma string. No entanto, se você só precisa obter o caractere em algum índice, o uso da indexação de string é muito menor. Por exemplo:Ambas imprimem C. As seqüências de caracteres suportam a indexação de matriz em caracteres, portanto, se você precisar apenas verificar um caractere de cada vez, esta é a melhor maneira de fazê-lo.
fonte
A$=@AA:A$[2]="BD":A$[0]="":A$[2]="C"
Quando usar
:
(ou não)O
:
personagem é usado como um quebrador de declarações no SB. Basicamente, você o usa para empilhar instruções em uma linha da seguinte maneira:Caso contrário, sua declaração média será quebrada por uma nova linha:
Na realidade, muitas vezes você não precisa usar o cólon. Desde que as instruções possam ser divididas em tokens sintaticamente válidos, o analisador tende a descobrir quando uma termina e a outra inicia. O mesmo vale para o espaço em branco.
Claro, isso nem sempre funciona. Sempre há casos ambíguos e sintaxes inválidas em que você precisa quebrar explicitamente as instruções. Considere por exemplo:
O meio ponto e vírgula que
PRINT
está esperando uma outra expressão para imprimir, a menos que as quebras de instrução lá (usamos pendurado ponto e vírgula para suprimir a nova linha.) Aqui ele assumeEND
é suposto ser um valor, apesar de ser uma palavra-chave, e tenta imprimi-lo, resultando com erro. Portanto, temos que quebrar explicitamente essa afirmação, seja o cólon ou a nova linha.Em geral, se algo parecer ambíguo, tente ver se funciona. Caso contrário, quebre a declaração. Além disso, qualquer coisa que produza sintaxe inválida não é destacada corretamente como o 12Me21 mencionado.
fonte
Use o marcador de sintaxe!
O editor de código do SmileBASIC possui um marcador de sintaxe embutido, que pode ser usado para determinar se o código funcionará ou não. Por exemplo, se você tentar fazer
BEEP0
, ele não será destacado, porque precisa haver um espaço entre uma função e um dígito. No entantoBEEP.
funciona, porque. não é um dígito.Normalmente, o código like
X=7BEEP
é válido, já que as funções não podem começar com um número, então o SB assume isso7
eBEEP
é separado. Contudo.X=7END
NÃO é permitido (e não realçado), porque tenta interpretar7E...
como um número, mas como não há dígito após o E, ele falha, causando um erro. Normalmente, isso seria muito difícil de entender, mas com um marcador de sintaxe muito confiável, é muito mais fácil dizer o que você pode ou não fazer.Meu marcador de sintaxe SmileBASIC foi projetado para (espero) corresponder perfeitamente ao comportamento do SB, para que você possa usá-lo para verificar se o código é válido.
fonte
Evite o operador MOD
O operador do módulo é realmente longo e deve ser evitado, se possível.
Se você estiver obtendo caracteres de uma sequência, basta repeti-la:
Às vezes, você pode salvar 1 caractere em
AND
vez disso:fonte
Omitindo
OUT
valores de retornoUma
OUT
função de formulário é aquela com múltiplos retornos; você especifica as variáveis para aceitar os valores de retorno após aOUT
palavra - chave. Um exemplo usandoDTREAD
:Mas e se você quiser apenas um dos valores, como o mês atual? Você pode "ignorar" o restante dos valores simplesmente não escrevendo nenhum nome de variável para aceitá-los! No entanto, você precisa sair entre vírgulas (além do retorno opcional ocasional).
Que pode ser ainda mais jogado para
fonte
Usar
LAST()
Agora que o SmileBASIC 4 está no Japão, podemos conferir algumas das economias em potencial em golfe. Uma que imediatamente me salta é a nova
LAST()
função, que retorna o último índice de uma matriz ou string. Você pode salvar um byte.fonte