quarta-feira, 29 de maio de 2024

BASIC Apascalado no seu ZX81


Os utilizadores do ZX81 também são gente.

Mrtinb, do fórum Sinclairzxworld.com, disse que usa o BASIC Apascalado no seu ZX81. A pensar nele e nas outras duas pessoas que fazem isso. 

Entretanto, o Zé Oliveira fez um conversor para o ZX81 para facilitar o trabalho de escrever programas em BASIC Apascalado. Assim, fica agora mais prático usar BASIC Apascalado no ZX81.

Eis os comandos essenciais do BASIC Apascalado (BASIC estruturado):

REPEAT-UNTIL
WHILE-ENDWHILE
IF-ELSEIF-ELSE-ENDIF

E, lembramos que em BASIC Apascalado não deve ser usado o comando GOTO.

Para correr um exemplo online, clicar aqui.

Para aceder à página do conversor, clicar aqui.

Agora, sim! Até dá gosto programar no ZX81!

Pode-se escrever programas estruturados directamente no ZX81. Mas, é muito mais prático usar o conversor. Quem experimenta escrever um programa no conversor depois não quer outra coisa. A maior vantagem é que o BASIC continua a ser o BASIC do ZX81.  Apenas é necessário aprender a escrever PROGRAM-END, DEFPROC-ENDPROC, PROC, REPEAT-UNTIL, WHILE-ENDWHILE, IF-ELSEIF-ELSE-ENDIF e pouco mais. Vejam as instrução na página do conversor.

Sugestão: Vão até à página do conversor e experimentem alterar o programa.

Agora, algumas observações. Existem muitas maneiras de escrever programas estruturados. A técnica apresentada é baseada no uso do comando FOR-NEXT. Podem não acreditar mas antes dos computadores Sinclair houve linguagens BASIC que não permitiam usar esta técnica. 

Por exemplo, se escrevêssemos:

FOR i=1 TO 0
 PRINT i
NEXT i

O ciclo poderia ser percorrido uma vez enquanto nos computadores Sinclair o processamento não chega a entrar dentro do ciclo. Nestes casos, a única maneira de implementar o controle IF-ELSE seria usar o comando GOTO.

Exemplo:

IF i < 0
 PRINT "negative"
ELSE
 PRINT "positive
ENDIF

Ficaria:

10 IF i < 0 THEN GOTO 30
20 GOTO 60
30 REM IF
40 PRINT "negative"
50 GOTO 80
60 REM ELSE
70 PRINT "positive
80 REM ENDIF

Mesmo com um FOR-NEXT funcional, é possível escrever programas estruturados de várias maneiras.

Exemplo:

REPEAT
 INPUT i
UNTIL i=10

Poderia ficar:

FOR z=0 TO 1 STEP 0 
INPUT i 
LET z = (i=10)
NEXT z

Ou assim:

FOR z=0 TO 1 STEP 0
 INPUT i
IF NOT (i=10) THEN NEXT z

E, é tudo por hoje. Se tiverem alguma dúvida, perguntem.

4 comentários: