E o Zé Oliveira continua a enviar-nos os seus inestimáveis contributos. Desta vez temos a continuação dos artigos sobre Basic Apascalado, que começou por aparecer em 1986 no suplemento do MicroSe7e. O tema é o QL, o que é inédito em Planeta Sinclair.
Em 1984 o BASIC estava a evoluir para uma linguagem estruturada. No ano seguinte seria lançado o QuickBASIC em que os números de linha seriam opcionais. Mas em 1984, continuando a evoluir a sua linha de computadores, Sir Clive Sinclair lançou o Sinclair QL com o objectivo de ser uma versão profissional do ZX Spectrum. Embora comercialmente tenha sido um fiasco (vendeu 150.000 unidades enquanto o Spectrum vendeu 5 milhões), tecnicamente o QL era um sucesso: mais memória, mais velocidade, mais resolução gráfica, ... e uma linguagem BASIC que permitia a programação estruturada (sem o uso de GOTO). Este BASIC foi denominado, apropriadamente, SuperBASIC. Infelizmente, o preço (400 libras enquanto o Spectrum era 175 libras) e a quantidade de jogos que já havia para o Spectrum tornaram o QL nesse ilustre desconhecido!
Em 2017 houve uma nova tentativa para lançar uma versão melhorada do ZX Spectrum: O ZX Spectrum Next. Parece que o ZX Spectrum Next foi inspirado pelo Sinclair QL porque os melhoramentos do NextBASIC são semelhantes ao BASIC do QL:
DEFine PROCedure ProcName / END DEFine
implementado como DEFPROC ProcName() / ENDPROC
- Invocação de procedimentos:
ProcName
implementado como PROC ProcName
- Declaração de funções:
DEFine FuNction FunctionName / RETURN Result / END DEFine
implementado, com melhoramento, como DEFPROC ProcName() / ENDPROC = Result
- Invocação de funções:
LET result = FuncName(arg)
implementado, pior, como PROC FuncName(arg) TO result
devia ser LET result = PROC FuncName(arg)
- Ciclos:
REPeat CicleName / IF condition EXIT CicleName / END REPeat CicleName
implementado, com melhoramento, como REPEAT / REPEAT UNTIL condition
- IF command:
IF condition THEN / ELSE IF condition2 / ELSE / END IF
implementado, com algumas limitações, como IF condition THEN / : ELSE
- Declaração de variáveis locais:
LOCAL VarName
implementado, da mesma maneira, como LOCAL VarName
Mas, apesar destas melhorias, o NextBASIC deixou de lado um assunto importante que foi implementado no QL: os nomes das variáveis alfanuméricas (strings) e arrays ainda são limitados a um caracter. Isto é um grande inconveniente para os programadores modernos...
Quem tiver curiosidade para ver como é um programa em QL, pode descarregar aqui um exemplo em QL, Spectrum Next e ZX Spectrum.
Entretanto, quem quiser programar em BASIC estruturado no velho ZX Spectrum terá que usar um conversor como este que deixamos aqui.
Sem comentários:
Enviar um comentário