Escolar Documentos
Profissional Documentos
Cultura Documentos
Presidente
Flávio Barros Pinto
REDAÇÃO
Diretor Editorial: Carmo Cíiagas
Editor*» Eieciithra;
Antonio José Filhu Berta Sztark Amar
rrlir-.Ttri.-J
COMERCIAL
Diretor. RiibrrtiiSuvwa
(CLÇI
7
Marshall CavenrM Lirailed 1984/85.
C£P0H52-Sioftulo-5P-Brasl
Uma. n° M 3° andar
Illllllll
Amplie a capacidade musical de seu rá como comprimir os dados de suas sos. Para executá-la, precisaremos escre-
micro reduzindo os dados necessários melodias dentro dos programas BASIC, ver um programa em BASIC contendo
de maneira que eles tomem o menor es- um determinado número de linhas DA-
à execução de uma melodia. paço possível, liberando parte da memó- TA, como o apresentado a seguir:
As técnicas apresentadas aplicam-se à ria RAM para outro uso.
compressão de diferentes tipos de dados.
A aplicação das técnicas de compres-
são de dados não se restringe, natural-
10 LET T-.2
mente, aos programas destinados à exe- 20 RESTORE 100
cução de música. Estende-se a dados de 30 READ D
Tocar música utilizando o computa- todo tipo, desde que sejam repetitivos 50 IF D-255 THEN GOTO 20
dor é uma experiência fascinante, prin- e limitados a certos valores. 60 SOUND T ,
IIIIIIIIIIIHH llllllllll
24 9.169,189 140 DATA 35,35,29.28.23,23,21
150 DATA 17,24.22.21,19,17.16, 160 DATA 213,213,179.169,142,14
14 2.126,142 150 DATA 35,23,26.28.31,35,37
160 DATA 12.12,15.16,19.19.21, 170 DATA 213,106.119,126,142,15 ,42
19 9,169,189 160 DATA 47,47,40,37,31,31,2
170 DATA 12,24,22,21.19,17,16, 180 DATA 142.142,112,106,94,94, 8,31
14 106,112 170 DATA 47, 23. 26. 2B, 31,35.
1B0 DATA 19.19.23.24,26.26.24, 190 DATA 159,159,134.126,106,10 7,42
23 6,134, 126 180 DATA 31,31,25,23.21,21,23
190 DATA 17,17.20.21.24,24.20. 200 DATA 213,213,179.169,142,14 .25
21 2,126,142 190 DATA 35,35,29.28.23,23,29
200 DATA 12.12.15,16,19.19.21, 210 DATA 213,106,119,126,142,15 ,2B
19 200 DATA 47,47.40.37,31,31,2
210 DATA 12,24,22.21,19,17,16, 8,31
14 210 DATA 47,23.26,28, 31,35,3
220 DATA 255 7,42
220 DATA 255
fffi
10 SOUHD 7,56:S0UND 8,15
20 SOUND 1.0 -.RESTORE
10
20
RESTORE
DATA 160,0,174,133.3,238,4
PO D
10 T-3
30 READ D 8,192,136.208,5,206,132,3,240,6 20 RESTORE
50 IF D=255 THEN 20 ,202,208,245,76,34,3.96 30 READ D
60 SOUND 0.D 40 READ D S0 IF D-255 THEN 20
70 FOR T=0 TO 100:NEXT:GOTO 30 50 IF D - 255 THEN 10 60 SOUND D,T
100 DATA 213.213,179.169,142,14 60 POKE 900, T: POKE 901, D: CAL 70 GOTO 30
2,126,142 100 DATA 175.175.189,193,204,20
110 DATA 213.106,119,126,142,15 4,210.204
9,169.189 110 DATA 175,216.213.210,204.19
120 DATA 213,213,179,169,142,14 .31 7.193,185
2,126,142 110 DATA 47.23,26,28,31,35,37 120 DATA 175,175,189,193.204.20
130 DATA 213, 106. 119, 126, 142, ]5 .42 4,210,204
9,169.189 120 DATA 47.47,40,37,31,31,28 130 DATA 175,218,213,210,204.19
140 DATA 159.159.134,126,106,10 .31 7,193.165
6,94 106
, 130 DATA 47,23,26,28,31.35.37 140 DATA 197,197.207,210,218.21
150 DATA 159.106,119,126,142,15 .4; 8.223.218
-
Ê\
IIIIIIIIIIIHH lllllllll
150 DATA L97, 216,213, 210, 204. 19 linha 20 acerta o apontador das notas um buffer musical, capaz de guardar al-
7,193.185 no início dos dados. O laço FOR ... gumas notas. Se houver espaço no buf-
160 DATA 175,175,189,193.204,20 NEXT entre as linhas 30 e 70 lê os valo- fer para o som que está sendo emitido,
4.210,204 res das notas —
os números nas linhas o computador é liberado para outras ati-
170 DATA 175,218,213,210,204.19
7,193.185
DATA —
colocando-os dentro do co-
, vidades. Porém, havendo mais notas a
mando musical apropriado na linha 60. processar, o micro fica novamente com-
180 DATA 204.204,216,216,223,22
3.218.216
A linha 50 detecta o fim da melodia, prometido. Seja como for, o buffer não
190 DATA 197,197,207,210,218,21 marcado por um valor arbitrário — 255. alivia o trabalho de digitação das linhas
6,207.210 Se quisermos introduzir pausas no DATA nem reduz o espaço por elas ocu-
200 DATA 175,175,189,193,204.20 meio da melodia, podemos definir um pado na memória.
4,210,204 outro valor arbitrário, 254 por exemplo, Para contornar efetivamente esses
210 DATA 175,218,213,210,204.19 e incluir um teste para esse valor na li- problemas, o usuário só tem uma alter-
7. 193, 185 nha 40. Ao
surgir uma pausa no meio nativa: encontrar um meio de compri-
220 DATA 255 dos dados, a linha 40 desviaria o pro- mir os dados, tornando mais fácil seu
grama para uma outra linha. Esta pro- processamento e economizando espaço.
Se quiserem, os usuários do TK-2000 duziria um certo atraso, voltando depois
poderão modificar este e os próximos para a linha 30 a fim de continuar a exe-
programas a fim de usar o comando cução da música.
SOUND. Mas isto não é necessário: lai Tal como o programa está, as notas
como estão, os programas funcionam são fornecidas aos comandos musicais A compressão de dados é viabiliza-
tãobem em seu micro quanto no Apple. do BASIC e emitidas conforme vão sen- da pela existência, em uma melodia, de
Em geral, o MSX requer o dobro dos do lidas nas linhas DATA. padrões que se repetem. Quanto mais
dados utilizados pelos outros micros, já Embora esse processo funcione a padrões pudermos reconhecer, maior se-
que emprega dois bytes para definir a contento, ele exige um número muito rá o grau de compressão.
nota musical —
o byte mais significati- grande de dados, mesmo para uma Para identificar esses padrões de da-
vo e o menos significativo. A melodia lodía curta. Além de dificultar a digita dos, convém, em primeiro lugar, ouvir
que escolhemos, no entanto, é tão sim- ção e tomar espaço na memória, o ou tocar a melodia em um instrumen-
ples que o byte mais significativo de to- cesso de dados traz ainda um outro to, tentando distinguir as passagens que
das as suas notas é igual a 0, o que nos conveniente: enquanto a música está se repetem. Depois, escreva a música em
permite especificar só os bytes menos sendo lida e processada, o computador um papel, preocupando-sc apenas com
significativos. não pode se ocupar com outra tarefa. a frequência das notas —
ignore pautas,
A variável T estabelece um fator de Alguns micros, como o MSX, solu- claves, compassos etc.
tempo para a velocidade da música. A cionam parcialmente esse problema com Não há dificuldade em escrever, em
: K
IIIIIIIIIIIHI
qúência em que devem ser tocadas. Co- 29 RESTORE FOR W - 1 TO P +
:
ção. Mas, e se as notas tiverem duração mos dados, o programa que lê a melo-
C+l: GOTO 20
variada? Nesse caso, o trabalho torna- dia assim digitada é maior que a an-
40 POKE 900, T: POKE 901.
se um pouco mais complicado, pois pre- terior: 50 CALL 800
cisaremos levar em conta, além da to- 70 GOTO 30
nalidade, o tempo de cada uma o que — 100 DATA 13,23,13.23,31.23,1:
duplicará o volume de dados. 10 LET C-0: LET T-.2 ,23,41,50.13,23,0
Outra saída consiste em repetir as no- 20 RESTORE 100 110 DATA 47,47,40,37.31,31,:
30 FOR N-l TO C+l: READ P: 8.31,47.255
tas de maior duração. Se, por exemplo,
120 DATA 23. 26, 28. 31. 35, 37,.
uma nota dura duas batidas, ela será re- NEXT N
40 IF P=0 THEN GOTO 10 2.255
gistrada duas vezes. Esta foi a alterna- 130 DATA 35.35.29,28.23,23
50 RESTORE P
tiva que utilizamos ao transcrever a me- 21,23,35,255
Obtivemos 60 READ N
lodia do programa anterior. 140 DATA 31.31.25.23.21,21.:
70 IF N>=255 THEN LET C-C+l
a seguinte tabela: GOTO 20 3,25,255
150 DATA 35,35,29.28.23.23.:
80 SOUND T,N
TABELA I
90 GOTO 60 9,28,255
220 DATA 255
100 DATA 110,120.110,120,130,
G G A# B D D E DG 120,110,120,140,150,110,120,0
110 DATA 12,12,15,16.19.19,21,
G2 F E D C B A 19,12,255
120 DATA 24.22,21.19,17,16,14. DIM A(5.1):FOR K-l TO 1 3 READ
GGA#BDDEDG 255
130 DATA 7, 17,20.21.24. 24,26.
]
1
2
GOTO 3
P: NEXT:
READ P:IF P0255 THEN 2
:
TABELA 2
6,94.106.159,255 muito reduzido —
no Spectrum, por
140 DATA 142.142,112.106,94,94, exemplo, diminuiu de 97 para 59 bytes.
106,112,255 Rodando o programa, você verá que a
Tl = 0 c A# B D D E D G 150 DATA 159,159.134.126.106,10 música é exatamente a mesma do pro-
6.134,126,255 grama anterior. Os usuários do Spec-
T2- G2 F E D C B A 10013 ,23,13.23.0
trum vão estranhar o andamento da me-
T3- c D# A2 G2 C lodia, mas logo terão uma explicação.
C E 02 G2
Os dados que definem as minimelo-
T4 = D D F# G2 A2 A2 G2 F# 1 FOR I - 0 TO 22: READ A: POK dias estão nas linhas 110 a 150 e a se-
E 800 + I,A: NEXT quência principal —
isto é, a ordem em
2 DATA 160.0,174, 133,3,238,4 que as minimelodias são executadas —
TS = c C D* E G2 G2 Dl E
8.192,136,208.5,206,132.3,240.6 fica na linha 100. O laço na linha 30
,202,208.245,76,34.3,96 acerta o valor de P (variável de traba-
Podemos agora utilizar uma técnica 10 C - 0:T - 100 lho utilizada na leitura das linhas DA'
de compressão: as minimelodias não se- 20 RESTORE
rão digitadas sempre que aparecem na 27 FOR Z - 1 TO C + 24: READ P TA) de acordo com a sequência princi
pai, definindo a minimelòdia a ser to
música completa, mas uma única vez, : NEXT
I junto a códigos que especificam a se- 28 IF P - 0 THEN 10 cada. Na realidade, a sequência princi
um IHIIIIIIIII!
pai é uma de números
lista ou de va- — uma melodia simples raramente ultra- 1000 RESTORE 2000: LET TO-0: LE
lores que,combinados com uma cons- passa dezesseis. T L=2000
tante, resultamem números de linha — Para utilizar essa técnica de compres- 1030 FOR N=23296 TO 23296+111 S
correspondentes às linhas onde se encon- são, precisamos reduzir o número de no- TEP 6
tram as minimelodias. tas a quinze, deixando o 16? valor co- 1040 FOR K=0 TO 7: READ A: LET
Identificada a minimelodia a ser exe- mo um código de controle. Já comen- TO=TO+A: POKE K+N.A: NEXT K
cutada, a linha 50 calcula o número da tamos que, quanto mais comprimidos os
1050 READ A: IF A TO THEN GOT O
O 1080
linha DATA
correspondente. Só o Spec- dados, maior é o programa necessário 1060 LET L=L+10: LET TO=0: NEXT
irum permite o uso da instrução RES- para interpretá-los. Aqui, o programa N
TORE durante a leitura do bloco de da- deve decifrar cada nota abreviada que 1065 RESTORE BETUBN :
dos. O Apple e o MSX empregamlaços vai lendo nas linhas DATA. 1080 PRINT "ERRO DE DADOS NA LI
FOR.. -NEXT e o TRS-Color tem os O usuário, por sua vez, terá o traba NHA " ;L STOP
:
pontos de entrada gravados na linha 3. lho de selecionar as notas que serão usa 2000 DATA 42,109,91.235.42,111,
Alinha 10 utiliza a variável para C das na melodia, classificando-as em or 91 ,58, 779
a contagem do número de minimelodias dem crescente, conforme a frequência 2010 DATA 113.91,70,183,202,24,
já tocadas. A
duração de cada nota é a partir da nota mais baixa da primeirí 91,175,949
controlada por T, que também determi- oitava — nesse caso, Gl. Em seguida
2020 DATA 8,35,62.15,160.195,36
,91,602
na o andamento da música. A linha 40 precisará calcular os números codifica-
2030 DATA 61.1.8.203.56.203.56,
(28, no Apple e no MSX) verifica a úl- dos que aparecerão nas linhas DATA. 203, 791
tima minimelodia, que é marcada com Nossa melodia inclui doze notas: G, A. 2040 DATA 56,203,56,120,254.15.
0 na linha 100. O número 255 assinala A# ,
B, C, D, D# E, F, F# G2 e A2.
, , 202,65,971
o final de cada minimelodia. Ao Digite o terceiro programa e veja o 2050 DATA 91,34,111.91,235.34.1
encontrá-lo, o computador volta à se- sistema em ação. 09.91, 796
quência principal para saber qual será 2060 DATA 8,50.113.91.33,114.91
a próxima minimelodia. ,22,522
Existem várias alternativas para a di- 2070 DATA 0,8.95.25,126.6.0,79,
visão de uma música em sequência prin- 339
12 GOSUB 1000: LET T=-15: LET 2080 DATA
201.26,19,183,194.81,
cipal e minimelodias. De um modo ge-
NT=130: LET MS-170: LET MT= 91,1,796
ral, quanto menores as minimelodias,
210; GOSUB 300 2090 DATA 255.0,201,17,130,91.1
maior é a sequência principal. Devemos 95.65.954
90 STOP
buscar um
equilíbrio entre esses dois ele-
100 DATA 12,14,15,16,17,19,2o, 2100 DATA 91.71.42.107.91,43,62
mentos, a fim de evitar que minimelo- ,255,762
21,22,23,24,26.0,0,0,0
dias muito curtas exijam uma sequên- 200 DATA 1,2.1,2.3,2.1,2,4,5.1 2110 DATA 16,5,35,175.195,10,91
longa que anule as van-
cia principal tão .2,0 .35,562
tagens da compressão. 210 DATA 0,35,85,117,15.255 2120 DATA 190,194.103.91,195,88
220 DATA 166,117.67,31,255 .91. 35.987
230 DATA 68.103.170,166.79,255 2130 DATA 195.96.91,0.0,0,0,0.3
DIVIDINDO PARA VENCER 82
240 DATA 85.154,187.169.255
to utilizadas durante a execução de uma 365 IF X>NM THEN LET NM=X 25 C-0:T=10Q
melodia. Assim, não nos interessa e — 370 IF X=0 THEN GOTO 400 26 RESTORE1000
não é económico — empregar um siste- 380 POKE HL.X: LET HL-HL+1: 27 F0BZ«1T0C+1:READP:NEXT
ma planejado para aceitar um grande GOTO 360 28 IFP=0THEN25
número de notas. 400 POKE HL.X: LET HL=HL+1 29 RESTOBE1010:FORW=1TOP+2:BEAD
Cada posição de memória em seu mi- 401 LET X=HL: GOSUB 600 UW:NEXT
crocomputador de oito bits é capaz de 402 POKE 23403 LSB, 50 READN SS=N :
Q
10 DIM A(5,l) ,XU6) :FOB K-l TO
lor da linha
O próximo par é 2 e 3
0010 e 001
DATA
1 1 10 (210 no Spec-
—
em binário,
Combinados, esses valores
TK-2000, cuja função AND não permi-
te o cálculo de valores diferentes de 0 e
1). A nota é então emitida. Note que o
16: READ X (K) :NEXT : A (0 . 0) -PEEK (5 1 .
da cm 949. Desta vez, porém, em vez de terrodo personagem. Willie será afun ACABARAM-SE AS VIDAS
um som constante, o programa precisa dado mais uma posição e os sinos vol
de um som intermitente. Para isso, tarão a tocar —num tom diferente
os pés de Willie tocarem o Quando Willie tiver morrido pela
carrega-se o conteúdo do registrador R Quando
ferno, ele estará completamente enter quinta vez, o jogo acaba. Precisamos,
na pane menos significativa de HL, que "GAME
A baliza carry não será ajustada então, imprimir a mensagem
é o registro L. A operação é realizada rado.
chamamos a roti-
com 1 pela subtração, não haverá salto
OVER!". Para isso,
via acumulador porque não existe ne-
e o processador passará a executar a na de mensagens, ou me, em 58155. Co-
nhuma instrução Id l,r. mo sempre, os parâmetros devem ser co-
Usamos o registro R para manter a próxima instrução.
Tendo Willie chegado ao seu destino locados nos registros HL, A, B e IX.
memória dinâmica. Este é um recurso
final, convém tocar uma canção confor- A posição de impressão é carregada
do hardware com o qual você não pre-
tadora. Assim, carrega-se A com 9 e a em HL. A cor é ajustada em A. B car-
cisa se preocupar. Para nossos fins, bas-
rotina sound em 60006 é chamada. Ela rega o comprimento da mensagem e IX
ta saber que o valor' desse registro é va-
executa uma versão curta da melodia é usado como apontador de dados. Os
riável. Assim, cada vez que esta parte da
um som inicial do jogo. Para obter maiores de- dados para a mensagem estão em 57892.
rotina for acessada irá produzir
diferente. talhes sobre rotina da música, reveja o A rotina que imprime o escore em
artigo da página 788. 58939 é chamada para imprimir o pla-
Como nosso personagem perdeu uma car. Em seguida, ouve-se o toque que
SEIS PÉS OE PROFUNDIDADE vida, precisamos reajustar — ou me- marca o final do som no jogo. Para
lhor, decrementar —o número de vidas.
A posição da cabeça de Willie é car- O valor dessa variável é carregado de
regada da variável em 57332 e 57333 pa- 57343 para o acumulador, decremenla-
ra o par HL; 704 é carregado em DE e do e recolocado cm 57343.
subtraído do conteúdo de HL. O núme- Se Willie ainda dispõe de alguma vi-
ro 704 — 32 x 22 —indica o começo da, a instrução jp nz manda o proces-
da penúltima linha. Como Willie tem sador de volta ao programa de iniciali-
dois caracteres de altura, essa sjibtração zação, em 58606. Caso contrário, con-
colocará o valor 1 na baliza carry até tinua na rotina de nova partida.
que os pés de Willie tenham tocado o
fundo da teta.
Enquanto a baliza carry contiver 1,
a instrução jr c, dead manda o proces-
sador de volta ao início da rotina de en-
Illlllllll 46 CÓDIGO Dl MÁQUINA 46 llllllll
produzi-lo, a rotina BEEPER é chama- PB LDA 15 18249, que aponta para a posição que
da em 949 três vezes, com valores dife- PAA LDX (65535 o personagem ocupa na tela; U é carre-
rentes em HL e DE a cada vez. LEAX -1,X gado com 1536, o endereço do céu no
Para reajustar o atraso inicial BNE PAA topo da tela. Em seguida, a rotina
carrega-se o acumulador com 50 i
DECA CHARPR é chamada e imprime um
BNE PB
transfere-se o valor na posição 58732 bloco de céu, apagando a metade supe-
JSR CLS
Esse endereço ainda não foi menciona- rior da figura de Willie. O conteúdo de
LDA SFF 2
do: ele pertence à rotina final do jogo ANDA |15 X é então adicionado a 254 e recoloca-
e é incumbido de controlar o atraso ge- STA SFF22 do em 18249, para que o apontador de
ral. O processador salta para 58578, STA 3FFC2 Willie desça um caractere na tela.
ajustando-o de maneira que você possa STA SFFC4 U é carregado com 17774, o endere-
dar reinício à aventura, se quiser. STA 3FFC6 ço inicial dos dados para a figura de
LDY ISS0B Willie com as pernas juntas. Depois, o
390 LDX l$701 processador salta para a rotina
400 STX ,Y++ CHARPR, que imprime a metade supe-
410 LDX |$D05
rior de Willie uma posição abaixo da úl-
420 stx ,y++
A rotina a seguir coloca Willie em seu 430 LDX IS200F tima impressão. Novamente, X é incre-
túmulo: 440 stx ,y++ mentado com 254 e CHARPR é chama-
450 LDX 131605 da para imprimir a metade inferior da
460 STX figura.
470 LDX #31221 Enquanto Willie está descendo na te-
480 STX Y++ , la, ouve-se um grito de agonia para —
490 LDA 4200 isso, A e X são carregados de novo e o
500 LDX 4255 processador salta para SOUND.
510 JSR SOUND Willie deve chegar ao fundo da tela.
520 LDA 4200 Verificamos se isso já ocorreu carregan-
530 LDX 4200
540 JSR SOUND do X com o conteúdo de 18249 e com-
550 LDA 4255 parando esse valor com 6912, o início
560 LDX 4255 de 28? linha da tela. Se a posição de Wil-
570 JSR SOUND lie em X for menor do que 6912, a ins-
580 LDA 4100 trução BLO manda o processador rei-
590 STA DLL+1 niciar o laço Dl e move Willie um ca-
600 LBRA GBIN ractere para baixo. Caso contrário, o
610 SOUND EQU $5133 processador segue em frente, pois Wil-
620 CHARPR EQU S4BCA
lie chegou ao fundo da tela.
DLL EQU 551ED
630
64 0 GBIN EQU 34BE2 O conteúdo de 18249 que arma- —
650 NLV EQU S4BF7 zena o número de vidas que restam a
660 CLS EQU S4ACC Willie —
é então decrementado e LBNE
NLV manda o processador para a roti-
na que dá nova vida a Willie e traz de
volta a última tela. Uma instrução de
desvio longo é usada neste ponto, por-
Quando a rotina começa, ouve- se um que a rotina NLV encontra-se numa
sino bater duas vezes. A homenagem so- parte bem anterior do programa — cer-
nora ao finado Willie, porém, é promo- tamente mais do que 128 bytes, o limite
vida pela rotina SOUND, que será for- para um desvio curto.
LDX 4140 necida no próximo artigo de Avalanche,
JSR SOUND Antes de testar o programa aqui
LDA «131 apresentado, lembre-se de colocar um
LDX «213 RTS no endereço inicial de SOUND, Se o conteúdo de 18249 foi reduzido
JSR SOUND
S5133. Caso contrário, haverá um erro. a 0, Willie não tem mais nenhuma vi-
DI LDX 18249
LDU «1536 SOUND requer dois parâmetros que da, o jogo terminou e o processador exe-
I JSR CHARPR especifiquem o tipo e a duração do som. cuta a instrução seguinte.
i
LEAX 254.X Eles são utilizados pela rotina nos regis- A é carregado com 5; X é carregado
'
STX 18249 tradores A e X. Como as duas notas com 65535 depois, decrementado.
e, O
'
LDU #17774 produzidas diferem uma da outra, a ro- processador fica nesse laço até que X se-
i
JSR CHARPR tina SOUND trabalha com parâmetros ja 0. Em
seguida, A
é decrementado e
i
LEAX 254.X distintos a cada chamada. X volta a ser carregado com 65535. O
<
JSR CHARPR processo se repete até que A também te-
'
LDA «30 nha sido reduzido a 0.
LDX 4113 DESCENDO PARA 0 INFERNO
JSR SOUND
O
processador fica nesse laço 5 x
I
<
LDX 18249 65535 vezes —
pausa suficiente para que
i
CWPX (6912 Willie descerá na tela em direção ao o jogador medite sobre o trágico desti-
<
BLO DI inferno. Sua figura anterior deve, assim. no de Willie. Ao sair do laço de atraso,
i
DEC 18239 o processador salta para a rotina CLS,
'
LBHE NLU X é carregado com o conteúdo de que limpa a tela.
a
IIIIIIIHIIlIMMi BlllllllllHH
O conieúdo de SFF22 é então carre- do, começará com a mesma velocidade. 270
Encerrando a execução da rotina, o 280 inc hl
gado em A, onde se executa a operação
ld a, 255
processador faz um longo desvio para 290
lógica AND com o valor 15. O resulta- 300 call 77
do é armazenado nas posições de memó- o inicio do programa em GBIN. mo ld hl. (-5205)
310
ria $FF22, SFFC2, SFFC4 e SFFC6. 320 push hl
Informamos, assim, ao VDG (gera- 330 ld de. (62407)
dor do sinal de vídeo) e ao SAM (multi- 340 add hl .de
plexador síncrono de endereços) que es- A rotina a seguir enterra Willie e ve- 350 ld a. 255
tamos voltando ao modo texto. O pro- ri fica se pode ser ressi citado: 360 call 77
cedimento é o inverso do que utilizamos 370
360 ld de. 32
ao mudar para o modo gráfico. 1 d hl(~5205)
ld de (62407) 390 add hl.de
Y é carregado com S50B, posição on- Tf)
400 ld (-5205) .hl
de iremos imprimir a expressão "GA- 40 add hl de
50 410 ld de. (62407)
ME OVER!". X, por sua vez, é carre- 60 ld a, 255 420 add hl.de
gado com $701, códigos de tela para as 430 ld a.O
70 puah hl
letras GA. Essas letras são colocadas na 440 push hl
80 ca 11 77
tela na posição apontada por Y, que é 90 4S0 call 77
incrementado duas vezes. 100 dec hl 460
Em seguida, X é carregado com os 110 dec hl 470 ldTde, 32
códigos de tela para ME e as duas leiras 120 ld a. 255 480 add hl.de
são impressas na nova posição aponta- 130 puah hl 490 ld i ,1
140 call 77 500
da por Y, dois blocos à direita do início
150 510
de GA. Por fim, os últimos caracteres
— O, VE e R! —
são carregados e im-
160
170
ld de ,32
add hl.de
520
530
pressos nas posições adequadas. 540
180 ld a. 255
Um som anuncia o fim do jogo. Co- 190 puah hl 550
mo esse som é formado por três notas, 200 call 77 56G ld hl. (-5205)
A e X são carregados e a rotina SOUND 210 570 ld de, 704
é chamada três vezes. inc hl 580 abe hl.de
220
O número 100 é carregado no acumula- 590 jr cbo
230 inc hl
600 ld a, (-5221)
dor e armazenado em S51EE. Com isso, 240 ld a, 255
610
ajustamos o atraso com o valor inicial. 250
620 ld (-5221),
Quando o jogo for novamente executa- 260 call 77
. .
II llllllllll» 46 CÓNGODCMAQWNA 46
||||||||||
630 jp nz, 53888 255 x 255 vezes e tem como único fim
640 ld de, 234
APAGANDO OS VESTÍGIOS
atrasar a descida de Willie, para que o
650 ld a, 114 Antes de mandar Willie para o infer- jogador possa vê-la.
660 ld b.12 no, a rotina apaga seus vestígios na su- A posição de Willie é carregada da
670 tt puah bc
perfície.Se ele foi atingido por uma pe- variável em - 5205 e - 5204 para HL,
680 puah de
640 dra, esta também será apagada, evitan- onde é subtraída de 704 através de DE.
700 ld hl (62407) do a deformação de figuras. Para isso, Esse valor indica o começo da penúlti-
,
710 add hl, de coloca-se o padrão do céu, código 255, ma linha na tela. Como Willie tem dois
720 call 77 em cinco posições ao redor de Willie. caracteres de altura, a subi ração irá co-
7.10 pop af Examinando todas as situações de coli- locar o valor I na baliza carry até que
740 são, você verá que essas são as posições seus pés tenham tocado o fundo da te-
750 necessárias. la. Enquanto a baliza tiver esse valor,
760 O par HL é carregado com a posição a instrução jr c,mo manda o processa-
de Willie na que está no apontador
tela, dor de volta ao início da rotina do en-
djnz tt
ld b,30
em -5205 e -5204; DE é carregado terro, que afunda Willie mais uma po-
com o endereço inicial da TN da V RAM sição. Quando seus pés tocarem o chão.
RIO e somado em HL, o apontador na im- ele estará completamente enterrado; a
820 pressão. Em seguida, a rotina 77 da baliza carry não terá mais o valor 1 e
830 ROM é chamada cinco vezes, com o va- não haverá o salto. O
processador pas-
840 lor de HL apontando para cinco dife- sa, então, a executar a próxima ins-
650 rentes posições ao redor de Willie. trução.
860 Lembre-se de que a rotina 77 —
utiliza- O número de vidas precisa ser reajus-
870 da no decorrer do jogo para imprimir tado — ou melhor, decrementado, pois
880
890 ld (54133)
um padrão na tela —
coloca o valor o pobre Willie perdeu uma vida. O nú-
de A no endereço da VRAM apontado mero de vidas é carregado no acumula-
900 jp 53855
por HL. dor em - 5221 decrementado e recolo-
,
910
cado no mesmo endereço. Se ainda res-
DESCIDA PARA 0 INFERNO tam vidas a Willie, o processador salta
Essa rotina é executada quando nos- para o programa de inicialização, em
so personagem morre —
depois de se 53888. Caso contrário, continua na ro-
afogar no mar, cair num buraco, ser pi- Willie chega até o fundo da tela, em tina de nova partida.
cado por uma cobra ou ser atingido e sua descida ao inferno. Para criar esse
esmagado por uma pedra. efeito, começamos por apagar sua ca-
beça — se não o fizermos, veremos no ACABARAM-SE AS VIDAS
vídeo uma coluna de cabeças!
A posição de Willie, que aponta pa- Quando Willie tiver consumido suas
ra a sua cabeça, é carregada da variável cinco vidas, o jogo acaba. Devemos, en-
em - 5205 e - 5204 para HL, par de re- tão, imprimir "NOVA PARTIDA",
gistros guardado na pilha. O endereço com os padrões previamente colocados
inicial da TN na VRAM é carregado em na tabela de padrões da VRAM pela ro-
DE e somado em HL. A rotina 77 colo- tina fornecida no artigo da página 1001
ca o padrão 255 nessa posição, apagan- O par DE é carregado com 234, po-
do a cabeça de Willie. A posição é re- sição da tela onde a primeira letra será
cuperada da pilha para HL, sendo so- impressa. A contém o código de padrão
mada a 32 através de DE e colocada de da primeira letra; B, o número de pa-
volta em - 5205 e - 5204. Assim, Wil- drões (doze, incluindo o espaço em
lie afunda uma posição na tela. branco). O laço tt é executado doze ve-
Esse novo valor é somado com o en- zes, usando a rotina 77 para imprimir
dereço inicial da TN na VRAM
através a mensagem no centro da tela. Note que
de DE. O acumulador é carregado com este trabalho foi bem simplificado, por-
0, o código do primeiro padrão da fi- que os padrões para a mensagem já es-
gura de Willie com as pernas juntas. O tavam na VRAM, em sequência.
apontador é colocado na pilha e a roti- Depois, o laço formado por tu, du e
na 77 é chamada. O apontador é recu- su é executado 30 x 255 x 255 vezes, pro-
perado da pilha e somado com 32, mo- movendo o atraso necessário para a
vendo-se para a posição de baixo. A é mensagem ser lida na tela. A rotina que
carregado com 1, o código do segundo imprime o escore em 54023 é chamada
padrão da figura de Willie. Chama-se a para imprimir o placar final.
rotina 77 e Willie desce uma posição. Para reajustar o atraso geral do jo-
Em seguida, B e A são carregados go, carregamos o acumulador com 50 e
com 255. O
acumulador é decrementa- transferimos esse valor para 54133 —
do até 0 no laço dl. Quando chega a es- endereço que pertence à rotina final e
se valor,o processador, por meio da ins- controla a velocidade do jogo.
trução djnz alr, decrementa B, reajusta O processador salta para 53855, o ini-
A com 255 e repete o processo até que cio da rotina principal, para que você
B também seja 0. Esse laço é executado tente de novo, se quiser.
IIIIIIIIIIIHH
A programação dos blocos básicos de
te, sendo comparado com YS. Isso po- começo ou no final de um string. A sub-
caractere correspondente
de ser feito com a função MIDS(X$,1, 1), rotina que apresentamos a seguir mos-
ao código ASCII indica-
onde I é o indicador do laço. tra como remover brancos à direita. Ne-
do pela variável X.
la, a variável A$ contém a cadeia que
STRINC$(X,V) - Retorna uma cadeia com
Funções de conversão deve ser processada, e BS, o resultado
X caracteres iguais, com
da rotina:
código ASCII estipulado
por Y. Não existe para os
microcomputadores das
linhas Apple, Sinciair
Números podem ser representados 1000 FOR I=LEN(AS) TO 1 STEP -.
ZX-81 e Spectrum. 1010 IF MIDStAS.I.DO" " THEN
na forma de uma cadeia de dígitos,
1030
['unções do subcadeias mais os sinais de ponto (.), mais ( + ),
1020 NF.XT I
menos (-), e as letras E ou D (notação 1030 BS^LEFTS <AS I RETURN . ) :
tir da posição N da cadeia teao número X. Um espaço em Para testar a rotina, acrescente este
13 Número do primeiro bloco do Pronto, seu programa está totalmente procurados no disco, setor por setor. O
arquivo (0-67). recuperado! programa só poderá ser carregado na
Quando o programa que você quer memória do computador quando tiver-
recuperar è maior, a operação torna-se mos montado a sequência correia de
14-15 Numero.de byles em uso no úl-
complicada, pois o DOS passa para FF blocos. Inicie a busca pelos blocos vizi-
timo setor do arquivo. nhos do inicial e vá se afastando até ter
o valor de todos os blocos usados pelo
programa que foi apagado. Assim, co- localizado todos eles. É um trabalho ár-
16-31 Sem uso. meçamos o trabalho conhecendo apenas duo, mas, certamente, haverá casos em
o primeiro bloco. Os demais têm que ser que valerá a pena.
Y*ll+X
2190 MIDS (AS(P/128) .P+128* (P>12
8) , D-US
2200 F=l:GOTO 2030
2210 IF Y<0 THEN H-H-44 Y-0 F-l : :
2310 RETURN
2320 CLS:FOR J-H TO H+87 STEP 1
1 :FOR TT=0 TO 10
2330 G-ASC(MIDS(AS(J/128) J+TT+ ,
2350
2340 PRINT " ";CHRSÍG)i" ";:GOT
O 2360
2350 PRINT LEFTS("D"+HEXS(G) .2)
ETURN
3000 CLS:PRINT"SALVAR NO MESMO
SETOR (S/N) ?"
3010 RS-INKEYS:IF RS<>"S" AND R
SO"N" THEN 3010
3020 IF RS*"S" THEN 3040
030 CLSrGOSUB 5000
27 APLICAÇÕES 27
COMO USAR 0 PROGRAMA no diretório não garante que ele esteja ção de nomes de arquivos e linhas BA-
disponível no disco —
os blocos usados SIC. O segundo deve ser usado quando
por ele podem ter sido reutilizados por se quer encontrar os valores hexadeci-
Carregue o programa na memória e
escolha o disco no qual você vai traba- um outro arquivo. Se você tem uma im- mais de um determinado byte.
lhar. Enquanto está aprendendo, con- pressora conectada ao Micro, digite PO- As setas movem o cursor para o pon-
KE 150,1 antes de executar o programa: to que se desejar. Para alterar um va-
vém utilizar um disquete que não con-
a opção de imprimir o diretório lhe se- lor, pressione a barra de espaços e for-
tenha dados importantes.
Digitando RUN, você terá quatro op- rá oferecida. neça o novo byte, sempre em hexadeci-
Emseguida, digite a tecla C para car- mal. Note que apenas uma parte do se-
ções: Carregar setor{C). Ver/ editar se-
regar um setor. Tente primeiro o dire- tor é exibida. À medida que se movi-
tor (V), Salvar setor (§), Direlório (D).
Pressione D
para obter uma listagem de- tório, pedindo a trilha 17, setor 3. Digi- menta o cursor para baixo, a tela vai ro-
talhada dos arquivos do disco, incluin- te V para visualizar os dados. Pressio- lando e mostrando o que resta.
do os que foram apagados anteriormen- nando A ou H, você poderá obter, a Ao terminar a edição de um setor,
qualquer momento, os dados no forma- pode-se gravá-lo usando a opção S do
te. Estes estarão marcados com um as-
terisco na coluna DEL. Lembre-se de to ASCII ou hexadecimal. O primeiro menu. Entre as informações solicitadas
é o mais conveniente para a identifica- pelo programa... e pronto!
que a inclusão do nome de um arquivo
IIIIIIIIIIIHI
IIIIIIIIIIIMH llllllll!
parâmetros iniciais a cada vez, até que Caso pareça complicado, pro-
isso lhe o próximo programa.
sa técnica, execute
uma certa condição, previamente esta- cura uma oulra posição intermediaria, Ele imprime todos os valores inteiros
belecida, seja alcançada. D. O processo se repete até que ele atinja posilivos de N até I
seu destino.
Esse exemplo demonstra o princípio
A MÁQUINA INTELIGENTE básico da recursão, tal como é aplicada
em programação: a solução de um pro-
blema é obtida pela sua subdivisão em 20 PRINT INVEP.SE 1 ;TAB lj" I
Imaginemos a seguinte situação: um
motorista se encontra em uma grande ci- problemas menores ou mais fáceis. NTEIROS POSITIVOS DE N ATE 1"
30 INPUT "DIGITE O INTEIRO A
dade desconhecida e precisa ir do lugar Assim que o programa alcança um QUAL VOCE QUER C
PARTIR DO
A para o lugar B. Embora tenha o ma- novo nível de recursão, torna-se neces-
ONTAR REGREDIN- DO ATE 1 (0 P
pa da cidade, acha muito difícil ir dire- sário armazenar as informações que fo- ARA SAIR) -;N: LET N-INT N:
tamente ao local desejado. Decide en- ram conseguidas no nível anterior, pa- IF N<1 THEN STOP
tão dividir o itinerário em vários tre- ra recuperá-las no passo seguinte. Ao 40 GOSUB 80
chos, estudando um por vez. Escolhe, início de cada nível, um novo conjunlo 50 GOTO 30
assim, um lugar C, em uma posição in- de parâmetros é montado e, por meio 80 IF N-0 THEN RETURN
termediária. Analisa o trajeto entre A de um teste, verifica-se se tal etapa che- 90 PRINT ;N; " "
Ce se dirige para lá. gou ao fim. Sem esse leste, o processo 100 LET N=N-1: GOSUB 80
e
nunca terminaria. 110 RETURN
Chegando em C, o motorista avalia
a possibilidade de ir diretamente até B Para observar o funcionamento des-
10 CLS
20 PRINT " INTEIROS POSITIVOS DE
N A 1"
30 PRINT PRINT INPUT" DIGITE O V
: :
110 RETURN
10 CLS
20 PRINT TAB (5) " INTEIROS POSIT
IVOS DE 1 A N*
30 PRINT:PRINT:INPUT"DIGITE O N
ONERO PARA A CONTAGEM REGRES-SI
VA <0 OU MENOS PARA SAIR) " N :N- ;
O programa permite que você intro- desta vez, faz o programa retornar da
duza um valor inteiro e, a partir dele, sub-rotina chamada na linha 40. A Unha
faz uma contagem regressiva até 1. 50 executa o programa novamente.
Qualquer valor menor que 1 interrom- Note que quando o programa termi-
pe o programa. No Apple e no TK-2000, na, a variável N contém o valor 0, atri-
valores maiores que 23 não funcionarão, buído na linha 100. Mas a linha 90
pois esses micros podem memorizar ape- nunca imprime esse valor. Para colo-
nas 23 desvios para uma sub-rotina. car o último valor impresso na variá-
A linha 40 chama a sub-rotina recur- vel N, você poderia acrescentar a linha
siva. A primeira linha desta verifica se 105 com o comando N = N + 1 (LET
a tarefa foi completamente executada. N= N+ 1, para o Spectrum). Desse modo,
Esse teste é essencial para o término de N conteria sempre o último valor impresso.
todo o processo.
No primeiro nível da recursão, a va-
riável N possui o valor introduzido por
PROCEDIMENTOS RECURSIVOS Os tipos de BASIC com que traba-
você. Ele é impresso pela linha 90. se- O lhamos não permitem que uma variável
gundo nível é inicializado pela linha 100, Algumas outras linguagens, como o assuma um valor e, ao sair da sub-ro-
que reduz o valor de N em uma unida- PASCAL, incluem o que se chama de tina, retorne ao valor inicial sem a in-
de e chama a sub-rotina novamente, procedimento iprocedure). Trata-se de terferência de um
comando. Assim, so-
com o valor de N já alterado. O progra- um conjunto de linhas definidas em uma mos obrigados a restabelecer seus valo-
ma alterna-se, assim, repetidamenie, en- certa parte do programa — como uma res iniciais antes de iniciar outra sub-
tre as linhas 80 e 100. sub-rotina —que recebe um nome. Di rotina. O programa a seguir demonstra
Quando N alcança o valor 0 (na li- ferentemente das sub-rotinas, um pro- como contornar esse problema.
nha o programa é desviado, como
100), cedimento é chamado através dessi
de costume, para a linha 80, onde en- me. Quando se define um procedimen-
contra o comando RETURN, que o faz to, indicam-se também as variáveis que,
retornar da sub-rotina chamada na linha após seu término, retornarão ao estado
100. A próxima instrução, na linha i 10, inicial. Este é um bom expediente na
também é um comando RETURN, que, construção de processos recursivos.
:
IIIIIIIIIHHM llllllllll
30 PRINT TAB 6; INVERSE 1 "C |
30 PRINT §6. "CALCULO DE FATORIA 90 PRINT AN"! = ";A(1): PRINT
ALCULO DE FATORIAL" : GOTO 40
150 IF N(LE) - THEN A (LE) -
10 INPUT "DIGITE NUMERO PARA 0
FATORIAL (1-33, OU 0 PARA l: GOTO 1B0
SAIR) " ;NU " :NU 160 LE = LE + 1:N(LE) = N (LE -
50 IF NU>33 OR NUOINT (NU) 50 IF NU>33 OR NUOINT (NU) OR N 1) - 1: GOSUB 150
OR NU<0 THEN RUN U<0 THEN 20 170 LE - LE - 1:A(LE) - A (LE +
60 IF NU-0 THEN STOP 60 IF NU-0 THEN END 1) * N (LE)
70 LET LE-lt LET N(LE)=NU: 70 LE-1:N(LE)-NU:AN-NU 160 RETURN
LET AN=NU 80 GOSUB 150
BO G03UB 150 90 PRINT AN" - " A (1) PRINT :GO
! ; :
90 PRINT AN " ;
! = " ;A(1) TO 40
PRINT ! GOTO 40 150 IF N(LE)=0 THEN A(LE)-1:G0T
150 IF N(LE)-0 THEN LET A (LE) O 180 10 DIM N (34) .A(34)
-1: GOTO 180 160 LE-LE+l:N<LE)-N(LE-l)-l:GOS 20 CLS
160 LET LE-LE+1: LET N(LE)=N<L UB 150 30 PRINT TAB (9) "CALCULO DE FAT
E-D-l: GOSUB 150 170 LE-LE-1:A(LE)-A(LE+1)"N(LE) ORIAIS"
170 LET LE-LE-1: LET A(LE)-A(L 180 RETURN 40 PRINT:INPUT" DIGITE O NUMERO
E+1)*N(LE) FATORIAL (1-33 E 0 OU MENOS PA
180 RETURN RA SAIR) " ;NU
50 IF NU>33 OR NUOINT (NU) OR N
10 DIM N(34) ,A(34) U<0 THEN 20
20 HOME 60 IF NU=0 THEN END
30 PRINT TAB 10)"CALCULO DE
( 70 LE"1 :N (LE) =NU: AN'NU
FATORIAIS" 80 GOSUB 150
40 PRINT INPUT "DIGITE O NUM
: 90 PRINT PRINT AN ": = "iA(l):P i
'.
IIIIIIIIIIIHH llllillll
Execute o programa e introduza um lhamos apresentam uma limitação quan- GOTO 10
valor qualquer, Lembre-se de que valo- to ao número de vezes que uma sub- 50 DIM ACA): DIM R [2+SQR (A))
res maiores que 22 não funcionarão no rotina pode chamar outra. A cada cha- 60 LET A(A}-100: PRINT
Apple, nem no TK-2000. mada o sistema precisa guardar ha me- INVERSE 1; '"TABELA DESORDENAI)
O programa calcula o fatorial do nú- mória a posição de onde ela foi feita, o A "' :
FOR K-l TO A-l LET A
' : :
mero que você digitou e o imprime na que requer a utilização de um pontei- (K)-INT (RND*99) PRINT A (K) :
tado da multiplicação, entre si, de todos 70 LET L-l: LET LV-1 LET R-A
que o Apple e o TK-2000 não podem :
ele mesmo. Por exemplo, 5 fatorial limite de 33 níveis para outros micros ORDENADA FOR K-l TO A- :
1
'
alx2x3x4x
:
(escreve-se 5!) é igual deve-se simplesmente à capacidade de PRINT A (K) " "
1: NEXT K J
; :
5, ou seja, 120. O cálculo de fatoriais armazenamento de números. O fatorial 90 IF INKEYSO" " THEN GOTO
geralmente é necessário em aplicações de 34 excede 1.7 x 10 T 38, o máximo 90
estatísiicas. Um
método rápido de exe- que um computador pode manipular. 100 RUN
cutá-lo será sempre muito útil. 1000 IF R>L THEN LET I=L: LET
Inicialmente, o programa dir J=R+1: LET V=A(L): GOTO 1010
na algumas variáveis (linha 10), em nú-
1005 RETURN
1010 LET 1 = 1 + 1: IF AdXV THEN
mero suficiente para gerar o fatorial má-
GOTO 1010
ximo. A
variável N terá como índice o Para manter seu programa dentro 1020 LET J-J-l: IF A(J)>V THEN
nível da recursão (LE) —
N(LEÍ. dos limites do micro e evitar uma "pa- GOTO 1020
A estrutura principal do programa ne", você deve saber como ele se com- 1030 IF J>=I THEN LET T-A(I):
começa na linha
70, onde o nível é ini- porta desde o primeiro nível da recur- LET A(I)=A(J): LET A(J)=T: GOTO
ciaiizado em
Nessa mesma linha, o
I. são. Em gera!, utiliza-se como teste uma 1010
número que você introduziu supo- — informação inicial que culminará em 1040 LET T-A(L): LET A(L)=A(J)l
nhamos que seja 5 — é atribuído a N(l) uma resposta já esperada. Para facili- LET A(J)-T
e a AN (variável que irá acumular a res- tar o trabalho, você pode também con-
1050 LET R(LV)-R: LET LV-LV+1
posta). A
linha 80 chama então o pri- siderar a rotina recursiva como um cer-
LET R=J-1 GOSUB 1000 :
nha da rotina de recursão (linha 150) ve- Note que um desvio condicional para 10 70 RETURN
rifica se a tarefa já chegou ao fim, ou fora da sub-rotina é desaconselhável,
seja, se N(LE) = 0. Como N(LE) ainda
é 5, o programa passa para a linha 160,
que incrementa o nível (para 2), estabe-
pois o ponteiro que marca a volta do
GOSUB ficaria desorientado.
Quando você estiver escrevendo uma
D
10 CLS
lece como número corrente o 4 e chama sub-rotina recursiva, procure começar
20 PRINT SI 1 "ORDENAÇÃO" .
a sub-rotína recursiva mais uma vez. sempre com um teste de saída. A fun-
30 PRINT: INPUT* QUANTOS NÚMEROS
Quando a linha 160 incrementar o va- ção desse teste é decidir se o problema VOCE QUER ORDENAR (1-10
lor do nível para 6 e decrementar o nú- (caracterizado pelos parâmetros iniciais) 00) ";A
mero corrente para 0, a linha 150 detec- pode ser resolvido diretamente, sem a 40 IF A<1 OH A>1000 THEN 10
tará esse último valor atribuindo 1 a necessidade de subdivisões. 50 DIM AIA) ,R(I+SQR(A))
N(6) e desviando o programa para a li- Antes de começar o programa, pla- 60 A(A)=100:PRINT" TABELA DESOR
nha 80. Encontrando um RETURN a
1 , neje com cuidado o que deseja que a DENADA :":FOR K-0 TO A-1.A(K)-R'
execução passará para a linha 170, que sub-rotina faça. E, quando já estiver es- ND(99) :PRINT A (K) NEXT PRINT ; : :
foi a última a chamar a sub-rotina. Es- crevendo o programa, não se preocupe 70 L-0 :R-A-1 :GOSUB 1000
sa linha reduzirá o valor do nível para com a sequência exata da execução, le- 80 PRINT " TABELA ORDENADA :":F
OR K-0 TO A-1:PRINT A(K);:NEXT
5 e A(5) passará a ter o valor de A(6) vando em conta apenas dois princípios
90 IF INKEYSO" " THEN 90:ELSE
vezes A(5). Com
isso, atribui-se a A(5) básicos: a condição de saída e a subdi- RUN
0 valor de 1 x 1 ou seja, 1, linha 1 80
. A visão em problemas menores. 1000 IF R>L THEN I-L J-R+l :V-A :
devolve, então, o controle para o final Seguindo o método aqui apresenta- L) ELSE RETURN
da linha 150, onde A(4) assume o valor do, você será capaz de aplicar a recur- 1010 I-I + 1:IF AdXV THEN 1010
de A(5) vezes A(4). Desse modo, será são aos seus programas sem maiores di- 1020 J-J-llIF A(J)>V THEN 1020
atribuído ao nível da recursão o valor ficuldades. Aqui está um exemplo de co- 1030 IF J>-I THEN T-A (I A Cl) -A ) :
1 (calculado acima) vezes 2. mo essa técnica pode melhorá-los, tor- (J) :A(J)-T:GOT0 1010
O
laço irá se repetir sempre que o nando-os assim mais rápidos e com- 1040 T-AtL) :A(L)-A(J) :A(J)-T
GOSUB da linha 160 for chamado. pactos. 1050 R(LV)=R:LV-LV+l:R-J-l:GOSU
B 1000
Quando o laço estiver completo, LE se-
1060 LV-LV-1:R=R(LV> :L-I:GOSUB
rá 1 e o último RETURN apontará pa- 1000
ra a linha 80. A próxima instrução (li-
1070 RETURN
nha 90) imprimirá então o resultado:
120.
10 BORDER
CLS
1: INK 7: PAPER 1«
BHS]
20 PRINT TAB 11; INVERSE l[" 10 HOME
ORDENAÇÃO " 20 HTAB (11): INVERSE PRINT :
IIIIIIIIIIIHH llllllllll
>9 THEN GOTO 30
*
40 IF A < 1 OH A > 1000 THEN 1 Nosso programa não contém tantos des-
vios condicionais do tipo IF...THEN, 35 DIM T{3)
0
GOTO..., nem tantas variáveis. 36 LET AS-"B-'B": INK 2: FOR M
50 DIM A (A) ,B(1 + SQ.B (A)) "
PRINT -21 TO 21-N STEP -li PRINT AT
60 A (A) - 100: PRINT ! Inicialmente, o programa pede que
NÚMEROS FOBA DE ORDEM :-" FOR M.7:AS;AT M,15;AS:AT M.23:AS:
[ I
você introduza a quantidade de núme- NEXT M INK 0
K - 0 TO A - 1 :A(K) - INT (99 ros randômicos que serão ordenados. A 37 PRINT
:
que irá guardar o valor das variáveis du- 36 FOR M=l TO N: PRINT INK 7
B 1000
NÚMEROS NA ORDEM :- rante o processo recursivo. A
linha 60 PAPEH 0:AT 20-T U 8 ;N*1-M: .
;
)
BO PBINT :
= 0 TO A - 1: PRINT A
FOR K gera e imprime os números randômicos, LET T(l)-T(l)+1: NEXT M
(K) ;" " NEXT : : ainda fora de ordem, e a linha 70 cha- 39 PRINT |1:AT 0,3; "QUALQUER
90 GET IS: IF 1$ < > - " THEN ma a sub-rotina recursiva para ordená- TECLA PARA COMEÇAR"
40 PAUSE 0: PRINT *1]AT 0,3;"
90 los. A linha 80 é responsável pela im-
100 RUN pressão final.
1000 IF R > L THEN I = L:J = B 45 LET TT-2: LET TF-1: LET R-
+ 1:V = A(L) GOTO 1010
O método baseia-se na junção de 3
:
duas listas,ambas previamente subme- 50 GOSUB 90
1005 BETURN A
1010 I - I + 1: IF ACI) < V THE
tidas a uma ordenação. lista princi- 70 PRINT AT 10,5;"NUMEBO DE M
N 1010
pal, composta de números randômicos OVIMENTOS-n";2"N-l
1020 J - J - 1 IF A(J) > V THE :
desordenados, é dividida-em duas outras 60 STOP
N 1020 listas (linhas 1010 e 1020). Observe que, 90 IF N=0 THEN RETURN
1030 IF J > =1 THEN T - A(I) na linha 1000, há um teste de saída pa- 100 LET N-N-l : LET W-R: LET R-
:A(I) - A(J):A(J) - T: GOTO 101 ra determinar o fim da recursão. Cada TT: LET TT-W: GOSUB 90: LET W-
R: LET R-TT: LET TT-W
0 uma das listas sofre então uma ordena- 110 GOSUB 200
1040 T - AU):A(L) - A(J>:A(J) ção parcial (linha 1030), sendo poste-
120 LET W-R: LET B-TF: LET TF"
- T riormente reunidas. A sub-roiina irá GOSUB 90: LET W-E: LET R=TF
1050 R(LV) - R:LV - LV + 1:S - chamar a si mesma (linha 1050) até que
W:
J - 1: GOSUB 1000 ! LET TF-W
a ordenação esteja completa. 130 LET N-N+l RETURN
1060 LV - LV - 1:R - R(LV):L - :
I: GOSUB 1000
Apesar dos métodos de ordenação 200 PRINT AT 20- (T (TF) -1 TF*8 ) ,
1070 RETURN em BASIC não serem tão rápidos quan- INVERSE 1 AT 20-(T(TT)), ;
B K=0 TO A-l: PRINT A<K)::NEXT construção dos mais complexos gráfi- INT ei65+K*32+J*9.CHRS<175)+"
90 IF INKEYSO" " THEN 90 ELSE cos. Essa técnica também aparece em +CHR3(175) :NEXT J,K ;
468 com esta, que utiliza a recursão. ANÉIS (2-9)n":N: IF N<2 OR N 1040 N-N+l RETURN :
) :
IIIIIIIIIUHH lllllllll
mm vareta,
xar um
movendo um por
disco maior sobre
terceira vareta serve
vez e
um
sem
menor.
como apoio tempo-
dei-
A
10 HOME DIM T 3 : (
rário durante o processo.
20 HTAB (14): INVEBSE PBINT
"TORRE DE HANOI " NORMAL :
:
O computador mostrará uma simu-
lação animada, pedindo, inicialmenle,
30 PBINT PRINT INPUT "
: :
m
10 KEY OFF:CLS:DIM T(3)
20 PRINT TAB (13) "TORRE DE HANÚI
T(TT)-T(TT)-1
170 RETURN
CÓDIGO DE MAQUINA
IIIIIIIIIIIIHI
Nem tudo é desastre no caminho
râmetros da duração e da tonalidade sào com 50. Como Willie não chegará à re-
Nenhum outro aventureiro conheceu
tantos infortúnios quanto Willie. Nos- fornecidos pelo método usual, através compensa mais do que cinquenta vezes,
dos pares de registros DE e HL. o jogo se tornará cada vez mais rápido
so personagem já experimentou até a
morte e a descida para o inferno. Mere-
— e, portanto, mais difícil. Cada vez
BNE coloca ultrapassar 3. Para evitar que isso 130 org 55532
for igual a 10, a instrução
140 po ld hl ,-5219
o processador no róiulo SNO, que vol- ocorra, utilizamos a instrução res 2,a,
150 ld d,0
ta a armazenar o dígito que foi incre- que ajusta com 0 o bit 2 do acumula-
160 ld e.a
mentado no endereço apontado por X. dor. Assim, quando o valor incremen- add hl.de
170
O processador retorna. tado chega a 4, o bit 2 é ajustado com 180 pd push hl
Se o resultado for igual a 10, o dígi- 0. O conteúdo do acumulador volta, en- 190 ali
to apontado por X é ajustado com 0
— tão, a 0, colocando o jogo novamente 200 pop hl
ou seja, é limpo. X é então decremen- no primeiro nível. 210 djnz pd
tado, fazendo o apontador se mover pa- O resultado dessa operação é arma- 220 call 54023
ra o digito imediatamente à esquerda. zenado em -5228, onde o novo valor 230 ret
no controle do jogo. 240 ad ld a, (hl)
BRA SDI manda o processador de será utilizado
250 inc a
novo para o laço de incremento de dígi- 260 cp 10
to. Depois que o próximo dígito é incre- 270 jr nz.an
mentado, verifica-se se ele ultrapassou 280 ld a,0
o valor 9. Encontrando um dígito que 290 ld (hl) ,3
não exceda o valor máximo, o proces- O atraso do jogo em 54133 é coloca- 300 dec hl
sador o armazena na posição apontada 310 jr sd
do no acumulador, decrementado e ar- 320 an ld (hl) ,a
por X. Observe que, ao voltar da roti- mazenado de volta em 54133. Isso ace- 330 ret
na de escore, o processador recupera o lera o jogo, já que o tempo gasto pelo 340 end
valor de X da pilha. processador no laço de atraso da rotina
A rotina SOUND trabalha exatamen- principal diminui.
A posição de memória - 5219 corres-
te do mesmo modo que a rotina encar- Como você poderá verificar na últi- ponde ao endereço inicial das variáveis
regada de executar Greenleaves. Porém, que contêm os dígitos do escore, carre-
ma rotina da série Avalanche, esse atra-
toca apenas uma vez e usa a pilha como com gadas com 0 pela rotina de inicialização
so foi originalmente ajustado 50.
fonte de dados. Assim, sempre que aumenta o número dada em artigo anterior. O registro D é
Depois de SOUND, há uma outra pe- carregado com 0 e o registro E, com o
de pontos no placar, o jogo se torna
quena rotina chamada CLICK. Ela exe- conteúdo do acumulador. Lembre-se de
mais rápido e difícil. Cada vez que vo-
cuta a trilha sonora da caminhada de que o acumulador carrega o número do
cê enfrentar os mesmos quatro níveis,
carregando os parâmetros em X digito quando o processador entra nes-
Willie, a velocidade será maior.
e A e chamandoa rotina SOUND. ta rotina.
Para testar a rotina, use as teclas M O conteúdo do par DE é somado em
e N e este programa em BASIC. CONTAGEM DOS PONTOS HL. A operação faz o apontador de dí-
onde seus va-
gitos percorrer as variáveis
10 POKE 3000, 37 lores estão armazenados, a partir de
20 EXEC 19426 Por alcançado o premio, Willie re-
ter
- 5219, até o digito indicado pelo con-
30 EXEC 19902 cebe mais 500 pontos. Para isso, chama-
teúdo de A. O conteúdo de HL é colo-
40 GOTO 30 mos a rotina de contagem e fornecemos
cado na pilha, onde ficará temporaria-
os parâmetros nos registros A e B. O va-
mente armazenado, e sd é chamada.
lor 2 colocado em A especifica o segun-
do dígito a parur da esquerda —o das
centenas —
, que será
incrementado. O ALTERANDO 0S DÍGITOS
Esta pequena rotina coloca Willie no valor 5 em B informa à rotina o núme-
nível seguinte, aumenta a velocidade do ro de vezes que esse dígito deve ser au- A rotina sd, que trata dos dígitos, co-
mentado. Incrementando as centenas meça carregando o acumulador com o
placar. cinco vezes, acrescentamos 500 pontos
ao escore. Em seguida, o processador
10 org 55506 vai para a rotina principal do jogo, em
20 ld a, (-5228) 53888, e coloca Willie na base da
30 encosta.
40 res 2.
50 ld (-5228) ,a
60 ld a, (54133)
70 dec a
80 ld (54133),
90 ld a,
A pequena rotina que se segue acer-
ld b,5 ta os pontos de Willie quando ele alcan-
100
110 call 55532 ça uma recompensa ou escala uma par-
120 jp 538B8 te da encosta.
o nível de dificuldade
O de
dificuldade
nivel do jogo é
transferido da variável equivalente em
- 5228 para o acumulador. A seguir, o
conteúdo desse é incrementado. Como
existem apenas quatro níveis qp-
jogo, o valor dessa variável não deve
II lllllllllllll» 47 CODKODIMJiaUm 47 |||||||||
valor do digito apontado por HL. Este gito foi incrementado até 10, a rotina sd
é ineremeniado e comparado com 10. Se terá deslocado o apontador. Caso não
for igual alO — ou seja, se ultrapassou tivéssemos armazenado o valor inicial
o maior valor de um dígito decimal, 9 na pilha, desta vez estaríamos alteran-
— será preciso incrementar o próximo
, do o dígito errado.
digito. Se o dígito analisado ainda não O laço é fechado por uma instrução
ultrapassou 9, a instrução jr nz manda djnz, que decrementa o conteúdo de B
o processador para o róiulo sn, que ar- até zerar esse registro. Como você deve
mazena seu valor na variável corres- se lembrar, B carrega o número de ve-
pondente. zes que o dígito do escore tem que ser
Quando o dígito que está sendo alte- incrementado quando o processador en-
rado chega a 10, o salto não ocorre e o tra nesta rotina.
processador continua com a próxima O processador continua no laço pd
instrução. O valor 0 é armazenado nes- atualizando o escore o número de vezes
se digito e o par HL é decrementado, inicialmente especificado por B. Quan-
passando a apontar para o dígito ime- do B chega a 0, a rotina de impressão
diatamente á esquerda. A instrução jr dos dígitos em 54023 é chamada, impri-
sd manda o processador de volta para mindo o novo escore na tela.
sd e a rotina de incremento recomeça pa- Em seguida, o processador retorna.
ra o próximo dígito.
Se este também já ultrapassou 9, o
processador continua no laço. Mas, ce-
do ou tarde, um dígito que não chegou
a 10 será encontrado. O processador irá
então para sn, armazenando o último dí-
gito e retornando para o lugar da roti-
na pd de onde sd foi chamada.
ou, no caso dos jogos de estratégia, na um MISTO, como seu próprio nome 120 C!.S:CLS-STBINGS(35." ")
transformação do computador em um diz, aceita qualquer tipo de combinação 130 DIMO(NP,12) ,P<NP. 12) ,3(NP,1
adversário inteligente e de bom nível. O de dados. O YATCH, finalmente, é o 0)
jogo que apresentamos neste artigo é di- grupo formado por cinco dados iguais.
ferente: o confronto pode se dar entre O resultado obtido numa jogada de-
até seis jogadores. O computador não ve ser colocado num dos grupos.
participa como adversário — cabe-lhe Lembre-se de que só se pode indicar ca-
da grupo uma vez. Para selecionar o DIM AS (12)
apenas conferir as regras e manter o pla-
car. A máquina evita, assim, que alguém grupo e executar a escolha usam-se as
trapaceie, e, o que é melhor, libera os setas e a barra de espaço.
30 FOR T - 1 TO 6: READ AS DCS :
jogadores da contagem do placar, pos- Muitas vezes não é possível obter - AS: NEXT
(T)
sibilitando que se concentrem só nas uma combinação de dados que satisfa- 40 FOR T = 1 TO 12
questões estratégicas. ça um dos grupos vazios (os grupos 50 READ AS AS tT) - AS + LEFTS
!
Este jogo não passa de uma versão cheios não podem ser utilizados nova- (" ",12 - LEN (AS)
computadorizada do famoso Yatch, ou mente). Neste caso, a única opção é sa- ) NEXT
!
e estratégia, é muito absorvente, mas ferência, um dos que rendem menos 'QUANTOS JOGADORES (1-6)?";
suas regras são simples, parecidas com pontos — eliminando-o. A melhor es-
,
70 GET AS: IF AS < "1" OH AS >
"6" THEN 70
as do pôquer. Cada participante tem di- tratégia, portanto, é preencher primei-
reito a jogar cinco dados de uma só vez ro os grupos que rendem mais pontos — 80 NP - VAL (AS): PR1NT NP: DI
— M NS (NP) SC (NP) O (NP 12) P (NP
. , .
(no nosso caso, o computador simula os que são também os mais difíceis evi-
2) ,S(NP,10)
dados rolando). Se o jogador não esti- tando-se que venham a ser sacrificados. 90 HOME FOR N
: 1 TO NP PRI :
ver satisfeito com o resultado obtido, O programa está dividido em três NT TABI l):"NOME DO JOGADOR ";
poderá lançar os dados mais duas vezes partes principais: rotina de inicialização, N;" - " :
(num total de três jogadas). Na segun- laço-mestre e rotinas chamadas pelo 100 INPUT NS(N) NEXT :
130 INPUT NP: LET NP-INT (NP): 190 FOR M-5 TO 27: PRINT
IF NP<1 OR NP>6 TBEN GOTO 130 140 FOR R = 1 TO 5: FOR I - 1 PAPER 0;AT 5.M;" " AT 19, M; - "
;
: DIMS(NP,5): DIMNSÍNP.6): 150 HOME :Y - 2: GOSUB 980: GO 200 FOR M-6 TO 18: PRINT
DIM Q (NP) SUB 190 PAPER 0;AT M,5;" * AT M.27;" "
;
150 FOR N-l TO NP: CLS PRINT : 170 HOME GOSUB 350: HOME
: N : NEXT M
:
J)+CHR$(128+65*A) NEXT :
XT
40 DS(K,J)-STRINGS(3.131)+CHRS<
135) NEXT :
50 DATA 0.0,0,0.1,0,0,0,0,1,0,0
.0,0,0,0,0,1
60 DATA 1,0,0,0,1,0,0,0,1,1,0,1
,0,0,0.1,0,1
70 DATA 1.0,1,0,1.0.1.0.1,1,0.1
,1,0,1,1,0,1
80 PRINT: PRINT"QUANTOS JOGADO RE
S (1-6) ?;
90 AS-INKEYS:IF AS<"1" OR A$>"6
" THEN 90
120 CLS:NE5CT
130 DIM 0(NP, 12) ,P(NP,12) ,S(NP,
10)
0 LAÇO-MESTRE
140 F0RR-1T0S:F0RI-1T012:F0RN-1
TONP
150 CLS:Y-2:GOSUB9B0:GOSUB190
45 PROGRAMAÇÃO Dt JOGO
200 LOCATE0.T*2+3:PRINT"JOGO";T
~10: GOTO 360
330 IF A$<>"S" THEN GOTO 310
210 GOSUB970:IFT-3 TBEN 310 340 SOUND .1.30
220 C-l: FOR D-l TO 5 350 LET R(C)-T(D): LET C-C+l ;
NEXT G, D: RETURN
) ) ; : NEXT : RETURN
9870 PRINT «Y*32+H-((LEN(NS(N)>
)/2) ,NS(N) BETURN
:
OS DADOS VA0 ROLAR
No primeiro lançamento, utilizam-se
A
primeira dessas rotinas rola os da-
240 LET T-l: FOR D-l TO 5: LET os cinco dados. O resultado é exibido na
dos, exibe-os na tela e chama duas ou- T(D)-INT (RND*6)+1: NEXT D tela por meio da rotina da linha 970
tras rotinas. 250 PRINT AT 6+T*3 JOGO ";T ,
;
(1180, no Spectrum). O jogador escolhe
Acrescente as linhas que se seguem à 260 GOSUB 1180 então quais são os dados "bons" e quais
parte do programa já digitada: 270 IF T-3 THEN GOTO 390 são os "ruins", indicando os primeiros
280 LET C-l FOR D-l TO 5 :
com um S e os segundos com um N. Ele
290 PRINT AT 7+T*3,16+D*2;"?"
terá mais duas chances de lançar os da-
300 FOR J-l TO 50: NEXT J
310 LET AS-INKEYS: IF AS-"" dos ruins, devendo teclar S(im) para os
THEN GOTO 310 dados que quer "segurar" e N(ão) para
190 T=l:FORD-lT05:T(D)=INTlRND(
320 IF AS-"N" THEN SOUND .1. os demais.
I -TIME)*6)+1:NEXT
IIIIIIIHIMMI " PKOGRAMAÇAODUOGOS « jH|||||||||||
Os números dos cinco dados iniciais 450 RETURN 880 O(N,10)-30:RETURN
são armazenados na matriz T( ). Depois 460 FORD-lT012:IFP(N,D)-l THENL 890 IFBO1THEN900ELSE0 (N 12) -50 ,
560 IFB3-CHR$(30)ANDA>1THENA-A-
1
350 CLS 590 IFBS=CHR$C31)ANDA<12THENA-A
360 Y-0:GOSUB980:PRINTSTRINGS<3 +1
0,205) ;" PLACAR" 600 PLAY"06A" 350 HOME
370 PRINT-UNS "XS"DOIS
:
610 GOTO540 360 Y - 1: GOSUB 980: INVERSE
UATROS
:"XS"TRES :"Xg-Q 620 L0CATE13,1+A:PRINT" ";:IFP( PRINT "»»»>»»»»»»»» :
CHEIA. :"XS"CURTO
. :"X3"L 650 F0RD-1T05:IFT[D)-A THENC-C+ 380 PRINT INVERSE PRINT *? r :
S-YATCH -X3
; 660 NEXTD 400 GOSUB 460
390 PRINT" TOTAL :" ; 670 O(N.A) -C*A 410 GOSUB 490: GOSUB 460
400 GOSUB4Ó0 680 P(N,A)*1 420 HTAB (22): VTAB (8): PRINT
410 G03UB490:C03UB460 690 RETURN "<QUALQUER TECLA>"
420 LOCATE22.5:PRINT"<au«l(iu«r 700 IFA-11THENFORD-1T05:0(N,11) 440 GET AS: IF AS "" THEN 44
tecla>" -0(N,11)+T<D) :NEXT:P(N,11)-1 :RE 0
440 A$«INKEY$:IFAS-""THEN440 TUBH 450 RETURN
710 FORD=1T05:D[D)-0:NEXT:B-0:F 460 FOR D - 1 TO 12: IF P(N,D)
0RE=1T06 C-0 FORD-1T05 IFT (D) -E
: : : - 1 THEN HTAB (15): VTAB (3 +
THENC-C+1 D) PRINT "X"
:
750 NEXTF
760 P (N, A) -1 :A»A-6:ONA GOT0770,
810,830.870,960.890
770 IFB>2THEN900:IFB=1GOSUB1160
:0(N,7)=C*4:RETURN
780 F-l
790 G0SUB1140:F-F+l:IFCO4ANDF<
>7THEN790ELSEIFC<4THEN900
800 0tN,7)-4*{F-l) RETURN :
UB1140 IFC-3THEN820ELSEF-D(2) :G
:
OSUB1140 IFCO3THEN900
!
820 FORD-1T05:0(N,8)-0(N,8)+T(D
):NEXT RETURN
:
830 IFBO4THEN850ELSEG0SUB1160:
IFCO18ANDCO10ANDCO14 0R(C-14
ANDD(4)-6)THEN900
840 0(N,9)-15:RETURN
850 IFBO5THEN900ELSEG0SUB1160:
IFCO20ANDCO15ANDCO16ANDCO19
THEN900
860 GOTÕ840
870 IFBO5THEN900ELSEG0SUB1160:
IFCO20ANDCO15THEN900
45 PROGRAMAÇÃO DE JOGO.
> 4 AND F < > 7 THEN 790 960 BETURN -E THEN LET C-C+l
<
IF C < 4 THEN 900 1140 C - 0: FOB D = 1 TO 5 IF 600 NEXT D: IF COO THEN LET
795 :
1060 GOSUB 1270: IF COIS AND C D F<>7 THEN 790 ELSE IF C<4 THE
<>10 AND C<>14 OR (C-14 AND D(4 N 900
)-6) THEN GOTO 1190 800 O (N, 7) -4* (F _ l ) :RETURN
1070 LET 0(N,9)-15: RETURN 810 IF B<>2 THEN 900 ELSE F-D(l
1080 IF B<>5 THEN GOTO 1190 ) GOSUB 1140:IF C-3 THEN 820 EL
:
,
"MISTO" "YATCH" " , ,
" 960 RETURN
570 PRINT §49+32*A," "; 1140 C-0:FOR D-l TO 5:IF T(D)-F
"TOTAL"
580 IF BS-""" AND A>1 THEN A-A- THEN C-C+l
1 1150 NEXT D: RETURN
590 IF B$-CHRSU0) AND A<12 THE 1160 C-0:FOR D-l TO B:C-C+D(D):
N A-A+l NEXT D: RETURN
600 SOUND 200,1
350 CLS 610 GOTO 540
360 W-6:Y-0:GOSUB 980 PRINT"*** :
620 PRINT §49+32*A," " IF P(N, ; :
IMPRESSÃO DO ESQUELETO
*SCORE****" A1O0 THEN 950
370 PRINT"UNS "XS"DOIS :
630 IF A>6 THEN 700
:"XSTRES :"XS"Q 640 C-0 A primeira seção dessa rotina que —
UATROS "XS" CINCOS: "X : 650 FOR D-l TO 5:IF T (D) -A THEN vai atéa linha 520 no Spectrum e linha
S"SEIS C-C+l 450 nos outros micros —
mostra na te- I
PROGRAMAÇÃO DE JOGOS lllllllll
IIIIIIIIIIHI
la o esqueleto do placar (nomes dos gru- 1000 LOCATEO,4:FORD-1TONP:PRINT
pos e do jogador) e chama duas outras NS (D) NEXT :
1090 FORD-1TONP:C-0:FORE-1TOR:C
sentam na tela informações sobre o nú-
-C+S(D.E) :NEXTE:LOCATE26,3+D:PR
mero da partida e da jogada e, o que é
INTC; NEXTD :
PLACAR FINAL
:
sim por diante até A = 11. que corres- C + OÍD.E): NEXT :S(D,R) - C: 1390 FOR D-l TO NP: LET C-0 FO :
mente corresponde ao grupo escolhido. 1100 HTAB (2): VTAB (22): PRIN
Se corresponder, o placar é calculado e T "< QUALQUER TECLA PARA OUTRA 990 CLS PRINT" *****TABELA DE PO
:
1310 PRINT AT 7,0: FOR D-l TO N 1090 FOR D-l TO NP:C-0:FOR E-l
número da partida é exibido no topo do - :"': NEXT D TO R C-C+S (D, E) NEXT E PRINT 61
P: PRINT NS(D); : : :
do jogo
AVALANCHE: nível
0 ATRASO DAS COBRAS
MOVIMENTO DAS LÍNGUAS
As cobras ainda não constituem ameaça: lam, os pássaros voam. As cobras, po- 20 BEM ank 1
instrução jr nc.sko pula a instrução rei. a instrução não tem efeito e o processa-
Você estará no terceiro ou quarto nível dor retorna.
do jogo (valor 2 ou 3) e as cobras de- Cada vez que essa rotina é chamada,
vem ser atiçadas. um atraso diferente da cobra é encon-
trado nos endereços 57350, 57351 e
57352, pois o apontador IX é incremen-
AS COBRAS AMEAÇAM tado entre cada chamada que se faz à
rotina skm. A língua da cobra fica para
fora oito ciclos, e não aparece nos oito
A posição de memória 57350 carre-
ciclos seguintes.
ga o primeiro dos atrasos das cobras,
que indicam quando elas devem mexer
a língua. IX é carregado com esse ende-
reço, e HL, com 425, a posição da pri-
meira língua de cobra. A rotina skm,
que executa o movimento, é chamada.
A posição da língua da próxima co-
bra é carregada em HL, e skm volta a ser
chamada. Em seguida, a posição da lín-
gua da terceira cobra é carregada em HL
e skm é chamada mais uma vez.
Quando todas as línguas estiverem se
mexendo, a rotina retorna.
IIIIIIIIIIIIHI
sbc hl de ,
1 70
180
190
200
210
220
Todos os computadores trabalham e acessível por muitas pessoas.O que tor- Conhecer o funcionamento do SO
entendem apenas uma linguagem: o có- na mais simples a comunicação com o não é essencial para o usuário, porém
digo de máquina, que é representado in- operador é o Sistema Operacional do amplia bastante suas alternativas de pro-
ternamente por pequenas variações bi- computador (SO), um conjunto de ro- gramação. O uso de funções internas do
nárias de voltagem. Eie pode ser expres- tinas em código de máquina que contro- SO possibilita a obtenção de melhores
so por um conjunto de letras e núme- lam todas as funções da máquina. Seja resultados não só quanto à velocidade,
ros, o que facilita sua compreensão, ou qual for a linguagem empregada, BA- mas, também, quanto à qualidade ge-
por números binários, menos familiares SIC ou outra qualquer, essas rotinas se- ral do programa.
ao usuário. De uma forma ou de outra, rão sempre utilizadas para controlar as Dentro dos limites impostos por ca-
essa linguagem é considerada pouco diversas funções do computador. da máquina, este artigo procura mostrar
I!
IIIIIIIIIIIHH IIIIIIIII
0 QUE Ê 0 SISTEMA ROTINAS GRÁFICAS
OPERACIONAL COMUNICAÇÃO COMO CASSETE
0 INTERPRETADOR BASIC PROCESSAMENTO DE TEXTOS
ENTRADA E SAÍDA COMUNICAÇÃO COM
VARIÁVEIS DO SISTEMA A IMPRESSORA
algumas aplicações úteis para as rotinas sador existente dentro da máquina res- da execução das mesmas tarefas, cha-
e variáveis próprias de cada sistema ope- ponder aos comandos básicos de opera- mando as rotinas apropriadas. Umbom
racional. ção. Ele controla a comunicação da má- exemplo é o comando INPUT, que usa
quina com o mundo exterior —
o tecla- uma série de sub-rotinas do SO, tais co-
0 QUE E SISTEMA OPERACIONAL
do, a tela, o alto-falante e outras por- mo seleção e leitura da porta de entra-
tas de entrada e saída. da, varredura do teclado, uso e transfe-
O 50 tem ainda a função de assegu- rência de buffer etc.
O SO é apenas um tipo sofisticado de rar que a memória seja utilizada de for- Outroexemplo interessante é
programa —
escrito em código de má- ma eficiente pelo usuário e pelo inter- CLEAR. Esse comando força o SO a
quina —que permite ao microproces- pretador BASIC. Assim, quando liga- executar todas as rotinas necessárias à
mos o computador, ele ativa várias de liberação da memória RAM
disponível
suas rotinas da ROM para acertar os va- para o usuário, destruindo todas as va-
lores iniciais de variáveis e apontadores riáveis previamente existentes.
e, em seguida, avisa que está pronto a
aceitar comandos. TRABALHO SOB ENCOMENDA
Em todos os microcomputadores
abordados em INPUT, o SO é respon-
Sempre que digitamos um comando,
sável pela interpretação dos comandos
o SO seleciona e coloca em ação uma
em BASIC, contudo ele pode também
das rotinas de seu vasto acervo. Supo-
lidar com outros tipos de linguagem.
nhamos que você tecle a letra A: o SO
Na maior parte do tempo, o traba-
deverá instruir o processador a imprimir
lho do SO consiste em verificar e modi-
o caractere na tela, cabendo-lhe também
ficar os valores de determinadas variá-
detectar a tecla que foi pressionada. A
veis e apontadores especiais. É impor-
forma como ele faz isso varia de com-
tante, por exemplo, que o SO conheça
putador para computador. Em certas
o endereço exato tanto do inicio como
máquinas, o SO "varre" periodicamen-
do fim de um programa em BASIC. Se
te o teclado para verificar se alguma te-
o programa for modificado, seu tama-
nho também mudará, e esses valores
cla foi pressionada. Em outras, seu fun-
cionamento normal é interrompido sem-
precisarão ser atualizados.
pre que se pressiona uma tecla, a qual
O mesmo se aplica ao processo de é identificada, em seguida, por meio de
alocação e manutenção de espaço para
uma varredura.
as variáveis, particularmente as variáveis
Para responder adequadamente à
indexadas, ou matrizes. Quando dimen-
pressão da tecla, o SO aciona a sub-
sionamos uma variável desse tipo, um
rotina que manda o caractere correspon-
espaço deve ser reservado —e, quando
dente à tela. Sua execução, assim como
a variável não for mais necessária, ele
a de outras rotinas em código de máqui-
deve ser eliminado.
na, é muito rápida. Se pressionarmos a
É essencial que o SO utilize racional-
tecla < ENTER > ou a tecla <RE-
mente a memória, pois, caso contrário,
um programa longo ou algumas variá- TURN > o SO ativará uma rotina que
,
entrados pelo teclado permitem ao SO Para programas em BASIC, há a alter- 23673, 23674. Se colocarmos 0 nelas,
a execução de um programa BASIC. nativa de se modificar determinadas va- usando o comando POKE, o contador
Mas por que o BASIC é tão lento, já riáveis por meio de comandos POKE. será zerado. Depois disso, sua atualiza-
que utiliza rotinas em código, que são POKE 23561, seguido de um núme- ção será feita automaticamente através
rápidas? Acontece que a linguagem de- ro entre 1 e 255, altera o lapso de tem- de interrupções. Aqui está um progra-
ve ser interpretada a partir de palavras- po que antecede a ativação da auto- ma simples que emprega o contador pa-
chave —como PR1NT —
e de outros repetição das teclas. O
valor normal é ra improvisar um relógio:
símbolos, antes que essas rotinas inter- dado por um POKE 23561,35. De mo- 10 POKE 23674,0: POKE 23673.0
nas possam ser executadas. Como a tra- do análogo, POKE
23562,5, que define ! POKE 23672,0
dução do BASIC é demorada, progra- o valor normal do período que decorre 20 B0RDER 0: PAPER 0: INK 6:
mas que exigem rapidez, como os de vi- entre duas auto-repetições sucessivas, CLS
deogame, por exemplo, são escritos di- também pode ser modificado. Tal recur- 30 DE F FN tO=INT ((65536*
retamente em linguagem de máquina. so é útil em jogos, ou qualquer outro ti- PEEK 23674+256*PEEK 23673+
PEEK 23672)/50>
O tempo que se leva para escrever um po de programa que exija respostas rá-
40 LET t=FN t()
programa em código de máquina é, em pidas do usuário, via teclado.
50 LET h-IMT (t/ (60*60))
média, dez vezes maior do que o gasto As posições 23606 e 23607 contêm o 60 LET m-INT (t/60)
em um programa BASIC. A velocidade endereço dos padrões de pontos dos ca- 70 LET s-t-((h*60)"60)-(a*60)
de execução do mesmo, contudo, che- racteres. Se usarmos POKE 23606,8 80 LET tS="["+STRS h+" "+STRS
:
]"
ga a ser cinquenta vezes maior. Assim, (byte menos significativo), o apontador M+" -+STRS S+"
:
a não ser que a rapidez de execução se- será movido um caractere para cima, na 90 PRINT AT 1,15-{(LEN t$) /2)
"
tabela. Assim, qualquer letra que digi- ' ";t$;'
ja muito importante, a maioria das pes-
:
soas prefere utilizar o BASIC, dada a fa- tarmos aparecerá na tela como o carac- 100 GOTO 100
cilidade de programação. tere seguinte do código ASCII. Tente di-
gitar esse POKE seguido de 1, 2, 3, 4.
A
linha 10 zera o contador de linhas
de vídeo, enquanto a linha 30 define a
ACESSO DIRETO AO SO Note que este é um método simples de
função t, que o lê. A linha 40 armazena
"criptografar" listagens em BASIC, de-
o valor encontrado em t. A partir desse
sencorajando curiosos que tentem lê-las.
A possibilidade de ter acesso direto valor, as horas, minutos e segundos são
Se, em vez do byte menos significativo
ao SO, sem passar pelo interpretador, você recorrer ao mais significativo — calculados
seria a solução ideal para quem prefere POKE 23607,0 —
o apontador será di-
,
IIIIIIIIIHHH llllllllll
Abra um canal de comunicação com o
Qualquer programa que manipule apenas por um byte. Toda a informa- dos, digiteENTER ou RETURN e o la-
grande quantidade de informação deve ção deve estar na memória antes de ser ço de entrada será interrompido.
armazená-la da maneira apropriada. No transferida ao arquivo. A segunda parte do programa da —
artigo publicado à página 128, tratamos O primeiro passo para a criação de linha 100 em diante —
grava os dados
do armazenamento de uma pequena lis- um arquivo sequencial consiste na aber- no arquivo. Daremos explicações refe-
ta de telefones em DATA. O pro-
linhas tura de um canal de comunicação com rentes a seu funcionamento nas várias
o dispositivo que vai armazenar os da- i do programa.
grama apresentado permite ao usuá-
ali
rio procurar e imprimir qualquer item dos — cassete ou drive. Isso é feito por
da lista. Porém, para qualquer modifi- intermédio do comando OPEN, numa
cação na lista, é necessário interromper sintaxe que varia conforme o tipo do mi-
crocomputador. Para conhecer os co- 10 DIM A3<50,15): DIM B3 (50
a execução do programa e editar as li- 15): DIM T9C50.12): DIM Nd)
nhas DATA. Além disso, os dados só mandos mais utilizados, volte ao artigo 20 LET N-0
podem ser gravados junto com o pro- da página 688. 30 LET N-N+l
grama que os manipula. Aqui, explicamos em detalhe as téc- 40 INPUT -PRIMEIRO NOME ";AS(
Essa dependência dos dados ao pro- nicas envolvidas na criação de arquivos, H]
grama muitas vezes é indesejável. Para de modo que você poderá incorporá-las 50 INPUT "SEGUNDO NOME ";BS(N
evitá-la, convém guardar os dados em facilmente a seus programas. )
efetuá-las, o usuário não precisa saber criar uma versão mais sofisticada da lis- 100 SAVE "CONT" DATA NO
nada a respeito do programa. ta de telefones mencionada anterior- 110 SAVE "P NOMES* DATA ASO
.
Como em muitos programas aplica- mente. Ao utilizá-la, você poderá mo- 120 SAVE "S. NOMES" DATA BS
tivos listados em INPUT, os dados são dificar, sem maiores dificuldades, as 130 SAVE "N.TELEF." DATA T3()
armazenados em arquivos, na fita ou mensagens dos comandos INPUT e o 140 PRINT "DADOS GRAVADOS"
disquete. O banco de dados, o orçamen- formato das matrizes, para que aceitem 150 STOP
to doméstico, a agenda eletrônica e a outro tipo de informação. Para a gravação, o Spectrum utiliza
planilha são exemplos de programas que Os dados são fornecidos nesta or- o comando SAVE seguido do nome do
envolvem grande quantidade de infor- dem: nome, sobrenome e número do te- arquivo. Note que cada matriz é grava-
mações. Se observarmos suas listagens lefone. Como números de telefone po- da como um arquivo distinto, receben-
com atenção, poderemos identificar as dem conter espaços, hífens e parênteses, do um nome especial. A instrução DA-
linhas que tratam da gravação e leitura convém dar-lhes a forma de cadeia de TA seguida do nome da matriz deve vir
dos dados. Elas ocupam uma porção caracteres. Se você quiser alterar o pro- depois do nome do arquivo.
mínima do programa, se comparadas às grama para lidar com outros tipos de in-
demais seções, encarregadas, entre ou- formação, poderá usar também matri-
tras coisas, de reservar espaço na memó- zes numéricas e alfanuméricas. ar-Um 10 DIM A$(50) .B3Í50) ,T$C50)
ria, estabelecer a comunicação com o quivo recebe dados em qualquer forma- 30 N-N+l
usuário e manipular os dados. to e em qualquer ordem. O
importante 40 INPUT "PRIMEIRO NOME"; AS (N)
Quando armazenamos os dados à é que a leitura se faça nessa mesma or- 50 INPUT "SEGUNDO N0ME";B3(N)
parte, as possibilidades de utilização do dem e que os dados sejam colocados no 60 INPUT "TELEFONE" T3 (N) ;
programa aumentam bastante, esten- tipo adequado de variável. 70 IF A3(N)<>"" AND N<50 THEN 3
dendo-se à criação e alteração de vários Embora seja possível armazenar in- 0
arquivos diferentes, com quantidades formações diretamente no arquivo, é 80 CLS: PRINT "GRAVANDO OS DADOS
diversas de registros e campos. mais conveniente que coloquemos os da-
100 OPEN "CAS:ARQ" FOR OUTPUT A
Empregamos em nosso programa o dos em uma matriz e depois guardemos B «1
método de armazenagem sequencial, cu- toda a matriz no arquivo. 110 PRINT II.
jo princípio é muito simples. Como vo- A primeira parte do programa tem 120 FOR L-l TO N
cê verá, ele permite que os dados sejam um pequeno laço que possibilita a en- 130 PRINT *1,A3(L) ,B3(L) ,T9(L)
convertidos a um formato que se adap- trada dos dados. Digite quantos nomes 140 NEXT
ta a diversos programas, e até mesmo a e números quiser —
o limite é a dimen- 150 CLOSE #1
computadores diferentes. são da matriz, especificada na linha 10. 160 PRINT "DADOS GRAVADOS
170 END
O arquivo sequencial caracteriza-se Modifique a dimensão, caso precise de
pela armazenagem dos dados em série, um número de itens superior a cinquen- Os dados entrados na primeira parte
dispostos um após o outro e separados ta. Quando tiver entrado todos os da- do programa são colocados em três va-
, .
um IHIIIIIIIIIII
THEN 30
80 HOME PRINT "GRAVANDO OS D
:
ADOS"
100 PRINT DS:"0PEN ARQUIVO" A primeira seção do programa, que
110 PRINT DS:"WRITE ARQUIVO" trata da entrada dos dados, é comum
120 PRINT N aos dois tipos de dispositivo, ao contrá-
130 FOR L - 1 TO N rio da segunda seção, incumbida de gra-
140 PRINT A3(L): PRINT B$(L): var os dados.
PRINT TS(L) Na versão para fita cassete, um ar-
150 NEXT L quivo é aberto pela instrução OPEN
160 PRINT D8; "CLOSE ARQUIVO"
170 PRINT "DADOS GRAVADOS" "O" que estabelece uma linha de comu-
180 ZND nicação com o dispositivo de armazena-
Como dados
gravar em fila cassete mento para a saída de dados. Ela é se-
no Apple e no TK-2000? Trataremos apenas da gravação em guida por um # - 1 que diz ao compu-
.
Para contornar os problemas de ar- disquete, pois a armazenagem de arqui- tador que se trata de gravador cassete,
quivamento no Apple e no TK-2000, a vos em fita no Apple e no TK-2000 é e pelo nome do arquivo entre aspas.
melhor solução é comprar um drive de O comando PRINT # - 1 significa
muito precária. Como você deve se lem-
discos flexíveis. Mas existem algumas "imprima o próximo valor no arquivo".
brar, para controlar o drive sem sair do
alternativas — nenhuma milagrosa, po-
BASIC Applesoft utilizamos o caracte- Assim, a linha 110 grava o valor de N
demos adiantar.
Esses micros só permitem a grava- re de controle CHRS(4), que foi colo-
— o número de telefones da lista. Para
ção de uma variável indexada unidi- cado na variável DS (linha 5). o processo de leitura, que descrevemos
mensional e não montam na fita um ar- A primeira parte do programa, que a seguir, é importante que esse valor en-
quivo propriamente dito. O leitor pode cuida da entrada dos dados, coloca-os cabece o arquivo,
achar que isso já é suficiente para al- em três variáveis indexadas: A$( ), A linha 1 30 escreve cada um dos itens
gumas aplicações. Porém, a lentidão e BS( ) e TS( ). Um arquivo é aberto na no arquivo — observe que eles são se-
o grande espaço que uma pequena va- Unha 100 através do caractere de con- parados por meio de vírgulas. Finalmen-
riável ocupa na fita certamente logo
trole, seguido do comando OPEN e do te, o comando CLOSE # - I fecha o ar-
vão desencorajar os mais afoitos. quivo (linha 150),
Em nossa opinião, a saída mais con- nome do arquivo (entre aspas).
veniente para quem não pode adquirir O comando WRITE, na linha 110, A criação de arquivos em discos fle-
drive é colocar os dados em um permite a gravação de dados no arqui- xíveis é muito semelhante, empregando
um
buffer no alto da memória, usando o vo que foi aberto. Todos os comandos os mesmos comandos. A única diferen-
comando POKE. Em seguida, basta en- PRINT que aparecem em seguida escre- ça é o número utilizado após o sinal #
trar no monitor de linguagem de máqui- vem no arquivo e não na tela. O coman- OPEN "O", #1, seguida do nome do
na - comCALL-151 - egravarobuf- do CLOSE fecha o arquivo e devolve a arquivo entre aspas, abre um arquivo;
fer por intermédio do comando do W função original ao PRINT. PRINT # 1 guarda um item nele e CLO-
SE #1 trata de fechá-lo.
Como você pode notar, na linha 130
os itens estão separados por ponto e vír-
10 DIM AS(50) ,B3(50) .T3Í50) gula. Embora se permita o uso de vír-
riáveis indexadas: AS( ), B$( )eT$( ). 30 N-N+l gulas, aquele é o modo mais económi-
Na linha 100, abrimos um arquivo para 40 INPUT"PRIMEIRO NOME ";AS(N) co de armazenar dados no disco.
50 INPUT-SEGUNDO NOME " B$ (N) Os disquetes admitem a criação de
a gravação de dados em
;
IIIIIIIIIIUH llllllllll
215 DIM A$(N(1).15): DIM BS(N( PEN ARQUIVO" A linha 210 lê a quantidade de nomes
1) ,15)
220
:DIM T$(N(1) .12)
LOAD "P NOMES" DATA ASO
.
210
220
PRINT DS "READ ARQUIVO"
:
perar o valor de'N gravado anteriormen- za esse valor para dimensionar as variá- O último programa usou a variável
te. As outras variáveis são dimensiona- veis. N também tem como função con- N para controlar a leitura do arquivo.
das de acordo com o valor de N( ). Co- trolar o laço de leitura do arquivo, pa- Contudo, nem sempre é possível saber
nhecendo o número exato de elementos ra que ele seja recuperado até o final. de antemão quantos itens devem ser li-
do arquivo, não tentaremos ler além do Note que os valores lidos são colocados dos. Um modo de contornar o proble-
seu final. nas variáveis na mesma ordem em que ma é usar um marcador para sinalizar
O resto do programa é fácil de enten- foram gravados, separados pelo mesmo o fim do arquivo. O TRS-Color e o
der: simplesmente substituímos os SA- tipo de sinal —
no caso da fita, a vírgu- MSX colocam automaticamente um si-
VE do primeiro programa por LOAD. la. O arquivo deve ser fechado após ser nal desse tipo — —
EOF no final, sem-
E preciso fechar um arquivo aberto pa- lido. pre que uma instrução CLOSE é en-
ra gravação, mas não para leitura. contrada.
fffÁ
Ql Assim os usuários dos microcompu-
tadores TRS-Color e MSX
podem mo-
Para fita cassete, use esta seção:
dificar o programa anterior para que ele
200 CLEAR 2000:OPEN"CAS:ABQUIVO
leia o arquivo desde o início, parando
"FOR INPUT AS *1 200 CLEAR 2000:OPEN-I",»-1."ARQ
210 INPUTI1.N.-DIM AS (N) BS (NI T UIVO" sempre que encontrar o sinal que indi-
ttm
, ,
perado até o final. Note que os valores quivo. Digite o comando RUN
200 pa- INPUT AS |1
ra recuperar os dados; não rode o pro- 230 N-N+1:INPUT I 1 AS (N) BS (N)
, .
SCI
ser lido.
ma imprime apenas os valores que ob-
tiver no arquivo. Este é aberto para lei-
tura pela instrução OPEN "I" seguida
do valor adequado —
# - 1 para fita e
D Apague as linhas 210 e 220 e modifi-
200 DS - CHRS (4): PBINT DS:"0 # 1 para disquete. que as demais. Para a fita:
100
110
120
130
140
miiimiiiM^
OPEN "O", |-1. "ARQUIVO"
N-0
N-N+l
PRINT |-1,AS(N) ,BS(N) ,TS(N)
IF AS(N)<>"" AND N<50 THEN
,
mm
120
150 CLOSE #-1
160 PRINT "DADOS GRAVADOS"
170 END
200 CLEAR 2000;DIM A5(50),B3(50
,TS(50) :0PEN "I" #~1 "ARQUIVO"
.
> .
.T3(N)
235 PRINT AS (M B3 (M TS (N)
; ;
Para o disquete:
TS(N)
235 PRINT AS(N) BS (N) :T3(N)
;
50
N * 1
INPUT "PRIMEIRO NOME ";A3(N
Se você sentir a vista cansada após Os padrões visuais variam de compu- Se o monitor ou TV for colorido,
tador para computador, mas contêm ba- examine as cores das barras (ou das le-
fixar por algum tempo o vídeo do micro,
sicamente os elementos utilizados em tes- tras, no programa para o TRS-Color) na
talvez seja a hora de providenciar tes como os que são transmitidos em ho- segunda parte do teste. Os cantos e bor-
ras mortas pelas emissoras de TV: cír- das das barras coloridas devem ser bem
um outro monitor. Use este programa
culos e linhas espaçadas a curta distân- definidos, e a cor de uma barra não de-
para testar a qualidade da imagem. cia, para testar o poder de definição de ve extravasar para outra. Como a den-
tela; padrões colocados nos cantos da te- sidade, brilho e a saturação das cores
la, para testar distorções marginais da podem variar de vídeo para vídeo, ex-
Até pouco tempo atrás, o preço de imagem, e barras ou faixas de todas as perimente mudar os controles do apa-
um monitor de vídeo colocava esse pe- cores disponíveis. relho, até obter a melhor combinação.
riférico totalmente fora do alcance da Ao rodar o programa de teste, obser- Lembre-se de que diferentes ajustes de
maioria dos proprietários de micros, ve primeiro se a imagem está bem cen- cor costumam ser necessários, confor-
obrigando -os a utilizar aparelhos co- trada. Em alguns computadores, o ge- me a aplicação: texto puro, por exem-
muns de TV como saída de vídeo. rador de vídeo não deixa margem na te- plo, requer pouca cor e brilho médio;
Os televisores apresentam vários in- la, e, se ela estiver mal ajustada, haverá um jogo exige muita cor e brilho.
convenientes: a imagem pisca e oscila uma perda de gráficos e textos junto à Os programas para o MSX e o TRS-
continuamente de modo imperceptível, borda. Muitos monitores e televisores Color permitem variar a cor de fundo na
o que provoca dores de cabeça e cansa- dispõem de botões giratórios de ajuste tela pressionando seguidamente a tecla
ço visual após um certo tempo. Outro de centralização e expansão de imagem, < ENTER > na última parte do progra-
,
problema é causado pela baixa resolu- localizados atrás do aparelho.' Você po- ma. Para interrompê-lo, pressione
ção da tela, que resulta em perda de de- derá usá-los para conseguir um resulta- <BREAK> ou <CTRL><STOP>.
talhes e definição da imagem em textos do melhor. No Apple e no TK-2000, os caracte-
e gráficos. Verifique em seguida se as linhas dos res de texto não podem ser coloridos.
Entretanto, o custo relativo dos mo- retángulos junto às bordas da imagem Assim, para testar a qualidade do vídeo
nitores profissionais de vídeo tem caí- não sofrem uma grande distorção (as li- quanto a este aspecto, interrompa o pro-
do bastante nos últimos anos, tornan- nhas retas se transformam em arcos con- grama e liste-o na tela. Observe se as le-
do esse periférico cada vez mais acessí- vexos: quanto menor o raio destes, maior tras aparecem em branco puro e se não
vel. E, se você ainda não tem um, vale a probabilidade de que o monitor seja há nenhum efeito de "arco-iris" (letras
a pena ir pensando em adquiri-lo, pois de baixa qualidade). multicoloridas e borradas).
a qualidade da imagem é bem superior Todas as linhas aparecem nitidamen- Se você conhece um pouco de progra-
à de um televisor. te separadas umas das outras? Se isso mação gráfica em BASIC, não terá ne-
No artigo da página 851, descreve- não ocorrer, há problemas de definição nhuma dificuldade em modificar os pro-
mos as características técnicas que dife- na imagem, o que poderá prejudicar a gramas aqui apresentados para torná-los
renciam um televisor de um monitor e legibilidade de textos. Em muitos mo- mais completos ou atraentes. Procure
falamos dos aspectos que devem ser con- nitores e televisores, a resolução é me- alterar a combinação de cores de frente
siderados na escolha de um bom moni- lhor no sentido horizontal do que no ver- e de fundo, para verificar o efeito, gere
tor. Não há dúvida, porém, de que o tical, ou vice-versa, devido à maneira mais uma tela de textos e caracteres grá-
melhor critério para essa seleção ainda como os pontos coloridos de fósforo são ficos etc.
é o "Teste de São Tomé" ou seja, — dispostos na tela. Monitores de boa qua-
ver como fica a imagem no vídeo, quan- lidade têm resolução igual em todas as
do o conectamos ao nosso computador. direções.
Como há problemas de compatibilida- Os círculos que o programa desenha
10 PMODE 4. 1:PCLS:SCREEN 1,1
de entre monitores e micros, é funda não são perfeitos, tendendo a assumir 20 FOR K-0 TO 1:F0R J-0 TO 15 S
mental que você use o seu modelo na ho uma forma ovalada? Este é um bom tes- TEP K+2
ra desse teste. te para uma das características dos ví- 30 LINE (K*16+J,K*16+J)-(255-K»
O programa listado neste artigo foi deos de boa qualidade, a chamada ra- 16-J.191-K"16-J) ,PSET,B
projetado para testar as características zão de aspecto: para obtê-la, dividimos 40 NEXT J.K
do vídeo em diferentes linhas de compu- o diâmetro transversal do circulo pelo .50FOR K-100 TO 154 STEP 2:LINE
tadores. A versão para o Spectrum mos- diâmetro vertical. Idealmente, é claro, (K.85)-(K,105) PSET: LINE (113. K-
,
tra um único padrão visual na tela; já o resultado deverá ser 1. 32)-(141.K-32) ,PSET:NEXT
60 FOR K-l TO 100 STEP 10:CIRCL
as versões para o|MSX, Apple, TK-2000 Verifique também se as linhas apare-
E<127,95) ,K,5:NEXT
e TRS-Color mostram duas ou três te- cem traçadas com nitidez ou se as bor- 70 IF INKEY3--" THEN 70
las sucessivas, cada qual projetada pa- das e cantos parecem borrados. Umpro- 80 PMODE 1,1:PCLS:SCREEN 1.0
ra testar um aspecto do funcionamento blema desse tipo pode prejudicar a legi- 90 FOR J-0 TO 191 STEP 48:C0L0R
do vídeo. bilidade de um texto na tela. J/48+1
Y/l': i i d u i li H t
niHilt!
IjjjjiHH
100 LINEíO. J)-{255.J+47) .PSET.B 57 PRINT AT 19.4;: FOR n-0 TO 25 LET YO - XOrLX - LX - 10:LY
2: FOR m-0 TO 7: PRINT - LY - 10
F NEXT
HPLOT XO.YO TO XO + LX.YO T
:
110 FOB J-0 TO 255 STEP 63:FOB BRIGHT 1; INK m; PAPER p-.CHBS 30
K-0 TO 63 STEP 4:COLOR J/63+1 (64+n*7+ia) NEXT m: NEXT n
-, : O XO + LX.YO + LY TO XO.YO + LY
120 LINE(K+J,0)-(K+J.191) ,PSET 60 FOR n-0 TO 7: B0RP p R n: TO XO.YO
130 NEXT K,J PAUSE 50: NEXT n: PAUSE 50 40 NEXT XO
140 IF INKEYS-"" THEN 140 200 NEXT l NEXT p! 50 FOB Y - 60 TO 100 STEP 2
150 S-l-StSCBEEN 1,S:GOTO 140 55 HPLOT 110. Y TO 150.
57 HPLOT 50, Y TO 70, Y: HPLOT 1
90. Y TO 210,
f/fi
60 NEXT Y
65 FOR X - 95 TO 165 STEP 3
10 S-S+l: COLOB 15 S S SCBEEN 2 . . :
IIIIIIIIIHUH lllllllll
BNTROLE A UMA ROTINA BÁSICA
TESTANDO A ROTINA
OUTRAS TECLAS DE RETORNO
ENTRADAS SECRETAS
ROTINA DE ENTRADA NUMÉRICA
IIIIIIIIIHHH IHIIIIIIIIIII
QHúEElM
80 PRINT AT 10 10; .
1026 IF C-3 AND LEN(SS)>0 THEN
1070
IIÚ 80 PRINT 128,
1070 LET SS-LEFT$(SS.LEN(S$)-1)
1080 GOTO 1040
mando INPUT. Mas existem várias ma- a tecla de correção foi pressionada (códi- ou string, nomeada pela instrução. Por
exemplo:
neiras de aperfeiçoá-la. Podemos, por go ASCII 8; em se tratando do ZX-81, de-
exemplo, estabelecer um limite máximo ve ser pressionada a tecla < -, cujo códi-
LINE INPUT X9
para o número de caracteres que devem go é 114).
ser digitados, o que nos permitirá entrar Em caso positivo, a rotina desvia pa- Não podemos colocar outras variá-
dados sem a necessidade de pressionar ra a linha 1070, que extrai o caractere mesma instrução.
veis para entrada pela
a tecla <ENTER>. apagado e vai para a linha 1040. Esta
Ao contrário da instrução INPUT, LI-
Acrescsnte esta linha à sub-rotina: faz retornar o cursor, imprimindo-a so- NE INPUT não imprime na tela o ponto
sshhmse
1050 IF LEN(S$)-MX THEN RETURN
bre a posição anterior.
ENTRADAS SECRETAS
de interrogação -
para o usuário -. o que dá
liberdade de programação.
sinal
SOOWSE
1025 IF C-TX THEN RETURN tSIM-0) "1
70 INPUT SX
1027 IF NOT (C>-43 AND C<-46)
Note que TX deve ser especificada
AND NOT (C>-4B AND C<=57) THEN
pelo programa que chama a sub-rotina. GOTO 1020
ENTRADAS NUMÉRICAS
Acrescente estas linhas, para testar a
nova opção:
Podemos tornar nossa rotina de en-
40 PRINT "CÓDIGO DE TERMINO trada ainda mais versátil. Uma opção in-
50 INPUT TX teressante consiste em utilizar a chama- 1027 IF C<>21 AND C022 AND
da censura de entrada, por intermédio C<>26 AND C< >27 AND NOT IO-28
AND C<-37) THEN COTO 1020
Umarotina de entrada de dados tam- da qual fazemos com que a rotina igno-
re automaticamente toda tecla que não Essa linha verifica se o caractere en-
bém não estaria completa se não ofere-
esteja incluída dentro de um
determina- trado está entre 0 e 9 ou se é um sinal
cesse ao usuário a possibilidade de cor-
do conjunto de entrada. Essa alternati- de mais, de menos, vírgula ou ponto. Se
rigir erros, usando a tecla <BACKSPA-
va nos permite estabelecer que todas as não for um desses, retorna para a linha
CE> ou <-. Adicione ao programa as
1020, de espera.
I seguintes linhas: teclas sejam maiúsculas, ou que não o-
29 APUCAÇÕCS 29
CARREIRA /DINHEIRO
CONSULTA CONTATOSA/IAGENS
Muitas pessoas não saem de casa sem do motivo de muita controvérsia. Cien- tão que permanece aberta ã discussão
tistas de histórico tão distinto, como Ainda que o tema não o apaixone
consultar o horóscopo: Você pode
Einstein e Jung, acreditavam na influên- você poderá passar horas muito agrada
não ser uma delas, mas certamente se —
cia dos astros sobre as pessoas hipóte- veis com seus amigos em torno de ui
divertirá ouvindo o que o computador se rejeitada pela maioria dos seus con- computador astrólogo. Para atribuir
temporâneos. Estudos multidisciplina- máquina esse papel, basta digitar o pro-
tem a dizer sobre seu destino.
res recentes,contudo, têm apresentado grama aqui apresentado. Ele fornecerá
algumas evidências difíceis de se refu- características de personalidade de ca-
tar. Seja como
for, o papel dos astros da um de acordo com seu signo solar
Astrologia e horóscopos intrigam as na determinação da personalidade e do assim como as previsões para o próxi
pessoas desde a Antiguidade, e lêm si- destino dos seres humanos é uma ques- mo ano. Estas se dividem em quatro ca-
" ) : : ;
29 APUCAÇÔCS 29
PREVISÃO
N AL IDADE" TAB 3;"<2>
' 1000+250* (T-l)
PARA 1988"TAB 3:"<N> ENTRAB N 710 READ AS. A, B, CD
OVA DATA" 720 IF B=Y AND X>=A THEN LET
120 LET KS=INKEYS IF KS<"1" i
ST-T: LET T-12: NEXT T: RETURN
OB KS>"5" AND K3<>"N" THEN
GOTO 120 730 IF D°=Y AND X< = C THEN LET
130 IF KS="2" THEN GOTO 300 ST=T: LET T-12: NEXT T: RETURN
140 IF KS="N" THEN GOTO 10
150 CLS PBINT AT 0.15-{<LEN
:
740 NEXT T: RETURN
(AS))/2) ;AS
160 FOR B=l TO
RNDMJ + l
170 FOR N=l TO A:
2:
READ BS.CS.D
LET A-INT [
U
10 PCLEAR 1
3: NEXT N 20 DIM H$C11.7,3) .DO, 11) .83(11
180 PRINT PBINT BS'CS'DS: ) .PSU1.3.7)
NEXT B: PAUSE 0: GOSUB 700: 30 FOR K-0 TO 11 READ SS(R>.D(Q ;
EN SS-SS+1 :GOTO 80
as previsões para o próximo ano. 90 CLS:PBINT"SEU SIGNO E ";SS(S
Se o consulente escolher a primeira S)
alternativa, o programa selecionará duas 100 PBINT PBINT TAB 10 "VOCE DE
: (
)
210 KS-INKEYS:IF K$<"1" OR KS>" 12) OR (M-DU.SS) AND D<D(0,SS) 230 FOH K=0 TO 7 LOCATE (64-* 32»K :
4" THEN 210 ) OR (M-DI3.SS) AND D>D (2 SS) , ) -32* (K>3) JMOD32 TNT ( (64+32"K-32 .
220 CLS:PRINT S16-LEN {SS (SS) )/2 THEN SS=SS+1 GOTO BO : * (K>3) ) /32) 'PRINT PS(SS.VAHKS)
,SS(SS) PBINT : 90 CLS PH INT "SEU SIGNO £ ":SS(
: -] ,K) ! NFXT
230 FOR K-0 TO 7 PRINT «64+32*K
: SS) 240 PBINT TAB (10) ;
240 PRINT §448." OUTBA VEZ (S/N 1)0 PHINT PRINT TAB{3);"1- PEBF
:
<>"N" THEN 250
?" IL DE PERSONALIDADE"
) 260 IF KS="S" THEN 90 ELSE CLS:
250 KS=INKEYS:IF KSO"S" AND K$ 120 PRINT TAB<3);"2- PBEVISAO P END
<>"N- THEN 250 ABA L988" PRINT: PRINT TAB(3);"N
:
,K) ,D(1 ,K) ,D(2.K> ,D(3.K) :FOR J- TIME)-1:IF BOC THEN C-B ELSE K OR J = 0 TO 7 FOR L - 0 TO 2: :
E DESEJA
:
70 KS * O
200 PRINT PRINT " 1- DINHEI
no ti H < 0(1>68) - 12 * tss :
98 - SS + 1 COTO BO :
> "4" THEN 210
90 HOME PR I NT " SEI) SIGNO E
:
"
220 HOME :CE - 20 - LEN (SS (S
3 (SS) S)) / 2: HTAB (CE): PBINT SS (SS
" PBINT
100 PRINT IITA1J (10): PHINT :
) :
( 3t"N- ENTHAH NOVA DATA" 240 VTAB (18): PBINT " OUTRA V
130 OEt K5: IF KS < "1" OB (KS EZ (S/N) ?"
250 GET KS: IF KS < > "S" AND
> "2" AND KS < > "N") THKM 13
0 KS < > "N" THEN 250
140 11 KS " "2" THEN 190 260 IF KS " "S" THEN 90
14b IF KS - "N" THEN SO 270 IF KS = "N" THEN HOME E :
160 C - B FOR K = 1 TO 2 B = :
:
uso
1330
29 APLICAÇÕES 29
29 APLICAÇÕES 29
29 APLICAÇÕES 29
29 APLICAÇÕES 29
29 APLICAÇÕES 29
6390 t
6400 I
6410 E
7490 c
7S00 c
7510 r.
IIIIIIIIHI IGODtMÀQUh llllfl
ÂVÂLANO ORDEM DE CHAMADA
RECOMPENSA, MO R TE OU VIDA
160 REM .
está completo - com pedras, buracos, A rotina a seguir é o laço principal 180 REM
que completa o jogo: 190 REM :
10 ORG 19572
IIIIIIIIIHHI CÓDIGO Dl MÃQUIl IHHIIIIIIIIII
O conteúdo da variável morte, em presentação binária. A instrução BNE
PREPARANDO A ROTINA 18252, é carregado no acumulador e verifica se A chegou a 0; se ainda não
comparado com I. Se seu valor for igual chegou, é novamente decrementado.
a L Willie conquistou um prémio. Caso contrário, o processador sai fora
A é carregado com armaze-
5, valor
desse laço. Em seguida, decrementa B
nado em 18258, para ajustar o atraso do LBEQ faz o processador executar um
longo desvio para a rotina que oferece e salta para o laço interno, onde A é de-
sol. A posição de memória 18261, que
a Willie sua recompensa. crementado. Isso é feito até que B tenha
contém a variável do salto, é carregada
Se a variável morte não for igual a chegado a 0.
com 0. Garantimos, assim, que Willie
não apareça saltando na tela. 1, CMPA #2 verifica se seu valor é 2. Em outras palavras: no início, o pro-
A presença desse número indica que cessador rica no laço 256 x 100 vezes,
O processador vai para a rotina ELB
e define os bits necessáriospara os ní- Willie está morto — o processador se para tornar a execução mais lenta. Po-
desvia então para a rotina D1E, que to- rém, quando Willie consegue uma re-
veis superiores do jogo. Segue, então,
ma todas as providências necessárias pa- compensa, o jogo se acelera, pois o pro-
para a rotina MAN, que cuida do mo-
ra os funerais. cessador fica nesse laço apenas 256 x
vimento de Willie e, em seguida, salta
para BAR, SNK, SEA e MOVSUN — 99 vezes, ou 256 x 98 ou 256 x 97 e
assim por diante.
rotinas que movimentam, respectiva-
mente, a pedra, as cobras, o mar e o sol.
torna seu conteúdo, 255 igual a -1 na re- Se a tecla não foi pressionada, a ins-
IIIIIIIIIHH *t CÓDIGO DC MÁQUINA
llllllllll
BNE volta para dar prossegui-
Iruçâo
mento ao jogo. Caso contrário, o pro-
cessador continua, encontra RTS e re-
mi
torna para o BASIC. O
programa a seguir é o laço princi- Como você deve ter notado, esse pro-
pai que completa o jogo: grama chama o endereço inicial da ro-
tina que inicializa o jogo, publicada no
10 org 54101
artigo da página 969.
20 jg call 54603
30 call -11136
Acrescentamos um último detalhe ao 10 call 55564
programa. Na rotina que seleciona a tela so call -1131B
apropriada e ajusta o escore havia, ori- 60 call -11266
ginalmente, um RTS e duas instruções 70 call -11380 O laço principal chama, nesta ordem,
NOP. Elas foram usadas para reservar 80 Id a, {-5201) a rotina de movimentação de Willie, em
o espaço em que colocaríamos uma ins-
90 cp 1 54603; a rotina das pedras, em -1 1 136;
100 JV z. 55506 a rotina das cobras, em 55564; a rotina
trução de salto, que iria funcionar quan-
110 cp 2 do mar, em-1 1318: a rotina da nuvem,
do o jogo fosse executado pela primei- 120 jp z, 55334
ra vez. Não podíamos introduzir essa 130 ld b,50
em -1 1266, e a rotina das gaivotas, em
instrução antes de escrever a rotina de HO -11380.
atr ld a, 255
acionamento. Agora que o programa es- 150
tá pronto, montamos um JMP ALP na- 160 jr nz!dl
PREMIO. MORTE OU VIDA
quele endereço. Com isto, fechamos o i 76 djnz atr
círculo, completando Avalanche, nosso
180 ld a,
videogame em Assembler. 190 call 321 Em seguida, a rotina verifica a cha-
200 bit 4, mada variável da morte. Ela é transfe-
2 10 jr nz.jg rida de -5201 para o acumulador e com-
220 ret parada com t. Se este for o seu valor,
230
a instrução jp z manda o processador
Quando essa rotina e o restante do para a rotina da recompensa, no ende-
programa já estiverem na memória, dê reço 55506. Essa rotina aumenta os pon-
início ao jogo executando o pequeno tos de Willie e seleciona um nível maior
programa BASIC: de dificuldade.
.1681
O conteúdo do acumulador é compa-
rado com 2. Se ele contém esse valor,
o processador é mandado para a n
da morte, em 55334. Essa rotina ente
ra Willie e encerra a partida.
que Wiilie recupera uma pane de seu pressionada, a rotina 321 coloca o va-
lanche. Essa operação resulta, efetiva- lor 1 no bit do acumulador correspon-
mente, em uma alteração no próprio dente a ela.
programa — ou seja, uma rotina altera A instrução bit 4,a examina o bit 4
outra rotina. Esse expediente só é reco- do acumulador, que corresponde à te-
mendável quando seus efeitos forem cia <STOP>. Se ela não foi pressio-
controlados. nada, a instrução jr nz, jg faz o proces-
Diminuindo o valor carregado em B, sador reiniciar o laço principal, jg. Ca-
o processador executará o laço interno so contrário, o processador enconlra a
256 vezes menos, acelerando o jogo. instrução rei e volta para o BASIC.
A +
7
46 PROGRAMAÇÃO DE JOGOS 46
16. 203,980
chegue até o chão (linha inferior da te- PAPER 7; "PLACAR FINAL "::
;
LET BS-": FOR N-28945 TO 640 DATA 31.48, 15. 203. 31. 4B. 14
la). Para isso, você deve movimentar um .203,593
28950: LET BS=BS*CHRS (PEEK N
rolo de pintura (um sinal gráfico hori- 650 DATA 31, 4B, 13. 241.195. 156.
) NEXT N: PRINT BS
:
32.113,906
versões:uma para os microcomputado- NEXT D
700 DATA 197.33,29.113,205,214
compatíveis com a linha Sinclair
120 READ A: IF AOT THEN
res
PRINT "ERRO NOS DADOS DA LINHA ,112,193,1096
Specirum (TK-90X), e outra, para os da ":L: STOP 710 DATA 121.230,248,79,89.22,
linhaTRS-Color. Ambas utilizam códi- 130 LET L-L+10: NEXT N: RETURN 0,33,822
go de máquina, para que os cálculos se- 720 DATA 34.113.25.72,6.24.126
500 DATA 33.34.113,6,0,62.32, 185,585
jam efetuados com a rapidez necessária. 119,399
.
:
,
IIIIIIIIIHHH lllllllll
se armazene uma Se a variável E retornar igual a 0, a losímpares —
a não ser que o ano em
Nada impede que questão seja divisível por 400.
data de calendário em formato numéri- data é válida; se retornar igual a 1 hou- ,
trum não oferecem essa possibilidade). ciso saber o dia do ano de certa data de lar a data corrida de cada uma e obter
A armazenagem de uma data de ca- calendário. Isso caracteriza a data cor- a sua diferença mais 1 . A
operação fun-
lendário em três variáveis inteiras — por rida, composta do ano dia do ano
e do cionará bem se as datas forem do mes-
exemplo. D, M e A — ocupará oito (um número de 1 Por exemplo,
a 366). mo ano; caso contrário, dará resultados
bytes. Podemos armazená-las em uma a data corrida para 14 de maio de 1981 errados.
variável de precisão simples: é 134/81. Por isso, devemos obter um outro
Esta sub-rotina calcula a data corri- número (chamado data juliana), que le-
10000 100
da a partir de uma data de calendário va em conta o total de dias entre uma
Veja os exemplos seguintes: D$, em formato de oito bytes. O resul- data-base, fixa. c a data de calendário
tado será armazenado em N. que especificamos. Para simplificar o
Data DT cálculo, multiplicamos o ano por 365,
de forma que a data-base passa a ser
01/01/47 470.101 1900; depois, somamos o número de
31/12/87 871.231
1600 MS C "0000310590891201501812 dias referente aos anos bissextos entre
12242273303334" 1900 e o ano atual.
Note que DT não pode ser uma va- 1605 Dt=VAL(MIDS(DS. 1.2) :MI=VA ) A próxima sub-rotina calcula a dife-
riável inteira, pois esta não aceitaria os L(MIDS(DS.4,2) Aí -VAL [MIDS (DS
) : rença entre duas datas, entre 1901 e
números maiores. Assim, ficamos, de 7.2) ) 1999. Adicione-a à sub-rotina anterior,
novo, com seis bytes por data. 1610 NÍ=VAL(MIDS(M$. (M*-l)*3+l. que começa na linha 1600.
3! )+DI
1620 IF Mi>2 AND (Al AND NOT-4)
VALIDADE DE UMA DATA =0 THEN NÍ=NÍ+1
1630 RETURN
Uma boa prática de programação 1700 DS=DlS:COSUB 1600:Nl=Ni+
consiste em
testar a validade da data de A**365+INT (Ai-1) /4) (
Eis aqui uma rotina simples para teste 1606 LET M=VAL DS (4 TO 5)
de uma data entrada no formato de oi- 1607 LET A=VAL DS(7 TO 9)
to bytes (variável D$): 1610 LET N-VAL MS((M-1)*3+1 TO 1700 LET DS=D1S
(M-l)*3+3)+D 1705 GOSUB 1600
HHWlilEl 1620 IF M>2 AND (A AND NOT-4 =0 1706 LET N1 = N+A«365 + INT (A-U/4
THEN LET N=N+1
1630 RETURN
)
D, M e A são extraídas da variável DS, tos duas datas, D1S e D2S. no formato
1530 D-VAL(HIDS(DS. 1, 2) :IF D<1 )
de oito bytes (DD/MM/AA), e retorna
que contém a data de calendário. Na li-
OH D>VAL (MIDS (MS (M-l) "2+1 ,2)
,
o resultado armazenado em P.
THEN 1590 nha 1610, o número de dias correspon-
dente à data D.M.A é calculado Para testá-la. acrescente as seguintes
1550 RETURN
somando~se D ao número que se obtém linhas:
extraindo-se do stríng MS o valor para
o primeiro dia do mês M.
1500 LET MS="312931303130313130 Finalmente, a linha 1620 verifica se
313031" 10 PRINT " PRIMEIRA DaTA (DD/MM/
1505 LET E-0 o mês é março ou um dos meses que o AA) " ;
1510 IF LEN(D3)<>8 THEN GOTO 15 sucedem e se o ano é divisível por 4 (ano 20 INPUT D1S
bissexto). Nesse caso. acrescenta-se ao 1
30 PRINT "SEGUNDA DATA (DD/MM/
60
1520 LET M-VAL DS (4 TO 5) número do dia, para compensar o fato
1S25 IF M<1 OR M>13 THEN GOTO 1 de fevereiro ter 29 dias. O emprego, 40 INPUT D2S
560 pouco usual, da expressão lógica AND 50 GOSUB 1700
1530 LET D-VAL DS (1 TO 2) NOT funciona como teste do resto da 60 PRINT P
1535 IF D<1 OR D>VAL MS((M-1>*2 divisão por 4. 70 GOSUB 10
+1 TO (M-l)*2+2) THEN GOTO 1590
1550 RETURN
A rotina só pode ser usada para os
anos de 1901 a 1999, pois o cálculo de Use o programa para saber quantos
1590 LET E-l dias você viveu até hoje!
I 1600 RETURN anos bissextos não funciona para sécu-
llilllllllHHHBHHi^HHHHIIIIIIIIII
COMANDOS EXTRAS
FERRAMENTAS RENUMERAC AO DE LINHAS
AU TON UM ERA C ÃO DE LINHAS
ELIMINAÇÃO EM BLOCO
OUTROS COMANDOS
• renumeração de linhas;
• eliminação de um bloco de linhas;
30 APLICAÇÕES 30
A rotina de remuneração de linhas é Em seguida o programa pedirá o nú- birá na tela informações contidas no ca-
ativada pelo comando: mero da linha inicial (entre 1 e 9900) e beçalho do
arquivo (header).
o incremento (1 a 9900). Para cancelar Finalmente, para converter números
RANDOMIZE USB 63489
o comando, entre dois zeros quando o decimais para hexadecimais, use:
O programa pede que se informe o número de linha aparecer na tela. A ro- RANDOMIZE USR 64394
incremento de linhas a ser utilizado (um tina terminará com uma mensagem de
erro, que deverá ser ignorada. Para efetuar a conversão no sentido
número entre 1 e 255). Para achar o
oposto, digite:
comprimento de um programa BASIC Para apagar um conjunto de linhas
residente na memória, use: de um programa, digite: RANDOMIZE USR 64453
RANDOMIZE USB 63889 RANDOMIZE USR 64000 Não é preciso pressionar <EN-
Para achar o número de bytes dispo- O programa solicita que o usuário di-
TER> após entrar o número hexa-
decimaJ.
níveisna memória, digite: gite osnúmeros de linha do início e do
fim do bloco a ser apagado. Para acio- CLEAR 63488: BORDER 0:
5
RANDOMIZE USB 63860 nar o catalogador de fitas, chame: PAPER 0: INK 6: CLS
10 PRINT AT 0,5: INVERSE 1 "C !
diferem entre si quanto à maneira de en- servadas para periféricos já existentes, rios tipos de microcomputador. Têm
viar e receber o fluxo de bits do perifé- como o gravador cassete, as outras es- cinco ou seis motores de passo variável
rico. Na maioria dos micros, a unidade tão disponíveis para outros usos, como e custam tanto quanto uma UCP de
básica de intercâmbio de informação é o controle de um robô. bom preço. Seus movimentos, realiza-
o byte — um conjunto de oito bits, ou O comando INP tem a mesma sinta- dos um por vez ou de modo continuo,
dígitos binários. A informação armaze- xe e é usado para ler um byte no ende- são controlados de modo direto ou por
nada em um byte é uma sequência de oi- reço da porta. Em geral, o computador uma sequência armazenada no micro. E
to algarismos 0 ou 1 —
por exemplo: não sabe quando este dado esta dispo- possível adicionar pausas, alterar a ve-
00101101. nível. Assim, costuma-se usar um outro locidade do braço e editar as sequências
Na memória interna de trabalho do comando em BASIC para testar a dis- armazenadas, para modificar ou acres-
computador, dois bytes são rotulados ponibilidade de um novo dado: WAIT centar novas fases de movimento. O
especialmente para intercâmbio de da- (não confundircom o comando PAU- programa para controle do braço pode
dos com cada porta de entrada e saída. SE dos micros da linha Sinclair). ser escrito em Assembler ou BASIC,
O primeiro byte, chamado de Registro Em uma porta paralela, os oito bits com chamadas às rotinas em código de
de Direção dos Dados {Data Direction disponíveis no periférico ou byte de en- máquina que controlam as portas de
Register, DDR), determina o status da dereço da porta são transmitidos, simul- E/S. Estas são fornecidas pelo fabrican-
porta, definindo quando o intercâmbio taneamente, por oito fios distintos. Na te que tambémcoloca à disposição do
será no sentido da entrada ou no senti- porta serial, a transmissão se realiza em usuário listagens-exemplo de BASIC,
do da saída. Em geral, se um bit no um bit de cada vez, em "fila indiana", com comentários e explicações.
DDR tiver valor igual a 0, a porta cor- por um único fio. Existem ainda braços robóticos que
respondente está recebendo informações Quando chega a seu destino, no pe- utilizam servomotores, em vez de mo-
de fora; se for igual a 1, ela está trans- riférico, a>Ínformação é usada para con- tores de passo. Um
servomotor possui
com o auxilio de um
mitindo. Portanto, trolar várias operações. Em umdispo- um sensor de posição que verifica con-
comando POKE, em BASIC, podemos sitivo eletromecãnico, como um robô, tinuamente se as posições determinadas
ajustar cada um dos oito canais coman- ela é utilizada para ligar e desligar mo- por comandos estão sendo atingidas.
dados pelo DDR, colocando um núme- tores, relés etc. Após selecionar o ende- Circuitos integrados de preço bastante
ro decimal entre 0 (todos os canais re- reço da porta de saída, o programador acessível (amplificadores lineares) per-
cebendo) e 255 (todos os canais trans- pode enviar sinais para destinos especí- mitem umcontrole razoável do perifé-
mitindo, ou seja, DDR = 1 1 1 1 1 1 1 1 em ficos. Por exemplo, se o valor é ajusta- rico. Um exemplo de braços desse tipo
binário). Colocando o valor 15, por do em 00110111, um sinal é mandado é o Beasty, comercializado na Inglater-
exemplo, teremos DDR - 00001111 — para as destinações correspondentes, ra para os micros da linha BBC.
isto é, os quatro primeiro canais estão através do terceiro, quarto, sexto, séti- O Beasty tem diversos implementos
emitindo, e os quatro últimos, receben- mo e oitavo condutores de uma porta úteis para o desenvolvimento de proje-
do. O endereço absoluto do DDR, a ser paralela, ou, sequencialmente, por um tos de robótica aplicada. Uma câmara
usado com o comando POKE, varia de fio só, de uma porta serial. miniaturizada, chamada Snap, permite
computador para computador. que o micro "veja" e mova o braço. Es-
O segundo byte que controla a porta se dispositivo contém um circuito inte-
corresponde ao endereço da mesma. Um ROBÔS PARA MICROCOMPUTADORES grado sensível à luz, que transmite uma
dado colocado nesse byte é convertido imagem digitalizada com uma resolução
pela interface, conforme a aplicação a Com o aumento do interesse pela ro- de 128 x 256. Pesa menos que 45 g, me-
que se destina, em uma série de pulsos bótica, surgiram nos últimos anos vários de 8 x 10 cm, e é capaz de captar até
de voltagem, que são então passados pa- tipos de robôs baratos que podem ser vinte imagens por segundo. Vários pro-
ra o dispositivo. No sentido oposto, as controlados por um computador domés- gramas interessantes são fornecidos com
voltagens emitidas pelo dispositivo pe- tico. As duas categorias básicas de ro- o Snap, possibilitando, entre outras
riférico são convertidas para bits pela in- bôs desse tipo são os braços robóticos coisas:
terface, e colocadas no byte de endere- e os robôs móveis (tartarugas e buggies),
ço da porta. Dessa forma, o processa- geralmente fornecidos em forma de kits -exibir as imagens captadas no vídeo do
dor central —
e qualquer programa in- para montar, e com o software neces- microcomputador. A imagem pode ser
troduzido nele —
tem fácil acesso à por- sário para operá-los. "fixada", como se fosse uma foto, ar-
ta de entrada e saída, não precisando se Os braços robóticos procuram imitar mazenada em disco ou fita, e, posterior-
ocupar com as conversões a serem rea- os movimentos do braço humano. Cos- mente, reproduzida por meio de uma
lizadas. tumam ter cinco pontos de movimento, impressora gráfica;
A linguagem de máquina, como al- ou graus de liberdade: ombro, cotove-
gumas linguagens de alto nível, entre lo, pulso, garra (com ou sem rotação ao
- animar uma sequência de imagens
elas o BASIC, dispõe de instruções pa- redor do pulso) e base do braço (movi- (vinte quadros), como se fosse um fil-
ra escrever e ler numa determinada por- mento basculante). Braços robóticos po- me ou desenho animado;
16 pmmicos 16
IHIIIIIII
- comparar duas imagens tomadas em LOGO ou uma simplificação da mesma
períodos distintos. Esse recurso tem lar- (com comandos de uma tecla), a crian-
ga aplicação, por exemplo, na monito- ça aprende a programar a tartaruga pa-
rização de residências, edifícios ou lo- ra realizar movimentos complexos. Um
jas, no sentido de evitar a penetração de dos jogos preferidos consiste em dar co-
estranhos. Se a imagem tiver se modifi- mandos pelo teclado, até que a tartaru-
cado além de um limite prefixado, um ga entre em sua "casinha". Os coman-
alarme pode ser ativado. O programa dos em LOGO, digitados em um micro-
mostra um gráfico com o número de computador, são traduzidos por uma in-
mudanças, em função do tempo; terface de software para códigos biná-
Há robôs para micros no Brasil?
rios de controle das portas de saída. Es- Os leitores que se interessaram pe
• reconhecer cenas e objetos e movimen- ses sinais são enviados por um "cordão lo assunto com certeza ficarão frustra-
tar o braço em função disso. umbilical" ligado à tartaruga, ou, nos dos com a resposta: atualmente não
modelos mais sofisticados, como a Va- há,no Brasil, robôs comerciais para co-
Muitas empresas que fabricam jogos liant Turtle, por meio de sinais infraver- nexão a microcomputadores.
mecânicos de armar, como Meccano e melhos. Uma
placa com circuitos eletrô- A Universidade Estadual de Campi-
Lego, lançaram kits com braços robó- nicos, na tartaruga, traduz os comandos
nas (Unicamp) construiu uma tartaru-
ticos, que podem ser conectados a mi- ga semelhante à criada pelo MIT, para
binários em ações sobre os motores das
uso em seus projetos com a linguagem
crocomputadores baratos, como o Sin- rodas e da caneta. A tartaruga tem ain-
LOGO. Porém, essa tartaruga não che-
clair Spectrum. Esses jogos são muito da um olho luminoso, que acende quan-
educativos —aprende-se muito sobre o do ela se movimenta.
gou a ser produzida industrialmente.
Grupos de trabalho da Universidade de
funcionamento de um robô, quando se Os comandos do LOGO permitem a São Paulo |USP) e da Universidade Fe-
tem a oportunidade de armar e progra- movimentação da tartaruga segundo um deral do Rio de Janeiro [UFRJ) desen-
mar um sistema desde o inicio. sistema geométrico, em que a própria volveram protótipos de braços robóti-
tartaruga é o ponto de referência. Exa- cos, como os descritos no artigo, mas
minaremos esses comandos em detalhe,
estes também não são comercializados
ROBÔS MÓVEIS ainda.
na série de artigos sobre novas lingua-
Para Quem tem condições, resta a
gens. Adiantamos aqui, entretanto, as
Ao contrário dos braços robóticos, possibilidade de mandar trazer do ex-
instruções mais típicas: terior um dos modelos de robô mais co-
de base estacionária, alguns robôs para
nhecidos, como a Terrapin Turtle ou a
microcomputadores, como as tartarugas
e os buggies, movimentam-se sobre ro-
FORWARD - Move a tartaruga, em Valiant Turtle (tartarugas), o Hero (ro- I
turo "esperanto" das máquinas de me- tem que elas sejam utilizadas como a lin- e equipamentos musicais (AMPLE) etc.
nor porte. Entre elas, inc!uem-se o L1SP guagem nativa dos computadores, no lu-
e o PROLOG. Entretanto, como as lin- gar da linguagem de máquina. Com is- 0 DESENVOLVIMENTO DE LINGUAGENS
guagens mais recentes ainda se encon- so, a programação se torna muito mais
fácil, podendo sor realizada, em muitos Nada impede que todas as linguagens
tram em processo de aceitação e difu-
casos, pelos próprios usuários. de programação venham a ser desenvol-
são, nem sempre estão disponíveis para
No da década de 70, o Assem- vidas para microcomputadores Mas pa-
os micros de todas as marcas. final
BASIC erampraticamente as rece pouco provável que isso ocorra, vis-
'
Na série que se inicia com este arti- bler e o
únicas linguagens para micros de custo to o grande número de linguagens exis-
go, apresentaremos duas linguagens de
mais baixo, pois o tamanho das memó- tentes. Das mais dc duzentas desenvol-
programação cuja popularidade tem
rias ROM disponíveis limitavam muito vidas até agora, não chegam a vinte as
crescido dia a dia entre os usuários de
micros: o LOGO e o PASCAL. Cada a complexidade e a extensão do progra- que se tornaram conhecidas c utilizadas.
uma tem características que permitem ma interpretador, que deveria ficar per- Como as linguagens naturais, as lin-
sua aplicação seja como linguagem ge- manentemente na memória da máquina. guagens de programação passam por
ral de programação (como o PASCAL), Entretanto, à medida que o espaço contínuo processo de transformação, re-
seja como linguagem destinada a áreas para a memória foi sendo ampliado, visão e alteração.O FORTRAN (FOR-
específicas — a área educativa, por cresceu também a demanda por outros mula TRANstation), por exemplo, evo-
exemplo (como o LOGO). tipos de linguagem —
o que era de se luiu tanto a partir da versão original,
Examinaremos aqui alguns aspectos esperar, dado o número cada vez maior lançada em 1954, que, em alguns aspec-
do desenvolvimento de linguagens de de usuários e de possibilidades de apli- tos, é uma linguagem diversa.
cação. Surgiram então as primeiras im- Além desse contínuo aperfeiçoamen-
programação, a evolução histórica das
plementações práticas, cm microcompu- to, as linguagens também passam por
linguagens existentes e os critérios usa-
dos em sua classificação. tadores, dc FORTH, PASCAL, LOGO, um processo de geração de uma enor-
Há atualmente mais de duzentas lin- FORTRAN. PILOT, C, LISP, PRO- me quantidade de "dialetos" ou varian-
LOG, SMALLTALK e várias outras lin- desenvolvidas para implementação
guagens de programação catalogadas. A tes,
guagens. Muitas delas só podiam ser em linhas específicas de hardware, em
primeira vista, podemos ter a impressão
usadas, anteriormente, em computado- diferentes sistemas e organizações.
de que se trata de uma enorme e bíblica
"torre de Babel". No entanto, as lin- res de grande porte. Uma das limitações mais sérias en-
guagens de programação, tal como as Mesmo algumas linguagens de maior contradas pelo usuário de micros é jus-
linguagens naturais, podem ser enqua- complexidade, que encontram aplica- tamente a incompatibilidade entre dife-
I dradas em linhas evolutivas, ou famílias ções em áreas comerciais ou científicas rentes dialetos do BASIC. Um progra-
IIIIIIIIIIIIHHI '
LINGUAGENS ÚM iiiim
BASIC da temáticos e científicos, mas extrema- guagem de fácil uso pelos iniciantes em
ma desenvolvido segundo o
linha Apple, por exemplo, em geral não mente inadequada (ou mesmo inútil) pa- programação. O ALGOL 60 deu origem
pode executado em um micro de ou-
ser ra tarefas como processamento de tex- ao ALGOL 68 — tão diferente, que po-
tra linha, como o Spectrum ou o MSX. tos ou bancos de dados. Além disso, não de ser considerado uma nova linguagem,
Apesar de todo o esforço despendi- é uma linguagem estruturada, o que apesar do mesmo nome — , bem como
do na elaboração de um padrão inter- restringe a ação do programador. ao PASCAL e ao SIMULA. De uma
nacional, o ANSI BASIC, o problema Na década de 60, desenvolveu-se uma combinação entre o ALGOL e o CO-
ainda não foi solucionado. A inadequa- outra linguagem, o ALGOL 60, com BOL surgiu o PL/ Do PASCAL e do
1 .
ção desse padrão é evidente: tanto que uma filosofia distinta de projeto. Seus SIMULA nasceu um grupo de lingua-
não há uma única marca de computa- pontos fracos e fortes diferem bastante gens procedimentais e algorítmicas, que
dor que o adote integralmente. Por is- daqueles que caracterizam o FORTRAN incluem o MODULA, o MESA, o EU-
so, o interpretador BASIC, criado pela
— sobretudo por se tratar da primeira CLID e o ADA. Finalmente, uma lin-
firma norte-americana Microsoft, tem linguagem de programação estruturada guagem bastante poderosa, voltada à
sido usado como uma espécie de padrão Ela foi projetada para ser essencialmen programação de objetos. originou-se do
por fabricantes de máquinas tão distin- te algorítmica (daí seu nome, ALGO- SIMULA —
o SMALLTALK.
tas como o Apple, o TRS-80 e o MSX, rithmic Language), ou seja, para corres-
O projeto do MSX, aliás, é fruto de ponder não às fórmulas matemáticas: LINGUAGENS IMPERATIVAS
uma das últimas tentativas de se padro- mas ao processo inerente usado na re-
nizar hardware e software de microcom- solução de um problema (algoritmo). A Todas as linguagens citadas são clas-
putadores pessoais através da implemen- unidade básica do ALGOL é o procedi
sificadas como imperativas, pois ope-
tação de mais um dialeto do BASIC Mi- mento, um bloco autónomo de código, ram através de uma sequência de co-
crosoft. Essepadrão tem tido excelente com uma tarefa claramente definida, mandos declarativos — isto é, coman-
repercussão mundial, principalmente no que trabalha com tipos predefinidos dc dos que determinam um tipo altamente
Japão (seu pais de origem), na Europa, variáveis (declarações). Por essa razão, especifico de ação sobre dados da me-
e no Brasil. todas as linguagens derivadas direta- mória, rotulados na forma de variáveis.
A
história das outras linguagens não mente do ALGOL, como o PASCAL, Muitas pessoas estão tão acostumadas
foi muito diferente: o sucesso de um pa- o MODULA-2 e o ADA, são classifica- a essa forma de programação, que ima-
drão resultou sempre da conquista de das como procedimentais, declarativas, ginam tratar-se da única possível. En-
uma boa fatia do mercado pela empre- algorítmicas e estruturadas. tretanto, outras famílias, que incluem
sa que o desenvolveu. O FORTRAN, Embora não tenha sido muito usado, linguagens como o FORTH, o L1SP e
por exemplo, foi desenvolvido pela IBM o ALGOL 60 desempenhou um papel de o LOGO, têm estruturas de dados e de
e, como era distribuído gratuitamente destaque, gerando um grande número processamento bastante diferentes. Elas
com os computadores dessa empresa, de linguagens. Já o COBOL, conside- constituem o grupo de linguagens cha-
passou a ser amplamente adotado e se- rado o terceiro "avô" da computação, madas funcionais ou aplicativas, ope-
guido, inclusive por outros fabricantes. foi intensamente utilizado — mas só dei- rando basicamente através da aplicação
Contando com uma grande base de xou um "descendente", o PL/1. recursiva de funções.
usuários, a própria IBM pôde realizar O COBOL (Common Business —
melhorias subsequentes do FORTRAN Oriented Language) surgiu como respos-
— como o FORTRAN II, o FORTRAN ta à conclusão — enunciada pelo Minis- LINGUAGENS FUNCIONAIS
AS RAÍZES DA LINGUAGEM linguagem mais utilizada para aplicações um conjunto fixo de instruções, ou se-
comerciais em computadores de grande ja, um conjunto que não pode ser am-
A
torre de Babel é uma consequên- porte. Uma das razões que explicam a pliado pelo próprio usuário. A lingua-
cia inevitável da necessidade de desen- grande aceitação do COBOL é sua pro- gem funcional, ao contrário, não faz
volvimento de novas linguagens. ximidade do inglês natural. distinção entre os comandos, declara-
Voltemos ao exemplo do FOR- ções ou funções pertencentes ao conjun-
TRAN. Seguramente, foi a primeira lin- to original e as funções ou procedimen-
guagem de alto nível desenvolvida. Sua tos criados pelo usuário. Por isso, diz-
criação atendeu a duas exigências: a re- se que certas classes de linguagens fun-
solução de fórmulas matemáticas e cien- As linguagens de alto nível anterior- cionais são extensíveis.
tificas, e o uso eficiente dos recursos mente mencionadas deram origem à O processamento baseado em fun-
computacionais disponíveis. Nesses as- grande maioria das linguagens de pro- ções apresenta ainda outra vantagem:
pectos, foi um sucesso. Mas, em dois gramação da década de 60, muitas das ela age sobre parâmetros de entrada e
outros pontos, que não tinham sido jul- quais ainda em uso. O BASIC, por devolve parâmetros de saída, sem "sa-
gados importantes pelos projetistas do exemplo, é um descendente direto do ber" necessariamente o que eles repre-
FORTRAN, a linguagem mostrou-se FORTRAN. As diferenças entre ambos sentam. Isso justifica a classificação das
I deficiente. Ela è excelente para fins ma- refletem o intuito de se chegar a uma lin- funções como generalizáveis.
MIIIIIIIIHHHHBHHHHHHIIIIIIIII
As linguagens funcionais podem ser Um processo semelhante ocorreu câmbio de "mensagens" entre objetos.
divididas em módulos (blocos autóno- com o BASIC original das linhas Sin- Como não existe outro tipo de proces-
mos de processamento) mais facilmen- O SuperBASIC do modelo QL
clair. samento, qualquer ação em um progra-
te do que as imperativas, e possuem uma Spectrum, que dele deriva, tem não só ma é sempre a mesma coisa: uma men-
estrutura interna hierárquica que é usa- estruturas —
como CASE SELECT — sagem enviada para um objeto, que, por
da tanto para o armazenamento do pro- próprias do PASCAL, como também sua vez, envia mensagens para outros
grama quanto dos dados. No LISP ou oferece a possibilidade de se chamar objetos.
no LOGO, por exemplo, uma lista de- funções apenas pelo nome e de se utili- Os objetos podem realizar processa-
finida como uma estrutura de dados po- zar a recursâo. Desenvolvimentos futu- mentos internos, conforme a mensagem
de ser usada para armazenar um progra- ros da linguagem BASIC provavelmen- que recebem. Um objeto do SmallTalk
ma. Existem comandos para modificar te a afastarão ainda mais do padrão ori- é, assim, semelhante a uma função LISP
e executar um programa, armazenado ginal (ANSI), incorporando elementos ou a um procedimento PASCAL. Só
em uma lista (EXECUTE, em LOGO, de linguagens funcionais como o que, em vez de construir procedimentos
e EVAL, em LISP). Essa propriedade FORTH e o LISP. e incorporá-los a uma estrutura em ár-
de uma linguagem é chamada indireção. Como já vimos, o LISP foi desenvol- vore, como no LISP e LOGO, os obje-
Já em uma linguagem imperativa, co- vido como uma linguagem para o cam- tos podem ser considerados entidades
mo o BASIC, programa e dados são ele- po de Inteligência Artificial, e, ainda ho- independentes — como os registros de
mentos inteiramente distintos. con- O je, predomina nessa área. Uma de suas uma base de dados, em que cada regis-
junto de instruções não pode ser amplia- principais características é o intenso uso tro interroga ou responde aos demais.
do e a ordem de execução é muito im- de cadeias de caracteres (slring). Outra Em outras palavras, um objeto pode
portante: se ela sofrer alguma modifi- linguagem útil na mesma área é o SNO- conter tanto dados quanto programas.
cação, determinados valores de memó- BOL (SlriNg Oriented SymBOlic Lan- A idéia não é muito fácil de enten-
ria não serão criados ou atualizados. guage), originalmente desenvolvida pa- der, a não ser que se observe o funcio-
Linguagens como o LISP permitem ra o processamcnio de linguagem natu- namento do sistema. Infelizmente, ain-
uma abordagem bem diferente. Em um ral em Inteligência Artificial, Linguísti- da não se encontram implementações de
certo sentido, cada programa em LISP ca etc, em tarefas como a determina- SmallTalk para todos os micros. Mas
— ou nas linguagens que dele derivam ção da autoria de manuscritos, análise certamente vale a pena investigar essa
— é uma exLensão da linguagem origi- estilística" de textos literários e geração linguagem, pois ela representa uma ten-
nal, com o acréscimo das novas funções automática de poemas. dência importante para o futuro. Siste-
definidas pelo usuário. Com uma lin- Também merece destaque a recente mas operacionais de micros modernos,
guagem funcional, o programador tem evolução das linguagens de desenvolvi- como o Macintosh, da Apple, foram
maior controle sobre o que faz do que mento de sistemas. São linguagens de al- muito influenciados pela filosofia Small-
com uma linguagem imperativa. to nível, mas que incorporam recursos Talk, inclusive quanto ao tratamento da
As três propriedades mencionadas — avançados de trabalho direto com a me- interface com o usuário, que é feita atra-
recursâo, extensibilidade e indireção — mória, processador e periféricos do vés de "janelas" múltiplas, menus e
são fundamentais em um campo muito computador. Entre as linguagens desse acionamento do "mouse".
atuai das ciências da computação: a In- tipo, a de maior sucesso é o C, que foi
teligência Artificial ("raciocínio" e usada para desenvolver o sistema ope- LINGUAGENS DE QUARTA GERAÇÃO
"aprendizado" por máquina). LISP e racional UNIX. Ela possui um podero-
LOGO, aliás, foram criados especifica- so conjunto de ferramentas de desenvol- Certas linguagens aplicativas mais re-
mente para facilitar o processamento vimento de software e tem sido utiliza- centes (de quarta geração) foram desen-
simbólico, não-numérico, característico da sobretudo por programadores mais volvidas a fim de dotar o programador
das aplicações de Inteligência Artificial. experientes. Para o usuário comum, o de poderosíssimos recursos, denomina-
Ambos nasceram no Laboratório de In- C parece um tanto inacessível — está en- dos macros. Com efeito, nessas lingua-
teligência Artificial do MIT (Massachu- tre uma linguagem de alto nível, como gens, um único comando ou função
setts Institute of Technology, nos EUA). o PASCAL, e um Assembler, bem mais equivale a centenas ou milhares de ins-
flexível, mas difícil de usar. Mesmo as- truções de uma linguagem imperativa
sim, essa linguagem vem se difundindo, comum, como o BASIC. Um exemplo
principalmente entre os amadores que de linguagem de quarta geração para mi-
Como já dissemos, as linguagens de desejam dominar sua máquina sem ter cros, o dBASE II (e sua extensão para
computador, da mesma forma que as o trabalho de aprender Assembler. Exis- micros de dezesseis bits, o dBASE III),
linguagens naturais, não permanecem tem diversas implementações do C pa- é, ao mesmo tempo, um sistema aplica-
estáticas: elas evoluem constantemente, ra micros, inclusive o Spectrum. tivo —mais especificamente, um siste-
absorvendo aspectos de outras lingua- O
SmallTalk é outra linguagem que ma gerenciador de bases de dados, ou
gens. Com isso, as diferenças entre lin- segue de perto a filosofia do LISP. Tí- SGBD —e uma linguagem de pro-
guagens imperativas e linguagens fun- pica de uma nova família, a das lingua- gramação.
cionais tendem a diminuir. gens de programação de objetos, ela Outra linguagem de quarta geração
Tomemos como exemplo o BASIC: constitui um
"ambiente" completo de em franca ascensão é o PROLOG
os dialetos mais difundidos do Micro- programação, como o C, e não apenas {PROgrammmg in LOGic), desenvolvi-
soft BASIC (para as linhas Apple, uma linguagem. O SmallTalk tem, no do na França e adotado pelos japone-
TRS-80, TRS-Color e MSX) são lingua- entanto, diversos recursos voltados pa- ses em seu programa de computadores
gens puramente imperativas. Seus des- ra a máxima simplificação do conceito de quinta geração. O PROLOG está pa-
cendentes mais modernos, porém, como de programa e da tarefa de programa- ra ocampo da Inteligência Artificial co-
o QuickBASIC (da própria Microsoft), ção. Nessa linguagem, cada item de um mo o dBASE para a área de gerencia-
possuem características funcionais, en- programa é considerado um objeto. A mento de dados. Existem PROLOG pa-
tre elas a programação estruturada. programação é feita através do inter- ra micros de oito e dezesseis bits.
IIIIHIHIHW—
MfAL ANCHE
— MllMIHIIIIIli
KíSIS
montanha, enfrentar o mar,
*
E5 Cl El C9 E598 CD 69 E3 23 CD 69 E3 Cl E7E8
E348 19 3D:
E7F0 56 E6 C9 FE 02 20 1F 3C
E350 DD 21 21 00 1B 3E E5A0 21 A A 00 CD 69 E3 23 CD
i
E7F8 32 F7 DF 2A F4 DF 01 AB
E3S8 00 DD 77 00 DD 23 2B E5 ESA8 69 E3 C9 3A 03 EO 3D 32 CD 5A
E80 0 DE 3E 28 11 02 01
E360 00 00 ED 52 El 20 Fl E5B0 03 EO FE 00 28 01 C9 3E 2D 01
E808 E6 11 AO 00 19 3E
E368 C9 F5 E5 C5 ES Dl 7A FE E5B8 06 32 03 EO 3E 2D 01 00 00 3D CD 69 E3 C9 FE 03
E5C0 AO 2A 01 EO 16 03 1E 02 E810
E370 01 38 11 00 07 19 E818 20 IA 3C 32 F7 DF 2A FA
E378 Dl 7A 28 06 D5 11 E5CS CD 5A E6 3A OA EO FE 00 11 03
E820 DF 01 D8 DE 3E 2B
E3B0 00 97 D5 11 00 AO E5D0 28 03 2B 18 01 23 22 01
E828 01 CD 5A E6 11 20 00 19
E388 19 Dl Cl F5 OA 77 E5D8 EO 01 38 DF 3E 2F 16 03
E5E0 1E 02 CD SA E6 11 81 00 E830 22 FA DF C9 FE 04 20 18
E390 24 03 Fl 3D 28 03 F5 18 E838 3E 00 32 F7 DF 2A FA DF
E398 F5 El Fl DS 11 00 58 19 E5E8 ED 52 20 06 3E 00 32 OA
E840 11 20 00 ED 52 01 00 3D
E3A0 Dl 77 D5 El C9 00 00 00 E5F0 EO C9 11 90 00 2A 01 EO
E848 3E 2D CD 69 E3 C3 11 E7
E3A8 00 00 00 00 00 00 00 00 ESF8 ED 52 20 OS 3E 01 32 OA
E600 EO C9 01 EO DF 3A 09 EO E850 FE 81 20 33 3C 32 F7 DF
E3B0 00 00 00 00 00 00 00 00 2A FA DF 11 21 58 19 7E
E3B8 00 00 00 00 00 00 00 3E E608 CB 57 2B 03 01 EB DF 2A
E610 OA EO 3E OF 16 20 D5 CS FE 2B CA C2 E7 FE 2C 20
E3C0 10 32 FO DF DD 21 B2 E2 07 2A FA DF 2B 22 FA DF
E3C8 06 20 CS DC 35 EA 3E 00 E618 CD 69 E3 23 Cl Dl IS 20
E620 F5 3A 09 EO 3D 32 09 EO 2A FA DF 11 20 00 ED 52
E3D0 32 Fl DF DD 7E 00 DD 2B 22 FA DF 01 FO DE 11 03
E3D8 FE 21 20 OD 05 3A FO DF E62B 20 10 3E OA 32 09 EO 2A
E630 OA EO 11 20 00 ED 52 22 02 3E 28 CD 5A E6 C9 FE
E3E0 3D 32 FO DF 3E 01 32 Fl 8A 28 5B 3C 32 F7 DF 3A
DF 3A FO DF A7 21 1F 00 E63S OA EO C9 21 37 00 DD 21
E3E8 F6 DF FE 01 28 23 2A FA
E3F0 3E 2D CD 48 EA 01 BO DF E640 F9 D7 06 06 C5 DD 7E 00
E6A8 06 30 80 CD 3E E3 3E 29 DF 01 00 AO 3E 2D 11 03
E3FS 3A Fl DF FE 01 20 03 01 FA DF
E650 CD 69 E3 23 DD 23 Cl 10 ES A O 02 CD SA E6 23 22
EAOO B8 DF 3E 2C CD 69 E3 3A
EBA8 01 A8 DE 3E 28 11 02 01
E408 FO DF 47 3E 17 90 47 3E E658 EB C9 E5 D5 E5 D5 CD 69
E660 E3 23 Dl IS 20 F7 El 11 EBBO CD SA E6 3E 01 32 F6 DF
E410 20 11 20 00 19 CD 48 EA
EA18 Cl 10 AF 21 31 00 06 OC E668 20 00 19 Dl 1D 20 EC El EBBB C9 2A F4 DF 01 B8 DE 3E
E670 C9 3A 00 EO FE 00 28 05 EBCO 28 11 02 02 CD 5A E6 23
E420 3E 29 DD 21 75 E2 CD 2B
07 CD 2B E678 FE 03 28 01 C9 3A OE EO E8C8 22 F4 DE 11 AO 58 19 7E
E428 E3 21 71 00 06 32 F7
AO E680 FE 01 2B S5 2A OC EO 01 E8D0 FE 2C 20 OC 3E 00
EA30 E3 CD 57 E4 C9 21 00
E43B 06 D8 OE 1F 23 7E 2B 77 E688 20 DF 3E 2A CD 69 E3 23 E8D8 DF 3E 04 06 05 CD FC E9
EA AO 23 OD 20 F8 23 10 F3 C9 E690 3E 2D 01 00 3D CD 69 E3 E8E0 3E 00 32 F6 DF C9 3E 00
CD 69 E3 E698 2A OC EO 11 EO 01 ED 52 E8E8 32 F7 DF 2A FA DF 2B 01
E448 C5 01 11
02 CD
E4S0 20 00 10 F2 C9 3A E6A0 28 SD 2A OC EO 11 20 58 E8F0 00 AO 3E 2D 11 02
47 04 E6A8 19 7E FE OF 28 51 FE 2D EBF8 5A E6 11 21 00 19 22 FA
E458 00 EO DF 11
E6B0 20 IA 2A OC EO 01 00 3D E900 DF C3 11 E7 11 C4 00 21
E460 08 00 19 10 FD E5 Cl 21
83 00
EA68 BF 00 3E 3A CD 69 E3 3A E6B8 3E 2D CD 69 E3 11 20 00 E908 3E 04 CD B5 03 11
CD E6C0 19 22 OC EO 01 20 DF 3E E910 21 6E 06 CD B5 03 2A FA
E470 00 EO FE 00 28 OC F5
CD 69
E47B 83 EA Fl FE 01 28 03 CD E6C8 2A CD 69 E3 2A OC EO 2B E918 DF 01 11 3D 3E 2D
E6D0 22 OC EO 3E 01 32 OE EO E920 E3 11 20 00 19 22 FA DF
E480 A9 EA C9 21 C9 01 CD 96
E6D8 C9 2A OC EO 11 00 58 19 E928 01 A8 DE 3E 28 11 02 01
EA88 EA 21 91 01 CD 96 EA 21
E6E0 7E FE 28 20 05 3E 02 32 E930 CD 5A E6 11 1E 00 21 6E
E490 3A 01 CD 96 EA C9 06 OA
2D CD 69 E6E8 F8 DF 2A OC EO 3E 2A 01 E938 03 ED 5F 6F CD B5 03 2A
EA9B CS 01 00 3D 3E 52 38
Cl 10 FD E6F0 2B DF CD 69 E3 23 CD 69 E9A0 FA DF 11 CO 02 ED
EAAO E3 11 20 00 19
E4A8 C9 21 C9 01 CD BC EA 21 E6F8 E3 3E 00 32 OE EO 69 2A E948 CD 3E 09 32 65 EA 3A FF
E700 OC EO 01 00 3D 3E 2D CD E950 DF 3D 32 FF DF C2 EE EA
EABO 91 01 CD BC EA 21 3A 01 OB DD
E708 69 E3 21 DF 00 22 OC EO E958 21 4A 01 3E 8E 06
E4B8 CD BC EA C9 3E OA 01 90
E710 C9 3A F7 DF FE 00 C2 CB E960 21 88 E2 CD 2B E3 CD 3B
E4C0 DF F5 3E 2B CD 69 E3 -11
20 F2 C9 E71B E7 3A F6 DF FE 01 28 5C E968 E6 11 05 01 21 6E 06 CD
E4C8 20 00 19 Fl 3D E970 B5 03 11 88 01 21 3E OA
E4D0 CD B3 E2 3E 05 32 FF DF E720 2A F4 DF 2B 01 00 AO 3E
E728 2D 11 02 02 CD 5A E6 01 E978 CD B5 03 11 05 01 21 6E
E4D8 3E 00 32 00 EO 21 00 00
DF 22 FD E730 A8 DE 3E 28 23 11 02 01 E980 06 CD B5 03 3E 32 32 6E
EAEO 22 F9 DF 22 FB
EA 3E 06 E738 CD SA E6 11 AO 58 19 7E E988 E5 C3 DO E4 11 OB 02 21
| EAE8 DF 3E 13 32 6S 00 EO
02 22 OA E7A0 FE 2D CA C2 E7 FE 2B 2B E990 26 03 CD BS 03 3A
I E4F0 32 09 EO 21 EO
E998 3C CB 97 32 00 E0 3A 6E 42E0 16 05 20 20 13 10 12 05 4528 55 D7 75 D5 55 D7 75 75
E9A0 E5 3D 32 6E E5 3E 03 06 42E8 01 04 20 08 09 13 20 10 4530 57 57 5D 75 57 57 5D 55
E9A8 05 CD FC E9 C3 E9 E4 3A 42F0 09 03 OE 09 03 20 07 OF 4538 55 57 5D 55 7D D7 D7 D7
E9B0 00 EO FE 02 30 01 C9 DD 42F8 OF 04 09 05 13 20 01 OC 4540 7D 5D 7D 5D 5D FF 7D D7
E9B8 21 06 EO 21 A9 01 CD CE 4300 OC 20 20 20 OF 16 05 12 4548 5D 75 FF FD 57 FD 57 FD
E9C0 E9 21 71 01 CD CE E9 21 4308 20 OJ 20 12 OF 03 OB 19 4550 5D 7D DD FF 5D FF D5 7D
E9C8 IA 01 CD CE E9 C9 E5 ED 4310 20 05 OD 02 01 OE OB OD 455B 57 FD 7F D5 FD D7 7D FF
E9D0 SB OA EO ED 52 El 38 01 4318 05 OE M 2E 20 20 20 20 4560 57 5D 75 75 7D D7 7D D7
E9D8 C9 DD 7E 00 3C CB A7 DD 4320 20 20 20 20 20 17 09 OC 4568 7D 7F D7 7F 57 57 57 5F
E9E0 77 00 DD 23 FE 07 30 01 43211 OC 09 05 20 13 05 14 13 4570 5F 57 5F 5F 5F 5F D5 F5
E9E8 C9 01 8B DF 16 2B FE OF 4330 20 OF 06 06 20 14 OF 20 4578 F5 D5 F5 F5 F5 F5 5F 5F
E9F0 20 05 01 00 3D 16 2D 7A 4338 12 05 03 OC 01 09 OD 20 4580 57 57 57 57 S7 57 F5 F5
E9FB CD 69 E3 C9 DD 21 F9 DF 4340 08 09 13 20 OC OF 13 14 4588 D5 D5 D5 D5 D5 FD 55 55
EAOO 16 00 5F DD 19 DD E5 CD 4348 20 10 OF 13 13 05 13 13 4590 55 55 55 55 55 55 57 5F
EA08 12 EA DD EA 10 F7 CD 3B 4350 09 OF OE 13 2C 02 15 14 4598 5F 57 55 57 57 57 D5 F5
EA10 E6 C9 DD E7 00 3C FE OA 4358 20 09 13 20 08 01 OD 10 45A0 F5 D5 55 55 55 FD 55 55
EA18 20 09 3E 00 DD 77 00 DD 4360 05 12 05 04 02 19 20 06 45A8 55 55 55 55 55 55 55 55
EA20 2B 18 EF DD 77 00 C9 00 4368 01 OC OC 09 OE 07 20 02 45B0 55 55 55 55 55 55 FD 55
EA28 00 00 00 00 00 00 00 00 4370 OF 15 OC 04 05 12 13 2C 45B8 57 5D 75 D5 75 55 55 55
EA30 00 00 00 00 00 00 00 00 4378 10 OF 14 20 08 OF OC 05 45C0 D5 75 5D 5D 5F 55 55 55
EA38 00 00 00 00 00 00 00 00 4380 13 2C 20 20 01 OE 04 20 45C8 55 55 55 55 55 55 55 55
EA40 00 00 00 00 00 00 00 00 43BS 16 09 03 09 OF 15 13 20 45D0 55 55 57 5F 5F 57 55 55
EAíiS 00 00 00 00 00 00 00 00 4390 13 OE 01 OB 05 13 2E 14 45D8 55 55 D5 F5 F5 D5 55 57
EA50 00 00 00 00 00 00 00 00 4398 OF 20 OD 01 OB 05 20 20 45E0 57 57 FD 55 S7 5D 55 55
EA58 00 00 00 00 00 00 00 00 43A0 20 20 20 20 OD 01 14 14 45E8 55 FD 55 55 D5 75 75 D5
EA60 DD 21 OF EO 06 13 C5 DD 43A8 05 12 13 20 17 OF 12 13 45F0 75 55 55 55 55 55 5D 5D
EA68 56 01 DD 5E 00 DD 66 03 4JB0 05 20 14 08 05 20 14 09 4SF8 5F 55 55 55 55 55 55 55
EA70 DD 6E 02 DD E5 CD B5 03 43B8 04 05 20 09 13 20 12 09 4600 55 55 55 55 55 55 55 55
EA78 DD El 11 04 00 DD 19 Cl 43C0 13 09 OE 07 01 OE 04 20 4608 55 55 57 5F 5F 57 55 55
EA80 10 E4 C9 00 00 00 00 00 43C8 08 05 20 09 13 20 09 OE 4610 55 55 D5 F5 F5 D5 55 55
43D0 20 04 01 OE 07 05 12 20 4618 55 55 55 55 55 55 55 55
43D8 OF 06 20 02 05 09 OE 07 4620 55 55 55 55 55 55 55 57
43E0 20 03 15 14 OF 06 06 2E 4628 57 57 FD 55 57 5D 55 55
43E8 14 OF 20 08 05 OC 10 20 4630 55 FD 55 55 D5 75 55 55
43F0 17 09 OC OC 09 05 20 09 4638 55 55 55 55 55 55 55 55
Você já deve ler observado que a ro- 43F8 OE 20 08 09 13 20 11 15 4640 55 55 55 55 55 55 75 D5
tina da música funciona independente- 4400 05 13 14 20 12 05 01 04 4648 75 55 55 55 55 55 5D 5D
mente de qualquer outra e foi montada 440B 20 14 08 05 20 06 OF OC 4650 5F 55 55 55 55 55 55 55
distante do programa principal. Isso não 4410 OC OF 17 09 OE 07 20 01 4658 55 55 55 55 55 55 57 5F
interfere com o Assembler de INPUT, 4418 OE 04 20 10 12 05 13 13 4660 7F FF FF FF 7F 5F F5 FD
mas,se você usou outro montador, po- 4420 20 27 13 27 14 OF 20 13 4668 FF FF FF FD F5 D5 55 55
derá descobrir que a rotina da música 4428 14 01 12 14 2E OE 20 20 4670 55 55 55 55 55 55 5F 7F
4430 20 20 2D 20 12 15 OE OD 4678 FF FF FF 7F 5F 57 D5 F5
está na região de memória ocupada pe-
4438 20 20 20 20 2D 20 16 05 4680 FD FF FF FF FD F5 55 55
lo próprio Assembler. Nesse caso, co-
4440 12 14 09 0,3 01 OC 20 OA 4698 55 55 55 55 55 55 5D 57
loque uma nova origem na rotina da 4448 15 OD 10 02 OF 14 08 20 55 5D 75
4690 55 55 55 55 55
música. Tente usar 24000 em vez de 4450 2D 20 04 09 01 07 OF OE 4698 D5 D5 D5 D5 D5 D5 57 5F
30000 — e não se esqueça de mudar as 4458 01 OC 20 OA 15 OD 10 23 46A0 7D 7F 7F 5F 57 57 D5 F5
declarações EQU e as instruções JSR 4460 23 23 21 23 23 21 23 23 46A8 FD FD FD F5 D5 D5 57 57
30000, para que o processador vá para 4468 23 21 23 23 21 23 23 23 46B0 55 55 55 55 55 55 D5 D5
o novo endereço inicial quando a roti- 4470 23 21 23 23 21 23 23 21 46B8 F5 F5 7D 7D 5F 5F 55 55
4470 23 23 23 21 23 23 21 21 46C0 55 55 57 57 5F 5F 7D 7D
na da música for chamada.
4480 55 54 50 50 40 40 00 00 46C8 F5 F5 D5 D5 55 55 7D 7D
Use o monitor de código de máqui-
4488 7F 5F 57 D7 F5 FF D5 75 46D0 F5 F5 7D 7D 5F 5F 55 55
na do seu computador para ler (com
4490 DD 77 5D D5 7D 75 5D 77 46D8 7D 5F 7D F5 D5 D5 55 55
PEEK) a memória e verificar se ela con- 4498 F5 FD 57 75 DD 77 5D D5 AA AA 56 56 AA AA 55 55
46E0
fere com a listagem hexa dada a seguir. 44A0 FD 5F 57 D7 5D FF D5 7F 46E8 AA AA 95 95 AA AA 55 55
44AB 75 77 FD F7 D5 5D 75 77 46F0 7F FF FF FF 7F 5F 81 15
4268 03 oc 09 0 6 06 OH 01 OE 44B0 -55 D5 D5 5D 5D D7 F5 7D 46F8 7D FF FF FF FD F5 57 57
4270 07 DS 12 0 i 12 05 01 14 44B8 D5 5D 5D D7 55 57 FF 7F 4700 57 5F 5F 5F 5F 5F 55 55
4 i ? B 05 04 20 02 19 20 01 2E 44C0 57 57 FD FD 55 75 D5 55 4708 55 D5 D5 D5 D5 D5 57 5F
4280 04 OF 03 17 12 09 14 14 44C8 55 75 D5 55 75 75 D5 D5 4710 7F 5F 5F 5F 57 57 55 D5
4238 05 DE 20 02 19 20 13 2E 44D0 5D 5D D5 D5 5D 5D D7 55 4718 F5 D5 D5 D5 55 55 AA AA
4290 OB 05 OC OC 01 17 01 19 44D8 57 5D D/ 5D D5 D5 5D 5D 4720 AA A6 99 6A AA AA AA AA
429B 01 0E 04 20 07 2E 08 05 44E0 75 D7 DD 75 7D 5D 75 D5 472B AA AA A9 66 9A AA AA AA
4 2A0 04 OC 05 19 20 01 06 14 44E8 5D 75 5D D7 57 75 5D 5D 4730 AA 6A 9A A6 A9 AA AA AA
42A8 06 12 20 01 20 13 0 8 OF 44F0 F5 D5 57 75 5D D5 57 75 4738 AA A6 99 6A AA AA 00 05
42B0 12 U 20 17 01 OC OB ,0 44F8»57 55 55 D7 F7 55 55 DD 4740 00 00 00 00 00 00 06 1D
42B8. 17 09 0 C OC 09 05 20 20 4500 57 55 55 D5 77 55 55 DF 4A38 BD 4A CC BE 04 21 10 8E
A2C0 20 20 20 20 12 0 6 14 05 4508 D5 D5 57 55 5D D5 57 7F 4A40 42 68 C6 05 BD 4A E6 8E
42C6 12 OE 13 20 H OF 20 06 4510 F5 75 5D 55 57 75 5D F5 4A48 04 67 C6 06 BD 4A E6 8E
12D0 09 DE 04 20 14 OH 0 6 20 4518 57 5D 75 5F 5D 57 D7 55 4A50 05 61 C6 10 BD 4A E6 8E
5 2 DS 07 OF 01 14 13 20 08 01 4520 75 75 57 55 55 77 75 D5 4A58 05 AO C6 15 BD 4A E6 8E
IIIIIIIIIIHH 50 coDiGODtmaum 50
4A60 05 C7 C6 OC BD 4A E6 66 4CA8 5A 26 D7 35 36 39 C6 05
30 1F 26 FC 4CB0 3D C3 45 3C 1F 01 34 20
4A68 05 8E FF FF
4A70 4A 2b F6 BD 4A CC 8E 04 4CB8 C6 05 A6 80 34 02 84 OF
4A76 00 10 8E 42 A4 5F BD 4A 4CC0 48 48 48 48 8A 05 A7 21
8D 4A E6 30 B8 4CC8 35 02 44 44 44 44 8A 50
4A80 E6 C6 89
4A88 18 C6 OA BD 4A E6 30 88 4CD0 A7 A4 31 A8 20 5A 26 E2
BD 4A E6 30 OC 4CD8 35 20 31 22 20 C6 CE 47
4A90 16 C6 14
4A E6 BD 80 06 4CE0 1E B6 47 46 85 02 27 03
4A98 C6 14 BD
4AA0 81 53 26 F9 39 BD 4A EE 4CEB CE 47 2E BE 47 47 86 10
BE FF 10 BE 4CF0 34 42 BD 4B CA 35 42 4A
4AAB BD 4A D9 15
04 BD 4A 4CF8 26 F6 7A 47 46 26 OF 96
4AB0 44 5F C6 20 34
04 5A 26 4D0U OA B7 47 4b BE 47 47 30
4AB8 FD BD 4B 12 35
4D08 89 FF 00 BF 47 47 39 7A
4AC0 F3 10 8E 44 C4 8E 06 21
86 4D10 47 52 26 30 86 05 27 47
4AC8 BD 4B 43 39 8E 04 00
4ADQ 80 A7 80 8C 06 00 25 F9 4D18 52 13 BE 06 21 86 1E 34
4D20 02 86 02 1C FE 34 01 5F
4ADB 39 8E 06 00 86 55 A7 00
4AE3 BC 1E 00 25 F9 39 A6 AO 4D28 35 01 66 85 34 01 5C Cl
26 F9 39 86 E5 4D30 8E 26 F5 68 84 35 01 66
4AE8 A7 80 5A
4AF0 B7 FF 22 B7 FF C3 B7 FF 4D38 84 4A 26 E7 30 88 20 35
4AF8 C5 B7 FF C7 39 34 30 8E 4D40 02 4A 26 DB 39 86 47 3E
AO 4D48 27 05 81 03 27 01 39 BE
4B00 06 00 10 8E 06 01 A6
1D FF 25 F7 35 4D50 47 4D CE 06 00 34 10 BD
4B08 A7 80 8C
10 A6 AO 80 21 4D58 4B CA 35 10 30 1F 8C 14
4B10 30 39 34
4918 26 1C 35 10 30 89 FF 00 4D60 EO 27 4B BF 47 4D A6 84
20 10 8E 44 80 4D68 81 AA 27 42 81 55 27 09
4B20 34 10 34
AO A7 84 30 88 4D70 81 5D 27 05 86 02 27 47
4B28 C6 08 A6
4B30 20 5A 2b F6 35 20 6F 84 4D78 4C 30 89 01 21 Ab 84 BI
4B38 30 88 20 8C 1E 00 25 F6 4D80 AA 27 2B 81 55 26 06 30
4B40 35 10 39 C6 1E 34 04 C6 4D88 B8 DF BF 47 4D B6 47 54
A7 80 5A 26 F9 4D90 27 02 BE 47 4D CE 46 76
4B48 04 A6 AO
35 04 5A 26 ED 4D98 BD 4B CA 7F 47 54 39 BE
4B50 30 88 1C
3E C6 10 3D C3 4DA0 47 4D CE 46 5E BD 4B CA
4B58 39 B6 47
03 8E OA DE BD 4DA8 86 01 B7 47 54 39 BE 47
4B60 46 DE 1F CA 8E
4B68 4B CA B6 47 3E 27 OE 34 4DB0 4D CE 06 00 BD 4B
4DB8 OB FE BF 47 4D 39 FC 47
4B70 02 BD 4B 7E 35 02 81 01
4DC0 49 C4 1F Cl 1E 26 05 86
4B78 27 03 BD 4B 9A 39 8E 13 CE 45 CE BD 4B CA 30 89
4DC8 01 B7 47 4C B6 47 55 10 4EF0
4B80 E7 CE OB FF BD 4B B6 8E 89 00
4DD0 26 00 D9 BE 47 49 30 4EFB 00 FE BD 4B CA 30 89
4B88 11 EF CE 08 FF BD 4B B6 26
4DD8 02 20 AE 84 8C 55 55 10 4FO0 FE BD 4B CA 39 81 03
4B90 8E OE F9 CE OB FF BD 48
4DE0 27 00 BB 8C AA AA 10 27 4F08 2F 7C 47 55 BE 47 49 30
4B9B B6 39 8E 13 E7 CE 4b 9E 4B
4DE8 00 B4 8C 5F F5 10 27 00 4F10 89 FF 00 CE 06 00 BD
4BA0 BD 4B B6 8E 11 EF CE 46 BF B7 06
4DF0 AD 5F 7F 47 5B 86 4F18 CA 30 89 00 FE CE 46
4BAB 9E BD 4B B6 8E OE F9 CE 47 56 CE
4DFB FF 02 B6 FF 00 B7 4F20 BD 4B CA 30 89 00 FE
4BB0 46 9E BD 4B Bb 39 C6 04 FF 00
4EO0 86 DF B7 FF 02 B6 4F28 46 26 BD 4B CA 30 89 00
4BB8 34 54 BD 4B CA 35 54 30
4b BD 4B CA
4E08 B7 47 57 81 FD 26 IA C6 4F30 FE CE 4b 39
4BC0 89 01 00 33 C8 10 5A 26
4E10 01 Bb 47 56 81 FD 26 02 4F38 61 04 2b 25 7F 47 55 BE
4BC8 EF 39 C6 02 34 14 C6 08
4E18 C6 81 F7 47 55 Bb 47 58 4F40 47 49 34 10 CE 06 00 BD
4BDÒ 37 02 A7 84 30 88 20 5A
4E20 26 15 BE 47 49 34 10 20 4F48 4B CA 35 10 30 89 01 00
4BD8 26 F6 35 14 30 01 5A 26
4E28 3C B6 47 56 61 FD 26 EA 4F50 BF 47 49 CE 45 6E BD 4B
4BE0 EB 39 BD 4A 38 86 05 B7 86 01 B7 47 58 20 E3 BE CA 30 89 00 FE BD 4B CA
4E30 4F58
4BEB 47 3F 7F 47 3E SE 47 40
4B CA 26 30 7C 47 55
4E38 47 49 CE 06 00 BD 4F60 39 81 81
48F0 C6 06 6F 80 5A 26 FB 86
CA BE Ab
4E40 30 89 00 FE BD 4B 4F68 BE 47 49 30 89 01 22
4BF8 06 B7 47 46 BE 1D 00 BF
4E48 47 49 30 01 34 10 30 89 4F70 84 61 57 10 27 FF 27 BD
4CO0 47 47 8E 13 EO BF 47 49
OB 4E50 01 61 A6 84 81 D5 D7 44 4F78 50 3F BE 47 49 30 89 FF
4C08 7F 47 4B 7F 47 4C 8E
4D 7F 47 4F 86 4E58 81 FF 27 40 81 50 27 44 4F80 01 BF 47 49 CE 45 96 BD
4C10 FE BF 47
50 Bb OA B7 47 4E60 B6 47 4B 27 16 AE E4 CE 4FSB 4B CA 30 89 00 FE CE 45
4C18 05 B7 47
CE 4E68 45 CE BD 4B CA AE E4 30 4F90 B6 BD 4B CA 39 81 82 26
4C20 51 BD 4A A5 8E 07 OF
05 66 03 37 20 4E70 89 01 00 BD 4B CA 7F 47 4F9B 40 7C 47 55 BD 50 3F BE
4C28 44 88 C6
4A 26 F8 30 88 4E78 4B 20 19 AE E4 CE 45 96 4FA0 47 49 30 B9 FF 01 BF 47
4C30 10 AF 81
4C38 IA 5A 26 FO BD 4C 77 8E 4E80 BD 4B CA AE E4 30 89 01 4FA8 49 CE 45 CE BD 4B CA 30
4C40 08 OF CE 44 A6 C6 05 86 4E88 00 CE 45 B6 BD 4B CA 86 4FB0 89 00 FE BD 4B CA 30 89
10 AF 81 4A 26 4E90 01 B7 47 4B AE E4 BF 47 4FB8 00 FE BD 4B CA BE 47 49
4C48 03 37 20
4C50 F8 30 88 IA 5A 26 FO B6 4E98 49 35 10 39 35 10 86 02 4FC0 30 89 03 60 A6 80 81 FF
4C58 47 3F C6 05 3D C3 45 3C 4EA0 B7 47 4C 39 35 10 30 1F 4FCS 27 07 A6 64 81 FF 27 01
4C60 1F 03 8E 08 16 C6 05 37 4EA8 34 10 20 B9 BD 51 6F B6 4FD0 39 86 04 C6 05 BD 51 OF
30 88 20 5A 26 4EB0 47 55 61 01 26 2C 7C 47 4FD8 39 81 83 26 2B 7C 47 55
4C68 02 A7 84
4C70 F6 BD 75 30 7E 51 C4 34 4F.B8 55 BE 47 49 34 10 30 89 4FE0 BD 50 3F 30 89 00 FE CE
4C78 36 8E 47 40 C6 06 10 8E 4EC0 01 00 CE 06 00 BD 4B CA 4FE8 Ob 00 BD 4B CA BE 47 49
84 34 14 C5 01 4EC8 35 10 30 89 FF 00 BF 47 4FF0 30 89 01 01 BF 47 49 CE
4C80 07 16 A6
4ED0 49 CE 45 96 BD 4B CA 30 4FF8 45 96 BD 4B CA 30 89 00
4C88 26 24 C6 05 3D C3 45 3C
4C90 1F 01 34 20 C6 05 A6 80 4ED8 89 00 FE CE 45 B6 BD 4B 5000 FE CE 45 B6 BD 4B CA 39
F6 4EE0 CA 39 BI 02 26 1F 7C 47 5008 81 84 26 1C BD 50 3F BE
4C98 A7 A4 31 A8 20 5A 26
21 35 14 30 01 4EE8 55 BE 47 49 30 89 FF 00 5010 47 49 34 10 30 89 02 00
4CA0 35 20 31
7590 83 00 6D DC 00 7D 4E 00
7598 76 93 00 7D FF 00 8D 6E
75A0 00 A6 83 00 D4 31 00 BD
75A8 6E 00 A8 E9 00 9E 62 00
75B0 BD 93 00 BD 2C 00 D4 62
75B8 00 BD DC 00 A8 5C 00 C8
75C0 DC 00 FC 00 00 00 00 00
75C8 00 00 00 00 00 00 00 00
IIHIIHII11W—11BBB11IIIIIIIHI1
68 ZD 94 DB C6BC 00 00 00 00 10 38 7C 36
C21C 17 17 17 17 17 17 17 17
C4 74 62 F3 62 01 46 00 00 00 C6C4 38 36 10 10 00 00 00 00
C224 17 17 17 1/ 17 17 17 17
C47C FF FF 00 00 FF FF 00 00 C6CC 00 00 00 00 00 00 00 00
C22C 17 17 17 17 17 17 17 17
C484 FF FF 00 00 FF FF 00 00 C6D4 00 00 00 00 00 00 00 00
CZ34 17 1? 17 17 17 17 17 17
C23C C7 C7 C7 C7 C48C FF FF 00 00 FF FF 00 00 C6DC 00 00 00 00 00 00 00 20
C7 C7 C7 C7
C244 C7 C7 C7 C7 C7 C7 C7 C7 C494 FF FF 00 00 FF FF 00 00 C6E4 51 8A 04 00 00 00 00 00
C24C C7 C7 C7 C7 C7 C7 C7 C7 C49C FF FF 00 00 18 3C 3C 18 C6EC 00 00 00 00 00 00 00 00
C254 C7 C7 C7 C7 C7 C7 C7 C7 C4A4 3C 3C 3C 3C 3C 3C 18 18 C6F4 00 00 00 00 00 00 00 00
C25C C7 C7 C7 C7 C? C7 C7 C7 C4AC 18 18 18 1E 00 00 00 00 C6FC 00 00 00 00 00 00 00 82
C264 C7 C7 C7 C7 C7 C7 C7 C7 C4B4 00 00 00 00 00 00 00 00 C704 45 ZB 10 00 00 00 00 00
C26C C7 C7 C7 C7 C? C7 C7 C7 C4BC 00 00 00 00 01 03 03 01 C70C 00 00 00 00 00 00 00 00
C274 C7 C7 C7 C7 C? C7 C7 C7 C4C4 00 01 01 01 OE 00 01 02 C714 00 00 00 00 00 00 00 00
C2 7C C7 C7 C7 C7 C7 C7 C7 C7 C4CC 04 OB 04 00 80 CO CO BO C71C 00 00 00 00 53 43 4F 52
C4D4 00 00 00 EO 00 00 80 40 C724 45 20 30 30 30 30 30 30
CZ84 C7 C7 C7 C7 C7 C7 C7 C7
C28C C7 C7 C7 C7 C7 C7 C7 C7 C4DC 20 20 30 00 0 0 00 00 00 C72C 20 20 56 49 44 41 53 20
C294 C7 C7 C7 C7 C7 C7 C7 C7 C4E4 00 00 00 00 00 00 00 00 C734 30 20 20 4E 49 56 45 4C
C4EC 00 00 00 00 1B 3C 3C 18 C73C 20 30 4E 4F 56 41 20 50
C29C 37 37 37 37 37 37 37 37
C2A4 37 37 37 37 37 37 37 37 C4F4 00 10 10 1E EO 00 OC 24 C744 41 52 54 49 44 41 30 31
C4FC 42 B2 43 00 00 00 00 00 C74C 32 33 34 35 36 37 38 39
C2AC 37 37 37 37 37 37 37 37
C2B4 3 7 3 7 3 7 3/ 37 37 37 37 C504 00 00 00 00 1C 3E 7F FF C754 00 00 00 A6 JO BA 30 95
C50C FF FE FC 38 00 00 00 00 C75C 07 18 08 OF 09 OF FD 00
C2BC 37 37 37 37 37 37 37 37
C2C4 37 3/ 37 37 37 37 37 37 C514 00 00 00 00 00 00 00 00 C764 FD 00 O D5 00 FD 00 IE
C2CC 37 37 37 37 37 37 37 37 C51C 00 00 00 00 00 00 00 00 C76C BD 00 D5 00 OA A'J 00 D5
C2D4 37 37 37 17 37 37 37 37 C524 00 00 00 00 03 07 OF OF C774 00 OF 9F 00 Di 00 05 A9
C2DC A7 A7 A7 A7 A7 A7 A7 A7 C52C OF 07 03 01 00 00 00 00 C77C 00 1C 01 OA BD 00 1C 01
C?E4 A7 A7 A7 A7 A? A7 A7 A7 C534 00 00 00 00 60 CO EO FO C784 1E El 00 El 00 OA 1C 01
C2EC A7 A7 A7 A7 A 7 A7 A7 A7 C53C FO FO EO CO 00 00 07 18 C78C El 00 OF FD 00 El 00 05
C2F4 A7 A7 A7 A7 A7 A7 A7 A7 C544 20 40 40 BO 80 40 7C 02 C794 El 00 FD no oa 1)5 00 FD
C2FC 87 B7 B7 67 87 87 87 87 C54C 02 01 00 00 DO 00 1F AO C79C 00 Fi 00 FD 00 O A FD
C304 87 87 87 87 67 87 87 87 C554 CO 00 00 00 00 00 00 04 C7A4 00 3F 01 OF OC 3F
C30C 87 87 67 67 87 87 87 87 C55C OA 11 EO 00 00 00 80 40 C7AC 05 FD 00 3F 01 [)A Fl 00
I FF 00 00
C41C FF FF 00 FF 00 00 C66C 00 00 00 00 00 00 00 00 C8BC 00 7B 01 05 A9 00 01
,
C424 FF FF 00 00 FF FF 24 U C674 00 00 00 00 00 00 00
00 06 08 76
00 C8C4
C8CC
OA BD 00 1C 01
FD 00 05 El 00
IE BD 00
El 00 OA
C4 2C 2,4 12 AE OC 24 1Z 24 12 C67C 00 00 00 FF
C4 34 AE OC 02 OD 48 6C D 3 00 C684 FF FF 7E 3C 00 00 00
00 C8R4 8E 00 El 00 OF FD 00 FD
C4 3C 54 5C OF 24 12 AE OC EB C6BC 00 00 00 00 00 00 00
00 CBDC 00 05 El 00 1C 01 OA D5
C444 OC 48 fiC D3 00 54 FO F3 C694 00 00 00 00 00 00 00
00 C8E4 00 FD 00 1E El 00 El 00
C44C 00 OC 00 48 6C 04 20 11 C69C 00 00 00 00 10 10 10 38 C6EC 05 FD 00 D5 00 05 FD 00
C454 00 2E FC 71 03 4B 07 18 C6A4 38 38 38 36 00 00 00 00 C8F4 SD 00 05 OC 01 A9 00 OF
C4 5C 01 CF 46 01 00 C8 7D F2 C6AC 00 00 00 00 00 00 00 00 CBFC 2D 01 A9 00 05 OC 01 52
C4 64 2E BB 46 49 C5 ZD 94 F3 C6B4 00 00 00 00 00 00 00 00 C904 01 OA FD 00 FD 00 IE FD
Mllllllllim » CÓDIGO D£ MÁQUINA
llllll
C90C 00 7E 00 0A FD 00 A9 00 CB54 20 20 20 20 20 20 20 20 D058 20 F6 C9 06 04 OE Al 3E
C914 OA FD 00 FD 00 IE 08 00 CB5C 20 20 20 20 50 61 72 61 D060 00 D3 AO 3C ED A3 20 F9
C9lC 09 00 OA 00 64 68 6C 28 CB64 20 70 69 6F 72 61 72 20 D068 C9 46 21 EB 03 11 00 00
C924 2D 35 32 30 30 29 23 2D CB6C 61 20 73 69 74 75 61 87 D070 2B E5 ED 52 El 20 F9 10
C92C 35 32 30 30 29 2C 68 SC CB74 BI 6F 2C 20 61 20 6D 61 D078 Fl C9 CD 4B DO 06 14 C5
C9J4 28 2D 35 32 30 30 29 2C CB7C 72 82 20 20 20 20 20 20 DOBO CD 5B DO E5 CD 69 DO El
C93C 68 6C 6C 64 21 6C 64 6C CB84 65 73 74 AO 20 73 75 62 D088 23 Cl 10 F3 CD 4E DO C9
C944 64 35 35 35 35 35 32 32 CBBC 69 6E 64 6F 20 65 20 65 D090 21 E9 F3 36 04 23 36 07
C94C 35 35 32 35 41 56 41 4C CH94 6C 65 20 70 6F 64 65 20 D098 23 36 07 CD 72 00 3E E2
C954 41 4E 43 48 45 43 72 6» CB9C 73 65 20 61 66 6F 67 61 DOAO 32 EO F3 CD 69 00 C9 ED
C95C 61 87 BI 6F 3A 52 2E 4E CBA4 72 2E 20 20 20 20 20 20 DOAS 5B CB F3 21 AO C4 01 80
C964 65 64 65 72 50 72 6F 67 CHAC 53 65 20 76 6F 63 8B 20 DOBO 02 C5 E5 D5 CD 5C 00 Dl
C96C 72 61 6D 61 3A 4D 2E 48 CHB4 71 75 65 72 20 61 6A 75 D0B8 21 00 08 19 54 5D El Cl
C974 75 61 73 63 61 72 20 20 CBBC 64 61 72 20 57 69 6C 6C DOCO C5 E5 D5 CD 5C 00 Dl 21
C97C 20 20 20 20 41 70 A2 73 CBC4 69 65 2C 20 6C 65 69 61 DOCS 00 OB 19 54 5D El Cl CS
C964 20 75 6D 20 70 65 71 75 CBCC 20 61 73 20 20 20 20 20 DODO E5 CD 5B5C 00 ED CF^H
C98C 65 6E 6F 20 70 61 73 73 CBD4 69 6E 73 74 72 7S 87 B5 D0D8 CL El C9CD 5C 00 ED 59
C994 65 69 OF 2 :' ,
!
D158 C5 íb
CA14 68 'j
Í5 20
F 20 20 20 20 CC5C 20 20 20 20 20 20 20 20 D160 CD 2D Dl CD 17 Di El 3A
I 61 1 6F 20 73 6b 75 CC64 20 20 20 20 20 20 20 20 D168 93 EB FE 01 20 07
63 68 65
3A 92
6C 61 6E 20 CC6C 20 20 20 20 20 20 20 20 D170 EB 1C 32 92 EB 3E 00 32
61 20 65 6E 63 6F 73 CC74 20 20 20 20 20 4E 20 20
CA D178 93 EB 7E 2B E5 FE 21 20
(4 74 6 2E 20 20 20 20 20 CC7C 20 20 20 20 70 61 72 61 D180 05 JE 01 32 93 EB
.
CA3-T 70 3A 92
20 20 20 20 20 20 20 CC84 20 20 20 20 20 43 6F 72 IUBH EB 47 21 90 E8 3E FF CD
CA44 20 20 20 20 20 20 20 20 CC8C 72 65 72 20 20 20 20 20 D190 B5 Dl 06 30 3A 93 EB FE
CA4r 20 20 20 20 20 20 20 20 CC94 20 20 20 20 20 20 20 20 D198 01 20 02 06 34 78 77 3A
CA54 20 20 20 20 20 20 20 20 CC9C 20 20 20 20 20 4D 20 20 D1A0 92 EB 47 3E 17 90 47 3E
CA5C 20 20 20 20 20 20 20 20 CCA4 20 20 20 20 70 61 72 61 D1A8 51 11 20 00 19 CD B5 Dl
CA64 20 20 20 20 20 20 20 20 CCAC 20 20 20 20 20 53 61 6C D190 El Cl 10 AA C9 77 11 20
CA6C 20 20 20 20 41 67 6F 72 CCB4 74 61 72 20 20 20 20 20 DIBB 00 19 10 F9 C9 3A 94 EB
CA74 61 20 65 6C 65 20 64 65 CCBC 20 20 20 20 20 20 20 20 D1C0 17 17 06 38 80 2A C7 F3
CA7C 76 65 20 73 75 62 69 72 CCC4 20 20 20 20 20 41 6D 62 D1C8 11 DE 00 19 CD 4D 00 3A
CA84 20 61 6F 20 74 6F 70 6F CCCC 6F 73 20 20 70 61 72 61 DIDO 94 EB FE 00 28 OC F5 CD
CA6C 20 64 61 20 20 20 20 20 CC04 20 75 6D 20 20 53 61 6C Dl DP E Dl Fl FE 01 28
I 03 CD
CA94 6D 6F 6E 74 61 6E 68 61 CCDC 74 6F 20 44 69 61 67 6F D1E0 OA D2 C9 11 C9 01 Db 11
CA9C 20 70 61 72 61 20 72 65 CCF.4 6E 61 6C 20 20 20 20 20 DlEfl 91 OJ D5 3A 01 i 1 D5 OE
CAA4 63 75 70 65 72 61 72 20 CCEC 20 20 20 20 20 20 20 20 D1F0 03. 2A CV F 06
[)1 .1 04 19
CAAC 73 75 61 73 20 63 6F 69 CCF4 20 20 20 20 20 20 20 20 D1F8 .SE FE E5 C5 <*D 40 00 Cl
CAB4 73 61 73 2C 20 CCFC 20 20 20 20 ZO 20 20 20
CABC 65 6E 66 72 65
20 20
6E 74 61
20
CD04 20 20 20 20 20 20 20 20
D200 El 11 20 00 10 f^^^^H
D208 Efi C9 iE 25 32 9í
CAC4 6E 64 6F 20 75 6D 61 20 CDOC 20 20 20 20 20 20 20 20 D21 03 32 96 EB
0 C6 01
CACC 61 76 61 6C 61 6E 63 68 CDU 20 20 20 20 20 20 20 20 D218 EB C6 03 J2 98 EB 11 C9^
CAD4 65 2C 20 63 6F 62 72 61 CD1C 20 20 20 20 20 20 20 20
CADC 73 20 2020 20 20 20 20 CD24 20 20 20 20 20 20 20 20
D220 01 D5 11 91 01 D5 3AU 1
D228 01 D5 OE 03 7A C7 F3 11 i
CAE4 76 65 6E 65 6E 6F 73 61 CD2C 20 20 20 20 20 20 20 20 D230 95 EB ED 53 99 EB Dl 06 J
CAEC 73 20 65 20 63 6F 72 72 CD34 20 20 20 20 20 20 20 20 D23B 04 19 ED 5B 99 EB IA 13«
CAF4 65 6E 64 6F 20 6F 20 72 D240 ED 53 99 EB
'
E5 C5 CD 4D>
CAFO 69 73 63 6F 20 64 65 20 DOOO CD6C 00 11 28 01 21 50
CB04 63 61 69 72 20 20 20 20
D248 00 Cl El 11 20 UO 10 E*J
D008 C901 09 00 CD 5C 00 11 D250 OD 20 D9 C9 00 00 00 oJH
CB0C 6E 75 6D 20 62 75 72 61 D010 ED01 21 59 C9 01 OF 00
CB14 63 6F 2E
D258 00 00 CD 00 DO 3E 58 J^Ê
20 20 20 20 20 D018 CD5C 00 11 3C 02 21 68 D260 7E DO CD 7A DO 3E 05
CB1C 20 20 20 20 20 20 20 20 D020 C901 12 00 CD 5C 00 06 D268 9B EB 3E 00 12 r>4 EB Jfffl
CB24 20 20 20 20 20 20 20 20 D028 OAED 6B 11 00 00 2B E5 D270 00 00 22 9D EB 22 91? Çft
CB2C 20 20 20 20 20 20 20 20 D030 ED52 El 20 F9 10 F2 11 D27B 22 Al EB S£ 14 32 7E 00
CB34 20 20 20 20 20 20 20 20 D038 00 00 21 7A C9 01 CO 03 D280 CD 90 DO 3E 06 32 A3 EB
C33C 20 20 20 20 20 20 20 20 D040 CD 5C 00 CD 9F 00 FE 53 D288 21 EO 02 22 A4 EB 2 1 82
CB44 20 20 20 20 20 20 20 20 D048 20 F9 C9 21 5C C7 06 06 D290 00 22 A6 EH 3E 03 J2 A8
CB4C 20 20 20 20 20 20 20 20 1)050 OE AO ED A3 OE Al ED A3 D298 EB 3E 00 32 A9 EB 3E 02
IIIIIIIIIIHHf
D2A0
D2A8
D2B0
32 AA EB 21 C2 01 22 AB
EB 21 00 00 22 AD EB JE
00 32 AF EB 21 FF 00 22
50 CÓDIGO D£ MAQUINA
D4E8
D4F0
D4F8
3E OD
2B 22
00 2A BO EB
3E 01 32 B5
EB C9 CD 02 D5 C9 CD 37
Hl
D7 30 00 El 11
D736 06 E5 CD
D740 04 CD 4D
20 00 ED 52 3E
4D 00 El 2B 3E
00 2A AB EB 11
D5 C9 2A C7 F3 ED bB BO D748 20 00 ED 52 22 AB EB C9
D2B8 BO EB 3E 00 06 05 32 B2 D500
D 7 5 O FE CA EB 07 3C 32 AE
DZCO EB 80 32 B3 EB BO 32 B4 D508 EB 19 E5 CD 4A 00 FE 00 I
D758 EB 3A AD EB FE 01 CA 9A
D2C8 EB CO 3B Dl CD BD Dl 3E D510 28 OC FE 01 28 08 FE 07
D760 D7 2A AB EB ED 5B C7 F3
D2D0 AO 32 B7 FC 3E 10 32 B9 DblB 28 04 FE OB 20 05 3E 02
32 AF EB El 3E 11 E5 CD
D768 19 3E FF E5 CD 4D 00 El
D2D8 FC 11 20 C7 06 34 C5 D5 D520
D770 11 20 00 19 3E FF E5 CD
D2E0 IA CD 8D 00 Dl 13 Cl 10 D528 4D 00 El 23 3E 13 CD 4D
D77B 4D 00 El 23 3E 01 E5 CD
D2ES F5 11 01 00 3E 54 06 1E D530 00 3E 00 32 B5 EB C9 2
D7B0 4D 00 El 11 20 00 ED 52
D2F0 C5 D5 F5 2A C? F3 19 CD 0538 C7 F3 ED 5B BO EB 19 3E D7H8 3E 00 CD 4D 00 2A AB EB
4D 00 Fl 3C Dl 13 Cl 10 DS40 FF CD 4D 00 21 FF 00 22
D2FS D790 23 22 AB EB 3E 01 32 AD
D300 EF CD 07 D3 C3 2E D3 11 D54R BO EB C9 3 A AE EB FE 00
D798 EB C9 2A AB EB ED 5B C7
D308 9D EB ED 53 BA EB 11 07 D550 C2 46 D6 3A AD EB FE 01
D7A0 F3 19 3E 04 E5 CD 40 00
D310 00 2A C7 F3 19 06 06 C5 D558 CA D3 D5 2A t'7 F3 ED 5B
D7A8 El 23 3E 06 E5 CD 4D 00
0318 ES ED 5B BA EB IA 13 ED D560 AB EB 19 E5 2B 3E FF E5
D7B0 El 11 20 00 19 3E 07 E5
D320 53 BA EB C6 7E CD 40 00 D56B CD 4D 00 El 11 20 00 19
D7B8 CD 4D 0 0 El 2B 3E 05 CD
D328 El 23 Cl 10 EA C9 3A 9B D570 3E FF CD 4D 00 El 3E 00
0578 E5 CD 4 D 0 0 El 11 20 00 D7C0 4D 00 2A AB EB 2 3 2 2 AB
D330 EB C6 7E 11 15 00 2A C7 D7C8 EB ED 5B C7 F3 19 11 40
D338 F3 19 CD 4D 00 3A 94 EB D580 19 3E 01 E5 CO 4D 00 El
D7D0 00 19 CD 4A 00 FE 34 20
D340 C6 7E 11 1E 00 2A C7 F3 D588 11 20 00 19 CD 4A 00 FE
D590 4B CA 4 0 06 FE 4A CA 40 D7D8 OC 3E 00 32 AE EB 3E 04
DJ48 19 CD 4D 00 CD 7A DO 21 D7E0 06 05 CD EC OB 3E 00 32
D3S0 IA C9 CD 4E DO CD 4B D5 D598 D6 FE 25 CA 40 D6 FE FE
D5A0 CA 40 D5 1E 04 CD 41 01
D7E8 AD EB C9 3E 00 32 AE EB
0358 CD 80 D4 CD OC 09 D7F0 2A AB EB ED 5B C7 F3 19
3360 D3 CD FE D CD BC D5A8 CB 57 20 OE 06 01 CB 5F
D7F8 E5 3E FF CD 4D 00 El 2B
J
3368 AF EB PB 01 CA D2 D5B0 20 02 06 81 78 32 AE EB
D5B8 18 09 CB 5F 20 05 3E 01 D800 3E FF E5 CD 4D 00 El 11
D370 02 CA 26 D8 06 32 3E FF
D5C0 32 AD EB 2A AB EB 11 DE D80B 20 00 19 3E FF E5 CD 4D
3378 3D 20 F D 10 F 9 3 E 07 CD
41 01 CB 67 20 CF C9 C9 D5C8 00 ED 52 20 0T3E 01 32 DB10 00 El 23 3E FF CD 40 00
D3B0
D5D0 AF EB C9 2A C7 F3 ED 5B D818 2A AB EB 11 20 00 19 22
D388 C9 C9 FF FF JA AA EB 3C D5 C9 2A AB
D5D8 AB EB 19 11 21 00 19 E5 D820 AB EB C3 1
D390 Cfl 9F 32 AA EB 06 1C FE
D5E0 CD 4A 00 El FE 24 Z8 56 D8 28 EB ED 5B C7 F3 19 23 3E
D 396 04 38 02 06 20 Cti 78 2A
D5E8 FE 34 28 4E FE OD 28 50 D830 FF E5 CD 4D 00 El 2B 2B
D3A0 C7 F3 11 2A 00 19 E5 F5
D3A8 CD 4D 00 Fl El 23 C6 02 D5F0 FE 11 28 4C 11 20 00 19 D838 3E FF E5 CD 4D 00 El 11
D3B0 CD. 4D 00 Cl 78 2A C7 F3 D5F8 CD 4A 00 FE 48 28 41 FE D840 20 00 19 3E FF E5 CD 4D
D600 4A 28 3D FE FE 28 39 FE D848 00 El 23 23 3E FF E5 CD
D3B8 11 44 00 19 ES F5 CD 40 3E FF CD 4D
D608 25 28 35 2A C7 F3 ED 5B D850 4D 00 El 2 3
D 3 CO OQ Fl El 23 C6 02 £T> 4D
D3C8 00 C9 06 48 3A A3 EB CB 0610 AB EB 19 3E 04 E5 CD 4D D858 00 2A AB EB E5 ED 5B C7
D61B 00 El 23 3E 06 E5 CD 4D D860 F3 19 3E FF CD 4D 00 El
D3D0 57 2B 02 06 4C 2A C7 F3
D620 00 El 11 20 00 19 3E 07 D868 11 20 00 19 22 AB EB ED
D3D8 ED 5B A4 EB 19 78 01 20
D628 E5 CD 4D 00 El 2B 3E 05 D870 5B C7 F3 19 3E 00 Eb CD
D3E0 00 CD 56 00 3A A3 EB 3D 4D 00 El 11 20 00 19 3E
U3E8 32 A3 EB 20 10 3E OA 32 D630 CD 4D 00 2A AB EB 23 22
D638 AB EB 3E 00 32 AD EB C9 01 CD 4D 00 06 FF 3E FF
D3F0 A3 EB 2A A4 EB 11 20 00 3D 20 FD 10 F9 2A AB EB
D3F8 ED 52 17 A4 EB C9 3A A8 D640 3E 02 32 AF EB C9 3A AE
D648 EB FE 01 20 30 3C 32 AE DB90 11 CO 02 ED 52 38 C2 3A
D400 EB 3D JZ A8 EB FE 00 28
0650 EB 2A AB EB 11 20 00 ED D898 9B EB 3D 32 9B EB C2 80
D4 08 01 C9 3E 06 32 AB EB 3A
D658 52 22 AB EB ED 5B C7 F3 D8A0 D2 11 EA 00 3E 72 06 OC
D41D A9 EB FE 00 28 06 21 A6
D660 19 3E OA E5 CD 4D 00 El D8AB C5 D5 F5 2A C7 F3 19 CD
D418 EB 35 18 04 21 A6 EB 34 D8B0 4D 00 Fl 3C Dl 13 Cl 10
D420 2A CD F3 06 06 3A A6 EB D668 11 20 00 19 3E OB E5 CD
D670 4D 00 El 11 20 00 19 3E D8B8 EF 06 1E 3E FF OE FF OD
0428 4F 16 14 1E 01 CD 60 D4
D678 FF CD 4D 00 C9 FE 02 20 D8C0 20 FD 3D 20 F8 10 F4 CD
0430 2A CD F3 LI 04 00 19 06
D680 1D 3C 32 AE EB 2A AB EB D8C8 07 D3 3E 32 32 75 D3 C3
D438 06 3A A6 EB C6 1(T 4F 16
D68B ED 5B C7 F3 19 3E 00 E5 D8D0 5A D2 3A 94 EB 3C CB 97
D440 18 1E SI CD 60 D4 3A A6
D690 CD 4D 00 El 1] 20 00 19 DRD8 32 94 EB 3A 75 D3 3D 32
0448 EB FE fQ2 20 06 3E 00 32
D69B 3E 01 CD 4D 00 C9 FE 03 D8E0 75 03 3E 03 06 05 CD EC
D450 A9 EB C9 3A A6 EB FE E6
D45B 20 05 3E 01 32 A9 EB C9 D6A0 20 1D 3C 32 AE EB 2A AB D8E8 D8 L'3 80 D2 21 9D EB 16
D460 78 D5 ǣ E5 CD 4D 00 El D6A8 EB ED 5B C7 F3 19 3E OA D8F0 0 0 5F 19 E5 CD FE D8 El
D468 Cl 23 79 El, CD 4D 00 El D6B0 E5 CD 4D 00 El 11 20 00 D8F8 10 F9 CD 07 D3 C9 7E 3C
D4 70 Dl 23 7A D5 E5 CD 4D 00 D6B8 19 3E OB CD 4D 00 C9 FE D900 FE OA 20 06 3E 00 7 7 2B
D478 El Dl 2 3 7li CD 4D 0 0 C9 D6C0 04 20 1E 3E 00 32 AE EB D908 18 F4 77 C9 3 A 94 EB FE
D480 3A 94 EB FE 00 28 05 FE D6CB 2A AB EB E5 ED 5B C7 F3 D910 02 30 01 C9 Dl B2 EB 21
D488 03 28 01 C9 3A Bb EB FE D6D0 19 3E FF CD 4D 00 El 11 D91B A9 01 CD 2A D9 21 71 01
D6D8 20 00 19 22 AB EB C3 4B D920 CD 2A D9 21 IA 01 CD 2A
D490 01 28 67 2A C7 F3 ÊD 5B
D6E0 D5 FE 81 20 6B- 3C 32 AE D926 D9 C9 Eb ED 5B A4 EB ED
D498 BO EB 19 3E OD E5 CD 4D D930 52 El 3B 01 C9 OA 3C CB
D4A0 00 El 23 3E FF CD 4D 00 D6EB EB 2A C7 F3 ED 5B AB EB
D6F0 19 11 21 00 19 CD 4A 00 D938 A 7 O.: O.í FE 07 30 01 C9
D4A8 2A BO EB 11 EO 01 ED 52 D940 ED bB C7 F3 19 FE OF 06
D4B0 28 4C 2A C7 F3 ED 5B BO D6F8 FE 24 CA 40 D6 FE 34 20
D700 07 2A AB EB 2B 22 AB EB D94 8 24 20 02 06 FF 78 CO 4D
D4BB EB 19 11 20 00 19 CD 4A
D708 2A AB EB ED 5& C7 F3 19 D950 00 C9 00 00 00 00 00 00
D4C0 00 FE 48 28 39 FE 4C 28
D710 ES 11 20 00 19 3E FF E5 E870 21 21 23 23 21 23 23 23
D4C8 35 FE FF 20 20 2A C7 F3
D718 CD 4D 00 El 23 3E FF CD EB78 21 2 3 2 3 21 23 21 23 23
D4D0 ED 5B BO EB 19 3E FF D5
D720 4D 00 El 3E 05 E5 CD 4D E880 '23 23 21 23 21 23 23 23
04D8 CD 4D 00 Dl 21 20 00 19
D728 00 El 23 3E 07 E CD 4D
1
E888 23 21 23 23 21 23 23 23
D4E0 22 BO EB ED bB C7 Fl 19
!
IIIIIIIIIHIIH llllllllll
QUEBRA-CABEÇAS NO COMPUTADOR
pode transportar um de cada vez. Mas h, que não estão elevados a nenhuma A A LINHA " ;
80 FOR K-l TO C
não deve deixar sozinhos em qualquer potência (3cT2 - 2h = 44, por exem-
das margens do rio nem o lobo e o car-
90 INPUT A(J,K}
plo, não seria uma equação linear). Pa-
95 PRINT A(J,K) ";
neiro, nem o carneiro e o repolho, pois ra se chegar a uma solução desse siste-
100 LET R{J,K)=A(J,K)
algum não sobraria... Como chegar ao ma são necessárias tantas equações 110 NEXT K: NEXT J
outro lado do rio com todos os seus quantas forem as variáveis. Neste caso, IZfl FOR L=l TO R
bens? existem dois valores desconhecidos c — 130 G0SUB 230
Você pode resolver esse problema uti- eh —e duas equações; logo, existe uma 140 GOSUB 280
lizando um computador (se quiser, es- solução. 150 NEXT L
creva um programa), mas é muito mais Uma maneira de resolver o problema 160 CLS
rápido encontrar a sua solução com um seria isolar uma
variável na segunda 170 FOR K=l TO C-l: PRINT AT 1
lápis e um papel. equação — (48 - 4h)/2
c = e — ,4*K-4;AS(K) NEXT K :
os respectivos valores, pergunia-se so- chá custa CzS 7,00. 210 FOR K-l TO C-l: PRINT AT 4
bre o valor de uma situação hipotética. Sistemas com duas equações sãobem +R.K*4-4;À(K,C) NEXT K :
A máquina também é útil quando a fáceis de resolver. Com três, também 220 STOP
questão envolve cálculos aritméticos não são tão difíceis. Mas, a partir daí, 240 LET D=A(L,L)
complexos ou geometria. Nesses casos, você, certamente, irá precisar da ajuda 250 FOR K=] TO C
chega-se mais depressa ao resultado es- do computador. 260 LET A(L.K)=A(L,K]/D
crevendo um programa do que buscan- 270 NEXT K: RETURN
do a solução à mão. 290 FOR J = l TO R
0 VENDEDOR DE SELOS 300 IF J-K THEN NEXT J:
Neste artigo, mostraremos como re-
solver três dos tipos mais comuns de
RE TU RN
Um negociante possui uma caixa de 310 LET F-A(J.L)
quebra-cabeça. Antes de olhar as solu-
320 FOR K-l TO C
ções, tente encontrá-las sozinho. se- Em selos estrangeirosagrupados em seis ti-
330 LET A(J,K)-A(J,K)-F*A(L,K)
guida, examine os programas e veja co- pos de envelope. Cada envelope, classi- 340 NEXT K: NEXT ,) RETURN :
CzS 44,00. No dia seguinte, eles retor- ra nosso programa é bem mais rápido RINT e4*K-5+32*J,B(J.K)
nam ao mesmo lugar, mas tomam o do- e relativamente simples. 190 NEXT K,J
bro de xícaras de chá e um café a me- 200 PRINT"HESPOSTAS:"
nos. Sabendo que desta vez a conta foi 210 FOR K-l TO C-1:PRINT AS(K);
" - ";;PRINT USING" Mtttt.tt";
de Cz$ 48,00, qual é o preço de cada xí-
cara de chá? 10 INPUT "DIGITE NUMERO DE LT (K,C) :NEXT
Se você conseguir remover todas as
NHÃS " ; 220 END
15 LET C-R + l 230 D-A(L.L)
informações necessárias e colocar os da-
20 DIM A(R.C) DIM B(R.C) : 250 FOR K-l TO C
dos principais sob a forma de variáveis, DIM ASÍC-1,20) 260 A(L,K)-A(L,K)/D
o problema consistirá na solução das se- 30 FOR K=] TO C-l 270 NEXT RETURN
:
guintes equações: 3c + 2h = 44e2c + 40 INPUT "NOMES DAS COLUNAS " 280 FOR J-l TO R
4h = 48. .AS (K) 300 IF J-L THEN NEXT RETURN :
: J : :
IIIIIIIIIHI IHIIIIIIIIIII
140 GOSUB 290 coluna. O mesmo será feito com as li-
310 F-A(J.L) Em seguida, o processo
150 NEXT L nhas 3, 4, 5 e 6.
320 FOR K-l TO C
330 A(J.K)-MJ.K)-F*A(L,K) 160 CLS se repetirá com L = 2.
20 DIM A(B.C) DIM B(R,C) DIM Será possível, então, ler diretamente
: :
AS:-"
A9(C - 1) os valores de A, B, C etc. na coluna não
210 FOR K-l TO C-l:LOCATE K*5,4
30 FOR K ' 1 TO C - 1 *J+4:PRINT INT(A(K,C) *1 00) /JOO nula. Todos os microcomputadores, me-
40 INPUT " ENTRE COM 03 NOMES P NEXT K nos o Spectrum, apresentarão os resul-
ARA ASCOLUNAS ";AS(K> 2 20 END tados com duas casas decimais após a
50 NEXT K 240 D=A(L.L) vírgula. Sem isso, uma resposta que se-
60 FOR J - 1 TO R 250 FOR K=l TO C ria 10 poderia aparecer como 9.999998
70 PRINT PRINT " INTRODUZA VA 260 A(L,K)=A(L,JO/D
:
ou 10.000001.
LORES PARA A LINHA ";J 270 NEXT K RETURN
:
190 NEXT K: NEXT J Os valores são colocados em uma fornece alguma pista para encurtar seu
200 VTAB {4 * J) HTAB (1): PR : matriz A(J,K), uma linha por vez. Nes- trabalho.
INT "RESPOSTAS programa, J se refere à linha da ma- Tente resolver este problema: no Na-
te
210 FOR K - 1 TO C - 1: VTAB (
K corresponde à coluna. A matriz
triz e tal,vovô Alberto, um excêntrico ma-
4 * J + 4) HTAB (K * 5) PRINT: :
nam-se iguais a 1.
Apróxima rotina executa a maior tão como M, reduzimos o problema a
fffÁ duas equações:
parte do trabalho. Embora tenha ape-
10 CLS:INPUT "DIGITE O NÚMERO D nas seis linhas, é muito difícil entender
E LINHAS E COLUNAS " ;R,C
o seu funcionamento. AT3 + Bt3 = M e
20 DIM A(R.C):DIM B(R.C):DIM AS (A + 1) T 3 + (B + 1)T3 M + 500
Suponl amos que a rotina anterior já
.
CC-1) O
programa se-
tenha feito A(l,1>= 1.
30 FOR K-l TO C-l Temos, portanto, duas equações e
40 INPUT "ENTRE COM OS NOMES PA rá então desviado para a linha 290 (280
no TRS-Color), com L = A linha 300 três incógnitas.Sem recorrer à ajuda do
RA AS COLUNAS " ;AS (K) 1 .
amadorística ou profissionalmente.
Veja como transformar seu computador
Embora seja um atributo relativamen- das páginas 741 e 1009), certamente já INSTRUMENTOS MUSICAIS
te recente dos micros, a capacidade de tem uma idéia do que o seu computa-
executar efeitos sonoros e musicais tem se dor pode (ou não) fazer. Seja através de
tornado cada vez mais comum nos com- recursos sonoros já embutidos na con- O desenvolvimento de novos instru-
figuração básica do micro, seja através mentos musicais nas últimas décadas é
putadores pessoais de última geração.
da adição de interfaces especiais (das marcado por passagens semelhantes às
Muitos usuários com inclinações musi-
quais existe uma grande variedade no que se observam na história das máqui-
cais chegam a escolher o computador em
mercado), as características mais impor- nas de calcular. Tradicionalmente, to-
função de seus recursos sonoros. Os mi-
tantes a observar em um bom sistema de dos os instrumentos eram mecânicos:
cros mais sofisticados possuem gerado-
geração sonora são: compunham-se de cordas, membranas,
res de som de vários canais, embutidos,
tubos etc. Aos poucos, a necessidade de
permitem a programação dos mesmos
obter intensidades sonoras maiores em
e
através de comandos em BASIC. - canais de saída sonora, ou
número de
vozes. Com apenas um canal, a música shows destinados a grandes públicos
Além de compor e executar músicas (início da era do rock), assim como a in-
em um micro, o usuário tem, agora, a gerada é monofònica; o ideal é dispor
de um mínimo de três vozes, para a sin- tensa demanda criada pelas gravações,
opção de conectar sua máquina a instru-
tetização de três instrumentos tocando levou à eletrificação (ampliação eletrô-
mentos musicais eletrõnicos. como sin-
nica) de vários instrumentos musicais,
tetizadores, órgãos e outros. Um padrão simultaneamente;
como guitarras, órgãos e baterias. Final-
de interface, chamado MIDI (Musical mente, começaram a surgir instrumen-
velocidade: se for muito baixa, não
Instntment Digital Interface), criado há -
rência, deve ser possível utilizar coman- modernos): dispõem de uma espantosa
mercado. Dos computadores cobertos parafernália de recursos.
por INPUT, o TRS-80 e o Apple são os dos em BASIC;
que oferecem menos recursos para a ge-
Um sintetizador comum, na faixa
- processador independente: permite que média de preço, permite a execução de
ração de sons, exigindo programação
a melodia se inicie no ponto determina- acordes de até oito notas em um tecla-
elaborada em linguagem de máquina pa-
do pelo software principal, sendo exe- do como o de um piano. Quase todas
ra a produção de algo mais complexo. máquinas contam com um conjunto
O TK-2000 e o Spectrum têm comandos cutada independentemente do que a as
UCP considerável de sons, envoltórias, tim-
em BASIC, como o SOUND, que faci- estiver fazendo.
bres e ritmos especiais, possibilitando ao
litam bastante a programação de efei-
das músico escolher instantaneamente entre
tos sonoros, mas ainda em um nível
Apesar de toda a sofisticação in-
mais simples. Já o TRS-Color e o MSX terfaces musicais de última geração, é um piano com eco, um violino ou um
preciso ler sempre em mente que a mú- oboé, com acompanhamento de valsa,
dispõem de recursos bem sofisticados,
um microcomputador bebop ou batuque, em duas ou três vo-
via comando PLAY. O MSX é o primei- sica gerada por
nunca atinge os padrões de desempenho zes, com ou sem percussão.
ro micro nacional com propriedades de
Sons c instrumentos totalmente dife-
sintetizador, pois permite o controle in- da música instrumental.
Devemos lembrar, ainda, que o tecla- rentes ou mesmo bizarros, efeitos de si-
dividual de algumas características da
do de um micro não corresponde ao te- renas, explosões, gargalhadas, periqui-
onda sonora, como a envoltória. Isso é
possível graças a um circuito integrado clado de um instrumento musical, como tos —
ou o que vier à cabeça do execu-
o piano, por exemplo, e é, na verdade, tante —estão entre os recursos dos mo-
especifico para o controle de som.
muito desajeitado para uso mais "sé- delos de maior preço. Por meio de al-
Se você experimentou os programas
rio". É aqui que entram em cena os ins- gumas teclas, eles nos dão acesso a uma
para composição e execução de músicas,
H dados em artigos anteriores (como os trumentos musicais digitais. orquestra completa.
17 PERIFÉRICOS 17 IHIIIIIIIII1
Uma rede Mil» ligando um computador,
um sintetizador e uma máquina de
percussão.
9
9 últimos anos, a começar do MSX, pos-
sibilitam aconexão à MIDI sem maio-
tado ao final de uma cadeia). OUT, fi- bição na tela de vídeo das notações mu- bilitadas pelo software.
nalmente, permite enviar sinais gerados sicais de uma composição ou o uso do Mesmo quem não é capaz de tocar
em um equipamento para outro. computador como um seqúenciador de uma só nota em um instrumento musical
O padrão MIDI comporta até dezes- alta capacidade de memória, sem a ne- normal, terá facilidade em compor te-
seis canais simultâneos (paralelos) de in- cessidade de equipamentos extras. mas musicais complexos no computador
formação. Cada canal controla um ins- Modelos diversos de microcomputa- e enviá-los, em seguida, para execução.
trumento separado, mas a informação dores — da linha MSX ou de outras li- A composição pode ser armazenada di-
de vários instrumentos coexiste nos mes- nhas — podem ser utilizados com um gitalmente em fita ou disco, executada
mos condutores elétricos (um artifício equipamento MIDI acrescentando-se novamente, modificada etc. Já existem
técnico denominado mulíiptexação de al- uma interface especial, ligada ao conec- cartuchos de EPROM para micros com-
ta velocidade). Os instrumentos se en- tor externo de expansão. patíveis com o padrão MIDI, com con-
carregam de "sintonizar" a informação É provável que o preço de um com- juntos de músicas prontas, para auto-
a eles encaminhada, da mesma maneira putador completo ainda seja mais bai- acompanhamento ou, simplesmente, pa-
que um aparelho de televisão seleciona xo que o de um sintetizador MIDI com- ra se tocar no computador, usando-o co-
diversos canais. patível. Mas, da mesma torma que mo um sistema de alta- fidelidade.
aconteceu com outros periféricos, ini- Um pacote de software típico para
cialmente muito caros —
como impres- a linha MIDI é o compositor musical,
UTILIZAÇÃO
soras, disquetes e monitores a cores — cujo funcionamento é exatamente igual
o preço dos sintetizadores deverá dimi- ao de um editor de textos, só que traba-
Embora exista desde 1982, so recen- nuir bastante em um futuro próximo. lhando com a notação musical conven-
temente a MIDI recebeu mais atenção Antes mesmo que os preços comecem cional, desenhada sobre a pauta. As
do público. No Brasil, o interesse por es- a cair, os usuários atraídos pela com- suas funções mais comuns são inserção
sa interface surgiu com o advento dos binação microcomputador-instrumento de músicas, apagamento, edição, lista-
primeiros microcomputadores compatí- musical devem ser informados sobre al- gem em vídeo ou impressora e execução
veiscom a linha MSX. Entre suas apli- gumas peculiaridades desse periférico. musical em diversas cadências.
cações mais frequentes, destaca-se o co- Convém ter claro, em primeiro lugar, Umbom software coloca ainda ã dis-
mando de um instrumento musical por que a capacidade de geração sonora pró- posição do usuário uma série de funções
outro. Interconectando um sintetizador pria do micro não é usada quando se de controle do sintetizador, (ais como
e um órgão eletrônico, por exemplo, a trabalha com a interface MIDI: o som o comando independente de várias vo-
MIDI permite que ambos sejam coman- é sempre gerado pelo sintetizador ou ou- zes (um sintetizador polifônico de qua-
dados de um único teclado. tro instrumento digital externo ao com- lidade deve ser capaz de tocar até dezes-
AMIDI também possibilita a sincro- putador. Assim, não há vantagem em seis notas simultaneamente), seleção de
nização de dois instrumentos diferentes comprar um micro mais caro, dotado ritmos, timbres ou seqúéncias, mixagem
— como uma máquina de percussão e dos últimos recursos em matéria de ge- etc. Se entre as características do sinte-
—
um piano elétrico , assim como a li- ração musical. Mesmo a memória extra, tizador se incluir a capacidade de divi-
gação de um seqúenciador. Esse dispo- disponível nos micros profissionais, não diro teclado, você poderá tocar um ins-
"memoriza" o que
sitivo foi tocado na é tão importante, pois os computadores trumento com a mão esquerda e outro
ordem correta, podendo a
repetir exe- pessoais têm memória mais do que su- com a direita.
cução de forma idêntica, tanto em tem- ficiente para o desempenho da função
po real quanto passo a passo. No pri- de seqúenciador. PADRONIZAÇÃO
meiro caso, o seqúenciador reproduz Vale a pena observar, também, que
exatamente o que o músico tocou; já no a qualidade de som disponível não é li-
segundo, ele executa, etapa por etapa, mitada pelo meio de registro utilizado. É
possível enviar três tipos de infor-
trechos da melodia, permitindo que o Como o som é armazenado de forma di- mação através de uma interface MIDI:
músico acrescente outras notas, de mo- gital (imune a ruídos), tanto faz usar notas, mudanças de programa e mixa-
do a preencher os segmentos de tempo. uma fita cassete ou um disquete a — gem de timbre. Atualmente, existe um
qualidade será sempre comparável à de conjunto padronizado de códigos MIDI
MIDI E COMPUTADORES PESSOAIS
um Compact Disc (CD). Em outras pa- que funciona como qualquer sintetiza-
lavras, obtém-se na saída exatamente o dor compatível. Entretanto, esses códi-
que se colocou na entrada. gos permitem apenas o controle das fun-
Como já mencionamos, o "casamen- ções mais elementares. Funções especiais
to" entre computadores pessoais e a in- são controladas por sequência de códi-
SOFTWARE
terface MIDI veio a público com o lan- gos, que usualmente variam de instru-
çamento da linha MSX. Os fabricantes mento para instrumento. Como resulta-
japoneses da linha MSX tinham um Uma vez que ligamos o computador do, um programa feito para um sinteti-
grande interesse nessa associação, uma a um ou mais equipamentos MIDI, é ne- zador MIDI pode não funcionar corre-
vez que a maioria deles opera também cessário um software especial para acio- tamente com outro. Além disso, para se
com divisões altamente rentáveis de ins- nar o conjunto. A variedade de softwa- programar orquestrações complicadas,
trumentos musicais digitais. A Yamaha re é ainda restrita, e os preços são mais é preciso estar familiarizado com a enor-
introduziu, com um custo muito baixo, altos do que a média. A situação tende- me gama de 'alternativas de controle.
um sintetizador semiprofissional com- rá a mudar à medida que o uso da MI- Provavelmente, também essas dificulda-
pleto; o modelo CX5M, que é um mi- DI se popularizar. des serão atenuadas no futuro.
IHIIIIIIHMHK « miftncos » lllllllllll
COMPUTADORES UNIDADES DE
RECONHECIMENTO
TIPOS DE FALA
Como já vimos, os periféricos toem tempo real, ou seja, simultanea- sados por um saftware especial, que
de síntese de voz capacitam o micro
mente à fala. Sistemas com esse grau de analisa o conteúdo de frequência de ca-
desempenho ainda não existem. Os pou- da amostra (análise espectral). Isso re-
a falar. O que talvez você não saiba cos sistemas de reconhecimento da fala sulta em uma matriz (tabela), em que ca-
é que as máquinas também podem contínua desenvolvidos até agora da coluna corresponde a uma amostra,
cionam apenas em computadores imen e cada linha, a uma frequência. A ma-
entender a fala humana. Veja como.
sos e custam muito caro. Além disso triz referente à palavra a ser identifica-
eles são capazes de reconhecer um nú da c comparada com as matrizes-padrão
mero muito restrito de palavras (o vo armazenadas internamente, uma para
No artigo Computadores que Falam cabulário é pequeno). cada palavra do vocabulário. A palavra
(página 446), examinamos o funciona- Já os sistemas de reconhecimento iso- que, na comparação, acusar maior in-
mento e as aplicações dos periféricos de lado, fabricados em uma grande varie- cidência é a palavra mais provável.
síntese vocal, já disponíveis para a maio- dade de modelos, são bem mais simples
ria dos microcomputadores. Como ob- e baratos. Eles podem reconhecer com
INTERFACES PARA MICROS
servamos, eles não são, em termos téc- grande precisão um número restrito de
nicos, muito complexos —
existem mo- palavras ou frases, enunciadas isolada-
delos de preço acessível até para micros mente e com clareza. O tamanho do vo- Existem, no exterior, diversas inter-
domésticos pequenos. cabulário varia entre doze e trezentas faces —em versões destinadas a micro-
Se conferíssemos ao computador a palavras ou frases curtas, dependendo computadores pessoais ou profissionais
habilidade inversa —
ou seja, enten- da sofisticação do sistema. — para reconhecimento automático da
der aquilo que falamos —
, teríamos o O
segundo critério utilizado para a fala. Todos os modelos atualmente dis-
"computador do futuro", que não pre- classificação dos sistemas RAF
diz res- poníveis empregam sistemas de reconhe-
cisaria de vídeo, nem de teclado para peito ã dependência do locutor. cimento de elocuções isoladas, depen-
"conversar" conosco, humanos. Os sistemas independentes do locu- dente do locutor.
Mas isso não é tão fácil. Dotar a má- tor, como diz o nome, são capazes de Para as linhas Apple, TRS-80 e TRS-
quina da capacidade de reconhecer a fa- reconhecer a fala de qualquer pessoa, Color, por exemplo, os sistemas Dragon
la é uma tarefa bem mais complicada do em qualquer situação. Tais sistemas são e VoiceBox permitem o reconhecimen-
que fazê-la gerar a fala. Por essa razão, tão raros quanto os de reconhecimento to de 32 a trezentas palavras ou frases
aínda não há sistemas capazes de um re- da fala continua. Mais comuns são os curtas, com 80% ou mais de precisão.
conhecimento total da fala, nem mesmo sistemas cujo desempenho depende da Compõem-se de uma placa ou caixa de
nos mais sofisticados computadores de pessoa que fala. Nesse caso, para que o expansão, contendo um conversor AD,
grande porte. sistema seja capaz de reconhecer a fala um conjunto de circuitos integrados es-
com um mínimo de precisão, a pessoa pecializados e software —
pane do qual
que vai usá-lo precisa "treinar" o com- residente na memória ROM
da unida-
putador, repetindo cada palavra ou fra- de, parte em disquete.
se do vocabulário um certo número de Para utilizar o sistema, geralmente
Não queremos dizer, com isso, que vezes. O programa analisa estatistica- conecta-se o mesmo a uma porta de en-
não se tenham desenvolvido sistemas mente as repetições e as armazena na trada serial do computador (RS-232C).
com uma certa capacidade de reconhe- memória, para utilizá-las durante o pro- Após carregar o software residente em
cimento da fala. Esses sistemas existem, cesso de reconhecimento. disquete, o sistema pode ser operado
inclusiveem versões para microcompu- com o auxílio de um microfone.
tadores pessoais, desde 1980/81.
Devemos identificar, portanto, o
grau de desempenho de uma unidade de
reconhecimento automático da fala O reconhecimento da fala requer o
(RAF). Dois critérios são utilizados. No emprego de diversos algoritmos e pro- As aplicações do reconhecimento au-
primeiro deles, os sistemas são classifi- cessos. Inicialmente, a fala, captada por tomático da fala são extremamente va-
cados em: sistemas de reconhecimento um microfone, é enviada ao computa- riadas, incluindo, por exemplo, o ensi-
da fala continua e sistemas de reconhe- dor por um conversor ana-
e digitalizada no de línguas, auxílio a pessoas inváli-
cimento de elocuções isoladas. lógico digital. O conversor executa um das, controle de aparelhos domésticos
Um sistema de reconhecimento da fa- processo de amostragem, ou seja, con- pela voz e até programação (existe uma
la contínua deveria ser capaz de "enten- verte as ondas contínuas da fala em uma versão "falada" do BASIC).
der" 90% das palavras emitidas no dis- sequência de números digitais a cada Existem também jogos muito diver-
curso natural —
por exemplo, o pronun- 50/100 milissegundos. tidos para micros, como um jogo de pô-
ciamento de um deputado, uma conver- Os dados, armazenados em um buf- quer, que utilizam voz sintética e reco-
,
sa telefónica etc. E isso deveria ser fei- /er(memória intermediária), são proces-' nhecimento da fala.
IIIIIIIIHHHH
Você sabe converter o sistema de
posições de vídeo do seu micro em um
sistema de coordenadas do tipo X e Y?
Neste artigo, ensinaremos este e
outros truques aos usuários do TRS-80.
Prosseguindo nossos estudos sobre a uma impressão. Em diversas aplicações, nhos e textos que requerem o emprego
organização da tela dos micros compa- porém, é interessante realizar posiciona- de um sistema de coordenadas ortogo-
tíveis com a linha TRS-80, examinare- mentos relativos —
como avançar para nais (semelhante ao existente para a tela
a próxima posição na linha de baixo, re- gráfica, com os comandos SET, RESET
mos como transformar o sistema de po-
cuar uma posição na mesma linha, ir pa- e POINT). Entretanto, não é difícil es-
sições de vídeo, baseado na notação
ra o final da mesma linha e assim por pecificar um conjunto de equações que
PRINT @, em um sistema de coorde-
nadas verdadeiras, X e Y — recurso dis- diante. promova a transformação de um siste-
em
ponível para os usuários das linhas Por meio de algumas expressões ma- ma de referência outro.
MSX, Apple, TK-2000 e Sinclair. temáticas, podemos realizar facilmente Em primeiro lugar, precisamos ado-
Relembrando o que já foi apresenta- o posicionamento relativo, de modo a tar uma convenção referente à origem
do nesta série de artigos, a tela do tratar a tela como um plano bidimensio- do sistema de coordenadas ortogonais.
TRS-80 é organizada em 1024 posições nal. Essas expressões seguem um forma- Se a origem deste corresponder ao can-
sequenciais, numeradas de 0 (canto su- to comum, em que se executa o cálculo to superior esquerdo (X = 0 e Y = 0>, e
perior esquerdo da tela) a 1023 (canto de conversão e, ao mesmo tempo, se im- se X indicar a coluna, e Y, a linha da
põem os limites de variação mínima e tela, estaremos usando a mesma conven-
inferior direito). Anumeração aumen-
ta da esquerda para a direita em uma li- máxima. Por exemplo: se a posição ção estipulada para os gráficos com
nha. O número-índice de cada posição atual do cursor é P (um número inteiro SET. Neste caso, teremos:
na tela é o utilizado na expressão@(ar- entre 0 e 1023), podemos fazer com que
roba) de um PRINT posicionai. eleavance uma posição para a direita 1. Converter (X,Y) para uma posição®:
por meio da expressão: PI - 64*Y + X
Pt=Pt-(PÍ+l<1024)
POSICIONAMENTO RELATIVO 2. Converter uma posição @ para (X,Y):
A notação intrínseca P<Vo é utilizada
A expressão corresponde a um po-
@ para indicar que P é um número intei-
sicionamento absoluto, ou seja, indica ro. Evitamos, assim, alguns erros de ar-
o local exato da tela onde deve começar redondamento nas expressões. A expres- Se quisermos adotar a convenção car-
são acima combina, em uma única fór- tesiana clássica (origem no canto infe-
mula, uma adição e um teste: rior esquerdo), teremos:
V = 256*PEEK(16417)+PEEK(16416) Em seguida, digite RUN e experimen- pos são exibidos na tela. Use coman-
te pressionar qualquer tecla. Note que, dos PRINT @ para isso;
Por meio dessa expressão, obtemos enquanto não se pressiona nenhuma te- - emseguida, a sub-rotina de entrada
diretamente o endereço absoluto da me- cla, o programa fica imprimindo zeros de dados é chamada por INKEYS, Co-
mória de vídeo onde está o cursor. Pa- na tela. Um número maior que zero apa- loque nela vários IF, para detectar se
ra converter o valor resultante em uma rece quando se pressiona alguma tecla alguma tecla de controle foi pressiona-
da. Localize o cursor e efetue a opera-
posição PRINT @, basta subtrair o va- ou combinação de teclas.
ção solicitada;
lor 1 5360, que corresponde ao primeiro O próximo programa ilustra com - finalmente, tendo pressionado a tecla
endereço da memória de vídeo: bastante clareza essa aplicação: uma es- que assinala o fim da edição, leia (com
pécie de "minhoquínha" é formada so- PEEK) o conteúdo dos campos e trans-
PEEK
bre a tela, quando se pressionam as qua- fira-o para a memória.
tro teclas com as flechas:
Rodando o próximo programa, vo-
100 DEFINT A-Z:X"64:Y-24
cê terá uma demonstração desse cálcu- 110 T$ - CHRS (9) + CHRS(B) + BLOQUEIO DA TECLA <BREAK >
lo. O programa preenche a tela com nú- CHRS (91) + CHRS (10)
meros inteiros, até chegar à posição 960, 120 CLS
onde é chamada uma rotina de interrup- Podemos desativar a tecla < BREAK >
130 SET(X,Y):IF PEEK(14591)>0
ção. Pressionando-se qualquer tecla, a THEN 160 do TRS-80 Modelo ou Modelo 3 (e dos
1
tela é limpa, e a impressão continua a 140 CS=INKE¥S:IF AS="" THEN 130 microcomputadores compatíveis) se der-
partir do último número exibido. 150 C=ASC(CS) :GOT0 130 mos os seguintes comandos (em modo
160 ON INSTR(TS,AS) GOSUB 200, direto, ou dentro de um programa):
100 DEFINT N:N=0 250, 300, 350
170 GOTO 130 POKE 16396, 175:POKE 16397.201
110 CLS
120 N-N+l PRINT N
: 200 X=X+1:IF X>127 THEN X-127 Para ativar novamente, digite:
130 NP=256*PEEKtl6417)+PEEK( 210 RETURN
16416) - 15360 250 X-X-1:IF X<1 THEN X = l POKE 16396,201
140 IF NPÍ960 THEN 120 260 RETURN
150 PHINT "APERTE <ENTER> P/ 300 Y=Y-1:IF Y<1 THEN Y-l Esse recurso é de grande utilidade
CONTINUAR" 310 RETURN quando desejamos impedir que um pro-
160 IF INKEYS-"" THEN 160 ELSE 400 Y-Y+1:IF Y>47 THEN Y-47 grama seja interrompido —
intencional
110 410 RETURN ou acidentalmente — pelo usuário.
imiimiiiBM— —mi A linguagem LOGO foi
Os computadores da década de 60 No artigo da página 1288, vimos que, putadores — provavelmente irão utili-
eram extremamente caros. A potencia e desde o aparecimento dos primeiros zar linguagens superavançadas e pode-
a capacidade hoje disponíveis em um computadores, mais de duzentas dife- rão entender ordens dadas em lingua-
simples micro doméstico custavam al- rentes linguagens de programação fo- gem natural ou seminatural. Mas as lin-
guns milhões de dólares nos computa- ram desenvolvidas. Essas linguagens ser- guagens atuais —
mesmo as mais avan-
dores de grande porte de então, pois vem aos mais variados propósitos. Mui- çadas, como o PROLOG —
represen-
mesmo as máquinas maiores e mais so- tas delas são extremamente especializa- tam ainda um meio termo entre a faci-
fisticadas contavam com um máximo de das, encontrando aplicação apenas em lidade de uso e a facilidade de imple-
144 Kbytes de memória RAM. campos de pesquisa muito sofisticados. mentação em um computador.
Assim, por razões de economia, as Outras são tão genéricas e fáceis de usar Além do BASIC, muito poucas lin-
primeiras linguagens de programação quanto o BASIC, e já estão disponíveis guagens de alto nível são utilizadas mais
foram projetadas para ocupar a menor para microcomputadores. intensamente em microcomputadores
quantidade de memória possível. Prio- Se você quiser utilizar uma determi- pessoais: as principais são o LOGO e o
rizava-se a facilidade de sua implemen- nada linguagem de programação no seu PASCAL. Como veremos nos artigos
tação no computador, e não a facilida- modelo de microcomputador, precisará, desta série, essa linguagens são total-
de de uso para o programador. antes de mais nada, achar um progra- mente diferentes quanto a seu histórico
Com o aparecimento dos microcom- ma interpretador ou compilador que e a seu campo de aplicação.
putadores, por volta de 1975, as lingua- possa ser executado nele. Linguagens al-
gens dos antigos computadores torna- ternativas são fornecidas em fitas ou dis-
ORIGENS DO LOGO
ram-se bastante populares entre os usuá- cos, e devem ser carregadas na memó-
rios dos micros, pois essas máquinas, no ria, antes de sua utilização. Algumas ve-
começo, também dispunham de uma zes, o interpretador também ê encontra- Em 1967, um grupo de pesquisadores
do em cartuchos removíveis da ROM do famoso Massachusetts Institute of
memória muito limitada. A maioria das
Technology (MIT), localizado na costa
pessoas aceitava como natural as difi- (como os que existem para os micros
leste dos Estados Unidos, começou a ex-
culdades de aprendizado do BASIC e TRS-Color e MSX), não precisando,
plorar um caminho totalmente novo no
outras linguagens do género. "O que é evidentemente, ser carregado.
desenvolvimento de linguagens para com-
simples para o computador também é Os microcomputadores profissionais,
putadores. Essegrupo, liderado por Sey-
simples para o programador", dizia-se. com sistemas operacionais do tipo MS-
mour Papert, um sul-africano expatria-
DOS, CP/M ou UNIX, são os que dis-
põem de maior variedade de linguagens do, tinha como objetivo criar uma lin-
A ESCOLHA DA LINGUAGEM de programação. Já existe, porém, uma guagem mais adaptada ao modo de fun-
razoável oferta de linguagens alternati- cionamento do intelecto humano do que
Quase todos os micros operam, ori- vas para micros mais baratos —
como ao processador central de um computa-
com um interpretador BA- dor. Desse empenho nasceu o LOGO.
ginalmente, os das linhas Spectrum, TRS-Color, Ap-
Papert tinha trabalhado com o famo-
SIC residente na memória ROM.
E es- ple e MSX— principalmente se pude-
,
digo de, máquina, que pode tanto resi- Uma linguagem de programação po- é apresentado por meio de exemplos
dir na memória quanto ser carregado de de ser entendida tanto pelo usuário concretos. As condições ideais de apren-
uma fita ou disquete. Nos micros pro- quanto pela máquina, constituindo uma dizado estariam, assim, condicionadas
fissionais, por exemplo, o BASIC é uma espécie de mediação entre as linguagens ao envolvimento e experimentação pes-
linguagem a mais, e precisa ser carrega- de ambos —ou seja, entre a linguagem soais. Essa abordagem influenciou for-
da quando se quer usá-la em programa- natural (o inglês, por exemplo) e a lin- temente a elaboração do LOGO.
ção. Isso significa que é perfeitamente guagem binária, empregada por todos Outra influência importante foi o tra-
possível carregar interpretadores de ou- os computadores existentes. balho de Marvin Minski, pesquisador do
tras linguagens —
ou seja, podemos mu- Quando a linguagem de programação MIT e um dos pais da Inteligência Arti-
—
dar a linguagem que o computador "en- está mais próxima da binária do que da ficial ciência que procura reprodu-
tende". Esses interpretadores são pro- natural, diz-se que é de nível baixo. O zir aspectos da inteligência humana em
traduzi-los em instruções executáveis pe- com a natural. As máquinas de quinta cia de instruções dadas com grande de-
la UCP do micro. geração —
a próxima geração de com- talhe e precisão. A resolução de um pro-
IIIIIIIIHMi^^HHHmillllllllll
ESCOLHA E DISPONIBILIDADE A TARTARUGA
DE LINGUAGENS PSEUDO-LOGOS
0 QUE É LOGO UM LOGO PARA
FUNDAMENTOS SEU COMPUTADOR
PSICOPEDAGÔGICOS PROGRAMAÇÃO
IIIIIIIIHHHH
blema intelectual envolve fatores tão lar, que obedece às mesmas instruções computadores, como a Itautec, a Gra-
complexos e variados, que programar de deslocamento usadas para movimen- Hoje, há versões
diente e a Microdigital .
uma máquina para uma operação desse tar a tartaruga-robô. Mas o simpático dessa linguagem para as linhas Apple,
tipo constitui uma tarefa especialmente "animalzinho" não chegou a desapare- MSX, TK-90X e CP-400, entre outras.
desafiadora. Minski e seus colaborado- cer. Ao contrário, tem se observado Existem também diversos "pseudo-LO-
res dedicaram-se a ela, buscando desen- uma tendência a trazê-lo de volta às sa- GO", assim chamados por serem versões
volver uma linguagem de programação las de aula. Opequeno robô é, sem dú- muito reduzidas ou limitadas do LOGO
que facilitasse a simulação da capacida- vida, bem mais adequado ao ensino de original, do qual aproveitam apenas os
de de decisão e de resoiuçâo de proble- crianças pequenas, que não entendem o recursos gráficos. Como o ColorLOGO,
mas. Chegaram ao LISP (LISl Proces- formalismo da tartaruga gráfica. Além do TRS-Color 1, esses pseudo-LOGOS
sing) — linguagem que passaram a uti- disso, é muito mais divertido! não contam com os recursos de proces-
lizar desde o início dos anos 60. samento de listas, funções matemáticas
A estrutura básica de dados do LISP etc. da versão completa.
é a lista, uma coleção de objetos elemen-
OS ELEMENTOS DA LINGUAGEM LOGO foi a primeira linguagem sim-
tares (chamados de átomos). Uma lista bólica "amistosa", ou seja, fácil de
pode fazer parte de outras listas, o que O que tem a ver a movimentação de usar. Como ela se presta a aplicações
uma tartaruga de brinquedo com pro- educacionais, muitos julgam que se des-
torna mais fácil representar e processar
dados simbólicos (não numéricos). En- gramação de computadores e psicologia tina exclusivamente às crianças. Nada
infantil? Papert vê no computador um mais longe da verdade. Os recursos in-
tretanto, o LISP é muito difícil de
aprender. importante veículo para a criatividade trínsecos do LOGO (recursão verdadei-
e a expressão de idéias, e acredita que
O LOGO é essencialmente um diale- ra, processamento de listas etc.)
to do LISP — contém todas as estrutu- se deve ensinar as crianças a dominá-lo,
A
colocam-no no mesmo ranking que o
evitando que sejam dominadas por ele. LISP, o SNOBOL, o PROLOG e outras
ras e comandos que essa linguagem em-
prega para representar e processar da- melhor maneira para que uma criança linguagens empregadas em campos com-
dos simbólicos (palavras, listas etc.). aprendesse a manipular computadores plexos, como Inteligência Artificial.
seria viver em uma "cultura computa-
Além disso, possui poderosos comandos
gráficos, incluídos para facilitar seu uso cional", assim como a melhor maneira
por crianças pequenas. de aprender italiano é viver na Itália. O
LOGO — dando à criança os meios para
usar os poderosos recursos disponíveis
DEMONSTRAÇÕES CONCRETAS no computador —é a sua proposta pa-
ra realizar isso. Como Papert procura
Papert e seus colegas estavam interes- demonstrar em seu livro LOGO, Com-
sados em uma linguagem que permitis- putadores e Educação (Mindstonns.
se iniciar as crianças no mundo da pro- Children, Computers and Power/ul
gramação, Três áreas foram privilegia- Ideas, no original), essa linguagem fun-
das: desenho, música e robótica. Isto re- ciona não só como uma ferramenta para
sultou da constatação de que as crian- a resolução de problemas, mas como um
ças se sentem mais motivadas a usar o verdadeiro sistema de referência —
de-
computador quando a tarefa a realizar nominado micromundo — para a intro-
consiste em desenhar na teia, tocar mú- dução de novas idéias e conhecimentos.
sica ou movimentar pequenos robôs Logo após o aparecimento do primei-
com o auxílio do computador. Este úl- ro interpretador LOGO para computa-
timo interesse levou Papert a criar uma dores de grande porte, surgiram as pri-
"tartaruga" robótica. meiras versões para micros. Por sua ca-
Na época, não se encontravam mo- pacidade gráfica superior, a linha Ap-
nitores gráficos de vídeo a preços aces- ple foi privilegiada com as versões ini-
síveis. Atartaruga, um
pequeno robô ciais mais poderosas da linguagem. Pos-
móvel sobre rodas, supria essa deficiên- teriormente, outros micros — entre os
cia: carregava uma caneta em sua "bar- quais o Spectrum, o MSX, e o TRS-
riga", e, sob o controle de comandos es- Color — ganharam interpretadores LO-
pecíficos do LOGO, podia abaixá-la e GO compatíveis com o padrão MIT.
levantá-la. Assim, era capaz de desenhar Como o campo de aplicação do LO-
figuras no chão, obedecendo às ordens GO é eminentemente educacional, os
da criança, que passava a relacionar os simbolismos da palavra escrita para a
comandos da linguagem com os movi- descrição da forma e funcionamento do
mentos da tartaruga e com conceitos de nosso mundo tem grande importância.
orientação e geometria. Assim, esta foi a primeira linguagem a
Quando surgiram os computadores ser amplamente traduzida para idiomas
pessoais, porém, a tartaruga-robô pas- locais, inclusive o português. A partir de
sou a correr risco de "extinção", pois 1974, especialistas da Unicamp (Universi-
era muito mais simples e barato imitar ade Estadual de Campinas, no Estado
seu movimento na tela por meio de grá- de São Paulo) começaram a produzir o
ficos. Sua descendente direta é a tarta- BRASLOGO, a versão brasileira do
ruga gráfica bidimensional —
um sim- LOGO, que mais tarde foi adotada por
ples cursor, em geral de forma triangu- diversas empresas fabricantes de micro-
:
PROGRAMANDO EM LOGO
llllllllllllW^^^^MMBimiHMW
PARADIREITA 30 O LOGO possui uma grande varie-
dade de comandos (também chamados
— Com isso, o símbolo da tartaruga Vejamos mais alguns deles,
primitivos).
Ocursor aparece no centro da tela
relacionados à elaboração de gráficos:
sob a fornia de um triângulo ou como apenas se inclina na direção desejada.
uma tartaruga estilizada, conforme a Para que ela avance, digite:
versão do LOGO — já pronto para de-
,
[X
senhar. Por analogia com o robô mecâ-
nico, dizemos que a tartaruga está com es HOME - Leva a tartaruga de volta ao
a "caneta abaixada".
centro da tela, sem apagá-la.
Dispomos de vários comandos de
CLEARSCREEN - Apaga o conteúdo
deslocamento da tartaruga. Ela pode an-
da tela e leva a tartaruga de
dar para a frente ou para trás e virar pa-
volta ao centro (abreviação:
ra a direita ou para a esquerda. O des-
CS).
locamento linear é medido em número
PARAFRENTE 50 PENUP "Desliga" o modo de escrita
-
de passos (sieps) ou pontos gráficos, e
da tartaruga: ao se movimen-
a virada, em graus (ângulo). Por exem-
A linha traçada pela tartaruga forma tar, ela não deixará nenhum
plo, para fazer a tartaruga andar trinta
um ângulo de 30 graus à direita da li- traço (abreviação: PU).
passos adiante, digite:
nha vertical anterior. PENDOWN - "Liga" o modo de escri-
Comandos sucessivos podem ser da- ta da tartaruga (abreviação:
LEFT 45
BACK 71
Para facilitar a digitação, podemos PENUP
forma abreviada de muitos HOME
recorrer à
PENDOWN
comandos da linguagem LOGO. Veja
abaixo as abreviaturas para os coman-
dos que foram mostrados até agora: O comando CLEARSCREEN se en-
carregará de limpar toda a tela, caso vo-
À medida que a tartaruga se deslo- cê queira realizar outras experiências.
ca, traça uma linha reta na direção de-
sejada, pois, como dissemos, ela já apa-
rece na tela em modo de escrita. SHOWTURTLE
Uma linha de comando pode ser corri- FORUARD
gida com as teclas do cursor, antes de se BACK PARACENTRO - Leva a tartaruga de
digitar <ENTER> ou < RETURN > LEFT volta ao centro da tela, po-
Para alterar a direção em que a tar- RIGHT
rém sem apagá-la (abreviação:
taruga se movimenta, usa-se o coman- PC).
do que indica a direção e o ângulo da rtfi APAGUEDESENHO - Apaga o con-
TARTARUGA
DA ZIGZAG, em português — tudo o
,
MLOGO
que eslava na tela desaparece, e entra em BRASLOGO
PARAESQUERDA 45 TARTARUGA MOSTRET
PARAFRENTE 71 açào um pequeno editor de textos, que
PARACENTRO CENTRO
PARADIREITA 35 permite a entrada dos comandos que LIMPETELA
APAGUEDESENHO
USENADA constituirão o procedimento. O sinal de PARAFRENTE FRENTE
PARAFRENTE 50 prontidão muda de ? (ponto de interro- PARATRÁS VOLTE
USELÁPIS gação) para > (sinal de maior). PARADIREITA DIREITA
PARAESQUERDA 45 Para finalizar o procedimento, pres- PARAESQUERDA ESQUERDA
PAR ATRAS 71 stona-se a tecla F.ND (para as versões em USELÁPIS COLORIDO
USENADA inglês)ou FIM (versões em português). USENADA SEMCOR
PARACENTRO USEBORRACHA
USELÁPIS O sinal de ? aparece novamente, indi-
COR
cando que voltamos ao modo direto. MUDECL
REPITA REPITA
Em alguns computadores, como o Ap-
APRENDA APRENDA
ple, por exemplo, c necessário pressio-
FIM FIM
MONTE UM PROCEDIMENTO nar as teclas <CTRL> <C>.
e ADEUS ADEUS
Todos os comandos examinados fo-
ram dados em modo direto, ou "ime-
diato", que equivale ao modo direto do
BO o LOGO tem um comando que permite
BASIC — ou seja. o comando é execu- TO ZIGZAG especificar o número de repetições (se-
tado imediatamente pelo interpretador, FORWARD 20 LEFT 150 melhante ao FOR ... NEXT do BASIC).
e logo esquecido. Entretanto, existe um FORWARD 20 RIGHT 150 Utilizando-o, e abreviando os comandos
outro modo em LOGO: o modo progra- FORWARD 20 LEFT 150 gráficos, nosso programa ficará assim:
mado, ou modalidade procedimento. FORWARD 20 RIGHT 150
Nessa modalidade, atribui-se um no- FORWARD 20 LEFT 150
FORWARD 20 RIGHT 150
me a um conjunto de comandos, que
passam, então, a ser conhecidos como
END CD
um procedimento. O nome que for da- TO ZIGZAG
REPEAT (FD 20 LT 150 FD 20 RT
do ao procedimento torna-se parte in-
tegrante do vocabulário do LOGO. Diz-
IM 150]
3
TO PAR ATRAS :D
PENUP BACK :D
LEFT 40 FORWARD 110 RIGHT 130 END
BI PENDOWN
END TO PARADIREITA :A
TO LADO INTERNO RIGHT ;A
FORUARD 100 END
REPEAT 1B0 [FORWARD 1 RIGHT 1] f/U
END TO PAR A ESQUERDA :A
AP INICIO LEFT :A
m
AP LADOINTERNO
USE NADA
PE 40 PF 110 PD 130
USELAPIS
END
TO PARACENTRO
FIM HOME
PF 100 END
REPITA 180 PF 1 PD 11
FIM
t
Um outro procedimento, PARTIDA,
moverá a tartaruga para onde a linha de TO REPITA :N :LI3T
A combinação de duas curvas e duas partida e o início da parte interna da pis- RE PE AT :N :LIST
retas nos fornecerá a parte interna da ta devem ser desenhados: END
pista de corrida:
e assim por diante. Em seguida, grave
esse conjunto de procedimentos com
SI SAVE "BRASLOGO, e, quando quiser
programar em português, carregue-o
XJ TO PARTIDA com LOAD "BRASLOGO
TO PISTAINTERNA RIGHT 90 FORWARD 30 LEFT 90
LADOINTERNO LADOINTERNO END
END
AP PARTIDA AP PISTA
PD 90 PF 30 PE 90 INICIO
AP PISTAINTERNA FIM PISTAEXTERNA
LADOINTERNO LADOINTERNO PARTIDA
FIM PISTAINTERNA
Finalmente, para traçar a pista toda FIM
A parte externa da pista requer uma de uma vez, definiremos um procedi-
Simples, não é?
curva maior. Para obtè-la, aumentamos mento chamado PISTA.
Todos os programas em linguagem
o passo da tartaruga: LOGO são elaborados dessa maneira. A
ú divisão do programa principal em uma
série de "tijolos" de construção torna
i TO PISTA
INICIO
bem mais fácil tanto a programação co-
mo a própria execução de testes. No
TO LADOEXTERNO PISTAEXTERNA
PARTIDA próximo artigo, veremos como montar
FORWARD 100
REPEAT 90 FORWARD [ 3 RIGHT 2] PISTAINTERNA programas de maior complexidade usan-
END do essa mesma técnica.
IIIIIIIIIIHHMMHHHHHIIIIIIIIIIII
CONTROLES PELA
CONTROLE MICROELETRONICA
SENSORES E ATUADORES
CONEXÃO AO MICRO
S0 C "AARE
Como um computador pode receber tes microeletrônicos nela contidos rea- uma infinidade do aplicações, bastando
lizam a mesma função de modo muito reprogramá-lo. Os outros três tipos de
informação do mundo exterior,
mais eficiente e sem falhas e avarias. Na sistema, ao contrário, não podem ser
analisá-la e usar os dados para operar indústria, inúmeros tipos de máquinas, mudados, a não ser que se façam modi-
dispositivos de diversos sistemas? como tornos e cortadores computado- ficações no hardware.
rizados e robôs de montagem transfor-
, Diversos tipos de equipamentos e
Explicamos aqui todo o processo. maram o dia-a-dia das fábricas. aparelhos contêm microprocessadores
Existem quatro tipos básicos de sis- embutidos, que funcionam com base em
tema microeletrônico de controle: circui- softwares específicos para cada tarefa de
A mie roe! eiró nica provocou uma ver tos lógicos discretos, circuitos integra- controle. Evidentemente, apenas o mi-
dadeira revolução nos sistemas de con dos especiais, circuitos integrados gené- croprocessador não è suficiente para es-
trolede uma grande variedade de má ricos e microprocessadores. Dentre to- sa aplicação: são necessários chips au-
quinas de uso doméstico e industrial dos, os microprocessadores foram os xiliares adicionais (circuitos integrados),
Dezenas de relés, cronômetros mecãni mais revolucionários, pois, além de am- conectados ao processador, para que ele
cos e motores eléiricos, usados antiga pliar o alcance das aplicações, eles ba- possa exercer alguma função útil. As-
mente para controlar aparelhos domes rateram o custo dos sistemas de contro- sim, lodo proprietário de um computa-
ticos, foram substituídos por uma pe- le, através do conceito de controle por dor pessoal tem em suas mãos o cora-
quena caixa. Os circuitos e componen software. Um microprocessador tem ção de um sistema potencialmente ver-
Illlllll 19 mímicos 19 Illlllll
que gera um sinal relativo ao fenómeno ra, aquecimento central etc. O compu- gundo uma determinada lógica: se um
físico ou químico que está sendo detec- tador que administra muitos desses sis- ladrão entrar na casa, uma porta inter-
tado e o envia ao computador. Para agir temas é bem mais compacto e confiável na deverá ser aberta logo após a inter-
sobre o mundo exterior no sentido de do que os sislemas eletromecânicos que rupção do circuito externo. O alarme se-
combater esse aumento de temperatura, substitui. Ele possibilita a execução de rá ativado se os dois circuitos forem in-
o computador deverá estar ligado a um sequências complexas de operação e co- terrompidos na ordem correta — ou se-
atuador —
no caso, um condicionador bre uma área muito maior de alternati- ja, do exterior para o interior. Caso os
de ar ou um ventilador. vas de aplicação. Além disso, permite circuitos independentes sejam interrom-
No artigo sobre robôs (página 1284), que a temporização e sequência de ope- pidos isoladamente, ou em ordem incor-
descrevemos operações desse tipo. Os rações sejam alteradas, bastando, para reta, o alarme não é ativado.
kits de braços robóticos, ali menciona- isso, mudar o software. O uso do computador no controle do
dos, são um exemplo de sistemas de con- Uma aplicação bastante simples do sistema antiladrões apresenta outras
trole especializados. micro como o "cérebro" de um sistema vantagens. Por exemplo: dispondo de
Neste artigo, examinamos os aspec- de controle refere-se ao alarme residen- um sistema adequado de telecomunica-
tos gerais do emprego de computadores cial contra ladrões. Este consiste, basi- ções, podemos fazer com que o micro
pessoais no controle de dispositivos ex- camente, em uma série de fios conecta- disque automaticamente um número de
ternos. Nossa discussão será centrada dos a interruptores localizados em vá telefone e avise a polícia.
nos três principais elementos de um sis- rias portas e janelasda casa. Quando to- Em algumas residências, um inter-
tema de controle: sensores, atuadores e das estão fechadas, o circuito se com- ruptor simples é utilizado para ligar e
conectores. Antes, porém, analisaremos pleta e a corrente elétrica pode fluir pe desligar luzes internas, para dar a im-
as possibilidades de controle. lo mesmo. Se o circuito for interrompi- pressão — na ausência dos moradores
Convém explorar mais detalhada- do pela abertura de urna janela ou por- — de que há gente em casa. Mas o feiti-
mente quatro áreas: ta, o alarme soa. ço pode se virar contra o feiticeiro, pois
Umdos problemas com sistemas des- a sequência regular de liga-desliga evi-
I
- temporização e seqúenciamento se tipo é a possibilidade relativamente dencia exatamente o oposto: que não há
19 PÍRIfERICOS 19
Illllllllll
ninguém! Com um micro, é possível ja, a lâmpada ficará mais fraca durante
controlar tanto a iluminação dos apo- o dia, e mais forte â noite. Para isso, o
sentos como o funcionamento dos ele- computador é conectado a uma interfa-
trodomésticos ligando-os segundo um ce, que controla a corrente elétrica for-
padrão complexo, diferente para cada necida ã lâmpada, e a um sensor foielé-
período do dia e variável de um dia pa- tricô, que mede o nível de luz no am
ra outro. Sequências diversas podem ser biente e fornece ao computador essa in-
deflagradas por eventos externos, como formação. Um
sistema de retroalimen
o nascer ou o pôr-do-sol. tação de alça fechada é então incorpo-
Outro candidato ideal para controle rado, na forma de um software adequa-
por micros é a ferrovia-modelo: um do, segundo este esquema:
software adequado pode ser usado pa-
ra verificar cruzamentos, acionar semá-
foros, desviar trilhos etc. Também in-
teressante, no plano doméstico (ou até
profissional), éo uso do micro para con-
trolar um ou mais projetores de slides,
de modo a criar um show mais comple-
'
CONTROLES DE REGULAÇÃO
danças da luminosidade externa, ou se ser acrescentadas: tema desse tipo exigirá sensores capazes I
Illlllll 19 ntumcos 19 llllllllllll
de monilorar o nível cie dióxido de car- dentes aos cinco sentidos —
tato, olfa- Os atuadores pneumáticos, bem co-
seja, o micro daria todas as instruções dade dos sentidos humanos. Em com- um pistão, conectado a um braço de im-
para a ligação dos sensores ao motor, pensação, os micros contam, potencial- pulsão ou de tração. Uma válvula ope-
acusaria eventuais falhas na operação e mente, com "'sentidos" adicionais, co- rada eletricamnte dirige o fluxo de líqui-
até mesmo diagnosticaria o problema do mo a capacidade de detectar campos do ou gás para o pistão. Os atuadores
magnéticos, radiação atómica, eletro- hidráulicos geralmente são mais seguros,
magnética, de ultra-som ou raios X in- , potentes e precisos do que os pneu-
fravermelha ou ultravioleta etc. máticos.
INTERFACES HOMEM MAQUINA O computador precisa de um sensor Motores comuns de corrente direta
especifico para cada tipo de fenómeno (DC) ou alternada (AC) podem ser con-
a ser detectado. Existem, assim, detec- trolados por um micro, embora a pre-
O que chamamos interface homem-
tores de som e ultra-som, temperatura, cisão seja pequena. Quando é necessá-
máquina é exatamente o projeto da in- rio um posicionamento exalo, deve-se
gases, fluxo, umidade, luz, proximida-
teração do sistema com o usuário. Esse
de, movimento, aceleração etc. utilizar um sensor do ângulo de rotação
elemento dos sistema de controle ofere- do eixo, que informa ao computador a
à qual
Seja qual for o tipo de energia
ce enormes possibilidades de desenvol- posição e velocidade. Esses codificado-
vimento. Mesmo ao nível mais simples, o sensor é sensível, geralmente a forma
que consisle na exibição de determina-
.de saída è de natureza elétrica como — res, como são chamados, transformam
uma corrente ou uma voltagem analó- o ângulo de rotação em um número de
da informação, há numerosas alterna-
gica ou digital. Dá-se o nome de trans- bits. Podem ser ópticos ou elétricos —
tivas, como a simulação no vídeo de um
dutor ao sensor que se encarrega de rea- nesse último caso, temos um conjunto
mostrador analógico ou uma barra ilu-
lizar a conversão de um tipo de energia servomotor.
minada, em vez de complexas tabelas de Devido às complicações mencionadas
números ou outros tipos de gráfico com para outro.
Como sabemos, o computador não e ao alto preço de um servomotor, os sis-
os quais o usuário está menos habitua- temas baseados em micros usam com
pode trabalhar diretamente com sinais
do. As opções incluem a representação maior frequência os solenóides ou os
analógicos: é preciso, antes, convertê-los
de um esquema do sistema que está sen-
para sinais digitais, ou números biná- motores de passo. Mais simples já—
do controlado. No caso de uma ferro-
que precisam do computador só para
rios. Isso é feito por uma interface es-
via de brinquedo, por exemplo, é possí-
pecial de conversão, chamada conversor ligá-los e desligá-los, não exigindo con-
vel traçar no vídeo os trilhos e os pon-
anatógico-digital (AD). trole proporcional — esses atuadores
tos de cruzamento, e assinalar em tem- adaptam-se melhor ao mundo digital.
Alguns sensores dispõem de algum ti-
po real o seu "status". O usuário pode Um solenóide é um eletroímã que
comandar todas as funções —
como se- po de circuito de pré-processamento,
mudar sua velocidade etc. embutido — como amplificadores de si- aciona algum tipo de eixo (ou armadu-
lecionar trens, Quando a corrente elétrica passa
— por meio de joysticks ou canetas
nal, condicionadores,
sores AD simples — o que
ou conver-
filtros
ofacilita tra-
ra).
através de uma bobina, o campo mag-
ópticas.
balho de conexão ao computador. Os nético resultante move a armadura. O
O micro também abre novas perspec- detectores de temperatura (termistores), relê é um solenóide, só que destinado a
tivas para o projeto e controle de siste- ligar e desligar correntes elétricas.
por exemplo, não respondem de forma
mas de auxílio para deficientes físicos.
O motor de passo (stepper) utiliza
inteiramente linear à variação da tem-
Esses sistemas permitem, por exemplo, uma armadura circular de solenóides pa-
peratura. Alguns termistores "inteligen-
que um paralítico controle seu ambien- ra girar um eixo, do mesmo modo que
tes", porém, já apresentam o sinal de
te por meio de um computador, ligan-
saída corrigido conforme o nível de tem- um motor elétrico comum. A diferença
do ou desligando elcirodomésticos, al- é que o avanço se faz em pequenos pas-
peratura, dispensando eorreções por
terando o nível da calefação ou a ilumi- sos, e não em movimentos contínuos. A
parte do software de controle.
nação de um aposento etc. utilização do stepper em conjunto com
Já existem diversas interfaces ho- um micro é simples, mas esse atuador
mem-máquina especiais para deficien- ATUADORES apresenta uma desvantagem: sua potên-
tes, como as de entrada e saída basea-
cia é bem inferior à de motores elétri-
das na voz ou aquelas em que se acio- tamanho semelhante.
Até agora, vimos como o computa- cos de
nam as teclas soprando-se em um tubi- dor "sente" o que está aconlecendo no Para entender o funcionamento de
nho. Com isso, uma pessoa deficienie
ambiente. Entretanto, para agir sobre o um motor de passo, tomemos como
pode até mesmo usar um processador de exemplo um modelo simplificado com
mesmo, ele precisa de atuadores, ele-
textos, sem necessidade do teclado. ou quatro
mentos que geram alguma forma de apenas quatro pólos, seja, ele-
Sensores especializados, correspon- - motores de passo ter com um motor linear. Quanto mais
íaa
19 PlMFtRICOS 19
IUIIIIIIIII
rápida a atuação do micro, mais depres-
sa irá girar o rotor. Os motores de pas-
so têm um grande número de bobinas
{cerca de duzentas, cm média), e, con-
sequentemente conseguem uma rotação
muito mais "macia". O rotor pode ser
posicionado sem necessidade de servo-
mecanismos que indiquem sua posição.
CONEXÃO AO COMPUTADOR
O.^^
Ç ~JC^ Ç J
| num passe de
figuras
mágica, as mais variadas
vimos como fazer desenhos com REPITA 12 [ HEXÁGONO PF 10 PD procedimento. Esse nome deve ser pre-
.lá
LOGO
usando 301 cedido de dois pontos, que indicam ao
os comandos gráficos do
— FIM interpretador que se trata de uma variá-
a tartaruga unia espécie de cursor
vel. Para usar a variável dentro do pro-
triangular que indica a posição aluai na Observe que deslocamos a tartaruga
repelirmos cedimento, simplesmente fazemos refe-
tela. Podemos também "ensinar" a tar- dez passos adiante, antes de
— rência ao seu nome sempre que ela for
taruga a Iracar dcierminadas formas o travado do hexágono isto é, desvia-
através de um comando especial. Se qui- mos sua direção para 30 graus à direita
sermos, por exemplo, 1'a/c-la desenhar da direção anterior.
um hexágono, digitamos:
Mi
3 LINGUAGENS 3
3]
SHOUTURTLE
r/ti
APAREÇA TA
PARADIREITA ANGULO r
FIM
Na versão em BRASLOGO, o comi
Jó P\RK está especificado como sc li
se uma Mais poderoso que o L
lisiu.
Todo programador enfrenta o mes- maior número que pode ser armazena-
mo problema ao desenvolver jogos de do em oito bits (1 1 1 1 1 1 1 1 , em binário);
aventura: o texto não cabe no espaço - o código ASCII possui mais códigos
disponível na memória do micro. Quem numéricos do que caracteres para
não pode comprar uma máquina maior representar (e, por isso, é cha-
ou expandir a memória da sua, costu- mado degenerado). Poderia,
ma contornar essa dificuldade reduzin- portanto, ser diminuído,
do o tamanho do jogo ou simplifican- sem muito sacrifício.
pois a maior parte destes consiste em ocupado para oito bits signifi
textos (listas de objetos, locações, situa- cou uma adaptação ao mundo dos
ções, mensagens, instruções etc). A so- computadores digitais, onde predomi-
lução está, portanto, em reduzir o espa- nam os processadores com número de
ço ocupado pelo texto. bits organizados em potências de 2
—
Examinaremos aqui várias técnicas, quatro, oito dezesseis. 32 bits etc. Com
de compressão de texto e, em artigo pos- isso, expandiu-se no ASCII o alcance
terior, veremos como usar uma delas em original dos códigos de texto.
um joga de aventuras. Se os códigos dos caracteres fossem
comprimidos em menos de oito bits, o
espaço total para a armazenagem de tex-
COMO UM TEXTO E ARMAZENADO to na memória seria reduzido proporcio-
nalmente. Podemos fazer isso adotan-
pecialmente relevantes para o problema 128 códigos, que cabem em sete bits. A tamente na mesma ordem. Para a con-
economia de espaço obtida, nesse caso, versão no sentido inverso, basta somar
de compressão de textos:
- um código ASCII ocupa um byte de é da ordem de I em 8, ou, em termos 32 —e teremos o código ASCII, de
percentuais, de 12,5%. novo.
I memória (ou oito bits), pois 255 é o
47 PROGRAMAÇÃO DC JOGOS 47
STOP
700 REM CODIFICAÇÃO
710 XS-"":FOB J-l TO LEN(LS)
720 CS=MID$(L$.J.l)
730 P=INSTR (KS. CS) IF P>0 THEN:
XS-XS+CHHS (P)
740 NEXT J RETURN :
10 DIM FS(50)
20 K$= "ABCDEFGHIJKLMNOPQRSTUVW
XYZ ,
:-?'
.
100 HOME
160 PRINT "CODIFICANDO..."
190 LET I=0:NC=0
200 READ LS:IF LS-"*" THEN 230
210 GOSUB 710:I-I+1:F$(I)-X$
215 LET NC=NC+LEN(XS)
220 GOTO 200
230 STOP
700 REM CODIFICAÇÃO
710 LET XS="":FOR J-l TO
LEN(LS)
720 LET CS-MID3(L3.J.l)
725 FOR P=l TO 32
730 IF MID3(KS.P.1)=CS THEN X3
A redução pode ser ainda maior. Un, UM PROGRAMA DE CONVERSÃO - X3 + CHR3 tP)
código de cinco biis permite que se faça 735 NEXT P
a representação de 32 caracteres: todas A conversão do ASCII e para o AS- 740 NEXT J RETURN:
as letras maiúsculas, que são 26, e mais CII, nesse caso, não é tão fácil assim,
seis caracteres destinados à pontuação exigindo um programa específico, como
— por exemplo, o espaço em branco, o o que se segue: 10 DIM f S (50 ,64) ,kS (32)
ponto, a vírgula, os dois pontos, o hí- 20 LET kS = "ABCDEFGHI JKLMNOPQRST
fen e o sinal de interrogação. Se o texto UVWXYZ ..:-?"
contiver números, eles terão que ser es- 180 PRINT "CODIFICANDO. .
.
critospor extenso, o que, na verdade, 10 DIM FS (50) 190 RESTORE LET 1^0 LET nc-0
! :
não representa um problema muito 20 KS=" ABCDEFGHIJKLMNOPQRSTUVW 200 READ L$:IF LS - "*" THEN GOTO
grande. XYZ ,.:-?" 230
100 CLS i 210 GOSUB 710:LET i-i+l:LET
Com um código de cinco bits, con- 180 PRINT "CODIFICANDO..." fS(I)-xS
seguimos uma redução de 5 em 8, ou se- 190 I-0:NC-0 215 LET nc=nc+LEN xS
ja,de 37,5%, o que significaria uma 200 READ L$:IF LS-"*" THEN 230 220 GOTO 200
economia de quase quatro Kbytes em 210 GOSUB 710:I=I+1:F$(I)«X$ 230 STOP
cada dez Kbytes de texto. Uma redução, 215 NC-NC+LEN(XS) 700 REM CODIFICAÇÃO
convenhamos, considerável. 220 GOTO 200 710 LET xS-"":F0R )°1 TO LEN LS
IIIIIIIIIIHHK 47 noGMmãODiiooos » IMMIIHIIIIIII
5080 DATA "COM SANGUE KA PAREDE
DO SANTUÁRIO PROCLAMAVA AOS QU
ATRO"
5090 DATA "VENTOS 0 NOME DO FAC
INORA: 0 CRUEL REI DE AARDVARK.
SOBERANO"
5100 DATA "NORMANDO QUE HABITAV
A UM CASTELO SOMBRIO E CHEIO DE
ARMADILHAS"
5110 DATA "E DE ONDE SO SE OUV
'
ERES" PRINT"DECODIFICANDO.
: .
.
Se preferir, digite apenas as primei- 240 FOR 1-1 TO NL máquina, mas não vamos fazê-lo aqui,
ras linhas.Só precisaremos deste texto 250 LS = FS (I) tGOSUB 670 para não tornar muito complicada a
completo quando formos testar progra- 260 T-T+1:IF T<10 THEN 290 programação do jogo de aventura.
mas mais complexos, adiante. 270 PRINT INPUT" PRESSIONE <ENTE
; Optamos por um outro método de
R>"iX3 compressão, também baseado em ma-
2B0 T=0 nipulação de biis, mas que pode ser fa-
290 NEXT I cilmente executado em BASIC. Esse mé-
principal. Se estiver, sua posição sequen- 240 FOR 1=1 TO nl UM POUCO DE ESTATÍSTICA
cial P, em KS, c usada como código, e 250 LET LS-fS(i) GOSUB 870 :
um CHRS(P) concatena este caractere 260 LET t-t+l:IF t<10 THEN GOTO
em uma cadeia de saída, X$. Se não es- 290 Como sabemos, cada idioma utiliza
270 PRINT: INPUT "PRESSIONE <ENT determinadas letras com maior frequên-
tiver, então nada é concatenado.
ER>" :xS cia do que A técnica que esco-
outras.
O conteúdo de X$ é armazenado na 260 LET t-0 lhemos fundamenta-se exatamenie na
lista FS, onde cada elemento correspon-
290 NEXT 1 frequência do emprego das letras. Na
de a uma linha do texto em DATA. A 300 STOP língua portuguesa, por exemplo, cator-
armazenagem é necessária para uso pos-
terior. A variável NC da linha 225 ser-
860 REM DECODIFICACAO ze letras —
A, S, E, D, R, O, [, U,N,
ve simplesmente para contar o número
870 FOR j=l TO LEN LS
880 LET c-ASC LS(j TO j)
C, M, T. P e L —
representam cerca de
920 PRINT KS tc TO c)
90% do total de um texto, juntamente
de caracteres convertidos.
940 NEXT } com o espaço em branco.
Como os textos armazenados em FS Usaremos um código baseado apenas
já não se encontram mais em ASCII, 950 PRINT RETURN :
3" byte - 4 bits do 4!"caractere Uma letra incomum usa, assim, três
4 bits do 5? caractere nibbles (oito do código, mais quatro da
Para decodificar os textos —
ou pa- baliza 0), ou um byte e meio: este é o
ra reconvertê-los ao código ASCII — e assim por diante. preço que se paga por codificar a maio-
IIIIHHIIIW—
ria
cia
das leiras com
"
quatro
um
,
——
15 DIM £(60) ,c(60)
" :
Mlllllllllllll
na tela. A rotina de ordenação usa o mé-
todo tipo bolha, que examinamos no ar-
tigo da página 468. A rotina de exibi-
„
conjunto de cem caracteres: 30 LET nt=0 ção mostra apenas os caracteres com
40 FOR 1=1 TO 60 frequência maior do que 0.
90 têm códigos de 4 bits = 45 bytes 50 LET f(Í)-0:LET c(l)-í Se tudo tiver corrido bem, você ob-
10 têm códigos de 12 bits a 15 bytes 60 NEXT í estes dadosi
."
65 PRINT "ANALISANDO. .
720 FOR J=l TO LEN(LS) 775 IF p-0 THEN LET k-k+l:GOTO que é igual a 01 III 110 ou 126.
730 C3-MID3(L3.J.l) 740
740 P-INSTR(KStK) ,CS) 7 76 LET k=l Note que a multiplicação de um nib-
760 N-N+1:IF N-l THEN B-P 780 NEXT j ble por 16 tem o efeito de deslocá-lo da
770 IF N-2 THEN N-0:B-B OR 790 RETURN parte baixa para a parte alta do byte.
(16*P) XS-XS+CHRSW
: Uma operação OR soma o primeiro nib-
775 IF P-0 THEN K-K+1:GOTO 740 As linhas 20 a 27 definem os três con- ble (não deslocado) com o segundo (des-
776 K-l juntos de caracteres a serem usados. O locado); o resultado é um byte com am-
780 NEXT J primeiro conjunto reúne os quinze ca- bos os nibbles em cada metade.
790 RETURN racteres mais frequentes em um texto. Se você quiser acompanhar a geração
Para simplificar, utilizaremos a mesma de códigos comprimidos, acrescente as
Coloque um comando CLEAR 3000 ordem encontrada no texto de teste. linhas que se seguem e rode o progra-
na linha 10. para os micros pertencen- Mas, se quiséssemos obter um conjun- ma novamente.
tes às linhas TRS-80 e TRS-Color. to padrão, que servisse igualmente bem
para qualquer texto na língua portugue-
H] El sa, deveríamos analisar uma amostra
muitas vezes mais extensa antes de de- 212 GOSUB 820
Para que o programa funcione nos finir a ordem dos caracteres. O segun- 800 REM --- LISTAGEM
microcomputadores Apple e TK-2000, do conjunto contém os próximos quin- 820 FOR N=l TO LEN(X3)
substitua a rotina de codificação das li- ze caracteres de maior frequência no tex-
830 PRINT ASC (MID5 (XS.N, 1) )
237 PRINT -DECODIFICANDO..." 674 caracteres, ou seja, houve uma re- programas anteriores fo- J
240 FOR i=l TO nl dução de 45%. Pouquíssimos métodos ram escritos com nu- J
250 LET L$-f$(i) :G0SUB 670 de compressão conseguem tão alio grau meros diferentes de li-
260 LET t=t+l:IF t<15 THEN GOTO nhas, de modo a faci-
de eficiência. Na realidade, se contar-
290 litar essa integração.
270 PRINT:INPUT " PRESSIONE <ENT mos o número total de bytes gastos pe-
lo programa e pela tabela de códigos KS, Para proceder ã fusão
ER> ":XS
280 LET t-0 a redução global de espaço vai ser bem dos dois programas,
290 NEXT i menor. Devemos ter em mente, porém, faça as modificações:
300 STOP que a utilização de um algoritmo de
860 REM DECODIFICACAO compressão como este só faz sentido
670 LET n-0:LET k-l: FOR j-l TO quando o lexto a ser comprimido é ex-
LEN r.s
tenso. Assim, o acréscimo de memória 565 K-l
860 LET c«ASC(L3(j TO j) necessário para o programa e as tabelas 615 K$ÍK)-KS(K)+
890 LET c(l)=c AND 15:c<2)=(c
é insignificante se comparado aos ga- CHRStC(I)+31)
AND 240) /16 616 IF LEN<K$(K))-15
900 FOR L=l TO 2 nhos obtidos pela compressão.
THEN K-K+l
910 IF c(L)-0 THEN LET
k=k+l :GOTO 930 LIÇÕES DA CRIPTOGRAFIA e suprima as linhas 20 a 27.
920 PRINT KS<K.c(L) to c(L))i
925 LET k-l
930 NEXT L O compressor de textos desenvolvi-
940 NEXT J do aqui toma emprestado alguns concei-
950 PRINT RETURN :
tos da criptografia, que é a ciência das 565 LET k=l
cifras edos códigos (veja artigos das pá- 615 LET k$(k)-kSCk)+CHR$(c
A sub-rotina responsável pela deco-
dificação funciona de maneiraexatamen- ginas 888 e 1091). Ao tentar decifrar um (i)+31)
código secreto, o criptógrafo analisa, 616 IF LEN{kSCk))-15 THEN LET
te inversa à rotina de codificação, que
k-k+1
acabamos de examinar. antes de mais nada, as frequências dos
A variável C contém o código com- caracteres presentes no texto cifrado. : supnma i linhas 20 a 27.
primido, extraído de cada um dos carac- Estas podem dizer muito sobre a fre-
teres da linha codificada. A partir des- quência das letras usadas no idioma
ta obtêm-se os dois nibbles, que são ar- original.
mazenados respectivamente em CO) e O
uso das letras mais frequentes do
alfabeto no primeiro conjunto de codi- Observe que algumas linhas foram
C(2), na expressão da linha 890, e exa-
ficação assegura a obtenção do máximo acrescentadas à rotina de impressão dos
minados pelo laço das linhas 900 a 930.
de compressão possível. Se esse conjun- resultados da análise de frequência. Elas
Se um dos nibbles é igual a 0, o aponta-
to incluir caracteres que aparecem com se encarregam de construir automatica-
dor K, que inicialmente se encontrava
menor frequência, omitindo outros mais mente os elementos do conjunto KS,
em é incrementado, passando a indi-
1,
car opróximo conjunto de códigos. Fi- utilizados, a compressão perderá muito com a vantagem de criar tantos elemen-
cm eficiência, pois muitos códigos 0 se- tos quantos se façam necessários (se fo-
nalmente, a linha 920 imprime na tela
o caractere decodificado. rão gerados. rem mais de três, é conveniente alterar
a dimensão deste conjunto na linha 10
Tomemos o exemplo anterior para
do programa principal). Por isso. as li-
ver como funciona a decodificação: COMBINANDO ETAPAS
nhas 20 a 27, que contêm a definição fi-
= xa do conteúdo do conjunto KS, devem
byte 011 111 10 = 126
Normalmente, um programa com- ser retiradas.
126 AND pressor baseado nessa técnica deveria ser Tente codificar outros textos com es-
1? nibble 15
independente do lexto que se deseja seprograma, e veja como a taxa de com-
ou: 01111 110 AND 00001111 comprimir — ou seja, teria nos conjun- pressão se mantém quase a mesma. Es-
ou: 00001 110 tos KS uma sequência padronizada de ta éuma característica desejável de qual-
ou: 14 em decimal caracleres mais frequentes, identificados quer sistema de compressão.
pela análise de uma grande amostra da No próximo artigo sobre este tema,
investigaremos outras alternativas utili-
2? nibble (126 AND 240)/ 16 língua portuguesa.
Entretanto, um texto de aventura zadas na compressão de textos, particu-
AND
11110000 apresenta algumas peculiaridades, in- larmente o MêtOth Chinês, por meio do
ou: 01111110
cluindo termos estranhos, como Aard- qual é possível obter 60% de redução em
ou: 01 110000
ou: 112/16 - 7 (00000111) vark, Niptu, Nordham etc, que não uma aventura.
llllllllllimHMBHMMHHIIIIIIi
VARIÁVEIS DO SISTEMA
TIPOS DE VARIÁVEL
COMO MODIFICAR
APONTADORES E CONTADORES
ENDEREÇOS ÚTEIS
interface universal de entrada/saída. - parâmetros de definição do hardware: zenado no par 23730-23731 que é a va- ,
topo da memória RAM (PRAMT) etc; riável de sistema RAMTOP. Ela indicará
Cada locação nessas áreas armazena
um valor numérico, usado pelo sistema - contadores e acumuladores: contador o topo máximo de memória RAM dis-
de quadros de TV (FRAMES), espaço ponível para um programa em BASIC:
operacional e pelo interpretador durante
a execução de programas. Essas loca- ocupado por cadeias (STRLEN) etc. LET MAX - PEEK(23730)+PEEK(
ções são chamadas variáveis do sistema Algumasvariáveis do sistema ocu- 23731) "256
e recebem um nome simbólico, para fins pam um byte, outras, dois. Quando
de referência. Podem ser: ocupam dois bytes, o número de dezes- Podemos também modificar um va-
da moldura (BORDCR) etc; O acesso a esses endereços permite- chega ao fim da tela. Com um POKE
- indicadores: próxima linha a ser exe- nos, entre outras coisas, copiar determi- 23692,255 a cada número de linha, o
cutada (NEWPPC), coordenada X do nado valor em uma variável do sistema, computador nunca fará essa pergunta.
cursor de alta resolução (COORDX), de modo a informar o programa sobre No quadro acima, listamos algumas
número de linha da posição corrente de algum parâmetro de interesse para o das variáveis de sistema mais importan-
processamento subsequente. Suponha- tes para o Spectrum e compatíveis. Use
PRINT (SPOSLN) etc;
- apontadores, que contêm outros ende- mos que você queira dimensionar uma a sua imaginação!
I 4 LINGUAGENS 1
EXPRESSÕES MATEMÁTICAS
VARIÁVEIS E NÚMEROS
NOMES E S E NTENÇAS
Os recursos do LOGO não se esgotam em dessa linguagem. Na realidade, segui- Nada mais longe da verdade. Como
mos o caminho inverso do que è usual o LISP, seu antecessor, o LOGO foi
seus eficientes comandos gráficos.
no aprendizado de outras linguagens, já projetado de modo a simplificar a ma-
Manipular palavras, representar dados, que abordamos em primeiro lugar os co- nipulação de palavras e listas de pala-
efetuar cálculos matemáticos - tudo mandos gráficos. Mas esta é a maneira vras e frases. Essa característica não im-
mais fácil de entrar em contato com o pede, contudo, que complexos progra-
isso o LOGO pode, e muito mais. universo da programação — principal- mas de Inteligência Artificial sejam de-
mente para crianças. Aliás, justamente senvolvidos com a ajuda do LOGO.
por causa da popularidade de seus re- Ao estudar linguagens imperativas,
Neste terceiro e último artigo da sé- cursos gráficos, muita gente pensa que inclusive o BASIC, começamos por ana-
rie sobre programação LOGO, exami- o LOGO é apenas uma "linguagem grá- lisar seus elementos básicos, tais como
naremos as características fundamentais fica", própria para crianças. as formas de representação de dados
2 2
HGUAGCNS 4
.
tanto, a falta do ponto decimal nos ar- crito da seguinte maneira:
Illllll UNGUAGINS llllllll
Não tente fazer o mesmo, porém, Eis um programa que simula dez lan-
FUNÇÕES MATEMÁTICAS
do do computador, que há um argumen-
to a mais). É importante lembrar que
O LOGO possui várias funções ma- ESCREVA -COMPUTADOR um espaço em branco sempre indica, em
temáticas que facilitam o cálculo de ex- linguagem LOGO, o fim de uma pala-
pressões mais complexas —
algébricas,
Note que não se fecham as aspas, co- vra, e que não podemos colocar mais de
trigonométricas etc.
mo no BASIC. Se você se esquecer de uma palavra após um sinal de aspas.
colocar as aspas antes da palavra, a má- Para imprimir duas palavras usando
quina entenderá que COMPUTADOR é um mesmo comando, precisamos antes
3: o nome de um número ou de procedimen- juntá-las em um único argumento. Exis-
to criado anteriormente; não o encontran- te um comando primitivo que faz isso:
REMAINDER Resto de uma divisão
do, exibirá uma mensagem de erro.
ROUND Arredondamento
Como o comando de impressão acei-
ABS Absoluto
ta apenas um argumento, as formas que
INT Inteiro
se seguem também são incorretas:
SQRT Raiz quadrada
SIN Seno PRINT WORD "BOM "DIA
COS Co-seno
3
ESCREVA PALAVRA "BOM "DIA
RESTO Resto de uma divisão O comando WORD (ou PALAVRA)
INTEIRO Inteiro toma dois argumentos —que são letras
RA l/Q Raiz quadrada
ou palavras precedidas de aspas — e os
SENO Seno reúne em uma só palavra. Esta é passa-
COS Co-seno da para o comando PRINT (ou ESCRE-
Só alguns interpretadores têm o con- VA), que então a coloca na tela.
junto completo dessas funções. No
primeiro caso, o interpretador O LOGO possui diversos comandos
O LOGO conta ainda com um gera- LOGO informará que ainda não conhe- extremamente poderosos para lidar com
ce DIA. No segundo, dirá que não sabe palavras. Para extrair letras de uma pa-
dor de números aleatórios, útil em uma
o que fazer com "DIA (ou, dependen- lavra, utilizam-se estes comandos:
I série de aplicações, inclusive jogos.
PRINT PRIMEIRO SEMPRIMEIRO
"ABCD
PRINT ÚLTIMO SEMÚLTIMO "ABCD
PRINT PALAVRA PRIME IRO "ABCD
ULTIMO "ABCD
Note como os comandos são enca-
deados: PRIMEIRO SEMPRIMEIRO
extrai a segunda letra da palavra ABCD;
ÚLTIMO SEMÚLTIMO extrai a penúl-
tima palavra e assim por diante.
O pequeno procedimento recursivo
mostrado a seguir é capaz de extrair to-
das as letras de uma palavra:
FIM
ATRIBUIÇÃO
imprime uma tabela contendo o quadra- ESCREVA) seguido do nome de uma na leia.
do e a raiz quadrada de lodos os núme- lista, obteremos seu conteúdo comple- Uma lista pode ter apenas um ele-
Uma lista pode conter outras listas: mento, ou nenhum. Nesse caso, deno-
ros inteiros, de NI a N2: to.
mina-se lista vazia, e é representada pe-
lo símbolo ]. Para unir duas listas, usa-
|
iiiiiiiiiiiim
O comando DEF FN permite incorporar Existem ainda outros tipos de arre- pregada quando se quer determinar se
dondamento. O mais comum consiste um número é par ou impar.
ao elenco de funções matemáticas
do BASIC um conjunto adicional
de cálculos de grande interesse para
em arredondar os dígitos da parte fra-
cionária de um número usando a "re-
gra do 5": se o dígito a desprezar é
maior ou igual a 5, o que está à sua es-
O SI El
DEF FNPI(N)=-2-INT(N/2)*2
o programador. Utilize-o. querda é arredondado para cima; caso
contrário, este não muda. A função que
executa esse tipo de arredondamento é:
iam
DEF FNPI ÍN) -FNHE {N
No artigo da página 608, vimos co- , 2)
mo definir novas funções e usá-las em Se o resultado da função for 1 o nú-
,
TK-2000 e o TRS-Color não admitem mais (N)*5) 180 PRINT '(7) FIM"
que um argumento por função, a linha 190 PRINT
anterior não pode ser executada nessas
máquinas. A solução é utilizar só um ar-
iQUSl 200 INPUT "OPCAO ";OP
210 IF OP-7 THEN STOP
220 IF OP>3 THEN INPUT " ARGUMEN
gumento (veja o artigo da página 608). TO " jN:G0TO 250
Também interessante é a função que 230 INPUT "PRIMEIRO ARGUMENTO
"
UOW) ) }
505 LET N=32069: POKE 23728, N-
ALISAMENTO EXPONENCIAL 230 IF T-3 THEN LET I=ABS < (U 256*INT (N/256): POKE 23729.
~U3)-2*(U-V3)-3*C(UOU3) AND t INT (N/256)
UOV3> ) )
510 RETtJRN
O
alisamento exponencial é a técni- 240 FOR J-l TO LET A<J.T)=A2: 520 DATA 33,6,72,58.129,92.203
ca estatística empregada para regulari- (,J,T)*W+H(I,J) LET C(J.T)=C(J
:
.127.40.5.203.191,33.22.72.221
zar o contorno de uma curva cheia de ,T)*W+3*H(I.J)*H(I,J)+.01 ,42.176.92,17.72.0.254,0,40
530 DATA 8.254.1.40,2.221,25,
altos e baixos. Se você colocar em um 250 LET X(J)>A{J.T)/C<J,T)
NEXT J 221.25.221,229.209,6.3.197.229
gráfico o número de pedras, tesouras e .6,8,197,1.3,0.235,237.176,2 35
papéis que o oponente apresentou em 260 FOR 1=1 TO 3: LET Q(I,T)-1
/3: FOR K-l TO 2: LET Q(I,T)-X ,36,1,3,0
cada unidade de tempo (por exemplo, 540 DATA 237,66.193.16,239.225
(K)*H(I,K): NEXT K NEXT X :
a cada dez jogadas), a curva terá o as- 280 NEXT T: LET U2=U: LET W=V .1.32,0.9.193.16,227,201
pecto de uma serra. Porém, regularizan- IF U=V THEN LET W-U+l-3* 550 DATA 0,0,0,0,0,0.0.0.0.0.0
do o contorno da curva ou seja, tor- — :
)=-SIN {(I-2)*PI*2/3) NEXT I : 415 LET U=VAL KS 30 FOR T=l TO 3:FOR J=l TO 2:A(
30 FOR T=l TO 3: FOR J-l TO 2 420 PRINT AT 3.4;AS(U);AT 2.21 J,T)-0:C(J,T)-.Q1:NEXT J.T
: LET ACJ,T)=.01: NEXT J: INK 5:"EU DISSE
;
AT 3,21;A$ ; 40 PRINT-DIGITE O FATOR DE ESQU
NEXT T (V) ECIMENTO. INTERVALO PERMITIDO
'
40 INPUT "DIGITE FATOR DE ESQ 430 POKE 23681. U-l: LET O-USR 0 A 1.
UECTMENTG (0-1). VALOR SUG 32000: POKE 23681, 127+V: LET O 50 PRINT"0=SEM MEMORIA ALEM DE
ER IDO .85 ";W -USR 32000 1 JOGADA" PRINT" 1=ESTRATEGIA FI
:
R J-l TO 3iP(I,J)-SGN(I-J-3*INT
:
100 LET V-INT (RND*3>+1 AND V = l> OR (U=l AND V=3) THEN 80 S-0 :U2-0 :WW = 0 :U3-0
110 PRINT INK 6; PAPER 2l" 1 PRINT AT 18,12;" VOCE VENCEU 100 V-RND(3)
"PEDRA, 2-PAPEL. 3-TESOURA
" ": GOTO 490 110 COLOR 4:PCLS:LINE{8.20)-<24
T ) 33 1 )
Ill lllllllll
7.171) .PSET.B 710 PUT{X,Y)-(X+40.y+38) , SC. AND 30 FOR T-l TO 3:FOR J-l TO 2:A(
120 DRAWBM34 10S4C4" FOH K = l T
, : : RETURN J.T)-0:C(J.T)=0.01:NEXT J:NEXT
O 3:DRAU NS(K)+E$+AS(K)+"BR4" :N 720 PUT (X Y) , - (X+40 Y+38) , . ST AND , T
EXT : RETURN 35 LOCATE 0,4
140 GOTO 400 800 FOR K-l TO LEN (STR$ (S) 40 PR1NT "FATOR DE ESQUECIMENTO
200 FOR T-l TO 3:I-U 610 BS^MIDSÍSTRStS) ,K.l) IF B$ = :
A SER USADO"
210 IF{U2-0 AND T = 2) OH ÍU3-Q A THEN DRAWBF2R4BE2" :GOTO 83 45 PRINT: PRINT "VALOR ENTRE 0 E
ND T=3) THEN 280 0 1 :"
220 IF T-2 THEN J>- !U=U2) -2* (U- 820 IF BS<"0" OR BS>"9" THEN 83 50 PRINT "0 - MEMORIA DE 1 JOGO
W) -3*({UOU2)AND(U«W) ) 0 APENAS" PRINT "1 - ESTRATÉGIA
:
230 IF T-3 THEN I— {U-U3) -2* ÍU= B25 DRAU NS(VAL{BS)) INVARIÁVEL"
V3) -3* ( [UOU3] AND
(UOV3) ) 830 NEXT RETURN : 60 PRINT "VALOR SUGERIDO - 0.65
240 FOR J-l TO 2:A(J,T)-A(J.T)* 1000 FOR 1-0 TO 9 READ N$U):NE !
)
350 FOR G-l TO 3:P-0:FOR 1-1 TO T{130,18)
240 FOR J-l TO 2 LET A(J.T)-A(J:
IIIIIIIIIIHM IIIIIIIIII
400 LOCATE 0,21: PRINT "JOGUE 1 : AND T=3) THEN 270
-PAPEL 2=TES0UBA 3-PEDRA "; 220 IF T = 2 THEN I = - (U-U2) -2* (U«
410 AS-INKEYS:IF AS<"1" OH AS>" VV) -3* <UOU2) AND (UOW)J
(
3" THEN 410 23D IF T=3 THEN I=- (U=U3) -2* {U= Soma cumulativa é a técnica usada
420 U-VAL(AS) V3) -3« ( (UOU3) AND (UOV3) ) para analisar o desempenho do oponen-
425 LOCATE 3,10:PRINT AS (U) 240 FOR J-l TO 2 LET A(J,T)»A(J :
te num período de tempo em que se re-
430 LOCATE 20,10:PBINT A${V) ,T)*W+H(I,J) gistram mudanças bruscas de respostas.
445 S=S+P(U.V) 245 LET C J T) =C J T) *W+3"H {1
[ , ( , .
Os gráficos empregados pelo progra-
447 LOCATE 12.16:PBINT " *H (I J) +0 01
) .
7 LET C=8«ATN(1)/3:NU=0:NV=0
AS(3)-"TES0URA"
10 DIM H(3, 2) .X(2) ,Q{3, 3) ,C(2, 3 3
355 LET P=P+P(G.I)*Qtl,T) NEXT 10 DIM B(3): DIM U{3): DIM S(
) ,A(2.3) .P(3, 3)
!
I 3) DIM H(3,2)
: DIM X(3) DIM : :
20 FOR 1=1 TO 3
357 IF P>X THEN X=P:V=G Q{3) DIM P(3.3) DIM M(3) :
NEXT T 410 GET AS:IF AS<"1" OR AS>"3" >— SIN ((I-2)*PI*2/3) NEXT I :
70 FOR 1=1 TO 3:FOR J=l TO 3 500 GOTO 200 120 INK 6: PLOT 8.167: DRAW
72 LET P(I.J)=1 1000 LET AS(1)="PAPEL ":AS(2)- 239.0: DRAW 0,-159: DRAW -239.
75 IF I-J-3*INT((I-J+1.5)/3)<0 " TESOURA" AS (3) ="PE DBA
"
:
0: DRAW 0,159
THEN P(I,J)=-1 1010 HOME 130 GOTO 400
77 NEXT J:NEXT I 1020 PRINT -"PAPEL PED 200 LET Y--1E30: LET Z=-1E30
60 LET S=Q:U2=0:WW=0:U3=0 RA-TESOURA"
"===================
FOR T=l TO 3: LET I=U IF T=l
THEN GOTO 230
:
LN (X(2>)*B(3)*LN (X(3)) IF AND V-l) OR (U-l AND V-3) THEN U(l) :Q(2)-U(2) :0(3)-U{3)
270 U2-U:W-V:IF U2>W THEN W-
i
NN>1 AND N2O0 THEN LET O-Q+Z PRINT AT 18,10;" VOCE VENCEU
" GOTO 490 U2+l-3«INT(U2/3)
tmi :
LET Q{3)-U(3) A: POKE N.A: NEXT N 284 M (T) - (NN-MT) (M (T) >NN) NEXT :
-U{2) N-
505 LET N-32069: POKE 23728, 286 T-TT:Q(1)-S(1) :Q(2)-S(2) :Q(
:
-Q3
282 FOR T-l TO 3: FOR M-NN+1 6 GOSUB 1000
C-8*ATN(l)/3 350 FOR G-l TO 3:P-0:FOR 1-1 TO
TO M{T): LET A (T ,M-NN) =A (T M> . 7
3:P-P+P(G,I)*Q(I) :NEXT:IF P>X
NEXT M 10 DIM B(3) .U(3) ,S(3) ,H(3,2) ,X{
,Q<3) ,P(3,3) .M(3) THEN X-P:V-G
284 LET M(T) = (NN-M(T) )*(-l« IM ( 3)
360 NEXT
(T) >NN) NEXT T 15 MM-60:DIM A(3,MM) , Z (MM)
400 SCREEN 1,0:DRAW"BM12,30"+YS
) ) !
GOTO 320 CADA JOGADA 9999-MESMA ESTR 430 X-44:Y-90:ON U GOSUB 600.61
311 IF T=2 THEN .
) LET Q2-Q12)
i
LET 03=0.(3) : : 7,171) .PSET.B nha 390 e digite:
LET 0<U3)-Q1: LET Q(V3)-Q2: 120 DRAWBM34.10S4C4" FOR K-l T :
LET Q{UU) =Q3 O 3:DRAW NS (K) +ES+AS (K) +"BR4" : 6 GOSUB 1000
350 FOR G-l TO 3: LET P=0 FOR : EXT 7 C-B*ATN(l)/3:NU-0:NV-0
1-1 TO 3: LET P-P+P <G I *Q I .
) ( ) 140 GOTO 400 10 DIM B{3) ,U(3) ,S(3) .H(3,2) ,X(
200 Y--1E30:Z--1E30:FOR T-l TO 3) ,Q<3) .P(3. 3} .M(3)
NEXT I: IF P>X THEN LET X-P:
3:I-U:IF T-l THEN 230 15 MM=60:DIM A { 3 ,MM) Z (MM) ,
LET y-G
210 IFÍU2-0 AND T-2)OR{U3-0 AND 20 FOR 1-1 TO 3
360 NEXT G
400 1NK 7: PRINT AT 2,4;"VOCE T-3) THEN 264 25 H (1,1) —
COS( (I-2)«C) :H(I,2)
DISSE " 220 IF T-2 THEN I— (U-U2) -2* (U- — SXN(U-2>*C)
27 NEXT
405 FOR M--3 TO 16: SOUND .01, VV)-3* (UOU2)AND(UOW)( ) I
280 IF Q>Z-L0G(U) THEN 300 230 IF T-3 THEN I-- (U-U3) -2* {U- 290 FOR M=l TO M(1)-1:LET Z (M)
282 FOR T=l TO 3 FOR M=NN+1 TO
:
V3)-3*<(UOU3) AND (UOV3) } -99999:NEXT M
M(T) 240 LET A(T,M(T))-I 295 LET Z<M[1))=Q
2B3 A (T.M-NN) =A(T,M) NEXT M !
250 FOR J-l TO 3:B(J)-0:NEXT J: 300 LET x=-99999
284 M(T)»<NN-MT)MMCT)>NN) :
N-0:N2«M{1) 310 ON T GOTO 350,320,340
NEXT T 252 FOR M=M(T) TO 1 STEP -1 320 LET UW = 6-U2-UV:Ql=Cí(D :Q2=Q
286 T-TT:QU)-S(1) :Q<2)-S(2) : 254 LET B(A{T.M))-B(A[T,M))+1:N (2) :Q3=Q{3)
Q(3)=S{3) -N+l :N2-N2-1 325 LET Q(U2)=Q1:Q(W)-Q2tQ(WW>
290 FOR M-l TO M (1 )
-1 Z (M): 256 FOR J = l TO 3 0 J) =B J) /N X : ( ( : =Q3
-99999: NEXT M J)=QIJ)-!Q(J)=0) NEXT J s 330 GOTO 350
295 ZfM{l) >-Q 25B LET A=B(l)*LOC<X(l))+B[2)*L 340 LET WW=6-U3-V3:Q1-Q(1) :02"Q
300 X—99999 OG(X(2))+B{3)*LOG(X(3)J (2) :Q3=Q{3)
310 ON T GOTO 350.320.340 259 IF NN>0 THEN Q=Q+2(N2) 345 LET Q(U3)=Q1:Q(V3)=(Í2:Q{UW)
320 WW-6-U2-W:01=QU) :Q2-Q(2) : 260 IF Q>2 THEN Z=Q S (1 =Q (1 :
) ) : •03
Q3=Q(3> 2) =Q2 3 3) =Q3 S3=T NN=N2
( : ( ! : 350 FOR G=l TO 3:P=0:FOR 1=1 TO
325 Q(U2)=Q1:Q(VV)'=Q2:(Í(UW)=03 262 NEXT M 3
330 GOTO 350 263 IF Q>Y THEN Y=Q TT=T U (1) =0 : : 355 LET P»P+P(G,I)*Q(I) :NEXT I
340 WW=6-U3-V3:Q1=Q(1) :Q2=Q(2) : tl) :U(2)=Q{2) :U(3)=Q(3) 357 IF P>X THEN X=P:V=C
03=0(3) 264 NEXT T 360 NEXT G
IIIIIIIIIIIHH
Qual é o comprimento de um peda- sendo que a rota que acompanha todas por meio do exemplo dado, pudemos
ço de corda? A resposta é muito fácil se as irregularidades é bem maior que a do constatar algo importante: a exatidão da
a corda estiver esticada, pois bastará vôo retilíneo do pássaro. medida de uma superfície irregular de-
medi-la com uma fita métrica. Caso Mas qual é essa diferença? Suponha- pende do tamanho do instrumento de
contrário, a tarefa será um pouco mais mos que temos uma trena bem flexível, medida de que dispomos.
trabalhosa, pois teremos que medir um capaz de se ajustar a todos os porme- A ciência tradicional trabalha com
objeto irregular. nores do terreno. Inicialmente, vamos modelos de curvas e superfícies lisas. À
É evidente que, para obter as medi- nos ater aos grandes acidentes, como a medida que as olhamos mais de perto,
das de um objeto irregular, procurare- foz de um rio ou uma baía. Mas, em mais elas adquirem a forma plana —do
mos estendê-lo, de modo a simplificar busca de maior rigor, passaremos a con- mesmo modo que a superfície da terra
o trabalho. Porém, nem todas as coisas siderar cada rocha que se projeta ao é aproximadamente esférica e nós a per-
são suficientemente maleáveis para se mar, tornando a costa irregular, c, de- cebemos como sendo chata.
fazer isso. Como agir então? pois, cada pedra à beira d'água. Por Porém, como ficou claro no exemplo
Tomemos como exemplo uma encos- fim, levaremos em conta até os grãos de da costa rochosa, alguns objetos não se
ta com 5 km de extensão. Essa
rochosa areia: se você os observar em detalhe, mostram planos nem quando examina-
medida equivale ao percurso de uma gai- verá que também são irregulares e me- dos de muito perto. E existem muitos
vota que voa de uma ponta à outra ou recem uma boa inspeção. outros exemplos na natureza de confi-
à distância que você realmente andaria Isso parece um exercício absurdo — gurações que possuem detalhes diferen-
seguindo a linha do mar? Há uma dife- afinal, ninguém precisa de uma medida tes em cada dimensão de sua estrutura.
rença considerável entre os dois trajetos, desse tipo com tamanha precisão. Mas, Porém, apenas recentemente os cientis-
uma cópia do pedaço original com o do-
bro do tamanho. No caso de uma folha
de papel, porém, serão necessárias ou-
tras três folhas para se obter uma com
o formato da original mas com o dobro
da extensão; com uma barra de rapadu-
ra, você irá precisar de mais sete cubos.
Os números 2, 4 e 8 são parte de uma
sequência formada por meio da multi-
plicação do 2 por ele mesmo diversas ve-
zes — 2, 2x2 e 2x2x2, ou 2T1 2T2 e 2T3.
.
desses objetos poderia ser formado por esse tipo de curva pode ser programado plo, tomar uma reta e aplicar a regra que
várias cópias menores idênticas. Estaría- em seu micro para simular a realidade, prescreve: "toda linha reta deve ser
mos então diante de um caso de auto- evidenciando algumas de suas caracte- substituída por um par de retas em ân-
semelhança, onde cada parte do objeto rísticas. No estudo dos fractais. especi- gulo reto".
é uma cópia menor do original. ficamente, a computação gráfica tem si- Se você tentar fazer isso em uma fo-
As figuras criadas por Von Koch do amplamente utilizada, oferecendo a lha de papel, verá que a cada passo mais
constituem uma aplicação muito rígida solução ideal para o problema da gera- detalhes são introduzidos no desenho.
IIIIIIIIIIIHI 06MMAÇÃOS llll
1000 LET 1 = 1/1. 414 1020 AN - AN + PI / 4 GOSUB 10
1010 TF Kmn THEN I.ET 1 = 1*1.41 00
4: LET x-x* 1 *SIN (an)): LET Y-
( 10.30 AN « AN - PI / 2 GOSUB 10
y-{)*COS Ian)) DRAW x-PEEK 236
:
D
10 PMODE 4,1:PCLS:SCREEN 1.1
10 SCREEN 2
20 MN-=2
30 OATN(l)/4S:PI = 4*ATN(l)
40 L=120:X=70:Y=140:AN=PI/2
20 MN=2 45 LINE- (X.Y) ,4
30 C=ATN(1)/45:PI-4*ATN(1) 50 GOSUB 1000
40 L=120:X-70:Y=140:AN=PI/2 60 GOTO 60
45 LINE-(X.Y) PRESET ,
1000 L=L/1.414
50 GOSUB 1000 1010 IF L<MN THEN L=L*1 .41 4 X=X :
fractais?
que ,Y) PSET RETURN
, :
ela irá adquirir. Os fractais são uma descoberta re-
1020 I-II+T) AND 7:POKE S,T+1:S
lativamente recente da matemática e
=S-1 :T-1 :GOSUB 1000 S-S+l T=PEE : :
60 LET L-128: LET X=52: LET Y T ( (I - 2 * T) / 8) ) POKE S. 1040 S=S+1 :T=PEEK (S) -1 1= (I+T) :
O MSX difere dos demais micros por (CPU) destinado exclusivamente ao con- ricamente, quarenta caracteres. Se isso
trole da tela. Conhecido como VDP (Vi- não ocorrer em seu micro, digite o co-
possuir um microprocessador e uma deo Display Processar), ele gera imagens mando SCREEN 0.
memória de dezesseis kbyt.es dedicados a partir de dados armazenados nos de- —
A tela quer contenha textos, lista-
só ao controle da tela. Desvende os
zesseis kbytes de uma memória indepen- gens de programas ou símbolos gráficos
dente da RAM (memória de acesso di- —- é simplesmente uma reprodução da
segredos da VRAM e sinta a diferença! re to, onde ficam armazenados o progra- parte daVRAM denominada Tabela de
ma BASIC e as variáveis). Dessa forma, Nomes (TN). Essa área da memória de
a utilização de gráficos multicoloridos vídeo possui 960 bytes de comprimen-
Muitos usuários dos micros MSX en- de alta resolução não compromete a to, correspondentes aos 960 caracteres
frentam dificuldades em utilizar coman- quantidade de memória disponível, co- que podem ser mostrados na tela simul-
dos como BASE, VPEEK e VPOKE. mo acontece com outros micros. taneamente (são 24 linhas com quaren
Para melhor aproveitar esses recursos da ta caracteres cada uma).
linguagem BASIC, temos inicialmente Cada uma dessas posições pode con
que entender como é organizada a me- TELA DE QUARENTA COLUNAS ter um número qualquer entre 0 e 255.
mória de video —
VRAM —um item
, número que é interpretado pelo VDP
desprezado pela maioria dos manuais. Ao ligarmos um microcompuiador como o código ASCII (sigla de Ameri-
O MSX possui um chip independen- da linha MSX, observamos uma tela de can Standard Codefor Information In-
te da unidade central de processamento textos em que cada linha acomoda, teo- terchange) de um caractere.
Illlllllll
20 FOR 1 = 0 TO 95 1) 5TEP 40
30 VPOKE BASE (0) +1 207 ,
40 NEXT
o comando PO- A linha 10 seleciona a tela de textos Visando a uma melhor compreensão
Em qualquer micro,
KE do BASIC nos permite armazenar e apaga os rótulos das teclas de função da Tabela de Padrões, mostraremos um
um número entre 0 e 255 numa posição da parte inferior do vídeo. Um laço pequeno programa que nos facilitará o
FOR.. NEXT entre as linhas 20 e 40 co- acesso a essa região da VRAM.
da RAM. Da mesma forma, o conteú-
do de qualquer endereço da RAM ou da loca várias vezes o caractere de código Ao ser executado, o programa impri-
ROM é obtido com o comando PEEK. 207 na primeira posição de cada linha. me na tela a porção da tabela que cor-
responde a um caractere. São impressos
Como a VRAM não depende da Deve-se ressaltar que, apesar de termos
RAM, necessitamos de comandos que usado a instrução BASE(0) na linha 30, também os endereços (com conteúdos
nos possibilitem ler ou escrever bytes di- ela é perfeitamente dispensável, uma vez em números decimal e binário) e o ca-
retamente na memória de vídeo, ou se- que seu valor è zero. ractere com seu código. Dessa forma, o
leitor entenderá como os números biná-
ja, VPEEK e VPOKE. Experimente es-
rios codificam o formato dos caracteres.
sa nova forma de escrever na te|a:
COMO SE DESENHAM AS LETRAS
10 CLS 10 Z$="00000000"
VPOKE 417,77 20 SCREEN 0 KEY OFF
20 Vimos até agora que, ao se colocar um
:
20,0
1100 DATA 7 2,72 80,224.208.200,
200.0
1110 DATA 64.64 64,192.192.192,
248, 0
1120 DATA 68,108,84,196,196,196
,196,0
1130 DATA 72,104.104,216.216.21
6, 200 ,
,
— I1HIII
1740 DATA 40.84.84.84,B4,B4,132
.0
F> (j
248,0
13 00 DATA 0.0.112.80,240.192,24 10 a 30 —
modifica os padrões das le- 186 0 DATA 68,36,36,36.24,16,224
8,0 tras maiúsculas (códigos ASCII de 65 a D
1310 DATA 48 BO .64 ,64 240 192 90). O segundo laço —
linhas 40 a 60
•
KE BASE(0)+I.32:NEXT
com alterações apenas nas linhas DA- 30 A-VPEEK(BASE(2)+I) 370 VPOKE BASE(0)+I,194+J/1024
TA. O RESTORE
comando 1620 faz 40 VPOKE 4096+1, 380 NEXT : A5= " Esta Tela Se Inic
com que o comando READ inicie a lei- 50 VPOKE 6144 + 1 A , ia Ero"+STRS J) (
tura a partir da linha DATA 1620. 60 NEXT 390 FOR 1-1 TO LEN (AS)
100 FOR 1=65*8 TO 91*B-1 400 VPOKE BASE(0)+486+I.ASC(MID
110 READ A-UPOKE 4096+T.A S (AS.I.l)
MODIFICANDO 0 VAL0R-BASE 120 NEXT 410 NEXT RETURN
:
rompido dessa maneira, ou porque programa prossegue na linha 420, onde do mudamos a posição da Tabela dc Pa-
ocorreu alguma mensagem de erro, e ele os valores de BASE(O) e de BASE(2) são drões, entretanto, o cursor permanece
estiverem uma tela diferente da origi- restituídos ao normal. como um espaço em branco, que apaga
nal, o cursor de texto não retornará à A porção do programa que abrange o caractere subjacente e desaparece na
teia e o programa parecerá estar blo- as linhas430 a 510 torna possível a exi- porção vazia da tela.
queado. Para fazer o micro voltar ao bição instantânea de cada uma das te- A inversão do caractere sob o cursor
normal, digite às cegas (nada aparecerá las criadas, escritas com qualquer dos é realizada na Tabela de Padrões, pelo
no vídeo) o comando abaixo: SCREEN 0 três conjuntos de caracteres. Esta mu- sistema operacional do MSX. Isto se dá
dança é obtida peia atribuição de um no- através das posições 2040 a 2047 da
SCREEN 0
vo valor a uma variável BASE. As linhas VRAM. Quando mudamos a BASE<2>,
e pressione a tecla <ENTER>. 440 e 450 permitem "avançar" dentro o processo não é mais visível.
da VRAM através da tecla "seta para Comandos como PR1NT, TAB e
baixo". Novas telas vão sendo mostra- LOCATE só funcionam quando a BA-
COMO FUNCIONA das instantaneamente, à medida que se SE(0) tem valor 0, ou seja, só imprimem
altera o valor de BASE(0). Por outro la- na Tabela de Nomes em sua posição ori-
Na linha 10, selecionamos o modo de do, as linhas 460 e 470 possibilitam "re- ginal. Portanto, apenas por intermédio
textos e apagamos o rodapé da tela. O troceder" dentro da VRAM. São neces- de VPOKE é possível imprimir nas le-
laço FOR...NEXT entre as linhas 20 e sárias duas linhas para cada movimen- ias secundárias; todas as mensagens de
60 cria duas cópias da Tabela de Pa- to, devido ao grande intervalo entre a erro são impressas na Tabela de Nomes
drões, que começa normalmente em tela original (endereço inicial 0) e as se- original, mesmo que uma tela secundá-
2048. As outras duas cópias terão ende- cundárias. Este espaço é ocupado pelas ria esteja sendo mostrada no vídeo.
Tabelas de Padrões. Além de tudo isso, existem algumas
reços iniciais 4096 e 6144, respectiva-
mente. Os laços seguintes obtêm nas li- Com as linhas 480 e 490 podemos limitações nos valores da instrução BA-
nhas DATA os padrões que serão mo- mudar instantaneamente o conjunto de SE. O
endereço inicial de uma tabela dc
dificados. As cópias da tabela original caracteres, alterando o valor deBA- nomes —
BASE(0) no caso de SCREEN
sào necessárias, porque apenas as letras SE(2), endereço inicial da Tabela de Pa- 0 — deverá ser múltiplo de 1024. Da
e os números são redefinidos, excluindo- drões. Para isso. o programa detecta as mesma forma, o endereço inicial de uma
se, portanto, os demais símbolos. teclas "seta para a direita" e "seta pa- tabela de padrões —
BASEÍ2) em
As linhas 100 a 180 criam as letras fu- ra a esquerda". SCREEN 0 —
terá que ser múltiplo de
turistas na tabela que começa em 4096, A linha 500 possibilita terminar o 2048. Voltaremos a este assunto opor-
enquanto as linhas 200 a 280 produzem programa sem maiores problemas atra- tunamente, quando explicarmos os re-
as letras de fórma, utilizando a tabela vés da tecla <ESC>. Essa linha resti- gistros do chip de vídeo-VDP.
31 APLICAÇÕES 31
O MÉTODO TRADICIONAL
COMO USAR PAPEL E CANETA
TIRE AS MEDIDAS
DESENHOS E ESCALA
O GIRO DAS PEÇAS
Deixe para o micro o trabalho "pesado"' cansativa. Normalmente, optamos por Apresentamos aqui. entretanto, uma
arrastar a mobília de um lado para ou- terceira alternativa ainda mais fácil e
do planejamento de um ambiente.
tro, atéencontrarmos a melhor posição moderna, uliiizando seu microcomputa-
Com este projeto computadorizado, para as diferentes peças. O desânimo dor pessoal. O vídeo gráfico pode subs-
aparece quando constatamos que nem tituiro trabalho do papel e da caneta,
você pode distribuir seus móveis com
tudo se encaixa nos espaços disponíveis. com a grande vantagem de permitir fá-
o simples toque de algumas teclas. Um método mais simples consiste em ceis correções. Além disso, os detalhes
fazer um planejamento prévio, dese- da mobília podem ser armazenados na
nhando cada móvel, com precisão, pa- memória do computador, eliminando a
Conseguir uma melhor disposição ra em seguida adequá-los ao ambiente necessidade de redesenhar uma peça ca-
dos móveis num ambiente nem sempre (obviamente é mais simples movimentar da vez que quisermos movê-la.
é algo fácil, e certamente é uma tarefa um retângulo que arrastar um sofá). O projeto computadorizado é seme-
lhante ao projeto feito em papel. A pri-
meira etapa consiste em se medir, de for-
ma precisa, o local onde a mobília será
colocada, já que em alguns ambientes
poucos cemímelros representam uma di-
ferença significativa.
De posse de todos os dados, incluin-
do posições de porias e janelas, deve-se
desenhar o ambiente (evidentemente em
escala reduzida). O próximo passo é me-
dir os móveis envolvidos no projeto e re-
produzi-los na mesma escala usada pa-
ra o desenho anterior. Dessa forma, se-
rá fácil manipular as peças e saber com
" " " "
31 APUCAÇÕIS 31
exatidào, por exemplo, qual a melhor A segunda parte deste programa tra- 330 RETURN
posição para o piano na sala ou se a ge- rá uma explicação mais detalhada de ca- 340 DRAWBM213.70;D4F1R2E1U4H1L
ladeira caberá em um determinado can- da opção, além de conter a outra meta- 2G1BU1BR8BD3R3BR5U3R4D3NL4D3BR6
to da cozinha. de da listagem do programa. Mas aten- UBU2U2R2U2L4D2" RETURN
:
Apresentamos aqui apenas metade ção: é necessário digitar as duas partes 350 CLS
360 PRINT "COMPRIMENTO MÁXIMO DO
do programa, que é composto de sete para que o programa rode com seguran-
CÔMODO (M)
opções. O
restante virá no próximo ça; portanto, grave a primeira antes de
370 INPUT LE
artigo. digitar a segunda. 380 IF LEMOO OR LEO THEN 350
Opção
As sete
I -
opções oferecidas no
principal são as seguintes:
Reproduz
o ambiente:
menu
to-
u
10 PCLEAR 8 CLEAR 2000 :
390 SC=100/LE
400 PMODE 4,1: COLOR 0 1 PCLS SC
REEN 1.0
410 XM-0:YM-LE
, : :
mando por base sua maior medida, dc- 20 DEF FNA(XM) -1 9*SC*XM . 420 GOSUB 240
senha-o em escala que caiba na tela do 30 DIM 0SÍ9) ,S(10) 430 XX-FNA (XM) YY-FNA (YM) IF PP
: :
micro. As dimensões devem ser indica- 40 OS (0) -"DD100 ;DC5Q DE100 ;DB50 ; OINT(XX,YY)-l THEN PSETIXX.YY.O
das em metros, junto com suas respec- ;BD8 BC 4 DD40 DC 34 DE40 ;DB34
; ; ; ;
;
) ELSE PSETÍXX.YY.l)
tivas posições (Cima, Baixo, Esquerda, 50 OS(1)="DD50;DC60;DE50;DB60;B 440 IS-INKEYS:IF IS-"" THEN 430
Direita). Na representação das paredes,
DIO BC10 :DD10 ;DC10 ;DE10 DB10 ;BD
;
; 450 OX-XM:OY-YM
20 jDDIO DC1Q ;DE10 DB10 BC20 ;DC1
; ; ; 460 IF IS-" " THEN COLOR 0:GOTO
consideraremos duas distâncias e duas 0;DD10;DB10;DE10;BE10;DE10;DC10 530
direções, permitindo, assim, o desenho ;DD10;DB10rBE20;BC15:DD50;" 470 IF IS-"B" THEN COLOR 1 :GOTO
na diagonal. Na opção 1, especifica- 60 OS (2) ="DD100 DC60 DE100 ;DB60 : ; 530
mos também a posição das portas e 480 IF IS-"C" THEN 400
janelas. 70 O$(3)="DD30;DC30;DE30;DB30;D 490 IF IS-"F" THEN FOR K-l TO 4
Opção 2 - Possibilita a movimentação C20;DD30;
80 OS (4) -"DD60 ;DC60 ;DE60 DB60
;
980 IF IS-" " THEN OS(N)-OS(N)* 1015 3060 GOSUB 6010: RETURN
-D- ELSE OS<N)=OS(N)+"B" 1035 DRAW DX-X.DY-Y: LET X=PEEK 4000 GOSUB 6200
23677: LET Y=PF.EK 73678: LET X 4015 IF Z=83 THEN SAVE ESSCREE
990 CLS: INPUT "DIREÇÃO C/B/E/D"
;D9 S-STRS (X/SC) LET YS=STRS (Y/S : NS :RETURN
1000 IF INSTR (1
,
"CBED" ,D$) -0 TH C) 4020 SAVE ES DATA 0()
EN 990 1037 IF LEN XS<3 THEN LET XS=F 4030 SAVE ES DATA S()
1010 INPUT"DISTANCIA (CM)";D St TO 3-LEN X$)+XS 4040 SAVE ES DATA OS O
1020 IF D<-0 OR D>200 THEN 1010 1038 IF LEN YS<3 THEN LET YS-F 4050 RETURN
1030 SCBEEN 1,0 S C TO 3-LEN YS) +YS 5000 GOSUB 6200
1040 IF DS-"E" THEN X-X-D/2 1039 LET XS"XS( TO 3): LET YS=Y 5010 IF 2=83 THEN LOAD ESSCREE
1050 IF DS-"D" THEN X-X+D/2 St TO 3): PRINT TNK 7;AT 10.24 NS :RETURN
1060 IF DS-"C" THEN Y'Y-D/2 ;"DX-";XS:AT 11.24; "DY»" YS ;
5020 LOAD ES DATA 0{)
1070 IF DS="B" THEN Y-Y+D/2 1040 GOTO 1016 5030 LOAD ES DATA S{)
1080 IF X<75 OH X>175 OR Y<45 O 2000 IF NF-0 THEN RE TU RN 5040 LOAD ES DATA OS O
R Y>145 THEN SOUND 1 3 X-OX Y-0 , : : 2005 FOR N=l TO 10: LET QS="["+ 5050 RETURN
Y:GOTO 910 STRS N+"]"+OS(N): PRINT INVERS 6000 COPY RETURN :
1090 LINEfOX.OY)-(X.Y) PSET . E 1;AT N*2.24+4-[.EN QS;tJS: NEXT 60L0 OVER F: INK 7: PLOT OX.OY:
UOO OS <N) =0$ (N) +DS+STRS [D) + " " ; N FOR N=l TO (S(OB)*2) STEP 2: D
1110 GOTO 910 2010 LET R=0: GOSUB 6060: LET C RAW 0<OB.N)*CY-0(OB.N+1)»CX,0(0
1120 FOR K=l TO 4:PCOPY K+4 TO U-2 B,N)*CX+0(OB,N+l)*CY: NEXT N
K:NEXT:CLS 2020 PRINT INVERSE 1 AT CU, 29; ;
6014 OVER 0: INK 4: RETURN
1130 PMODE 4,1:SCREEN 1.0 CHRS 144: FOR N=l TO 10: NEXT N 6020 LET R=R+(2* <Z=65) )-{2«{Z-7
1140 GOSUB 310 : PRINT INVERSE 1 AT CU, 29;"
"
;
2)]: IF H>360 THEN LET R=0
1150 X-126:Y-96:RT-0 2030 LET KS-TNKEYS LET CU=CU-2 :
6030 IF EKO THEN LET R-360-R
6060 LET A=R«(PI/180) l.ET CY = S
1160 IF X<3 THEN X=3 * (KS="7")*{CU>2) )+2*
t ( (KS="6 ) ( (
:
20 GOSUB 7000: PRINT INVERSE F-l: GOSUB 6010: GOTO 0060 N: PRINT AT 0,25;"HENU": RETURN
1 ATj2.23:"[1]AMB";AT 3.23;"[ 20BQ LET F-l: GOSUB 6010: LET O
2]PLAN";AT 4 23 " [ 3 ]MOB" ;AT 5,
;
X=OX+2* (Z'56) « [OX< L75) -2« <Z =
(
)
t
1016 LET KS = ".1PBS ": GOSUB 7040 3016 LET R=0: GOSUB 6060: LET O 85 CLS
; INK 3*<Z-74)+2M7>80)+7*(Z-32 X=80 LET OY=80
:
90 SCREEN 0
)
3017 FOR S = l TO S(OB)*2 STEP 2 100 LOCATE 8,5:PRINT"1: PLANEJA
1020 IF Z = 83 THEN INK 4: RETUR 3020 FOR N=l TO 2: GOSUB 7010: R AMBIENTE"
N LET D=D/125: LET O {OB S) =0 (OB , , 110 LOCATE 8,6:PR1NT"2: DESENHA
1075 GOSUB 7010: LET DX=X+D* (D ( ) + ( (D* (-1* (DS»"E")+<DS-"D") ) ) ) R LAYOUT"
5= "D") *SC) -D* (DS="E" *SC) LET
(
)
: LET 0<OB.S+l)=OtOB,S+l)+(lD*(- 120 LOCATE 8,7: PRINT" 3: DESENHA
DY=Y+D* (DS-"C" "SC) -D" (DS="B
(
)
{ 1MDS = "B") + (DS = "C"))>) R MOBÍLIA"
")*SO GOSUB 7010 : 3030 NEXT N 130 LOCATE B,8:PRINT"4: GRAVAR
1030 LET DX=DX+D* (DS="D") *SC) ( 3040 NEXT S PROJETO"
DM(DS = "E")*SC) LET DY=DY+D* ( : ( 3050 LET F=l: GOSUB 6010: INPUT 140 LOCATE 8,9:PRINT"5: CARREGA
DS="C") *SC) -D* ÍD3="B") *SC) ( "ESTA CORRETO (S/N) ?";SS: IF R PROJETO"
1032 IF DXM75 OR DX<0 OR DY>1/ SS="N" THEN GOSUB 6010: FOR N= 150 LOCATE 8,10:PRINT"6: IMPRIM
5 OR DY<0 THEN PRINT FLAKH l; 1 TO S(OB)*2+l: LET O(OB,N)=0: IR PROJETO"
AT 7.23; "ERRO" PAUSE 100: GOTO : NEXT N GOTO 3012 :
160 LOCATE 8,11:PRINT"7: TERMIN
, ) (
,
31 APLICAÇÕES 31
200 IF N-l THEN Fl-l 650 IF DS(A)-"B*' THEN YM"YM+D (A 1100 O$(N)=0S(N)+DS+MIDS(STRS(D
i"
210 ON N GOTO 350,1120,830,1700 ) ) .2)+"
380 IF LE<3 OR L£>100 THEN 350 820 D5 ( 2 =" " GOTO 600 )
:
No artigo da página 1356. vimos co- 50 GOSUB 1000 1130 YC = VC + .68 * S:XC - XC
mo obter imagens fascinantes por meio 60 GOTO 60 + 1.19 * S:S - S * 3lC - C + li
de programas recursivos muito simples. 1000 S=S/3:IF S<1 THEN S=S*3:RE RETURN
Essas imagens, também denominadas fi-
TURN
1010 IF C-2 THEN COLOR 4 ELSE I
guras fractais, são geradas matematica-
F C=l THEN COLOR 2 ELSE COLOR C
mente na fronteira entre o que chama- 1020 DRAWBIT + STRS (INT (XC+S2*S* 10 SCREEN 2
mos de regular e irregular. SIN (-AN) ) +" "+STRS (INT (YC-S2*S
)
.
20 AN=2*ATN{1)/3:S2=2/SQR[3)
Com a técnica fractal podemos con- •COS(-AN) :F0R K-0 TO 8*ATN[1)
) ) 30 XC=127:YC=95:S=135:C=4
seguir formas muito mais próximas das -AN STEP 2* AN 50 GOSUB 1000
observadas na natureza que com os mo- 1030 LINE - (XC+2*S-SIN(K) YC-2* ,
60 GOTO 60
delos construídos a partir da ciência tra- S*COS[K)) ,PSET 1000 S-S/3:IF S<1 THEN S=S*3:RL
dicional. Mostraremos aqui como fazer 1040 LINE - (XC+S2*S*SIN(K+AN) ,Y TURN
C-S2*S*COS (K+AN) PSET 1010 1F C=2 THEN COLOR 8 ELSE I
simulações desse (ipo no seu micro. ) ,
/ SQR (3)
.
: S
)-AN STEP 2*AN 4 1120 YC=YC-1 36*S :GOSUB 1000
.
1030 DRAW XC+2*S*SIN (K) -PEEK 2 1130 YC=YC+ -68*S :XC=XC+1 19*S:
50 GOSUB 1000 .
D
10 PMODE 4 1 PCLS SCP.EEN 1,1
, : :
70 C(K.G.l) -
80
FN R (0) - H + (C
<K,F,1) + C(K + l.F. 1) ) / 2
HPLOT C(K.F.O) ,C(K,F,1) TO
C(K + l.F.O) ,C(K + 1,F,1)
ma. A linha 50 inicializa dois laços: um
para desenhar os triângulos horizontal-
mente na tela, e outro para colocá-los
mais acima.
20 DIM C(200.1.1) :F-0:G-1:C(0.0 90 HPLOT TO C(K.G.O) .CtK.G.l)
,1)-150:C(0, 0,01-10 : HPLOT TO C(K.F.O) ,C(K,F,1) O vértice de cada triângulo é especi-
30 S-80 L-230/S H*"L/SQ.R (3) :DEFF
: 100 NEXT :F-1-F:G-1-F: ficado nas linhas 60 (coordenada X) e
70 (coordenada Y). A tinha 80 move o
:
NB(X)-3-BND(0)*6 NEXT
I 40 FOR K-l TO S:C(K,0,0)-C{0.0. 110 GOTO 110 cursor para o canto esquerdo do triân-
IIIIIIIIIIIHBI OGSAMAÇÃOB IHHIIIIIIIII
guio e desenha sua base. No programa 165 PRINT A3 590 FOR E-) TO JM
para o Speetrum, os PEEK sublraidos 170 IF F-0 OR AS="N" TtiEN 595 IF P-l THEN LET E=JM
das coordenadas asseguram que os pon- GOSUB 230 NEXT RETURN
E:
tos não caiam fora da leia, o que pro- ião FOR K-2 TO cy+i 600 LET TX=X(P) LET TY=Y(P) :
vocaria uma interrupção do programa 190 LET P-K-l 610 LET BX-X(P-l): LET BY-Y(P-
200 LET X(P)=T(K): LET Y(P)=U(
ao se tentar executar o DRAW. Na li-
K) 620 LET DX=TX-BX: LET DY=TY-BY
nha 90, o DRAW é diredonado para o 210 NEXT K 630 FOR F=2 TO GN+1
vértice do triângulo e depois para o can-
220 RETURN 640 LET X(P)=DX»V(F)-DY*W(F)+
to esquerdo (o início). A linha 100 com- 230 INPUT "No DE VÉRTICES ";VT
pleta o primeiro laço. Este desenha uma 240 FOR L-2 TO VT+1 650 LET Y(P)=DY*V(F)+DX*W(F)^
fileira de triângulos e, após redefinir al- 250 INPUT "VÉRTICE ";(L-1);"=" B¥
gumas variáveis, de maneira a deslocar •
X, Y 660 LET p'P*.l
a fileira um pouco mais para cima, re- 260 LET T(L)-X*B5: LET U(L)=y» 6/0 NEXT F
começa a construção da montanha. Na B5 6ff0 LET X(P)-TX: LET Y(P)»TY
versão para o Spectrum, o programa
270 IF L-2 THEN PLOT INT (127 f.'j0 LET J(CL)*E: LET Ct. = CL + l :
gens diferentes. Mas, lembre-se, essa va- 305 PRINT AS ) ,XG(20) ,YG(20) .J(S0)
riação atinge apenas o tamanho, a po- 310 TF AS="N" THEN LET CV=VT- 20 PMODE 4.1:COLOR 0,1:PCLS:CLS
sição e outros detalhes, mas não a for-
PAUSE 0 RETURN :
30 GOSUB 140
370 LET CV-VT+1: LET T(CV+1)=T 40 GOSUB 350
ma geralda figura. (2) : LET U(CV41)=>U(2) 50 INPUT"NO.DE NÍVEIS DE RECURS
O próximo programa permite que vo- 330 DRAW 127+T(CV)-PEEK 23677. AO - " NR NR= INT (NR IF NR<1 THE
; : ) :
(al. Ogrande número dc sub-rotinas re- 350 CLS IF F*0 THEN : GOTO 70 LINE "(12 7+X (P) ,96-Y(P) PRE ) .
50 INPUT "No DE NÍVEIS DE REC 11 NT (Y))M THEN GOTO 440 210 NEXT
URSAO " NR IF ABS (INT (NR)
; : 460 LET V(M)=X: LET U (M) -Y 220 RETURN
<1 THEN COTO 50 LET X=X*85+85: LET Y-85+Y*8S: 230 INPUT"N0.DE VÉRTICES NA FOR
60 LET F-l: LET N-0 CLS : DRAW X-PEEK 23677, Y-PEEK 23678 ME INICIAL " VT VT-INT (VT) IF V ; : :
THEN GOTO 90 <JH^H 505 IF NRON THEN GOSUB 570 260 XT(L)=X*95:YT(L)~Y*95
100 PR I NT |1;"S PARA SAIR GUA , 510 RETURN 270 IF L-=l THEN LINE -(127+XTf.L
LQUER OUTRA P/ CONTINUAR" 520 FOR W=l TO GN+l ) 96- YT L PRESET ELSE LINE -(
( ) ) .
110 LET AS- INKEYS IF AS*"" - ^Bm.E^*=P-1 'ji jâ^H 127+XT(L) ,96-YT{L) ,PSET )
THEN GOTO 110 540 IF WSS X(P)>127 OR ABS Y!P 280 NEXT
170 IF ASO-S" THEN GOTO 25 )>fl5 THEN GOTO 560 290 PRINT-CURVA FECHADA (S/N)?";
130 CLS STOP
i 550 DRAW 127+X (P) -PEEK 23677, 300 AS=INKEYS:IF AS<>"N" AND AS
140 IF F-0 TH EH GOTO 170 35+YÍPIPEEK 23678 <>"S" THEN 300 ELSE PRINT AS
150 PR INT "MESMA FORMA INICIAL 560 NEXT U- RETURN 310 IF AS="N" THENCV-VT:GOSUB 7
(S/N) 7 '; 5/0 LET N--N + 1 -Jtt^tBm L 30 : RETURN
160 LET AS=INKEYS : IF ASO"S" 580 IF N=l THEN LET JM-CV-I 320 CV=VT-U tXT(CV) =XT(1) lYT (CV)
AND AâO-N" THEN GOTO 160 5B5 IF NOl THEN LET JM=GN + 1
IIIIIIIIIIIIIH
330 LINE -
í 1 2 7 + XT (CV) 96- YT (CV) , 80 GOSUB 500: IF P > 0 THEN 80 457 HGR2 : BCOLOR= 3: HPLOT 80
,PSET:GOSUB 730 90 GET AS
340 RETURN 100 TEXT HOME PRINT "<S> P
: :
458 FOR M = 1 TO GN
350 PCLS:IF F=0 THEN 380 ARA SAIR E QUALQUER OUTRA PARA 460 X = XG(M) * 95 + 80:Y = 96
360 PPINT"MESMO GERADOR {S/N) ? CON-TINUAR" - YG (M) * 95: HPLOT TO X ,
480 LINE - (175, 96) , PSET: GOSUB 73 240 FOR L = 1 TO VT 590 FOR J = 1 TO JM
0 250 PRINT "VÉRTICE "jL:: INPUT 600 TX = X(P) :TY - Y(P)
490 RETURN
" - " :X,Y: IF ABS (X) > 1 OR 610 BX - X(P - 1):BY - Y(P - 1)
500 IF NR=N GOSUB 520 ELSE GOSU ABS Y) > 1 THEN 250
<
580 IF N'l THEN JM-CV-1 ELSE JM 300 IF L = 1 THEN HCOLOR= 3: B 500:CL - CL - 1:J = J (CL)
-GN+1 HPLOT 127 + XT(L),96 - YT(L) 700 NEXT J
590 FOR J-l TO JM 302 IF L < > 1 THEN HCOLOR- 710 N - N - 1
600 TX=X(P) :TY=Y{P) 3: HPLOT TO 127 + XT(L),96 - Y 730 FOR T = 1 TO 1000: NEXT
610 BX=X(P-1) :BY-Y(P-1) T(L) 740 RETURN
620 DX=TX-BX:DY=TY-BY 307 NEXT
630 FOR E=l TO GN 310 IF AS - "N" THEN CV - VT
640 X(P) -DX"XC(E) -DY*YG(E) +BX GOSUB 7 30: RETURN
650 Y(P)-DY*XG[E)+DX*YG(E)+BY 320 CV - VT + 1 :XT (CV) - XT (1) : 5 CLS
660 P=P+^J\ * YT(CV) = YT(1) 10 DIM X<50) ,Y(50) ,XT(10) ,YT(1(>
670 NEXT 330 HPLOT TO 127 + XT(CV) ,96 ) ,XG(20) ,YG(20) ,J(50)
630 X(P)»TX:Y(P)-TY - YT(CV) GOSUB 730 : 20 SCREEN 0
690 J (CL) = J CL=CL+1 GOSUB 500:C
: : 34 0 RETURN 30 GOSUB 1.40
L-Cl-1 iJ«J (CL) 350 IF F = 0 THEN 380 40 GOSUB 350
700 NEXT J 360 TEXT HOME PRINT "MESMO
: : 50 SCREEN 0: INPUT "QUANTOS NÍVE
710 N=N-1 GERADOR? (S/N) " IS DE RECURSAO " NR T NR= INT (NR)
;
720 RETURN 370 GET AS: IF AS < > "S" AND IF NR<1 THEN 50
730 AS=INKEYS: SCREEN 1.0:K=10Q0 AS < > "N" THEN 370 60 F=l N=0 SCREEN 2
: :
50 TEXT HOME
: INPUT "QUANTO
: 440 PRINT "VÉRTICE ";M;" DO GE INICIAL? (S/N) "
S NÍVEIS DE RECURSAO " NR NR - : : RADOR" INPUT " - " XG (M) YG <M
: : ; . 160 AS=INKEYS:IF AS<>"5" AND AS
INT (NR) IF NR < 1 THEN 50
: ) <>"N" THEN L60 ELSE PR TNT AS
60 F - N - 0
: HGR2 : 450 IF ABS IXG(M)) > 1 OR AB 170 IF F=0 OR A3="N" THEN GOSUB
,70 HCOLOR= 3: HPLOT 127 + X(P) S (YG (M) ) > 1 THEN 440 230
I .96 - YIP) 455 NEXT 180 FOR K-l TO CV
; L U "
IIIIIIIIIIIHH llllllll
730 AS=INKEY5:K=1000
740 K=K-J:IF K>0 AND f NKEYS="
THEN 740
750 RETURN
650 X (P) =DY*XG (E) +T)X*YG (E) +BY o número de vértices do gerador e defi-
H? (3/N) " na as coordenadas: 0.2 e 0 para o vérti-
370 AS=INKEYS:IF AS<>"S" AND AS 660 P=P+1 ce 1; 0.4 e 0.8 para o vértice 2; 0.6 e 0
<>"N" THEN 370 ELSE PRINT AS 670 NEXT
380 IF F=0 OR AS="N" THEN GOSUB 680 X (P) =TX: Y (P) =TY para o vértice 3. Esses dados definem a
400 690 J(CL)=J:CL=CL + l:GOStJB 500:C imagem de um triângulo sem base sobre
390 RETURN L=CL-1 J»J(Ct)
:
uma linha. Por fim, introduza o valor
400 INPUT"QUANTOS VÉRTICES NO G 700 NEXT J 5 para o nível de recursão (3 para o Ap-
ERADOR NAO INCLUINDO AS EXTREMI 710 N-N-l ple) e observe a geração da figura
DADES (0,0) E (1.0)";GN 720 RE TU RN fractal.
IIIIIIIIIIIHH llllllllll
A manipulação dos bits individuais de um
byte de memória por meio de comandos
do BASIC parece uma tarefa impossível.
Mas não é: aprenda os truques de
programação necessários para isso.
O byte é a unidade básica de memória bólicas dentro de um programa em BA- Para desligar:
usada em microcomputadores. Os diver- SIC; POKE nos dá acesso direto às
sos comandos da linguagem BASIC tra- locações absolutas da memória RAM. BS=CHRS CASC(BS) AND NOT 2TBI)
tam o byte como a unidade mínima de in- CHR$(1), por exemplo, define um
formação: os caracteres individuais de byte com o bit menos significativo igua-
uma cadeia alfanumérica, por exemplo, lado a I, e todos os outros igualados a
podem ser isolados e processados indivi- 0: 0000001 em binário. CHRS(2) gera
dualmentecom comandos do tipo MID$, um byte com os dois bits menos signifi- Para ligar:
LEFT$, KM, HIV LEFTSS, CHRS, ASC cativos igualados a I: 0000001 1.
B$=CHRS(ASC(BS) OR 2"BÍ)
etc Cada caractere ocupa um byte. Os va- CHRS<3> define o byte 00000010 e as-
lores numéricos, por sua vez, em geral sim por diante. Com o auxílio de uma
ocupam dois ou mais bytes, dependen- tabela de correspondência entre núme- BS-CHRS {ASC (BS) AND NOT 2~BÍ)
do de sua precisão (sobre a armazenagem ros decimais de 0 a 255 e os binários
de números, veja o artigo da página 894). equivalentes, pode-se produzir qualquer Observe que, com exceção dos mi-
Usando os comandos VARPTR, PEEK padrão de bits ligados e desligados. cros da linha Sinclair, que não têm va-
e POKE, temos acesso individual aos Para converter o padrão de bits em riáveis inteiras, usamos a notação B%
bytes onde variáveis, vídeo, teclado etc. um número decimal, devemos conside- para indicar que esse valor deve ser in-
estão armazenados. rar cada bit como o índice de uma po- teiro. Isso ajuda a evitar erros de cál-
tência de 2 e somar o resultado. Supo- culo, caso B seja um bil real de preci-
nhamos um byte com os bits 0, 3 e 4 são simples.
Para tornar o bit B de um byte igual
a I usamos o operador lógico OR. Su-
,
Existe, porém, uma unidade de infor- 00001101 ponhamos que você queira igualar a 1
mação menor que o byte. Essa unidade o bit número 7 (o mais significativo) de
è o bit (binary digit, ou dígito binário, um byte igual a 0000101 1. Teremos, en-
O número decimal correspondente é:
em que corresponde aos dígitos
inglês), tão, a operação, em decimal:
0 e que todo computador digital usa
I
2* + 23 + 2 o m 16 + 8 + 1 = 25 7
como base de representação numérica. 25 OR 2 = 25 OR 128
Cada byte tem oito bits, numerados de Eis algumas expressões úteis para li-
0 (o bit menos significativo) a 7 (o bit gar ou desligar só o bit B de um byte ar- o que, em binário, dá:
mais significativo). mazenado em um caractere BS:
Muitas vezes, surge a necessidade de
manipular diretamente os bits da memó-
ria. Para isso, convém utilizar uma ro-
lina em linguagem de máquina, que tem Para ligar:
eomandos específicos para o acesso e a Note que OR tem o efeito de operar
manipulação de bits individuais e é mais BS c CHRS(CODE{BS) OR 2**B) individualmente sobre cada par de bits
.
rio
bit
10001011
7 a 0, teria:
em 00001011, igualando o
MSJ El
Rt - ASC(BS) AND 2'Bt
COMBINAÇÃO DE BITS
que e a mesma coisa que:
É possível ligar uma combinação de Rt - It AND I~Bt
bits em uma variável literal ou inteira.
Para isso, usa-se uma expressão de so- operação AND isola apenas o va-
A
lor do bit mascarado pelo byte igual a
00001011 ma dos expoentes de 2 correspondentes
a cada bit a ser ligado, combinados por 2 B Por exemplo: qual é o valor do bit
.
Pode ser que, em vez de trabalhar operações OR. Para ligar os bits 3 e 5 número 6 do byte 0100101 1?
com bytes armazenados em caracteres li- do byte em TS, faça:
terais, você queira manipular os bits in-
dividuais de um número inteiro — que,
na maioria dos micros, é armazenado 01000000
em dois bytes contíguos, em um lotai de
dezesseis bits. Nesse caso, use as expres- TS - CHRSt<2**3) OR (2**5) que equivale a 89 64, cujo resul-AND
sões apresentadas a seguir. Mas lembre- tado é 64 em decimal.
sede que alguns computadores, como
o ZX-81, podem armazenar de forma
diferente um número inteiro.
QD
TS - CHRS{(Zt3) OR (2T5))
Como o número resultante dessa ope-
ração é maior do que 0, o resultado é
verdadeiro. Se fosse igual a 0, leríamos
então um resultado falso.
Para transformar o resultado R em
valor fazemos:
1 ,
Rt - ABS[Rt>(2 1 Bí - II)
Para ligar:
It - It OR 2"Bt
Para desligar:
110 PRINT "ENTRE UM NUMERO EN-
TRE 0 E 255)
II - It AND NOT 2"Bt 120 INPUT N
R - CODE (BS) AND 2**B
Essas expressões funcionam com um 130 LET NS-CHRSCN)
conjunto de dezesseis bits ou — seja, se
140
150
FOR 1-0 TO 7
PRINT "BIT "íli" - "j
quisermos ligar o bit 13 do byte \°ltt, fa-
160 LET C-ASCÍNS) AND 2**1
remos a operação: 170 IF C THEN PRINT "SIM"
R - ASC {BS> AND 2**B 180 IF NOT C THEN PRINT "NAO"
190 NEXT I
It
A
- It OS 9192*
expressão AND NOT desliga o
QQ
Rt - ASC IBS) AND 2TB*
B-ésimo bit de I^o. O programa para o ZX-81 é o mes-
Os micros ZX-81 e Spectrum não po- OU mo do Spectrum, com esta alteração:
dem utilizar essas expressões, já que não
têm variáveis inteiras. Todos os outros. Rt - II AND 2TBI 160 LET C=CODE(N3) AND 2**1
IIIIIIIIIIIHH lllllllll
DD 50 INPUT "NUMERO DE BITS NA CAD
EIA ";N
60 IF N>255 THEN 50
70 MS^STRINGSIINTtN/SJ+l.O)
110 PHINT "ENTRE UM NUMERO EN-
TRE 0 E 255)
Para ligar, desligar e testar um bit
120 INPUT Nt
130 NS=CHRS INI) qualquer do conjunto total de N, preci-
140 FOR 11=0 TO 7 saremos de algumas funções poderosas:
150 PRINT "BIT ";It;" - FNLS. FNDS e FNTS.
160 Ci'ASC(NSl AND 2 711 Essas funções são bastante comple-
170 IF C* THEN PRINT "SIM" xas, mas muito rápidas. Procure anali-
160 IF NOT Cl THEN PRINT "NAO" sá-las passo a passo para entender
Qual é a vantagem de empregar ca-
o que
190 NEXT H elas executam:
deias alfanuméricas, em vez de conjun-
tos numéricos, para armazenar grupos
de bits?
Como vimos no artigo Armazena-
gem tíe Programas Ipágina 1001), aca-
deia alfanumérica é armazenada na me-
O programa para o MSX e o Apple 20 DEF FNLS(B)-mS(TO INTÍb/8)) mória do microcomputador na forma de
é igual ao anterior, com a modificação: +CHRS(ASC(niS(INTÍb/8)+l)) OR 2 uma sequência contígua de bytes, ca-
**{b-INT<b/8)*S))+pS(INT(b/8)+2 da qual ocupado por um caractere O
TO) primeiro byte da seqúéocia sempre in-
160 Cl-ASC(NS) AND 2"IÍ 30 DEF FND$(b)-ioS(TO INT(b/8)) dica número de caracteres da variá-
+CHR5(ASC(n)$(INT(B/8)+l)) AND Esse número é "lido"
vel literal \string).
NOT 2**(b-INT(b/8)*8))+mS(INT por intermédio da função LEN, não ha-
b/B)+2 TO) vendo, no BASIC (como ocorre em ou
40 DEF FNT(b)-ABS((A5C(m$(INT tras liguagensl, um byte encarregado
Alé agora, vimos como manipular os (b/8)+l)) AND 2**{b-INT(b/8)* de indicar ao interpretador onde termi-
bits de um único byte ou conjunto de 8) )<>0)
dois bytes. Como uma cadeia alfanumé- A vantagem de empregar cadeias al-
rica contém até 255 caracteres, podemos
manipular um conjunto muito maior de
bits (um máximo de 8 x 255, ou 2040
bits). Esse conjunto é chamado de ca-
DD
20 DEF FNLS (B) =LEFT3 (MS INT (B/8
fanuméricas decorre rustamente desse
sistema de armazenagem usado pelo
interpretador BASIC.
A disposição sequencial dos bytes
,
na memória facilita enormemente a
deia de mapeamento de bits (bit- ) ) +CHR3 (ASC (MID3 (MS INT (B/8) +1
.
programação de rotinas de acesso aos
mapsrring), e tem muitas aplicações em 1)) OR 2T (B-INTÍB/8) *8) ) +MID$ (M bits individuais de uma longa cadeia.
jogos, bancos de dados e outros progra- S.INT(B/8)+2) Um string de por exemplo,
trinta bytes,
mas de carátcr profissional. 30 DEF FNDS (B) «LEFTS (MS INT (B/8
) +CHRS (ASC (MIDS (MS
,
equivale a uma cadeia ininterrupta de
Por exemplo, é possível armazenar ) INT (B/8) +1
.
240 bits, que podem ser lidos ou mo-
em uma cadeia desse tipo condições D) AND NOT 2T{B-INT(B/8)*8))+M dificados um a um. ou em grupos que
IDS (MS. INT (B/8) +2) se sobreponham aos limites entre
sim/não ou verdadeiro/falso. Se um bit 40 DEF FNT (B) "ABS (ASC (MIDS (MS
(
em determinada posição dessa cadeia es- bytes. Isso é muito mais difícil de ser
INT(B/8)+l)) AND 2 T (B-INT (B/8) feito quando a variável contém elemen-
tiver ligado, temos uma condição sim, aiioo) tos separados, como é o caso dos con-
ou verdadeira; se estiver desligado, uma
juntos numéricos.
condição não. ou falsa. Por fim, acrescentamos o restante do
Ocomprimento da cadeia depende- programa de demonstração das funções
rá do número de condições tflag bits ou de manipulação e consulta de bits:
bits indicadores) que queremos incluir. No desenvolvimento de jogos, por
Se o número de condições for N, o nú- exemplo, a possibilidade de manipular
mero de bytes da cadeia será: iDDWj bits amplia bastante as alternativas do
programador. Entre outras coisas, vo-
L = INT (N/B) +1
200 PRINT " PROGRAMA DE DEM0NSTR cê poderá modificar os gráficos impres-
Para inicializar um mapa MS, zera- ACAO DE MAPAS DE BITS" sos no video alterando diretamente as
mos todos os bits: 210 INPUT "(DIGA (D) ESLIGA (T) locuções de memória.
ESTA (F)IM ";OP$ Os recursos dc programação aqui
230 IF OPS-"F" THEN STOP
examinados também serão úteis quan-
240 INPUT "NUMERO DO BIT {0 A "
do for necessário comprimir texto, em
|M| ") " ;B
260 IF B>N THEN GOTO 240 função de limilaçòes da memória. Na sé-
45 CLS 270 IF 0PS-"L" THEN M$-FNLS (B) rie de artigos sobre o assunto, que ini-
50 INPUT "NUMERO DE BITS NA CAD 280 IF OPS-*D" THEN MS "FNDS (B) ciamos na página 1332, apresentamos
EIA *;n 290 IF OPS-"T" THEN PRINT "BIT diversos algoritmos interessantes para a
60 IF n>255 THEN GOTO 50 ";B," • " FNT (B)
; redução do espaço ocupado por um tex-
70 FOR 1-1
TO INT(n/8)+l 310 GOTO 210
80 LET mS-mS+CHRS<0) to em até 50%. A maioria desses algo-
90 NEXT i ritmos procura colocar dois ou mais có-
digos de caracteres em um único byte.
mm
<Pa\iXtdiU/
COMANDOS OE CONTROLE
Os programas maissimples de
processamento são os editores de
texto, com as funções básicas de in-
serção e modificação. Um
editor se
transforma em um processador de pa-
lavras com o acréscimo de diversas ou-
tras funções, que podem ser utilizadas
pelo usuário no momento em que neces-
sitar. A
maneira de ativar essas funções
varia de programa para programa, e é
um elemento importante na ergonomia
(facilidade de uso) do processador.
As diretivas de controle dos recursos I
do programa são entradas pelo teclado,
num processo tão fácil quanto o da en-
trada de texto. Os comandos funcionais
consistem normalmente de teclas espe-
ciais,ou sequências de teclas. Entre as
mais comuns, incluem-se as de retroces-
so, as de controle dos cursores, <EN-
TER> etc. Bons comandos de edição
são essenciais para facilitar o uso
do programa. Em alguns casos,
as sequências de comando são
muito complicadas e difíceis
COMPLETE O DESENHO
DO AMBIENTE
CRIE NOVAS PEÇAS PA RA GIRE SEUS MÓVEIS
SUA MOBÍLIA APAGUE E REDESENHE
GRAVE O PROJETO PROGRAMA TERMINADO
32 APUCAÇÕCS 32 llllllll
miiiin
- opção 5, carrega; camente, teremos que fornecer ao mi- últimas, já que as iniciais são automati-
- opção imprime;
6, cro duas informações, ou seja, o quan- camente definidas (mas podem ser alte-
- opção7, sai do programa. to ela deverá se deslocar para cima ou radas) no programa: O-pia, 1-fogão,
Se escolhermos a opção 1seremos
, para baixo e o quanto deverá ir para a 2-mesa, 3-geladeira e 4-armário. Para
perguntados sobre a maior medida do direita ou a esquerda. A repetição das apagar um móvel, posicione o cursor no
ambiente. Com essa informação, o mi- questões nos permite, portanto, montar vértice que o gerou, tecle D e selecione
cro colocará o desenho em escala, de coordenadas bidirecionais para a nossa o número desse móvel. Deveremos nos
modo que ele caiba na tela. reta e traçá-la na diagonal. certificar de que o cursor esteja exata-
Tecle a barra.de espaço para iniciar Para obter retas horizontais ou ver- mente no vértice que o gerou; caso con-
o desenho do ambiente. Há outras op- ticais (unidirecionais), bastará teclar trário, a peça não será totalmente eli-
ções dentro da opção 1, a saber: < ENTER > quando a pergunta for re-
,
minada.
<ESPAÇO> para desenhar; petida. Tecle <C>
para apagar a tela Se quisermos girar um móvel para
<B> para mover sem desenhar; e <F> para voltar ao menu principal. adequá-lo a um canto qualquer do am-
<W> para desenhar janelas; A opção 2 mantém na tela o desenho biente, basta acionar a tecla R seguido
<0> para desenhar portas; do ambiente executado na primeira op- do ângulo de giro do móvel —
expresso
<C> para limpar a tela; ção e acrescenta um cursor em forma de em graus. Todos os objetos serão dese-
<F> para voltar ao menu inicial. cruz que será movimentado ponto a nhados com essa angulação até que se
Ao escolher uma das opções (à exce- ponto através das teclas das setas. Para tecle novamente R; só que desta vez se-
ção da < C > e da < F > ), o usuário se- movê-lo mais rapidamente, tecle guido de 0. A opção < F> possibilita
rá indagado sobre a direção e o compri- < SHIFT > + seta, até alcançar a posi- retornar ao meu principal.
mento da reta desejada. Essas pergun- ção desejada — aquela em que o móvel A opção 3 permite definir novas pe-
tas serão feitas várias vezes, a fim de será colocado. Em
seguida, acione a te- ças ou modificar as cinco já existentes.
oferecer dados ao computador. cla P. Feito isso, escolha a peça a ser po- As medidas, fornecidas em centímetros,
Suponhamos que queremos traçar sicionada. As peças são numeradas de não deverão ultrapassar os 200 cm. O
uma reta inclinada, por exemplo. Basi- 0 a 9; caberá ao usuário criar as cinco primeiro passo consiste em escolher um
Hm 'J
i
número de 0 a 9 para armazenagem da 1370 COLOR 0:G0SUB 340
peça que, em seguida, será desenhada 1380 I9-INKEY$:IF IS<"0" OR I$>
pelo mesmo processo utilizado na opção "9" THEN 1380 1690 X-Xl Y"Y1 RETURN
: :
I (desenho do ambiente). Tecle <C> 1390 COLOR 1:G0SUB 340 1700 CLS:LINE INPUT"NOME DO ARQ
para recomeçar o desenho e < F > para 1400 N-VAL(IS) UIVO:-.FS
1410 COLOR 0,1:AS-OS(N) :GOSUB 1 1710 SG-PEEK(188)»256
retornar ao menu inicial.
540 1720 CLS:PRINT-SALVANDO:";FS
A opção 4 armazena nosso projeto 1420 GOTO 1160 1730 CSAUEM FS SG SG+6143 35252
. , ,
(que deve receber um nome aqui) em fi- 1430 SOUND 200, 1 1740 GOTO 90
ta ou disco. A opção 5 carrega na me- 1440 COLOR 0:GOSUB 340 1750 CLS:LINE INPUT "NOME DO AR
mória do micro um projeto previamen- 1450 IS-INKEYS--IF IS<"0" OR IS> QUIUO:";FS
te gravado em fita ou disco. "9" THEN 1450 1760 PRINT"ACIONE O GRAVADOR E
A opção de impressão está incomple- 1460 COLOR 1:G0SUB 340 ESPERE"
ta, pois necessita de uma rotina que des- 1470 N-VAL(IS) 17 70 CLOADM F3
peje o conteúdo da tela na impressora. 1480 COLOR 1.1:AS-0S(N) :GOSUB 1 1780 GOTO 90
540 1790 REM ***********•*•«•*****
Retomaremos este assunto em um pró-
1490 GOTO 1160 1791 REM * *
ximo artigo, que nos habilitará a elabo- 1500 CLS:PRINT'ANGULO DE ROTACA 1792 REM ROTINA PARA *
rar tal rotina. 1793 REM * DESPEJAR A TELA
O (0-360) ':INPUT RT *
1510 IF RT<0 OR RT>360 THEN 150 1794 REM * NA IMPRESSORA *
J210 0X-X:0Y-Y 0 1795 REM * *
1220 IF IS-CHR$(8) AND X>0 THEN 1520 RT-(RT/180)*3.141 1796 REM *******•«•*«****«««•**
X-X-l 1530 SCREEN 1,0: GOTO 1160 1797 GOTO 90
1230 IF IS-CHBS (9) AND X<185 TH 1540 IF A$-"" THEN RETURN
EN X-X+l 1550 P=1:X1-X:Y1=Y
1240 IF IS-CHBS £94) AND Y>0 THE 1560 BS-MIDS(AS,P,1)
N Y-Y-l 1570 DS-MIDS(A$,P+1,1)
1250 IF IS-CHRS(IO) AND Y<185 T 1580 D-VAL(MIDS(A$.P+2.INSTR(P, Ao rodarmos o programa, veremos
HEN Y-Y+l AS.";")-(P+2))) na tela um menu com sete opções:
1260 IF IS-CHRSI21) AND X>7 THE 1590 P-INSTRÍP.AS,";")-»-! - opção I, desenha o ambiente;
N X-X-8 1600 D-D/100:D2-FNA(D) :OX-X:OY-
1270 IF IS-CHRS193) AND X<177 T Y
- opção 2, posiciona a mobília;
HEN X-X+8 1610 IF D$-"D" THEN XA-D2"COS (R - opção 3, cria novas peças;
1280 IF IS-CHRS<95) AND Y>7 THE T) :YA— D2*SIN(RT) - opção 4, grava o projeto;
N Y-Y-8 1620 IF D$-"E" THEN XA— D2"COS (
- opção 5, carrega;
1290 IF IS-CHRSÍ91) AND Y<177 T RT) :YA-D2*SIN(RT) - opção 6, imprime;
HEN Y-Y+8 1630 IF DS-"B" THEN XA-D2*SIN(R - opção 7, sai do programa.
1300 PUT(OX-3.0Y-3)-(OX+3,OY+3) T) :YA-D2*C0S(RT) Devemos primeiro escolher entre as
.S.PSET —
1640 IF DS-"C" THEN XA D2*SIN( opções 1 , 3 ou 5 Ao decidirmos pela 1
RT) :YA— D2*COS(RT)
.
para baixo e o quanto deverá ir para a ta, pois necessita de uma rolina que des- )
direita ou a esquerda. A repetição das peje o conteúdo da tela na impressora. 1660 X-X+XA:Y-Y+YA
questões permite, portanto, montar Retomaremos esse assunto em um pró- 1670 IFBS--D" THENLINE(OX.OY)-<
coordenadas bidirecionais para nossa re- ximo artigo, que nos habilitará a elabo- X Y) CL , ,
petida. Tecle <C> para apagar a tela 1230 IF I$-CHRS(28)AND X<185THE 1710 LOCATE 5,20:PRINT"GRAVANDO
e <F> para voltar ao menu principal. N X=X+1 "+FS+" ..."
Aopção 2 só poderá ser iniciada de- 1240 IF IS=CHBS(30> AND Y>0 THE 1720 BSAVE "CAS:" + FS,i.HD100,».HE
pois da opção 1. Ela mantém na tela o N Y-Y-l 900
1250 IF IS-CHB3(31)AND Y<1B5THE 1730 GOTO 90
desenho do ambiente executado na pri-
meira opção e acrescenta um cursor em
N Y-Y+l 1750 LOCATE 5.20:LINE INPUT"NOM
1260 IF IS=CHRS(74) AND X>7 THE E DO PROJETO: " ;F3
forma de seta que será movimentado n x-x-e 1760 LOCATE 5,22: PRINT"CABREGAN
ponto a ponto através das teclas das se- 1270 IF IS=CHRS[75)AND X<177THE DO "+FS+".--"
tas. Para movê-lo mais rapidamente, N X-X+8 1770 BLOAD "CAS:"+F$
usamos as teclas I-cima, M-baixo, K- 12B0 IF IS-CHR${73) AND Y>7 THE 1780 Fl-l:GOTO 90
direita e J-esquerda, até que o cursor al- N Y-Y-8 1790 REM ********************
cance a posição desejada —
aquela em 1290 IF IS"CHBS{77)AND Y<177THE 1791 REM • *
*
que a peça será colocada. Então acio- N Y-Y+8 1792 REM * rotina para
namos a tecla P. Feito isso, determina- 1310 IF IS="P" THEN CL=l:GOTO 1 1793 REM • despejar a tela
360 1794 REM * na impressora *
mos a peça a ser posicionada. As peças "
1320 IF IS""D" THEN CL= 15 GOTOl : 1795 REM *
são numeradas de 0 a 9; caberá ao usuá- 1796 REM ********************
430
rio criar as cinco últimas peças, já que 1330 IF IS-"R" THEN A=USfi(0):GO 1797 GOTO 90
as iniciais são automaticamente defini- TO 1500 2000 CLEAR ZDO.S.HAO0O
das (mas podem ser al(eradas) no pro- 1340 IF IS="F" THEN A=USfl(0}:GO 2010 DEFUSR-S.HA000
grama: 0-pia, l-fogào, 2-mesa, 3-gela- TO 90 2015 DEFUSR1-S.HA0OD
deira e 4-armário. Para apagar um mó- 1350 GOTO 1160 2020 DEFUSR2-IHA01A
vel, posicione o cursor no vértice que o 1360 BEEP 2025 DEFUSR3-Í.HA026
1370 GOSUB 340 2030 DEFUSR4=S-HA033
gerou, tecle D e selecione o número cor- 2040 FOR R-0 TO 63 READ A
13B0 I$=INKEY$:IF tS<"0" OR IS> :
respondente a esse móvel. Deveremos "9" THEN 1380 2050 POKE (&.HA000+R) ,A:NEXT
nos certificar de que o cursor esteja exa- 1390 COLOR 0:GOSUB 340 2060 DATA S.H21,D0,00,S.H11.00.Í.H
tamente no vértice que o gerou; caso 1400 COLOR 1:N-VAL(IS) Dl 01 00 24. mCD,l.H59 00 LHC9
, , , , .
contrário, a peça não será totalmente 1410 AS-OS(N) :GOSUB 1540 2070 DATA S.H21 00 &.HD1 S.H1 1 00 , , , , ,
Se quisermos girar um móvel para 1430 BEEP 2080 DATA 1.H21 00 LH20 62 00 01 , . , , .
biente, basta acionar R seguido do ângu- 1450 IS"INKEYS:IF IS<"0" OR IS> 2090 DATA Í.H21.00.00.Í.HU.S.HFF.
"9" THEN 1450 HHB8 .01,00,24, LHCD. kH59 00 S-HC9
lo de giro do móvel, expresso em graus.
. ,
permite retornar ao menu principal. 1500 SCREEN0:PRTNT"ANGULO DE RO 2130 SPS=SPS + CHRS (VAL ("S.H"+AS) )
A opção 3 possibilita definir novas TACÃO (0-360) ";: INPUT RT 2140 NEXT:SPRITES(0)-SPS
peças ou modificar as cinco já existen- 1510 IF RT<0 OR RT>360 THEN 150 2150 GOTO 20
tes. As medidas, fornecidas em centíme- 0 2160 DATA E0 CO .AO .90 08, 00 ,00,
, .
PERSPECTIVA
PONTO DE FUGA E
PONTO DE VISTA
Traga seu desenho para a magia do perspectiva foram formulados. Essas re- ga, situados em uma mesma linha, no
gras são as mesmas usadas pelos artis- horizonte imaginário do desenho.
mundo tridimensional. Isso é possível
tas contemporâneos e aplicadas aos de- Esses princípios, quando aplicados a
graças aos recursos de seu micro senhos feitos no computador. figuras reais, podem se tornar um pou-
aliados aos princípios da perspectiva Para o desenvolvimento dessa técni- co mais complicados; em desenhos sim-
ca, foram necessários vários séculos, o ples, entretanto, proporcionam a sensa-
e das técnicas de sombreamento. que não significa que suas noções bási- ção de profundidade exigida. O leitor já
cas sejam de difícil compreensão. Na deve ter visto, na televisão ou no cine-
A maioria das pessoas sabe da impor- realidade, a idéia fundamental é a se- ma, asironaves voando para o espaço a
tância do uso da perspectiva em qual- guinte: todas as linhas horizontais per- partir do imenso hangar da nave-màe.
quer figura, e, por isso, costuma incluí- manecem nessa posição, enquanto as Nesse caso, a sensação de profundida-
la até nos mais simples esboços. Sur- verticais se inclinam "para dentro" da de é dada pelo chão e pelo teto quadri-
preendentemente, a idéia de perspecti- figura, convergindo para o denomina- culados do hangar, que parecem se pro-
va não é tão clara como parece; assim, do ponlo de fuga. (Esse assunto já foi jetar em direção
ao espaço.
os artistas mais antigos não tinham a abordado no artigo Programação de
menor idéia sobre o que fazer para dar gráficos em 3-D, página 693.)
profundidade às suas telas. Apenas a Apenas as linhas paralelas, perpen- FEIXES DE RETA EM PERSPECTIVA
partir do Renascimento, quando os pin- diculares à figura, se dirigem para o
tores começaram a dar um tom realista ponto de fuga principal. As demais Os de retas perpendiculares são
feixes
as representações, é que os princípios de afluem para seus próprios pontos de fu- muito usados para se obter a visão de
V
IIIIIIIIIHIH "^aHHHHHIIIIIIIIIII
um objeto em perspectiva. O primeiro
programa, mostrado a seguir, desenha
duas superfícies quadriculadas o te- —
to e o chão do hangar tendo o usuá- —
rio do micro como observador, olhan-
do para o infinito.
0 CHAO *;V
40 FOR K=-126 TO 127 STEP 6
50 LET Y=174: LET X=K+V*K: IF
ABS (X)>127+(X<1) THEN LET X
(X)*127-(X<1)
= SGN LET Y = 100 :
+(X-K)«74/(V*K>
60 PLOT 127-K.1O0: DRAW 127-X
-PEEK 23677. Y-PEEK 2367B
70 PLOT 127-K.74: DRAW X27-X-
PEEK 23677. 174-Y-PEEK 23678
Um cenário quadriculado cm perspectiva é um bom recurso
para conferir profundidade a seu desenho.
80 NEXT K
90 LET F-V(l/6): LET Y-F
100 LET Y=Y*F: IF Y>77 THEN 11 + (X - K) * 80 / (V * K> abaixo da metade do vídeo. Se, por ou-
GOTO 140 60 HPLOT 127 - K.lll TO 127 - tro lado, digitarmos o valor 10, o cená-
110 PLOT 0,97+Y: DRAW 25b 0 . X.Y modificações profundas,
rio apresentará
120 PLOT 0,77-Y: DRAW 255,0 70 HPLOT 127 - K.BO TO 127 - X
130 GOTO 100 ,191 - Y
com o observador em uma posição bem
140 IF INKEYS=" " THEN GOTO 80 NEXT mais próxima do chão.
140 90 F V " (1 / 61 li • V Inicialmente, o programa desenha as
150 GOTO 20 100 Y = Y * F: IF Y > 83 THEN t retas frontais voliadas para o horizon-
40 te,entre as linhas 40 e 80, e as retas que
110 HPLOT 0,108 + Y TO 255,106 vão de lado a lado da tela, entre as li-
+ Y nhas 90 e 130. A variável K dá a coor-
120 HPLOT 0.84 - TO 255.84 -
Y denada X do início de cada linha, que
é, então, multiplicada por V para che-
gar à coordenada X da sua extremida-
0 ';V de final. A condição IF...THEN, na li-
30 PCLS:SCREEN 1.1 nha 50, apenas evita que o desenho ul-
40 FOR K— 126 TO 127 STEP 6 trapasse os limites da tela. Em alguns
50 Y«191 X»K+V*K I F ABS(X)>127-
i :
computadores, isto é dispensável, ape-
(X<1) THEN X"SGN (X)"127+(X<1) :Y
sar de acelerar a execução do programa.
=111+ (X-K) *B0/ (U-K)
60 tXN£(127-K,lll] (127-X, Y), PS As linhas restantes serão traçadas pe-
ET la próxima parte do programa. A dis-
30 SCREEN 2
70 LINE(127-K,80)
PSET
- (127 -X.191 -Y)
40 FOR K —
126 TO 127 STEP 6
tância entre elas torna-se cada vez me-
nor à medida que "se afastam" da te-
.
50 Y=191:X=K+V*KíIF ABS(X)>127-
80 NEXT <X<1) THEN X=SGN<X>*127+(X<1> :Y la, um efeilo controlado por sucessivas
90 F-VT (1/6) :Y-F -I11+(X-K)*B0/(V*K) multiplicações da coordenada Y por
100 Y-Y*F:IF Y>83 THEN 140 60 LINE(127-K,1U)-(127-X.Y) VT1/6. O valor 1/6 foi escolhido para
110 LINE (0,108+Y) -(255, 108+Y) ,P 70 LINEU27-K, 80)- (127-X, 191-Y) dar um resultado mais realista; isto, po-
SET 80 NEXT
120 LINE(0,B4-Y)- (255,84-Y) ,PSE rém, não impede que o usuário experi-
90 F=V (1/6) :Y = F mente outros valores.
100 Y'Y«F:IF Y>83 THEN 140
110 LINE (0, 108+Y) - (255 1.08+Y) ,
50 Y • 191 X :
' dos em um horizonte acima da metade cadas sobre duas retas que convergem
BS (XJ > 127 -
do vídeo. Inversamente, as linhas supe- para um mesmo ponto de fuga.
I SGN (X) * i: riores convergirão para um horizonte Obtém-se esse efeito porque o cére-
IIIIIIIIIHHH lllllllll
A medida que nos afastamos dos objetos. eles parecem menores São necessários princípios e lécnicas especiais para
e mais próximos entre si, como mostra a figura acima. se obler um bom sombreamento cm esferas.
";RW 80 SF-1:SF=800/FNS{0)
ziremos que o menor está duas vezes
50 INPUT "ALTURA DOS POSTES "
90 VP=8007PH*RH*100:X=1140:FOR
mais longe que o primeiro. Portanto, ao iPH T-l TO 15
desenharmos alguns objetos em tama- 60 INPUT "ALTURA DO OBSERVADO 100 X-X-4:IF FNSITXFNYT(X)-FNY
nho decrescente no vídeo de um micro, R " RH ; B{X) THEN 100
teremos a impressão de que eles estarão 70 CLS 110 LINE(X/5,191-FNYB{X)/5)-(X/
"entrando na tela". BO LET 8F-1: LET SF-160/FN S( 5. 191-FNYT(X)/5) PSET.XJ* (FNYT ,
jetos de uma figura, concluiremos que 90 LET VP-]60/PH*RH+100: LET 120 LINE((X-XJ)/5.191-FNYT(X)/5
ela se comporta do mesmo modo. Os X-228: FOR T=l TO 15 )
- {X-XJ) /5,191-YJ/S) ,PSET:LINE
(
(X)-FN B(X) THEN GOTO 100 (tX+XJ) 75 191 -FNYT (X) /5) PSET
,
à medida que se afastam do observador.
.
a distância e o tamanho, isto é, o tama- LET XJMFN Y(X)-FN B (X) /10 ) : 140 LINE(255-(X+XJ)/5,191-FNYT(
nho apresenta uma variação inversa- LET YJ-FN Y(X)-XJ X)/5)-(255-{X+XJ)/5,191-YJ/5) ,P
mente proporcional á distância. Assim, 120 PLOT X-XJ.FN Y(X): DRAU X- SET LINE - (255- (X-XJ) /5 191-YJ/
:
,
se aumentarmos a distância entre o obje- XJ-PEEK 23677. YJ-PEEK 23678: 5) PSET: LINE- (255- (X-XJ) 75. 191-
,
to e o observador, o tamanho do objeto DRAW X+XJ-PEEK 23677 YJ-PEEK , YJ/5) PSET LINE- [255- (X-XJ) 75,1
, :
diminuirá. E por essa razão que no pri- 23678: DRAW X+XJ-PEEK 23677, FN 91-FNYT(X)/5) ,PSET
meiro programa a separação entre as li- Y(X)-PEEK 23678 150 NEXT
130 PLOT 255-X.FN B(X>: DRAW 160 IF INKEYS=" " THEN 160 ELSE
nhas horizontais está elevada a 1/6. O 255-X-PEEK 23677, FN Y(X)-PEEK RUN
número 6 foi escolhido apenas para se 23678
garantir um espaçamento mais condi- 140 PLOT 255-X-XJ.FN Y (X)
zente com a realidade; se o substituir- DRAW 255-X-XJ-PEEK 23677, YJ-
mos por qualquer outro, veremos que o PEEK 23678: DBAW 255-X+XJ-PEEK
desenho nào perderá sua profundidade. 23677 YJ-PEEK 23678: DRAW 255-
,
10 TEXT : HOME
20 DEF FN YT(X) - ((900 - VP)
O próximo programa mostra como X+XJ-PEEK 23677, FN Y (X) -PEEK
/ 500) * (X - 640) + VP: DEF
desenhar uma vista em perspectiva de 2367B
150 NEXT T FN YB(X) - ((100 - VP) / 500) •
uma estrada delimitada por postes: (X - 640) + VP: DEF FN S (T) -
160 GOTO 160
SF / SQR ( (RW / 2) ' 2 + [T •
PH) " 2)
El 30 INPUT "DISTANCIA ENTRE OS P
OSTES "iP
10 BORDER 0: PAPER 0: INK 7: 10 PMODE 4,1:PCLS:CLS 40 INPUT "LARGURA DA ESTRADA "
CLS 20 DEFFNYT{X)M(900-VP)/500)»(X ;RW
15 DEF FN Y(X)-{ (174-VP) /100) -640)+VP:DEFFNYB(X)-( (100-VPJ/5 50 INPUT "ALTURA DOS POSTES ";
•<X-128)+VP 00) * CX-640) í-UP DEFFNS (T) =SF/SQH
:
PH
16 DEF FN B(X)»({20-VP)/100)« ( (RU/2) T2+(T"PH) 12) 60 INPUT "ALTURA DO OBSERVADOR
(X-128) +VP 30 INPUT"DISTANCIA ENTRE OS POS " ; RH
17 DEF FN S(T)-SF/SQR (FW/2) ( TES" ; 70 HCOLOR» .1: HGR3
80 SF - l.SF - 800 / FN 3(0) lho dessas duas funções como sendo o
90 VP - 800 / PH HH + 100:X - de traçar duas retas que afluem para um
1140- FOR T = 1 TO 15 determinado ponto de fuga, entre as
100 X - X - 4: IF FN S(T) < F quais serão colocados os postes.
N YT(X) - FN YB(X) THEN 100
510 HPLOT X / 5,191 - FN YB(X Na parte principal do programa, a li-
/ 5 TO X / 5.191 -
nha 80 calcula o fator de escala, SF, que
) FN YT(X)
/ 5:XJ - ( FN YT(X) - FN YB<X) constrói um poste tomando por base a
) / 10:YJ - FN YT(X) - XJ altura do anteriormente desenhado. A
120 HPLOT (X - XJ) / 5,191 - variável VP define o valor da coordena-
FN YT!X) / 5 TO (X - XJ) / 5,19 da Y do ponto de fuga, que, por sua vez,
1 - YJ / 5: HPLOT TO (X + XJ) depende da altura do observador e da
/ 5,191 - YJ / 5: HPLOT TO (X altura dos postes. Acoordenada X está
+ XJ) / 5,191 - FN YT(X) / 5 sempre no centro da tela.
130 HPLOT 255 - X / 5,191 - F Quinze postes são desenhados em ca-
N YB(X) / 5 TO 255 - X / 5,191
- FN YT(X) / 5 da lado da estrada pelo laço entre as li-
140 HPLOT 255 - (X + XJ) / 5.1 nhas 90 e 1 50. Os da margem direita são
91 - FN YT(X) / 5 TO 255 - (X os primeiros a serem erguidos.
+ XJ) / 5,191 - YJ / 5: HPLOT Inicialmente, a linha 100, começan-
TO 255 - (X - XJ) / 5,191 - YJ do a partir da extremidade direita da te-
/ 5: HPLOT TO 255 - (X - XJ) / la, decresce o valor da posição X, até
5,191 - FN YT(X) / 5 que a altura do poste, calculada por
150 NEXT
FNS(T), se encaixe exatamente entre as
160 GET AS: RUN
linhas criadas por FNYT e FNYB. Fei-
to isso, a primeira parte da linha 1 10 de-
senha o poste, enquanto a porção res-
tante manipula as variáveis XJ e YJ, que
10 SCREEN 0 são fatores de escala para a construção
20 DEFFNYT(X)-((900-VP)/500)MX da parte superior (suporte dos fios). A
-640) +VP DEFFNYB (X) -
; ( (100-VP) /5
linha 120 é responsável por essa última
00)MX-640)+VP:DEFFNS<T)-SF/30jR
tarefa.
((RU/2) "2+(T*PH) -Z)
30 INPUT-DIST ANCIÃ ENTRE OS POS
TES ";P
40 INPUT" LARGURA DA ESTRADA " R ;
10 COLOR 15.1,l:SCREfcN 2
20 FOR K-l TO 100:PSET(INT(RND(
1) *256) , INT {RND ( 1 )
"192) ) : NEXT
25 FOR T-l TO 8
30 XC=INT(RND(-TIME)*195)+30:YC
-INT (RND (-TIME) «131) +30
40 CL-INT(RND(1) *3) :CL*CL- (CL-3
)
50 S-INT(RND(l)*25)+5
60 FOR K=-S TO S
70 IF K-] AND INT(RND{1)*4)-1 T
HEN CIRCLE (XC, YC) ,8*1.5,9,0, ..2
5
BO X-SQR (S*S-K*K)
90 X2-2*X
100 FOR L--X TO X STEP 2
110 IF INT(RNDU)«X2)-X<L THEN
COLOR CL ELSE COLOR 3
120 PS ET (XC-L YC-K) ,
Se você já se deu ao trabalho de es- tra G (lembre-se de "geral", já que Examinemos essas variáveis. Inicial-
crever um programa, certamente enfren- aqui são aceitos números e letras), se- mente, P contém o comprimento do da-
tou dificuldades na padronização da en- guida do número máximo de caracte- do a ser digitado. Para data e hora, es-
trada dos dados. Quantas vezes não foi res a serem digitados. Para a entrada de se valor é fixo;para outros tipos de da-
preciso verificar o número máximo de um nome de até trinta caracteres, use: do, é lido de P$.
caracteres de uma cadeia string, para P$ = "G,30". PFindica o ponto em que se poderá
que não excedesse o tamanho do seu ar- Definido o parâmetro, chama-se a deixar a rotina. Assim, para entradas al-
quivo, ou manipular uma data para dar- sub-rotina por meio do comando GO- fanuméricas, seu conteúdo é 1 —
ou se-
ihe um formato adequado? SUB 600. Se for conveniente, você po- ja, pelo menos um caractere tem que ser
A rotina que publicamos aqui resol- derá renumerá-la e colocá-la em qual- digitado, não se aceitando entradas va-
ve esses e outros problemas, padroni- quer parte do seu programa. Nesse ca- zias. Nos demais casos, PF é igual a P,
zando o formato de entrada de dados e, so, não esqueça de mudar o número
se forçando o uso de todos os campos do
ainda, melhorando sua apresentação. da linha pedida pelo GOSUB. formato de entrada. Isso impede que
Ela fornece formatos definidos para a Depois de digitada, a informação é uma data seja digitada pela metade ou
entrada de dados numéricos, alfanumé- armazenada na variável WS. Para usar que se omita a parte decimai de um nú-
ricos, data e hora. Além disso, para que seu conteúdo, é necessário transferi-lo mero (mesmo que seja 0).
você tenha uma preocupação a menos, para outra variável cujo valor não seja Duas outras variáveis, PI e P2, mar-
encarrega-se de verificar a validade das alterado pela sub-rotina. Uma linha de cam a posição onde se usam caracteres
datas e horas. programa que utiliza a rotina de entra- Fixos no formato. Assim, para datas, o
da de dados fica assim: caractere "/" é utilizado duas vezes. A
posição é contada a partir de 0.
COMO USAR A ROTINA Finalmente, as variáveis alfanuméri-
cas iniciadas por W servem para mon-
A utilização da rotina de formatação tar a linha de formatação, que ficará ar-
é simples. Digite o programa e execute- mazenada em WD$.
o, para ter uma amostra do que ela faz.
Quanto à localização do formato pa- Depois que o conteúdo dessas variá-
ra a entrada de dados na tela, a rotina execução converge
Antes de chamar a rotina, você precisa- veis foi definido, a
rá apenas entrar um parâmetro que de-
também é simples. Seu ponto inicial se- para a linha 618. Aí terá início a entra-
rá aquele em que você tiver deixado o da de dados propriamente dita. O for-
finirá o formato e o tipo de dado que
cursor antes de chamar a rotina. Para mato é colocado na posição lida pela li-
a máquina aceitará.
marcar esse ponto, coloque um ponto nha 600 e as variáveis WS, WIS e PX
O parâmetro será fornecido pela va-
e vírgula no fim da mensagem. Se essa
riável PS, já que o BASIC não
permite são limpas, passando a conter a posição
posição não lhe convier, posicione o cur- do caractere dentro do stríng que está
a passagem direta de parâmetros para
as sub-rotinas. Assim, se você quiser dar
sor com HTAB e VTAB sendo trabalhado.
entrada a uma data, a variável PS deve-
Como está, a rotina não trabalha A linha 626 indica o caractere corres-
rá conter a letra C (faça PS= "C" e use
bem se o formato ficar dividido em duas pondente à posição atual do cursor,
linhas, pois só o posicionamento hori-
"calendário" como mnemónico); para usando operações lógicas. Para isso, o
zontal é monitorado. Mais à frente, ve- computador atribui valor I às relações
a entrada de hora, PS conterá o valor
H (P$ = "H"). Como esses dois forma- remos como modificar essa situação. verdadeiras, e 0, às falsas. Assim, todas
tos são fixos, basta uma só letra. as comparações são condensadas em
Para a entrada de números e de va- uma única linha, evitando-se o uso de
riáveis alfanuméricas, mais informações várias instruções IF.
serão necessárias. Na entrada de núme- A
rotina começa na linha 600, onde O caractere indicado é colocado em
ros, a variável PS deverá conter a letra a variável PH
passa a conter o valor da sua posição e, em seguida, o cursor é re-
D seguida de dois valores, que indicam atual posição horizontal do cursor. A posicionado. Espera-se então a entrada
o número de algarismos (incluindo o posição de memória 36 armazena valo- de um caractere pelo teclado (linha 628).
ponto decimal) e o número de casas de- res de 0 a 39. Somamos I ao valor em A rotina só particulariza dois tipos de
cimais. O primeiro valor deve ter sem- questão, tornando-o equivalente ao usa- caractere: o carriage return (ou seja,
pre dois dígitos (até 9, coloque 0 antes do por HTAB. A
variável PP passa en- <CR>, cujo código é 13) e o back-
do algarismo significativo); o segundo, tão a conter o valor ASCII da letra que space (ou *-, de código 8). Os demais são
apenas um digito (use uma vírgula para caracteriza o parâmetro. Com
base nes- tratados em grupo.
separá-lo do anterior). Se você quiser, sa variável, o programa será desviado Ao se digitar < CR > o caractere se-
,
por exemplo, dar entrada a um número adequadamente na linha 604. As linhas rá reconhecido pelo seu código, que es-
de nove dígitos, dois dos quais decimais, indicadas em 604 atribuem os valores tá armazenado na variável PA. Note que
_use: PS = "D09,2". Para a entrada de necessários às variáveis que controlam ele só terá efeito se a posição do carac-
I variáveis alfanuméricas, utiliza-se a le- o funcionamento da sub-rotina. tere atual (PX) for maior ou igual ao
IIIIIIIIIHHH lllllllll
UMA ROTINA PARA ARMAZENAGEM
ENTRADA DE DADOS DA INFORMAÇÃO
DEFINIÇÃO POSICIONAMENTO DO CURSOR
DO PARÂMETRO COMO FUNCIONA
TIPOS DE DADOS APERFEIÇOAMENTOS
ponto de saída definido (PF). Assim, se transferir a declaração da variável WW$ 612 P - VAL RIGHTS (PS. 2)1 (
estivermos entrando uma data, não po- da linha 601 para o início do programa, 614 PF = 1:P1 tf9:P2 - PI: WDS
deremos deixar a rotina antes de digitar visto que só é necessário defini-la uma = LEFTS (WWS,P):UCS * "": GOTO
o último caractere. vez, e não sempre que a rotina for utili- 61B
O back-space (linha 632) só terá efei- zada. Talvez você não precise usar to- 616 P = 5:PF = P:P1 * 2 P2 - PI :
para uma posição de caractere fixo, que 598 REM ******************* LEN (WS)
deve ser saltado. 599 REM 652 PRINT CHRS (32):: NEXT
Após todos esses passos, retornamos 600 PH - PEEK (36) + 1:PP = A 654 ON PP GOTO 656,666,0.0,666
à linha 624, que encerra a entrada quan SC (PS) - 66 ,660
601 WWS - " 656 D = VAL ( LEFTS (W$.2)):M
do o último caractere do dado é digita-
" HEM 5 D :
- VAL MIDS (WS.4.2)):A = VA
(
do, desviando a execução para a linha
EFINA ESTA VARIÁVEL NO INICIO D L RIGHTS (WS. 2)
(
650. Esta linha e a 652 voltam a impres- 658 V = (M = 4) + (M = 6) + (M
0 SEU PROGRAMA * (
33 APLICAÇÕES 33
Existem duas maneiras de fazer o mi- dança do andamento da oitava e. no ca- LET num=ct"2+l: LET tn^num
crocomputador tocar música. A primei- so do MSX, do timbre da nota. 1005 IF lS="l" THEN LET ct = 0
ra consiste em introduzir a melodia co- As notas sào selecionadas por meio 101Q PRINT "Toque aa notas nas
dificada em números dentro de um pro- de seus nomes (A, B, C, D. .) ou do te- .
teclas de"'"<C> - mal3 baixa
grama. A segunda, em utilizar um edi- clado, que é usado como se fosse um ate"'"<M> - mais alta Dua
tor musical que cuide de toda a codifi- piano. Se o usuário preferir, poderá
«indo cia <I>
cação, deixando ao usuário apenas a ta- combinar os dois sistemas, introduzin-
refa de digitar as notas. do nota por nota em certos trechos e 1060 PRINT AT 17 0 "Duração
,
:
A
execução de música através dc pro- 110 FOR 1 = 1 TO maxnoT.es: LET t
gramas apresenta outras desvantagens, (i)=0: NEXT i
como a dificuldade de editar a melodia 190 CLS
200 PRINT INVER5E 1 AT 0,6;" ;
tes que o programa esteja completo. 'TAB 5;"[1] Tocar pelo teclado
Além disso, para cada peça temos que "'TAB 5["[2] Entrar notas""
escrever um novo programa. TAB 5i"[3] Tocar de novo"
Um editor musical cuida de todos os 210 PRINT TAB 5;"[4) Editar m
'
usuário livre para tratar da melodia pro- ca"' 'TAB 5;"(6J Salvar musica"
priamente dita. Não é preciso conheci- 'TAB 5|"[7] Carregar musica"
270 PRINT ''TAB 5;"0pcao [S] p
mentos de programação para usá-lo.
Como os programas são bem longos, 300 LET AS-INKEY3 TF AS-"" :
1» APUCAÇÕtS 33 llllllll
EXECUÇÃO DE MELODIAS Mo IMU Mj 1
1085 IF NS-OS THEN GOTO 1080 1099 IF N<>32 AND N<>13 THEN G ndex=16 OR index-2!) OR index=21
1090 LET N-CODE (NS) OTO 1109 THEN GOTO 1080
1091 IF N = 33 THEN LET len=l 1100 IF lS="l" THEN LET ct-INT 1116 IF index=2 THEN LET t (num
ET IS = "Seniicolcheia" [num/2) EETURN
:
)=len: LET t (nutn+1 =-4 GOTO 11 )
:
1096 IF N=37 THEN LET len=li 1112 IF N>-60 AND N<-90 THEN G 1126 PRINT AT 15,0;INT (num/2)
LET IS="Semibreve" OTO 108 1;" notas na memoria"
1097 PRINT AT 17,16;" ";1S: 1115 IF index=S OR index=9 OB 1 1127 LET num=num+2
1130 LET OS=N5
1140 GOTO 1080
10 CLEAR 5000-MX=250
20 RlS-"whqeatu" R2S= " 1 2345678" :
30 R3S-"abcdef oCDFGAp"
40 NY$-"Q2W3ER5T6Y7UI9O0PZSXDCF
VBHNJM,L.Ç/[<"+CHR$ [30) +CHB3 31 (
)tCHRS(29)+CHRS(2B)+" "+CHBS<18
)+CHR$U27)+CHR$(13)+CHR$(ll)
50 DIM NS (MX) ,CS [12)
60 FOR I-1.T07:READ LES1I),L25(I
) NEXT
:
EMPO DE EXECUÇÃO"
180 LOCATE 6,8:PRINT"6:LISTA/ED
ITA NOTAS"
190 LOCATE 6,9:PBINT"7:TOCA A M
USICA DA MEMORIA"
200 LOCATE 6,10: PBINT"8 MUDANÇA !
GERAL DE OTTAVA"
210 LOCATE 6. 11 PR1NT"9 :SAI DO
:
PROGRAMA
220 LOCATE 5,19: PRINT" ENTBE COM
O NUMERO DA OPCAO"
230 AS-INKEYS :IF AS<"1" OB AS>
"9" THEN230
33 mlcACOÍS 33
de verdadeiro sinteti
substituir um
ICAL": PRINT 640, "MENU PRINCIPAL dor musical. Este permite a simulação
410 LOCATE J.,U:PRINT USING"I*#
de um grande número de instrumentos
"iLi 110 PRlNTe96,"l:RECUPERA MUSICA
420 AS=NS(L) DA FITA" de sopro, corda ou percussão, através
430 BS=LEFTS(AS.l) :IF BS>="a" A 120 PRINT"2:SALVA MUSICA ATUAL da manipulação das formas de onda.
ND BS<-"0* THEN C3=CHRS(ASC(BS) NA FITA" Acoplando-o a seu microcomputador,
-32)+" "ELSE CS-BS+"!"
"
130 PRINT" 3 TOQUE NO TECLADO"
: por meio de uma interface MIDI Iveja
440 IF BS="P" THEN C«-"- 140 PRINT"4:C0L0QUE UMA TABELA o artigo da página 1 306), você poderá
";C$;" " ;MID
450 PB TNT " DE NOTAS" conseguir a qualidade máxima em ma-
SÍA3.2.1) i" 'I 150 PRINT"5:MUDE O TEMPO DE DUR téria de som.
460 PBINT LES<INSTB(RJS.MIDS(AS ACAO"
,3.1) ) ) 160 PRINT" 6 LISTA/ EDI TA NOTAS"
IF MID$(A5. 4,1)-". "THEN PRI
!
):IF C>6 THEN C-6 :OCS-"6" 200 PRINTê452. "ENTRE O NUMERO D PO"
A OPCAO" 430 PRINT PR INT "TEMPO ATUAL E"
510 LOCATE 13,1: PH TNT "MODO ORG&
:
60,420,1360,1560,1720,250 460
IMA-"tC:TAB(46) "DUBACAO " ;LES(
:
[
100 SILES, 1) ) )
IIIIIIIIHH lllllllll
READ E DATA
àAIS ©PEIRÂCOi MENUS E OPÇÕES
RECUPERAÇÃO DE PALAVRAS
ahha OUSO DE
A INSTRUÇÃO CLEAR
MACROS
de tal forma que possamos recuperá-los Nos computadores que têm funções 80 LET X$=C$
85 GOSUB 100
ou consultá-los por meio de uma sub- programáveis do tipo string, essa fórmu-
90 PRINT SS;" DIAS."
rotina ou função. la pode ser colocada dentro de uma fun-
95 GOTO 40
Esta é também a melhor solução pa- ção, e usada repetidas vezes, como nes- 98 PRINT: PRINT "DATA INVALIDA"
ra os usuários de computadores que não te programa: 99 GOTO 40
dispõem dos comandos READ e DA- 100 LET S$-MIDS(XS. <I-1)»L+1,L)
TA, como os micros pessoais ZX-81. 110 RETURN
20 CS-"312931303130313130313031
Na função FNTS, definida na linha
10, o primeiro argumento é o índice; o
segundo, o tamanho fixo das subcadeias
DHBliM
10 LET FL3-"INSEREEDITARAPAGARL
e o terceiro,o nome da cadeia com os ISTAR"
40 INPUT "ENTRE O NUMERO DO MES dados. Note que a mesma função é usa- 20 PRINT "ENTRE UM COMANDO "iF : I
; "
IIIIIIIIIHHM
LS;" "i
30 INPUT OPS
40 FOR 1=1 TO 4
sível. Suponhamos que, na programa-
ção de um jogo de aventura, você peça
ao jogador que entre a lista dos objetos
DD
50 LET DS-«ID$(FLS, (I-l)*6+l,6) que ele quer levar em uma incursão a um Para rodar nesses computadores, acres-
60 IF DS-OP3 THEN GOTO 80 castelo mal -assombrado. Nesse caso, os cente a seguinte linha:
65 NEXT I comprimentos das palavras contidas na
70 PRINT -CÓDIGO INVALIDO" 10 CLEAR 1000
cadeia de entrada podem ser bastante di-
75 GOTO 20
80 PRINT "COMANDO ESCOLHIDO ->
ferentes entre si, o que exigiria a elabo- A
linha 100 inicializa a cadeia de saí-
El
5
HM
DEF FNC(0$,CS.N)-INT<(INSTR(0
130
135
140
LET A5-AS+CSSÍ1Í
LET CSS-CS$(2 TO)
IF CS$<1)="" OR CSS(l)-"
THEN RETURN
"
ou se CSS tiver se esgotado, a linha 140
retorna o controle ao seu programa
principal.
zenados em OS. Se isso não for feito, busca e substituição, e o programa tro-
a função INSTR pode encontrar subca- cará o símbolo convencionado pela ex-
deias superpostas, que não correspon- pressão por extenso, sempre que o en-
dem às opções possíveis. contrar.
20 PRINT "ENTRE TRES COISAS QUE Programar essa operação em BASIC
CARREGARA (SEPARADAS POR ESPA não chega a ser difícil, mas envolve al-
:"
RECUPERAÇÃO DE PALAVRAS COS) gumas complicações, pois a sequência
30 INPUT CSS que irá substituir o símbolo no texto po-
A recuperação de palavras, códigos 40 LET N-0 de ter um número de caracteres menor,
50 PRINT"VOCE CARREGARA
!
DE MENSAGENS
telefone a
computadorizados de "quadro de avisos"
cará à disposição do usuário: cotações te como sistemas de mensagens. Na rea- po útil de conexão de cada usuário é ex-
lidade, sua rápida expansão se deve, tremamente curto: o suficiente para co-
das Bolsas, noticiários, referências bi-
bliográficas sobre assuntos técnicos etc. principalmente, ao fato de a maioria de- piar (download) as notícias ou progra-
Existem hoje, em todo o mundo, mais les dispor de um serviço especial que mas de interesse para seu disco.
de um milhão de pessoas que se benefi- possibilita a transmissão de software de O quadro de avisos central nada mais
ciam de redes de computadores. um computador para outro. No jargão éque a memória do micro que o gerên-
dos seus aficionados, uploading signi- cia.Hoje, a maioria dos CBBS dispõe
O acesso a esses sistemas, entretan-
to, não é algo exatamente barato, prin- fica o ato de enviar um software para de discos rígidos de maior capacidade,
cipalmente quando é necessário pagar li- armazenamento no CBBS, enquanto mas pode-se operá-los só com dois acio-
downloading quer dizer retirar uma có- nadores de disquetes como memória au-
gações internacionais (DDI). Além dis-
pia das informações disponíveis. É im- xiliar. Nesse caso, entretanto, a veloci-
so, muitos usuários se ressentem da fal-
ta de um contato mais pessoal entre portante ressaltar aqui que o micro que dade e a capacidade do sistema são sig-
manda e o que recebe a listagem do pro- nificativamente diminuídas.
quem fornece e quem recebe a informa-
ção —o que talvez explique, por exem- grama não precisam ser compatíveis en- Muitos dos CBBS recentemente sur-
tre si. Essa é, portanto, uma oportuni- gidos no Brasil constituem iniciativa de
plo, o sucesso e a popularidade do ra-
voluntários. Seguindo a tradição dos en-
dioamadorismo. Contudo, já existe um dade rara de transportar certos tipos de
software por meios incomuns. tusiastas da microinformática, eles são
equivalente desse hobby dentro do cam-
Oprincípio dessa ideia consiste em gratuitos (embora existam alguns, como
po das redes informatizadas de dados.
Trata-se da versão "doméstica" dos converter os programas em textos AS- o Sampa CBBS, em São Paulo, que se
grandes sistemas telemáticos (como CII (padronizados para todos os micros, tornaram tão grandes que foi necessá-
CompuServe e Cirandào) denominada que abordamos, menos o ZX-81) para rio fixar uma pequena taxa). Um
dos sé-
realizar a transmissão via modem. rios problemas desse sistema é impedir
Quadro de avisos computadorizado (do
inglês, bulletin board). Outro requisito para o trabalho de que pessoas não autorizadas tenham
copiar os programas disponíveis no acesso a ele. Usualmente, isso é feito
Um Compuierized Bulletin Board
atribuindo-se uma senha a cada mem-
Service (ou CBBS, como é mais conhe- CBBS é ter uma unidade de discos e um
ou compilador da lingua- bro. Contudo, essa é uma questão difí-
cido entre os aficionados) é, em sua for- interpretador
gem original do programa. Com eles, cil de ser solucionada, tanto que nem
ma mais simples, o equivalente eletrõ-
nico do quadro de avisos de um clube, poderemos carregar arquivos em forma- mesmo o Pentágono norte-americano
onde todos podem afixar notícias, reca- to ASCII. Os sistemas operacionais das vem obtendo sucesso no sentido de evi-
dos etc. Para ter acesso a um sistema linhas TRS-80, TRS-Color e MSX
ofe- tar que pessoas não autorizadas pene-
finalidade do serviço (comercial ou não) PC são os mais comuns), e permitem a o usuário e o CBBS não representa ne-
e inclui a despesa normal com a ligação transferência direta de programas entre nhum obstáculo, já que um computador
telefónica. dois computadores compatíveis, sem o pode perfeitamente se comunicar com
Embora os CBBS existam há algum arquivo ASCII intermediário. outro, em qualquer parte do mundo, des-
tempo (sobretudo nos EUA, onde fo- de que ambos tenham modems compa-
tíveis.Utilizando o equipamento corre-
ram criados), em nosso país eles ainda
COMO FUNCIONA UM CBBS to, você poderá se beneficiar de mais de
são uma novidade. Apenas as cidades
maiores, como São Paulo e Rio de Ja- 1.500 serviços de troca de mensagens es-
neiro, dispõem desse serviço. Tudo in- O quadro de avisos geralmente é palhados pelos EUA, Canadá e Europa.
dica, entretanto, que os CBBS se multi- "hospedado" por um microcomputador Em razão de não existirem padrões co-
ligado, porum ou mais modems, a um muns de comunicação entre europeus e
I plicarão rapidamente e que a maioria
IIIIIIMIMWM—— miiii
QUADRO DE AVISOS
0 QUE E 0 MELHOR MODEM
CARREGANDO E ACESSO ATRAVÉS DE MENUS
DESCARREGANDO INFORMAÇÕES EXPLORANDO A REDE
PADRÕES TÉCNICOS TERMINOLOGIA
VELOCIDADE DE TRANSMISSÃO ESPECIALIZADA
norte-americanos, o usuário que desejar por um país-membro. Indiretamente, is- (seu nome
deriva da fábrica dos modems
contatar CBBS dessas regiões deverá dis- so acaba facilitando a comunicação en- mais populares e baratos do país). O
pa-
por de modems diferences. tre todos os proprietários de computado- drão Bell também é muito usado.
O padrão adotado na Europa é o res. Cada país, porém, pode ter simulta-
CCITT, sigla de uma agência da ONU neamente outras convenções internas, de-
denominada Comité Consuhatif Interna- terminadas e aprovadas por órgãos esta- VELOCIDADES DE TRANSMISSÃO
tional Téléphonique et Télégraphique. tais, como o Contei (Conselho de Tele-
Essa agência estabelece convenções inter- comunicações), no Brasil. As agências de normatização, nacio-
nacionais para telecomunicações que po- Nos EUA, o chamado padrão Hayes nais e internacionais, deixam aos fabri-
dem também ser seguidas internamente é o mais comum para CBBS privados cantes de modems a criação de muitas
IHHHIIIIIIIIIII
outras convenções. Os modems são clas- cessidade de se reduzir os custos do ser- Classificamos o software de comuni-
sificados em função de diversos parâme- viço, até porque os Computerized Bul- cações em: burros e inteligentes. O in-
tros operacionais e de desempenho co- letin Board Service não dispõem dos re- teligente —essencial para quem deseja
mo, por exemplo, a velocidade de trans- cursos de hardware das grandes empre- operar um CBBS —
permite descarre-
missão. Agrande maioria dos CBBS — sas de telecomunicações. O fato de se- gar o programa (além de texto de men-
os mais baratos —
opera com modems rem empregados modems mais baratos sagens) e armazená-lo automaticamen-
implica o uso de uma taxa menor de te no disco. Já o software burro possi-
de 300 bauds, isto é, eles recebem e
transmitem dados à velocidade de 300 transmissão a fim de evitar erros causa- bilita apenas a comunicação simples,
bits por segundo. (O nome da unidade dos por interferências elétricas, normal- sem qualquer forma de armazenamen-
mente filtradas por equipamentos sofis- to ou listagem. Certos softwares inteli-
de medida baud é uma homenagem ao
engenheiro francês Baudot, considera- ticados. Com um modem barato ope- gentes oferecem recursos extremamen-
do o inventor de um código para telex.) rando a altas taxas, qualquer pulso na te úteis, entre eles o reconhecimento au-
Isso equivale, aproximadamente, a um rede poderia ser interpretado como um tomático — através do programa — do
bit enviado a cada 3.3 milissegundos. Já bit. Em velocidades pequenas, o pulso protocolo seguido pelo computador hos-
os sistemas mais avançados de telecomu- que define um bit é mais longo e, por- pedeiro e a armazenagem e discagem au-
nicações digitais seguem o padrão tanto, mais fácil de identificar. tomática de vários números de CBBS.
1200/75 baud: o computador central De qualquer modo, o ruído será sem- A
função básica do programa é a de
transmite dados à velocidade de 1200 pre um problema difícil de se resolver. permitir que o micro transmita e receba
Com a entrada em serviço das redes di- sinais (caracteres) pelo modem conecta-
bauds e o usuário os envia a apenas 75
bauds. Sistemas como o Cirandão, da gitais de comunicações baseadas em fi- do ao sistema, mantendo o sincronismo
Embratel, eo Videotexto utilizam essa bras ópticas, espera-se que os sinais se- entre o teclado, o vídeo e a memória. O
convenção (seu objetivo é reduzir o tem- jam mais "limpos" e rápidos. software orienta o computador por in-
po de ocupação do computador central, termédio de comandos relativos à for-
devido ao custo elevado, e impor os gas- ma com que os sinais serão transmitidos
tos da interaçâo ao usuário). e recebidos.
As taxas de transmissão normalmente Muitas pessoas não conseguem en-
são múltiplos de 300 (300, 600, 1200, Denominamos fuli-dupiex ou half- tender como dois computadores aparen-
2400 etc), duplicando progressivamen- duplex ao parâmetro que varia de mo- temente incompatíveis podem se comu-
dem para modem e diz respeito à simul- nicar. E são essas mesmas pessoas que
te até atingir 9500 bauds, que é o máxi-
mo em uso atualmente. taneidade das funções de transmissão e costumam criticar os fabricantes de mi-
Em muitos computadores, dependen- recepção. Full-duplex significa que um cros por constantemente ignorarem os
do dos padrões definidos pelo CCICT determinado modem é capaz de receber padrões que facilitam a interligação en-
para interfaces seriais RS-232, as volta- e transmitir informações ao mesmo tem- tre equipamentos distintos.
gens de representação dos números bi- po; half-duplex indica que ele executa Por meio do CBBS, temos a falsa im-
nários 0 e 1 são, respectivamente, + 12 apenas uma função de cada vez. pressão de que um computador está
Evidentemente, um modem half-du- identificando os comandos enviados por
e - 12 V. Os micros que usam as volta-
gens + 5 e 0 V necessitam de um con- plex é mais barato e adequado a traba- outro diferente (um Apple e um MSX,
versor, que geralmente é barato. lhos com micros domésticos, ou até a al- por exemplo). Na verdade, isso só acon-
gumas aplicações profissionais mais tece porque a maioria dos CBBS imple-
simples. Como é preciso aguardar uma menta seu software de acesso por meio
transmissão terminar antes de iniciar a de menus relativamente simples.
recepção (ou vice-versa), os erros come- Com eles, o usuário seleciona uma
Cada caractere de informação trans- tidos na operação poderão trazer alguns opção pressionando uma tecla ou digi-
mitido por um modem compõe-se, ba- inconvenientes. A possibilidade de se tando uma linha de comando. Do ou-
sicamente, de um de início (start bil),
bil consumir um tempo excessivo pratica- tro lado, um programa especial "varre"
dos bits de dados (data bits) de um bit mente desaconselha o uso deste equipa- o modem de recepção, de modo a cap-
tar os sinais enviados e a interpretar cor-
de paridade (parity bit), usado em tes- mento para trabalhos profissionais.
tes de erros de transmissão, e de um bit Os CBBS se tornaram viáveis graças retamente o pedido. A partir daí, os co-
de término (stop bit). Como vemos, à sofisticação do hardware e software de mandos adequados passam a ser acio-
existem mais bits do que os oito de um comunicações. O maior passo nesse sen- nados pelo computador hospedeiro.
byte; assim, para saber quantos bytes tido foi a introdução de modems ou re-
(caracteres de (exto) são enviados por se- cursos de autodiscagem (auto-diating,
em inglês) e auto-resposta (auto-answe-
EXPLORANDO OS CBBS
gundo, tomando como padrão uma ta-
xa de 300 bauds, por exemplo, dividi- ríng). A partir dessas inovações, as con-
mos esse número por 11. sultas ao computador hospedeiro do O
primeiro passo para explorar todos
Embora não haja uma sequência CBBS passaram a ser respondidas au- os recursos dos CBBS à sua disposição é
"natural" nem uma quantidade prees- tomaticamente com uma linha conecta- adquirir um modem adequado. Confor-
tabelecida para os diferentes bits que da entre receptor e transmissor. me abordamos, os CBBS normalmente
formam o caractere de transmissão, é adotam um tipo padrão de 300 bauds,
importante que tanto o emissor quanto com protocolo CCICT ou Hayes. Os sis-
o receptor reconheçam a convenção se- SOFTWARE PARA COMUNICAÇÕES temas comerciais, como o Videotexto e
guida. Além disso, ambos devem ser ca- o Cirandão, utilizam o padrão 1200/75.
pazes de formatar, enviar ou receber os Além do computador, do modem e Assim, o ideal é que o usuário compre
dados conforme a taxa padronizada. do telefone, faz-se necessário um soft- um modem que tenha uma chave de se-
A velocidade adotada por um CBBS ware especial que transforme o micro leção para cada modalidade.
I será escolhida levando-se em conta a ne- em um terminal de dados. O
segundo passo consiste em provi-
IIIIIIIIIHHM * sonwM , IHIIIIIi
denciar um software de comunicação (se ciários etc. ou à execução da opção. Rede - Em sua forma mais restrita, re-
ele já não tiver sido fornecido juntamen- Muitos CBBS possuem uma seção que fere-se à ligação direta entre vários com-
te com o modem). permite aos novos usuários registrar seus putadores com objetivos específicos
O terceiro passo é descobrir os núme- dados (endereço, nome, telefone e senha (normalmente para fins comerciais ou
ros de telefone dos CBBSe seus deta- de acesso). Outras opções oferecidas po- de pesquisa, como a rede brasileira
lhes técnicos de acesso. Esses dados po- dem incluir uma seção técnica, comuni- RENPAC). As redes dividem-se em dois
dem ser encontrados em revistas espe- cações com o gerente etc. tipos: a locai (LAN, ou Local Area Net-
cializadas de microcomputaçâo. O elemento fundamental do CBBS work), que, geralmente, envolve apenas
Superadas todas as questões, passa- está no quadro que contém avisos e no- a ligação direta entre micros e seus pe-
remos à parte prática da operação. Co- tas para conhecimento geral. Isso, po- riféricos ou a um computador central,
necte omodem ã linha telefónica e ao rém, não exclui a possibilidade de exis- e a telemática (WAN, ou Wide Area
microcomputador e execute o software tir também uma seção de mensagens Network), que inclui ligações remotas,
de comunicação. Caso a versão utiliza- pessoais: "caixas postais", com acesso via rede telefónica, microondas ou sa-
da disponha de autodiscagem, todo esse limitado por senhas secretas. Esse siste- télites. Através da LAN, os usuários po-
trabalho será feito automaticamente, ma permite deixar informações reserva- dem compartilhar recursos como discos
uma vez especificado o CBBS que se de- das para outros usuários ou formar sub- e impressoras. A WAN, por sua vez,
seja acessar. Do contrário, bastará ligar quadros de avisos dentro do CBBS. permite a intercomunicação e a conse-
o número telefónico do mesmo e aguar- quente troca de mensagens e transações
dar o sinal de recepção (geralmente um (como em uma rede de automação ban-
som agudo de poucos segundos denomi- TERMINOLOGIA cária,que liga várias agências aos com-
nado portadora). Recebido o aviso, pres- putadores centrais).
sione o botão que conecta o modem ã Há vários lermos técnicos que, em- Uma rede pode ser privada ou públi-
linha (se o equipamento for de conexão bora comuns no campo da comunicação ca. Existem vários exemplos de redes pú-
direta), ou coloque o bocal do telefone entre computadores, são pouco conhe- blicas, como o Cirandão, da Embratel,
nas "orelhas" de acoplamento (se for cidos em outros ramos da informática. ou o CompuServe, nos EUA, com mais
um modem acústico). Devido a isso, às vezes, cria-se uma certa de 250.000 usuários.
Para termos acesso a alguns CBBS, confusão sobre seu significado. Nos últimos anos, o termo rede vem
é necessário chamar o número deseja- A seguir, uma lista dos termos que perdendo sua especificidade, passando
do, deixar tocar uma vez, e, em segui- normalmente são mal interpretados: a significar qualquer forma de interco-
da, discar novamente esse número. Só municação realizada entre computado-
então o procedimento já descrito pode- Videotexto - Sistema especial de comu- res. Por esse conceito, todos os serviços
rá ser observado. nicação entre computadores, oferecido do tipo videotex também poderiam ser
Muitos CBBS funcionam de manei- como um serviço público pelas compa- considerados uma rede.
ra semelhante. No início da operação, nhias telefónicas. Através de uma linha
o usuário recebe uma mensagem que in- comum, o computador central envia ao Telex e leletex - Serviços em fase de in-
dica seu contato com o CBBS. Depois, usuário a informação (organizada em tegração a redes de computadores e que,
deve enviar uma senha de entrada e/ou páginas ou telas). Esta é recebida por por isso, ainda são confundidos. O te-
o número ou nome de identificação — um terminal especial de videotexto ou lex é um sistema telefónico de comuni-
principalmente se o uso do CBBS impli- um micro qualquer, que podem respon- cação de textos, de baixa velocidade (15
ca pagamento através de assinatura der fazendo novas solicitações de dados. bauds), gerenciado por uma central es-
mensal ou anual. Tais sistemas, entre- No Brasil, tem-se acesso aos sistemas de pecial computadorizada. Existem inter-
tanto, chegam a oferecer, por um tem- videotexto por meio de uma assinatura faces que permitem dar a um micro a
po limitado, algumas informações para mensal junto à companhia telefónica de função de um terminal de telex (daí se-
convidados e "intrusos", isto é, pessoas cada cidade. Na Europa, esse serviço, rem chamadas de microtelex).
ainda não registradas no serviço. implantado em vários países, é denomi- O teletex é uma evolução técnica do
Os CBBS gratuitos, dependendo do nado Preslel. telex e,muito provavelmente, seu subs-
tipo, podem solicitar seu nome e cidade tituto direto. Utiliza o mesmo sistema
ou endereço e número telefónico, bem Teletexto - Sistema semelhante e mais de comunicação, porém, a uma veloci-
como algumas especificações do micro barato que o videotexto. Aqui, en- dade bem maior, de modo a facilitar o
usado (modelo, tamanho da tela etc). tretanto, a informação é enviada apenas uso de micros como terminais. Ainda
Esses detalhes são importantes para que em um sentido (do computador central não foi implantado no Brasil.
o computador hospedeiro saiba como para o terminal), aproveitando o inter-
operar durante a comunicação. valo disponível entre dois quadros exi- Correio elelrõnico - Serviço oferecido
Na fase seguinte, você receberá infor- bidos pela TV. Este sistema não existe por diversos tipos de rede, videotexto ou
mações do CBBS: horários de funcio- no Brasil. Exemplos no exterior são os CBBS. Consiste, basicamente, de "cai-
namento, limite de tempo para cada CEEFAX e o ORACLE, utilizados na xas postais" (espaço reservado no dis-
chamada etc. Tais dados interessam, so- Inglaterra. Aparelhos de TV de algumas co central a cada assinante), capazes de
bretudo, aos CBBS voluntários, já que marcas já são fabricados com a interfa- receber mensagens individuais ou circu-
algumas chamadas são feitas em horá- ce embutida. lares, enviadas por outros usuários. A
rios inconvenientes (desagradando o comunicação é feita a nível privado, e
operador, que geralmente utiliza o tele- Vídeotex - Termo geral que engloba o vi- protegida por senhas. Em alguns países,
fone de sua própria casa para isso). deotexto, o teletexto e os CBBS. Criou-se o sistema é prerrogativa do serviço es-
Assim como o videotexto, a maioria uma certa confusão depois que alguns tatal de correios. No Brasil, como em
dos CBBS é operada através de menus. CBBS evoluíram e se transformaram em outras nações, esse monopólio já foi
A escolha de uma opção em um menu uma rede, apesar de conservarem o mes- rompido (Cirandão, Mensagem, Video-
poderá levar a menus secundários e ter- mo nome. texto).
34 APLICAÇÕES 34
34 APUCACÒIS 34
m SEGUNDA PARTE
DO PROGRAMA EDITOR
GRAVAÇÃO E LEITURA
DIGITAÇÃO DAS
SUB-ROTINAS
NOTAS"
1080 LOCATE 2 21 PRINT" 2 INSERI , : :
R NOTAS"
1090 LOCATE 2 22 PRINT" 3 ALTERA , : :
R NOTAS";
1100 LOCATE 2,23:PRINT"4:CONTIN
UA" ;
NOTAS"
1160 LOCATE 0,2:INPUT"INICTA NA
NOTA" ST ;
|J+1) 'NEXT
1240 NN 3 NN- 1 : NEXT K :
I =SL-1 :GOTO |
34 APUCAÇÓtS 34
niuini
1010 MIDS(STRSÍC) .2) 1020 IF ST>NN THEN 1000
1250 LOCATE 12.0:PfiINT"2:INSERI 620 IF P = 2 ANDO 1 THEN C-C-l:OCS-1030 PRINT664 "QUANTAS APAGA (EN .
1260 LOCATE 0.2: INPUT" INICIA IN ,630 IF (P-30RP-6JAND LE>1 THEN 1040 IF NDOO THEN ND=1
SERÇAO APOS QUE NOTA"; ST LE-LE-1:LES-MIDS(R1S,LE,1)+" " 1050 IF ST+ND-1>NN THEN ND-NN-S
1270 IF ST<0 THEN 1010 640 IF (P-40RP-71AND LE<5 THEN T+l
1280 IF ST>NN THEN ST=NN LE-LE+1:LES-MIDS(R1S.LE,1)+" * 1060 FOR 1-1 TO ND
1290 LOCATE 0.3;PRINT"TECLE'M'P 650 IF P-5 THEN IS-"P" PS-" " GO 1070 FOR J=ST TO NN-1 NS J) -NS
: :
: (
1300 IF NN-MX THEN LOCATE 2.18: 660 IF P-60RP-7 THEN LES-LEFTS 1080 NN-NN-1
PRINT"MAXIMO NUMERO DE NOTAS CO LES.D+" 1090 NEXT I RETURN :
O CATE 22,3: PRINT" ILEGAL" :GOTO 1 720 IF MIDSUES.2,1)-"." THEN P NUMERO DE NOTAS COLOCADO !": FOR
290 NOTAS LS-PLS+" D-l TO 1000:NEXT:RETURN
1340 IF MIDSÍNS, 4,1)=". "THEN N$ 730 PLS-PL$+"0"+OCS+PS PLAY PLS 1160 INPUT NS:IF NS-"M"OR
:
NS-"m
=LEFTS(NS,4)ELSE NS-LEFTS (NS 3 . 740 NN=NN+1:NS(NN)=IS+QCS+LES "THEN RETURN
750 GOTO 530 1170 IF LEN(NS)<3 THEN PRINT"IL
1350 IF ST=NN THEN 1380 760 CLS EGAL" :GOTO 1160
1360 FOR K=NN+1 TO ST+2 STEP -1 770 PRINT64 "ENTRADA MANUAL DE
.
1180 IF INSTR<R3S.LEFTS(NS.1>>-
1370 NS(K)-NSIK-l) :NEXT NNTAS" PRINT633 "ENTRE m PARA R OORINSTR (R2S MIDS (NS ,2,1)1 -0ORI
:
.
' '
,
1390 ST-ST+1 :NN-NN+1 780 PRINT"USE FORMATO :' alh .'(' INT" ILEGAL" GOTO 1160 :
1420 IF ST-0 THEN 1010 800 IF NN-MX THEN PRINTS448 "MA 1200 IF ST=NN THEN 1230 ,
1430 IF ST>NN THEN ST-NN XIMO NUMERO DE NOTAS COLOCADO!" 1210 FOR I-NN+1 TO ST+2 STEP-1
1440 LOCATE 11,2:PRINT NS(ST) :FORD- 1T01 00 0 NEXT: RETURN:
1220 NS{I)-NS(I-1) NEXT :
(ENTER-FIM) " EL ;
"2:INSERIR NOTAS " " 3 ALTERAR NO 1400 ,
:
1580 IF EL-0 OR EL>NN THEN EL = N TA ","4: CONTINUAR"; 1380 POKE 282. 255 PRlNTf*64 : . ; :
D
600 P-P-36
90
990 RETURN
1000 IF NN-0 THEN 940 ELSE CLS
INPUT"INICIA NA NOTA":ST
1400 PRINTêl 28 "INICIO NA NOTA
INPUT ST
1410 IF ST<=0 THEN ST-NN
1420 IF ST>NN THEN :JT=NN
; :
,
Nos artigos anleriores desta série, mensagem "PRESSIONE QUALQUER repetem durante o período em que es-
examinamos os recursos "secretos" do TECLA PARA CONTINUAR", ela tão sendo pressionadas.
micro TRS-80 para a saída de vídeo. En- aciona justamente a tecla < BREAK > Este é um recurso útil para uma sé-
tre outras coisas, vimos como gerar A culpa, com certeza, é sua... rie de aplicações: por exemplo, jogos em
pseudo-sprites e como levar cópias de te- Para evitar ocorrências desse tipo, que o movimento de um cursor ou o dis-
las para a memória e vice-versa. convém bloquear o efeito da tecla paro de uma metralhadora são contro-
O
teclado do TRS-80 também tem vá- < BREAK > comandos POKE
através de lados por teclas auto-repetitivas.
rias características interessantes, que não nas locações de memória 16396 e 16397: Há uma maneira, porém, de saber se
estão bem documentadas nos manuais de uma tecla continua sendo pressionada
POKE 16396, 175:P0KE 16397,201 ou não, o que nos permite implementar
operação ou mesmo nos livros mais ele-
mentares sobre o assunto. Neste artigo, Para ativar novamente a tecla, basta uma rotina de repetição. Se o valor da-
você aprenderá alguns truques que po- utilizar o comando: do por um PEEK(14591> for igual a 0,
dem ser executados com facilidade, co- nenhuma tecla está sendo pressionada;
POKE 16396,201
mo o bloqueio da tecla <BREAK>, a se esse valor for maior que 0, uma tecla
implementação de um cursor piscante, a Esse truque funciona em qualquer está sendo pressionada.
programação da repetição automática de micro compatível com os modelos I e III Para entender como funcionaria um
a entrada dtreta de símbolos grá-
teclas e da linha TRS-80, e pode ser empregado laço simples de repetição, digite:
ficos pelo teclado. tanto como comando direto quanto den- 10 PHINT PEEKU4591) ; :GOTO 10
Esses recursos são possíveis porque tro de um programa.
a memória do TRS-80 contém o mapa Há um problema, entretanto. Se vo- Ao ser executado, o programa impri-
do teclado, assim como o do vídeo. O cê estiver usando o BASIC de disco, e me uma sequência de zeros na tela.
teclado desse micro é do tipo matricial, tentar acessá-lo durante a desativação da Quando uma tecla é pressionada, esse
ou seja, ao se pressionar uma tecla, ela tecla < BREAK > o computador pode-
, valor muda. Note que cada tecla ou
aciona o cruzamento entre dois condu- rá "congelar". Para evitar que isso combinação de teclas (pressionadas jun-
tores: um colocado nas colunas, e ou- aconteça, aconselha-se recorrer a outra to) tem um valor diferente, que não cor-
tro, nas linhas. Isso gera um código bi- locação de memória para dar o coman- responde ao valor ASCII da tecla.
nário, que é recuperado pelo software do POKE. Não se esqueça, porém, de Para aplicar esse expediente, identi-
processador do teclado. Este efetua uma que esta varia de acordo com o sistema fique os números das teclas que deseja
varredura a intervalos de alguns milis- operacional de disco (DOS) empregado: usar para direcionar a lógica de deter-
segundos, passando por todos os fios minado programa e introduza vários IF
horizontais e verticais. O número obti- DOS DESATIVA AT1VA dentro do mesmo. Se você quiser utili-
do é depositado em uma locação espe- TRSDOS 2.3 POKE 23886,0 POKE 23886.1 zar os valores ASCII gerados por cada
cífica da memória de teclado. NEWDOS 2.1 POKE 23461,0 POKE 23461,1 tecla pressionada, precisará de IF um
Diversas outras locações da memória NEWDOS 80 POKE 19408,0 POKE 19408,1 para testar se a tecla continua pressio-
RAM reservada para a área de irabalho nada, e outro para localizar essa tecla.
do interpretador BASIC são dedicadas A maioria dos micros nacionais da li- Como exemplo, execute este progra-
ao teclado. Através de comandos PEEK nha TRS-80 utiliza sistemas compatíveis ma. Ele desloca um cursor pela tela, sob
e POKE, é possível verificar, e mesmo com o TRSDOS (pronuncia-se trisdós). o controle de quatro teclas (flechas).
alterar, seu conteúdo, produzindo curio- Se seu micro usa a versão CP/M, você
10 CLS:X-64:Y>24
sos e variados efeitos. não poderá desativar a tecla < BREAK > 15 SETtX.Y)
por meio da operação sugerida. 20 IF Tl>0 AND PEEK 14591 } >0 {
BREAK
Um aviso final: se seu programa ain- THEN 50
BLOQUEIO OA TECLA >
da não foi gravado, tenha muito cuida- 25 TS=INKEYS:IF TS="" THEN 25
do ao usar esse truque, assegurando que 30 Tt=A3C(TS)
Como você já sabe, a tecla a tecla < BREAK > possaser reativa- 50 IF Tl = 8 THEN X-X-l ;GOT0 15
< BREAK > do TRS-80 interrompe um da. contrário, você poderá ficar na
Caso 60 IF Tl=9 THEN X-X+l :GOT0 15
desagradável situação de nunca mais po- 70 IF TI-91 THEN Y-Y-l:GOTO 15
programa BASIC em execução, indepen-
der listar seu próprio programa! 60 IF Tt-10 THEN Y-Y+l:GOTO 15
dentemente do que ele estiver fazendo, 90 GOTO 25
e retorna o controle ao interpretador.
A facilidade de interromper o progra- A
linha 10 do programa define a po-
ma pode ser um inconveniente quando sição inicial do cursor (um pequeno pon^
se deseja (orná-loimune a erros de ope- to na tela), "aceso" pelo comando SET.
ração ou se quer impedir que alguém o Os modelos da linha TRS-80 I e III com as coordenadas X
e Y na tela.
liste.Imagine a seguinte situação: vo- (como o Prológica CP-500) não têm a A
linha 20 verifica se alguma tecla es-
cê colocou um programa educativo nas capacidade de repetição automática das tá sendo pressionada —ou seja, se o va-
I mãos de uma criança; ao aparecer a teclas — ou seja, as teclas não se auto- lor T% (código ASCII da tecla, deter-
(
IIIIIIIIIHUM lllllllll
TRUQUES COM 0 TECLADO DAS TECLAS
COMO DESATIVAR CURSOR DE TEXTO
A TECLA <BREAK> PISCANTE
ROTINA PARA A ENTRADA DIRETA
REPETIÇÃO AUTOMÁTICA DE SÍMBOLOS GRÁFICOS
minado na linha 30) e o conteúdo da me- sor piscar quando está sobre um carac-
mória 14591 são, simultaneamente, tere já impresso. Nesse caso, devemos
maiores que 0. Em caso afirmativo, o copiar o
valor do
caractere em uma va-
programa pula para a linha 50, que ini- riável, antes de piscar, e recolocá-lo na
cia vários testes para identificar qual das tela. Os comandos PEEK e POKE des-
teclas com
flecha foi pressionada. As ta rotina encarregam-se disso:
coordenadas X
e Y são alteradas para
mais ou para menos, e um outro ponto 100 T$ = INKEYS: IF TSO" THEN
é aceso na tela na nova posição. A li-
120 VARREDURA DO TECLADO
nha 20 testa mais uma vez se essa tecla
110 POKE XI.95:POKE XÍ,CÍ:GOT0 A função INKEYS é bastante útil pa-
100 ra se detectar, dentro de um programa,
continua pressionada, executa um des-
120 RETURN se alguma tecla foi pressionada. Mas,
locamento e assim por diante. âs vezes, ela não é suficiente para sa-
Se nenhuma tecla estiver sendo pres- Antes de chamar a rotina, coloque a tisfazer certas necessidades do progra-
sionada, o programa vai para a linha 25, posição atual do cursor em X%. Este é mador — como indicar se duas ou mais
que cria um laço de varredura do tecla- um valor entre 15360 e 16383, números teclas foram pressionadas simultanea-
do com a função INKEYS. Essa linha que correspondem às locações da me- mente, ou detectar o acionamento de
se repete até que se pressione aJguma te- mória de vídeo na RAM. Para obtê-lo, uma tecla que não gera um código atra-
cla. Então, o valor ASCII da tecla é examina-se o conteúdo das memórias vés do INKEYS, como <SHIFT>.
identificado e armazenado em T%, pe- 16416 e 1641 7. O valor ASCII do carac- Conhecendo a organização do tecla-
do, porém, esse tipo de verificação não
la linha 30. A
partir daí, o micro se com- tere nessa posição deve ser colocado em
oferece dificuldade. O teclado é disposto
porta como se tivesse a capacidade de C%. Assim, a rotina poderá fazer o cur- na forma de uma matriz. Quando uma
repetição automática das teclas. sor piscar, após verificar o código arma- tecla é pressionada, um determinado va-
Observe que, se nenhuma das quatro zenado na locação X%
de vídeo: lor numérico entre 1 e 128 (potências
teclas com flecha tiver sido pressiona- de 2) é depositado na memória RAM
da, o programa retorna ao laço de es- 10 Xt-PEEK<16417>*256+PEEK correspondente a uma fileira (um dos se-
pera situado na linha 25. (16416) guintes endereços: 14337. 14338,
20 Ct-PEEK(XI) 14340, 14344, 14352. 14368, 14400
Ao executar esse programa, tenha o 30 COSUB 10Q:PRINT TS GOTO 10
cuidado de não ultrapassar os Omites da
; :
ou 144641. A correspondência entrete-
cia e endereço nos permite identificar a
tela com o cursor, para que não ocorra A linha 30 chama a rotina e imprime tecla ou teclas pressionadas. Por exem-
um erro na linha 15. Se quiser melho- o caractere que se pressionou, retorna- plo, a tecla < SHIFT >, quando pressio-
rar o programa, introduza testes para as do pela sub-rotina em TS. A volta à li- nada, gera o código 1 na locação de me-
alterações de X e Y, de modo a impedir nha 10 tem o efeito de deslocar o cur- mória 14464.
que eles ultrapassem os valores mínimo sor uma posição à direita no vídeo, rei- Quando duas ou mais teclas são
e máximo da tela. niciando a rotina de piscar o cursor. pressionadas simultaneamente, geran-
Essa rotina permite ainda que se mo- do códigos no mesmo endereço, o nú-
mero resultante é a soma dos códigos
difique a forma do cursor. Note que
0 CURSOR PISCANTE individuais. Assim, se J, K e L forem
usamos o código ASCII 95, que corres- pressionadas, o número 4 + 8 + 1 6 =
ponde ao traço de sublinhar. Para co- 28 será colocado no endereço 1 4338.
Normalmente, o cursor de texto do locar na tela um retângulo sólido, subs- Para montar sua própria tabela de
TRS-80 é um traço de sublinhar, não titua 95 por 191, na linha 110. correspondência entre teclas e valores,
piscante. Não é fácil localizá-lo com a faça um programa de uma linha, usan-
tela cheia de texto. A dificuldade au- do um PEEK para examinar o conteú-
GRÁFICOS PELO TECLADO
menta em aplicações de deslocamento do de cada uma das memórias dentro
bidimensional do cursor, sobretudo se de um laço infinito.
ele se sobrepõe a um trecho gráfico. Como vimos em artigo anterior (pági-
Um bom recurso consiste em fazer o na 1259), o emprego da rotina INKEYS com as anteriores, geramos o código AS-
cursor piscar repetidamente, distinguín- no lugar do comando INPUT possibili- CII 1. Detectando esse código na rotina
do-se dos caracteres de fundo. No ta a entrada dos caracteres gráficos do INKEYS, bastará somá-lo ao valor 128
TRS-80, porém, só se obtém esse efeito TRS-80 diretamente pelo teclado. Assim, para obtermos em TS (variável de saída)
por meio de software, já que nenhum de se usarmos uma combinação das teclas o gráfico correspondente, que também
seus comandos permite alterar a função <SHIFT> e <LINEFEED> (tecla pa- será impresso na tela.
do cursor. Portanto, a rotina precisa ser ra baixo), teremos o mesmo efeito da te- Substitua a linha 130 por:
suficientemente rápida para não "segu- cla <CONTROL> de outros computa-
rar" o usuário que está digitando o tex- dores, e poderemos gerar códigos ASCII 130 IF ASC[Tl)<32 THEN TS-CHRS
to a uma certa velocidade. diferentes, pelo teclado. Se pressionar- TI+128)
Um problema adicional é fazer o cur- mos, por exemplo, a tecla A, juntamente 140 RETURN
48 PROGRAMAÇÃO DC JOGOS 48 llllllllll II
20 NT-0:NP-0
ESQUEMA DUPLO DE CODIFICAÇÃO 30 FOR 1-1 TO 60:Lt(I)=0
35 FOH J=l TO 60
É possível empregar, porém, um mé- 40 FI(I,J)-0:NEXT JrNEXT I
todo mais elaborado, que adota um es-
quema duplo de codificação: Coloque um comando CLEAR 3000
• quanto mais frequente a letra no na linha 10, antes da declaração DIM,
texto a ser codificado, menor é o núme- para o TRS-80 e TRS-Color.
ro de bits usado para seu código. Por
exemplo: o espaço (caractere mais fre-
quente em qualquer texto) tem um có-
digo binário de três bits (011); a letra E,
de cinco bits (101 11). Já a letra P, não 10 DIM L(60) ,f (60,60) ,c(60)
tão frequente, tem um código de seis bits 20 LET nt-0:LET np-0
(110110), e a letra Z, de oito bits 30 FOH 1=1 TO 60:LET L(i)-0
35 FOR j-1 TO 60
(11111100);
- certos pares de letras muito comuns
40 LET f [i, j)=0:NEXT j :NEXT i
é maior que O (se for, é impar). Final- 730 X=C1 ( J) :C1 (J) «Cl ( J+l) :Ct (J
+1) -X: FL-1
mente, a linha 90 chama a rotina de con-
740 NEXT J
tagem, que começa em 520: 750 IF FL-0 OR N«2 THEN RETURN
760 GOTO 700
770 REM - ROTINA DE IMPRESSÃO
780 NL'0:PRINT
790 PRJNT "FREQUÊNCIA DE PARES
500 REM - ROTINA DE CONTAGEM NO TEXTO" PRINT :
780, utiliza uma rotina de ordenação pa- 860 RETURN técnica de compressão explicada a
ra mostrar os resultados em ordem de- seguir apresenta um alto nível de eficiên-
crescente, ou seja, os pares mais fre- Para não alterar a matriz F, a rotina cia, dependendo do texto a codificar e
quentes em primeiro lugar. de ordenação utiliza um conjunto C, de sua extensão. Trata-se, na realidade,
que funciona como índice para isso, — de uma generalização do algoritmo de
ele é inicializadono começo da rotina codificação por pares de letras: se po-
(linha 695), de modo a conter os núme- demos empregar códigos numéricos pa-
ros 1,2,3 etc. A ordenação (do tipo bo- ra representar os pares de caracteres
680 REM - ROTINA DE ORDENAÇÃO lha) coloca esses números em uma or- mais frequentes em um texto, a fim de
690 N-60
dem diferente. comprimi-lo, é possível também usar
695 FOR J=l TO 60 Cl J = J NEXT : (
) :
700 FL=0 A sub-rotina de impressão examina tríades dos caracteres mais comuns. Na-
710 N=N-l:FOR J-l TO N cada uma das linhas da matriz F. Se o turalmente, essa abordagem se torna-
720 IF Fl tl.Ct(J) >>-Ft (I.Ct (J+l total L(I) da linha I for 0, não se regis- ria cada vez mais inviável, à medida que
D ) ) THEN GOTO 740 trou a ocorrência de nenhum caractere aumentássemos as dimensões da matriz
Illlllllll 48 PROGRAMAÇÃO DE JOGOS 48 IIIIIUIII
F: de 3.600 elementos, para contagem compressão é dada peia divisão de um 250 STOP
de pares, para 216.000 elementos, para valor pelo outro. 500 REM - ROTINA DE CONTAGEM
contagem de tríades etc. Para entender como funciona esse al- 510 LS-LS+" ":J-1:L-1
E por que não montar um dicioná- goritmo e verificar se é capaz de com- 520 C=ASC ÍMIDS (LS. I 1) .
rio com palavras completas? Cada pa- primir o texto-exemplo usado antes, di- 525 IF C<>32 THEN COTO 560
540 1 = 1 + 1 :IF KLEN LS) THEN
lavra receberia um código numérico de gite e execute este programa.
{
a apenas 1,6%.1
860 RETURN
O algoritmo é mais eficaz quando se
10 DIM £ (200) ,c{200) ,pS<200,lS) A parte principal do programa é a ro- combinam textos bem longos e uso de
.CS (50) tina de extraçào de palavras, que vai da um vocabulário reduzido.
20 LET nt = 0 LET np=0:LET nt=0:L
:
linha 500 à 670.
ET nl=0:LET nE-0 Para identificar e separar as palavras
30 FOR 1=1 TO 200 0EC0DIFICAÇS0
contidas em uma linha de texto,essa ro-
40 LET í(i>=0:LET c(l)=l (ina procura o primeiro caractere não-
50 NEXT 1 branco (que não é um espaço) a partir Para ver como o texto comprimido
60 PRINT "ANALISANDO..." do caractere I da linha L$. posição A é reconstituído, acrescente a sub-rotina
70 READ LS:IF L$-"»" THEN GOTO inicial da palavra é armazenada na va-
100 de decodificação:
riável L (linha 560).
75 LÍT nt=nl+l
80 LET nt=nt+LEN L3 Em seguida, a rotina procura o fim
85 GOSUB 510 da palavra: continua a percorrer o tex-
90 LET nf-nf+LEN fS(nl):GOTO 70 to até encontrar o primeiro caractere de
100 PRINT "TOTAL " nt "CARACTE
: ;
:
espaço. Isso é feito pelas linhas 570 a 140 GOSUB 900
RES E ";np;" PALAVRAS" 600. Note que, para evitar que a última
890 REM - ROTINA DECODIFICAÇÃO
110 PRINT "DICIONÁRIO COM " nr 900 NX=0:FOR 1=1 TO NL
;
palavra de um texto se perca, a linha 5 10
"CARACTERES. 910 FOR J-l TO LENÍFS(D)
da rotina sempre acrescenta um espaço 920 PRINT " " PS ASC {MIDS (FS (I
115 PRINT "TEXTO COMPRIMIDO COM ; [
510 LET LS=L3+" " LET i=l:LET : L com NP palavras. Se não existe, a nova
950 NEXT I: RETURN
-1 palavra é acrescentada. Antes de voltar
520 LET c-ASC L$<1 TO í) para a linha 520, para buscar nova pa-
S25 IF c<>32 THEN GOTO 560 lavra no texto, a rotina incrementa em
540 LET l-l+l:IF í < LEN L$ THEN
GOTO 520 Fa frequência de ocorrência da palavra.
140 GOSUB 900
550 RETURN A linha de saída, que contém o texto 890 REM - ROTINA DE CODIFICAÇÃO
560 LET L-i comprimido (armazenada em F$), rece- 900 LET nx-0:FOR i-1 TO nL
570 LET c-ASC L3(i TO i) be um novo caractere, que corresponde 910 FOR j=l TO LEN £S(i)
575 IF c-32 THEN GOTO 610 ao código da palavrano dicionário. Por- 920 PRINT " ";pSÍASC[FS(i.j TO
590 LET i-i+l:IF i-<LEN LS THEN tanto, uma palavra inteira é substituída
GOTO 570 por um byte. 930 NEXT j :PRINT
600 RETURN Concluindo o programa, as rotinas 940 LET nx»nx+l:IF /ix<15 THEN G
610 LET x$-L$(L to 1-1) das linhas 690 e 780 colocam as palavras OTO 950
620 FOR n-1 TO NP 945 LET nx=0:PRINT "PRESSIONE <
630 IF xSOpS (n) THEN GOTO 640
do dicionário em ordem alfabética, exi-
635 LET f (n)-f (n)+l:LET fS(nl)« bindo-as na tela em grupos de quinze,
como mostramos Essa rotina funciona de modo opos-
fS(nl)+CHHS<n) :GOTO 520 a seguir:
to ao da de codificação, mas é bem mais
640 NEXT n
simples. Os códigos armazenados em F$
650 LET np-np+l:LET f<np)-l:LET FREQUÊNCIA DAS PALAVRAS
PS(np)=x3 são recuperados pela função ASC da li-
660 LET nr-nr+LEN x$:LET £S(nl DE 15 nha 920, e servem como índice do dicio-
)=f${nl)+CHRS(np) O 10 nário P$ para reconstruir o texto origi-
670 GOTO 520 A 8 nal. Os espaços entre palavras são inse-
1,5 680 REM - ROTINA DE ORDENAÇÃO E 8 ridos automaticamente.
ROTINAS EM CÓDIGO ROTINAS NAS LINHAS DATA
A ESTRUTURA DE
UMA LINHA
PEEK POKE
DE ENTENDA COMO FUNCIONA
E
A linha DATA é um excelente lugar "moldar" as linhas DATA, dando-lhes 110 X=PEEK(X)+256*PEEK<X+1)
a aparência que julgar melhor. Por 120 GOTO 90
para se colocar programas em linguagem 130 IF PEEK(X+4)<>132 THEN PRIN
exemplo, uma linha do tipo:
de máquina embutidos em um programa T"Esta não é uma linha DATA" PR
330 DATA XXXXXXXX INT:GOTO 70
em BASIC. Aprenda aqui os truques
140 X=X+3
seria transformada em: 150 FOR 1=0 TO CO-1
que facilitam essa tarefa no MSX.
330 DATA A3.F2.01 160 X=X+3
170 IF PEEKtX)-0 THEN X-X+5:GOS
Convém, portanto, que você gaste al- UB 310
gum tempo na criação dessas linhas, se 180 IF PEEK{X+l)-0 THEH POKE X,
uma 32:X=X+6:GOSUB 310
quiser listagem bem organizada.
190 LET AS-HEXS(PEEK(E+I))
Com frequência, armazenamos, em 200 IF LEN(A3)=1 THEN AS="0"+AS
algum lugar da memória, uma rotina em RODANDO 0 PROGRAMA 210 POKE X.ASC(MID$(AS,1.D)
código de máquina, um arquivo de pa- 220 POKE X+l ,ASC (MIDS (AS 2, 1) ,
mos seus códigos nas linhas DATA do digitado essas informações, o computa- 270
programa que os acessa, tornaremos dor pergunta se as linhas DATA já fo- 260 IF IOCO-1 THEN POKE(X+2),4
bem mais fácil o manuseio do sistema, ram introduzidas. Caso isso ainda não 4
viabilizando a obtenção de uma listagem 270 NEXT I
tenha sido feito, o programa será inter- 280 IF PEEK(X+2)<>0 THEH POKE IX
completa e evitando repetidas buscas no
rompido. Finalmente, ele pede o núme- + 2) ,3Z-.X=X*1:G0T0 280
gravador ou no drive, para uma poste-
ro da primeira linha a ser preenchida. 290 LIST
rior junção. Com essas linhas DATA,
Se não encontrar essa linha, o compu- 300 STOP
precisaremos apenas acrescentar um la-
tador interromperá a execução do pro- 310 IF PEEK(X)<>132 THEH PRINT"
ço que, por intermédio do comando PO- Faltam linhas DATA*:STOP ELSE X
grama e imprimirá uma mensagem de
KE, carregue uma determinada região erro.O mesmo irá ocorrer se a linha in- -X+2
da memória com os dados nela contidos. dicada não contiver o comando DATA. 320 RETURN
É importante que todas as linhas re-
servadas "para os códigos estejam em se-
INTRODUÇÃO DAS LINHAS DATA quência na listagem —
durante a execu-
ção, uma mensagem de erro pára o pro- Para entender o funcionamento do
Para apresentar os códigos do arqui- grama quando o computador encontra programa, é necessário conhecer a estru-
vo, o mais conveniente é utilizar núme- uma linha que não seja DATA. tura de uma linha DATA, ou seja, sa-
ros hexadecimais, que ocupam menos ber como ela é armazenada na RAM.
espaço e reduzem a possibilidade de se 10 CLS Ao ligar o computador, digite:
cometer erros na digitação. Além disso, 20 INPUT"Qual o endereco do arq
uivo " EH PflINT 10 DATA A.B.C
o modo como dispomos os números na ; :
P^==-
35 APLICAÇÕES 35
EXECUÇÃO DA MELODIA
EDICAO
GRAVAÇÃO E LEITURA
Jl J
.
35 APUCACÓeS 35
o número, mais rápido o andamento. A nota, pressione as teclas com setas para As notas estão dispostas no teclado
a esquerda c a direita. A oitava e a du- em duas fileiras: Q corresponde ao dó
opção 2 possibilita a digitação das no-
tas por meio de um código simples. As ração correntes estarão impressas no to- da oitava mais baixa; I. ao dó da oitava
doze notas possíveis —
C (dó), C # (dó po da tela. Enquanto você toca, as no- média, e V, ao dó da oitava mais alta.
sustenido), D (ré), até o B (si) —
são nu- tas vão sendo exibidas com a duração A nota A # (A ou lá sustenido) não po-
meradas de 0 a e a pausa recebe o
1 1 , e oitava respectivas. de ser obtida com a tecla " ", já que es-
código -4. A oitava da melodia é es- Depois de experimentar essa manei- ta não gera nenhum código ASCII que
pecificada por um valor compreendido ra de entrar com as notas, selecione a identifique o seu pressionamento. As-
entre 1e 7, e o número que indica a du- opção 4 (as notas que você tocou per- sim, A# foi atribuída à tecla "[", dei-
ração de cada nota corresponde à sua manecem na memória). Ela permite a xando uma pequena descontinuidade no
duração teórica. Assim, uma semicol- entrada das notas por um processo que teclado. A barra de espaço indica uma
cheia vale uma colcheia, 2; uma se-
I: em certos casos pode ser bem útil. Pri- pausa com a duração especificada.
mínima, 4; uma mínima, 8 e uma semi- meiro, digite o nome da nota, de "a" O computador registrará a nota que
breve, 16. Essas durações valem, igual- até "f", para as notas naturais; A, C, você tocar, mas não imediatamente, de-
mente, para a pausa. D, F, G, para acidentes (bemóis são co- vido ao tempo necessário para o proces-
O código é muito fácil de usar. Por locados como sustenidos; logo, Bb = samento das instruções. Portanto, não
exemplo, a nota dó, segunda oitava, se- A# etc), e "p". para uma pausa. Em tem nenhuma importância que você de-
micolcheia, tem o código 1024; a nota seguida, entre a oitava —
um número more mais ou menos para teclar uma
si, quarta oitava, semibreve, é 11416. de 1 a 6— e a duração da nota —
letras nota. Também não haverá problema se
Para pausas, — 404 é o intervalo de uma w, h, q, e, s, correspondentes a semibre- algum erro for cometido: será fácil cor-
semínima. Não se esqueça de que cada ve, mínima, semínima, colcheia e semi- rigir as notas mais tarde.
código tem dois dígitos; assim, uma col- colcheia. Para uma nota pontuada, sim- Caso você queira mudar a oitava an-
cheia vale 02, e não 2. plesmente adicione um ponto no final. tes de executar uma nota, use as teclas
Após digitar algumas notas, pressio- Por exemplo: A2e. significa nota A (lá com setas para cima e para baixo. Para
ne < RETURN > para voltar ao menu;' sustenido), oitava 2, colcheia pontuada; alterar a duração da nota, pressione as
selecione a opção 3 para tocar a melo- c3w significa nota C (dó), oitava 3, se- teclas com setas para a esquerda e a di-
dia introduzida até o momento. mibreve. reita. A oitava mais baixa disponível no
Se você quiser alterar, apagar ou Entre as notas na ordem que quiser teclado estará impressa no topo da te-
acrescentar algumas notas, selecione a eouça a musica quando desejar, seleeio- ia, bem como a duração das notas, que
opção 4 do menu. Inicialmente, pressio- nando a opção 7 do menu principal. vão sendo exibidas à medida que você
ne D. para selecionar as notas que se- Outras opções do menu são a mudan- as toca. Para obter uma duração pon-
rão modificadas. Depois, entre o núme- ça no tempo de execução e a mudança tuada, selecione as teclas <INS> e
ro das notas e tecle E para editá-las. Pa- geral de oitava (com efeito retroativo) <DEL>; para apagar a última nota
ra mudar uma nota, digite seu número, — para executá-las, basta que teclemos executada, a tecla <CI.S>.
< RETURN > e seu código. Para inse- um novo valor. Otempo de execução Tendo experimentado essa forma de
rir uma nota, aperte X e entre seu nú- varia de 0 a 255 e indica a velocidade composição, use a tecla <ENTER> e
mero. Caso queira apagar tudo c reini- com que as notas são tocadas. Utilizan- volte ao menu principal. Selecione a op-
ciar o trabalho, selecione a opção 5. do as opções Superior e Inferior, você ção 4 (as notas que você tocou perma-
Quando estiver satisfeito com a me- pode subir ou descer a oitava de qual- necem na memória). Ela permite a en-
lodia, grave-a através da opção 6. quer grupo de notas. trada das notas por um processo que,
A opção 7 permite recuperar uma Para editar a melodia, selecione a op- em certos casos, pode ser muito útil.
música da fita cassete. ção 6. Com ela, você lista as notas e Primeiro, digite o nome da nota, de
identifica as que quer alterar. É possí-
vel escolher entre apagar, inserir, alte-
rar ou continuar. Experimente cada uma
dessas opções. Para apagar notas, en-
Ao executar o programa, um menu tre o número inicial e o número de no-
com nove opções será exibido na tela. tas que deseja eliminar. Para inserir, di-
Comece com a opção 3, para tocar mú- gite o número da nota que está antes do
sica diretamente no teclado. ponto onde se iniciará a inserção e en-
As notas estão dispostas em duas fi- tre uma nota por vez. Para alterar uma
leiras, como vimos no artigo da página nota, tecle seu número e entre o novo
72 1
. Odó menor corresponde ã tecla Q; conteúdo.
o dó médio, á I, e o dó maior, à V. A Finalmente, quando estiver satisfei-
barra de espaço indica uma pausa com to com a meiodia, armazene-a em fita
a duração desejada. O computador re- com a opção 2 e recupere-a quando qui-
gistrará cada nota que você tocar, mas sercom a opção l
"a"aié"f", para as notas naiurais; A, nota e o número de notas que deseja eli-
C, D.F.G, para acidentes (bemóis são minar. Para inserir, digite o número da
colocados como sustenidos; logo, Bb = nota imediatamente anterior ao ponto
A # etc.X e "p", para uma pausa. Em onde pretende iniciar a inserção e entre
seguida, entre a oitava — um núme- uma nota de cada. Para alterar uma no-
ro de 1 a 8 —
e a duração da nota — ta, tecle seu número e entre o novo
letras w, h, q, e. s, t, u, corresponden- conteúdo.
tes à semibreve, mínima, semínima, eol- Finalmente, quando estiver satisfei- TRANSCRIÇÃO DE PARTITURAS
cheia, semicolcheia, fusa e semiíusa. Pa- to com a melodia, armazene-a em fita Nem todos conseguem executar
ra uma nota pontuada, adicione um com a opção 2 e recupere-a quando qui- música simplesmente sentando-se
ponto no finai. Por exemplo: c8t. sig- ser com a opção 1 diante do micro e usando editor mu-
nifica C (dó), oitava 8, fusa pontua- sical como um processador de textos.
da; A4u significa A (lá sustenido), oita- Embora a opção de playback (execução
va semifusa.
4, da melodia entrada com o auxilio do
Entre as notas na ordem que quiser editor) ajude bastante, nosso programa
mas notas, entre o número da primeira 4560 LET M=TNT (H/10) +{0-l) "12- 36
4786 FOP i=ct TO ia STEP -l LE
*NN- l)-Di LET T t(2*(i + l>)-t(2*j) LET t(2Mi:
4735 IF EN GOTO 40
4/40 F I 48.10INPUT de
4/45 CLS 4835 IF dfi-0 THEN «OTO 4000
4/50 GOSUB 2500 4.B40IF de>ct THEN GOTO 4B00
4/55 PH TNT 4B45 FOR i»de TO ct LET t(2*0 :
35 APLICAÇÕES 35
S(AS.4,1)+PS :
"
1740 PRINT05 "MUDANÇA GERAL DE 2020 CLS
,
1950 INPUT AS:IF AS = "" THEN RET (BS)-1):IF CS="0" THEN CS-"1" 2170 INPUT #1 .NN.TE
URN 2050 IF AS="S" THEN CS=CHRS (ASC 2180 FOR 1= 1 TO NN
I
1960 IF AS<>"S" AND ASO" "THEN (BS)+1):IF CS'"9" THEN CS-"8" 2190 INPUT il.NS(I)
1940 2060 MIDS(NSU) 2.D-CS , 2200 NEXT CLOSEI 1 RETURN
: :
1970 LOCATE 4.9: INPUT" INICIO EM 2070 NEXT:BETURN 2210 CLS:COLOR 15.6
(ENTER= 1 " ;ST ) 2080 CLS:COLOR 15,6 2220 LOCATE 8 . PRINT"SALVAR MU
1980 IF ST<=0 THEN ST=1:EN=NN 2090 LOCATE 5,1: PRINT"CARREGAR SICA EM FITA"
1990 LOCATE 4.10: INPUT" FINAL E MUSICA DO GRAVADOR"; 2230 LOCATE 4,6 PRINT"aperle SA
M (ENTER^FIM " EN )
r 2100 LOCATE1 2 3 PRTNT"ATENÇAO
, : J ! UE DC
2000 IF EN=0 OR EN>NN THEN EN-N 2240 :
LINE INPUT"NOME
N 2110 LOCATE 4,4:PRINT" ESTA OP ARQ "
:
2010 IF ST>EN THEN ST = EN CAO IRA APAGAR 0 2250 OPEN "CAS:AS" FOR OUTPUT A
2020 FOR I=ST TO EN UALQUER MUSICA NA MEMORIA" S*l
2030 BS=MIDS(NS!D ,2,1) 2120 LOCATE 4 7 INPUT"VOCE QUER
. : 2260 PRINT II NN ,TE
,
"
S=BS+"# OAD no gravador"
1640 IF BS-"P" THEN CS""- 2150 LOCATE 4,12:LINE INPUT"NOM
1650 CS=" "+CS EARQ " AS
!
;
RINGS<9,32)
1670 CS=CS+" "+LES(INSTR(P1S.MI
DS (AS. 3.1) )
S
1700 IF RTOO THEN RETURN
1710 LP-LP*1:IF LP-13ANDC-1 THE
N LP = 0 :G0SUB lQlOrCLS
1720 NEXT:GOSUB 1010
1730 LOCATE 2,18: PRINT"APERTE Q
UALOUER TECLA-MENU PRINCIPAL *
1740 QS-INKEYS:IF QS""" THEN 17
40
1750 RETUPN
1760 CLS:COL0R 1.10: LOCATE a.l:
PRINT"M0DO -TOCAR NOTAS"
1770 ST-1:IF NN=0 THEN RETURN
1780 LOCATE 4,5: INPUT" INICIO NA
NOTA (ENTEB^l) " ST :
EXECUÇÃO" " TE r
1B40 AS=NS(I)
1B50 BS-LEFTS (AS 1) IF BS""P"TH . :
1890 NEXT I
1900 RETURN
1910 CLS:COLOR 1,3: ST-1 EN-NN :
Em artigos anteriores sobre a lingua- tação dos sprites na tela em diferentes dos de 0 a 9 e de 36 a 59, são matrizes
gem LOGO. vimos como desenhar na planos, destacando-os ou ocultando-os de 16 x 16 pixels contendo figuras que
tela com a tanaruga. um cursor gráfico conforme os critérios que determinam o usuário não pode mudar. O acesso a
a prioridade de uns sobre os outros. eles é dado pelo comando MUDEFIG,
que pode ser ativado ou desativado por
Aproveitando os recursos do MSX, seguido do número do sprite.
meio de comandos primitivos.
Como você deve ter notado, a elabo- o HotLOGO, versão lançada no Brasil
ração de uma figura mais complexa de- pela Sharp para computadores dessa li- As figuras de 0 a 9 são:
nha, inclui entre suas propriedades a 0 circulo 5 foguete
mora um lempo razoavelmente longo,
programação de sprites verdadeiros. coração 6 tijolo
o que torna impossível, por exemplo, 1
mos como trabalhar com sprites no os sprites não são controlados por hard- los e posições.Todos aceitam os mes-
MSX. única máquina nacional que pos- ware, como nos micros da linha MSX. mos comandos e podem ser movimen-
tados simultaneamente na tela. Os spri-
sui esse recurso implementado em hard-
ware. O Speetrum, o TRS-Color, o Ap-
ple e o TK-2000 têm comandos especiais SPRITES PRE-PROGRAMADOS
para definir blocos gráficos (UDG) e
usá-los em animações rápidas. Mas es- Existem doistipos de sprites em Hot-
ses micros não dispõem de sprites "ver- LOGO: os pré-programados e os pro-
dadeiros" —
ou seja, não contam com gramáveis pelo usuário. Cada um deles
controle de hardware (pelo Vídeo Dis- recebe um número inteiro, entre 0 e 59.
plav Processor) que garanta a movimen- Os sprites pré-programados, numera-
IIIIIIIIIIIHHH 5 UNGUAUNS 5 «|||||||||
0 QUE E UM SPRITE E VERDADEIROS
TARTARUGAS X SPRITES H0TL0G0
VERSÕES DO LOGO SPRITES PRÉ-PROGRAMADOS
COM SPRITES COMO PROGRAMAR
SPRITES FALSOS UM NOVO SPRITE
ies fixos (O a 9), porém, não mudam de quiser guardar a figura que está editan-
orientação, como ocorre com as tarta- do, tecle <CTRL> e <STOP>.
rugas ao encontrarem um comando PA-
RA DIREITA ou PARAESQLERDA.
ANIMAÇÃO GRÁFICA
IIIHIIHIllW^—^^MBBMIIIIIIIIHI
como comprimir
DE TEXTOS C
seu desempenho no desenvolvimento
de um jogo de aventura.
DESENVOLVIMENTO DE AVENTURAS
Em
uma série de artigos de Progra-
mação de Jogos (páginas 208, 226, 270,
306 e 394), tratamos das principais téc-
nicas de desenvolvimento de aventuras
em BASIC. Com um número mínimo de
alterações no programa então forneci-
do, você poderá empregar as rotinas de
compressão e descompressão de textos,
economizando uma quantidade razoá-
vel de memória.
Se você não armazenou o programa
mencionado, digite-o agora, acompa-
nhando as listagens dadas nos sucessi-
vos artigos. Entretanto, cada vez que en-
contrar uma mensagem tal como:
345 PRINT "TIJOLOS SAO MUITO
PESADOS, SEU BHAC0 DEVE ESTAR
DOENDO.
Illllimilll « P*OG«AMAÇÃ0DtJ0GOS 49
1MHH| |||||1
substitua-a por outra mais curta, ape- outras mensagens (VOCE PEGOU); grama onde ocorrem. Agrupe as
elas
nas para lenibrar-se do que deve ser de- mensagens de ajuda (VERIFIQUE SE mensagens segundo o seu tipo: primei-
finido ou impresso ali. Por exemplo: ALGUMA PORTA ESTÁ ABERTA); ro as mensagens de localização, depois
345 PBINT "TIJOLO PESADO" instruções do jogo. as de identificação de objetos encontra-
dos etc. Deixe as instruções para o fim.
Procedendo assim, você poderá tes- Os jogos de aventuras dificilmente Isso facilitará a reprogramação do jo-
tar se o programa completo de aventu- contêm todos esses tipos de texto. De- go de aventura e tornará menos cansa-
ras está funcionando bem. sem gastar pois de verificar quais deles estão pre- tiva a "caçada" aos erros cometidos.
muito tempo digitando mensagens ex- sentes, você deverá decidir se vale a pe-
tensas, que depois serão retiradas do na comprimi-los. Listas de nomes cur-
programa principal. tos (objetos e locais, por exemplo) não
Quais são as mensagens e frases que devem ser comprimidas: o número de
admitem compressão? Em um jogo de bytes economizado possivelmente não Tendo todos esses dados, digite no
aventuras, utilizam-se doze tipos prin- compensará os bytes de código de pro- computador um programa em BASIC
cipais de texto alfanumérico: grama gastos para acessar o texto com- constituído apenas de linhas DATA,
primido. Todos os outros tipos de tex- com as mensagens que serão comprimi-
- nomes de lugares (por exemplo: to (sobretudo as instruções) podem e de- das. Cada mensagem deve ficar em uma
HALL DE ENTRADA); vem ser comprimidos, desde que tenham linha DATA separada.
- mensagens de localização (VOCE ES- duas ou mais palavras: isso levará a um Preparamos essa listagem para o jo-
TÁ NO HALL DE ENTRADA); ganho real de espaço. go de aventura publicado em INPUT.
- verbos (NADAR); Para localizar as mensagens que se- Ela serve para todos os micros, e come-
- nomes de objetos (REVOLVER); rão comprimidas, o melhor é tirar uma ça na linha 5000. Em algumas máqui-
- mensagens de identificação de objeto listagem em impressora e marcar todos nas é possível digitar o texto em letras
(VOCE PEGOU UM REVOLVER); os pontos em que elas ocorrem. Em se- minúsculas e a acentuação correta, mas
- mensagens de advertência(ESTA guida, faça uma lista das mensagens, in- não o faça. Isso é imporiante, pois, co-
MUITO ESCURO PARA VER AS dicando os números das linhas do pro- mo vimos nos artigos anteriores, empre-
SAÍDAS); garemos um código reduzido de repre-
- mensagens de erro (ISTO NÃO PODE sentação de caracteres, baseado em sua
SER ESVAZIADO);
- consequências de açôes do jogador ou
do programa (exemplo: AS BOLI-
NHAS SE ESPALHARAM PELO
CHÃO);
- perguntas ao jogador (QUER JOGAR
NOVAMENTE?);
- frases comuns, em conjunto com
" " "
49 PROBUMAÇÃODCJOGOS 49
5290 DATA "FIM DO PROGRAMA DE A res mais comum têm códigos cie um nib-
máximo de 30-35 caracteres nesse códi- VENTURAS" ble (um número de I a 15). Os quinze
go, trabalharemos apenas com as letras
5300 DATA "QUER JOGAR NOVAMENTE caracteres seguinies, na ordem de fre-
maiúsculas e poucos caracteres de pon- CS/N) ?"
quência, têm códigos de dois nibbles
tuação. 5310 DATA "HA UM SACO DE BOLAS (um 0, seguido do código de 1 a 15); os
DE GUDE AQUI" próximos quinze têm códigos de irês
5320 DATA "TEM UM TIJOLO NO CHA
0" nibbles (dois 0, seguidos de um código
5330 DATA "HA UMA CORRENTE PEND de I a 15) e assim por diante. Em geral,
URADA SOBRE 0 TRONO" os quinze caracteres mais frequentes
5000 DATA "VOCE ESTA DO LADO DE
FORA DE UM GRANDE PRÉDIO" 5340 DATA 'TEM UM REVOLVER NO C correspondem a 80% ou mais de todo
5010 DATA *V0CE ESTA A BEIRA DE HAO" o texio, e é por isso que se obtém uma
UM GRANDE RIO* 5350 DATA "UM OLHO CRAVEJADO DE compressão em torno dos 50%.
5020 DATA "VOCE ESTA NUMA FLORE BRILHANTES ESTA NO CHAO" Se usarmos uma lista dos caracieres
STA PETRIFICADA" 5 360 DATA "VOCE ESTA DIANTE DE mais freqiienies em textos em português,
5030 DATA "VOCE ESTA NUMA SALA UMA LÂMPADA" conseguiremos uma boa eficiência de
EMPOEIRADA" 5370 DATA "DE REPENTE SURGE UM compressão, mas não a ideal. Para al-
5040 DATA "VOCE ESTA NUMA SALA COLETOR DE IMPOSTOS" cançar o nívelmáximo dc eficiência, de-
ESCURA" 5380 DATA "EU NAO SEI COMO"
vemos usar a ordenação de caracteres
5050 DATA "VOCE ESTA EM UM ATAL 5390 DATA "VOCE PEGOU"
5400 DATA "NAO ESTA AQUI encontrada no próprio texto. Se você
HO ENLAMEADO"
5405 DATA "PRESSIONE QUALQUER T quiser determiná-la, siga estas etapas:
5060 DATA "VOCE ESTA NA ENTRADA
DA CIDADE OCULTA" ECLA PARA CONTINUAR..."
5070 DATA "VOCE ESTA NO HALL DE 5410 DATA "INSTRUÇÕES" - carregue no computador as linhas DA-
ENTRADA" 5420 DATA "DEVIDO A UM COLAPSO TA com todas as mensagens;
5080 DATA "VOCE ESTA NO PÁTIO" FINANCEIRO, VOCE TEVE QUE DEIXA - acrescente as linhas do programa de
5090 DATA "VOCE ESTA NO JARDIM" R 0 PAIS. SEUS PROBLEMAS VAO TE contagem de letras fornecido no pri-
5100 DATA "VOCE ESTA NO GUARDA- RMINAR QUANDO VOCE ENCONTRAR 0 meiro artigo da série (página 1332);
LOUCAS" LEGENDÁRIO OLHO CRAVEJADO DE BR - rode o programa e anote o resultado.
5110 DATA "VOCE ESTA NA SALA DO ILHANTES DE UM TOTEM INCA."
TRONO" 5430 DATA "DEPOIS DE TRAZE-LO,
VOCE TERA QUE ENCONTRAR A SAÍDA Para poupar trabalho ao leitor, pre-
5120 DATA "ESTA MUITO ESCURO PA
RA VER AS SAÍDAS" CUIDADO COM O COLETOR DE IMPO paramos a lista de frequência de carac-
STOS teres no texto da aventura de INPVT
5130 DATA "COMO VOCE NAO TEM NA !
DA QUE POSSA SER CONFISCADO, EL 5440 DATA "*" (artigo da página 208 e seguintes).
IIIIIIIIIIM1 « PHOGRAMAÇÃODiJOGOS 49 IIIIII
(
LET kS (2) ""PHGQBFJ , .
!
-?XZ " r LET
k3<3>-")/"
180 PRINT "CODIFICANDO..."
190 LET i-0:LET k-1
200 READ LS:IF LS=""" THEN GOTO
230
210 GOSUB 710:LET i-i+l:LET f S
i)-x3 ACENTUANDO TEXTOS
215 PRINT isLS COMPRIMIDOS
220 GOTO 200 Para os perfeccionistas da progra-
230 LET nL-I mação, é frustrante não poder usar ca-
240 PRINT INPUT "NUMERO DA MENS
:
racteres acentuados em um texto que
AGEM ";1 será comprimido pelo algoritmo esta-
242 IF i=0 THEN GOTO 300 tístico discutido neste artigo. Mas. em
) 245 IF i<l OR i>nL THEN PRINT " geral, a falta de acentos não dificulta
*** NAO EXISTE" :GOTO 240
250 LET LS-fS(i) :G0SUB 870 Entre as poucas exceções destaca
O primeiro conjunto dc quinEe carae 290 GOTO 240 se a palavra é, que, sem acento, pode
teres (KSU)) é formado por: branco, 300 STOP impedir a compreensão do texto. Para
A,E,0,S,R,D,C,N,T,U,1,M,V e L. Os evitar esse problema sem aumentar o
demais caracteres fazem parte, portan As sub-rotinas que começam nas li- número de caracteres do conjunto uti-
to, dos conjuntos seguintes. nhas 710 (codificação) e 870 (decodifi- lizado, recorra ao apóstrofo: coloque-
De posse dessa lista, podemos escre- cação) podem ser copiadas integralmen- o logo após a letra que deve ter acen-
ver um pequeno programa para testar te do programa listado no primeiro ar- to agudo, sem deixar espaço — o re-
tigo, para os computadores respectivos.
sultado será satisfatório.
se a compressão e a descompressão es
tão funcionando com os textos de exem A linha 20 do programa define os três
pio. Carregue novamente na memória conjuntos de códigos de caracteres. O
somente as linhas DATA anteriores, e laço formado pelas linhas 1-80 a 220 primido; a outra efetua a descompres-
adicione este programa: comprime o lexto, lendo-o linha por li- são quando solicitado. Explicaremos
nha em DATA e colocando o resultado mais adiante como usá-las.
no conjunto F$ (uma mensagem por li- No programa-exemplo, o texto com-
El El OE GSM nha). A sub-rotina de codificação é cha- primido foi armazenado em um conjun-
mada em 210. to FS. Portanto, bastaria escrever uma
10 DIM FS(100) ,KS(3) Finalmente, as linhas 240 a 290 soli- sub-rotina de gravação desse conjunto
20 KS(l)-" AE0SRDCNTUIMVL":KS(2
citam ao usuário o número da mensa- (com texto comprimido) e, depois, uma
-"PHGQBFJ t-7XZC:KÍ(3>-")/"
.
CLEAR 2000 Neste se introduzem apenas as rotinas bytes, e pode armazenar um número en-
5
responsáveis pelo carregamento, des- tre - 32768 e 32767. O tamanho de T°?o
compressão e impressão. será igual ao número de caracteres com-
O segundo programa compõe-se de primidos (no exemplo anterior, 447 bytes).
duas rotinas que podem ser acrescenta- Para localizar o início de cada men-
das ao jogo de aventura. Uma delas lê sagem nessa sequência contínua de có-
o arquivo sequencial com o texto com- digos, temos que criar um segundo con-
.
QQVA
700 REM - ROT IMA DE CODIFICAÇÃO
32768
796 NC-NC+1: RETURN
-32768 e 32767.
Segue-se o programa principal:
710 N-0:LN-0
720 FOR J-l TO LEN (L$)
730 CS-MIDSÍLS. J.U
740 P-INSTR{KS(K) ,CS>
Para executar a rotina nos micros 10 DIM K$(3) ,Tt (450) .At (46)
750 N-N+l :CI (N) -P:LN-N
compatíveis com o Apple, acrescente: 15 DIM Nt (2) .Ct (4)
755 IF N<4 THEN GOTO 775
20 KS(l)-" AEOSRDCNTUIMVL-:KS(2
2)-"PHGQBFJ. !-?X2(" :KS<3)-")/"
.
J
?^ r*> c*j ,\t
MUNIU 49 PROGRAMAÇÃO DE JOGOS 49 lllllllll
TRS-80 e TRS-Color, acrescente a linha: 440 FOR I-l TO NL+l:PRINTIl,At Inicialmente, carregue o jogo de
(I) NEXT I
: aventura completo e acrescente as linhas
5 CLEAR 2000 450 FOR 1-1 TO NC: PRINTtl Tl (I , abaixo (renumere-as para compatibilizar
A
sub-rotina para o armazenamento ) NEXT I
:
com o programa do jogo, se isto se fi-
em arquivo sequenciai começa na linha 460 CL0SEÍ1 RETURN :
zer necessário):
400, e grava os conjuntos T (com os có- r—r-] r-jri
digos comprimidos) e A
(apontadores): (j|J |
Q | 10 DIM kS<3. 15) t [450) ,a{46)
15 DIM c(4)
,
400 REM - ROTINA DE GRAVAÇÃO 460 RETURN 200 PRINT " ENTRE A MENSAGEM ";:
410 INPUT "NOME DO ARQUIVO" N, ;
LINE INPUT LS:IF L$-"«" THEN GO
420 OPEN "0-.I-1.NS Para executar o programa completo TO 230
430 PRINTi-l,NL.NC de compressão, acrescente ao final as li- 205 LET l-i+l:LET a(l)-nc
440 FOR 1 = 1 TO NL+1 PRINT(-1
nhas DATA. O computador executará 210 GOSUB 710
:
[I) :NEXT I
toda a tarefa automaticamente. À me- 215 PRINT l a (l ) LS
; ;
Se dimensionarmos T e A no limite,
obteremos o máximo de economia de
memória. Acrescente a rotina de codi-
ficação:
IIIIIIIIIIIIHB 49 nooum»oDiJOGos *9 WHHHIHW
720 FOR 3-1 TO LEN LS T 3 895 Ct<3)-C2 AND 15:Ct(4)-(C2
730 LET cS-LS(J) 795 LET t{rtc)-(c(l) OR (16"c AND 240) /16
740 FOB p-1 TO 15:IF cS-kS(k.p) (2) ) +256* (c(3) OR (16*c(4)))
) 900 FOR L-l TO 4
THEN GOTO 750 -32768 910 IF CMD-0 THEN K-K+l:GOTO
745 NEXT p LET p=0
:
796 LET nc=nc+l RETURN : 930
750 LET n»n+l LET c(n)-P:LET L
:
920 PRINT MIDSÍKS(K) ,CI(L) .1) ;
-
coEiaiEiMr 500 REM - ROTINA DE LEITURA
510 INPUT "GRAVADOR PRONTO ";NS
530 INPUTt-l.NL.NC
540 FOR 1-1 TO NL+1:INPUT#-1,AÍ
(If :NEXT I
550 FOR 1-1 TO NC:INPUT#-1.TÍ(I
) : NEXT I
560 RETURN
49 PROGRAMAÇÃO DE JOGOS 49
•1 30 GOSUB 510
530 INPUTH.NL.NC 240 PRINT: INPUT "NUMERO DA MENS
540 FOR 1-1 TO NL+l:INPUTtl.AI AGEM " j
COMO ADAPTAR 0 PROGRAMA
(I) :NEXT I 242 IF 1-0 THEN GOTO 300
550 FOR 1-1 TO NC:INPUTIl,Tt(I 245 IF Kl OR I>NL THEN PRINT "
Carregue de novo o programa de
):NEXT I *** NAO EXISTE" :GOT0 240 aventura e localize as linhas que contêm
560 GLOSEI 1 RETURN
: 250 GOSUB 670 mensagens incluídas na lista de compres-
290 GOTO 240 são. Suponhamos que você encontre a
300 END
seguinte linha {abreviada, como reco-
mendamos no começo deste artigo):
As linhas 10, 20 e 30 desse programa
500 REM - ROTINA DE LEITURA 345 PRINT "TIJOLO PESADO"
devem ser colocadas no inicio do pro-
510 INPUT "GRAVADOR PRONTO ";NS
530 RECALL NI RECALL At RECALL
: :
grama do jogo. Elas dimensionam os Substitua-a por:
Tt:NL-NI(l) :NC-NÍ<2> conjuntos de trabalho do descompres-
345 LET I-17:GOSUB 870
560 RETURN sor de textos e chamam a rotina 510. Es-
ta carrega os conjuntos T e A, a partir Essa linha iguala o apontador I ao
Apresentamos a seguir um pequeno do texto comprimido que está armaze- número da mensagem na lista compri-
programa de teste. Com ele, você terá nado na memória auxiliar. mida, e passa o controle para a sub-
oportunidade de verificar o funciona- rotina de descompressão. Esta localiza
mento conjunto das rotinas de leitura e o início e o fim da mensagem, no con-
de descompressão: junto de apontadores A, e imprime na
tela o lexto descomprimido.
Repita esse procedimento com todas
as linhas onde ocorrem mensagens, e
grave o resultado final. Não se esqueça
de adicionar as linhas 1 0, 20 e 30 do nos-
so exemplo (renumeradas, se for o caso).
— iiiiiiiii
Muitos consideram o Pascal
melhor alternativa para o BASIC.
como a
Para quem está familiarizado com A programação estruturada lambem FUNDAMENTOS DO PASCAL
apenas uma linguagem de programação, é um aspecto importante de uma lingua-
o aprendizado de outra pode apresen- gem imperativa, o Pascal. Como vimos
tar maior ou menor dificuldade — o que no artigo da página 1288, ele faz parte O
Pascal foi criado em 970 pelo pro-
1
depende, sobretudo, do grau de seme- da família de linguagens algorítmicas e fessor Niklaus Wirth, do Instituto Fe-
lhança entre as duas linguagens. declarativas iniciadas com o ALGOL. deral de Tecnologia em Zurique, Suíça.
Se a estrutura e sintaxe de ambas fo- Sua filosofia pode parecer totalmente Seu nome é uma homenagem a Blaise
rem parecidas, basta fazer uma tradu- estranha ao programador BASIC. Ain- Pascal, filósofo e matemático do sécu-
ção: o novo "vocabulário" é aprendi- da que experiente, este está acostuma- lo XVII, responsável por importantes
do, e as regras de formação de instru- do a elaborar programas no teclado, tes- descobertas cientificas e inventor de uma
ções são aplicadas da mesma maneira. tando e alterando seções à medida que das primeiras máquinas de calcular me-
As vezes, porém, a diferença entre as progride, até chegar a um resultado que, cânicas, a Pascalina.
linguagens é tão grande, que o aprendiz muitas vezes, evidencia um objetivo não O
objetivo de Wirth era desenvolver
se vê forçado a abrir mão das regras que muito claro no começo do trabalho. O uma linguagem destinada a ensinar os
conhece e adotar um outro raciocínio. Pascal só lhe parecerá menos complica- conceitos fundamentais de estruturas de
A linguagem LOGO, por exemplo, do se ele tiver desenvolvido hábitos de programação. Essa linguagem deveria
examinada em artigos anteriores, foi programação estruturada —
em BASIC estimular o estudante a elaborar a estru-
projetada para facilitar ao máximo a in- ou outra linguagem. tura do programa antes de começar a
trodução de iniciantes ao mundo da pro- Por que então dar-se ao trabalho de escrevê-lo. Nela Wirth introduziu uma
gramação. Entretanto, para quem foi aprender Pascal? Além de permitir a ela- serie de recursos a fim de permitir que
"criado" em BASIC — como a maio- boração de programas mais bem estru- a solução programada contenha a pró-
ria dos usuários de micros pessoais — turados e de simplificar a documenta- pria informação a ser processada.
a adaptação pode apresentar problemas. ção e a execução de testes, essa lingua- Emoutras palavras, para se escrever
Algumas vezes, chega a ser difícil acei- gem apresenta certas vantagens sobre o um programa em Pascal é necessário
tar as afirmativas de que LOGO foi fei- BASIC. Em programas muito comple- planejar como resolver o problema. A
to para principiantes! xos, o Pascal produz um código mais solução escolhida é refinada sucessiva-
Isso ocorre, fundamentalmente, por- claro e curto. A facilidade em definir mente, cobrindo detalhes cada vez me-
que o LOGO tem uma estrutura inter- procedimentos possibilita a programa- nores, até se alcançar o nível de um pro-
na bastante diferente da do BASIC, em- ção modular e a formação de bibliote- cedimento (unidade algorítmica). Só se
bora seu vocabulário seja mais simples. cas de procedimentos, que podem ser trabalha no programa principal depois
LOGO é uma linguagem mais bem es- aproveitados integralmente em outros que todos os procedimentos necessários
truturada, e trabalha com listas hierár- programas. Finalmente, as versões mo- estiverem programados.
quicas, como o L1SP. Essas caracterís- dernas do Pascal são adequadas tanto Para desenvolver o Pascal, Wirth uti-
ticas estimulam o programador inician- para programação científica (cálculos lizou muitas das idéias em que se baseia
te a adorar padrões estruturados de ra- matemáticos) quanto para o desenvol- o ALGOL 606. Originalmente orienta-
ciocínio e de resolução de problemas. vimento de aplicações comerciais. do para o ensino de linguagens estrutu-
radasem computadores de grande por-
o PASCAL foi adaptado para uso em
te,
microcomputadores. Hoje, é extensa-
mente empregado tanto no ensino quan-
to em aplicações comerciais em micros.
que deve conhecer cada detalhe. 1. Estabeleça as condições iniciais ê um end. Alguns compiladores permi-
A próxima etapa consiste em fazer a 2. Inicie o procedimento tem o uso desse sinal desde que se colo-
subdivisão dos passos em operações me- 3. Entre os números que uma linha em branco depois.
nores —
processo denominado refina- 4. Acrescente os números O Pascal conta, naturalmente, com
mento gradativo. Você encontrará esse 5. Imprima o resultado vários outros comandos e funções, ad-
conceito na metodologia de desenvolvi- 6. Termine o procedimento mitindo também a introdução de notas
mento de programas muito extensos, e comentários no programa, entre cha-
que não podem ser projetados de uma O
programa segue rigorosamente o ves: lei. Com os microcomputadores que
só vez. No nosso exemplo, refinando o algoritmo. Observe que é necessário de- não têm essas teclas, pode-se utilizar
passo 1, teríamos: clarar explicitamente os passos 1, 2 e 6 uma combinação de parênteses com as-
— ou seja, precisamos especificar o que teriscos (* e *).
1.1 -Pesar a farinha é trabalhado pelo programa, quando
1.2- Pesar a manteiga iniciá-lo e quando encerrá-lo.
com Este é um dos fatores que explicam EDIÇÃO DO PROGRAMA
1 .3 - Misturar a manteiga a farinha
1.4 - Adicionar água a maior extensão de um programa escri-,
1.5- Mexer to em Pascal em relação a um equiva- O processo de edição e teste de pro-
lente em BASIC. Vamos agora analisar gramas em linguagem compilada, como
Poderíamos refinar ainda mais cada o programa linha por linha: o Pascal, não é tão direto como com um
passo, até chegarmos a um nível de sim- interpretador. Normalmente, edita-se
ptrogram exemplo ( ínput output
, ) ;
apenas o programa-fonte, com o auxí- ce a vantagem final de inviabilizar a O uso mais sério do Pascal requer
lio de um editor de linhas (quase sem- ação de "espiões". Assim, depois de componentes mais caros, exigindo, no
pre disponível como um utilitário do sis- editar um programa em Pascal, você po- mínimo, um acionador de disquetes. Por
tema operacional) ou de umprocessa- derá ter a certeza de que ninguém copia- isso, máquinas como o Apple e a IBM-
dor de textos. Depois, compila-se o pro- rá os algoritmos de sua criação. PC contam com as melhores versões.
grama e testa-se o resultado, executan-
do-o. Caso se verifique algum erro. to-
do o processo deve ser repetido, a par- PROGRAMAS DISPONÍVEIS
tir do programa-fonte.
Alguns compiladores Pascal, como o Existem compiladores Pascal para a O compilador Pascal para o Spec-
UCSD e o Turbo-Pascal, dispõem de maioria das linhas de microcomputado- trum é exclusivo para microdrives e dis-
um editor próprio, o que evita esse vai- res.Entretanto, como já mencionamos, quetes (não disponíveis no Brasil). In-
vém entre editor, sistema operacional e eles variam muito entre si, quanto ao cluium editor de linhas, um gerador de
compilador. Nesse caso. tanto o progra- funcionamento e desempenho, e nem io- números aleatórios e suporte gráfico em
ma-fonte quanto o programa-objeto po- dos podem ser encontrados com facili- alta resolução.
dem residir na RAM enquanto durar o dade no Brasil. Antes de adquirir um
—
processo, agilizando-o muito
programa não for muito longo, e se
houver boa capacidade de memória.
Como está em linguagem de máqui-
se o programa desse tipo, convém fazer uma
pesquisa em diferentes "software hou-
ses" —de preferência nas especializa-
das em uma determinada linha de com-
D Existem diversas versões do Pascal
na pura, sem comentários, rótulos, ou putadores ou nas dedicadas exclusiva- para o TRS-Color. Suas características
o programa compilado ofere-
similares, mente à programação Pascal. variam conforme o sistema operacional
utilizado: Flex, RS-DOS (original) ou
OS-9 (semelhante ao Unix). Todas fun-
cionam somente em micros dotados de
acionadores de disquetes.
0 PRINT USING
VALORES MONETÁRIOS
FORMATAÇÃO
COM PARÊNTESES
UMA ROTINA PODEROSA
o uso de duas eficientes rotinas lor monetário em precisão dupla (pode ))) ,2) :SS-""
1010 IF LEN(IS)<=3 AND VAL(FS)>
PRINT USING. incluir centavos ou não), e F%, um va-
no lugar do comando 0 TKEN SS-t3+S$+"."+FS:(SOTÓ 103
lor inteiro que especifica o número de
0
colunas a usar na formatação (com jus- 1015 IF LENIISK'3 AND VAL(FS)=
tificação à direita). As linhas 100 e 120 0 THEN SS=IS+SS:GOTO 1030
O comando PRINT USING é um dos formam um laço simples de teste. 1020 SS-"."+RICiHTS(IS,3)+S$:IS-
recursos mais poderosos do BASIC de O BASIC das máquinas mencionadas LEFTS(IS.LEN(IS)-3) GOTO 1010 :
aleumas linha*, de computadores, como é capaz de definir em apenas uma linha 1030 IF V*<0 THEN X$=NS ELSE XS
o TRS-80. o TRS-Color e o MSX. Com expressões de grande complexidade
— -PS
inclusive expressões condicionais que 1040 SS-RIGHTS (STRINGS E t BS) + S ( ,
TIPOS OE IMPRESSORA
Ao desligar o micro, os maravilhosos PRINT#-2 ele, funcionam apenas com As impressoras matriciais, por sua
caracteres ASCII. Alguns fabricantes vez, imprimem os caracteres utilizando
desenhos que você criou na tela
oferecem impressoras que têm o conjun- um conjunto de pontos, num processo
desaparecem sem deixar rastros. to ampliado dc caracteres. Este inclui os idêntico ao da formação de caracteres
Com umas poucas linhas em BASIC, você caracteres semigráficos, típicos dos mi- na tela de vídeo. O sinal enviado pelo
cros TRS-80, TRS-Color. TK-2000 c computador à impressora aciona uma
poderá preservá-los em papel.
MSX, mas ainda assim não é suficiente série dc pinos ou agulhas situados na ca-
para copiar uma tela com gráficos de beça de impressão, de modo a reprodu-
A capacidade gráfica dos micros per- média ou de alta resolução. zir um padrão de pontos que compõe
mite a elaboração de vários cipos de grá- Como vimos em um artigo da seção um determinado caractere.
fico ou desenho no vídeo. Quer você es- Periféricos (página 648), existem dois Nas impressoras matriciais não-
teja interessado nas aplicações práticas modelos de impressora para micros: as gráficas (impressoras de teMo), os pa-
desses gráficos, quer seja um artista impressoras de tipo formado (como as drões formados para cada caractere já
preocupado em adotar um novo meio de baseadas na "margarida"), e as impres- estão pré-programados em uma memo-
expressão, as imagens produzidas com soras matriciais. Embora algumas im- ria ROM na impressora, e não podem
a ajuda do computador apresentam uma pressoras margarida possam fazer grá- ser manipulados ou alterados indivi-
grande limitação: existem apenas en- ficos compostos de pontos, elas são mui- dualmente. Nas impressoras matriciais
quanto a tela não for apagada. Se você to lentas para ter alguma utilidade na porém, pode-se programar ca-
gráficas,
quiser uma cópia permanente da ima- cópia freqiiente de telas gráficas. da agulha da cabeça de impressão por
gem criada, precisará usar uma máqui- meio de software, o que permite a ela-
na fotográfica ou copiar a tela em uma boração de gráficos de alta resolução.
impressora gráfica.
Para guardar uma listagem, uma lis-
ta de números ou um texto produzido
por um programa, os usuários também
têm que recorrer a uma impressora. Há, Como funciona um programa desti-
porém, uma grande diferença entre co- nado a copiar cada pontinho de alta re-
piar uma tela de textos, escritos em AS-
Cil padrão, e uma tela gráfica, de bai-
xa ou alta resolução. Com exceção dos
:rocomputadores da linha Sinclair
(ZX-81 e Spectrum), que possuem o co-
mando COPY, os comandos de impres-
são do BASIC, como LPRINT, PR # 1,
IIIIIIIIIIIHH llllllllll
solução de uma tela gráfica? O coman- programadas externamente para efetuar em BASIC. O processo é muito fácil.
do COPV dos micros da linha Sinclair as funções mencionadas. Nesse modo- Para entendê-lo, devemos examinar co-
é um bom exemplo disso. Esse coman- grúfico, é possível aluar sobre grupos de mo certos bytes enviados para a impres-
do efetua uma operação que chamamos agulhas usando códigos de oito bits. A sora são interpretados pelos circuitos de
despejo de tela(screen dump, cm inglês). informação captada na memória de ví- controle da mesma.
Com o micro acoplado a uma im- deo é enviada para a impressora não sob A
impressora normalmente está capa-
pressora adequada (própria para a linha a forma de códigos ASCII, mas como citada para reconhecer os códigos ASCI I
Sinclair), o comando COPV "traduz" códigos binários correspondentes ao pa- e ASCII estendido, que estão pré-pro-
as configurações de pontinhos de cada drão de ativação das agulhas da cabe- gramados na memória ROM. Assim, se
setor da tela em padrões dc atuação das ça. Assim, existem códigos binários pa- enviarmos uma sequência de códigos en-
agulhas da cabeça de impressão. Desse ra desligar q avanço automático de li- tre hexadecimal 20 (correspondente a es-
modo, o conteúdo da tela (texto e/ou nha, para avançar a cabeça de uma li- paço em branco) e 7E (líl), a impresso-
gráfico) é fielmente reproduzido —me- nha para outra, para definir o espaço ra irá reconhecê-los como códigos de ca-
nos a cor, evidentemente. entre as linhas eic. O programa propria- racteres. Por exemplo, a palavra ABA
Os sistemas operacionais de alguns mente dito simplesmente "varre" a te- é impressa quando enviamos:
micros (como o TRS-80) podem ter fun- la e produz as linhas de impressão cor- LPRINT CHR$(65) ;CHRS(32)
ções de despejo de tela, que também só respondentes a cada grupo de bits. CHRS (65)
atuam se uma impressora compatível es- Mais adiante, apresentaremos pro-
tiver acoplada à máquina. O CP-500 da gramas desse tipo para os micros Spec- Entre hexadecimal 00 e 1F síiuam-se
caracteres de controle com diversas atri-
Prológica, por exemplo, despeja a tela trum e TRS-Color. Antes disso, porém,
buições, que variam de impressora pa-
semigráfica na impressora P-500S, precisamos examinar as combinações
ra impressora. No padrão Epson,
quando as teclas J, K e L são pressio- micro-impressora possíveis.
CHRS(7) faz soar o alarme sonoro da
nadas simultaneamente no teclado.
impressora, CHRSM3) provoca um re-
A maioria dos micros, porem, não COMPATIBILIDADE torno de carro, enquanto CHRSt 12) de-
tem comandos ou funções especiais pa-
termina a mudança de página.
ra produzir despejos de tela. E mesmo
Outras funções de controle podem ser
que seu computador disponha desses re- Os programas de despejo de tela de-
pendem não só do tratamento dado à te- acionadas por meio da combinação de
cursos, lembre-se de que eles nada pro-
como tam- vários caracteres. Essas sequências co-
duzirão sem a impressora adequada. la gráfica pelo computador,
meçam sempre pelo caractere CHR$(27),
bém da marca e do modelo da impres-
sora que será utilizada. Isso ocorre por-
que corresponde ao ESCAPE por is- —
PROGRAMAÇÃO DA IMPRESSORA so, são chamadas dc sequências de es-
que ainda não existe uma padronização
dos caracteres de controle gráfico e da cape. A sequencia ESC G, por exemplo,
Nãoé possível escrever na impresso- coloca a impressora em modo de im-
cabeça dc impressão.
rausando o mesmo método com o qual pressão em qualidade carta (cada carac-
Nossos programas destinam-se às
escrevemos na tela. Se dermos, por tere é impresso duas vezes):
máquinas que adotam o padrão Epson.
exemplo, o comando: Este foi estabelecido para as impresso- LPRINT CHR$(27) ;
"G"
ras do fabricante da marca Epson, c po-
PRINT CHHS (255) Para mudar o espaçamento entre
de ser encontrado em modelos muito
li-
no TRS-Color, um bloco colorido será populares, corno, por exemplo, o Epson nhas de impressão, utiliza-se ESC A n.
exibido na tela (255 é o código do ca- MX-80, MX-120c FX-80. No Brasil, vá- onde n refere-se ao número de passos
ractere gráfico correspondente). Entre- rias empresas, entre elas a Elebra (im- por avanço de linha:
tanto, se você tentar fazer isso com a im- pressoras Mônica e Alice), a Rima e a LPRINT CHRS (27) "A" CHRS
;
; (4)
pressora, enviando o comando: Grafix, seguem esse padrão.
decimal.
131 em 5CE] sistema é um pouco diferente: algumas
A sequência de escape precisa espe- 5 PRI1 linhasdo programa de despejo têm que
cificar, ainda, o número de bytes de có- 10 PR INT CHRS (27) "A" CHR$ (8)
:
; serexecutadas antes que o desenho seja
20 PRINT CHRS (27) "K" CHRS 16)
;
(2) f
to de oiio passos entre linhas. A 20 pro-
grama a impressora para o modo gráfi-
pois 256*2 + 38 = 550. A expressão
co, avisando que a seguir serão envia- 15 LPRINT CHRS5;
que se segue, em BASIC, serve para cal-
dos dezesseis bytes gráficos. Quando os 20 LPRINT CHRS2 7 "A"; CHRS8; 1
cular nl c n2 a partir de n, que repre-
dados não eslão incluídos imediatamen- 30 FOR x=0 TO 255 STEP 4
senta o número total de bytes:
te na sequência de escape, o ponto e vír- 40 LPRINT CHRS 1 3 CHRS27: "K" ;
Nl - INT (N/2S6) gula no final dessa linha é obrigatório. CHRS0; CHRS96: CHRS1;
N2 - N-INT (N/256) Os laços das linhas 30 a 50 e 60 a 80 im- 50 FOR y-0 TO 175 STEP 8
primem, respectivamente, um padrão 60 FOR d"0 TO -7 STEP -1
Este programa ilustra o padrão de 70 LET bt- (POINT (x ,y-d) *128) + (P
descendente e outro ascendente de pon-
acionamento das agulhas: 01NT (x.y-d) *64)+ (POINT (x+1 ,y-d>
tos (determinados pelos códigos que cor- * 32) + (POINT (x; 1 y-d) * 16) + (POINT
.
um
10 LPRINT CHRS(27) ;"A";CHRS(8)
lo com o programa de despejo (a nume-
ração das linhas de ambos tem que ser
diferente). O primeiro programa deve
mento entre as linhas impressas.
O laço que vai da linha 30 à 100 var-
re uma linha da tela, em blocos de qua-
ser alterado na tela depois que o dese- tro pixels de cada vez. A linha 40 passa
20 FOR 1-1 TO 5
nho estiver pronto, de modo que o pro- para a impressora um código de retor-
25 LPRINT CHRS (2 7) "K" ; CHRS (16) ;
;CHRS (0) grama de despejo seja chamado auto- no de carro (código 13) e, em seguida,
30 FOR J-7 TO 0 STEP -1> maticamente, ou quando se pressionar o código *0, que se encarrega de prepa-
40 LPRINT CBRS(2"J) determinada tecla. Se achar convenien- rar a máquina para receber o número de
50 NEXT J te, poderá incluir permanentemente o bytes que a linha corrente de tela irá en-
60 FOR J-7 TO 0 STEP -1 programa de despejo no programa de viar. Esse byte é composto dos códigos
70 LPRINT CHRS(2*J) desenho, na forma de uma suh-roiina. 96 e (também na linha 40), que são in-
1
Q
10 PRINTt-2,CHRS(27) j-A- ;CHRS
de telas gráficas em disco ou fita (co-
mandos BSAVE, SA VEM ele). Se seu
computador tem essa capacidade, car-
regue e execute o programa de desenho
re a tela
xels de
de cima para baixo: o laço da
linha 60 à 80 toma um bloco de oito pi-
cada
vez. Antes de incrementar
os laços, a linha 70 usa o comando
(8) e armazene a tela resultante em fita ou POINT para ler os pixels na tela. Estes
20 PRINT*-2,CHRS(27) ;-K" ;CHRS disco. Depois, carregue o programa de são condensados pela expressão numé-
(16) CHRS (0)
despejo usando um comando na linha rica no byte bl, que é enviado duas ve-
; :
IHIIIIHIllBB—^^^^WMMIlllllllllll
a execução. Se você quiser transformar diz à impressora para esperar 128 +
esse programa em sub-roiina, não se es- 1*256 bytes gráficos, ou seja, um total
6 DATA 3,3,2.1,0.0.3,1.3,3.0.0, P
liza a impressora. 60 LET L-L+10: NEXT N STOP
1,2,3,1.3. :
mm
.90, 38. 247. 5 7.134 32.109. 141 .25
582
,
nmiiii iiiiiiim
3:writeln< Quarta-f ei r a
' ' ) ;
repeal < instrução > until < expressão ro maior de eventos, costuma-se utilizar A :wr iteln( 'Quinta-f ejra } ' :
) |
terior pode ser escrito da seguinte são lógica for verdadeira, o programa writelnCentre 1 e 7 1
2J0 NEXT I
Passando para a segunda etapa, che- A1Q !'H1NT "fAí.fNDUi
gamos ao seguinte algoritmo: 2b0 GOtO 2/0
260 PR1NT "NÃO Ê P,
inicio 2/0 ENI)
faça crsc igual a 1
decr) and pai do Um algoritmo melhor estruturado
faça decr igual a n poderia ser apresentado assim:
enquanto crsc <decr faça
se a|crsc| é pontuação então then cr ac :
pai boolean; :
pont si mb: :
RERNAMDO 0 PROGRAMA
pont :-[ ','..'.',"];
'
if alcrscj-aldecr] then
;
num
decr:-decr-l;
if pai then
wnteln ( ' palindrome -
)
tln
writelnCnao ha palindrome')
Se você deseja montar e controlar O cálculo do caminho crítico né jeto que envolve a coordenação de vá-
- tão fácil se estivermos limitados ao rias etapas diferentes, muitas vezes sob
qualquer tipo de projeto da
pel e caneta, mas, com o auxílio do ct prazos rigorosos: a compra de uma ca-
reforma de um automóvel à compra de um putador e do programa que aqui forne- sa. O diagrama da página 1452 mostra
imóvel -, utilize este programa cemos, torna-se bem mais simpies e rá como deveria ser o fluxo PERT para a
para se organizar e economizar tempo.
pido. O programa permite a construção execução dessa tarefa. Os círculos assi-
de um banco de dados contendo todas nalam os eventos, ou seja, momentos
as atividades, seu tempo de execução (ou entre atividades cujo tempo depende de
estimativas, caso não se conheça o tem- outras. Eles marcam, assim, o início ou
Algumas vezes temos que realizar ta- po real) e a ordem em que elas deverão o fim de uma atividade. As atividades
refas que incluem várias ações, cada ser executadas. Baseado nessas informa- estão descritas ao longo das linhas que
qual exigindo um tempo diferente de ções, calcula o caminho crítico bem co- ligam os eventos, junto com as estima-
execução, e todas dependendo do suces- mo o tempo livre das atividades não tivas do tempo necessário.
so das etapas anteriores. Sem uma boa criticas (aquelas que não pertencem à se- Até aqui. muitas atividades parecem
dose de organização e planejamento, é quência especial). Esse último dado in- incertas e várias linhas se cruzam. Em-
quase impossível saber quais etapas exe- dica ao usuário por quanto tempo é pos- bora o diagrama contenha toda a infor-
cutar, e em que ordem. A situação fica sível interromper o projeto sem alterar mação necessária, ainda é difícil saber
ainda mais difícil quando há um prazo seu prazo final. que atividades merecem prioridade. Não
para o término da atividade. Para o cálculo do caminho crítico, se pode garantir, também, que o proje-
Se calcularmos o tempo de execução utilizam-se as técnicas de programação to seja concluído dentro do prazo esti-
de todas as ações envolvidas, veremos conhecidas como CPM (do inglês Criti- pulado. Além disso, à medida que avan-
que há sempre uma certa sequência de cai Palh Method, Método do Caminho çamos no projeto de aquisição da casa,
eventos que determina o tempo total do Crítico), CPA (do inglês Criticai Palh é possível que surjam outros fatores ca-
projeto. A essa sequência chamamos ca- Analysis, Análise do Caminho Critico) pazes de afetar as expectativas iniciais,
minho crítico. Qualquer atraso ou e PERT (do inglês Program Evaluation exigindo que o diagrama seja modifica-
adiantamento no caminho crítico se re- and Review Technique, Técnica de Ins- do e atualizado.
fletirá numa alteração do tempo toma- peção e Estimativa de Projeto). Nosso programa se encarrega de to-
do pelo projeto. Por outro lado, uma Não só projeios empresariais, mas das essas questões. Na primeira parte,
atividade que não pertença a essa se- qualquer projeto, por menor que seja, apresentada a seguir, cuida do banco de
quência especial poderá ser atrasada sem pode ser avaliado pelo programa. dados das atividades; na segunda, cal-
causar alterações no tempo total. Vamos tomar como exemplo um pro- cula o caminho critico.
36 APLICAÇÕES 36
7 POKE 23658,8: POKE 2361)9. 64 PRINT "Jl-cralc com tempog O PODE SER FEITO COM ESTA VELO
20 CIDADE": GOTO 1/0
10 CLS LET falae=0: LET ma=
: 66 PRINT "12=calc com inrerte 1H0 PRINT "Introduza BSClMtlV
100: Í.ET me-100: LET mh=212; zaa": PRINT a de tempo com 90* de certess
LET S«— 1: LET fp = -l: COEUB 70 INPUT I : PRINT t: IF t = 9 a": PRINT "Pode aer executado
12: LET ck-false: LET M*0i TilEN STOP em ";: INPUT n(xa): PRINT n(xa
LET ee-0: GOTO 50 72 ÍF Kl OR t>12 THEN PRINT )
12 LET ".cz^9999 LET truci: : t-";tí" NAO RECONHECIDO": 182 IF n(*a}<t(xa) THEN print
LET p$ - " í ntroduza " LET n$=" : COTO 114 "ISTO NAO E COMPATÍVEL COM O
at i vidade" 74 ] F I >1 0 AND NOT ck THEN TEMPO PlluVAVEL": GOTO 170
14 DTM uS (85. 32) LET wS(l)=" : PR TNT "FACA VERIFICAÇÃO DE DA 190 RETURN
Nenhuma"+aS+" = PHF.CEDE o evenL DOS PRIMEIRO": GOTO L14 200 FOU b-1 TO aa: IF x=a(b)
o": LET wS (2)"" EXCEDEU" 76 IF aa = 0 AND (t>7 OR t-5) THEN LET a = b
16 LET wS(3)-"VOCE NAO PODE U THEN PRINT "IMPOSSÍVEL - NAO 220 NEXT b: LET a(a)=a(aa):
SAR ESTE NUMERO ": LET wS(4)= FOI INTRODUZIDA NENHUMA" aS ; LET u(x)=zz+l: LET aa=aa- 1
p5*"texto paia este(a) " GOTO 114 RETURN
18 LET wS(5)-aS+"REFERE A EVE 80 IF t>7 THEN COTO 100 300 IF u(x)<0 THEN GOSUB 9"46
NTO NAO DEFINIDO " 82 IF t = 6 THEN Ct.F.AR LET t :' GOSUB 933: GOTO 330
22 DEF FN a<X)~x«(x<0) 310 IF ee^me THEN PRINT wS(2)
DEF FN z(x)^x*(x>0) :f3: HFTURN
26 DIM a{ma) DIM g(ma) :
3J 2 GOSUB 350
30 DIM w(ma): DEF FN w(x)=ABS fS: GOTO 100
x*(x<J)+ABn (2-x)*(x>l) 86 LET £$»*S: IF t>2 THEN
DEF FN x(x)=x* (2. 37572+x*x*
15.9402-x*x* (184 744 -x*x* .
LET ÍS-"even1o"
88 PRINT pS;t3i" numero":
H]E]
688.472)))/! -20667 PRINT "ou zero para sair "; 5 CLEAR
34 DEF FN I$|x)=(STH5 (x)+" 90 INPUT u: PRINT u: LET u~ 10 MA - IOOiME - 100:FA - 0:MH
-) (TO 6) INT u: IF u=0 THEN GOTO 50 = 212: GOSUB 12:CK - FA: GOTO 5
36 DEF FN b(x)=x-INT (x/2S6)* 92 IF u<[ OH u>zz THEN PÍ1INT 0
256 WS (3) GOTO 88 12 TR = 1:2S - CHRS (13):DOS
38 DEF FN p$(x)=" "( TO TNT — :
36 APLICAÇÕES 36
48 DEF FN U(X) * U( ABS (X) + 114 FOR T - 1 TO 1000: NEXT : 505 PRINT DOS"DELETE "FS
(X = 0) * (X > 0) RETURN
) : GOTO 50 510 PBINT DOS"OPEN "FS
50 HOME PRINT TAB /);"MENU
: ( 120 IF 0 < U(X) AND ZZ > - U( 515 PRINT ROS"WRITE "FS
PRINCIPAL": PHINT PHINT "01 : X) THEN GOSUB 942: GOSUB 932: 520 PHINT MA;ZS;ME;ZS;MH;ZS;AA
= DEFINE";AS: PHINT "02 o DELET GOTO 130 ;ZS EE; ZS :CK
:
A";A$: PBINT "03 - DEFINE EVENT 122 IF (AA - MA) THEN PRINT W 525 IF CK THEN PRINT BI i 29 i PI
Ò": PBINT "04 - DELETA EVENTO" $(2) ;F$: RETURN 530 FOR A - 1 TO AA:X = A (A)
52 PBINT "05 = SALVA DADOS" V : 124 AA - AA + 1:A(AA) - X:U<X) 5Jb PRINT X ZSU (X) ZSS (X) ZpF ÍX)
:
60 PBINT "12 = CALC COM INCERT GOTO 140 565 NEXT X: PHINT 0
EZAS": PRINT "13 - SAÍDA PARA
"
150 U - - S: GOSUB 450: IF U(X 5/0 PBINT DOS"CLOSE "FS
) < 0 THEN 156 5 75 RETURN
62 IF KKS = "S" THEN INVEBSE 152 IF EE - ME THEN PRINT WS (
90 INPUT U:U - INT (U) IF U : = - 1:F(X) - 0:U(X) = U 140 CLS:PR-l:LOCATE 12,1: PRINT"
"
= 0 THEN 50 360 T(X) - 0:N(X) - 0:US(X) = MENU PRINCIPAL" PRINT" 1 "DEFINE" :
94 IF T > 2 THEN U - - U 420 NEXT F E (E) - E(EE):U(Z) - : 4-CARREGA DADOS" PRINT" 5-IMPRIM :
98 IF (T = 2 OB T - 4) AND (0 450 Z - U - INT ((U - 1) / MH) 160 PRINT" 7-VERI FICA E ORDENA A
= U(X> OB ZZ < U(X)) THEN PBIN * MH Y = 2:X = 0 : REDE"
T *VOCE NUNCA USOU ESTE NUMFBO" 460 IF X = 0 AND (0 " U(Z) OR 170 PRINT"8-CALC COM TEMPOS MED ie
nHIHMMMI * "W5 36
EN 530
USOU ESTE NUMERO" GOTO 380 :
120 DIM P IMH) Q IMH) ,
510 IF EE-ME THEN PRINT US 2 ( 1
:
500 U— F:COSUB 700:IF UIXX0 TH 240 IF T-4 THEN CLEAR 2000:T-4 Para isso, o mais conveniente, como já
EN 530 250 IF T>2 THEN PRINT "NOME DO A vimos, é desenhar um esquema de blo-
510 IF EE-ME THEN PRINT WS(2);" RQUIVO" INPUTFS GOTO 350
: : cos: a rede PERT.
EVENTOS" GOTO 440 : 260 CLS:PRINT AS;" OU EVENTO (A À medida que for desenhando o dia-
520 GOSUB 660 /E) ?"i grama, descreva as atividades ao longo
530 F (XA) -X 270 TS-INKEYS :IF TSO"A" AND TS das linhas de conexão entre eventos.
540 PRINT PS; "TEMPO PROVÁVEL PA <>-E" THEN 270 Dentro dos círculos, coloque a descri-
RA EXECUTAR* INPUT T (XA) : 280 PRINT T$:IF T$-"A" THEN FS- ção dos eventos. Se estes forem apenas
550 IF T(XAX0 THEN PRINT"NAO P AS ELSE F5-" EVENTO" passos intermediários entre atividades,
ODE SER FEITO COM ESTA VELO 290 PRINT PRINT PS;FS;" NUMERO"
:
nomes
:PRINT"OU ZERO PARA SAIR" não é necessário atribuir-lhes es-
CIDADE" :GOTO 540
pecíficos.
560 PRINT" INTRODUZA ESTIMATIVA 300 INPUT U U-INT (U) IF U-0 THE : :
res por evento ou atividade; nos demais menos 10%, devido a eventuais dificul- eventos de inicio e de fim. Entretanto,
micros, podem-se utilizar 255 caracteres. dades de trânsito). Portanto, entramos 90 se encontrar alguma inconsistência na
Entretanto, dê preferência a títulos su- minutos como tempo médio, e 100 mi- rede, emitirá uma mensagem de erro,
cintos, para não sobrecarregar a memó- nutos como tempo pessimista. Essa si- identificando caminhos circulares ou in-
ria disponível. tuação corresponde à curva conhecida terrupções.
Se você tem uma noção mais ou me- como curva normal ou gaussiana.
nos precisa da duração de cada ativida- A que chamamos
terceira situação é a
de, escreva esse valor no diagrama. Pos- "espere até acontecer". Por exemplo: 0 CAMINHO CRÍTICO
teriormente, veremos como estimar os você só terá a certeza de que a reforma
tempos. Lembre-se, porém, de que a no telhado foi bem feiía quando come- Finalmente, selecione a opção para
unidade de medida de tempo escolhida çar a chover. Aqui, o tempo pessimista calcular o caminho critico. Existem duas
(hora, dia, semana etc.) deve ser sem- é cerca de 2,5 vezes maior que o tempo alternativas: a primeira usa o tempo mé-
pre a mesma em toda a rede. médio. Este pode ser obtido a partir do dio de cada atividade, e a segunda, o
O programa só funcionará correta- número de dias de chuva naquele mês tempo incerto (pessimista). Peça antes
mente se a rede for viável do ponto de específico. a primeira alternativa.
vista lógico —deve ter apenas um pon- A quana e última situação correspon- O vídeo mostrará todas as atividades.
to de partida e um de chegada, e não de ao tempo do "ludo ou nada". É mui- seu número de código e descrição. Em
formar laços ou caminhos circulares. to improvável, por exemplo, que uma seguida, dirá quando cada uma deve ser
O passo seguinte ao desenho da rede determinada peça do carro quebre, mas, iniciada e concluída, se existe alguma
PERT é a numeração de todas as ativi- se isso ocorrer,o veículo ficará na ofi- íolga, e se a atividade é crítica — ou se-
dades e eventos e sua introdução no pro- cina durante dez dias. Nesse caso, tome ja, se está no caminho crítico, com fol-
grama. A ordem dos números não é im- o valor máximo (dez dias) como o tem- ga igual a zero.
portante, mas o computador precisa de- po pessimista, e a média aritmética (10 O tempo é expresso na mesma uni-
les para trabalhar. Um
método bastan- vezes 1/100, ou 1/10 de dia) como o dade que foi entrado. Assim, se você
te em numerar os even-
simples consiste tempo médio. usou dias, todos os tempos irão se refe-
tos de dez em dez,
como se faz com um Não é necessário indicar ao micro- rir a dias, contados a partir do evento
programa em BASIC — o que permite computador o gráfico em que se encai- inicial da rede. Suponhamos que a ta-
inserir números extras entre os já exis- xa cada atividade. A máquina simples- bela indique que a atividade 3 deve co-
tentes, se for necessário. mente toma as duas estimativas de tem- meçar no dia 6. terminar no dia 10, e
Quando você for definir os eventos po, e efetua os cálculos. Se a diferença tem uma folga de dois dias. Você pode-
e as atividades, o computador pedirá o enire os dois valores for de 0 a 30%, ele rá começar aquela atividade no mínimo
número e a descrição de cada um deles, usa a curva gaussiana; se for de 30 a seis dias depois de iniciado o projeto,
além de uma estimativa do seu tempo 130%, usa uma curva gaussiana modi- com uma tolerância de dois dias (ou se-
médio e do seu tempo pessimista (aque- ficada. Por outro lado, se o valor da mé- ja, se você atrasar a atividade até o dia
le que conta com 90% de possibilidade dia estiver entre 130 e 300%, o progra- 8. o tempo total do projeto não será al-
de não ser ultrapassado). ma recorre à curva exponencial e, se es- terado).
Na vida real, raramente podemos cal- tiver acima dessa porcentagem, utiliza As atividades que têm folga zero de-
cular com precisão o tempo que levare- a curva bimodal. vem começar exatamente no dia indica-
mos para realizar uma atividade mes- — Depois de entrar todas as atividades do; caso contrário, haverá um atraso no
mo que a tenhamos executado muitas e suas respectivas estimativas de tempo, projeto. Se isso ocorrer, você precisará
vezes. Entretanto, não é difícil estimar você deverá entrar os eventos. Para isso, recalcular toda a rede, com a nova esti-
sua duração média, bem como sua du- basta digitar o número e a descrição de mativa para a atividade ou atividades in-
ração aproximada. Isso é tudo o que o cada evento no diagrama. Se você come- fratoras.
programa exige em termos de estimati- ter algum erro, chame as opções de apa- Se a maioria dos tempos que você en-
va de tempo. No entanto, como você ve- gamento ou de modificação de eventos trou são incertos, e o tempo pessimista
rá, os cálculos que ele faz não são tão ou atividades. é muito distinto do médio, use a segun-
simples, pois devem levar em conta qua- A informação entrada no computa- da opção de cálculo, pois o caminho
tro diferentes situações. dor pode ser exibida em vários tipos de critico será diferente.
Aprimeira situação é aquela em que tabela. A opção "Mostre Detalhes" Quando você escolhe essa opção, o
estamos absolutamente seguros quanto mostrará uma lista de tudo o que foi en- computador considera cada atividade e,
ao tempo que uma certa atividade leva- trado. Se você tem uma impressora, po- usando o gráfico de distribuição mais
rá. Por exemplo, se as instruções para derá também obter uma cópia cm papel. apropriado, seleeiona um tempo ao aca-
a construção de uma casa recomendam so, dentro dos limites propostos. A par-
que deixemos o cimento secar por 48 ho- tir desse tempo, ele calcula o caminho
ras, é exatamente isso que vamos fazer! CONSISTÊNCIA DE DADOS crítico para toda a rede, exatamente co-
Nesse caso, ao usar o programa, deve- mo na opção anterior, e armazena os va-
mos indicar o mesmo valor para o tem- Antes que o computador prossiga lores de início ede folga das atividades.
po médio e o pessimista. com os cálculos, é necessário checar se O processo se repete 44 vezes: em cada
A segunda situação ocorre quando es- há consistência lógica na rede entrada. uma delas um novo número aleatório é
tamos razoavelmente seguros sobre a du- Se esta contiver caminhos circulares, o escolhido para as atividades incertas. As
ração de determinada atividade. Sabe- programa cairá em uma alça sem fim de 45 repetições (todas são exibidas na te-
mos, por exemplo, que uma viagem en- cálculos e, eventualmente, apresentará la) proporcionam uma amostra razoá-
tre as cidades de São Paulo e Campinas, um defeito de execução. vel para a derivação dos valores médios
de automóvel, demora cerca de 90 minu- Escolha a opção de verificação e ob- de tempo.
tos, porque já a repetimos muitas vezes, serve o resultado. Se tudo estiver bem, Os tempos de inicio e fim do projeto
sem observar grandes variações (mais ou o programa imprimirá os números dos correspondem à média de 45 repetições
36 APLICAÇÕES 36
:
talse»0: BETURN
tagem da participação de certa ativida- 700 LET xtl>=ma: LET x(2)=me: RECEDENDO"
de no caminho crítico 100% signifi- — LET x{3)-itih: LET x(4)=aa: LET 1098 IF ae=0 OR se>mh THEN GOT
ca que a alividade será sempre critica; x{5)=ee: LET xC6)=ck: LET x(7) 0 1750
0%, que ela nunca é crítica. -ae: LET x<8)=fe: UERIFY fS+"x 1J00 FOR p-1 TO ee: LET z=e (e)
LET ttz)=0: LET n(z)-0: NEXT e
O último valor mostra o desvio pa- " DATA x()
LET (ae)=l
drão do tempo de folga, indicando a va- 710 UERIFY !S+"a" DATA a(): : t.
UEHIFY £$+"e" DATA e<>: UERIFY 1110 LET l»at-l: FOR c=2 TO ee+
riação possível da folga e, também, a 2- IF last<>c-i THEN COTO 1170
confiabilidade da estimativa. Por exem-
f$+"f" DATA fO: UERIFY fS+"g"
UERIFY fS+"n" DATA n 1120 FOH TO aa: LET x=a ta)
DATA g()
LET y-a(X): IF t(y)Oc-t THEN
:
vio é igual a 1, a folga pode variar en- UF.HIKY £S+"r" DATA L(): UERIFY
GOTO 1160
tre 0,5 dia e 2,5 dias. Nesse caso, con- 11.30 IF y=f(x) THEN GOSUB 1200
fS+"u" DATA ut): UERTFY tS+"u$
cluí-se que a folga é pouco confiável. " DATA uS O BETURN : COTO 1160
:
aSO LET y-y+l.+ (LEN uS(x)>4): 1180 FOR e=l TO ee LET y-e(e)
U$(x): PHINT u$(x)- t.ET a (x) "
:
mh) t.ET y" y+y-mh* TNT ((v+y-il 1000 LET CR-trU»! FOH a-1 TO aa
:
GOTO 1360
1020 LET z=a(x): IF stíXO OR z z THEN
500 LET x(l>-ma: LET «U)"M! 1340 LET a(a)-y: LET atbi^x: LE
LET mll-uh: LET x{4)-a.i: LET z<u(z) THEN PRINT u (x) wS (5 ; ) ;
1040 NEXT a: IF ck-falae THEN l^O KOn d^l TO da: LET x^a(a).
101): NEXT X Q(í(*)X>d+l THEN COTO ISA
GOTO 1750 IF
510 SAUE tê*'»' DATA a[): SAUE
1050 LET e=l D
tS-»"e" DATA (): SAUE f3+"t" 1550 LET y^Ei(x): LET tlyl-tfx):
DATA f(l; ^AVE ÍS+"<r" DATA 0(1 1060 LET z=ete): IF a(z)<0 THEN
DATA n<): SAUE COSUB 400: IF e<-ee THEN GOT LET n(y) «d
SAUE E3+"tl"
:
1560 NEXT d: NEXT d
fS+"s" DATA 3(): SAUE íS*"t" O 1060
1070 LET e=e+l IF e< = ee THEN 1600 FOH a TO aa: LET g(a)-a(
DATA LO: SAUE 1 $+"u" DATA u()
I
:
600 LUAD tS+"x" DATA x(): LET ak=0 THEN COTO 1700
md*x{L): LET w>=X CZ) LET mh^x 1082 FOR a^l TO as: LET x-a(a):
1620 LET R»0: FOR a=ak+1 TO aa
:
LET y-
LET b-h-ak: LET x--q(J)
:
:
LET ck-xtb) LET ae>x(/) LET 1090 LET ae-0: FOR e=l TO ee L :
!
T k-1 5) NEXT e
) : 870 INPUT »-l.X:IF X>0 THEN U (X
1660 NEXT a: GOTO lblO 3220 FOR a-1 TO aa LET x==a(a): : )-ZZ+l:GOTO 870
1700 LET ck^true: RETURN LET y = y[x): LET y
(x) -VaL (t-JTR I 880 CLOSE |-1:RETURN
1750 LET ck=falae: PRINT AT 21. 3 (y/45*100)+" ") TO 4)) ( 890 GOSUB 1870:A-0:GOSUB 1030
8; "QUALQUER TECLA PARA CONTÍNUA 3230 IF ptxXl.e-2 THEN LET p[ 900 FOR A-1 TO AA X-A (A! GOSUB : :
2030 FOR b=l TO aa STEP 5: Cts 3260 NEXT d: COTO 2U.10 940 ]f«Y+Í:XF Y>15 AND E<EE GOSU
: FOR a=b TO aa+FN a(b-M-aa): L B 1020:GOSUB 1050
ET x-d(d) 950 NEXT E:GOTO 1020
2040 PRINT ã3i" " ;u(x) " = " :uS
){ TO 16)
2050 LET c-y(3(x)l: LET d = z (£ (x
)): PRINT "pode iniciar ";ci".d
; U
Q
590 IF FSOAS THEN 680
960 CLS PRINT"TEM CERTEZA ?
/N) "
!
[X)I- (critico ";y{x)i"í)": 1F 610 NEXT B:A(A)-A(AA) :U(X)=ZZ+1 1000 PRINT IPR.USING"|||tl tttt
t=12 THEN PRINT "degvio-" q (x) ;
AA-AA- 1 RETURN
: :
I lt*H tllll 1 » 1 « :
2100 FOR e=l TO ee: LET y(e(e)) 630 IF EE = ME THEN PRINT WS(2);F 1020 IF PR-0 THEN PRINT"<ENTER>
=0: NEXT e S RETURN : PARA CONTINUAR" INPUT FS:CLS:fl ;
2110 FOR a~l TO aa: LET X«a(a) 640 GOiJUB 660 ETURN ELSE RETURN
LET y(f{x) =y f (x) +FN z(y(3(x
} ( ) 650 PRINT WS(4) FS INPUT US(X): i : 1030 CLS:IF PR-0 OR A-0 THEN PR
) )-y (f (x) )*z(x) NEXT a- I S(X)*0:RETURN INT #PR. "INICIO ULTIMA VEZ 90
—
:
(f (x) )-z(s (x) )-z (x) NEXT d: R ) : 680 Z-X:FOR F-l TO EE IF E(F)-Z : 1060 RETURN
ETURN THEN E = F 1070 CK=TR FOR A-1 TO AA:X-A(A)
:
3000 FOR a=l TO aa: LET x=a(a): 690 NEXT F:E(E)=E(EE) :U(Z)-ZZ+1 1080 Z=S(X)-IF S(Z)<0 OR ZZ<U(Z
LET p{x)=0: LET q(x)=0: LET y( :EE=EE- 1 RETURN ; THEN PRINT AS;U(X) :WS(5) ;U(Z)
)
3050 FOR a-1 TO aa: LET x-a(a): Y+Y~MH*INT( (Y+Y-l) /MH) GOTO 170 : 1130 E=E+1:IF E<=EE THEN 1120
LET Lx»t(x)> IF tx=0 THEN LET 750 OPEN "O" i-1 F3: PRINT *-l,M , , 1140 FOR E=l TO EE:Z-E(E) :S(Z)=
2 lx) -0 GOTO 3080
: A ME MH AA EE CK
; ; ; ; ; 0:F(Z)-0:NEXT E
3052 LET nx-n[x) TF nx-T.x THEN : 760 IF CK THEN PRINT*-1 SE FE , ; 1150 FOR A-1 TO AA:X-A(A) :S(F(X
LET z(x)--tx: GOTO 3080 770 FOR A-1 TO AA X-A (A) PRINT : : ))*X:NEXT A
3054 LET w FN w w d i-n/ 3 IF n( ( ) ) : #-l,X;U(X);S(X);F!X);T(X);N(X); 1160 SE-0:FOR E'l TO EE:Z=E(E):
X>-tx»3 THEN LET t (x)-n(x) * («< C(A) :U5(X) NEXT A : IF S(Z)>0 THEN 1190
tx/nxl OOTO 3OH0
: 780 FOR E = l TO EE Z-E (E) PRINTi : : 1170 IF SE-0 THEN SE=Z:GOTO 119
3060 IF RX>tx*2. 34 THEN LET z{ - ,2;U(Z) ;S(Z) ;F (Z) ;T(Z):N(Z) ;U
1 0
X)--lx'LN w: GOTO 3080 $(Z) NEXT E : 1180 PRINT W$<1) ;U(Z) IF SEÍ-MH :
JU/0 LET w-FN xíw-.b): LET z(x) 790 FOR X-l TO MH I F U(X)-ZZ+1 : THEN PRINT MS 11) U (SE) SE-MH + 1 ; :
36 APLICAÇÕES 36
:T(Y)-C:FE-Y:LA-C :
:XP =
1420 NEXT A:GOTO 1 360 (X) )-YÍS(X) -Z (X)
)
1470 FOR A-l TO AA: G (A) -A A) NE [ : VAL LEFTS (STRS P Z 745) .6)
( ( ( )
RETURN
1810 Z(ZJ-VAL(LEFT3(STRS!Q(Z)/4 NPUT FS: HOME
XT A:K-1 :AK-AA: IF AA-1 THEN K=0
:
941 RETURN
1480 AK-INTf (AK+K) /2) IF AK-0 T : 5) .6)) NEXT E :
HEN 1530 : ( :
1500 IF N(YE)+¥E/ZZ<-XE/ZZ*-N(XE 1840 Z-45-Y+. 1E-9:Z(X) =Z (F (X) > STIM CODIGO":Y - 3: RETURN
950 XPS = LEFTS STRS (XP) + (
THEN 1520 Y (S (X) -VAL (LEFTS (STRS (P (X) /Z)
)
)
-.61: PRINT XPS;: RETURN
1510 C(B)-X:G(A)-Y:K=1 6) )
1520 NEXT A:GOTO 1480 1850 Q(X) -SQRIABS ((í (X)-P(X) *P( (
PRINT "SAÍDA P/ IMP
960 HOME :
20 = A (A)
1560 FOR A=l TO AA:X-A(A) :¥(X)- 1880 QS = INKEYS:IF QSO"T" AND Q IF S(XE) < 0 OR
1020 XE - S(X)
(Z(F (X) >-Y(S(X) -2(X) "100.NEX
:
- ) )
SO"I" THEN 1680 ZZ < U(XE) THEN PRINT U(X);WS
T A 1890 IF QS="I" THEN PR--2
(5) :U(XE) :CK = FA
1570 FOR B-l TO AA STEP 3:CLS:F 1900 CLS RETURN :
IF S(Z) < D OR Z
1030 Z = F(X) :
XT E T A
630 FOR E = 1 TO EE 1082 FOR A 1 1 TO AA:X = AIA):
1630 FOR A-l TO AA X-A A) í F [X : í ; (
S(F(X) = X: NEXT A
-Y (F (X) )+FNZ{Y(S(X))-Y(F(X) i+
) 635 TNPUT X,U(X) .S(X) F (X) ,T(X .
1
1
1096 NEXT E: IF SE 0 THEN P 2020 FOR A - 1 TO AA:X - A (A) 3220 FOR A - 1 TO AA X - A (A) :
RI NT "TODOS EVENTOS TEM ";AS;" Y(X) = (Z(F(X)l - Y(S(X)) = Z(X Y Y(X):Y(X) = - VAL
= LEFTS (
PRECEDENDO" )) * 100: NEXT A: GOSUB 2100 STRS (Y / 45 * 100) ,4)
(
1098 IF SE = 0 OB (SE > MH) TH 2030 FOR B = 1 TO AA STEP 5: H 3230 IF P (X) < 1 E - 2 THEN P( .
EN 1750
3100 FOR E
T[X) = 0:N(X)
M =
TO EE:X = E{E):
0: NEXT E:T(SE)
OME
+ 4
FOR A = B TO AA + FN A (B
2040 PRINT
:
- AA) : X
:
= A (A)
PRINT AS:U(X)i" =
X)
3240 Z - (45 - Y) + .1E - 9:1
l
- Z(FIXÍ) - Y(SOO) - VAL
- 1 " :U5(X)
LEFTS STRS (f(X) / Z),6)) (
1110 LA = 1: FOH C - 2 TO EE + 2050 C = Y(S(X) :D = Z(F (X) ) 3250 Q(XI = SOR (Q(X> - 1M> (
2: IF LA < > C - 1 THEN 1170 2055 PRINT " PODE INICIAR IN • P(X) I Z) / (Z - 1) .1E (
1120 FOR A = ] TO AA:X = A (A) I T (C * 100) / 100;", DEVE TERMI 9) IF (XX) < l.E - 6 li.l-.N t
) :
Y S(X> IF T(Y) < > C - 1 TH| NAR " INT (D * 100) / 100 ) - 0
EN 1160 2060 PRINT "TEMPO LIVRE - ": I 3260 NEXT A: GOTO 2030
1130 IF Y = F(X) THEN GOSUB 1 NT (D - C - Z(X)) * 100) / 100
(
1190 IF F(Y) - O AND (Y < > F Y(F(X)) - Y(F(X)) + FN Z(Y(S(X US(X) :GOTO 650
E) THEN PRINT U(Y);"NAO CONECT - Y(F(X)
) ) + Z(X) NEXT A ) ) : 630 IF EE-ME THEN PRINT US(2);F
ADO AO EVENTO FINAL" CK - FA : 2120 FOR E 1 TO EE:Z(E{E)) - S: RETURN
1192 NEXT E IF CK THEN 1300 : Y (FE) NEXT E: FOR A - AA TO 1
:
640 GOSUB 660
1194 GOTO 1750 STEP - 1 :X = G (A) 650 PRINT WSI4) ;FS:INPUT US (X) :
< > X THEN 1220 3020 FOR E * 1 TO EE:X - E(E): THEN E=F
12 30 RETURN P(X> = 0:Q(X) - 0: NEXT E 690 NEXT F: E (E) -E (EE) :U ÍZ) -2Z+1
1300 K - 1:AK - AA: IF AA = 1 T 3030 FOR M 1 TO 43 STEP 3: F :EE=EE-1:RETURN
HEN K = 0 OR A = l TO AA:U(A) - 2 • RN 700 Z-U-INT( (U-l) /MH) «MH: Y-2 :X-
13)0 AK - INT ( (AK K) / 2) (1) - 1 NEXT A :
0
I F AK - 0 THEN 1500 3040 FOR N - 0 TO 4 STEP 2: HO 710 IF X-0 (O-U(Z) OR ZZ+l-UIZ)
1320 K - 0: FOR A » AK + 1 TO A PRINT "CASO i";M + N / 2;" ) THEN X-Z
A B - A - AK:X
: A(A):Y = A B < ) : /45' 720 IF U-U(Z) THEN X«Z:RETURN
XE = S(X) YE - S(Y) : 3050 FOR A - 1 TO AA X ' A (A) : 730 IF Y-l OR 0=U(Z) THEN RE TUR
1330 IF T YE) + YE / ZZ < - T ( TX T(X): IF TX 0 THEN Z (X) N
(XE) + XE / ZZ THEN 1360 • 0: GOTO 3080 740 Z-Z+Y-MH*INT({Z+Y-1)/MH) :Y=
1340 A (A) - Y A (B) = X:K = 1 : 3052 NX - N(X) IF (NX - TX) TH : Y+Y-MH*INT( (Y+Y-l) /MH) :GOTO 170
1360 NEXT A: GOTO 1310 EN ZIX) - TX: GOTO 3080 750 OPEN "CAS:"+FS FOR OUTPUT A
1500 N (FE) = LA: FOR D LA - 1 3054 W = FN W(W(A) + N / 3) 1 : S »3
TO 1 STEP - 1 F NX > = TX * 3 THEN Z(X) - NX 755 PRINTI3, MAZSMEZSMHZSAAZSEE
1520 FOR A - 1 TO AA:X = A (A) * (W < TX / NX) GOTO 30B0 : ZSEEZSCKZS
1 F N F X < > D * 1 THEN 156
( ( > ) 3060 IF NX > TX * 2.34 THEN Z( 760 IF CK THEN PRINTI 3 SEZSFE .
X) = - TX * LOG (W) GOTO 308 : 770 FOR A-l TO AA X-A (A) PRINT : :
1550 Y S(X) :F(Y) - F(X) :N(Y) 0 13. X ZSU (X) ZSS (X) ZSF (X) ZST(X) ZS
:
3070 W = FN X (W - 5) Z (X) = . :
NIX)ZSG(A)ZSUSÍX) NEXT A :
1600 FOR A 1 TO AA G (A) - A( - : 30B0 NEXT A 3 .Z ZSUIZ) ZSS (Z) ZSF (Z) ZST (Z) ZSN
;
XE F (X) YE - F(Y) : 3120 FOR E = 1 TO EE:X = E(E): 820 CLS PRINT"SALVAR DADOS - er :
1630 IF N (YE) + YE / ZZ < * N P(X) - P(X) + Y(X) :Q(X) - Q(X) ru:FOR K"l TO 1000 NEXT RETURN : !
(XE) + XE / ZZ THEN 1660 + Z(X) NEXT E.N.M : 830 OPEN "CAS:"+FS FOR INPUT AS
1650 G(B) - X:G(A) - Y:K - 1 3125 IF KKS = "S" THEN PRINT l.l:INPUT I3.MA.ME.MH.AA.EE.CK:
lb60 NEXT A: GOTO 1610 DO$"PRI 1" GOSUB 20
36 ARLKACÕIS 36
1
.
X) .S(X) ,F<X) .T{X) .NIX) .GfA) ,U$( 1240 IF Y-FÍX) GOSUB 1330:GOTO
1270 1630 FOR A-l TO AA: X=A (A) Y (F (X i
1240 Z X NEXT A )
l.S(Z).F(Z) ,T(Z).N(Z),US(Z):E{E
( ) '
910 Í*Í+1:IF Y>8 AND A< AA GOSUB 1300 IF F(Y)-0 AND YOFE THLN P A
BI NTU(Y);"NAO CONECTADO AO EVE 1670 FOR E-l TO EE Z-E : (E) : P (Z) =
1020:GOSUB 1030
NTO FINAL" CK-FA 0:Q(Z)-0:NEXT E
920 NEXT A:GOSUB 1020 :
1310 NEXT E:IF CK THEN 1370 1680 FOR M=l TO 43 STEP 3 FOR A :
950 NEXT E-GOTO 1020 1340 X=F(XA) :PRINT U(X) ;Y-S(XA) X):IF TX-=0 THEN Z(X)=Q:GOTO 175
960 CLE PRINT"TEM CERTEZA ? (S :PRINT U(Y) 0
1350 Y-S(Y):PRINT U(Y):IF YOX 1710 NX=N(X) :IF NX-TX THEN Z (X)
:
"
/N)
970 T$-INKEY$:IF T$< AND TS THEN 1350 -TX:GOTO 1750
O-N" THEN 970 1360 FOR X-l TO 1000:NEXT:RETUR 1720 W=FNW!U(A)+N/3) :IF NX>-TX«
980 IF TS="N" THEN RE TU RN N 3 THEN Z (X) NX* (U<TX/NX) GOTO — :
t ATIVIDADE" :Y'3 1440 FOR A-l TO AA:X-A(A):IF N( 1790 FOR E=l TO EE Z-E E P (Z : ( ) :
J
) THEN PRINT AS;U(X) :WS(5) ;U(Z) HEN 1530 1820 FOR A=l TO AA X=A (A) Y= Y (X : :
1120 Z=E{E,):IF SÍZK0 GOSUB 680 1520 NEXT A:GOTO 1480 1850 Q(X)=SQR(ABS((Q(X)-P(X)*P{
1530 CK-TR: RETURN X) /Z)/ (Z-D + 1E-9) :IF 0(X)<1
:IF E<-EE THEN 1120 ( . ) )
1130 E-E*1:IF E<-EE THEN 1120 1540 CK-FA FOR X=l TO 1000:NEXT
: .E-6 THEN Q(X)-0
1140 FOR E-l TO EE:Z-EÍE) :S(Z>- RETURN
X : 1860 NEXT A:GOTO 1570
0:F(Z)-0:NEXT E 1550 GOSUB 1870:FOR A-l TO AA:X 1870 CLS PRINT "TELA OU IMPRESSO :
1150 FOR A-l TO AA:X=A[A) :S(F(X -A ÍA) 2 (X) "T (X) :NEXT A GOSUB 16
: :
RA (T7D ?"
))=X:NEXT A 20 1880 QS = INKEYS:IF QSO"T" AND Q
1160 SE=0:FOR E=l TO EE:Z-E(E): 1560 FOR A-l TO AA: X-A (A) : Y (X) $<>"I" THEN 1880
IF S (Z) >0 THEN 1190 -(Z{F(X))-Y(S(X))=Z(X))*100:NEX 1890 IF QS="I" THEN PR»2
1170 IF SE=0 THEN SE-Z:GOTO 119 T A 1900 CLS: RETURN
0 1570 FOR B-l TO AA STEP 3 CLS F : :
1180 PRINT WSU) ;U(Z) :IF SEC-MH OR A=B TO AA+FNA (B+2-AA) X=A (A) :
Se você lem um acionador de disque-
THEN PRINT W$ (1 U (SE) SE = MH + 1 ) ; : 1580 PRINTIPR, AS;U(X) ;"=":US(X) te acoplado ao seu MSX. proceda às se-
1190 NEXT E:IF SE-0 THEN PRINT" 1590 C=Y (S (X) ) D=Z ( F (X) PRINT : ) :
guintes modificações:
TODOS OS EVENTOS TEM" PRINT AS; :
#PR."PODE INICIAR"iC;"DEVE TERM
"PRECEDENDO" INAR" ;D
1600 PRINTIPR "TEMPO LIVRE" INT
.
750 OPEN "A:"+F$ FOR OUTPUT AS
1200 IF SE-0 OR SE>MH THEN 1540 ;
Y (X) **} " IF T = 9 THEN PRINTIPR 830 OPEN "A:"+FS FOR INPUT ASI3
0 N (Zl "0 NEXT E:T(SE)-1 ; : :
INPUTI 3 MA ME MH AA E E CK GOSU
: :
0 utilitário que apresentamos neste Outra aplicação de grande utilidade pontos em que a variável se encontra à
consiste na localização de erros em um esquerda de um sinal de igual. Quando
artigo localiza e substitui qualquer programa. Suponhamos que você des- o programa é complexo, a tarefa torna-
palavra ou comando em programas BASIC. cubra que uma variável está recebendo se muito desgastante e é provável que ve-
37 APLICAÇÕES 37
BOPDER 0: INK
10 CLEAR 64559: 250 DATA 64.255,17.65.255.205.
PAPER 0: CLS
7: 3,253.42,83.92,126,254,64.208,
INVERSE 1;AT 0,10;"
20 PRINT 17.2003
INDEXADOR " 260 DATA 4,0.25,126.254,13.32.
O indexado: pata o Spectrum c par- 30 PBINT •'-»'" Inoerindo em c 3 35 24 240 254 34 32 9 35
, , , . , , , ,
.33,1787 254,143,2681
deve procurar: entre-ã pelo teclado e
140 DATA 63.255,17,85,255.3, 380 DATA 254,160.254.184.254.
pressione <ENTER>. As linhas que
253 42 ,83,92 34 59, 255, 126. 254. 206.254,229.254.236,254,0,255.
contém a cadeia serão exibidas na tela.
. ,
2081 10.255,66.3125
Para procurar uma palavra-chave em
.
não1 aaparecem
par na tela. ] 254
.245.215,241,2968
A última opção permite que você ve- 230 DATA 225.209,254,13,40.5. 470 DATA 78, 84, 69. B2. 32.69, 78.
ja todas as linhas em que uma função 18.19,52,24,2 34.201.62,13,205, 68, 32. 76, 73, 78,69, 32,58. 255.
-íoi definida (DEF FN) ou usada. Para 48, 1622 1233 _
480 DATA 69,78.84.69,82,32,76.
isso. digite: 240 DATA 252,17,85.255,33,63.
255,205,3,253,62,18,205,48,252 73.78.69,32,73.78,67,82.69.
RANDOMIZE USR 64 713' ,33, 2039 1111
490 DATA 77,69,78,64,63,32,58,
2 55 69 , 7B 84 69 8 2 3 2 84 65
1299
. . , ,
37 APLICAÇÕES 37
—
150 DATA 574F5244530D3C46JE554E
4354494F4ED346. 1429
160 DATA 494E443FA0494E53455254
3FA04E4F54204 6 147 7 .
quando você executar o programa. programa pedirá que entre a cadeia dese- 340 DATA 2C5FBC02342D133410BE02
Não havendo erros, grave o progra- jada. Digite-a e pressione <ENTER>. 34BF0232AE9F02.1335
35J1 DATA 32BF023435103004A1A026
ma em com CSAVE. Em seguida,
fita Todas as linhas que contêm a cadeia se- C45CF1022C2DC3, 1590
armazene o programa em linguagem de rão listadas. 360 DATA 7D0236263B6D467D022927
máquina gerado na memória com: Para substituir uma
cadeia por outra, IÍ2 108E0214F60 2 1299
,
^_
digite ambas as cadeias. Elas devem ter 370 DATA 2BF7023E7D02392609F6Q2
CSAVEM "CREF". 28672, 29500. 28672
o mesmo número de caracteres. 2CF7023E503085.1449
Oprograma que você realmente uti- Quando usar a opção de busca de pa- 380 DATA A6A0E684C122270CA780BC
lizará é essa versão em linguagem de má- lavras-chave, lembre-se da distinção en- 02342C057A023E.1738
quina. Para reservar espaço para ela, o tre comando e função. Se não souber a 390 DATA 26EC128D12208139860DBD
iopo da área do BASIC è reduzido em que categoria pertence a palavra, lente A282A6802B05BD, 1828
400 DATA A28220F73934367C023C66
quatro Kbytes. Assim, o indexador não ambas as alternativas. 0DBDA282BE0232 ,1790
pode ser empregado com programas 410 DATA 8D7130aDFE4F8DDCBE0232
muito longos em BASIC (que sc esten- 10 CLS CLEAR 2Q0.Í.H6FFF
: 30Í14A680BC0234 1967
.
dam além da memória 6FFF). 20 FOR X-l TO 741 STEP 18 420 DATA 2C-314D2B0SSBA28220F1B1
Para usar o programa, digite: 30 READ XS:CS-0 30BE01,tó*i^.
FF7 72834
40 FOR P-l TO 36 STEP 2 430 DATA 21108E01221QBF023ABD2E
50 V-yAL("S.H"+MIDS(X$.P,2)l A680AC9F023A2E, iWl ^VL
60 CS-CS+V:POKE &.H6FFF+X+P/2 V , 440 DATA 0D4D2B05BDA282W^
Você poderá carregá-lo antes ou de- /0 NEXT READ A:IF CSOA THEN PR
: BDA282 3 5 30 20C5 1961
,
Os computadores têm a capacidade xo, estado civil, número de dependen- comprar um programa para gerencia-
de armazenar grande quantidade de da- tes, data de admissão, cargo, salário. mento de agenda telefónica, por exem-
O conjunto de especificações de um plo, terá que obedecer ao esquema já es-
dos em um espaço muito reduzido e de
trabalhar com eles a uma velocidade registro (nome do campo, comprimen- tabelecido internamente para o arqui-
denominado esquema ou for- vo-mestre, sendo impossível modificá-
fantástica. São, por isso, a ferramenta to etc.) é
mato. Note que o número de bytes ocu- lo de acordo com suas necessidades.
ideal para manipular e recuperar infor-
mações organizadas de uma forma es- pados por um registro é igual à soma dos Um sistema de gerenciamento de
pecial, que é denominada banco de da- bytes ocupados pelos campos (no exem- banco de dados é bem mais flexível e po-
dos ou, ainda, base de dados. Os pro- plo anterior, o comprimento de um re- deroso. Por ser um programa genérico,
gistro corresponde a 124 bytes). ca- Em possibilita a alteração de um esquema
gramas destinados a executar essa tare-
fa constituem os sistemas gerenciadores da registro colocam-se as informações já existente e a definição de novos es-
de bancos de dados (SGBD). referentes a uma pessoa ou empresa. quemas, totalmente diferentes, segundo
Um banco de dados é essencialmen- Dentro de um banco de dados, os regis- o desejo do usuário. Além disso, o
te um conjunto de informações corre- tros normalmente são identificados pe- SGBD tem uma série adicional de fun-
lacionadas e organizadas em um ou mais lo seu número de série ou posição se- ções que dão acesso a eficientes recur-
arquivos de computador. Os arquivos, quencial (1,2,3... etc). sos de manipulação de arquivos de da-
Tais dados são reunidos em uma mes- dos, entre os quais ordenação, modifi-
por sua vez, são conjuntos de registros
de dados, cada qual formado de uma sé- ma unidade de informação por estarem cação de registros, substituição de um
rie de campos. Para entender melhor es- inter- relacionados. Se puséssemos todos ou mais campos em todo o arquivo, ge-
os nomes em um arquivo, os endereços ração de arquivos auxiliares, pesquisa e
sa hierarquia (base, arquivos, registros
campos), tomemos como exemplo em outro, e os telefones em um tercei- recuperação de informações seleciona-
e
uma agenda telefónica simples. Um dos ro, seria muito difícil estabelecer a cor- das, elaboração de relatórios impressos,
arquivos, que chamaremos arquivo- respondência entre as informações dos estruturados conforme especificações do
mestre, contém certo número de regis- três arquivos, e acabaríamos não saben- usuário etc. Nos artigos das páginas 81
tros. Cada registro corresponde a uma do a quem pertence um endereço ou te- a 706, apresentamos um programa re-
espaço que reserva para o dado (40 ca- DDD das cidades presentes em um ar- ao conjunto dos arquivos que contêm
racteres para o nome da pessoa, 5 para quivo-mestre —
para a organização de informações especificas, ou aplicações.
oCEPetc). Os campos funcionam co- um banco de dados. Em um verdadeiro SGBD os dados exis-
mo uma espécie de rótulo para um da- tem independentemente dos programas:
por isso, é possível fazer modificações
do ou informação. O número, nome, ti-
po e comprimento de cada um variam 0 QUE É UM SGBD? no esquema sem alterar o programa que
gerência o banco de dados.
de acordo com a aplicação. Um ban-
co de dados para arquivar sua coleçào Um arquivo-mestre como o definido Há uma grande variedade de SGBD
de discos, por exemplo, teria campos pa- acima seria apenas o equivalente eletrô- para microcomputadores domésticos e
nico de um fichário manual, onde cada profissionais. Eles diferem muito entre
ra o nome do disco, ano de gravação,
conjunto, solista, género de música, gra- ficha corresponde a um registro no ar- si quanto ao número e potência dos re-
vadora etc. Um sistema para folha de quivo. Em um arquivo de dados, a or- cursos que oferecem, e também quanto
pagamentos de uma empresa teria cam- ganização do registro geralmente é às restrições que impõem (número má-
pré-programada e não pode ser altera- ximo de campos por registro, número
pos totalmente diferentes, como nome
do empregado, data de nascimento, se- da pelo usuário do programa. Se você máximo de registros etc). A utilização
IIIIIIIIIIIIUHHI^BMHHHIIIIIIIIIII!
O QUE É UM SGBD? BUSCA DE INFORMAÇÕ ES
PROJETO DE UM IMPORTAÇÃO E EXPORTAÇÃO
BANCO DE DADOS CHAVES DE ACESSO
GERENCIAMENTO E DE ORDENAÇÃO
DE ARQUIVOS TIPOS DE SAÍDA
DEFINIÇÃO DO REGISTRO
espaços em branco que sobram também demos armazenar. Os SGBD possuem tador utilizado.
ocupam memória, limitando o número funções especiais para isso, bem como O método mais eficiente é o dos ar-
IIIIIIIIIHHHHMHHHHHIIIIIIIIIII
quivos de acesso direlo, empregado nos permitem transformar ou transferir in- porta arquivos precisa ser capaz de re-
SGBD mais sofisticados e profissionais, formações de um arquivo sequencial pa- conhecer esses separadores.
que exigem o uso de discos magnéticos. ra um arquivo direto, e vice-versa. Es- Já existem alguns padrões de repre-
Esse método permite que se atinja um sas operações, chamadas respectivamen- sentação seqiiencial de dados para faci-
determinado registro de qualquer pon- te de importação e exportação de arqui- litar a importação e exportação de ar-
to de partida, não sendo necessário re- vos, possibilitam, por exemplo, que da- quivos entre diferentes aplicativos. O
copiar todo o arquivo quando se faz dos de uma planilha ou de um proces- mais conhecido para micros é o padrão
uma inserção ou modificação. AJém dis- sador de textos sejam utilizados com um SDF (Standard Data Format).
so, a velocidade de acesso é considera- programa de banco de dados.
velmente maior. Funções típicas de Para transformar um tipo de arquivo
SGBD de arquivos sequenciais, como a em outro, os separadores de campos de- BUSCA DE INFORMAÇÕES
geração de relatórios sequenciais, po- sempenham um papel importante. Um
dem ser executadas facilmente pelo soft- separador é um caractere de controle que O que fazer com os dados depois que
ware destinado ao gerenciamento desses assinala quando um campo termina e ou- elesforam armazenados nos registros de
SGBD de acesso direto. tro começa, em um arquivo sequencial. um banco de dados? A função empre-
Sistemas de acesso direto possibilitam Em geral utiliza-se como separador gada com mais frequência é a de busca
ordenações, indexações e buscas muito o caractere ASCII 13 (carriage return, e recuperação de informações. Ela de-
mais complexas do que os sistemas de ou retorno de carro), gerado quando se pende, basicamente, da especificação
acesso sequencial. pressiona a tecla <ENTER> ou a te- das condições que devem ser satisfeitas
cla < RETURN >, mas é possível usar por um registro para ser encontrado no
qualquer outro. Os SGBD mais pode- banco de dados, e pode ser tão comple-
IMPORTAÇÕES E EXPORTAÇÕES rosos permitem a definição do separa- xa quanto se queira.
dor que se pretende utilizar. O papel de um SGBD equivale ao do
Embora sistemas de acesso direto e Com o emprego de separadores de gerente de um arquivo não eleirônico,
seqiiencial sejam bastante diferentes no campo predeterminados pode-se com- que se encarrega de aiualizar os dados
que diz respeiío à organização dos ar- pactar a informação transmitida, de ma- e de achar a informação desejada pelos
quivos, eles não são mutuamente incom- neira a maximizar o uso da memória dis- usuários. Em um sistema manuai, o ge-
patíveis. Os bons SGBD têm opções que ponível. O programa que importa ou ex- rente de arquivo tem que tomar algumas
"
t/W**',
realmente quando começamos a usar os implementada em sistemas baseados em
arquivos auxiliares. Em um sistema discos. A única busca possível em arqui-
computadorizado, o arquivamento é fei- vos sequenciais é a linear, que, além de
to exatamente da mesma maneira que tomar muito tempo, exige que se rebo-
decisões sobre a forma de dispor as fi- no sistema manual, ou seja, o SGBD bine manualmente a fita toda vez que se
Um arquivo de empre- dispõe os registros do arquivo-mestre se- inicia uma nova busca.
chas nas gavetas.
gados, por exemplo, poderia ser arran- gundo determinado tipo de arranjo, e
jado de acordo com a ordem alfabética um conjunto de outros arquivos auxi-
liares são construídos. Alguns simples-
0 CAMPO-CHAVE
dos nomes das pessoas. Para localizar
a ficha com os dados de um funcioná- mente utilizam uma forma de ordena-
rio, bastaria saber seu nome. ção diferente da do arquivo-mestre — Tanto na ordenação quanto na inde-
O problema realmente começa quan- são os chamados arquivos-índice. Ou- xação de um banco de dados, utiliza-se
do se pretende localizar informações a tros contêm informações adicionais, o campo-chave para organizar os arqui-
partir de outras referências— por exem- mas se relacionam ao arquivo-mestre vos auxiliares. Normalmente, todo ar-
plo: quais são os Funcionários que estão através dealgum campo (por exemplo, quivo-mestre tem pelo menos um cam-
completando trinta anos de serviço? Co- o nome do funcionário). Os bancos de po-chave, que corresponde ao campo
mo as fichas não foram organizadas se- dados organizados desse modo são de- mais importante —
aquele no qual se
gundo o tempo de serviço, seria preciso nominados relacionais. Os softwares buscam informações mais frequente-
examiná-las uma a uma até encontrar dos SGBD mais eficientes para micros, mente. É este o campo que o SGBD usa-
aquelas que contêm a condição pedida. como o dBASE II, incluem-se nessa ca- rácomo referência quando for realizar
Se esse tipo de informação é solicitado tegoria. uma ordenação ou recuperar um regis-
com frequência, o gerente acabará deci- Buscas em arquivos-índice levam me- tro através de
da técnica busca binária.
dindo montar um arquivo auxiliar, com nos tempo que em arquivos-mestre, pois Se a busca tem como alvo apenas um
aqueles, além de menores, são organi- registro (por exemplo, um determinado
as fichas individuais dos funcionários co-
locadas em ordem de tempo de serviço. zados para permitir o uso de técnicas rá- funcionário em uma folha de pagamen-
Muitos outros fichários como esse pidas de busca, como a busca binária. to),o campo-chave também precisa ser
podem ser necessários,tornando a ta- Nesse tipo de busca, o trabalho se ini- único. Por isso, não convém usar o no-
refa do gerente cada vez mais complexa cia a partir do meio do arquivo, e não me completo do funcionário (ou, pior
e difícil. Um
computador seria nesse ca- do começo, como no método linear. ainda, só o sobrenome). O melhor é
so a melhor solução. Quando procuramos o nome de uma adotar um sónúmero de identificação,
pessoa em uma página da lista telefóni- como o da carteira de identidade ou o
Se o fichário com todos os dados dos
empregados estiver armazenado na me- ca, por exemplo, a técnica que costuma- atribuído pela própria firma (número
moria, a máquina irá agir da mesma for- mos utilizar é justamente a binária: pri- funcional). Os sistemas de controle de
ma que o gerente para localizar os fun- meiro, verificamos se o nome está an- contas correntes de bancos utilizam es-
cionários que atingiram trinta anos de tes ou depois do nome que ocorre no se processo. O campo-chave para efe-
serviço. Examinará registro por registro, meio; se estiver antes, examinamos a tuar todos os acessos e transações com
comparando a chave de busca com os primeira metade da página, dividindo- o sistema é o número da conta do clien-
dados contidos no campo ou campos a novamente ao meio. Repetimos o mes- te, e não seu nome.
correspondentes, até que a condição de mo procedimento várias vezes, até che- Quanto mais sofisticado um SGBD,
busca seja satisfeita. A diferença é que gar ao nome desejado. maior será sua flexibilidade, e mais fá-
o computador pode fazer essa mesma A
vantagem da busca binária é que, cil a localização de informações.
APLICAÇ ÕES
DE IMAGENS SOFTWARE
Sistemas de processamento de imagens feixes eletrônicos varrem sistematica- UM MODELO PARA SEU MICRO
mente a superfície e transformam os ní-
já se encontram à disposição veis de luminosidade em ondas elétricas.
Na conversão destinada ao uso por um Não faz muito sentido utilizar um
dos usuários de microcomputadores
computador, um conversor analógi- CCD com um computador que lenha re-
pessoais, abrindo-lhes as portas para solução mais baixa que a da câmara. As-
co-digilal produz sequências de bits que
um fascinante campo de aplicações. são enviadas à memória da máquina, re- sim, os micros Apple e MSX
são os que
presentando um retrato mais ou menos dispõem de maior oferta de periféricos
fiel da imagem captada. de captação de imagens.
O vidicon tem uma alta resolução de Os micros compatíveis com a linha
Oprocessamento de imagens por
computador é unia das áreas mais fas- imagem — ou seja, o número de linhas IBM-PC têm sido os mais usados para
da varredura é grande (trezentas a qui- processamento de imagens, devido a sua
cinantes e complexas do mundo das apli-
nhentas por tela, geralmente). O efeito velocidade e capacidade de memória.
cações da eletrônica digital.
disso, na conversão para números biná- Existem vários modelos para essas má-
O computador pode realizar verda-
quinas, entre eles o PC-Eye.
deiros milagres ao converter uma ima- rios, é a divisão da tela em uma espécie
(números de quadriculado, em que cada "quadra- Podem-se utilizar também interfaces
gem em impulsos digitais bi-
dinho" equivale a um ou mais bytes de comerciais para ligar um videocassete e
nários) e processá-la com programas es-
informação, descrevendo a intensidade sua câmara a um micro de boa resolu-
peciais, em alta velocidade.
luminosa, cor etc. do ponto. Esses ele- ção gráfica. Essas interfaces dispõem de
Para satisfação dos usuários de mi-
cros domésticos, muitas dessas aplica- mentos são chamados pixels (do inglês, um conversor analógico que, embora rá-
picture elements). pido, serve apenas para imagens estáti-
ções, antes restritas a computadores de
Uma câmara digital, por sua vez, é cas, por não conseguir acompanhar os
grande porte, estão agora disponíveis da filma-
baseada em um circuito integrado cuja sessenta quadros por segundo
para máquinas como as suas.
O
passo central para o processamen- larga superfície já é dividida em uma gem de vídeo.
to de imagens consiste em sua captação matriz de elementos fotossensíveis. Ca-
e conversão em sinais digitais. Isso é fei- da elemento corresponde a um pixel. A SOFTWARE E APLICAÇÕES
to por um periférico composto por uma imagem, projetada sobre essa superfície,
câmara especial, acoplada a um conver- éautomaticamente dividida em pixels,
sem a necessidade de uma varredura por Diversos tipos de programa de pro-
sor e a uma interface.
um feixe eletrônico. cessamento de imagens já foram desen-
Existem atualmente câmaras simples
A câmara digital é muito mais sim- volvidos para micros. Os mais elemen-
de preço razoável, para apli-
(digitais),
ples e barata do que o não
vidicon, pois tares são geralmente vendidos com o pe-
cações em micros. Elas são baseadas na
requer tubo blindado de vidro, vácuo, riférico, e servem apenas para capturar
tecnologia do circuito integrado (CCD,
ou Charge-Coupled Device). nem filamentos de aquecimento. O
con- uma imagem e armazená-la em disco.
sumo de energia é pequeno e a câmara As versões mais sofisticadas permitem
pode ser facilmente miniaturizada. escolher filtros de imagem, determinar
Entretanto, há uma desvantagem: se uma intensidade mínima para a capta-
feixes de elétrons como em um tubo de sores de luminosidade estão embutidos das ilustrações de um livro de zoologia,
no próprio chip. Uma lente razoável e para programas didáticos. O único pro-
TV (cinescópio). A imagem, captada
a interface de conexão tudo de que se blema desse tipo de aplicação é o gran-
por lentes e projetada na parte plana do é
tubo, impressiona elementos fotossen- precisa —
sem falar, é evidente, no soft- de espaço de memória ocupado por uma
síveis que recobrem sua superfície. Os ware que controla o sistema. imagem detalhada em disco.
SUMARIOGERAl |MBBMHH|||||||
UMA AGENDA ELETRÕNICA (3) 868-871
APLICAÇÕES Terceira parte do programa de calendário e agenda
Um programo simples para edição de cartas Acionamento dos comandos de disquetes por um menu
ORGANIZE AS SUAS COLEÇÕES (2) 81-B5 UMA PLANILHA ELETRÕNICA (I) 1108-1115
PONHA ORDEM EM SUAS CONTAS 134-140 UMA PLANILHA ELETRÕNICA (2) 1I34-U3B
í/m programa para contabilidade doméstica Segunda parte do programa de folha de cálculo
REÚNA SEUS DADOS EM GRÁFICOS 181-187 UMA PLANILHA ELETRÕNICA (3) 1155-1160
1398-1400
ROTINAS PARA O CAD 421-424 UM EDITOR MUSICAL (I)
Como gerar blocos gráficos na tela e armazená-los Segunda parte do programa de edição musical
Primeira parte de um programa edilor de textos Planejamento de pmjetos pela técnica PERT
Mais rotinas para o programa de arquivamento de dados O que é código de máquina e programação Assembler
UMA AGENDA ELETRÕNICA (1) 834-840 APRENDA A CONTAR COM UM DEDO SÓ 34-40
Um programa para calendário e agenda de compromissos O sistema binário e sua conversão para decimal
Segunda parte do programa de calendário e agenda Programa para a con versão de números hexa em decimais
- pág. 1 a 300; vol. 2 — pág. 301 a 600; vol. 3 - pág. 601 a 900; vol. 4 -
IIIIIIIIIIIUHH suMAmotm IIIIIIHII
COMO ENTRAR CÓDIGO DE MÁQUINA 88-95 UM ASSEMBLER PARA O TRS-80 679-680
Um monitor para programar em hexadecimal Um programa montador escrito em BASIC
Vol. 1 — pág. 1 a 300; vol. 2 — pág. 301 a 600; vol. 3 — pàg. 601 a 900; vol. 4 — pág. 901 a 1200; vol. 5 — pág. 1201 a 1500.
IIIIIIIIIHI SUMÁRIO GERAL mm
AS CINCO VIDAS DE WILLIE 1208-1213 TV VERSUS MONITORES 851-854
Parte IS: rotinas de marte, sons e finalização Selecione o vídeo mais adequado para seu micro
Parte 20: rotina de movimentação das cobras O hardware e os comandos de controle do acionodor
Introdução a uma linguagem diferente Hardware e software para ligar o micro ao videotexto
mm
COMO DESCOMPLICAR SAVEs E LOADs 53-55 NÚMEROS AO ACASO "16
Técnicas e cuidados na utilização do gravador cassete O emprego da junção RND
COMPUTADORES QUE FALAM 446-448 ENSINE SEU MICRO A TOMAR DECISÕES 41-45
Para que serve uma impressora e como acionà-la Os comandos de desenho do BASIC
VoL I
- pág. 1 a 300; vol. 2 — pág. 301 a 600; vol. 3 - pág. 601 a 900; vol. 4 - pág. 901 a 1200; vol. 5 - pàg. 1201 a 1500.
IIIIIIIIIIIHHHI^HIMHHHHIIIIIIÍ
OS COMANDOS READ E DATA 128-133 EDIÇÃO NO TRS-80 E NO TRS-COLOR 399-400
Comandos para armazenamento e recuperação de dados O comando EDITe suu utilização para modificar linhas
MAIS REQUINTE EM SEUS DESENHOS 354-360 PROGRAMAÇÃO DE GRÁFICOS EM 3-D (1) 581-585
Gráficos circulares e o desenho de relógios Desenhos em forma de grade em três dimensões
ARTE GRÁFICA EM SEU MICRO 388-393 SPRITES PARA O TRS-80 (1) 627
Novas idéias para usar cores em seu micro Os caracteres gráficos e sua utilização
Vol. 1 — pág. I a 300; vol. 2 — pág. 301 a 600; vol. 3 — pág. 601 a 900; vol. 4 — pág. 901 a 1200; vol. S — pág. 1201 a 1500.
iniHimiiiM»— iiiwi
PROGRAMAÇÃO DE GRÁFICOS EM 3-D (2) 628-633 PROGRAMAÇÃO GRÁFICA DE CURVAS 861-866
Programação de um cubo em três dimensões Como incorporar curvas cónicas a um programa
O que são os caracteres gráficos pré-programados Cifras, códigos secretos e sua programação em BASIC
Como acrescentar perspectiva a um desenho Como números reais são armazenados na memória
Blocos gráficos complexos e sua animação Invente e utilize novos tipos de letras em BASIC
PROGRAMAÇÃO DE GRÁFICOS EM 1-D (4) 693-700 ROTINA EM CÓDIGO DE MÁQUINA (1) 972-973
Detectando colisões: comandos A TTR, PEEK e POINT Princípios da mecânica c programas para demonstrá-los
Programas para desenhar trajetórias e órbitas Mais tipos de códigos e técnicas para decifrá-los
Exploração de cones, curvas e seçàes circulares Técnicas de animação usando sequência de telas
Vol- 1 — pág. I a 300; vol. 2 — pág. 301 a 600; vol. 3 — pág. 601 a 900; voi. 4 — pág. 901 a 1200; vol. 5 — pág. 1201 a 1500.
IIIIIIIIIIIHMHHHHBMHHUIIIIIIIIII
MAIS SOBRE PÁGINAS GRÁFICAS 1141-1145 DESENHOS EM PERSPECTIVA 1391-1395
Sofistique os programas de animação gráfica Técnicas para acrescentar profundidade a um desenho
Vol. I — pág. I a 300; vol. 2 — pág. 301 a 600; vol. 3 — pag. 601 a 900; vol. 4 — pag. 901 a 1200; vol. 5 — pág. 1201 a 1500.
IIIIIHHHHBM— lllllllllll
O JOGO A RAPOSA E OS GANSOS (1) 90I-W15
PROGRAMAÇÃO PARA JOYSTICKS 348-353
Introdução a um jogo que usa inteligência artificial Quadros de aviso e intercomunicação entre micros
Vol. 1 - pág. I a 300; vol. 2 - pág. 301 a 600; vol. 3 - pág. 601 a 900; vol. 4 - pág. 901 a 1200; vol. 5 - pág. 1201 a 1500.
SUMAUtOGim
SUMÁRIO
DOS QUADROS
Existe uma maneira de se programar em Assembler no ZX-81? .. 251
Qual a velocidade de datilografia que devo tomar como meta para
começar? 237
Como acentuar textos em português em um microcomputador? .. 280
Como funciona um conversor analógico-digital? 291
Como o computador é capaz de repetir trechos de um programa . 27 tamanho dos números usados em
Existe limite para o e OR? AND .. 305
O longo ttajeto do ábaco a eletrômca 40 Deve-se seguir alguma regra ou modificar as frases do programa? 333
O sistema ocial 60 Qual o tamanho do maior circulo desenhado pelo computador? .. 340
O que é uma base de dados? 73 Podemos usar joysticks nos outros programas de jogos já publica-
l;ma técnica de animação de blocos gi ... nos microcomputador dos em INPUT? 3S2
rei da linha TRS-80 160 O que fazer para transformar o desenho do pato em um alvo
Como calcular a velocidade da bola 678 diferente? 373
Ditas para acelerar seu BASIC 932 O que acontecerá se houver um erro em meu programa-fonte? ... 402
Modelos experimentais 1359 Que sistema de numeração —
binário, decimal ou hexa é melhor —
usar nas linhas DATA? 410
Por que recebo uma mensagem de erro quando tento calcular a rajz
quadrada de um número negativo? 440
Existeuma forma simples de combinar programas no ZX-81? .... 4S8
Posso modificar os programas de modo a misturar dados positivo*
e negativos em um só gráfico? 484
0 que é escalamento? 4(6
Quantas portas existem? SS8
Quais são as principais diferenças entre o editor de tentos de INPUT
e o» editores vendidos nas lojas especializadu? 380
Como se especificam os intervalos de números aleatórios? 13 Posso colonr * irei r ames? 385
Os comandos ou palavras-chave em BASIC, lais como PRINT.GOTO, Só há uma Forma de o micro aceitar instruções adicionais? 600
STEP etc, precisam ser digiiados sempre em leiras maiúsculas? 23 Como melhorar a velocidade de execução do simulador de vôo? 607
Como devo procedei para manter um registro dc todas ai variáveis Posso modificar o programa para desenhar imagens uiferentes? .
630
usadas em meus programas? 26 Como assegurar bons resultados na procura de ouro? ., 663
Posso escolher qualquer tecla para operar os controles de um jogo Como variar a velocidade de simulação do movimento? 674
no microcomputador sem me perder entre tantos Xs e Ys7 31 O que é um Disassembler? 680
Por que o meu programa "bomba" (isto é. falha) se, num jogo qual- Há alguma Forma de se acelerar o desenho da estação espacial? 699 ..
quer, a figura que esta sendo movimentada atinge a borda da tela? 32 É possível transformar o programa em um jogo de palavras
Posso combinar dois ou mais IF...THEN em uma única linha? .... 44 cruzadas? 704
Por que ocorrem erros quando temo rodar programas digitados? .... 44 Como modificar o programa para trabalhar com arquivos em disco? 709
O sistema hexadecimal parece difícil c complicado. Não seria possí- Como usar o monitor- Disassemblér? 714
vel passar sem ele? Afinal, é realmente necessário aprendê-lo para Por que as programa nos microcompu-
teclas musicais criadas pelo
operar em linguagem de máquina? 60 tadores da linhaTRS-Color não tém auto- repetição? 726
Como devo fazer para reconverter de hexa para decimal? 60 A duração de uma nota pode ser controlada pelo tempo em que a
Existe algum limite máximo para o período de medida de tempo? .. 67 tecla se mantém sob pressão? 726
Como funciona o cronometro interno de um microcomputador? .. 67 Por que as linhas em que há a instrução CALL diferem nos progra-
Qual a diferença enlre gráficos de baixa, média c alta resolução? 120 mas do Apple e do TK-2000? 732
O TRS-80 pode ser usado para desenhar em BASIC? 120 Como o computador produz sons? 743
Quando posso utilizar o sistema decimal codificado em binário (BC D)? 145 Qual a diferença entre os comandos outi e otir no MSX? 792
Que problemas podem ocorrer com laços múltiplos? 206 Como adaptar um jogo que utiliza peças coloridas para um micro
Quanto espaço de memória necessito para escrever um jogo de com vídeo monocromático? 800
aventura? 212 A agenda é uma espécie de banco de dados? 871
O que devo fazer se cair numa armadilha durante a aventura? ... 212 Qual a utilidade dos códigos? 892
lí possível colocar textos na tela gráfica do Apple II? 237 O que é Inteligência Artificial? 905
O que fazer quando um programa longo — como o Assembler — Quais são as vantagens da utilização de cartuchos de programas em
não funciona depois de digitado? 240 vez de fitas e discos? Posso gravar meus próprios programas em
O que acontecerá se houver um erro em meu programa-fonte? ... 251 um cartucho? 911
Vol. 1 — pág. I a 300; vol. 2 — pág. 301 a 600; vol. 3 — pág. 601 a 900; vol. 4 — pág. 901 a 1200; vol. 5 — pág. 1201 a 1500. un
^''''^
O BASIC é
F.
O
maquina
muilo lento e eu não gosto de programar em código de
Tenho outras opções?
possível usai utn sintetizador de voz paia
que é roll-ovei?
animai o jogo?
„„.„,. 13t2
Conversão para o
c Ml.OGO 1319
MLOGO lUl
computador 13»
Use o laço orno
Melhore a qualidade do !
Um modelo para números em diferentes base*
• Varredura do teclado
Os operadores lógicos
Transcrição de partituras
Conversão do Color para o TRS-80
Exterminador de problemas
Acentuando textos compi
Funções de conversão hexadecimal
Como tornar um programa longo mais fácil de digitai
O que é um spnte?
Organize melhoi os comandos DATA em un
Como contar "em computes
Efeitos sonoros no TRS-80
Planejamento de sprites
Conjuntos de cores no TRSColor
DATA Variáveis: o que voei pode e nào pode usar
Como editar uma linha
REM Tabela de código ASCII
Como usar a declaração
Como detectar erros em programas longos PEEK e POKE de teclado do TRSColor
Tabela de localização de códigos de erros
Como aumentar a velocidade de digitação
programas longos Sumário dos comandos de FD1T
Tabela de códigos de tecla
A apresentação de ut
Caracteres do PRINT USING
Descubra os códigos
programas longos Caracteres gráficos do MSX .
- pág. 1 a 300; vol. 2 — pág. 301 a 600; vol. 3 - pág. 601 a 900; I
- pág. 901 a 1200; vol. 5 — pàg. 1
1 1
illlllHIlllMM—^MMMliHllllll
Anagrama (programa) 242-244 - desenho com DRAW 116.237, 318, 343-344
Análise espectral 1083 - diferenças do CALL com TK-2000 732
- em sislemas dc reconhecimento da fala 131 - efeitos sonoros 266.712-714. 1027
Análise sonora 1081-1085 - escritana tela de alta resolução 534-535
Analógico-decimal. conversor V. Conversor - gravação de dados em Hia cassete 1254
umilt iiiiai-decimat - interpretador LOGO 1317
Análogos, modelos 1176 - joystiçks 291
AND 43, 301-304 - organização da memória 179-181
[LOGO) 1344 - limite para tamanho dos números 305 APPLESOFT 179
tbstralos, desenhos 358-360 - na manipulação de bits 1335, 1378 APRENDA 1319
Aon 774-780. 1176-1180, 1181-11 Andamento 744-745 (!'./. Música) Aranha Marciana. A (programa) 955-960.
Alavanca 982-984 - técnica de paginação 1096-1100. 1141- 145 no Apple e no TK-2000 180
Alfanuméricas, variáveis 13. 99-100. 194-195. Aplicativas, linguagens 1290 -de números 894-900.1101-1107
1101-1107, 1215 (Kl Cordões) Apontadores -de programas em BASIC 1101-1107
ALGOL 1288-1290, 1436 - cm blocos gráficos 528-529 - de leia 947. 994
Algorítmicas, linguagens 1290. 1436 - na memória 174-180 - de variáveis M0I-I107, 1215
Algoritmo 1437 - na UCP 109-112 - em DATA e arquivos
Apple (comparação) 252-1 256
- alfa beta 874 1
ASC 263. 362, 364. 1214 tempo 1076-1080 BASIC 1288, 1314
ASCII 361-366, 1332 - blocos gráficos S15-S20
arquivos 688
- - cenário 824-833 operacional 1246-1251
códigos de compressão 1332
- - contagem de pontos 1001-1008, 1228-1233 - apagamenlo de arquivos 940
- comparações entre códigos 364 controle dc vidas 1208-1213
- - armazenagem de números 894-900
- correspondência com códigos de teclado 969-971
- controle global - armazenagem dc variáveis 1101-1107. 1215
(TK-2000) 499 - efeitos sonoros 788-795 -atribuição 13. 96, 933
- tabela 263 - estrutura getal 748-755 - cálculo de datas 840
- técnicas de programação 361-366 - inicialização 995-999 - compactador de programas
Vol. | — pág. 1 a 300; vol. 2 — pág- 301 a 600; vol. 3 - pág. 601 a 900; vol. 4 - pág. 901 a 1200; vol. 5 - pág. 1201 a 1500. jtfg
ÍNDICE REMISSIVO lllllllllll
mniiiiii
- conversão para hexadecimal (programa) 56-60 BUTF1RST 1345-1346
- definição de UDGS 406 BUTLAST 1345-1346 no TK-2000 499, 734-737
- fraçôes em 38 Byte 144 no TRS-80 627, 660, 669. 1413
- multiplicação em 37-39 - definição 38 técnicas de animação 4-10
Bloem, gráficos 86-87 (Kl. Caracteres) - de trajelórias 677-678 - comandos K CLOAD. t.OAD
-animação 341-347. 406-413 V.t. Animação (
- estatístico 1176-1185 cm LOGO 1330
gráfica) - folhas de V. Planilha eletrõnica - rotinas em código de máquina 93-94. 973
- apontadores 528-529 - infinitesimal 772 CARREGUE 1330
-combinação 541-547.570-575 - lógico 302-305, 334-340, 359-360 Carro (desenho) 389-390
-criação 489-495. 507-512, 526-533, matemático 434-440.608-613.1312, Garry 110
541-547. 570-575 1342-1344, 1347 Carias
- criação de sprites 107. 188-191. 808-811, - probabilistico 277. 774-780 - cm processadores de textos 1384-1385
1426-1427 (KJ. Sprites) - sistemas de 1304-1305 - programa de impressão 17-20
- em Avalanche 815-820 Caleidoscópio (programa) 25-26 Cartuchos 911
- no Spectrum 122 Calendário CAS: 1255
-no TRS-80 160.627 660. 669 .
- agenda clctrõnica (programa) 834-840. Casa (desenho) 131-133
- programa gerador cm Assembler 565-569 841-845. 868-871 CASE 1291, 1448
BNE 219-220 - cálculo de datas 840, 1279-1280 Castelo (desenho) 133
Bumba de combustível (simulação) 96-98 - de video 1470 Culódieos. tubo de raios 852
Bomba moto-conlínuu (simulação) 1143-1145 Caminho critico 1451. 1455 CBBS 1404-1407
Bombardeio (eleito visual) 121-127 Campo-chave 468 1 CCD, câmara 1470
Boolcana. variável 1449 Campo de golfe (programa) 233-234 CCm 1405
Borda decorativa (programa) 245-246 Campo minado (programa) 61-67 CEEFAX 563. 1407
(Kl. Tela) Campos 69, 1464. 1468 (Kj, Banco de dados) Cenários, programação de
BORDER 14-115. 556
1
Camundongo V. Mouse cm Avalanche 824-S33
-
Bulletin Boards 562, 1404-1407 - gráficos - uso cm arquivos (Apple) 692, 1254-1256
Busca I . Pesquisa em impressoras 1442-1445 - uso em aulo-execução lApple) 550
no MSX 553-555, 1361-1366 - uso em teclas programáveis (MSX) 622-623
Vol. 1 — pág- l a 300; vol. 2 — pág. 301 a 600; vol. 3 — pig. 601 a 900; vol. 4 — pág. 901 a 1200; vol. 5 — pág. 1201 a 1500,
IIIIIIIIIIIUMMHHIHnMHIIIIIIIIIII
- uso na manipulação dc bits 1378 de Saint-Cyr 890-891
- cifra Composição musical 1310 (Kl. Música)
- uso na programação de impressora 1442-1445 - cifras de posição 888-891 -programa 1398-1400, 1408-1411. 1421-1425
Cifra» 888-893. 1091-1095 {Vj, Códigos e - cifras multiplicativas 1093-1095 Compressão
Senhas) de barras 892
- - códigos de 1332
Cinemática 670-678.766-773,781-787, 161-1163 1 dc controle 260, 269. 364
-
-de melodias 1201-1207.1430
Cirindão 561, 563. 1406 de arquivos 692 -de programas 536-540
CIRCLE 337, 865 edição dc programas no MSX 425 - dc textos 1332-1339. 1414-1418, 1428-1435
• no MSX 120, 234-235 impressoras 652, 1442-1443 mclodo chinês 1414. 1416-1418
- no Speclrum 115. 232 no Apple e no TK -2000 269 - formatos dc dalas 1279
- no TRS-Color 118-119,234-235 no MSX 367 Comprimento
- uso em gráficos de segmentos 639 no Speclrum 269 - conversão de medidas (programa) 374-380
Circuilos elelrõnicos no TRS-80 260 - de um registro 1464
- digitais 40 uso do CHRS 260. 367 - Tuas magnéticas 876-878
Círculos (Kl, Gráficos) -degenerado 1332 ( V.i. ASCII) - variáveis em BASIC 97
desenho de 15. 1 19. 234-235. 339-340, 865 em compressão
dc texlos 1332-1339, CompuServe 1407
-cm 1329 LOGO 1414-1418, 142B-I435 Conexão
- no Apple e no TK-2000 117-118 - Epson 652. 1442-1443 - compuiador-gravador, cassete S4-J5
- no Speclrum 232 -escape 220, 652. 1442-1445 controle dc dispositivos externos 1321-1325
-noZX-81 116 - gerados pelo joyslick 351 - dircta (modem) 564
Clave musical 741 - gráficos - disquetes ao computador 906-908
CU: 198 impressoras 1442-1445 - cnlrc compuladorcs 561-564
CLEAR 932 no TRS-80 627, 660, 669 - impressoras ao computador 648-652
- função no bistcma operacional 1247 - mnemónicos 196
- no MSX 91-92, 179 - Morse 891-893 musicais 1306-1310
- no TRS-Color 300 - operacionais (Assembler) 2 sistemas de reconhecimento da fala
-
1311
- no TRS-80 90 -secretos 888-893.1091-1095 Conjunlos 192-195
- uso em programarão Assembler 217 - teclado (MSX) 499 - bidimensionais 201-207
CI.EARSCREEN 1318 - utilidade prática 892 Consistência dc dados 1259-1260, 1465 (Kl.
CLOAD 53-55 , 910-911 Coelhos, populações dt- (simulação) 1065-1067 Verificação)
Clock V.Relógio Coleçoes, organização de (programa) 68-75. Contabilidade
CLOSE 691-692. 1254-1256 81-85 doinéslica (programa) 134-140 (Kl.
CLS 12 "Cólela de UM" P/anilha elelrônica)
- conversão do TRS-Color para o TRS-80 52 - em LOGO 1330 - uso de planilhas eletrõnicas 1 1 14-1 1 15
CM 940 II - rotina no TRS-Color 1251 Contador de programa (UCP) 1 10
CMPX 219 < rilisões Contagem V. Frequência
COBOL 1288 -1290 - detecção na tela 715-720 Continua, reconhecimento dc fala 1311
Cohra, jugo da (programa) 514-520 COLOR CONTROL (teclai 260.367.551,624
CODE 263 - no Apple c no TK-2000 116 - no TK-2000 734-737
- no Spectrum 2Í2 - no TRS-Color 118. 393 CONTRO L-BREAK (ledas) 16
- no ZX-81 362, 364 Comandos, criação dc CONTROL-C (teclas) 16. 78-79,551
CODE decla) 553-555 -noSpectrum 1281-1283 Controle
Codificarão (Cf. Códigos) no TRS-Color 597-600 - blocos de (MSX) 179
- decimal cm III. 145 Comandos múltiplos - códigos dc 260. 269. 364
Código dc máquina - incidência dc erros 313 de arquivos 692
Assemblcr
- para o Apple (programa) 238-240 influência sobre velocidade de execução 932 edição de programas no MSX 425
- Assembler para o MSX (programai 401-405 Combinação impressoras 652, 1442-1445
- Assembler para o Speclrum - bits cm BASIC 1378 no Apple e no TK-2000 269
(programa) 248-252 - de blocos gráficos 541-547, 570-575 no MSX 367
- Assemblcr para o TRS-Color - de programas 456-460 no Spcctrun 269
(programai 296-300 Come-come (programa) 46-52 no TRS-80 260
- Assemblcr para o TRS-80 (programa) 679-680 Comentários (em programas) 207 uso do CHRS 260. 367
- cai rega memo de rotinas 93-94, 973 Compactador de programas (TRS-Color) 536-540 comandos em processadores de temos
-
1383
- compactador dc programas Compararão - comandos para impressora 650-652,
(TRS-Color) 536-540 - área dc quadrados (programa) 436-439 1442-1445
- armazenagem em DATA e - dispositivos externos 1321-1325
- entrada 88-95 arquivos 1252-1256 - proporcionais 1323
- gravação de rotinas 93 - BASIC com o PASCAL 1436 - robôs para microcomputadores [284-1287
- indexador de programas 1461-1463 - busca linear com busca binária 1468 - sistemas de 1321-1325
programação com valores negativos 142-145 - dados 487 - uso de teclas múhiplas 988-993
- rotina de INKEYS (TK-2000) 499 - de cordões alfanuméricos 241-242 CONTROL-RESET (ledas) 16
- roiinas do sistema operacional 1246-1251 - discos rígidos c disquetes 1133 COISTROL-STOP (teclas) 16
- roltnas cmbulidas em BASIC 972-973 - entre editores de texto 580 Conversão
MSX 1419-1420 - escalonamento em conversores AD 967 - analógico-digital
291. 967. 1084. 1324. 1470
- rotinas para produção de sons - PEEK e POINT 947 - de ASCII para códigos próprios 1332-1335
(TRS-80) 1032-1033 - televisor versus monitor 851-854 - de bases (programa) 35-37, 1281-1283
- vantagens cm relação ao BASIC 1 - velocidade do BASIC e código de - de binário para heiadccimal 56, 60. 406
Código p 1450 (Kl. PASCAL) máquina 925, 930 - dc BRASLOGO para MLOGO
1319,1344
Código* Compatibilidade em PASCAL 1446 - de coordenadas gráficas e de texto
- ASCII 263. 280. 361-366, 499. 1332 [Kl. Compiladores 607. 925, 1437 (TRS-80) 1312-1313
ASCIt) Complemento binário (programa) 142-145 - de cordões para números 244-245. 900, 1214
Vol. 1 — pág. I a 300; vol. 2 — pág. 301 a 600; vol. 3 — pág. 601 a 900; vol. 4 — pág. 901 a 1200; vol. S — pág. 1201 a 1500. MBS
ÍNDICE REMISSIVO
IIIMIIIIII
Correção ortográfica 1382 em conjuntos 193-194
- de decima! para binário (programa) .18-39
Corredor (animação gráfica) 6 rotina com INKEYI e GET 49fr499.
de graus em radianos 334-336
1259-1260
-
de hexadecimal para decima) 1281-1283
cuidados no envio de disquetes c fita;
- formatação de registros 1464-1466
- de LOGO em inglês para ponuguês 1320 -
-
em modelos cinemáticos 771 - programa para organização 68-75, 81-85,
TRS-80 52
para desenhar circulo 116. 118 70) -706
- formaios de datas 1279-1280 -
- uso em câmaras de video 1470 CP/M (gestão de projetos) 1451-1460 - comparação com armazenagem em
967 CPY 220 arquivos 1252-1256
- uso em tabletes digitali/adores
V.t. Códigos)
1214-1215, 1401-1403 seno e co-seno 338-339 (
378- 1380 Cúspides 163-1 164 comparação com hexadecimal cm DATA 410
uso em manipulação de bits 1
1
são dc hexadecimal 60
100
para binário (programa) 38-39
i
Vol. 1
- pág. 1 a 300; vol. 2 - pág. 301 a 600; vol. 3 — pág. 601 a 900; vol. ' ;. 901 a 1200; vol. 5 - pág '20' »
1
MIIIIIIIIUHHHH^HHMHHIIIIIIIII
Degenerado, código 1332 DIP 652 - conirole em efeilos sot
DEL 128] -1283 D1R 910. 940. 1217 Dutos circulares 807
DEL ikvl.u 425 Dlrelriz 862
DELETE 9M, 940 lli-;i«si-oihlcr 714
Densidade de gravação V. Gravação Disco
Depuração de programas V.Erras e Programas - flexível V, Disquetes
DESAPAREÇATAT 1329 - magnético (Kl. Disquetes)
Desenho Auxiliado por Computador comandos em LOGO 1329
[V.l. Projelo Assistido par Computador) como ulili/ar 906-91
aplicações 521 disco rígido ou fixo 879, 1133
desenho arquitelônico 1367-1371, 1386-1390 programa editor (TRS-Color) 1216-1220 Economia de memória 269. 899. 932-933
- no TRS-Color (programa) 536-540
programação em 3-D 581-585, 628-633. tipos de disposilivos 878
641-647. 693-700, 1097-1098. 1391-1395 utilização de arquivos 687-692, 1252-1256 EDFIG 1427
- programa 414-420, 421-424 Disco voador (animação gráfica) 5 Edição
- mouse 1000 Dispam, hotão de V. Botão de disparo - área dc (memória) 175
- tablete digilalizador 964-968 Disparo de um projétil (simulação) 783 - dc figuras 1427
Desenhos V, Gráficos Disquetes 878 - de programas 412
Desenhos animados V. Animação gráfica - acionadores (Apple) 906-907 em PASCAL 1438-1439
Desenvolvimento de linguagens 1346 - arquivos de dados 687-692 - em tela completa 1313
Deslocamento da leia (programa em - como utilizar 906-911 - linhas DATA no MSX 191
Assembler) 213-219 - compiírLiçáo com discos rígidos 1 1 33 no MSX 425
Despejo de tela 1441 1445 - conexão ao computador 906-908 no TRS-Color e no TRS-80 399-400
Desvios condicionais - cuidados 488 no ZX-81 552
-emAssembler 196-200, 213-219 - formatação 908 - textos (aplicativo) 576-580. 586-591. 614-620
-em BASIC 41-45,78-80.222-223.444. - funções do DOS 936 EDIT
625-626, 940 - rolinadc armazenagem de telas (TRS-80) 994 cm LOGO 1329
- em código de maquina 142-145 Distância - no MSX 425
- em LOGO 1331 - conversão dc medidas 374-380 - no TRS-Color e no TRS-80 399-400
Desvios incondicionais - emre dois ponlos 807 - no ZX-81 552
-
em Assembler 196-200,213-219 - entre duas datas 1280 Editor V.l. Processamento de textos)
I
Diagnostico cm impressoras 645 DJNZ 198. 215. 558 - spriles 811-814. 1427
Diagnóstico por computador 905 Documentação de programas 207 Educação
Diagrama Doméstica, contabilidade V. Contabilidade programa para alfabetização 390-391
-
DIM 192 Duodecimal, sistema de numeração 35 programa genérico para o MSX 171
-
Vol. I
— pag. I a 300; vol. 2 — pág, 301 a 600; vol. 3 - pag. 601 a 900; vol. 4 - pág. 901 a 1200; vol. S - pág. 1201 a 1500.
IIIIIIIIIHHHHHH^HnHHIIIIIIIIIII
Eletrónicos, circuitos V. Circuitos elelrônicos 300, 403 Evolução das linguagens 1290
Elevador hidráulico (simulação) 986-987 - desenhos fora da leia 31. 632 EXEC 94, 1250
ELIMINE 1330 - digitação 44 Execução de programas
ELIMINEARQ 1330 - dimensionamento excedido 193 - auio-execução 550
(unções dc localização 444 - efeito da REM e dos espaços na
E-L1NE (variável de sistema no ZX-81) 177 -
Vol. 1 — pág. 1 a 300; vol, 2 — pág. 301 a 600; vol. 3 — pág, 601 a 900; vol. 4 - pag. 901 a 1200; vol. 5 — pág. 1201 a 1500.
IIIIIIIIIIIHHHHHHnHHIIIIIIIIIIII
- de impressão 645 - V. /NSTR, LEN, LEFTS,
alfanuméricas - (animação) 478-480
bicicleta
- magnética MIDS, RIGHTS, STRS. VAL etc. blocos gráficos 341-347, 406-413
-
- PERT 1451 - matemáticas 434 440, 608-613. 1347 campo de golfe 233-234
-
Vol. 1 — pág. 1 a 300; vol. 2 — pág. 301 a 600; vol. 3 — pág. 601 a 900; vol. 4 — pág. 901 a 1200; vol. 5 — pág. 1201 a 1500.
IIIIIIIIIIIIHHH^^MMHHHIIIIIIIIU
- gerador gráfico em Assembler 565-569 - conversão em radianos 334-336
gráficos de segmentos 634-639 Gravação
- grau de resolução 14, 1201
-agenda eletrônica 868-871
TV versus monitor 8SI-8Í4 - análise sonora 1082
- gravação em fila cassete 575-576 - blocos gráficos 489-195. 575-576
- helicóptero 10 - dados em fita cassete (Apple e TK-2000) 1254
-impressão 1441-1445 - densidade de 880
- monstro (animação no ZX-81) 319-320 - rotinas em código de máquina 93 late (piograma) 1234-1240
- motocicleta (animação no Apple) 316-318 Gravador cassete 53-55, 876-878 Icónicos, modelos 1176
- padrões naturais 1161-1167 - arquivos cm 690 IEE-488 525
-paginação gráfica 1096-1100, 1141-1145 - conexão ao computador 54-55 IF...THEN 27. 41-45
porta de saida para efeitos sonoros 1032 - combinação múltipla 44
perspectiva 628-633.641-647.693-700, -
simulação de sprites no TRS-80 627, 660, 669 conversão do binário 406 INC 214. 216
conversão para binário (programa) 56-60 Incêndios (programação gráfica) 121-127
sombreamento 115. 1394-1395
conversão para decimal 60 Indexação
sprites 107. 1S8-191, 808-814. 1132, 1426-1427
no TRS-80 627, 660, 669 Spectrum 1281-1283 - de bancos dc dados 1464
submarino (animação no Apple! 316-318 necessidade para programação 60 - de programas 1461-1463
tabelas de forma237 notação de endereços 144 - dc variáveis 192-195 201-207. 101- 107
. 1 1
SIN c COS 337-340, 354-360 Hifenaçâo automática 580, 1383 Informação de canal, área de (memória) 175
Vol. 1 - pág. 1 a 300; vol. 2 - pág. 301 a 600; vol. 3 - pág. 601 a 900; vai. 4 - pãg. 901 a 1200; vol, 5 — pág. 1201 a 1500.
IIIIIIIIIIIHHHHHHHnHHIIIIIIIIIII
- no TRS-Color 352-353, 1251
- no 6502 198 - no ZX-81 350
- no 6809 200 - operação 290
- uso em programa de desenho livre JOGOS - programação 348-353, 368-373
na leia 164- 165 - aplicações da digitalização de sons 1084 - tipos 288
• uso em programa dc senhas de acesso 161 - aplicações dc reconhecimento da fala 131 JOYSTK 353
1NP 1286 - programas JRNZ 197
INPUT 12. 14, 161-167 A Aranha Marciana 955-960. 974-980 JSR 200
INPUTS 62-1 Adivinhação de Palavras 701-705. 728-733 Juliana, data 840. 1280
INPUT* 691-692 A Raposa e os Gansos 872-875,901-905. Juros, cálculo de (função) 612
INS 425
(tecla) 948-954
Inserção (técnica de ordenação) 739-740 Avalanche 748-755, 761-765, 788-795.
INSTR 245.624, 1214 (Kí. Cordões) 815-820. 824-833. 995-999. 1001-1008.
Instrumentos musicais 1306-1310 1028-1031. 1056-1060, 1076-1080,
(Kl. Música) 1116-1120. 1208-1213, 1291-1300
INT
INTEGE8 1438
I
1
LOGO 1344
Bandido de um braço só
Caça-niqueis
V.
L
- V.
padrões 525
- Papel, Pedra. Tesoura 1348-1355
para impressoras 525
- Pintor Aloprado 1277-1278
1470 Senha 1139-1140
Interpretadores 607. 930, 1247-1248. 1437 Serra Pelada 662-668. 681-686
Interrupção Torres de Hanói, As 1226-1227 Labirinto (programa) 46-52. 153-160. 170-172
- dc um programa BASIC 16 programação
técnicas de
programação de um relógio 658-659
- adaptação de jogos em cores BOO - de corrente 525
- teclado 988 cartas dc baralho 426-433 - em BASIC 21-27, 26
Inversão de vídeo 1249 compressão de textos 1332-1339, - em planilhas eletrõnicas 1156
- caracteres no Spectrum 640, 661 1428-1435
1414-1418. - múltiplos 206
gráfica 320 contagem de pontos 47-52.61-67 LAN 1200, 1407
- rotina para o TRS-Color 597-600 controle de movimentos 28-33 Lápis óptico K Canetas ópticas
- uso em jogos 800 distribuições dc probabilidade 1177 Largura de faixa 854
IN VERSE 390 escolha de ledas de controle 31 Laser, efeitos sonoras (Apple c TK-2000) 1027
com impressora 650 estalistica 1349 LAST 1345-1346
no Apple 1249 estratégia 756-760. 796-800. 1348-135 Layoul do arquivo 75
- no Spectrum 640, 661 explosões e incêndios 121-127 LBEQ 200
- rotina para o TRS-Color 597-600 joyslicks 348-353. 368-373 LD 197, 216
INY 220 labirintos aleatórios 153-160 LDA 196
Irregularidade, matemática da 1356-1360, marcação de recordes 64-66 - no 6502 198. 220
1372-1377 níveis de dificuldade 153-160 - no 6809 200, 219
Isométrica, prnjeção 628-633,641-647 ruídos e explosões 168-173 LDB 219
llaulec LOGO 1317 spriles em Assemblcr 818-820 LDDE 216
programáveis 655
teclas LDDR 216
uso de matrizes 798 LDIR 214
uso do 1NKEYS 28-33 LD1RMV 1144
Jornalismo eletrõnlco 564 LDX 219
Joyslicks 287-291 LDY 220
- analógico 289 LEFT 1287, 1318
aplicações 288, 351-352
- LEFTS 244. 703. 1214
- códigos gerados 351 Lego 1287, 1325
- funcionamento 289 LEN 244, 703. 1214
Janelas de texto 580 . - no Apple 291 LET 13, 96, 933
Jaque para gravadores 54-35 - no MSX 350-351 - com operadores relacionais 302
Jipe (programa) 19-120 1
- no Spectrum 349 - eliminação para encurtar programas 141
JKL (teclas) 1442 - no TK-2000 351-352 - em comparação com DATA 128
Vol. 1 — pis- 1 a 300: vol. 2 — pág. 301 a 600; vol. 3 - pág. 601 a 900; vol. 4 — pág. 901 a 1200; vol. 5 - pág. 1201 a 1500. Ml
IIIIIIIIIHHMMH^HHHM§|§lliyii
Leira» {V.i. Caracteres) -procedimentos 1287,1319-1320
- ampliadas (programa» 913420, 921-925 - sprites 1426-1427
- desenho com DRAW
236-237 - uso do COS 1344 BASIC 894-900
LOMEM 180 de programas 513. 1101-1107
frequência (programai 1414
mb
- rotina de desenho (TRS-Color) 760 Ltfcrlá esportiva (simulação) 1 121-1 127 de tela (TRS-80) 947, 994
Ulreiros (programa) 913-920, 921-925 IPRINT 650-652, 917 de variáveis 1215
I.IFO 110
- auxiliar 876-880 ( V.t. Disco e Fita)
Limites de crescimento 1063
- cartuchos 91
' - d e valores 443 - cuidados com fitas e discos 488
LINE - discos rígidos 1133
( V. I. Compiladores)
em LOGO 1330
- desenvolvimento 1346 - uso em comandos BASIC 23 no Apple 180-181
-LOGO 1288-1290, 1314-1320. 1326-1331, MA KL 1345-1346 no MSX 179, 808
1341-1346, 1426-1427 Maladiretu 1384-1385 no Specirum 175-177
-
para bancos de dados 1291, 1469 Malha 1". Laços no TK-2000 180-181
- PASCAL 1288-1290. 1436-1439, 1446-1451 Manchetes (programa) 913-920.921-925 no TRS-Color 177-178
LINHAS Manipulação no TRS-80 178-179. 1412
- comandos múltiplos 44 -
de bits 1335, 1378-1380 no ZX-81 177
usodoCHRS 1378 - páginas gráficas 1096-1100. 1141-1145
- duplicação 552
- no Spcctrum 661 - de cordões 703 - ponteiros e indicadores 175
-numeração 16 Mantissa 894 - RAM 174-175
Mapa de memória Memória - reserva no Spcctrum 176
LISA 1000, 1291 I'.
Localização do cursor 1412-1413 -funções 434-440.608-613, 1344. 1347 -secretas 1091-1095 (Kr. Senhas)
ía/w.s.wi^ - úpos de textos em jogos de aventura 1430
LOCATE 10, 150. 503. 553-555, 1366 - operações matemáticas 1 .
Lógica de programação 41-45. 76-80, 301-305, e Operações Menu 441-443, 504-506, 623-624
522 - assistente para o DOS (programa) 936-940
1291 Matriciais, impressoras
Lógico, cálculo V. Calculo - uso com gráficos 1441 - uso de canelas ópticas 926
LOGO 1288-1290, 1314-1320, 1326-1331, Matriz, gerador de (teclado) 988 - uso de subcordões 1402
1341-1346. 1426-1427 Matrizes 201-207. 1303-1304 MERCÊ 456-460
- arquivos 1329-1330 - aplicações 207 - uso na proteção de programas 551
Vol. 1 — pág. 1 a 300; vol. 2 — pág. 301 a 600; vol. 3 — pág- 601 a 900; vol. 4 — pág. 901 a 1200; vol. 5 — pág. 1201 a 1500.
5
- bancos de dados 75 prograni.içãi) dc iiiiisk.ís poli Iónicas 1009- (01 tabela de nomes (MSX) 533. 1361-1363
-
- dinâmicos - símbolos gráficos de teclado 553-555 efeilo sobre velocidade de execução 932
aplicações 677 em BASIC 99-100
simulação 670-678 cm BASIC 808-814 Nonário, sistema de numeração 3?
irajelória de objetos 670-678, 766-773, em LOGO 1426-1427 NOP 558
781-787 - tabela de NORMAL 390, 1249
- distrihuiçôes de probabilidades 1 176-1 180, - tabela de Normal, distribuição 779-780. 1179-1180,
1 181-1 185 - ledas programáveis 621-626 US1-1I85
-óptica 1164 VRAM
- 531. 808. 1132 lempos
- PERT 1454
-padrões gráficos naiurais 161-1 167 1 MUDECL 1319 NOT 224-225. 301-304
-ressonância 165-1 166 L MUDEHG 1427 na manipulação de
- bits 1335, 1378
-simulação 67(1-678, 981-987. 10611068 Mulllplexação 1406 Notação
- sistemas de numeração 36 Multiplicação em binário 37-39 - BNF 1446
- tipos de 176 1 Multiplicativas, cifras (criptografia) 1093-1095 - cientifica 894
Modem 561-564, 1200, 1404 {V.t. Códigos) - de engenharia 894
-acústico 564 Múltiplos 1347 - hexadecimal cm BASIC 58
- características 1406 Múltiplos, comandos V, Comandos múltiplos - musical 741-742, 745
- tipos 1407 Múltiplos eventos (probabilidade) 776-777 - sufixa e infixa 1343
Modo «ranço 1442-1443 Multilonal, video 800 Notas musicais 722-724. 742
MODULA 1288-1290 Música 721-727.741-747, 1009-1015. 1082 - controle de duração 726, 745
Modulo 1341 V. t. Efeitos sonoros) - tabela de conversão para o MSX 1015
(
Vol. 1 — pág. 1 a 300; vol. 2 — pág. 301 a 600; vol. 3 — pág. 601 a 900; vol. 4 — pig. 901 a 1200; vol. 5 — pág. 1201 a 1500.
IIIIIIIIIIHHB iNDMKMMO llllllllll
- de coleções (programa) 68-75, 81-85 PARAFRENTE 1318
-memória 174-184 Paralelas, interfaces 525
programas BASIC 513,1101-1107 Parâmetros de uma função 609
- microprocessador 109-112 Parênteses
- vídeo 86-87, 178. 268, 531-533 - uso cm valores monetários 1440
Oleio (jogo) 756-760. 796-800 Paridade, bits de 1406
Otimizaçãu 905 Partículas subalõmicas (simulação) 1 164-1 165
HM Vol. I
— pág. I a 300; vol, 2 — pág. 301 a 600; vol. 3 — pág. 601 a 900; vol. 4 - pág. 901 a 1200; vol. 5 — pág. 1201 a 1500.
IIIIIIIIIHHHHHHHHHHHIIIIIIIIIII
- uso cm simulação e previsão I] 27-1 128 Polias 984-986 - uso em simulação 1121-1127, 1176-1180,
- velocidade de execução 933, 1468-1469 Polifonia (música) 1009 1181-1185
Pessimista, tempo 1454 Polígonos, desenho de 865 Problemas, resolução de 873, 1301-1305
Piaget. Jean 1314 Ponle. desenho de (programa) 131-132 Procedimentais, linguagens 1290
Pilha Ponteiros 175 Procedimentos 1223
- no 6809 793 Ponto de fuga 1391 - em LOGO 1287, 1319-1320
- no Apple e no TK-2000 180 Ponto de observação 642-644 - linguagens 1290
- no Spectrum 176 - PASCAL 1436
- no ZX-81 177 -contagem em Assembler 1228-1233 Processador, registro de (UCP) 112
- UCP 110 -contagem em jogos 47-52, 61-67 Processamento de imagens 1286. 1470
I-IIOI i:*s -em Avalanche 1001-1008. 1228-1233 Processamento de textos
1277-1278 715-720 - acentuação em português 280, 1431
Pintor Alopradn (programa) - Tuncões para detecção
- padrões M64-II65 - apresentação de um texto 332
Pixrls 86-87. 114. 1470
Pia» -1
, gráficos 634-639 Pontuação cm PRINT 13, 146-152
PL-1 1288 POP 215 mala direia 1384-1385
Pirar 47-52, 61-67 Populações programa dc impressão 17-20
- em Avalanche 1001-1008.1228-1233 - dc coelhos (simulação) 1065-1067 - comparação entre editores 580
Planejamento - de peixes (simulação) M66'M67 - editor de textos {programa) 576-580,
de projclo (programa) 1451-1460
- Põquer de dados (programa) 1234-1240 586-591, 614-620
formatação de [elas de texto 501-506
- Põr-do-sol (programa) 25-26 - funções 245-246
jogos de aventura 208-212
- Portadora, onda 1407 - pacotes aplicativos 1381-1385
- jogos de guerra 1016-1020 Portas 556 - substituição de palavras 1403
- planilha eletrõnica 1 110 - controle dc dispositivos c\tcrnos 1286 Processos
Planeias - definição 556 - controle dc 1321-1325
- simulação de órbitas 786-787 - no TRS-80 1032 - de Bernoulli 1176
Planilha eletrõnica (programa) 1108-1115, POS 1313 - de Poisson 1177
1 134-1 138,' 11S4-1 160 Pós-byle 793 PRODLICT 1343
Plania Posição, cifras de 888-891 {Kr. Códigos) Professor de Dalilograila {programa) 253-259,
- crescimento (simulação) 1063 Potenciação 434-439 276-280. 281-286. 328-333
PLAV 725-727 Potências binárias59 PROG 175, 1340
- efeito sobre relógio interno 659 Potência sonora 1083 - na proteção de programas 550
- no MSX 170-172. 1010 POTS 1330 PROGRAM 1438
- no TRS-Color 172-173 PPOINT 716-720 Programa, área de (memória) 175-179
PLOT 113 P-RAMT (variável no Spectrum) 176 Programação { Kr. Técnicas de programação)
- no Spectrum 114. 502. 1248 Precisão 1440 - Assembler V. Assembler
- no ZX-81 116 - do relógio interno 67 caraclcristicas da impressora 652
Plotler 968 - erros 899 uso do CHRÍ 1442-1445
Pluguc para gravadores 54-55 - especificação no PRINT USING 500 - cursor no TRS-80 1413
PMODE 86-87. 118, 178. 236. 345, 392, 479, PRESET 265, 392 - de arquivos 687-692. 1252-1256
Pressão - de blocos gráficos 406-413
PO 1330 - conversão dc medidas (programa) 374-380
POINT 716-720, 1312 Preslel 1407 cm Avalanche 824-833
comparação com PEEK 947
- Previsão 1121-1127, IIS1-1I85 - de jogos V. Jogos
conversão do TRS-Color para o TRS-80
- 52 PRIMEIRO I34J-I346 - desenvolvimento de novas linguagens 1346
Poisson, processos 177 1 PRINT - cm código de máquina V. Código de máquina
POKE 261-268 -
com operadores relacionais 302 - estruturada 221-225
- aceno do relógio interno 659 - em LOCO 1342 PASCAL 1436
- melhoria da apresentação Je um texto 332 repercussão sobre velocidade 931
operacional I24B-1251 - pontuação 13 - ferramentas
- alteração da RAMTOP 212 - relação com BASE 1366 extensão do BASIC (Spectrum) 1281-1283
- controle de robôs 1286 - sinais de pontuação 146-152 indexadot de programas (Spectrum)
- cópia de telas (TRS-80) 947 - USING 500, 899-900, 1440 1461-1463
- delimitação da área de tela no Apple 266 PRINT® 4-10. 150. 502. 1312-1313 - gráfica V. C1RCLE, DRA W, Gráficos,
- desativação da tecla BREAK 1313 - com impressora 651 LINE, OT. PL, PSET. SET ele.
no TRS-80 1412-1413 - conversão do TRS-Color para o TRS-80 52 - heurística 905
- encadeamento de programas - cm animação gráfica no TRS-80 160 - linguagens 1288-1291
no Apple 460 - uso em animações gráficas 669 - lógica 301-305
no TRS-Color 458 - uso no TRS-80 160 - LOGO V. LOGO
no TRS-80 460 PRINT AT 114. 148. 502 - PASCAL V. PASCAL
- entrada de código dc máquina 88 - no Spectrum 867 - sintetizadores de voz 448
- modificação da tabela de atributos - uso em animação gráfica 341-342 - técnicas V. Técnicas de programação
{Spectrum) 515 PRINT* 691-692, 917, 1254-1256 top-down 222
- obtenção dc efeitos sonoros 265 - com impressora 651 Programa-fontc 1437
- obtenção de teclas aul o- repetitivas 265 Probabilidades 774-780, 1I76-IIS0, 1181-1185 Programa-objelo 1437
- para alterar a velocidade de processamento - cálculo de 277. 774-780 Programas
- distribuição de 777-780. 1176-1177, - armazenagem em BASIC 1101-1107
(TRS-Color) 266
- programação gráfica 122 1181-1185, 1454 - autocarregamento 549-550
- rotinas em código de máquina 973, 1419-1420 - simulação de uma moeda 775-776 - auto-execução 550
- tela gráfica (TRS-Co!or) 86-87 - triângulo de Pascal 277 - combinação de 456-460
- variáveis de sistema no Spectrum 1340 - uso em previsão 1121-1127 - comentários em 207
Vol. 1 — pág. 1 a 300; vol. 2 — pàg. 301 a 600; vol. 3 — pág. 601 a 900; vol. 4 — pàg. 901 a 1200; vol, 5 — pág. 1201 a 1500.
iniimmiiw—^iiiiiiim
BASIC - conversão de graus em 334-336 Repetição
- compactador para programas
(TRS-Color) 536-540 Ralos catódicos, tubo de 852 - em BASIC 21-27
- documentação dc 207 Raiz quadrada 439-440 - em LOGO 1330-1331
- edição de 412 - em LOGO 1344 - em PASCAL 1447-1448
em programação estruturada. 224-225
encadeamento de 456-460 RAM 174-175 -
1% Vol. I
- pág. 1 a 300; vol. 2 - pág. 301 a 600; vol. 3 - pág. 601 a 900; vol. 4 - pág. 901 a 1200; vol. 5 - pág. 1201 a 1500.
IIIIIIIIIIIHHnHHHHHHHIIIIIIIIIII
Servomecanismo 1323 - uso em gráficos 337-340. 354-360
Servomoiores 1286, 1324 Sinalizadores 110
Vol. 1 — pág. 1 a 300; vol. 2 — pág. 301 a 600; vol. 3 — pág. 601 a 900; vol.-4 — pág. 901 a 1200; vol. 5 — pág. 1201 a 1500. m
IIIIIIIIIIIHMHHHHHHHHIIIIIIIIIII
- atributos de tela 716-720 STRINGS 62, 245. 703, 1214 - organização no TRS-80 1412
- auto- repetição 265. 1248 - emprego no PR1NT US1NG 500 - seleçâo para processamento de lextos 1385
- caractere* definidos pelo usuário 122. - simulação - símbolos gráficos de (K.í, Caracteres)
341-347, 529 no Spectrum 661 no MSX 553-555
- CIRCLE 115, 232 no TK-2000 737 no Spectrum 640, 661
- círculos (desenho) 232 - uso com caracteres gráficas no TK-2000 734-737
- CODE 252 no MSX 553-555 no TRS-80 627 660, 669. 1413
,
<9B VoL I
— pág. I a 300; vol. 2 — pág. 301 a 600; vol. 3 — pág. 601 a 900; vol. 4 — pág. 901 a 1200; vol. 5 — pág. 1201 a 1500.
- utilização do GOTO 78-79 Térmicas, impressoras 524 - de arquivos entre computadores 1404
Teta Terminais de dados 1406 - tela 947. 994
- acentuação em português 280 Teste Transformação de coordenadas 3-0 644-647.
armazenagem em cordoes - de gravação (programa) 53 1391-1395
alfanuméricos 947. 994 - programa de leste para vídeo 1257-1258 Transformada de Fourler 1083
- armazenagem em disco ou fita 994 TEXT 116 Transmissão em filas magnéticas 877
- 515,716-720,814
atributos de Tralor 525 (Kr. Impressoras)
- borda decorativa (programa) 24J-246 - acentuação em português 280, 1431 "Três Ratinhos Cegos. Os' (melodia) 744, -
- organização da memória no MSX 531-533 - acionadores dc disquetes 907 COLOR 118. 393
-
Vol. I — píg. 1 a 300: vol. 2 - pág. 301 a 600; vol. 3 - pág. 601 a 900: vol. 4 — pág. 901 a 1200: vol. 5 - pág. 1201 a 1500.
niiiiiiiiiii
Truque* V. Técnicas de programar.
1438-1439, 1450
w— ;
96
96-97
armazenagem 1 101-1 107
i VARPTR
—miimiiiiiu
972
-
VRAM
VTAB
-
VTRANSF
utilização
10,
em
152, 503
com impressora 650
blocos gráficos
531-533.808.812,1132,
(programa) 947
armazenagem em BASIC 894-900
- número de variáveis definiveis 1126
VARPTR 898, 947. 1378
- uso em rotinas di' código de máquina 972-973
Varredura
- teclado 988, 991-993
- video 852
VARS S75
Vazios, cordões 100
VDP 808, 1249 Wafadrive 877, 908
UCSD PASCAL 1436. 1450 - como melhorar no simulador de voo 607 WARS (variável de sistema no ZX-81) 177
U5INC 500, B99.900, 1440 efeito dos espaços 932 WRITELN 1438
- com impressora 65 - trajetória de uma bola 674-677 WYSIWYG 1383
- pág. 1 a 300; vol. 2 - pág. 301 a I; vol. 3 - pág. 601 a 900: vol. 4 - pág. 901 a 1200; vol. 5 - pâg. 1201 a 1500.
IIIIUIIIIIHHHH^HHHMIIIIIIIIH
Pág. 26 - legenda ã esquerda Pág. 398 - 3? col. - 11? parágr. Pág. 908 - 1? col. - 2? parágr.
Pág. 34 - 1? col. - 4? parágr. Pág. 444 - quadro - 2? parágr. Pág. 924 - 2? col. - último parágr.
Onde se lê: 5 + 10 + 200 + 3000 Onde se lê: Os micros das linhas Onde se lê: TR-Color
Leia-se: 5 + 70 + 200 + 3000 TRS-80, TRS-Color, Apple, TK-2000 Leia-se: TRS-Color
e MSX,
Pág. 53 - 1? col.- 2? parágr. Leia-se:Os micros das linhas TRS-80, Pág. 932 - 3? col. - 2? parágr.
Onde se lê: um conector DID Apple, TK-2000 e MSX, Onde se LET A = VAL"100"
lê:
Onde se lê: ARITMÉTICA tem um canhão disponível". Onde se lê: artigo da página 816.
Leia-se: ARITMÉTICA Leia-se: mensagens do tipo "VOCE Leia-se: artigo da página 794.
TEM CANHÕES
1 DISPONÍVEIS".
Pág. 60 3? col. • quadro
- Pág. 1124 - 2? col. - 3? parágr.
Onde se lê: John von Newman
Onde se O octal tem 8 dígitos: 0, 1,
lê: Pág. 561. 2t col. - 5? parágr.
-
Pág. 245 - 1? col. - 4? parágr. Pág. 609 - 1? col. - 1" parágr. Onde se lê: saftware
Onde se lê: BS"45 MARCOS" Onde se lê: Alguns computadores (Apple, Leia-se: software
Leia-se: B$="45 MARCOS" TK-2000, MSX e TRS-80) permitem
dois ou mais parâmetros, enquanto Pág. 1320 - quadro
Pág. 260 - 1? col. - 5?, 6?, 7? parágr. outros (TRS-Color), apenas um. Onde se FORWARD
lê: D:
Pág. 260 - 2? col. - 2? parágr. Leia-se: Alguns computadores (Spectrum, Leia-se: FORWARD :D
Onde se lê: CHRS MSX e TRS-80) permitem dois ou
CHRS mais parâmetros, enquanio outros Pág. 1329 - 3? col. - 1? parágr.
Leia-se:
(Apple, TK-2000 e TRS-Color), ape- Onde se < CIRL >< C
lê:
Pág. 290 - 1." col. - último parágr. nas um. Leia-se: <CTRL><C>
Pág. 291 • 2? col. - último parágr.
GETS Pág. 610 1? col. - 1? parágr. Pág. 1349 - 3? col. - 6? parágr.
Onde se lê: comandos -
Onde se lê: trará 65, o código de B. Onde se lê: Detector de visão Onde se lê: (só vale para o TK-90X):
Leia-se: Irará 66, o código de B. Leia-se: Detector de vídeo Leia-se: (vale para toda a linha Sinclair):
Onde se lê: SI$ Onde se lê: concectar Na linha 60. substitua a flecha para
Leia-se: SS Leia-se: conectar cima pela letra 1.
IIIIIIIIIIIHHH^HMMHHIIIIIIIIIII
Pág. 32 - 3? col. - progr. Pág. 1214 - 2? col. Pág. 304 - 2f col. - progr.
Na linha 150, substitua a flecha para Onde se lê: X$(LEN XS - N TO + 1) O logotipo não se aplica a este
cima peta letra l. Leia-se: X$(LEN XS-N TO) programa.
Pág. 42 - 2? col. - progr. Pág. 94 - 1? col. • 3? progr. Pág. 366 - 2? col. - \" progr.
Para funcionar no ZX-81, coloque Pág. 100 - 1? col. - 3? progr. O logotipo não se aplica a este
tudo em maiúsculas e faça as seguintes O logotipo não se aplica a este programa.
alteraçõesno programa: programa.
50 IF G = N THEN GOTO 90 Pág. 640 - 2f col. - 4" parágr.
90 PRINT "MUITO BEM" Pág. 136 - 3? col. - progr. Onde se lê: UNK
92 PAUSE 100 Corrija a linha 200: Leia-se: INK
94 GOTO 10 200CLS:PRINT BR1GHT v;PAPER 2;
1NK 6; AT 2,4;"MENU PRINCIPAL" Pág. 824 - 2f col. - progr.
Pág. 43-1? col. - 2? progr. Corrija a linha 750:
Para funcionar no ZX-81, mude tu- Pág. 169 - 1? col. - 2? parágr. 750 REM org 58155
do para maiúsculas e separe as instru- A crescente:
ções da linha 110 em duas linhas: No micro nacional TK-90X, o co- Pág. 825 - 3? col. - progr.
110 LET A$ = INKEYS mando BEEP recebeu o nome de Corrija a linha 40:
115 IF A$< >"S" AND A$o"N" SOUND. Portanto, se você tem um 40 DATA 83, 67, 79, 82, 69, 45, 48.
THEN GOTO 110 TK-90X, substitua todas as ocorrências 48, 48, 48, 48, 48, 76, 73, 86, 69, 83,
do comando BEEP pelo comando 45, 53, 71, 65, 77, 69, 32, 79, 86, 69.
Pág. 77 - 1? col. - 2? progr. SOUND nas linhas 8010 (programas da 82, 32. 33, 33, 33, 35, 35, 33, 35, 35,
Para funcionar no ZX-81, divida a li- página 169, 1? e3f colunas), 8010 e 8015 35, 33, 35, 35, 33, 35, 33, 35, 35. 35,
nha 15 em: (programa da página 170. lf coluna) e 35, 33, 35, 33, 35, 35. 35, 35, 33. 35,
15 INPUT A 400 (página 170, 2? coluna). 35, 33. 35, 35, 35
16 INPUT B
Pág. 213 - 3? col. - 1? parágr. Pág. 867 - 3? col. • progr.
Pág. 78 - 2? col. - progr. Onde se lê: Os comandos Id de, 16384 Corrija a linha 100:
Para funcionar no ZX-81. forme no- c Id hl. 1.16385 100 GOSUB 2
vas linhas com os comandos separados Leia-se: Os comandos Id de, 16384 e Id e, na linha 2, substitua GOTO 10 por
por dois pontos (GOTO 1 70) nas linhas hl, 16385 GOTO 1
Pág. 245 - 2? col. - progr. Pág. 251 - 2f col. - progr. " "lanceiros" "lanceiros" "arqu
, , ,
Pág. 334 - 3? col. - progr. Pág. 278 - 2? col. - progr. Pág. 1214 - 2? col.
O logotipo não se aplica a este Corrija a linha 1010: Onde se XS(LEN X$ - .N TO +
lê: 1)
programa. 1010 PRINT AT 12,6;S$ Leia-se: X$(LEN X$-N TO)
IIIIIIIIIIMH CRKATA GCRAl mil!
Pág. 63 - 2? col. - 3? parágr. Onde se lê: A linha 60 investiga se "L" Pág. 327 - 3? col. - 2? progr.
Onde se lê: programa para o TRS-80 e foi pressionada... A linha 70 confe- Este programa também pode ser exe-
o TRS-Color, re se "R"
foi pressionada... cutado no TRS-Color.
Leia-se: programa para o TRS-Color, Leia-se: A linha 60 investiga se "E" foi
pressionada. linha 70 confere se
. . A Pág. 495 - 1? col. - 6? parágr.
Pág. 224 - 1? e 2? col. - progr. "D" foi pressionada... Onde se lê: Após digiar C
Acrescente (após o programa): Leia-se: Após digitar C
o
O programa indicado funciona ape- Pág. 45 - 1? col. - 5 parágr.
nas no TRS-Color. Para executá-lo no Onde se lè: apenas os das linhas TRS-80 Pág. 535 • 3? col. - 6? parágr.
TRS-80, faça as seguintes modificações: e MSX Onde se lê: GEI
multiplique por dois todos os números Leia-se: apenas os das linhas TRS-80, Leia-se: GET
depois dos comandos PRINT@, nas li- TRS-Color e MSX
nhas 10, 20, 30, 60. 90 e 1 10; suprima Pág. 607 - 1? col. - progr.
as linhas 15 e 120, e inclua a linha: Pág. 52 • 3." col. - quadro Na linha 2340, corrija IF ABS(OY)
95 TIMER = TIMER + 0.1 Onde se lê: se N for a locução da tela para IF ABS(PY)
Leia-se: se N for a locação da leia
Pág. 270 a 275 Pág. 656 - 1? col. - progr.
Todos os programas indicados para Pág. 65 I? col.
- progr. - Corrija as linhas 3040 e 3050:
o TRS-Color também funcionam no Corrija a linha 420 3040 IF PEEK(342) = 247 THEN PT =
"
TRS-80. 420 LET K$= INKEY$:IF KS = " PT - 1
Pág. 1239 - Zf col. - progr. Corrija a linha 5070: 192 SOUND A,RND(1)*T
Substitua o sinal circunflexo entre as- 5070IFD>NR AND G = THEN G=0: l 195 FOR Z= 1 TO RND(I)«200
pas "'"por "" nas linhas 550 e 580. CH = - ELSE 1F D > NR THEN 5230
1 197 NEXT Z,ZZ:RETURN
200 IF T = 255 THEN T= 16:A= 1
Pág. 1239 - 3? col. - progr. Pág. 93 - 1? col. - progr. 201 FOR ZZ= TO 10 1
Substitua, na linha 950, PRINT@433 Corrija a linha 250: 202 SOUND A,RND(1)*T
por PRINT@432 250 POKE SA,VAL("&HO" + S$) 205 FORZ = TO RND(I).16 STEP 8
1
lê: O
laço das linhas 70 a 90 co-
loca nesse local
Pág. 793 - 1? col. - progr.
Corrija a linha 10:
lOorg -12197
mim
Pág. 1040 - 1? col. - progr.
1
Corrija a linha 1180:
180 IF'M(T<B,8>,T(B,9)>< >0 THE
Leia-se: O
laço das linhas 60 a 90 colo- e suprima a linha 20. N GH = 223 + M(T(B,8).T(B,9))
ca nesse local
Pág. 794 - 2? col. - progr. Pág. 1042 - 3? col. - progr.
Pág. 429 - I? col. - progr. Corrija as linhas 20 e 120: Apague a linha 200 e acrescente:
Corrija a linha 2030: 20 call - 12213 201 VC = 0:DE = 0
2030 DRAW *'S12BM" + STR$(CX + 3) 120 call - 12210
+ ","+STR$(CY + 2) + S$ Pág. 1131 - 2? col. - progr.
Pág. 831 - 1? col. - progr. Corrija a linha 90:
Pág. 430 - 3? col. - 3? parágr. Corrija a linha 30: 90 cp 0
Onde se lê: A linha 60 dimensiona 30 ld hl, - 15200
Pág. 1186 - 2." col. - progr.
Leia-se: A linha 82 dimensiona
Pág. 916 3? col. • 3? parágr.
- Corrija a linha 350:
Pág. 431 - 2? col. - 2? parágr. Onde se lê: A linha 200 zera C 350 REM ld a,4
Onde se lê: das linhas 70 a 110 Leia-se: A
linha 220 zera C
Leia-se: das linhas 88 a 96 Pág. 1213 - 1? col. - progr.
Pág. 945 - 2? e 3? col. - progr. Corrija a linha 900:
Pág. 452 •
col. progr.
1." - Corrija estas linhas: 900 jp 53850
Acrescente a linha 6505: 10 org 53693
6505 CLOSE#l 80 ld de, 222 Pág. 1232 - 1? col. - progr.
600 ld(-5223),de Corrija a linha 90:
Pág. 464 - 1." col. - progr. 640 ld de,(-5223) 90 ld a,3
Corrija a linha 800: 670 ld( - 5223),de
800 AS=INK£Y$:IF A$ = "N" AND Pág. 1329 - I? col. - úllimo progr.
A$<>"S" THEN 800 Pág. 946 - 1? col. - 2? parágr. Substitua o programa por:
Onde se lê: A sub-rolina hls AP CIRCULO :LADO
Pág. 553 - 3." col. Leia-se: A sub-rotina ho DESAPAREÇA TAT
Onde se lê: Linha 220: <SHIFT> REPITA 72 [PF :LADO PD 5]
Pág. 52 - 3? col. - I" parágr. Pág. 656 - 1" col. - progr. Onde se lê: Para entender melhor, ex-
Onde se lê: dividindo-se FA por 50 Corrija a linha 6210: perimente introduzir a linha:
Leia-se: dividindo-se TI por 50 62I0IFA$<40THEN PRINT "COMO Leia-se: Para entender melhor, experi-
SUA VELOCIDADE ERA BAIXA," mente introduzir a linha (não vale pa-
Pág. 52 - 3." col.- 3? parágr. :PRINT"NADA ACONTECEU": ra o TK-2000):
Onde se tê: A linha 1290 aguarda... e a GOTO 6500
linha 1300 verifica Pág. 161 • 3? col. - progr.
Leia-se: A
linha 1240 aguarda... e a mes- Pág. 692 - 2" col. - 6? parágr. Pág. 162 - 3? col. - progr.
ma linha verifica Onde se lê: CCTRL-I) Estes programas também podem ser
Leia-se: CTRL- executados no TK-2000.
Pág. 66 • 2? col. - progr.
Acrescente a linha 310: Pág. 845 - 3? col. - progr. Pág. 432 - 3? col.
310 LET T = T+ l:GOTO 130 Corrija as linhas: Onde se lê: 1 160 MP:HGR
Pág. 80-1? col. - progr. A indicação também é válida para o Pág. 486 - 2? e 3? col. - progr.
Retire a linha 10, para funcionar no Apple II. Pág. 487 - 2? col. - progr.
car irá depender, logicamente, das coor- Pág. 116 - 3? col. - progr. Pág. 769 - 3? col.
progr. -
denadas do centro do círculo. Este não Para rodar no TK-2000, substitua as Pág. 771 - progr.
1? col. -
pode exceder os limites da tela, senão linhas 50 e 60: Pág. 773 - progr.
1? col. -
ocorrerá um erro no comando HPLOT. 50 HPLOT 10,75 TO 11,190 Pág. 782 - 2." progr.
col. -
Onde se lê: <CTPL> e <C>. Pág. 117 - 2? col. - 2? parágr. Pág. 858
- 3? col. - progr.
Leia-se: <CTRL> e <C>. Onde se lê: As linhas 80 e 90 servem pa- Pág. 875
- 1? e 2? col. - progr.