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-UNTILWHILE-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 0PRINT 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 < 0PRINT "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:
REPEATINPUT i
UNTIL i=10
Poderia ficar:
FOR z=0 TO 1 STEP 0NEXT z
Ou assim:
FOR z=0 TO 1 STEP 0INPUT i
IF NOT (i=10) THEN NEXT z
E, é tudo por hoje. Se tiverem alguma dúvida, perguntem.
Excellent article.
ResponderEliminarI'll be waiting for more.
Yeah! :)
EliminarThe battle of Pascal and evil GOTO continues...
ResponderEliminareheh, no stop
Eliminar