You are on page 1of 24
DE PROGRAMACAO DE COMPUTADORES g 8 | : l tT Tt . TT CAO DE JOGOS - CODIGO DE MAQUINA ll" 5 aa Neel! Vol. 1 NESTE NUMERO A ARTE DE FAZER LACOS A.utiidade dos comandos FOR.:.NEXT. Como criar efeitos sonoros. Faca o sol se por, movendo ape: nas algumas teclas e desvende a beleza dos calei- doseepies. Como provocer repeti¢des de um trecho de programa 7 APONTAR... FOGO! Aprenda a verificar se uma tecla foi pressionada ea controlar figuras em movimento na tela. Para que serve o comando INKEY$? Dispare seu missil e destrua 0 inimigo. Veja para que serve a auto- repeticdo 29 APRENDA A CONTAR COM UM DEDO SO Alguns sisternas numéricos. Faca contas em dife- rentes bases. O sisterna binério constitui o idioma do computador. Uma calculadora para todas as ba: ses. Bits e Bytes. Para poder programar em lingua: gem de maquina, é necessario conhecer o sistema PLANO DA OBRA. “INPUT” é uma obra editada em fasciculos semanais, e cada Conjunto de 15 fasciculos compe um volume. A capa para cnca- demagao de cada volume estara & venda oportunamente. COMPLETE SUA COLECAO Encmplaresairasados, até selsmesesapdsoencerramento da cleo, poderio ser comprados, a pregosatualzados, daseguint forma imente — por ‘eiodeseu jofndlero ou drigindo-seao distribuldor local, cujoendereso po. (Gerd ser faciimenteconseguido junto a qualquer joralere de sua cidade Em ‘So Paulo os endeepor sao: Rua Brigade Tobias, 773 (Cento), Av- Indust ial, fo Andre) « 99 Riode Janeiro: Rua da Passagem, 93 (Botafogo). 2. Por Poder st slctados exemplars atrasados amb por carta, que deve Screrviadapara DINAP — Distibuidor Nacional de Publicagoes— Nureros ‘Atrasados Estrada Velha de Osaseo 132 (Jardim Tereza) ~ CEP 06000 — ‘Osseco— Sio Paulo 3. Por elex-~ Litlizeon® (11) 33600 ABSA. Em Port ial os pedis deer se ets a Disribuidra Jardim de Publicagbes Lid Gua Pau Varls Azinhagade Feta 2685, amarate Lisboa: Tel. 2572582 ‘Apartado 57 ~ Teles 43 069 JARLIS ‘Nao erepagamenoantecipada, O alendimeno seri feto peo reembolso posal ‘copagamento, incuindo a despesas postal, devera ser efetuado ao se retar ‘fencomenda na Agencia do Corto. Atengo” ApOs ses meses doencerramento «da coleeto, os pedidos sero atendidos, dependendo da disponibiidade dee toque Obs: Quando pedir livres, menconesempre tiuloe ovo autor da obra, lem do nimero da edict. COLABORE CONOSCO Encaminhe seus comentarios, crticas, sugestdes ou reclamagdes a0 Servico de Atendimento ao Leitor — Caixa Postal 9442, binatio 34 Sto Paulo— SP. a) eae ‘cOLABORADORES Tepandereds tee Dir Ane | heater Efe Leen De fenib ME Saute; Paetnodetlnen Kaus Gee ee aan veToRavra Dera Nice neces Bonds Sirf Car PnP Meroe e Unrest vbr radeadr docs tess i Encode EAhrhtDNAGIEST Acewraemlakmdica _ BeveraCnei pcas Cait bleed tis Corea Crane ignigceee san ts neD\Gio Tee Oye ean jr Mala Ses Nae my Dieu Eta a Rtgs ‘apap propane: Ai Dore faros ago Presta aac fore Edo chele Poe Ania ert eet, St itor eet NV Cakes Editor de kite dao rete (hele de Ate Cars 2B Asientes de Arte: Aon Over loes Die Sang, ‘en lareOe, rce A Ar, eng een Stn Serene Reda Caordetalor:Sfana Ca Serer de edi ear gins eset etre Danie Made Lore Cali Marsa fe Ande Maz dees, Secret: A i Pn Coordenci. Atstente de Ate Dagmar Bs Sanpua COMERCIAL Detar Comer ra Main Se (Gerene Comer Fis Ferucs arden (erent eins ens ara or! = econ Marshall Cavendish Limited, 1954/85, © EdltoraNova Cultural Lida,a0 Pat, Bras, 1986 digo organizada pela Elitora Nova Cul tia, (Artigo 15 da LeiS 988, de 14/12/1979, Estaobra foi composta na AM Producoes Grafeas Ltda. empresa na Divi Grafica da Feitora Abril. GRRE aa ES ES AARTE DE FAZER LACOS r a APRENDA A CRIAR EFEITOS NOROS \ Ap LT) DESENHE NUMEROS COMLACOS FOR... NEXT W_ONASCERE OPOR-DO-SOL NO HORIZONTE DO VIDEO a CALEIDOSCOPIOS Os comandos FOR e NEXT servem para provocar repeticées de um trecho de programa em BASIC. Muito verséteis, eles séo “pau para toda obra” e podem ser empregados em quase tudo, desde jogos até programas comerciais, strutura de progra \cOes repetitivas, Ele é usado quando se quer que 0 com: utador conte até um certo numero, exe 0 mesmo tempo, alguma ou \ém disso, 0 lago pode a repetigdio do mesmo pa drdo grafico em diferentes posigdes na tela. A combinacdo de instrugdes FOR oe == A? 2 eT. Zs ae e NEXT na linguagem BASIC é usada na programacao de diversos tipos de lagos Assim, voc aprender a criar ‘“pin- turas instantaneas’” usando laos FOR... NEXT em programas muito pe- quenos. Esses lagos serao igualmente titeis na programagao de jogos e em pro- gramas de todos os tipos. Um laco FOR... NEXT em BASIC € um mecanismo que faz com que 0 computador repita uma mesma opera. slo certo niimero de vezes. ‘Suponha, por exemplo, que voc® qui- sesse saber as raizes quadradas de todos ‘95 niimeros de I a 100, Vocé poderia di- zet ao computador PRINT SOR(1) PRINT SQR(2) PRINT 50R(3) ¢ assim por diante E a cada pergunta o computador da- ria a resposta. Mas, além de impor um enorme trabaiho de digitacao aos seus dedos, esta ndo é uma técnica particu: larmente eficiente de uso do computa- dor, Tente assim: Sumas 10 FOR Nel To 100 20 PRINT N, SQR(N) 30 NEXT N 40 PRINT "E ACABOU." Esse programa faz com que o com putador imprima I e sua raiz quadrada, 2e sua raiz quadrada, 3 ¢ sua raiz qua- Grada... e assim sucessivamente até atin- gir 100, no momento em que o apare- Tho para ‘Como ele faz isto? Quando o com- putador encontra um FOR, “‘sabe”” que as linhas seguintes serao repetidas. As- sim, ele as executa até encontrar 0 NEXT, volta a linha da instrugdo FOR e repete 0 processo. Enquanto trabalha, 0 computador também esta contando. A primeira vez em que passa pela linha 20 ele calcula a raiz quadrada de 1, na segunda, a de assim por diante Quando tiver trabalhado com o maior niimero da instrucdo FOR, ele deixaré automaticamente 0 lago ¢ con- tinuard a execucio do programa pela instrugao seguinte ao NEXT — no nos- Ao executar um lago FOR... NEXT, ‘computador pode contar em unidades Giferentes de 1. Para isso, usamos a de- claragdo STEP (isto € **passo” ou ‘de grau") junto com a declaracao FOR. Veja o exemplo: —t— TTT Ir seas 10 FoReNe1 To 30 STEP 2.7 20 PRINT N,SQR(M) 30 NEXT W © computador nao se atrapalha com © fato de que 30 ndo se divide em um nimero exato de passos, como vocé pe- diu, Ele vai o mais perto que pode ¢ en to para, ‘O niimero de linhas entre o FOR NEXT tampouco o preocupa. Voc po- de colocar 0 FOR na linha 10 ¢ 0 NEXT na 90 — ou mesmo 9000 — que ele nao se esquecerd delas. Lembre-se, porém, de que 0 computador executaré as linhas do lago a cada passagem. ERIE Ollago FOR... NEXT tem dezenas de lusos em programacao. A mais simples delas ¢ gastar tempo. Se vocé rever a seco Voce sabe ta- buadia? na primeira ligao de BASIC contrard um bom exemplo, Nesse caso, tudo 0 que acontece entre cada FOR ¢ ‘seu NEXT € que o computador “con: ta” um mimero. Essa contagem ¢ mul to rapida (0 tempo exato pode ser da or- dem de centésimos ou milésimos de se gundo), Mas, enquanto espera que ele conte até 1000, vocé tera uma pausa bem perceptivel. E se vocé executar: 10 FOR N=1 To 1000000 20 NEXT terd tempo, provavelmente, para to- Mar um café antes que ele termine. Programadores de jogos freqtiente- mente fornam essas pausas menos can. sativas, inserindo nelas algumas notas musicais, Tente este exemplo: 10 FOR 1#255 To 155 STEP 20 SOUND I,1 30 NEXT I 10 FoR n=29 7 20 SOUND .015,n 30 NEXT n 10 STEP ~ 5 SOUND 7,56:SOUND 8,15 10 FOR T=355 TO 0 STEP ~ 20 SOUND 0,1 30 NEXT I 10 FOR N= 1 To 100 20 PRINT PEEK ( ~ 16336) 30 NEXT N. © Apple II padrao nao tém coman: dos intrinseeos para a producio de e tos sonoros. Desse modo, 0 efeito con: wuido € apenas uma série de cliques. Jao TK-2000 tem o comando SOUND Para rodar 0 programa acima no TK-2000, substitua as linhas 10 © 20 10 FOR T=80 10 15 STEP -2 20 SOUND T,30 Este & um exemplo do efeito de som que 0s programadores usam em jogos para dizer “Voce falhou"” ou “0 alie- nigena aterrisou"”. Ao mesmo tempo, quando se faz uma contagem regressi va, a declaragiio STEP existente no la 0 FOR... NEXT deve ser seguida de uum niimero negativo, destinado a dim nuit sua freqtiéncia Pra Apenas por divertimento — e valio- sa experiéncia em programaco — vocé pode usar lagos FOR... NEXT para fF variedades de efeitos graficos Aqui esté uma amostra 7 cs 0 10 20 30 40 50 60 10 30 FOR 70 63 LET MeRND(32)-2 LET C=RND(9)-1 SET_(N.M,C) NEXT N Goro 10 FOR n=0 TO 21 LET moRND*31 INK RND*74+1 Os comandos ou palavras-chave em BASIC, tal como PRINT, GOTO, STEP, etc., precisam ser digitados sempre om letras makisculas? ‘Sim, quase sempre. E preciso con: siderar, no entanto, as especificidades das diversas linhas. Alguns computa dores, como os compativeis com 0 2X-B1 ¢ 0 Sinclaie Spectrum no del Xam margem @ duvidas, pols as pala ‘yras-chave 880 entradas por inteiro, em Matisculas, ao se pressionar a tecla correspondente, (Outros computadores, como os compativeis com a linha TK-2000 e os ‘Apple ile Appie i Plus, no tém minds. cules (e nem aceitam comandos que ‘nao sejam em maidsculas, caso voce tenha essa op¢ao em sua maquina) Finalmente, os compativeis com as linhas MSX e TRS-80 aceitam coman {dos em mindsculas, mas converter in termamente para miaiUsculas todos os ‘comandas em BASIC. 40 PRINT AT n,m; 50 NEXT n 60 Goto Lo 10 SCREEN 3 20 ReRND(-TIME) 30 FOR N-o To 191 step 4 40 LET M-RND(1)"255, 50 LET C=RND(1)*15 60 PSET(H,N) .C 70 NEXT N 80 GOTO 30 5 ar 10 FORN= 0 T0 39 20 LET M = RND (1) * 40 30 COLOR RND (1) * 15 40. PLOT H.W 50 NEXT W A linha 10 define a altura do desenho que serd colocado no video e diz a0 ‘computador para imprimi-lo linha por linha, A linha 20 define a largura e, soma. da a linha 40, ordena a0 computador que imprima pequenos quadrados alea toriamente naquela largura disponivel A linha 30 esgothe, a0 acas0, asco: res dos quadradiihos. ERI an ade _O TRS-80 comum 10 SCREEN 3 Por-do-sol, de autoria do lago FOR. 20 ReRND(-TIME) 30 FOR N-0 TO 191 40 FOR H-0 To 255, 50 LET CeRND(1) 415 60 PSET (M,N) .C 65 NEXT 70 Next N 80 GoTo 30 Ter 4 STEP 4 10 GR 20 LETN = RND (1) * 40 30 FOR M = 0 T0 39 40 CoLOR- RND (1) * 15 50 PLOT M,N 60 NEXT M 80 GoTo 20 Antes de ir adiante, aqui esté uma pe- ‘queno experiéncia que voce deveria ten. tar — apenas no TK90X e no CP400. Apague a linha 45 dos dois primeiros programas e rode-os novamente com a seguinte modificagao: 5S NEXT H Vocé descobriu mais uma caracteris- tica_ importante dos lagos FOR. NEXT: quando se tem dois ou mais ia- {G05 no mesmo programa, estes devem fi Car ou “‘aninhados” um no outro ou se- parados. Se eles se eruzam, 0 programa nndo funciona. Este programa usa um lago FOR, NEXT para criar um padrao de “por- do-sol””. A primeira parte do programa define um ponto no meio da tela, Em seguida, ele desenha linhas luminosas NEXT para 0 TK-2000. ue irradiam desse foco. nda parte desenha uma série de linhas na metade inferior do video, partindo de pontos fixos no “horizon te, Isso cria um belo efeito de perspec- tiva que pode ser aproveitado em pro- aramas futuros 20 PMODE 3,1 30 PcLs 3 40 Coton 2 50 SCREEN 1,0 60 FOR N=1 70 80 70_LINE (127,95)~(256-RND (256) .9 6-RND(96)) ,PSET 80 NEXT 90 COLOR 4 100 FOR N-95 TO 191 STEP 12 110 LINE (127,95)-(0,N) ,PSET 120 LINE (127,95) (255,N) , PSET 130 NEXT N 140 FOR N-0 70 255 STEP 10 150 LENE (127,95)~(N,191) ,PSET 160 NEXT N 170 Goto 170 5 BORDER 0 INK 6 cs 10 FOR n=1 70 60 20 PLOT 127,75 30 DRAW INT’ (RND*250)-125, INT (RND*97) 40 NEXT n 45 INK 5 50 FOR n=75 TO 0 STEP -15 60 PLor 127,75 PAPER O 70 DRAW -127,-n: PLOT 127,75: DRAW 127,-n, 80 NEXT n 100 FOR n=-127 TO 127 STEP 20 Alo PLor 127,75 120 DRAW n,-75 130 NEXT n A versio do Apple II para 0 Caleidoseépio. 20 SCREEN 2 30 cLs 40 Coton 11 50 ReRIND(~T1ME) 60 FOR N=1 TO 80 70 LINE (127,95) (256-RND(1)*25, 6,96-RND (1) *96) 80 NEXT N 90 COLOR 6 100 FOR N-95 To 191 STEP 12 110 LINE (127,95)-(0,N) 120 LINE (127,95) -(255,N) 130 Next N 140 FOR N-0 TO 255 STEP 10 150 LINE (127,95)~(N,191) 160 NEXT WN 170 GoTo 170 10 HGR 20 HCOLOR= 5 30 FORT = 1 To 80 40. PLOT 139,79 TO RND 279, BND (1) * 79 as 50 ‘Next T 60 COLOR 6 70 FOR I = 79 TO 159 STEP 10 80 HPLOT 139,79 TO 0,1 90 HPLOT 139,79 TO 279.1 100. NEXT I 110 FOR I = 0 TO 279 STEP 20 120 HPLOT 139,79 TO 1,159 130. NEXT 1 Finalmente, temos um programa es petacular que funciona em quatro de hossas maquinas a 3 PHODE 3,2 6 Pets No TK-80X 0 Caleidosedpio é mais grosseiro e intenso 9 SCREEN 1,0 10 FOR L=0'To 255 STEP 2 15 COLOR RND(4) 20 LINE(O,0)~(L,191) ,PSET 30 LINE (255, 0)~(255-L,191) ,PSE a 40 LINE(O,191)~(t,0) ,PSET 50 LINE (255,191)~(255-L,0) ,PSE t 60 NEXT 70 Goto 10 10 FOR n=0 To 255 STEP 3 15 INK RND*8 20 PLOT 0,0: DRAW n,175 30 pLor 255.0: DRAW -n,175 40 PLOT 0,175; DRAW n,-175 $0 PLOT 255,175: DRAW’ -n USE 0 LACO CERTO Existem muitas oportunidades pera usar os comandos FOR... NEXT em la ‘G08, mas também muitas ocasides em ue voce ndo deve empregé-ios. Quando voce quiser, por exemplo, forcar o programa a realizar um nume {0 fixo de repeticdes, sem interrupcao fem quaisquer fases do processamen: to, use um laco FOR... NEXT. Em contrapartida, se vocé quiser que uma sequencia de programa seja executada até que uma determinada Condi¢ao seja atingida, para em segui {da "'sair"" de dentro do lago, use uma declaracdo diferente, no lugar de FOR... NEXT. 0 comando mais reco mendavel em casos assim é 0 GOTO, em BASIC. 60 NEXT n 70 Goro 10 3 ReRND(-TIME) 6 cts 9 SCREEN 2 10 FOR L=0 To 255 STEP 2 15 COLOR RND(1)*15 20 LINE (0,0)-(L,191) 30 LINE (255,0)~(255-L,191) 40 LINE (0,191)- (1,0) 50 LINE (255,191)-(255-L,0) 60 NEXT L 70 GoTo 10 10 HOR 20 FOR N = 0 70 279 STEP 5 30 HCOLOR= AND (1) * 6 +1 40 PLOT 0,0 70 N,159 30 HPLOT 279,0 T0279 - N,159 60 HPLOT 0,159 TO N,O 70 HPLOT 279,159 T0279 - N,0 80 NEXT N 90 GoTo 20 Cada um dos quatro segmentos des- ses padres comega com um ponto em tum canto do video. © que o lago FOR. NEXT faz é contar até 0 outro lado do video, enquanto um padrao de linhas é desenhado entre os dois pontos criados dessa forma, A explicacio exata de como os gr ficos funcionam esta em um capitulo posterior, mas apague as linhas 30 40 © voce tera uma idéia geral do que acontece, ‘Voce pode experimentar, ainda, di- gitando algumas das linhas responsaveis pelo desenho, variando as cores, mu- dando os STEP na linha 10 excluin. do 0 GOTO na linha final. Em minutos ‘mas seu padrio de formas e cores é sempre cambiante. voce pode criar centenas de padrdes di ferentes, um verdadeiro ealeidoscépio de formas ¢ cores. Ao fazer tudo isso, voce ndo estard 26 tiando belas imagens no video. Vo- @ estard também se nitiarizando com uma das mais tteis “ferramentas” do programador. Como devo proceder para manter lum registro de todas as variaveis usa das em meus programas. sem me per der entre tantos Xs © Ys? Uma forma de evitar 0 uso desorde nado de variaveis em um programa é darhes nomes que lembrem o que elas representam jnomes mneménicos). Por ‘exemplo, se uma varidvel é usada pa ta armazenar 0 ndmero de espacona yes abatidas em um jogo, podemos batiza-la’” de NAVES. E facil manter um registro de vari veis num programa curto. No caso de programas mais longos, convém expli citar mais claramente certas funcoes. Assim, utilize FOR LINHA = ....e FOR COLUNA = ... (se vocé estiver colo Cando coisas na tela) em vez de FOR X=... eFORY = Alguns computadores, como o TRS-80 e 0 Apple Il, econhecem ape- nas as duas primeiras letras de uma va- flavel, descartando as demais. Neste caso, tente utilizar iniciais que funcio- ‘nem como abreviaturas adequadas, co- mo T para RC para “recor de’, L pera “linha”, ¢ assim por diante ee AP CO COMO O COMPUTADOR E CAPAZ DE REPETIR TRECHOS DE UM PROGRAMA A capacidade de repetir de forma conirolada 0 mesino trecho de um ‘programa pode ser encontrada em to: das as linguagens de programacdo. No BASIC, a programacio de lacos é muito facilitada pelos comandos FOR, STEP ¢ NEXT, explicados nes ta licdo; porém eles ndo sdo es senciais E posstvel programar lacos de re- ppetigo de ouiro modo, simplesmen- te usando-se uma varidvel contado- rae wna linha com a declaragdo (ou comando) 1F Dessa forma, a programagao dire- ta de repetigdes exemplifica de mo- do mais claro e objetivo a maneira que 0 computador usa, internamen- fe, para repetir trechos de um progranta. Suponhamos que 0 programador queira imprimir dez vezes @ mesma na tela, usando 0 coman- Inicialmente, & preciso definir e igualar a 0 uma varidvel con- tadora (por exemplo, N). Em segui- da, a cada repetiedo do laco, essa va rridvel 6 incrementada, somando-se 0 ‘mimero 1 ao valor anterior (este nti- ‘mero corresponde, no caso, ao valor STEP no comando FOR). Finalmen- te, uma linha adicional do programa deve testar se esse-valor de N é maior do que 10. Se nao for, 0 laco serd re- ppetido por meio de um comando GO- TO e enviard o programa para trds. Se for maior do que 10, 0 programa lerminard ou prosseguird para outro trecho, Os videogames para microcomputa- dores, como o Space Invaders, nao te- riam fenhuma graca se a movimentagao os disparos do canhdo laser no pu dessem ser controlados pelo jogador si- ‘multaneamente com o desenrolar do jo- go. Esse tipo de controle através do t clado ou do joystick & uma caracterist ca de todos 0s jogos de ago, mesmo os. ‘mais simples. © elemento mais importante dessa téenica de programagio € como fazer para que © computador perceba auto- ‘maticamente quando uma tecla qual quer é pressionada, sem que seja neces sirio acionar todas as vezes as teclas ou . Feito isso, o programa pode tomar decisoes sobre que grafico animar, que “disco voador” destruir, etc. Outro aspecto es- sencial ¢ que, enquanto o jogador nao v acionar os controles de jogo, 0 compu- tador poderd se dedicar a movimenta- ‘cdo continua de graficos e figuras sobre a tela, usando as técnicas aprendidas na tltima ligdo de programagio de jogos. Jogos de acio dependem da capacidade do jogador em controlar os rmovimentos na tela. Veja como fazer isso e aprenda a disparar misseis, integrando tudo num jogo divert Eas Er Aaya Me a tet spe aa eo pee ie ate feats eerie eee = mF SS) ee hen BRST ance Sen mia es, Seeatee NS, Se areata nis tecla foi pressionada chama-se INKEYS. ‘Ao encontrar essa fungdo em um pro: grama, 0 computador executa uma “yarredura’” do teclado, para ver se al- ‘guma passou do estado de desligada pa- ra ligada, e retorna o caractere ao pro- sgrama através da fungdo INKEYS. Se nada foi pressionado, a fungao volta com um valor *‘vazio". Por exemplo: 20 cts 30 LET AS@INKEYS:1F AS: Goro 30 40 PRINT €269, “OPA!” 20 cls 30 IF INKEYS="* THEN GoTo 30 40 PRINT AT 11,14;7Ai!" M4 20 cis 30 LET AS@INKEYS:IF AS="* THEN Goro 30 40 LOCATE 18,11:PRINT "UL !* THEN = APRENDA A DETECTAR SE MM CONSTRUA BLOCOS GRAFICOS UMA TECLA FOI PRESSIONADA DISPARE SEU MISSIL COMO CONTROLAR UMA FIGURA EM MOVIMENTO Execute o programa e pressione qual- quer tecla, “a excerdio. de ou (nos Sinclair), ou (nos TRS-80) ou ou (no MSX). 0 computador vai exibir um “grit de dor" no meio da tela, O programa fun- tiona da seguinte maneira: ‘A linha 20 limpa a tela. A linha 30 faz com que 0 computador espere até que uma tecla seja acionada para conti- Muar © programa. Note que no hi es- pagos entre as aspas. Por causa disto, 2 linha 30 quer dizer: “Se INKEYS = nada, ou se nenhuma tecla esta sendo pressionada, cheque nova- mente”. E muito importante ter 0 IF... THEN GOTO 30 porque de outra forma o computador verifiearia apenas uuma vez 0 teclado e 56 por uma fragao de segundo Assim que uma tecla ¢ acionada, INKEYS€ igualado a tecla. Por exem- plo, se “43” € pressionado, entiio INKEYS= "3". Isso basta para que a linha 40 imprima “Ait” na tela. Na maioria dos jogos vocé deve pres- sionar uma tela para mover um tanque, ‘uma missil, ete. Se voc’ mudar a linha 4, vera come sto feito (no TK-85 use um “D" maisculo): 40 IF AS="D" THEN PRINT @264,7H OM, ISSO E BOM!" ELSE PRINT €26 9, "OPA!" 40 IF INKEYS="4" THEN PRINT AT 11,9;"Hum, isso e boa! Stop 50 PRINT AT 11,14; mM 20 cts 30 LET AS@INKEYS:IF AS Goro 30, 40 IF AS="D" OR AS="d" THEN Loc ATE 10,11:PRINT "am... 1850 € Dom 1" END 50 LOCATE 18,11:PRINT "UL !* ha 40 agora verifica se a tecla “D" foi pressionada, ou seja, se aatr ‘THEN DESTRUA 0 INIMIGO BASES DE MISSEIS ‘A AUTO-REPETICAO ‘COMO MONTAR ALVOS MOVEIS INKEYS¢ igual a ““D" ou a “d”", Se no. for, o programa para os micros da linha Sinclair, que nao tém a declaracao EL- SE, vao ignorar a linha 40 e passar pa- ra a linha SO, Qualquer outra tecla di- ferente de “D”” mostrard, quando pres sionada, a segunda mensagem de “rea gio emocional””. Nos micros de outras, linhas, o IF...THEN...ELSE permite programar en! uma Gnica linha as duas alternativas. Existem mais duas exigéncias impor- tantes nesse programa. A primeira é que 0D” ou “1d” precisa estar entre aspas, ou © computador o interpretara como ‘uma varivel, A segunda vale apenas pa- rao TK-90X: nessa linha de micros, deve-se usar um ‘“d"” mintisculo; caso ccontrario vocé deve pressionar e “d" para que o programa funcione. Tanto nesse programa quanto no an- terior é possivel notar que todos os eom- putadores utilizam exatamente a mesma técnica de investigasao do teclado. Ape- nas a maneira de colocar uma mensa- gem no meio da tela ¢ diferente para ca- Agora voc? veri que a partir da de- teceao do pressionamento de uma tecla usando o IF INKEYS= "‘tecla”” é mui- to facil disparar um missil ou mover uma base de foguetes. Este programa dispara um missil de uma base quando a tecla “F’” é acionada: 20 cus 30 PRINT @397. "4447 40 LET KS=INKEYS:IF KS=""THEN ¢ 070 40 50 IF KS="F" THEN LET M=334 ELS E coro 40 60 PRINT en 70 PRINT ens32 80 Let MeH-32 90 IF ¥>0 THEN GoTo 60 100 Goto 20, 10 cLs 20 PRINT @797."444" 30 KS=INKEYS : IF Ks="* Goto 30 IF Ke"F" THEN M=374 ELSE Goro 30 PRINT @M,CHRS (94) PRINT eni64," 7; M=M-64 IF M>0 GoTo 50 Goro 10 Para rodar também no ZX-81, digi teo programa abaixo apenas com letras maiusculas: 20 cis 30 PRINT AT 21,14" ale” 40 IF INKEYs="* THEN GoTo 40 50 IF INKEYS<>"£" THEN GOTO 40 55 LET y20 60 PRINT AT y,15; 70 LET y-y-1 75 PAUSE 1 80 PRINT AT y+1,1 90 IF y>0 THEN ‘GOTO 60 1 20 cis 30 LOCATE 17,20:PRINT * oll” 40 LET KS*INKEYS:IF Ks="" THEN Goro 40 50 IF KS="F" OR KS="f" THEN LET M=20 ELSE GoTO 40 60 LOCATE 18,M: PRINT” * 70 LOCATE 18,¥¢1:PRINT = * 80 LET MeM-1 90 IF ¥>0 THEN GoTo 60 100 GoTo 20 AAinha 30 imprime uma base de seis formada de trés simbolos (no Sin- clair e no MSX, trés simbolos graficos), na parte mais baixa da tela (ultima linha). Na linha 40, LET KS=INKEY$ ¢ muito importante, visto que voc® quer checar se a tecla foi pressionada varias vezes durante o programa. Esta nao fun- cionaria sem essa declaragdo. O compu- tador. se recorda, do. valor de INKEYS apenas por uma fragao de se- gundo e, se vocé nao checar INKEYS suficientemente rapido, ele po- de esquecer que a tecla foi pressionada. Mas, voce pode também fazer com que ele se lembre do que foi teclado dan- do um nome, KS, a tecla que foi pres- sionada e checando mais tarde (versao. para a linha TRS), ou dando um novo fomando INKEYS. ‘linha $0 verifica se “F" foi pres- sionado. Se nao, o programa volta a li- nha 40 e continua a varrer o teclado. “M” éa posicdo do missil depois de ter sido disparado. ‘linha 60 imprime o miss na tela ea linha 70 se encarrega de apaga-lo de my suas posigdes anteriores. ‘A linha 80 faz 0 missil se deslocar pa- ra cima na tela, ¢ a linha 90 evita que ‘© computador tente imprimir o missil numa posigao fora do video, o que pro- vvocaria uma mensagem de erro. A pri- meira posicao de tela tem 0 niimero 0, ‘€o computador ndo pode imprimir na- da em uma posigao de nimero menor que 0, Quando M=0 0 programa € rei- Riciado. A téenica a ser utilizada para fazer o missil subir vai depender, ago- ra, do formato da tela do computador utilizado. ‘A linha 80 subtrai um niimero cons- tante N da posi (varidvel M), de maneira que ele avan a uma linha em direeao ao topo da te la a cada vez que € impresso. Esse mi- ‘mero vale 32 para os micros compativeis com o TRS-Color, pois ha 32 colunas na tela do computador. J4 para o TRS-80, 0 mimero é 64. ‘A linha 80 subtrai 1 da posigao ante- rior do missil, pois o comando de posi- cionamento utilizado, 0 PRINT AT, identifica as coordenadas (linha, colt na) onde serao exibidos 0 graficos, As- sim, a coluna € mantida constante, pa- ra. missil subir “‘reto””, na coluna 15, eo que varia é Y, ou a altura dele (lem= bre-se de que ¥ ~0 est no topo da te- la, e no embaixo. i) © comando de posicionamento é 0 LOCATE, que da as coordenadas para posicionamento. A linha 80 tem por funcao diminuir em 1 0 valor anterior do missil (varivel M), para que ele se desloque para cima, na mesma coluna (Constante 18). Da forma que esté, 0 programa da base de misseis ¢ bastante limitado pa ra.um jogo de “‘artilharia”, mas, impri- mindo movimento lateral & base conse: guiremos melhord-lo um pouco. Veja- ‘mos como fazer i ° Uno 20 cis 30 LET P=397 40 PRINT @P,CHRS (143) +CHRS (140) +CHRS (128) +CHRS (140) +CHRS (143) 50 LET KS~INKEYS:1F KS-"* THEN Goro 50 60 IF KS="E" THEN LET P=P-1:GOT 0 90 70. 1F KS" 9 90 80 GoTo 50 90 IF PC384 OR P>41] THEN GOTO 50 100 Goro 40 ‘THEN LET P+P+1:coT A linha 30 determina a posigao ini- cial da base, ¢ a linha 40 coloca 0 missil naquela posigao. A linha $0 verifica o teclado, fazen- do 0 computador esperar até que uma tecla seja pressionada. A linha 60 investiga se “L"* foi pres- sionado, Se foi, ela move a base uma posigao para a esquerda, subtraindo 1 do niimero que determina a posicao da base. A linha 70 confere se “*R'" foi pressionado e nesse caso muda a posi- ‘edo da base adicionando 1 & coordena- da. A linha 90, finalmente, verifica se ‘0 programa esta dizendo ao computa- dor para colocar a base fora da tela — em caso afirmativo, 0 programa retor- na a linha 50. 20 cis 30 P=797 40 PRINTeP, cHRS (32)+cHRS (184) + ung (191) +cHns (180) +CHRS (32) KS=INKEYS : IF KS="" GOTO 50 L" THEN B=P-1 RY THEN P=P+] 50 60 70 80 GoTo 50 90 IF P<767 OR P>828 GOTO 50 100 GoTo 40 © programa para o TRS-80 funcio- na de modo idéntico ao programa para © TRS-Color. Note que os caracteres graficos tm simbolos diferentes, bem como as coordenadas de posicionamen- to dos comandos PRINT @: Para rodar também no ZX-81, digi- te o programa abaixo apenas com letras maiiisculas. Além disso, ponha os co- mandos LET da linha 80 em duas linhas separadas. 30 cis 40 LET xr15, 50 Ler y-13 60 PRINT AT y,x:7 io 70 IF INKEYS="" THEN GOTO 70 80 LET Ixex: LET ly-y 90 PRINT AT ly.1xi7 * 100 IF INKEYS="G" THEN STOP 110 IF INKEYS="w" THEN LET y- yl 120 IF INKEYS*"2" THEN LET y~ yal 130 IF INKEYS*"a" THEN LET x= x1 140 IF INKEYS*"8" THEN LET x= xl Posso escolher qualquer tecla p: ‘operar os controles de um jogo no mi: ‘crocomputador? ‘Sim. Tudo 0 que vocé tem a fazer @ mudar os caracteres nas linhes do programa que testam qual foi a tecla pressionada e detectada por INKEY$. Mas cuidado: o que parece ser bastan te logico na teoria as vezes funciona ‘mal na pratica. Por exemplo, usar as te clas E, D, C, 8 para representar esquer de, direita, em cima e embaixo, dificul ta’ as agées do jogador. Por isso, costumam-se usar a5 teclas de movi mentacdo do cursor, principalmente hos computadores onde elas estao ‘aglomeradas no mesmo ponto do tecla do, ou presentes em pares complement tares. Outra dica 6 usar A @ Z, para mo vimentar para cima e para baixo, eK @L para direita e para esquerda, pois ‘cupam posicdes opostas no teciado. Jé a barra de espacos & muito boa pa ‘a efetuar disparos, pois 0 polegar po de se apoiar nela, 150 IF x<1 OR x>29 THEN LET x nix 160 IF y20 THEN LET y “ly 170 coro 60 __ As linhas 40 ¢ 50 estabelecem a posi- ‘40 inicial da base de misscis, na 13? li- ha da tela, e quinze espagos a esquer- da. A linha 60 mostra a base na tela. ‘A linha 70 faz 0 computador esperar ‘até que alguma tecla seja impressa. Se foi, a base ¢ movida. ‘As linhas 80 € 90 “*perseguem’” a ba- se de misseis em movimento, colocan- do trés espagos em branco sobre sua til- tima localizagao; de modo a apagarla. ‘Como a linha 60 esta dentro do laco de repetigiio ¢ sempre vem antes da linha 90, a base é sempre impressa em sua no- va posigdo antes que a posi¢do antiga se- ja apagada. A linha 100 termina o programa se a letra Q (de quit, em ingles, que signi: fica abandone) for pressionada. A linha 110, por sua vez, verifica se a tecla ““W"" foi acionada, subtraindo do valor de **Y* em caso afirmativo. O efeito disso ¢ a movimentagao da ba- se uma linha para cima. As linhas 120 a 140 operam de for- ma similar. A linha 120 move a base pa- ra baixo se "“Z”” é pressionado. A linha 130, move para a esquerda, caso ‘*A" seja acionado, e a 140 para a direita, ao se pressionar “‘S’”. A linha 150 evita que a base seja colocada fora das laterais da tela ‘A linha 160 impede que a base saia por cima ou por baixo da tela, Neste ca. so, fazer Y= LY resolve o problema. A linha 170 fecha o lago, reiniciando to- do 0 proceso. mM 30 cLs 40 LET x-17 50 LET ¥-20 60 LOCATE X,¥:PRINT * sll" 70 AS“INKEYS:1F AS=** THEN GoTo 80 LET LX-X:LET Lr-¥ 90 LOCATE LX,LY:PRINT” = 100:1F AS~CHRS (2?) THEN END 210 IF AS=CHRS (28) THEN x-x+1 120 IF AS-CHRS(29) THEN X-X-1 130 IF AS=CHRS(30) THEN ¥-¥-1 140 IF AS*CHRS(31) THEN Y=¥+1 150 IF X36 THEN X-LX 160 IF ¥cO OR Y>20 THEN Y-LY 170 coro 60 programa para a linha MSX é bas tante compacto e elegante. A linha 60 coloca a base em posiedo inicial (trés ca- racteres graficos), que é definida nas li nhas 40 e 50, ou Seja, na linha 20 e na coluna 17 (no meio da tiltima linha da tela). A linha 70 detecta se alguma tecla foi pressionada. Se alguma tecla foi pressionada, 0 programa armazena em LX ¢ LY’ as coordenadas da ultima posigao da base (Xe ¥), para usé-las posteriormente (li- Por que o meu programa ‘“bomba listo 6, falha) se, num jogo qualquer 8 figura que esté sendo movimentada atinge @ borda da tela? Provavelmente porque um dos va lores que controlam 0 posicionamento da impressao do grafico na tela tornou- ‘5e muito grande ou muito pequeno, ex. cedendo os limites da tela. Portanto, verifique de novo as linhas que fazem ssa tarefa, caso vocé obtenha alauma mensagem de erro do computador, hheste sentido. Por precaucdo, 6 sem: pre recomendavel testar os valores de osicionamento antes de imprimir algu ma coisa na tela: se eles excederem os limites, podem ser corrigidos para fica rem dentro da tele nha 80), € apaga a base nessa posicao, por meio da linha 90. As linhas 100 a 140 detectam se a te- cla apertada foi uma das seguintes: fle- cha para cima, flecha para baixo, flecha para esquerda e flexa para dircita (teclas de controle do cursor), que sio identi- ficadas pelos seus cédigos respectivos (29, 28, 30 ¢ 31). O jogo termina quan- do a tecla CLEAR (codigo 26) tiver si- do pressionada. As linhas 150 ¢ 160 verificam se as bordas da tela foram ultrapassadas. Se foram, retornam a posigao da base pa- ra as itimas coordenadas (LX ¢ LY). Finalmente, a linha 60 faz.0 ciclo se repetir, para a proxima pressdo a tecla. a Agora voce ja tem alguns blocos a partir dos quais podem ser montados va- ios jogos. O exemplo abaixo mostra co- ‘mo usi-los para desenvolver um jogo bem simples, em que um canhao mével dispara misseis em direco a um alvo (uma estrela): 20 cis 30 FOR N=1 TO 100:NEXT N 40 LET Po~a30 50 LET BS=CHRS (143) +CHRS (140) +c RS (128) +cHRS (140) +cHRS (143) 60 LET A=RND(30)+64 70 PRINT @A,"*" 80 LET Lp=Po 90 PRINT @PO, BS 100 IP PEEK(340)=247 THEN LET P O=PO-1 110 IF PEEK(338)=247 THEN LET P o=Po+l 120 TF RO444 THEN LE 7 Po=LP 130 LET KS=INKEYS 140 IF KS="F" THEN LET M-PO-30 ELSE GOTO 80 150 PRINT @M,"1™ 160 PRINT @M+32," 7; 170 LET M=M-32 180 IF M-A THEN GoTo 20 190 IF M>0 THEN GOTO 150 ELSE P RINT e#32," 200 coTo 60 20 cts 30 FOR Nel TO 100:NEXT N 40 PO=800 50 BS~CHRS (32) +cHRS (184) + chins (191) +cHRS (180) + cHRS (32) 60. A=RND(60) +2 70 PRINTEA,"*"; ‘80 LP=PO. 90 PRINT@FO, BS; 100 IF PEEK (14344)<>0 THEN Po-1 IF PEEK(14368)<>0 THEN Potl 120 IF P0<767 PO-LP KS=INKEYS IF KS="F" Goro 80 PRINTeM, CHRS (94 PRINTOMS64," “5 170 MeN-64. 180 IF M=A GoTo 20 190 IF M>0 THEN GOTO 150 PRINT @M+64," "3 GoTo 80 Po= 10 Po- OR PO>628 THEN 130 140 ‘THEN M-PO-62 ELSE 150 160 ELSE 200 Para rodar também no ZX-81, digi te o programa abaixo apenas com letras maitisculas 20 cLs 30 PAUSE 25 40 LET x=15: LET y=21 50 LET BS=" aha ~ 60 LET a-INT (RND*26)+2 20 PRINT AT 2,a:7*" 80 LET xx=x 90 PRINT AT y,x:BS 100 IF INKEYS="2" THEN LET x= x1 110 IF INKEYS="x" THEN LET x= xeL 120 IF x27 THEN LET x 140 IF INKEYS<>"E" THEN GoTo 80 245 LET m-y-2 150 PRINT AT m,x+2;"17 160 PRINT AT mtl,x+2;7 * 170 LET mea-1 180 IF m=2 AND x+2=a THEN GoTo 20 190 IF m<>1 THEN GoTo 150 195 PRINT AT mel.x+2;7 7 200 coro 80 mS 20 cts 40 LET X017:LET 50 LET BS=" a 60 LET A-INT(RND(1) *36)+2 70 LOCATE A,0:PRINT 7%" 80 LET xx-x 90 LOCATE X,¥:PRINT BS 95 LET AS=INKEYS:IF AS="" THEN Goro 95 100 IF AS~CHRS(28) THEN LET x-x x20 HL 110 IF AS@CHRS(29) THEN LET x-x =. 120 x 130 140 150 160 170 180 20 IF X35 THEN LET X-x IF ASO * LeT Mev-1 LOCATE X+2,¢: PRINT LOCATE X+2,Mt1:PRINT " * Cet M-M-1) IF M=0 AND X¥2=A THEN GOTO " THEN GoTo 80 190 IF M<>0 THEN GoTo 150 200 LOCATE x+2,¢+1:PRINT” * 210 GoTo 80 Quando vocé executar 0 programa, verd uma estrela perto do topo da tela’ As teclas Z e X movem a base de fogue ra a esquerda ea direita, e a tecla F dispara o missil para destruir a estre- la em sua posicao. Pense no programa como tendo rés partes: uma, até a linha 70; outra, da 80 até a 120; e'a iiltima, da 130/140 até a 200, As linhas que vo de 130/140 até 200 so similares ao programa anterior que dispara 0 missil As varidveis € os GOTO foram mu. dados, mas a tinica linha adicionada foi 180. Ela verifica se 0 missil e a estrela esto no mesmo lugar. O programa re ‘omega em caso positivo. A porgao central, da linha 80 120, € uma versdo compacta do programa “Mpvimentos Sobre a Tela”. Os, PEEK no programa para 0 CP400 verificam se Z ou X foram acionados e alteram PO de maneira apropriad A primeira parte do programa tem varias fungdes. A linha 30 provoca uma pequena pausa antes que o programa Continue. Isso ¢ importante quando a li- nha 180 fecha o laco no fim do progra ma. As linhas 40. 50 determinam a po sigdo inicial da base e definem sua forma MELHOR MOVIMENTAGH Pressionar a tecla que move a base para a direita ou para a esquerda toda vez que se precisa deslocar figuras é bas: tante cansativo. Entao, usualmente montamos um mecanismo de auto epetigao, Alguns micros, como os da linha MSX, possuem auto-repetigao em todas as teclas; por isso 0 programa da ma ndo necessita qualquer modificagao: basta ficar pressionando a tecla de co: mando para baixo, que a base se move automaticamente. Ja para os computadores que nao dis pdem desses recursos, temos que nos sa tisfazer com o INKEY$, mesmo. Mas ¢ dificil programar movimentos continuos usando INKEYS. Um modo de se resolver esse proble- ma é ilustrado a seguir. 20 cLs 30 LET BLS=cHRS (128) 40 LET Po-238 50 PRINT @PO, BLS 60 LET LP=PO 70 IF PEEK(340)=247 THEN LET PO =P0-1:G0T0 120 80 IF PEEK(338)=247 THEN LET PO =Potl:coTo 140 90 IF PEEK(338)=251 =P0-32:G0TO 150 100 IF PEEK(342)-253 THEN LET P 0=P0+32:GOTO 150 THEN LET PO 110 GoTo 70 120 IF(LP AND 31)=0 THEN LET PO =LP 130 Goro 150 140 IF (PO AND 31)=0 THEN LET PO “LP 150 IF PO>510 OR POCO THEN LET Po=LP:GoTo 70 160 PRINT LP.” 170 PRINT @PO, BLS {80 GoTo 60 40 Po=540 50 PRINTEPO, BLS 60 LP=PO 70 IF PEEK(14344)<>0 Po+l:GoT0 120 80 IF PEEK (14368) 0 PO-1:G0T0 140 90 IF _PEEK(14352) 0 PO-64:GOTO 150 100 IF PEEK (14400) <>0 Po+64:coTO 150 110 GoTo 70 120 IF (LP AND 63 130 Goro 150 140 IF (PO AND 63)=0 THEN PO=LP 150 IF PO>1022 PR POINT(X) THEN NS SIVEL":GoT0 190 150 UsBRINT (X/B) :1F X-U>9 THEN NS=CHRS (55+ (X-U) )4NS*GOTO 170 160 NS*MIDs (STRS (X-U) +NS, 2) 170 X=INT(X/B) 1@0 IF X>0 GoTo 150 190 PRINT €257,A5+" "+s5+" “+BS mins END impos ‘UM MODELO PARA NUMEROS EM DIFERENTES BASES As vezes ¢ muito dificil visualizer co: mo funciona um sistema de numeracio de base diferente ao de base 10, Afi hal, ndo fécil ter que cortar fora al {uns dedos, ou fazer crescer dedos ad ionais nas mos, de modo que voce parece obrigado a se satisfazer com 0 Que tem! Mas seria possivel, por exer plo, grudar dois dedos um ne outro cam fita adesiva, para contar na base 9, ou user dois palitinhos extras de conte gem, para trabalhar na base 12 ‘Uma soluedo mais inteligente seria construir 0 seu proprio abaco, ou cal Culadora de continhas, similar aqueles mostrados nas fotos que acompanham festa licso. Um abeco.convencional | (mesmo aqueles de brinquedo, para criangal pode ajuder e agilzar as con tas no sistema de base 10: assim, vo ‘66 pode criar um ébaco com tantas bo linhas em cada vareta da moldura quan: tas quiser. No é necessario nem mes: ‘mo construir uma moldura cheia de ara ‘mes, mas simplesmente arranjar uma ‘rio de sulcos paralelos, para conter as bolinhas e fazé-las ralar para cima u para baixo. Nao se esqueca de que o niimero de ccontinhas em cada fileira é um a me nos do que a base em que voce quer trabalhar. Assim, na bage 10, voo8 pre iisa de 9 contas, e na base 2, de ape hhas uma. Nenhurma bolinha equivale ao ‘ndmero zero, em qualquer sistema de numeragao. Uma bolinha afastada das demais significa o ndmero 1, @ assim por diante. Quando a operacao exigit mais de 9 bolinhas no sisters decimal, 2ore a fileira de volta, e suba uma bol: ‘nha na fleira sequinte (é a operacao de 210 DE=0 220 IN-0 230 YeaSC(RIGHTS (PS,1)) 240 IF Y0 THEN GoTo 230 300 RETURN Este programa, como esta, roda ape ‘nas nos compativeis com 0 TRS-Color. Para rodé-lo nos modelos TRS-80, mo- difique a linha 190 par 190 PRINTeS13,AS+" "455 +" 7 + Est NS 10 POKE 23658,8 20 INPUT "Bane’ (ate 36) 7! 30 INPUT "Numero (anteiro) ": LINE as 40 INPUT "Sinal *; LINE ss 50 INPUT "Numero (inteiro) "; LINE bs 60 cLs 70 LET pas: cosuB 180 80 LET xS-STRS dec 90 LET pS-b$: cosUB 180 95 LET yS-STRS dec 100 LET zS-xS+ss+ys 28 110 IF x<>INT x THEN LET ns=" jossivel realizar a operacac rE GoTo. 160) 120 LET ng="* Ler x-vat 130 LET ueINT (x/b): LET u-utb IF x-u>9 THEN. LET n$=CHRS ( 55+ (x-u))#n8: GOTO 140 135 LET ng0 THEN GOTO 130 160 PRINT AT 10,0;a5+ssebs mins 170 stop 180 Let dec~0 190 LET indice-0 200 LET y=CODE pg(LEN ps) 210 IF y<58 THEN LET d-y-48 Goro 220 215 LET d=y-55 220 Let dec-dectdsb-indice 230 LET pS=p$(1 TO (LEN pS)-1) 240 LET indicesindice+] 250 IF LEN p$>0 THEN GOTO 200 260 RETURN 10 cs 20 INPUT "BASE (ATE 36)7:B 30 INPUT "NUMERO (INTETRO) *;AS 40 INPUT “SINAL ":55 50 INPUT "NUMERO (INTETRO) ”:BS 60 P§-as:cosuB 210 70 xS=s7RS (DE) 80 PS-BS:GOsUB 210 90 YS-STRS (DE) 100 IF SS="*" THEN X=UAL (XS) *UA Las) 110 1F sser/ Leys) 120 1F sg Las) 130 TF SS="=" THEN X=VAL (xS)-vA Lays) 140 IF XC>INT (x) THEN NS~"Opera do impossivel” :coTo 190 150 U-BRINT(X/B) :IF_X-U>9 THEN NS=CHRS (55+ (X-U)) #NS::G070 170 160 NS=MIDS (STRS (X-U) +NS, 2) 170 X=INT (K/B) 180 IF x>0 GoTo 150 190 LOCATE 0,12:PRINT AS+” "+85 eases watenes Mang 200 END 210 De=0 220 1n-0 230 Y=aSc(RIGHTS(PS,1)) 240 IF ¥0 THEN GoTo 230 300 RETURN THEN XeVAL (XS) /vA, THEN X=VAL (x8) 4A 10. HOME 20 INPUT “BASE (ATE 36) => $0. INPUT "NUMERO (INTEIRO) =>" AS 40° INPUT “OPERACAO (+.-,%./) = >"188 50° INPUT "NUMERO (INTETRO) =>" Bs 60 Ps = AS: GosUB 210 70 x= DE 80 Ps = BS: cosuB 210 90 Y= DE 100. IF S$ = "x" THEN X= x * M0 IF $$ = "/" THEN X= X/¥ 120 IF S§ = "+" THENX = xX + 130 IF se = *-" THEN X= x - ¥ 140 IF X © > INT (X) THEN NS = "NAO DAT: GoTo 190 150.U= Bt INT (x / B): IF X U> 9 THEN NS = cHRS (55 + ( X= U)) + NS: GoTo 170 160 NS = STRS (x - U) + NS 170. X= INT (K / B) 180 IF x > 0 THEN 150 190 HTAB 10: UTAB 15: PRINT AS * syggs" 1B NS 200 ‘END 219 DE = 0 220 IN = 0 230 ¥ = Asc _( RIGHTS (PS,1)) 240 TF y < 58 THEN D = ¥'~ 46 ‘GoTo 260 250 D = ¥ - 55 260 De = DE + D* B ~ IN 265 IF LEN (PS) = 1 THEN RET URN 270 Ps = » 280 IN = IN +1 290 Goto 230 300 RETURN LEFTS (PS, LEN (PS) ‘Se voc acha que fazer contas em di versas bases é mais do que pretende sa- ber algum dia, note que o computador também trapaceia, O programa, na rea- lidade, converte os nimeros que voce di- gitou em decimais, executa a operacao ereconverte o resultado para a base que voce escolheu, Ao contririo da mente humana, o computador s6 consegue fa- zer cAlculos em decimal, dentro de um programa escrito em BASIC, apesar de converter os mimeros para bindrio, quando as instrugdes so traduzidas pa- ra eédigo de maquina durante a execu io do programa, a Para os computadores digitais, 0 sis- tema de numeragao mais apropriado € 0 baseado no nilmero 2. Isso acontece porque 0 computador & composto de Circuitos eletrOnicos que possuem dois estados evidentes: ligado e desligado. O estado “‘desligado” representa o mime \do””, o niimero 1. E, na base 2, estes siio todos os niimeros de ue voce necessita para expressar qual: quer valor sistema de numeracao de base 2 € conhecido como “binério”. Ele é com- posto apenas por zeros € uns; todos os ‘outros numeros foram abolidos. Dessa forma, se voc8 comegar a contar da ma neira habitual, ndo vai passar de 1. So me 1 a 1 e tera o niimero 1 deslocado uma casa para a esquerda, enquanto a casa da direita ¢ zerada. Assim, em bi nario, 1+1 = 10. Contar de 0 a 8 resulta em 0, 1, 10, 11, 100, 101, 110, 111, 1000, Novamen’ te, estes niimeros obedecem as leis da aritmética. Se vocé quiser somar 10+'11, deve primeiramente somar os dois ni- ‘meros da direita, 0+ 1. A seguir, devem ser somados os dois da esquerda, 1 +1, © que da 2; $6 que 2 em binario é 10. Assim 10+ 11 = 101; ouseja,2+3 = 5 Subtraco em bindrio é um processo 10 direto quanto a soma. O tinico de- talhe a observar & 0 nlimero que se ‘le. va"" para a proxima casa. A multiplicagao ¢ a divisdo slo ex traordinariamente ficeis, mesmo para seres humanos ‘‘normais"”. Na realida de, € to facil que “até” um computa dor pode fazer essas operagdes. No pri meiro caso, tudo se resume a multipi car 0X0, que da 0; 01, que também dg 0; ow 1x1, que da 1 A divisao ¢ igualmente simples: em cada operagio, basta decidir se o divi sor esta dentro do dividendo uma vez ou nenhuma vez. Confira voc mesmo como 0s proces. $08 aritméticos funcionam em binario. ‘O painel das paginas seguintes dé exem plos de operagdes para voce fazer. Qualquer sistema de numeracdo pode ser imitado por um modelo. mecanico: © rel6gio, por exemplo, usa 1 base 60, fenquanto 6 abaco utiliza a base 10.

You might also like