Você está na página 1de 138

MELHORES PROGRAMAS

EBRAS Editora Brasileira



NELSON ALVES'

sx

MELHORES PROGRAMAS

INELSON ALVES

IEBRAS, Editora Brasileira

Copyright tJ 1986 by EBRAS Ediltora Brasileira Ltda.

Nenhuma parte desta puolicacac podera ser reproduzida, guardada por sistema retrieval ou transmitida POI' qualquer modo ou rnelo, seja este eletroruco, xerograftco, mecanico. ou cutros, sem autortzacao previa e escrita da Ebras edit-Ora brasileira Itda.

Editor: Rka,rdo Reinprecht

Produtor Grafieo: Herminia C0l111S Filho Area Cume re ia.l: Jose Siqueira Costa Capac Ricardo Reinprecht

Arte: Cyro Giordano

Fotocomposit;ao: Jose Acacio de Campos

'I'odos. os eomandos dos pro gram as deste Iivro foram testados na Staff oonsultorra e Processamento Ltda. Ehtretanto, devido a possibilidade de enos" par menor que seja, acontecer, acettaremos qualquer sugestao e/ou erittca que venha a melhorar a obra em suas edteoes posteriores.

1986

EBRAS Eldttora Brasileira, Importacao, Exportacab e Comercio de Livros Ltda. Rua Borges Lagoa, 1.044 - CEF 04'038 - Vila Mariana - Fone: (011) 549-86~3 - Telex DRBN (011 )-2-5966 ~ Sao Paulo - SP.

Sumaria

AGRADECIME,NTOS _. _ _ .

INTRODUC.A.O ., . ., .

AORGANIZA«;;AO DESTE LIVRO .

CAPITULO 1.: 0 TECLADO no MSX , , .

Introducao "." " .

Teclas de Controle GeraL ,.,." .

Repetic;ao Automatica das Tec1as , .

Digitando Comandos , , .

Corrigindo Digitac;oes E,rradas , .. ".

Acessando os Garacteres Graficos Diretamente , .

CAPITULO 2: JOOOS E PROORAMAS PRATICOS " .

Geracao de Caracter , - , .

Geracao de Som ,.,., _ _ , .

Amversariantes " .

Blackjac. ,., , , , , .

Dados .

De.senbo .

Edi~·ao de Numeros _ , . , .

J ogo de Dados .

J,ogo de- Numeros , .. " _ , ,

Roleta Russa , .

Mensagem de TeLa . _ .

CAPITULO 3: PROGRAMAS EDUCACIONAIS E PESSOAIS: .

Maquma de Calculo·s " , ,., , .

AdiCao/Subtracao , _ a • , •••••••••••••••••••••••

Calculadora , _ .. , , .

Oalendario .

MultipUc.a<.;ao/Divisao ., .

GrAficos de Barras , .

Analise de L6gica .

Analise de L6gica , , .

Amortizaeao ., .

Investtmentoa " , .

Manutencao de Dados .

lNFORMACOES iTTEIS _ " . . . . .. . . . . . . . . . . . . . .. 136

9 11 13

15 16 16 18 18 19 19

21 22 3,9

40 46 52 57 59 66 66 70 73

77 78 86 90 9'4

104 10.8 111 114 117 117 130

AGRADECIMENTDS

Agradeco a minha esposa, Luciana pelo grande apoio que me d.eu durante 0 desenvolvimento deste livro e tambern ao men editor Ricardo Reinprecht pela paciencia e apoio a mim. dispensados.

Este livro foi escrito para todos as usuaries que desejam uttlizar as microeomputadoresMBX para aprender rnals sobre programaeao em BASIC.

o livre contem programas prattcos e de entretenimento desenvolvidos para auxiliar os usuaries no apre ndizad 0 do BASIC MSX. Outros Iivros normalmente contem exemplos msuttcientes ou Ineornpletos, 0 que dificulta a compreensao da potencialtdade do BASIC MSX. A utillzacao de MSX _. Melhores pmgramas e, alern de facil, divertida.

Explical;oes claras e concisas do que esta.acontecendo em cada programa sao fomecidas. A medida que voce Ieestas explicacoes, rnais voce aprende sobre porque 0 programa trabalha desta maneira e comeca a vis ualizar as tecnicas do BA~ICMSX que podem ser ute is no desenvolvimento de seus proprios programas.

Com a utdlizaeao de urn simples mierocomputador MSX com urn gravador cassete, voce podera executar os programas conttdos no MSX _ Melhotes Programas sern nenhum problema. (Mas, sa voce nao quer digitar todos estes programas e posstvel adquirir uma fita cassete ja gravada com todos os programas digitados e testados para a sua tranquilidae.jSe voce tiver uma impressora, multos pro gram as podem set utllizados com ela, sern que seja necessaria nenhuma rnudanca nos programas ..

o MSX ~ Melhores Pro gram as ·e urn livro umeo, pots ele tem urn grande rnimero de prcgramas que abrangem as mais diversas areas que 0 usuano do rnierocomputador M.SX pode ter interesse .. Isto lhe da 0 apoio para que voce possa usar 0 seu microcomputador MSX fazendo usa de todas as suas caracteristicas.

Para digitar qualquer programa simples siga as tnstrucoes no Manual de Linguagem BASIC. Be voce quiser modificar qualquer Imha, por exemplo, colocar seus proprios dados na linha de eomando DATA. ,e so faze-lo. (Certifique-se de fazer a sabstttuicao corretamen te e de flnahzar urn comando da mesma maneira que ele esta sendo finahzado no programa.)

A ORGANIZAr;AO DESTE LIVRDI

o Oapitulo 1 apresenta uma descricao do teclado do MSX, incluindo suas teelas de funcao, 0 teclado numerico separado e as teclas de edicao, Os Oapitulos 2,3 e 4 contem diterentes tipos de prograrnas, incluindo problemas maternaticos e sua resolucao.jogos e programas praticos e programaseducactonats e pessoais. Devido a versatilidade dosprogramas, nao foi facil fazer a divisao destes em grupos, pots, programas de matematica podern tambem serprogramas educacionais, alguns programas pessoals poderiam ser classiftcados como programas de economia etc.

Para executar um program a voce tern duasmaneiras:

1. Digitar 0 programa assim como ele e mostrado no Iivro, depots salva-lo para nao precisar redtgita-Io; Oll

'2. Adquirir a fitacassete opciorial que foi desenvolvida e testada para Iaeilrtar o Usa deste Uvro. -Esta fita ja contern todos os programas apresentados neste Iivro.

Ap6S, voce deejdir qual a maneira que vai utilizar (digttar a pro gram a au carrega-lo da nta), deve usar 0 comando RUN para executar 0 programa,

Alem dos metodos descritos no livre para encerrar a execucao dos programas, voce pode flnalizar qualquer programa, sem dantnea-lo, atraves do comando OONTROL+ STOP (ou seja, voce pressiona a tecla CONTROL e a tecla STOP ao mesmo tempo),

Sempre que urn prograrna pedir a voce que msira urn dado, atraves die urn comando INPUT~ voce devera seguir esta entrada de dados de urn RETURN.

Apesar do grande esmero no desenvolvimento e teste na preparaeao dos programas do MSX ~Melhores Programas, nero ele nern os programas sao necessanamente perfeitos. Mas, cada programa foi testado completamente. Caso 0 leitor ache qualquer falha, nos colocamoa a disposieao para receber sua solucao au comentanos dela nos enderecos abaixo:

EBRAS Editora Brasileira Ltda. .Rua Borges Lagoa, 1.044 '04038·- San Paulo- .sp

(011) 549 .~ 8633

eu

STAFF Consultoria e Processamento Ltda. R ua Pascal, 79-9

0.4616 - Sao Paulo - SP (011) 530- 3741

Capitulo 1

01 TECLADO DID MSX

16 MSX ....... Melhofes Programas

INTRODU~AD

o teclado e urn periferico padrao para a entrada de dados, Atnaioria das mformacoes que 0 computador utiliza vern originalmente do teclado. Usando varias combtnacoes das 89 teclas, voce pode digitar qualquer um dos 256 caracteres que 0 MSX reconhece,

Be voce conhece 0 teclado de uma maquina deescrever comum, as teclas de letras e numeros nao devem causar nenhum problema. Algumas das teclasde pontuacao podern estar emdiferentes Iooallzaeoes, as quais nao sao aquelas que voce €sperava, mas voce se adaptara rapidatnente a nova configuraeao.

TECLA,S DE CONTADLE GER,AL

o ted ado doMSX possui algumas teclas que realizam funeoes de controls geraI como descrito abaixo. Os programas aplicativos podem ser desenvolvidos de modo que disabnitem ou mesmo redeftnam algumas destas teclas de controle geral; consulte sempre as tnstrucoes de operacao do programa.

ESC E urna abrevtacao para '!ESCape". Esta tecla faz 0 MSX interrornpera operacao de urn program a quando pressionada pela prime ira vez, quando for presstonada pela segunda vez ela continua 0 programa a partir de onde Ioi interrornpido. Ela pede ser utilizada em alguns programas aphcatlvos.

A tecla de T ABula~ao funciona como 0 tabulador de urna maquina de escrever eornum, movendo 0 cursor para frente oito espacos ate a proxima tabulacao.

TAB

CONTROL

A$ vezes abrevlada como Ctrl, mais parecida com a tecla de letras maiusculas de uma maquma de eserever cornum, a tecla CONTROLmodificao efelto de outra teclaquando as duas sao presslonadas ao mesmo tempo, assim como CONTROL+ STOP que Interrornpe a exeeueao de. urn programa no BASIC. MSX.

SHIFT

Use ambas as teclas SHIFT como voce usa em uma maqulna de escrever comum para acessar as letras malusculas ou os simbolos e sinais de pontuaeao. Quando 0 teclado esta ativado no modo de letra maiuscula (atraves da tecta CAPS LOCK)!, a tecta SHIFT age como se nao estivesse acionada, retornando tetras maiusculas quando voce a mantem pressionada; elas nao desativaro o modo de letras maiusculas.

E a ahreviatura de Baek Spaee.F'unclona como 0 retorno de uma tetra de Ulna maquina de escrever cornum. gUlbora, ela nao mova sornente 0 cursor urn caracter para tras, mas tarnbern apaga 0 caracter que estava nesta posicao ..

BS

o Tee/ado do MSX 17

RETURN 0 mais.semelhantea est a telcla eo "retorno do carro' encontrado em algumas maqumas de escrever eletrieas. Em. alguns 'Computadoies,a tecla .:e chamada de RETURN au ENTER. Seu objettvo e finalizar a linha que voce est a dlgrtando e avancar para a proxima linha.

CAPS LOCK. A tecla CAPS LOCK faz com que 0 teclado gere letras maiusculas sem a necessidade de se utilizar a teela SHIFT. De fato, quando 0 teclado esta no modo de tetras m aruscul as, utilizando-se a tecta SHIFT ele retornara letras minusculas, A tecla CAPS LOCK difere da tecla correspondente da maquina de escrever porque ela afeta so mente as 26 teclas que possuem as letras do alfabeto. Por exemplo voce deve sempre pressionar ambas SHIFT e J para ter ostmbolo de interrogacao (?). Pr.essionanC\o.,se uma vez a tecla CAPS LOCK muda-se para 0 modo de tetra rnaiuscula; pressionando-a novamente retornase ao modo de letra minuscula. A tecla C nao e attvada, para obte-la deve-se pressionar a teela SHIFT juntamente com C.

HOMEJCLS a canto esquerdo superior da tela e chamado de posi{;ao

(inicial). ("home"). A t~claHOME10LS move 0 cursor para Ia.Se ela for presslonadajunto com a tecta SHIFT a funcao CLS e ativada e entao, alem de mover 0 cursor para 00 canto superior esquerdo da tela ela a limpa tou seja, "zera" a tela). -

LORA Quan.d.o voce' quer gerar os simbolos grancos dirstamente sem prectsar procurar qual e 0 codigo ASCII equivalente, pode utili-· zar est a tecla, mats a que geraostmbolo sohcitado. (Consulte 0 Manual do seu mierocomputador para saber quais sao as teclas).

RGRA Tern 0 rnesmo efeito da tecla LGRA apenas gerando caracteres diferen tes.

INSERT A teela INSERT coloca e ttra 0 computador do modo de inserC~o .. No modo de insercao, a cursor eo urn traco ao inves de um pequeno quadrado, ·e carla caraeter que voce dtgltar "empurrara' os restantes dos earacteres uma posic.ao para a diretta, Isto e melhor do que ter quereescrever uma llnha Inteira ..

DELETE A tecla DELETE apaga 0 caracter sobre 0 qual 0 cursor esta, Todos os caracteres a direita de urn caracter apagado sao entao movidos uma postcao para: a esquerda para preencher 0 espaco que foi deixado vago quando se apagou 0 caracter,

STOP Esta teclajunto com a tecla SHIFT tern a funcao parecidla com a de CTRL+ S de alguns eomputadores, OU sej a, eta lnterrompe e continua a execucao de urn programa ou a visualizacao de

18 MSX - M'ecfhores Program as

SELECT

uma Itstagem de programa .. Para lnterrornper detlnitrvarnente a execucao de urn programa deve-se utilizar a teela STOP Junto com a tecla CONTROL, Isto retornara 0 comando ao usuario,

Esta tecla nao tern funcao quando 0 usuarlo esta pro gram an do em BASIC MSX. Era serve para quando se esta uttlizando programas de proeessamento de palavras ou na entrada de dadosquando se tern programas 'apltcativos que a utilizam ..

Estas teclas servern para mover 0 cursor para qualquer parte da tela. Tambem servem para edlcao de prograrnas em BASIC MSX, tacilitando assim a correcao de erros em lmhas do programa,

BETAS

Fl ... FlO

As teelas d~ funeao Fl. .. FlO na parte superior do teclado, podem ser programadas para gerar sequenclas de caracteres diferentes. Alguns programas aplicatlvos podern usar asteclas de func.ao para urn unlco proposrto: consulter suas mstrucoes de operacao para detalhes especlflcos. Quando voce estiver utiltzando. 0 BASIC MSX. estas tectas J a estaraopre-denmdas (voce pod.e muda-Ias se achar conveniente).

FICOLOR

F2 AUTO

F3' OOTO

F4 LIST

F5 .RUN (nao precisa de RETURN)

F6 -COLOR 15,1,1

F7 CLOAD

F8 CONT

F9 LIST

FlO RUN (precisa de RETURN)

REPETII;AD AUTDMATICA DAB TECILAS

,Voce deve ter descobertoque se pressionar a tecla e mante-ls pzessietiada, eta sera tepetida automaticamente. Esta earactenstica funciona com todas as teclas exceto CONTROL, SHIFT e INSE.RT quando presslonadas sozinhas, Ernborac.ombinacoes destas teclas com outras sejam repetidas,

DIGITANDO COMANDOS

Quando aparentemente nao existe nenhum sistema atrvo por tras do CurSOT, a MSX esta provavelrnente aguardando urn comando. Voce executa comandos dlgitando uma sequencia de teelas, 0 computador, dirigido pelo pro gram a, exarnlna 0 que voce digttou e tenta determiner 0 que fazer. Digite alga corretamente e 0 programa fara com que 0 eomputador carregue 0 seu eomando, Assim, e 0 programa e nao 0 proprio computador, que determlna a validade dos

Tee/ado do MSX 19

oomandos que voce digitou.

Cada programa tern 0 sen proprio conjurtto decornandos, e quando elccontrola o MSX, estes sao os unicos comandos que 0 MSX entende. Pode ser um program a aplicativo que estasenno eontrolado -pdr exemplo, urn processador de texto. Por outro lado, 0 interpretador BASIC MSX pode estar no controle, Isto quer dizer que precisamos saber qual 0 programs que esta controlandoo MSX quando nos prepararnos para digttar urn comando.

Urn eomando pode nao ser exclusi vo de urn unieo pograrna. Mas.,. tenna cutdado, porque mesmo que um comando pareca 0 mesmo, seu efeito pede difarrr de acordo com a tarefa que realiza. Em outras palavras, uma certa sequencia de teclas pode sigmncar uma coisa em urn prograrna, a mesma coisa para outro programs, alga inteiramente diferente para urn terceiro programa, e nada para urn quarto programa.

Devido ao tamanho dos comandos ser variavel, nao existe urn limite pratico para seu tamanho. 0 pro gram a que esta no controle nao age ate que terminemas de digttar, 0 caracter que avisa que terminamos de digttar urn comando geralmente eo. (RETURN). Portanto, se voce digitar urn comando e ficar sentado esperando que alga aconteca, provavelmente esqueceu de digital' RE~ TURN. Existem comandos que nao preeisam de frnalizadores e muitos poueos que uunzam outros ttpos de flnalizadores. poristo, excessoes como estas devem estar bern documentadas nos manuals dos programas que os utilizam,

CDRAIGINDO DI'GITAf;OeS ERRADAS

Oometer urn erro e 0 computador fazer algo errado 01.1 mesrno nada, acontece com todo mundo .. Poucas pessoas nunca cornetem.erros, por isto 0 MSXfornece metes para corrigir erros. Para erros que voce notou antes de pressionar RETURN, use atecla Baek Spaee (BS) paracorrigi-lo. quando notar que 0 erro esta no Inlcto de urn ecmando ou de uma unna de comando, faca usa das tectas com as setas que estao localizadas do lade direito inferior de seu teclado. Posiclone 0 cursor ernbaixo do caracter errado e digite 0 caracter correto,

ACESSANDO OS C,ARACTERES GRAFICOS DIRETAMENTE

Be voce dese] ar fazer desenhos na tela, au colocar algum caracter grafico em seu programa aplicattvo, deve usar as teclas LGRA e RGRA. Estas teelas sozinhas e tambemjunto com a tecla SHIFT permitem que voce acesse todos os caracteres contidos na tabela ASCII que esta na EPROM do seu computador,

Para saber quais caracteres sao acessaoos veja 0 manual do seu computador.

Capitulo 2

JOGOS .E PROGRAMAS PRATICOS

22 MSX - Me/hares Programas

G,ERAC;AO DE CARACTER

o programa Geraeao de Caracter (CARACS)permlte a voce mostrar um carac ter (au urn sinal), em tamanho maier, no sentido inverse da tela e gerar uma salda do mesmo para a sua impressora.

0. comando DIM nas linhas 120 -140 define as tres matrtzes de caracteres, A$ contem as 26 caracteres alfabetleos (eles devern ser digrtados com a tecla CAPS LOCK actonada), N$ contem os 10 dtgitos numericos de 0 age P$. contem os valores dos caracteres de pontuacao (ponto-e-vtrgula, dots-pontes, ponto, hifen, exclamacao, asterisco, ponto-de-mterrogacao e 0 sinal de mais),

As linhas 200 - 270 teem (READ) os.dados que mostram os earacteresalfabeticos. Como cada nnha e lida de urn comando DATA, ele e coloc ado em uma matriz bidimensional A$. Isto e, a primeira lmha de caracteres, pot exemplo, A's vat em. A$(l,l), a seguir ern A$(1,2) etc., ate a valor "CARACTER" ser lido; para 0 proximo caracter, a primeira Ilnha de B's e colocada em A${2,l), em A$(2,2); e asstrn par dlante, ate 0 valor "caracter" ser lido. Apes cada caracterser Iido, CI, a prnneira varia vel subscrita, e incrementada de 1; e C2, a segunda variavel subscrtta, e colocada em O. Assim, a tetra A esta contida em A$(1,l) ate A$(1,9), e assim por diante, ate a letra Z, a quai esta nas variaveis A$(2,6,1) ate A$(26,1l) .. Quando a lmha 230·e Itda (READ) 0 "FIMD do comando DATA da Iinha 3.990 indica que a carga dos caracteres alfabeticos foi realizada e 0 controle passa para a linha280 para comecar a carga dos digitos numerlcos.

o digito numerico e Iido (READ), assirn como os caraeteres de pontuacao nas linhas 280 - 350 e 360 ~ 430, sao carregados de modo similar: mas, naturalmente, as matrizes N$ e P$ tern os valores apropriados. Se Voce respondeu Sa questao da nnha 160,0 comando DATA pode ser mostrado na tela a medida que ele vai carregando a memoria.

As linhas 440 - 500 entao permitern que voce digite uma mensagem para ser mostrada na tela 01,1 impressa em sua Impessora em letras maiores. Digttando FIM, voce pode parar 0 programa.

Nas linhas 580 a 1.030) a analise caracter-por-caracter da mensagern e feita, fazendo com que a Iinha apropriada para aumentar 0 caracter seja chamada da memoria. As lmhas 580 a 60'0 iniciam a analise. 0 programa procura par uma mensagem mteira, da esquerda para a direlta. A tuncao MID$ isola cada caracter; POl' exernplo MID$(B$,2,1) procura a segundo caracter de B$ (a rnensagem que foi dlgitada) para 0 comprtmento de 1 caraeter. E'ntElo 0 valor ASell correspendente aquele caracter.e colocado na variavel A. Se 0 valor de X$ esta entte A. e Z, a linha 620 pula para a retina de caracteres altabetlcos que eomeca na linha 790. A linha 640 envia os valores numertcos para a linha 870, e todos as outros pulam para a Iinha 660 para avaliacao da pontuacao.

Note que 6·4 on 47 e subtraido do valor ASCII (para caracteres alfabeticos e valores numericos, respecttvamente). 0 resultado deste calculo e que. A agora

Jogos e Programas Pratic:os 23

contem a propria variavel subscrita <de 1 a 26 oude 1 a 10) e pede carregar a mformac;ao do caraeter aumentado),

Os comandos nas Hnhas 660 ~ 730 €lao aos caracteres de pontuacao 0 valor subserito apropriado. Qualquer outro caracter e invalido e causa 0 surgimento de urn espaeo (10 linhas em branco, como deflmdo nas Iinhas 740-780). As linhas 790 - 860 imprimem (PRINT/LPFUNT) as caracteres A a Z;. as lin has 870 - 940

imprimem (PRINT! LPR][N'"f), os numeros 0 a 9; e as Iinhas 950 -1.020imprimem (PRINT I LPRlNT) os caracteres de pontuacao, A llnha 1.030 a seguir transfere 0 controle de novo para a linha 440 para criar outra mensagem ou flnallzar 0 pro.grama ..

Obaervando oscomandos DATA das linhas 1.040 -5.8~60, voce pode faellmente vercomo 0 caracter fotcnado, A altura e a aparencia de eada earacter'pode ser modificada se deseiado.

10 REI'1 20 REM 30R~M 40 REM 50 REM 60 'REM 70 REM

*********************** * * * GERACAO DE CARACTEj~ *

* * * DIREITOS AUTORAIS *

* *

NELSON (-iLVES

* * * >I<

80 REMiK 90REI'1 ~

1 no REM *:** *}I< * >I< * ***;~oJorol:ol< * >k**}j(:1< >l{ 110 KEY OFF

l~O PIM A$<30,16) 13D DIM N$(15,16) 140 D}M P$i15,16) 1.50 CLS

1 ~o I NPUT II L 18TAR NA TELA CO!"10 MATR I Z .( SIN) II; AV$ 170' PHI NT; PRI NT "'CARREGANDD AS MATR I ZES .• or ~ i!

18.0 cr =: 1

190 C2 ,." 0

.200 READ X$

210 IF" AY$ {} US" THEN 130

22;0 IF X$ o II CARACTER'! AND /'($ <> ~!FH1l! 1~HEN F'R1NT /($ 230 IF X'$ = II F' I M It T'Hl~:"N C 1 := .1: C2 := ,0;, GfJ-rO 2-'8()

240 C7 ::;: C2+l

250 At· (Gl ,C2) ::;: X$

2GB IFX!1l .~. "CARACTER" THEN Cl ~ Cl.f,l: C2 "'"" 0 270 GOTO 200

280 READ ;($

24 MSX - Mefhores Programas

290 I.F AY$ <> "9" THEN 310

::)00 IF X. 0 HCARACl"ERii ~ND X$ () "FI.Mu THEI\l PRINT X$ 310 IF X$ == uFIMu 'THEN Cl ;:l1; 1: C2 =0; G01"O :::';60

320 C2 = C2 + 1

330 N.(Cl~C2) ~ XS

340 IF X$ ;;::; IICARACTER~~ THEN cr =:: Cl +1 = C2 :c: 0 350 GOTO 28.0

360 READ X$

370 IF AY$ o "SIi-rHEN 390

380 IF X$ ::I ilC!~~RACTEROI AND X$ = i,IFIMII THEt-J PRINT X\li 390 IF X$ :c ,uFH111 THEN Cl = 1.: C2 == 0: GDTD 440

a.oo C2 = C2 + 1

410 P$lCl,C2) = X.

4:20 IF X$ = "CARACTER~I THEN Ci ... Cl -I- 1: C2' -- 0 430 GOTO 360

440 CLS

450 LOC~TE 0,6

460 11\IPUT II IMPRIMIR (SIN) II; 5$ 470 PRINT

480 PRINT .. (F Hi PARA TE:RI'11 NAR 0 PROGRf~MA)" 490 PRINT

50.0 INPUr "QUAL 0 CAR'ACTER DESEJADCi II i EI$ 510 IF B$ := "FlM!! tHEN 5870

520 :r F S$ {> ., 911 THEN 580

530 PRINT

540' I NPUT II ,I MPRESSAO ( N) DRMAL au (C) ONDENSADA 11; RY$ 550 LPRINT CHR.(27)~CHR.(78);

560 IF RY$ = liNn '-HEN 590

570 LPRINT CHR$(27);CHR$(81);

580 FOR 1 c 1 TO LEN(B$)

590 X$ = MIO$(BS,l,l)

600 A I!II ASC<X$)

610 REM *** LETRAS ***

620 IF X$ )::: IIAII AI\fD X$ <= 112111 THEN Ac:"~ ~~~-64: G01'O 71:;}0

630 REM *** NUMEROS ***

640 IF X$, ) = 1'10'1 AND X$ (= "9" THEN A ::; f.~-471 GOTO 870

650 REM *** PONTUACAO ***

b60 IF X .. = 11;11 THE:N A HI 2= GOTO 95.0

670 IF X$ - litH THEN A =: 3: GOTD 95.0 680 IF X$ 1:1 II.JI THEN A - 4: GOTO 950 690 I:I= ~\$, = U_,..II THEN A - 5= oOTO 950 700 IF X$ == IIln lHEN A - 61 GOTO 950 710 IF X$ -. lI*i.I THEN A = 7: f_;,OTO 950 720 IF X$ ,_ j'I?11 THEN A = HI GD-TD 950 730 IF )<.$ =:: 11+" THEN R - 9: 60TO 950

Jogos e Programas Praticos 25

740 REM '**,' ESF'ACO *** 750 FOR J ;IC 1 TO 10

760 Lr;?RINT

770 NEXT J

780. GOTO 1020

790 FOR J ;::: 1 TO 15,

soc IF A$ (~l, J) == uCARACTER" THEN 860 810 ~FS$ o "8" THEN 840

820 I-F'RINT SPC;( io: ;A$(A;J)

830 GOTO 8'5·0

840 F'R I NT s=c ( 1 0) ; A$( A , J ) 850 NEXT J

860 GOTO 10'20

870 F'OR J ~ 1 TO 1 5

880 IF N1i (A, J) ;lI!I "CARACTER,I! THEN 860 890 IF 9$ (} "SI! THEN 920

900 LP,fU t,n SF'C ( 10) ; N$ (A '~, J)

9110 Gom 93'0

92"0 F'fU NT SPC ( 1 0) ; N$ (A , J ) 930 NEXT J

940 Goro .1020

9'50 F'OR J "'" 1 TO 1 5

'9bO IF P$(A,J) J;!:! IICARACTERII THEN 860 '9'0 IF S,$ o II'SU THEN 1000

980 LPR I NT Sf'C (. 1 0) ; P$ (A , J )

990 GOTO 1010

1000 PRINT SPC(lO) ;P~'HA,J) 101'0 NEXT J

1020 NEXT I

10:30 FOR "I ;;: 1 TO 1000: NE:X T r = GOTO 440

1040 DATA nJi

1 050 D'AT~ II AAAAAAAAAAAAAAA II icso DATA II~AAAAAAAAAAAAAAA II

1070 DRTA II AA AA rI

loeo DATA Ii :AA AA "

1090 DATA II AA AA U

1100 DATA !I AAAt::aAAAAAAAAAA,AA II 1110 DATA "AAAA:AAAAAAAAAAA 11 1120 DATA 1111

1130 DATA "·C~RACTE.R u 1140 DATA II Ii

1150. DATA i'BBBE(EtBBB-BBBBBBBB II 11 ~o Df;lTR i! BBBBBBBB8:BBSlBBSBJ I

1j 70 DATA II BEt B.B BE II

t 1 90 DRT~ I', BE BB Be II

26 MSX - MeJhares .Ptogramas

1190 DATA II BB BBBB BB"

1-200 DATA II BBBBB .BBBEEll

121 Q DATA II EBB BBBi!

1220 DATA "'"

1230 Of'=lTA ,J C~~j~t.":!CTER I~ .1240 DATA ""

1250 DATA Ii CCCCCCCCCCCCCCli 1260 DATA "CCCCCCCCCCCCCCCC"

1 270 DATA II ccc 1280 DAiA nee 1290 n('~TA "DC 1::300 DATA. IICC 131.0 DfiTA Ii CCC 13;20 DATA ,: 1i

1 ::r30 DRTA II CRRACTER II

13aO DATn II II

12~50 DATR II DDDDDDDDDDDDIDDDD U 1360 OATA II PDDDlJDDDDDDDDDPD j",

1 :370 nATn 'I DD DD"

1 ;:i80 D~TA IJ ODD DDD 11

:1 390 DRr.=! II DDD DDD II

1400 DATA I' ODD ODD"

1410 DATA!" DDDD DDDD II

1420 DA"lA U DDDDDDDDu

14]0 DATt:l " DDDD II

1440 DATA ,j Ii

ll~500ATA "C~1RACTERII 14t"O DA-rA j,I.~

j £I. 70 DAT~{ .. EEEEJ~:E:EE"EEEEEf..:EE ~I .1480 DATA Ii EEEEEEEEEIEEEEEEE '"

1490 Df-1TA "EE' FE ErE"

1500 DATA IIEE EE E~:."

1510 DATA' ilEE EE Egil

1520 DATA II EE EE EE II

15;:;10 nATA liEf: EE EE. II

1-540 DATA .. II

J ~/50 nATA ItCARfiCTER j, 1560 DAIA !! II

1570 DATA "FFF~-Ff'FFF-~FFPFFFF' JI 1 ~i80 DATA "FFFf;-FFFFFFFFFFFF Ii

1 ~)90 D?rrf~' II FF FF I:

j 600 DATA !! FF. FF II

cecil CCH cell

ce"

cccn

.1610 DATA II 1620 DATA " 16::50 DATA u

FF FF FF

FF'I " F"FII I

FF",

Jogos e Program as Praticos 27

1 b40 DATA llioi

1650 DATA II CARACTER II 1660 DATA i.111

1b70 DRTA HGGGGGGGGIGGGGGG6G'1 1680 l)ATA IIG6(~GGGGGGGGGGGGG"

.169.0 pArA II GG.G G.r:;.G II

1700 PATA "tSG GG "

171 Q DATA .. GtE. GG ii

1720 DATA II GG GG GG"

1 730 OAT~ "GGG·GGG. 56 II

1740 DAT~ HGGGGGG GE"

1750 DAT,~ II Hi

1760 D~TA I~C.ARACTER I, 1 770 PATA II iii

1780 O~TA' "HHHHHHHHHHHHHHHH II 1790. OAT~ uHHHHHHHHHHHH,"""I-IHH U

1800, DATA n HH II

1610 I)ATA " HH"

1820 DAiA ,., HH ,.

1 a;.;~o DATA II HI=! H

lS40 D~TA "HHHHHH,HHHHHHHHHH" 1 850 DATH II HHHHHHHHHHHHHHHH II 1860 DAT·A II"

1870. lIATA "CARACTERJI 1880 DATA III U

1890 DAT~ 11'1 I I.I II

1900 DATA "1 I I I H

i 91 Q DATA II r I 1. I I I 11 I I ! I I I I -I ;, 19'20 El~TA n I I I I I I I I 1 I I I I I I r II

1930 DATA "I I I I n

1940 DATA ,II I I I I"

1950 PATA II II

19~Q DATA U CAR:f:lCTER 1:1 1970 [lRTA III II

19'80 DATA III JJ.J J II i 990 DATA· II J.J J J'" 2000 DATA UJJJII 2010 DA,TA II J J" 2020 DATA I\J J""

2030 DATA IIJJJ:J"JJJ·JjJJJJJ.Jj"1I 2040 DPlTf:.l ".JJJ.JJJJJJ,JJJ.JJJJ" 2GlSO DAT.~ II ..

2060 DAITA "CARACTEF: II 2070 DATA .,.,

2080 DAilH1 u KJ~KK~<;}\K~\KKKKKKt(K II

28 MSX - Mefhores Prog.ramas

2090 D(.iTA II t\I-'n\K.f.JH"J\H~\KJ(K~,\hJ("

2100 DATA !I K~{I-"\'.""

2110 DATA " }\J, ~\K"

2~20 DATA .'1 KK KK"

2130 DATA II hK ~\h"

2140 DATA I. ~\}< ~{;K'!

21 ~50 DATA u KK hK"

2160 DATA II ~\K ~~~'\ u

2170 DATA ""

2180 DATA !!'CAHACTER" 2190 DA1~A nil

2200 DATA "U_LLLLLLLLLLLLLLIi 2210 DATA "LLLLl..LLLLLLLLLlLII 2220 DATA uLLL"

2230 DATA II LL II

2240 DATA " LL il

2250 DATA liLL"

2260 DATA JILL "

2270 D:ATA II LL II

2280 DATA ""

2290 DATA I'CAF:~1CTEF;il 2300 DATA HII

:2':3 10 DATA If MMt1,MMMMM MMMMMMt'l,M II 2'320 DAT~ II MMMMMMMMMMMMMI'-11'-1 h

233'0 DATA ., MM U

2340 DATA u t-1M II

2:'550 DATA jl Mt"1"

2360. DATA I! MM II

2370 DATA II MM"

2380 DATA II MM~I

23'90 DATA tI Mt1"

24.00 DATA " MM ,.

2410 DHrA II MMMMNt1MMMMMMMMM u 2420 DATA uMM,Mf"1MMMMMMMMMMM~lu :2430 DRTA II!!

2440 DATA t1CARACTERn 2'450 PATA n ~I

2460 nATA U NNNNNNNNNNNNNNNN I. 2470 DATA 'I NNNNNNNNNNNNNNN II

24·80 DATA II> NNN'I

2490 DAT~ II NNN"

2500 DATA II NNN'"

2510 DATA II NNNU

2520 DATA 1.1 NNN"

2530 DATA II NNN"

2540 DIRTA II NNNNNNNNNNNNNNNN'" 2550 OATA 11 NI~NNt~NNNNNNNNNNN " 2560 OATA II I~

2570 tlATA II C~RACTEA: I" 2580 DATA ii I~

:2590 CAlA .i 00.000000.000000 H 26,00 DATA u OOOOQOOQOOOOO(J[lO t~ 2610 DAT~ 2620 DATA 2650 DATfi:l 20,40 P~1A 2650 DATA u 00 00 II 2l,l:JQ P'ATA II OOOOUOODOOOOOOoo Ii 2670 DATA II 00800000000000" .. 2680 D:RTA " II

2690 DATA II CARA:CTER H 2700 DATA " II

2710 DATA II F'PPF'F'F'PF PPF'F'PPF'F''' 2720 DAr~ npPPPPPPPPPF'PP'F'PP'"

2730 DATPl II F'P PP II

274.0 I)~rf.:l III pp PP I.;

2750 DATA II F'P PP 11

2760 DAT~ Ii pp pop Ii

2770 DAliA II PPPPPPPF'"

2780 DATA II PPPPPF"1

2790 DATA II 11

2800 DATA II CARAICTER II 2810 OATA III II

liDO OO'·i
"AD ~O''
1100 DO"
"00 OO!' 2820 nATA 2aJO DfliTA 2840 DATA 2850 DATA 28bO Dl=lTA

n QOQQQQQQ{;JQQQQQ II IIQQQQQQQQQQQQQQQQ u

UGlQ I'QQ 'I(jIQ

:Q(~'i G!Qh QD"

2870 DATfi=! II QIQ QQ QQ II

2880 DATA II GlQQQ llQ ••

2990 DATA II QQQQQQQQG!QQQQQQQ I, 2900 n'ATA II fl'QQ.QQQQQQQQQQQQ II 291 0 O#=lT ~ II GlQ II

29:20 OATA hQQ II

2930 D~TA III U

2940 DATA II C~R~\CTE~ II 2950 DATA II II

'2960 P~TA II,RRRRRIRRRRRRRRRRf:;; Ii 2970 DATA, Ii RRRRRRRRRRRRRRRR III

2980 DAT~ 11

RR

r';:R I~

30 MSX ~ Meihores Programas

29'90 D{-)TA U RR RRH

3000 DATA " RRRR RR"

:':-;010 DATA II RRR RR RR /I

3020 Of4TA If RRR RRRRRRRRR n

:3030 DATA "RR- RRRRRRR, III

30a.O DATA rill

3050 Df~TA IICARACTER" 3060 DATA "II

3070 DATA IIS.9 3080 DATA !! 58

SSSSSE;S " S8oSS,SSSSS' "

~30'90 DATR 3190 Df~TA 3110 DATA 3120 DATA

IISS 58

IISS 58

IISS S8

6911 BBi•

SSifi 86'1

flS8SSSSSSS

3130. DATA !I SSSSSSS 58"

3140 DArA 1111

31 ~;o DnTA H CAR~4CTER II 31 60 DATA II U

3170 nATA II TTl!

3190 DATA Ii TT"

3190 DATA II TTII

:3:200 D~TA ~'l~TTTTTTTTTTTTTTT I. 3210 DATA "TTTTTT'-rT~rTTT1-TTH

3220 DATA' ~I TT"

3230 DAlA U TTH

:3240' PATA u T1- I,

3;;~50DATA i!o"

3260 DATA HCARACTER I, 3270 nATA 1111

3280 DATA II UIJUUUUUUUUUUUUU I~ 3290 DATAI~ uuuuuuuuuuuuuuuu. U 3300 DATA II UU 1,1

3310 DATA "'UUn

3320 Df:iTA "UU'I

3330 DATR "UU"

3340 DATA III UU II

3350 DATA HUUUUUUUUUUUUUUUUII :330.0 DATA II UUUUUUUUUUUUUUU"

~3370 3380

DATA Hi!

DATA liCARACTER" DATAl II, II

DATA II

DATA II

DATA II DATA I!

VVVV" VVVV"

3390

,3400 311.10 3420

vvvvn VVVV!I

34·30

Jog05 e Programas Pnitticos 31

3440 DA1~1 II VVVV" 3450 DATA ., VV II 3460 DAt'A IIVVVV'I

3470 DATI=! II VVVV II

3480 DATA n VVVV!'li

3490 OFlTA u VVVV It

3500 DATI=l II VVVV II

3E1-10 DATA II II

3520 D~T~ I. Ii

3630 mATA II CRRACTER II 3540 DHTA II II

J:550 I!IRTiA II WWWWWWWWWW'WWWWW,W II 3560 DATA II WWWWWWWWWWWWWWW II

3570 PATA 11 www tI

35190 DAT~' II WWW II

3590' D'ATA II WWW II

3600 IlATR U WWW I,j,

:3610 DATIti II WWW 1'1

3620 DATA .11 WWWWWl,..JWWWWWWWWW n 3630 DATA I. WWWWWWWWWWWWWWWW II 3640 DATA II II

3650 DATA tl'CARACTER II 36bO DAT~ JI II

36,70 DAT~ II XXX XXX ..

JbBO DATA II X XX XX X Ii

Jb90 DATA II XXX XXX!'~

37'00 DATR III XXXX"

3710 Dt:lTA II XXXX II

3720 DATA U XXX XXX!;

3730 OAT~" ,XXX XXX \.I

3740 OATA "X,X,X XXX"

3750 D~TI=II III II

37&,.0 DATA "CARACTER H 3770 DAiA II"

3760 PAiR I" yyy /I

~7'O DAT~ II YYY"

3800 ,DATj:J! II VY'V"

3810 DATA IIYVYVVYYYVyn 3820 DATA II VVYYYYYYYV II

sseo DATA n VVY'"

3840 DATH II YYY"

3950 D~T~ II yyy II

::saba D~TA: II II

3970 DAT,A "CAIRACTER it 3890 DATA II II

-zz ~fZZZ

32 MSX - Melhores Program as

3890 DATA
3900 DATA
3910 DATA
3920 DATA
:1930 DATA
3940 DATA
3950 DATA
;:::i960 DATA
3970 DATA
3980 DATA
39'90 DAJA
4000 DATA
4010 DATA
4020 DATA
4030 DATA
404.0 DATA
4050 DATA'
4060 DATA
4070 PArA
4080 DATA
4090 DATA
4100 DATA
4:1. 10 DATA
41:20 DATA
4130 DATA
4140 DATA
4150 DATA
4160 DATA
4170 DATA
4180 DATA
4.190 DATA
4200 D(~TA
4210 DATA
4220 DATA
4:2:.30 DATA
4240 DATA
4250 DATA
4260 DATA
4270 DATA
4280 nATA
4290 DATA
~300 DATA,
4~Jl0 DATA
4320 DATA
4330 DATA uzzzzz

Zzu ZZ" ZZ'u zz-:

II-ZZ

'J-;r"";t.t: .. ,1;,.

,IIZZ:

1.'-;>,...... ~

zzz

zz .. Zzu

z:Z.Z ZZII lZZZlI

~,.'" ..... ,1; ••

,i'F r Mil

il Il

i. 00000000000000 II

I! 00000000.00000000" 11000000 00"

"00 0000 00 I.'

1100 00000011

,U 000.0000000000000 II II 00000000000000 ..

" ..

liCARACTERII

nil

u 1 :1 1 'I

,0 11 1 1 "

II 111 111 1 11 1 .111 1 11 " 11111111.1111111111"

!I 1 1 "

"11"

un

II CARACTER "j

II "

1;22

22 PI 2'211

U2222

i'22 i!22

22U

222

--}II~",",:"~ ..... """"'"

2211

1122 1122

2.2

22222" .222"

lit ••

II CARACTER"

IIU

U33

33U 33 .• 1

::;3.H

"33

liI33

Jo.'gos e Programas Pratico's 33

4:;'40 CATR' 113"3 33 "'Y -~ ~I
.,,) ... ) ,
43~O DRTA ~I .,.~ -.'""1! ~-:"H
~'\ »: ' .;.'i. ....... ..... ... ._:. ..
4'360 DATA 11333 -,,-w-,..,.. -,,--.-.. ri
~'.':''''':''''._'lJ ~"':'\T~'
4370 DRTA II 333 ~""'~-::-'-Y-':'r 33311
. ..:~ "_) ~\ ~, ._:.~...;. .. 4380 DATA II 333~:3 33:;333" 4390 DATA II ..

4400 DI=ITA uCARAC·rERIl 4410 PAT~ ""

4420 DAT-R I', 4.44 II

44:=10 DAnl " ,4444"

4440 DRTA II 44 444"

4450 DATA" 44 .a.44 I.

4460 DATi=!" 44 444"

4410 DAT,A "44 444 II

4480 DATA Ii 44444444444444(l" 4490 DRTR "444444444444444. II

4500 DATA II 44 I,

4510 DATA" ,4411

4520 DAHl, II II

4530 Dr.lTR II CARFiCTER II 4540 DAl,A II I.

4550 DATA '. 5:5 4560 DATA liS;;

4570 Di=lTA "55

55555555"

55

45'80 D~TR u55 55 4590 DRT~ II 555 5555 4600 DATA 1,1 5:355555

461 0 D~T~ in 55555

46;20 DATA !I I!

4630 DATA uCARACTER II 4640 DATA ""

4650 DATA 'I 6666666666666 u 4660 DATA "6666666666~6666 II

46 70 O~lA II ~6, 66 66 'I

4680 DATA ~"'66 66 66

4690 DATA "6.6 66 66 '"

4700 DAT~ 1, 666666,6b6 66 "

4710 DATA II 666666b 66'1

4.72() DATA I, 66666 b n

4730 DAT~ TI H

4740 DATA !ICAR~GT~Ru 4750 DATA i' "

4760 DATA "777 77"

4770 DATA n 777 ·77u

4780 DATA" 777 17 If

'r~11 ... I.....J·

Z5'"

34 MSX .~ Melhores Progra,,-,"aS

4. 790 Dnn:~ ~~ 7"17 77"

4800 DATA u 777 77"

4810 DATA H 77777"

482Q DATA II 777"

4830 DAr:A " H

4.840 DATA .j CARACTER iI' 4850 DATA ""

4860 DAT.A II 888888 8888B8!1 t},870 DATA II BS88-88888BS8S:888 "

4880 DA1-A "S9 139 88 II

4890 DATA "88 88 88"

4900 DATA "88 88 as"

4910 nATA lisa 8B 88"

4920 DATA 118888988888888888" 4930 DATA "888888 888888" 4940 DATA " n

49::;0 DATA !'CARHC"rER H 4960 D~lTA "ll

4970 DATA t'99 999999"

4980 OAT~ ii 99 99999999 H

499{) .DATR 1199 999 999"

5000 DATA "("19 99 9'9 II

5010 DATA ';'99 99 99"

5020 'DATA "999 9999 999"

5030 DATA "9999999999999999" '5040 DATA " 99999999999'999" ~_;050 DATA "'I

5060 DRiR II F t 1"1"

5070 DATA tl'.1

50·80 OAr'~~ t"I,.

5090 DATH ""

5100 DATA "CARACTEF.' " 5110 D~1TH '" Ii

5120 DATA up

5130 DATA !lXH

5140 DA~n:l Ii XX"

5150 DATA iI XX)( XXX I!

5160 DATA n Xxxx XXXIJ 5170 DATA" xxx xxx " 5180 DA.TA ,~U

5190 DATA 11;1

5200 Dt:)TA "CARAC-rER;' 5210 DATA 1111

5220 DATA "I!

5230 DA"fA" XXX

XX)'; "

Jogos e' Programas PriJticos 35

5240 DATA Ii X .. "<X XXX ,.

5.L~ DATR" XX,X KXX"

;;,260 DATr4 "",

5270 'D'ATA ""

;i280 DATA "CARACTER!!

5.290 5300 5310

5320

DATA II II
DATA II III
DATA ~IXXX II
DATA I, XXX"
DATA "XX):', II 53~O 5340 OAT' I! II 5350 DATA ;1 ii,

5360 DATA "CARACTER I,' 5370 DATA ""

5380 DATA II II

5390 DATA Iti 5400 DATA .. 5410 DflTt:l u 5420 DATA II ~430 mnA il 5440 DATA Ii 5450 DATA u ,I 5460 DAT,~ "CARAC1·,ER II

5470 DATA II II

5480 DAT'A II II

5490 D~TA: I1XXX ~XXXXX)G<X I,

5500 DRTR .. XXX X.XXXXXXXXX II

xx "
XX II
XX U
XX 11
XX II
x~ " 5510 Dj:rrA
55.20 DAT~
5530 DATA
5540 DATA I'XXX

XXXXXXXX "1

1111

.111

II C~.RACTER I.,

5550 DATA II U

5560 DATf.! II 5570 DAT'A II 5580 DATA II 5590 D~TA II 5600 DAiTI:~ II 5610 DATA II 5620 DATA II 5630 DATA II ~b40 DATt=! u 5650 O,qTA II n abbO DATA II, DAH~CTER" 5670 DATA I'll

5680 DfHA II XX, XXXX

x

x

X,I' J

x X XII

X X X" XXX"

XVlVXvv xxxxx-

,~J' "~~j I ~~ j\

XXX"

X X X" X X X"

X X XII

5690 DATA I~ XX 5700 OATH II 5710 DATA II 5720 DATA II 5730

XX,XX

v V " ",~ ~

XXII X;\ II

,36 MSX- Me/heres P'fOgramas

5740 5750 5760

DATA II PATA ~J n

DATA II CARACTER II DATA II II

~,x X';'{ II X.XXXXXXXII XXKX,XXn

5770 DATA ~I XX II

5780 DATA I. ,XX "j

5790 DATA ., XX II

5800 DATA Ii XXXXXX,XX"

5810 DATA" XXXXXX),X II

592.0 DATR ~I XX Ii

583,0 DATA II XX til

3840 DATr:! H XXII

5850 DATA IICARAC"YERII 5860 D~TA II F I Mill

5870 CL8: END

Jogos e Programas Praticos 37

.:1.::1 .;:I;;:f

.j~ ~::!.:::I

.:H d.:l

::l.:l ,j,:::I

;.1.:.1 :l::l

::I;j .:::I.::lI.::I.:I ;j'_.j ,::1.:::1.::1 ~ .::L:I ~:I.::I .::1.:1.:::1 ::1.::1.::1 :J,d.;l ;;1.::;1.:::1 ..:::I_·:L::L~

.:1:1 .::l.::f
::1.:1 .::1::1
:lcl .::L::f
;:kJ :::1::1
.. :L:I .:::1.:::1 ::l.:l.:J:.I&:f...=I;;::1 ~,=L:L;;L:I.~.:::I::I jdd~~~~~.:::I~.:::I~~~.:::I~

t:;1j tR~ tftjfd tH:;!tt tj'lOtt t1 t1 tt:tJI::fI:-J~J.t1IJIj!j t;!j t1t!!::tl:!t:J

~Id t1tj

'tftJ 1;11:1

!;:ItJ tj't1

t}:tjlt;t t1tftltf ljlj tft1!j Ijlj tJt;t !:H:II.·.HJ tH::! tJ tjtl tH::1t1t::1 tH:f

J"l 11

11

11.L!J.J .. j_j_ 1 l.Jl_.J__ll 11 J.,L LLl.L.l.l 1. LLU_..L _Ll 11

1.1.

l.l

ss 5SSS88S

BS SSSSSSSSS

SS 58 SS

$8 5S

ss 8'S

SSSSS$SSS

sssssss

55 as 58

Figura 1. Prograrna Oeraeao de Caracter: exernplo (1) Ole saida do programs.

33 33 33

33 33 33

33 33 3-3

33 33 33

33 33 31 :l~J33333333j3333 331333333333~3)3

Figura 2. Pro gram a Geraeao de Caracter: exernplo (2) de saida do programa.

38 MSX - Melhares Program-as

ss g,SSSSSS

55 SSSSSSSSS

59 SS SS

55 SS S5

55 55 5S

55S5SSSSS 55

SSS5'S5S 5S

tfHtlHVtf!;ffttJVtftH1HU ~U~ijijetJVtftiHVij~tftf

1:111 tfij

tttl ttt;

IJtJ tttt

tftUttI'UtttWtftllltltttftl

tI.,tAIUtftft1tttltfUtltt~

~~nnftttnj HM

U~atf~UgUH tRIU

ij~ ij~ ~)j!:l

liM H8HU

MH M8

~ MM

~Httij,H~tnJ~HHtt~U~)j ~tt~ ~H~'HUMM~'UUHH~

11118 S8'S

sauao 'sa1l08

as la&8 II]

au aa as

88 8ft aa

QaaoaS«81UJOi1J1I88 aaea1J88a1J88:1U80Jl

Jogos e PrQgramas Praticos 39

o progra,ma GeraQao de Som (80M) e urn programa de entretenimento que pel!mite que voce digite qualquer mensagern que deseja ver repetida varias vezss natela, Ao mesrno teU1PO em que a. mensagem e mostrada, urn beep au tom e emitido.

ApOS Voce ter selectonadado a mensagem na lmna 130,8. linha 150 solicita nt1mero debee:ps. Be voce quiser que a mensagern seja mostrada pot urn longo perl0do, digite umnumero alto. A telae "limpav.apos cada beep se voce responder ,Sa pergunta da lmha l80. Se voce quiser repetira mensagem, digtte MESMA para apergunta" QUAL A MENSA GEM? "; voce nao sera soncttado a Informer a quantidade de beeps ou a zerar a tela.

io REM 20 REM 30 REM 40 RE.M

iK**** ****"*** ******>It**** * *

GERACAQ DE SOM

* *

* »<

so REr~ * DIREITOS AUTDRAIS *

\SO REM * *

70 ~EM)« N!:;::LSON ALVES *

86 R£M * *

90 REM * *

1 OORE·M ****************}I< *****)1( 1 H) ~~EY OFF

120 CLS

1]0 INPUT I".QURL E A MIENSAGt::.M (XX ~ FINAL )11 ~ X$ 140 I F' X $ - Ii MESII1A i! THEN :200

150 IF X$ c= vxx jI THEI\! 270

160 L.$ = X$

170 I NPUT II QUANTOB BEEF'S II; B

1-80 INPUT "Ll MF'AR A TELA (S-IN) 190 &01"0 210

II • r"l\_J'1' " Ol'~ ;p.

:~OQ X$ ;;::: L$

210 FOR I := 1 TO B

220 IF SN$, {> "s Ii THEN 24·0

2:;50 CL8

24.0 PRINT I:; TAB (6) 1 ~'($ ;CHR$ (7) 250' N~XT I

2&0 50TO 120

270 CLS: END

40 MSX ~ Melhores .Programas

AINIIVERSAR IANTES

o programs Aniversariantes (ANIVER) pede Iistar todos os nornes de seus conhecidos os quais fazern aniversario em qualquer mes ou fornece a voceama list a em ordem alfabetica dos nomes e datas de aniversario.

Ele nao e Iirnitado a cnacao de lista de antversariantes. Multiplas capias deste program a podem servir paradiversos prop6sitos; alem da versao para aniverss riantes, uma versao com urn ealendario pessoal pode ser criada, ou uma combi nacao das duas. POI' exemplo, ANlVER pade gerar urn calendano de evcntos para qualquer mes OU crtar uma hsta ern. ordem alrabettca do nome doseventos Ou, se voce quer ver todas as reunioes que voce tera com Ulna determinada pessoa ou organizacao, voce pode trrar uma Iistagern elassittcada (desde (!}Ue. naturalmente, voce seja cuidadoso ao inserir os nomes das reunioes da mesrna maneira todas as vezes), Em 10 de janeiro; voce po de ter dez coisas listadas prua voce lembrar, embora no dia 11, voce tenha tres; com este programa, voce naG tern que manter 0 reglstro de todas elas na sua memoria.

Voce pode substitlliros comandos DATAnas Iinhas 130 - 480 com seus pr6prios nomes. Apenas digite seus proprios cornandos DATA ao inves des que estao litados (a menos que voce queira Iembrar da rnlnha Iista de anlversarrantes) Note que 0 ultimo comando DATA e 99/99/99 ZZZZZ (linha 480), ele e necessanc para mdicar ao comando READ da ltnha 510 que todos as dados de entrada foram lidos. Voce pode acreseentar ou apagar dados de entrada atraves da digitacao de novas comandos DATA ou da eliminaeao de alguns.

Vamos ver algumas instrucoes do programs que sao de interesse. ApoS 9S comandos DATA teremsldo lidos e colocados na matriz X$ nas Iinhas 500 - 5;301 suas opcoes sao as seguintes:

1. Listar togas os aniversariantes ou reunioes em qualquer mes (01 a 12);

2. Listar em ordem alfabetica todos os nomes au reunioes descrttas;

3. Finaltzar 0 programs.

Estas opeoes sao dadas nas Iinhas 560- 710.

Se voce digitar A (para urna listagem em ordem alfabeticaj, 0 controle passa da linha 720 para a linha 1.150. 0 FIM determma que o programa seja fmalizado e

pula da linha 73.0 para a Iinha 1.480. As Irnhas 740 - 820 analizam qualqller outra selecao para ter certeza de que. um numero de dots digitos foi digitado~ elas olham em SI$ (0 primeiro caracter) e 82$ (0 segundo caracter) para ter certeza de que eles estao entre 0 e 9.0 cheque nan e muitoperfeito, j a que meses maiores do que 12 podem ser solicttados.

Se voce digitar 0 numero de urn mes, 0 programs entao classifica os dados, rearranjando-os em ordem, considerando os primeiros cinco caracteres (0 dia, uma b arra e 0 mes), Uma classific aGao do tipo "bolha' nas linhas 83D - 950 realize

JogO$ e Program as Praticos 41

Istn, Not~ que cada vez que voce pedlr as reunioes de um mes (ou outra informac;aQ), voce reclassificara os dados. Voce pode pensar que este processoe muito mefictente; entretanto, se os dados ja estao na ordem dia/mes, a classificacac V l:itlca a dado somente uma vez para verificar que os elementos ja estao em sequencia. Lernbre de outros exemplos do livro que na classiflcacao pelo mewda da bolha, um sinallzador e mantido para ver se qualquer elemento esta tora de oedem e entao muda-lo. Neste caso, 0 sinalizador e SW$ nas linhas 830, 930 e 960. Sa nenhum elemento estiver fora de ordern, a elasstficaeaosera terminada.

Depots, voce e perguntado se quer umalistagem impressa ou exibtda na tela ~inha 980). Devldo aos primeiros dois caraeteres serern Iguais ao mes selecionado, somente os dados deste mes 83..0 mostrados, (Veja a.linha 1.010). Note que se voce digitar 13 como 0 mes selecionado. todos os dados serao mostrados na sequencia dlarrnes, Agora voce pode ver que se digitar urn numero maior do que 1310. programa classtncara (ou reelassiflcaraj os dados na sequencia dia/mes- a manes que, naturalmen te, voce digi te ern seus comandos DATA meses maiores do que 12.

Se. voce sclectonar urna Iista em ordern altabetica, as Iinhas 1.160 - 1.300 classifielm) QS dados em ordem altabe tic a, usando a chave de classincacao a partir da deeima poslcao do dado (apos 0 espaeo seguinte aos oito caracteres da data) para 0 final de cada elernento. A funcao MID$nas Iinhas 1.220 - L230 analizam as names. Novamente, voce pode obter UIi1a listagem em ordem alrabetica; se voce wiD tiver uma impressora, poderamostrarSu itens de cada vez na tela. Ap6s cada tela, pressione RETURN para contmuar,

10 REM .******ntolol<************** 20 REM * * 30 REM * 40 REM *

50 R~M * DIREITOS AUTORAIS 60 REM *

10 REM *

8-0 REM lit

90 ·REM 100 REM 110 ~(EY 120 CLS .13,0 DATA 140 DATA 150 DATR lQO DATA 170 DATR 03/03/59

ANIVERSARJANTES

*

NELSON ALVES

* * ***-******************** OFF

;:;5/02/59 05/10/65 Ol/05/2q. 01/01/37

RUBENS JOAO ELlO CLAUDINA WILSON

42 MSX ~ Melhores Programas

180 DATA 03/(}5/56 TONY

190 DRTA 15/03162 LUCIANE 200 nATA 29/04/61 BERNARDETE 210 DATA 07/05/57 CRIST1NA 220 DATA 29/05/81 IEJ;:U(A

230 DATA 23/12/78 SISSI

240 DATR 09/04/33 AGOSTINHO 250 DATA 24/02/59 NELSON

260 nATA 09/09/'11 PA-SCO~LA·rO .270 DATA :24/05/~59 ELIANE

:280 DATA 06/22'/.$7 PEDRO

29-0 DATA 25/06/45 C~RLnS

300 DATA 03/01/71 ROBERTO 310 DATA 09/08/45 PE£ElORA

320 DATA 19/11/18 ANDREA

330 DATA 15/04/71 eRIS

340 DATR 29108/78 HENR H~-UE 350 DATA lB/08I73 JOSE

360 DATA 23/03/6'9 PA:ULD 370 DATA 07/05/53 OSV~LDC~ 380 DATA 3.1/10158ANTENOR 390 DATA t9/02/41 MARCOS 400 DRTR 26/10/70 AM~URI 410 DATR 15/05/40 PORCINA 420 DATA 20/09/30 MALTA 430 DATf=I 09/11/45 FABIO 440 DATA 14/02/47 MATILDE 450 DATA 30/03/59 ISABEL 460 DATA 24/12/43 RRTHUR 470 DATA 13/08/13 ASTROMAR 480 DATR 99/99/99 ZZZZZ 490 DIM X$ (200)

500 FOR I ~ 1 TO 200 51,0 READ X$(I)

520 IF MID$ (X"$(I,),1,2) = 1i9911 THEN 540 530 NEXT I

540 CTR ~ I

550 CLS

Jogos e Program.as Praticos 43

56,0 PRINT
570 PHINT
580 IPFilNT
590 PRINT
6.00 PRINT
610 PRINT
620 F'F1 I NT
6::':~O PRINT "************************************** II

"* n* PH<

u* "* "* !'*

ANIVERSARIOS NO MEB

*.i ){("

>1<"

*" >k"

*11 *11

(13 - TOPOS OS MESES)

b40 F'F~ I NT ~, * (A -At>:! I VERSf~R I RNTES Et1 ORDEM) *"

650 PR I NT ,j *- * II

6.60 PRINT "* (FII'1= FINAL 00 PROGRAMA) *"

670 PRINT "* *"

b80 PRINT "* *"

6~O PR INT n ****************'********************** II 700 PR I NT·~ F'R I NT: PR I NT

710 INPUT ilSE2LECAO ";5$

720 I r-S$ == II A" THEN 1150

730 IF S$ ::: ., F" I M U THEN 11180

740 S 1 $ :-.: M I 0$ (S$ , 1 , 1 )

750 92$ eJ M I D$ (S$ ; 2 , 1 )

7bO IF Sl$ < "10" THEf.,j 550 770 IF 81$ > "9" THEN 550

780 IF 32$ < 11 0 IA THEN 550

790 [F 82$ } "9'1 THEN 550 SUO M$ :: S 1$ + 82$,

81 0 Prt~-3S, ::::: 0

820 IF LiC:N (r1$) 0 2 THEN 5eiO 83.0 SW'$ ~ II N ..

640 PASS !!!: F'f~SS+ 1 850 CLS

860 PRINT

870 P'R.1 NT II REAL I ZANDO 0 SORT: ";F'ASS S80 PCR I ::: 1. TO CTR-1

890. IF MID$(X,:$(I),1~5) (::;:: MID$(X$(I+.1},1,5) THEN 940 900 V$, ::::: Xii ( I )

91 0 X$ ( I) ;;;;; X$,( I ",. 1 ) 920 X $ (I ... 1) := Y $

930 SiW-$, .::.:! II S I,

940 NEx,r 1

9510 IF SW$ :::: liBi; tHEN [~30 960 ex ::: 0

970 PRINT

980 I NFlU'" II H1PH H11R (SIN) u;; J SN$ 990 FOR I == 1 TO C TR

1000 IF M$ = 1113'" THE:N 10.20

44 MSX - Methores Programas

1010 IF MIC.CX$(I},4,2) () M$ THEN 1110 10:20 I F I SN$ == I'S" THEN 1 050

1 O:iO PR I NT X$ ( I)

10(JO IF lSN$ 0 1'811 THEN 1060 1050 LPRINT X.(I)

1060 ex ~ CX1-1

1070 IF ex ( 20 THEN 11jO lOBO ex == 0

1090 PRINT

1 i 00 I NPUT II PRESS loNE RETURN PARA CONT I NUAR I,; E$ 1 ill 0 NEXT I

1120 PI~rNT

1, :t 30 II'':PUT II pnESS lONE F(ETURN PARA CONT I NUAR II; E$ 1140 GOTO 550

1150 PASS:::: 0

1 1 60 SW$ "'" ,. N "

1170 PASS = PAS8+1

1180 CLS

1190 PRINT

1.200 PRINT "RE~~LI2:ANDO 0 SORT: ";F'ASS 1210 FOR I ~ 1 to CTR-l

122-0 51$ =MID$ (X$(I),10)

1230 52$ ~ MID$(X$(I+l) ,10)

1240 IF 81$ ( 82. THEN 1290

1250 SW* == '"S'I

1260 Y$ =: X'$(I)

1270 X$(Il = X$(I+l) 1280 X$(I+l) == Y$ 1290 NEXT ,I

1300 IF 5W'!i == >15l1 THEN 1160 1310 ex = 0

13~~O PRINT

1330 INPUT 01 H1PE:IMIR (SIN) "; ISN$ 1340 FOR I = 1 TO CTR

13~50 IF lSN$ :::: 118" THEN .1380 1 :~60 PRINT X$ (I)

1:370 IF lSN$ o "8" THEN 1390- 1380 LPRINT X$CI)

1:::::90 ex :0: CX+i

1400 IF ex ( 20 THEN 1440 1410 ex == 0

1420 PRINT

14:::~O I NPUT II FJRt::SS I ONE HETURN PARA CO NT I t.jut~H 1440 NEXT I

.

.. ;E$

1450 PFHNT

Jogos e Programas Praticos 45

1460 r NPlIT "PRES 1 ONE RETURN PARA CONT I NU~1R II:; E$ 1470 GOTO 550

1480 CL8 ; END

01;'01/37 CLAUDINA 01/05/29 ELIO

O~jfOi 171 RUBERTO 03/05/59 WILSON OJ/05/56 TONY 05/19/65 JOAD 06/22/e7 PEDRO 07/05/57 CRISTINA 07/05/53 OSVALDO ~/04/33 AGOSTINHO 09/08/45 .DEBORR 09/09/11 PASCOALATO 09/11/45 FABIO 13/06/1:1i ASTF';OMRR 14./02/47 MATILDE HSI03/62 LUC 1 ,ANE 1'5/04/71 eRIS 151'05140 PORCINA 18/0B/73 JOSE 19/02/41. MARCOS 19/11/18, r:'INDREA zO/09/30 MHLTA 237'03/69 PAULO 23/12178 SISSI 24/02/59 NELSON 1'~/O=i/59 EL I ~~NE 24/12/4:1 ARTHUR 25/02/59 RUBEt~8 25/06/45 CHRLOS 26/10/70 AI'1AUR I 29/04/61 BI;:RNARDETE 29/05/81 ERIKA '29'108/78 HEN~IQUE 30/0~3/59 I SABEL

31/ 1 0/58 RNTENQ'R 9e;199/99 zzzzz

Figura 3. Program a Anlveraariantes: exemplo de saida do programa,

46 MSX - Me/hores Programas

o progtama BlackJac (BLAJA) permite que voce participe de uma partida de BLACKJACK.(oU Vinte-e-Um) contra 0 seu ,MSX, 0 qual age como se fossea mesa. Voce e a mesa reeebern duas cartas cada; as duas faces das suas cartas estao para cima, mas urna carta da mesa esta com a face para baixo. A medida que seus pontos esteiam abaixo de vinte-e-um, e posstvel pedir tantas cartas quanta voce queira; caso contrario voce "estoura" e perde. Ascartas de 2 a 10 tern. valores dez -10; 0 Valete, a Dama e o Rei tern valor tucada; um As tem valor 1 ou 11.. Para pedir uma carta, snnplesmente responda S a pergunta HPRES~ SlONE (8 OU NY' (linhas 790 - HOD). Voce nao precisa presstonar RETURN porque a mstrueao; INKEY$, aceita 0 caracter de uma tecta apenas.

As linhas 130 - 160 inicializam as matrtzes que rnantern registro das cartas da mesa (11:ESA), suas cartas (CARTA), os naipes (8$), e a denominacao (D$). 0 tQoP nas Iinhas 220 ~240 Ie as cartas de "A"a "K" do comando DATA na linha250 e as coloca na rnatrtz D$, Nas linhas 260 - 270t a tuncao definida pelo usuario FN I e criada para ]Jedir urna carta aleatoriamente da mesa; e dado a voce uma quantia de 100 cruzados para apostas.

No inicio de cada jogo.ras Iinhas 290 - 320 colocam ern 0 os valores de todas as cartas que a mesa e voce tinham, e as linhas330 - 350 reembaralham ascartas de modo que qualquer carta esteja disponlvel para distnbutcao. a seu total- os pontes que as cartas Irao somar ao seu escore - e colocado em 0" como as da mesa tarnbem.

A subrotma GOS UB 1.960 produz 0 cabecalho "BLACKJACK "- com asteriscos em ambos os Iados, Voce fica sabendo na Iinha 400 quanta dinheiro tern disponivel, A lmha 410 pergunta pela quantia que voce quer apostar. Para sair, digite 0 ou um numero negativo. As linhas 430 - 5-50 distribuem as quatro primeiras cartas, aleatoriamente escolhidas como 0 primelro.e 0 segundo subscrttos de CARTA e MESA: CARTA(l), C'ARTA(2), MESA(l) e MESA(,2). A funcao FN I (descrita na lmha 260) escolhe estes subscritos; as Iinhas 600 - 7'W mostram as valores das cartas, Para mostra-los, 0 programa define urn valor para a vanavel CARTNO (de 1 a 52) para carta selecionada; a subrotina. nas lmhas 1.270 - 1.360 obtern 0 naipe e a denominacao correta, As cartas sao entao mostradas, masa segunda carta da mesa e deixada de face para baixo (repre .. sent ada pelos dois pontes de mterrogacao). Na linha 7801 e dado 0 valor 2 a variavel PART de modo que a proxima jogada que voce ficar sera com a carta numero 3,. e assim par diante.

As Iinhas 790 - 800 perguntarn se voce quer outra carta, As lmhas 850 - 890' procuram outra carta, e 0 cornando GOSUB da Iinha 1.370 calcula seu escore total, A hnha 900 entao verifica para ver se voce "estourou", neste caso 0 programa salta para a Iinha 1.030 para dizer que voce perdeu e mostra 0 seu escore, Neste ponte, voce pede tanto pressionar 1 para fmalizar ou qualquer outra tecla para conttnuar (linhas 1.100 -1.110). Se escolher parar, as Iinhas 920-

Jogos e Program.as Praticos 47'

l.010 permitern a mesa {o computador) pedir cartas ate ela ter ganho OU estouradu, A subrctina GOSUB 1.660 na linha 930 obtem os valores das cartas pedldas e mcstra-as na tela. As linhas 1.020 - 1.250 novamente rnostram as mensagens do vencedor ou perdedor, e passam 0 controle dalinha 1.140 de volta para a lmhu 290 para 0 proximo jogo, Experimente. :IE urn jogo para tad-as as id.ad~s!

1Q REM ******************)f(****

20 REr1 :1< >I<

30 REM 40 REM So REM ~O REM 70 REM 80 R61M 90 REM:

100 REM ***********************

110 :KEY OFF

120 CLS

iso IBM MESA (20) 140 DIM CARTA (20) 150 DJM S.$ (4)

160 D,IM Dill (13)

170' REM lAS CARTAS SAO ~ iso REM 0 ::::: PAU,S

190 REM 1 = .aUROS

200 REM :2 ::::: COPAS

210 REM 3 - ESPADAS

220 FOR I ~1 TO 13

230 READ D$ ( I )

240 NE;XT 1

250 OATA A. 2 , 3. ;, 4, , 5., 6 it 7 ~ 8 , 9 , 10 ", J '" Q ,,~,\ 260 DEF FN rex) = INT{RND(X)*~2)+1 270 APT :c: 100

280 D U1 .DRWN ( 52)

:290 F'OR I == 0 TO 20 300 MESA ( I) .:::: 0

3110 CARTA(I) 'll!l 0

* BLACh Jf;lCh *
»< *
* DIREITOS AUTORAIS *
* *
* NELSON ALVES *
>I< *
* * 460 DRWN(CARTA(l» = 1

48 MSX - Melhores .Programas

320 NEXT I

330 FOR I = 1 TD 52 340 DRWN' I) .~ 0

350 NEXT I

360 JOG = 0: VOCE - 0 370 CLS

380 fiOSUB 1960 3·90 LOCATE 1, :~.)

400 PH r NT "0 VALOR DA APOSTA E DE: ",; APT

l110 PR I NT • INPUT U VOCE :QUEF; APOSTAR (0 F I t-jAL I ZA ) "; AJO~ 420 IF AJOG ( 1 OR AJOG ) APT THEN 1990

tI.::t0 REI"'! *** PF: I ME' 1 R.AS 4 CARTAS ***

440 CRRTA(1) ~ FN 1(1)

450 IF DRWNCCARTA(l» == 1 THEN 440

470 CARTA(2) = FN lCl)

4S0 IF DRWNCCARTA(2» = 1 THEN 470 490 DRWN(CARTAC2)) = 1

500 MESA(l) = FN 1(1)

510 IF DRWNCMESA(l» ~ 1 THEN 500 520 DRWN(MESA(l» = 1

530 MESA(2) = FN 1(1)

540 IF DRWN(MESA(2» = 1 THEN 530 550 DRWN(MESA(2).) == 1

5~0 REM *** MDSTRA AS CART AS *** .570 CLS

'5 80 GOSUE:~ 1 q 5.0

590 CARTNO = MESA(1)

600 REI"! *** MOSTRA D VALOR DA CART~~ *** 610 GOSUB 1270

6-20 LOCATE 1,5

6~O PH I NT II MESA ,j

640 LOCATE: 8, ~j

650 PRINT DI8P$

660 LOCATE 12,5

670 PRINT u~"7'"

680 CARTNO • CARTA(l) 6>90 GOSUB 1270

700 LOCATE 1,8

710 F'R'INT uVOCE,j

720 LDCATE: 8,8

730 PRINT DISP$

740 CARTNO ~ CARTA(2) '750 GOSUB 1270

760 LOCATE 12,8

Jogos e Programas Pridicos 49

77Q PRINT DISP$ 7BO F'ART = 2

790 LOC-ATE 5'1 20

BOO F'RINT !'F'RESS10NE (S au N) II 810 K$, :;: INKEV$

820 IF .{$ == II II THEN 810

930 IF K$ <} 1'1 SJI THEN GOSUB 1370

840 IF K$· o ~'S" THEN 920

850 PART = PART+l

860 CARTA(PART) ~ FN 1(1)

870 IF DRWN(CARTA(PART)) ~ 1 THEN 860 880 DRWN(CARTA(PART» ~ 1

890 GOSUB 1370

900 IF ElUST$ == !'S" THEN 1020 910 GDTO 790

9'20 PART :: 2

930 GOSUB lb60

940 IF BD$ ... 1'8'! THEN 11 '90 950 IF VOCE = 21 THEN 1150

960 IF JOG )= VOCE AND JOG () 0 THEN 1230 970 PART = PART+l

980 MESA(PART) = FN 1(1)

990 IF DRWNCMESRCPART» ~ 1 THEN 980 1000 DRWN(MESA(PART» ~ 1

1.010 60T0930

1'02.0 1030 1·040 1050 1.060 1070 1080 1090 11.00 1110

LOCATE 1,15

PRINT; PRr~T; PRINT ~VOCE PERDEU APT = APT - AJOG

PRtNT:PRINT

PRINT "MESA: U;JOG;SPC(5) (UVOCE:G IF APT} 0 THEN 1100

I I I!

'I ~ VOCE

FOR I = 1 TO 2000=NEXT Il GOTO 1990

CLS: LOCATE 0,10: PRINT ~'O JOGOACABOU, POlS VOCE PRINT: PR!NT "RETURN = CONTINUA·R, 1 ::: F'ARAR'I

K$ == IN~{EY$

1120 IF K$ ;c: "'I THEN 1110 1130 IF K$ :;;; .II 1 II THEN 1990 1140 GOTO 290

.1150 LOCATE 1 ,15

1160 FR I NT II VOCE GA~-lHOU - V I NTE-E .... UM !! ~ ! •• ; CHR$ (7) 1170 A~T ~ APT + RJOG

1180 GOTO 1050

1190. LOCATE 1,15

1200 PRI NT' II VOCE GANHOU -- A ME:SA ESTOUROU ! 01 ; CHR$ (7) 1210 APT. APT + RJOG

50 MSX - Me/hares Programas

1

j

1

1

1

1

1

1

1

j

1

1

1 j

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

1220 GOTO 1050 1230 LOCATE 1,15

1240 F'R I NT I'VOCE PERDEU -- Ct~RTA MENOR au I GUAL I" 1250 GOTD 1040

1260 REM *** LE CARTA E DENOMINACAO *** 1270 NAIPE = INTCCARTNO/13)

1280 IF CARTNO = 13*NAIPE THEN NAIPE = NAIPE-l: 82 = NAIPE 1290 DENOM = CARTNO - ~NAIPE*13)

1300 ON NAIPE+l GOTO 1310,132011330,1340 1:::HO S$ ~ "PI!: GOTO 1350

1~'::20 S$ z OJ 0 ": GOTO 1350

1330 S$ = "e": GO"rO 1350

1340 S$ >;:: "E"

1350 DISP$ ;;:: O${t)ENOM)+S$ 1360 RETURN

13,70 Y 1 := 0

1380AZ :J:: 0

1390 Y2 := 0

1400 FOR I =1 TO 20

idlO IF CARTA(I) = 0 THEN 1580 1420 NAIPE = INT(CARTA(Il/13)

1430 IF CARTA(I) :::; l3>1<NAIPE THEN NAIPE: - NAIPE-l; 82 -- NAIPE 1440 DENOM = CARTA'I) - (NAIPE*13)

1450 ON NAIPE GOTO 1460,1470,1480,1490

14l.,O 5.$ :::t "F"~II,: GDTO 1500

1470 S$ ,." hO": GOTO 1500

1480 S$ =: "Cn:. GOTO 1500

1 490 S$ - II E I,'

1500 nrSP$ = D$CDENOM)+S$

1510 IF DENOM } 10 THEN DENOM ~ 10

1520 IF DENOM = 1 AND AZ m 0 THEN Y2 ::::: Y2+11

1530 IF' DENDM ::::: 1 AND AZ :;:: 1 THEN V2 :.:: Y2 -j. DENOM 154·0 1 F DENOM o 1 THEN Y2 - Y2 -1- DEr.JOM

1550 IF DENOM = 1 AND AZ = 0 TH~N A2 = 1

1~60 VI = Vi + DENOM

1570 NEXT 1

1580 BUSTS: CHR$(32)

1590 IF v i > 21 AND Y2 } 21 THEN BUS'r$ 0; "S" 1600 VOCE == Y2

1610 IF VOCE} 21 THEN VOCE = VI

1620 CARTNO::::: CARTACPART): GOSUe 1270 1630 LOCATE 8+4*(PART-l) ,8

1640 PRINT DISF"$

1650 RETURN

1660 REM *** A MESA JOGA ***

Jogos e Program as Pr,atico8

51

1~70 D1 ._ 0 1680 ·AZ ::= 0 1690 D2 :::l a

1700 FOR I ,,;:; 1 TO ;;!.O

171'0 IF MESA (I) = 0 THEN 1880 172{l, NAI PE ;;:: I t·.rr (MESf:) ( l) /'13)

1730 IF MESA (I) .; 13*NAIPE THEN NAIPE = N~~IPE-l a 82 = 17dO DENOM == t1ESA ( I) ,_ (NAIPE* 13)

l~O ON NRIPE+l GDTO 1760,1770,1780,1790 1760 S$ = II F·II! GOTO 1800

1770 S$ = ';011; GOTO 1800

1780 S$ - .1 ell: GOTQ .1 BOO

1790 8$ == IIE"

1900 DISP$ == D$, (DENOM) + S$,

1810 IF DENOM > 10 THEN DENOM .." 1 0

18,20 IF DE:NOM := 1 AND AZ = () THEN D2 i:l: D2 11

18,30 IF DENOM = 1 AND AZ == 1 THEN '02 = D2 DENDM

lS40 IF DEtJON 0 1 THEN D2 - n;f -I- DENOM

185Q IF DENOM = i AND AZ = 0 THEN AZ 1;;<; 1

I~O D1 = D1 + DENOM

1870 NEXT I

p~ 18.80 8.D$, == CHR$ < 32)

1890 IF 0.1 } 21 ~ND D2 } 21 THEN BD$ - liS!' 1900 JOG == D2

1910 IF JOG > 2l THEN JOG l:!X D 1

192Q CART NO == MESA (PART):: GOSUB 1270 i 9'30 LOCATE 8+4:»< (P'=lR T -1 ) ,5

19a.O PRINT DISP$

1950 RETURN

NAIPE;:

E

1960 LOCATE ;;:~.:2

~q70 PRINT "* * * * * BLAC~{ JACI"':: * * )« * *n 1980 ,RETURN

1'990 CL8:END

52 MSX - Melhores Pro gram as

DADOS

o prograrna D~4os (JOGO) eum jogo feito para ate 10 [ogadores. As regras sao multo simples: todos osjogadores Iniciam com urn mont ante de 100 cruzados ou pontos (linhas 380 - 400). No inicio do programa, a limite da casa e acertado para qualquer aposta; caso contrario, perdedores podem continuar apostando cada vez mais ate finalmente ganharem urna partida.

o prlmeiro jogador faa sua aposta e rola os dados. Se a primeirajogada for urn 7 ou um 11 j este j ogador ganha e 0 proximo jogador tern a sua vez. Se a prirneira jogada for urn 2, urn 3, au urn 12~ 0 jogador perde. Caso contrano, 0 total da pnmetra jogada torna-se os pontes do jogador. Ele joga continuamente ate obter os pontes ou tirar um 7 e perder,

Os escores sao mantidos na matriz S, a qual e definida na ltnha 120 .. 0 ajuste de K para "N" na Iinha 130 faz com que 0 programa deseonstdere os escores dos jogadores (de umjogo anterior, por exernplo). 0 "NO> DE MISTURADAS DESEJADO" caracterlzado na Iinha 690 sempre garante que ninguem sera capaz de predeterminar a saida dos dados rolados consistenternente. Voce pode misturaros dadosern suamao qualquer numero de vezes: mas.obviamente, isto nao deve ser feito um nurnero multo grande de vezes.

As ltnhas 150 - 290 fornecern uma breve descrieao na tela, de como 0 jogo tunciona. Se voce ja esta familiarizado com as instrueoes, pede pressionar RETURN para prosseguir, As linhas 3·00 - 400 entao realizam certas rotmas de inicializac;ao (prccessamento de dados para mieiahzacao de variaveis de Inicto de programa). Voce po de tnictalizar 0 limite de apostas damesa, 0 numero de [ogadores, e 0 nurnero de partidas que cadajogador tera, Quando este limite for attngldo, 0 jogo termina: mas voce pede escolher jogar novamente, Po de tambern manter as escores dosjogos anteriores respondendo S para a pergunta da linha 1.000 (a qual eoloca a variavel K em fjsn).·

As ltnhas 410 - 940 contem urn grande loop que e executado tantas vezes quanta o numero de partidas que foi selecionado, Comele, 0 loop .'FOR-NEXT das llnhas 420 - 930 deixa cada jogador ter asua vez durante cada partida. Na linha 430; CTR (representando 0 numero de jogadas feitas) e a variavel ULT sao colocadas em o. A varia-vel ULT; que represerrta 0 pontelfo do escore que voce esta tentando igualar, e ajustada para 0 valor da sua prime ira jogada (linha 870).

Durante a tempo em que 0 primeirojogadorestiverjogando, 0 programasaltara para alinha430para deixar o jogador jogar no vamen te os dado's. Neste caso, se voce nao 0 btrver uma vitoria nem for derrotado na prtmeira jogada, a linha 900 saltara para a linha 44.0 para a sua segunda tentative. Do mesmomodo, se voce nao conseguir seus pontes e nao tirar urn sete, alinha 840 retornara para a linha 440 para a sua proxima jogada, Voce deve jogar ate ganhar ou perder.

As linhas 540 - 680 perguntam pela aposta de cada jogador - que nao pode exceder 0 limite da mesa - eavisa se 0 [ogador nEW tern bastante dinheiro ou

Jogos e Programas Pridicos .53

pontes para cobrir a aposta (ernbora a aposta seja acelta de qualquer forma); A seguir 0 programa pergunta quantas vezes voce quer misturar os dados, Seus dados sao rolados nas Iinhas 710 ~ 1740, e a subrotina chamada da Iinha 760 imprtme os numeros que sairarn, Se esta for a primeira jogada rdeterminada pelo valor de CTR), a linha 770 saltara para a linha 850 para uma logiea especial para a primeira jogada, Na segunda.jogacia e assim sueessivamente, as hnhas 780- 840 determtnam se voce ganhou atraves dos pontes ainha 780), perdeu tirando urn 7 (linha 790), OU deve jogar novamente (linha 810). Na pnmeira jogada, as linhas 850 e 860 dao a voce a vitoria ou a derrota, en quanta a linha 870 da 0 total des seus dados (DT) para ULT '(0 ponteiro que indica que voc;e deve jogar). A cada vez que alguem [ogar, a retina nas Iinhas 1.030 - 1.180 imprimtrao as quantidades de dinheiro ou pontes restantes para cadajogador, Estas quantldades sao tambem mostradas no final do programa. (Veja Iinhas

520 e 960). ,-

:10 REM
20 REM
"0 REM
.... 1· ..
40 REM
50 REM
cO REM ****-******************-*

* *

* JOGO *

* *

* DIREITOS AUTORAIS *

* *

70 REt'! * NELSON ALVES *

80 REM * *

90 REt1 * *

100 REM *********************** 110 KEY OFF

12'0 DIM 8(10)

i30 ~\$ == "Nil

i40 CLS

150 LOCATE 13'\1 '5

160 PRINT 11*** JOGO ***" 170 PRINT

180 F'IRI NT'" ESTE SOGO PODE TER ATE 10 JOGADORES. Ji 190 PR!NT liEU? E BASEADO NO JOGO r,EAL DE [)ADDS" " 200 PF.:INT "VOCE PODE JOG~~R QUANTAS VE"ZES QUISER, II 210 PR.INT "0 JOGADOR GANHA BE E:LE TIRAR UM '7 DUll ~Z0 PRINT "UM 11 NA PRH1EIRA JOGADA."

230 PRINT "SE TIRAR UM 2, 3 OU 12 NA PRIMEIRA"

240 PR I NT II J' DG·ADA , ELE F'ERDE. QUALQUER OUTRD "

250 F'RINT liND. NA PRIMEIRA JOGADA E I] PONTO QUE U 260 PRINT uELE DEVI.E TIRAR NOVAMENTE RNTES DE "

2'70 PRINT II"TIRAR UM 7' .. "

~BO LCJC:A.TE 0,23

54 MSX - Me/hares ProgfsmaS

290 INPUT uPREs'SIONE: RE1"UF<N PARA CQNTINUf;;jR II ;X$ 300 tlS

310 LOCATE 0.,5

;:';l20 r NPUT "LIMITE DE IAPOSTADA C(4SA II, LUIf-l T 330 P-RI.NT

340 INPUT "NUMERO DE JOGA-QORES i.l; Nl. 350 PRINT

360 INPUT "NUI'1E'RO DE JQGADAS "; Rl 370 IF K$ =0. II S ,. THEN 41. ()

·380 FOR J ~ 1. TO Nl

390 SCI) = lOO

400 NEXT I

410 FOR PART ~ 1 TO Rl 420 FOR JOG ~ 1 TO Nl 430 eTR - 01 ULT ~ 0 440 CTR = CTR + 1

450 CLS

4-60 F'RI NT ;, JOGi,ADA .. ~. I!; PART 470 PF~!Nr j'JOGADDR ND~ u~JD;G

1180 PR I NT Ii ROLCJU n J SF'C (1) ~ CTR; SPC < 1) .'! VE:z (ES) " 4'90 IF eTR ;;):"' 1 THE.N 5.10

500 PFl: I NT U PONTO TIRADO.: ":; UL T 510 ,PRINT

520 GO-SUB 1030

530 IF eTR {> 1 THEN 680 540 LOCATE .0,10

550 INPUT '! VAL.ORDAAPOSTR II; VPT 560 IF VPT (= LIMIT THEN 640

570 PRINT "0 LIMITE DR CASA E CZ$ ";LIMIT 580 F'RII~~T: INPUT "F'RES8JONE RETURN II n~$ 590 LOCATE 0,10

600 FOR I = 1 TO 3

610 PRINT SPC(S3)

620 NE){T 1

630 GDT(J 540

640 I.F AMT (~ 8(JOG) THEN 680 650 LOCATE 0,10

660 PRINT "VOCE TEN SOM-ENTE Cz$ "';8(J.QG~ 670 F'RINT: INPUT "PRESS I ONE R'ETURN Ii ;X$ 680 LOCATE 0,1.2

690 PRINT: INPUT "NO .. DE Ml8TURADAS nE6:E.JBDO u;SH 700 IF SH { 1 YHEN SH == 1

710 FOR J = .1 TO SH

720 D1 - INT(6*RND(I)+1 730 02 c INT(6*~ND(i»+1

Jogos e Programas Praticos 55

740 NEXT J

750 D1 ~ D 1 + D;2 760 GOSUB 1 180

770 iF eTR ,~ 1 THEN 850

78,0 IF' DT=UL T THEN LOCATE 20, 15:; F'R I NT II VIJCE GANHOU! II ; CHR4d7) :S(JO(;)=S(JOG)+VF"T:Goto 910

790 IF' DT=7 THEN LOCATE 20, 15: PR I NT ,,' VOCE PERDEU ~ ,,' ~

CHR$,(7}:S(JOGl=SCJOGl-VPT:GOTO 910 B00 LOCATE 0, 1,5

810 F'RI NT II TE:NTE: NOVAMENTE:, 8EU PONTO Ell; ULT 820 LOCATE 1.5,20

830 INPUT II PRESS ION'.E: RETURN 11;;($ Sil.O GOTD 440

8,50 IF DT;;;::7 OR D1=11 THEN LOCATE 20,15;F'RINT >lVOCE VENCEU ~ "; CHR$(7)IS(JDG)=S(JOG)+VPT:GOTO 910

esc IF OT::::12 OR DT=3 OR DT~ 12- 'THEN LO,Cf~TE 20, 15':

PRINT "VdCE PERDEU ~ u ; CHR$ (7) : S ('JOG) =8 (JOG) -VFT'= GOTO 910 870 UL T ;;:; DT

BSO LOCATE: 1. 5,20

990. INPUT "PRESSlONE RErrURN II; X$ 900. GOTD 440

910 LOCATE 15,20

920 INPUT iiPRESSIONE RETURN II;X$ 930 NEXT J05

~40 NEXT PAf:;;T

95{) CLS

%0 Gfl'SUB 1 03'0 970 LOCATE 0, 15

QSO INPUT IIJOGAR NOVAMENTE (SIN) II; 18$ 990 IF 18$ ;;::: "N'~ THEN 102.0

1000 INPUT "MANTER A APQS~rA (SIN) II H<$ IOlQ GOTD 140

1020 C:L'S ::ENP

1030 PRINT !'D!NHEIRO RESTANTE: II; 1040 PRINT

10M FOR r =:: 1 TO l~

1060 IF I> N1 THEN 1170

1070 PRINT 11# 'i ; I ; SPC (1) ; "-GZ$U ;,8 (I) ; SF'C (2) ; CHR$ (207) ; 080 NEXT I

lOttO FOR I = 5 TO 8

llO'o IF I } N1 THEN 1170

1110 PRINT i'#"; I ;SF'C (1) ;: "CZ$I,; S (I)-; S:F'C C;O ;CHRt. (207) ; 1120 NE .. XT I

Il'jO Fo.R I=:9 TO 10

1140 IF I > N 1 THEN 11 70

56 MSX ~ Me/hores Program.as

1150 PRr~.JT "# n; I. SPC (1) ; "Cz$ u:; S (I >; SPC(2) ; CHR$ (207)'; 1160 NEXT I

1170 RETURN

1180 PRINT

1 190 P R I NT D 1 ; SPC ( 1 ) :; .. ,.,.. II ; S PC ( 1 ) ; D2 ; spt ( 1 ) ;; "::::;" ; SPC ( 1 ) I Dr 1200 RETURN

Jogos e Programas Prilt.icos 57

101lI'Ogrlnna DESENHO (DESENHO) permite usaf blocos OU asteriscos para qualquer figura OU diagrama que q ueiramos na tela. Se voce primeiro o layout de sua ngura ou grMico no papel, preenchendo alguns pontes

t.aetJKan(lo. outros em branco, pode entao duplica-lo na tela.

figura pode ter ate 201inhas (para ctma e para baixo) e 30 colunas de .... ".k~ ... tstraves da 4:1a), A Unha 150 pergunta se voce quer-usar bloeos au .. ~rDI·"'n. para desenhar 0 seu dtagrama: voce deve responder com "*'1 ou B.

voce precisa dizer ao seu computador MSX que colunasem cada linha preenehidas. 0 programs Imctara com a LINHA 1 e a COLUNA 1. Voce

digitar a prime ira coluna tum numero entre 1 e 30) na qual voce quer urn J\segu1rvoce e perguntado pela LINHA 1, POSICAo 2, para a qual voce a segunda coluna onde quer urn ctrculo. Este processo e repetido para a 1 ate que voce dig1te 0 (zero) para avanear para a proxima Iinha, 998. o programa, au 999 para desenhar a figura.

~V"""\lH .. o atual toma forma nas linhas 310 - 5.50 .. Voce e perguntado na linha 310 iQU8l~taS veaes quer desenhar a figura, apaga-la e entao redesenha-la, Se voce l~"IIVUW. os blocos, os comandos LOCATE da llnha 400 e 0 cornando CHR$ d.a 4l0colocarn os blocos nas Iinhas e colunas apropriadas. (Veja 0 seurnanual iIoIAU;I.l.V·.LYLU.d para maiores detalhes). OUl se voc,~ selecionar asteriscos, im_SOesnas colunas sao u tilizad as ..

~ua1lU10 e numero de repeti~oes que voce requisi tou for mostrado 1 voce podera ._ ......... 0 mesmo dlagrama (lmha 530), ou pode criar urn novo.

10 REM llolol<)IOf(**~(%)j<JI<************

20 REM * *

REM:1< DESENHO *'

40 REM )II :+<

50 REM )!C. [) I REl TOB AUTORA I S *

60 REM )I( *

70 REM * NELSON ALVES *

80 REM It *

90 REM * *

100 REM *********************** 110 KEY OFF

120 OIM X~2Q,30) 130 CLS

l40 PRINT

130 INPUT II * au B pARA 0 BLOCO II;, A$

58 MSX _, Melhores Programas

160 FOR I = 1 TO 20 170 FOR J ~ 1 TO 30

180 F',RINT IILINHA".; I; "POSICAOIP~. J

190 PR I NT il (O~AVf-ll'~CA PARA A PRDX I MA L I NHA) II 200 P,R I NT II (999=DE'SENHA 0 D I AGRhlMA) III

:210 PH I NT II (998=F H~AL DO PF,(lGRAMA) II

220 PRINT II (##:!liCOL_UNA o,A LINHR EM USa) It 23.0 1 NPUT 1\1

240 X(I,J)::::·N

250 IFN - 0 THEN 290 260 IF N ~ 999 THEN 300 270 IF N = 998 THEN 560 280 NEXT J

2·90 NE.XT I

30:0 CLS

310 I rJPUT "NO. DE Vl=.::ZES u; N2 320 N3 :::: 0

330 CLS

340 FOR I = 1 TO 20 350 FOR J = 1 TO 30

360 IF X (I ,.J) ;..,. 0 THEN 4£1.0 370 IF X(I,J) = 999 THEN 480 380 N ee X { I ., J)

;:::190 IF A$ o il B" THEN 430 400 LOCATE N,I

410 PRINT CHRS(219); 4~20 50TO 440

430 PRINT TAB (N) ; "*111; 440 NEXT J

L1.50 IF A$ := "Elli THE:N470 460 'r--RINT

470 NEXT I

480 IF A$ = UB" THEN 500 490 PRINT~ PRINT: PRINT 500 N:3 ::::: N3 of· 1

~10 IF N3 )= N2 THEN 530 520 GDTO 330

:=;30 L.OCATE: 10.,20: rNPUT "REPETJR (SIN) ";8N$ :540 IF' SN$ 'f;11 S JJ THEN 300

550 (;OTO 130

560 PRINT: PRINT: PRINT 570 CLS: END

Jogos e Pro'gramas Praticos 59

DE NUMEROS

:'DrO~:ama de Edi\lao de Nutneros (EDITOR) e urn programs bastante simples qualquemnmero digitado (por exemplo 1200050) e edtta-o, colocando e uma vtrgula para a casa dos centavos, e/ou um sinal de menos, se _ano. Por ezemplo, 0 resuttado do numero acima seria 12.000,50.

e imp{ll~tmte no que ele demonstra como voce pode obter urn ,formatado, usando urn BASIC conium que nao tern. a opeao do coPRINT USJNG. ICam..es.t:a subrotma qualquer programa pede pegar run assim cemo Nl (1l1nha 130); coloca-Io na variavel NUMED'Oinha (180); uma mascara de edicao assim comoM$ (linha 190); e obter 0 resultado pel! subrottna GOSUB 230 que realiza a subrotina na Iinha 230 ate 0

mnaD:QO RETURN ser eneontrado.

procura da dtrelta para a esquerda atraves da mascara de edicao e os dIgitos pOT numeros Cia variavel NUMED. Zeros a esquerda sao IIMnI'lP711,nt'l!l asstm como pontes desneeessanos, para obter 0 resuttado.

10 REM **lIUI<*********"**********

REM * *

30 REM II< ~D I CAD DE NUi'1EROs *

~~M * * 50 REM 1f( D I REJ T DS AU TOR~ r s *

~~M ~ •

70 REM)I( NELSON ALVES *

~~M II< *

90 REM * *

100 REM *lI<****li<**************** 110 KEY OFF

120 CL5

130 I NPUT II N.O. A 'SER ED I TjCiDD II; N 1 140 11= Nt := tNT <1'\11) THEN 1 70

150 PRINT II DE:VESER UM NUME R'O INTEl RO ! i; 160 GOlD 120

170 IF Nl ~ 9 THEN 580 190 NUMED = N 1

J90 M$ c; "XX.XXX.XXX,XX-" 200 GOSUB 230

210. PRINT 1'1$

220 GOlD 130

230 REM *** SIJElR.o-r r l'lJA DE ED r CAD ***

240 REM 11<*>1« Mfi=l.9C$ = I"'IASCARfl DE ED I CAD *** 250 R81 *** EXEI'1PUJ: xx. xxx .. XXX, xx- ***

60 flASX - Me/hores Program as

260 REM *** NUMED = No.~ PARA ED I TAR ( I KlTEI RO) *** 270 N2 = NUMED,

280 NUMED ::: ABS(NUMED) 290 LM .::: L,EN(M$}

300 NUMED$, ::;;; STR$ (NUMED) 310 LNUMED = lENCNUMED$) 320 eN = LNUMED + 1

330 FOR CYM :::: LM TO 1- STEP -.1 340 eN = eN - 1

350 IF eN " 1 THEN 5-30

360 IF MID. (MC$ ,CTM, 1) (> I'~,i! THEN 440

370 IF N2 ) 0 THEN 410

:380 MASe. =m MID$(MASC$"l,CTM-l) +"_" 390 eN :::: eN + 1

400 G-OTQ 430

410 MASC$ =: MID$ (MASC$, 1 ,CTM-l) + CHRtd32) 420 eN = eN + 1

430 GOrD :540

4,40 IF MID$ fM$, CTM, 1) - I!, II THEN 470

450 IF MID$(M$,CTM,l) ~ "_" THEN 470 460 GOTO 500

470 eN = eN + 1

480 IF CTM ~ 2 THENCN ~ eN _ 1 490 GOTQ 540

500 Ml.~MID.(M.'1,CTM-l)+MID$(NUMED.,C~~1'+

MID$(M$,CTM+l~LM-(CTM_l)_l) 510 M$ ~ Ml$

5.20 GOTO 540

530 M$=MIO$(MS,1,CTM-l)+CHR$(3Z)+

t1 r D$ { t1$ " CTM+ 1 , (Lt'i- (CTJ"1-1 ) _ j .) )

540 REM *** IMPRIMECTM;MA8C$ *** 550 REM PRINT MS1CTM,CN:STOP

560 NEXT CTM

570 RErURN

58:0 CLS: E:ND

Jogose Programas Prat;cos 61

~prOIP'anlaJogo de Dados (JOGO) perrnite que ate 10 jogadores participem. As BTl'Ill'nl1t nas linhas 250 - a90 sumanzam rapidamente as regras do jogo,

partid.a dOjogo eomeea na Jinha 560. As Iinhas 440 -510 pedem 0 nome dos .ores (especificadGs na Unha 480) a partir da matriz P$, e urn loop FOR~ (!inhas 570 -1.580) dando a vez de cadajogador, Quando todos osjog.a.do.... , ... ,,~ .... , ... legado na pnmsrra partida, 0 controle sera passado da linha 1590

a linha 560, onde 0 numero de partidas e incrementado e outro loop III omecara. Este processo continua ate um dos jogadores tel' urn igual ao numern de pontos selecionados na llnha 280.

que apes voce rnisturar os dois.dados, se escolheu misturar de novo ambos mmlUUliem uma tentativa de obter 0 do bro>. e falhou, seu escore sera zero para tentative, As linhas 600 -720, usando a seleeao de numerus aleatonos entre 6, obtem Q resultado original da jogada dos dois dados.

llnhas 840 - 1.1)20 permitem que voce jogue 0 dado 1 novamente em uma ...... '.+i~I" de obter 0 dobro e 8l linha 790 analiza se este dado ,e menor que, GU ac outro dado. Se v(]e~"ja: tern 0 dobro, mas decldtr jogar novamente, tera chance em duas d tirar 0 meSIDQ do-bro. Voce deve simplesmente respon;&rcom N na Iinba 730 ~ tiver-e dobro, (Lembre-se de que voce recebe 10 pontos p)1'qualqu r dobro cujio ponto total vezes dois e menor do que 10). As linhas ·1.250 fazem 0 mesmo _procedimento para a tentativa feita corn 0 dado 2.

Atinicacoisa sabre €ste jogo e que elenao pode set duplicdo "como esta" sern umcomputador. Para ter uma chance em duas de tirar 0 dobro com urn dado vooe necessttara de tres oportunidades para tentar igualar com 0 Dutro dado: similarmente, para tel' uma chance em tres, necessitara duas jogadas,

OomJOOO, entretanto, voce tern somente que dlzer ao programa que .deseja novamente o dadoJ ouo dadoz (linha 730), ouresponder N para declinar da .r_t •• i"ltrn Entao 0 progr.ama autcmaticamente de term in a se voce esta jogando !)dadomaiofOllQ dado menor e cemputa 0 resultado, dando a voce os Irnpares apropnados (linhas 840 e 940), Ge voce jogar novamente 0 dado menor, a llnha 840selecionara um nnmerc "randomieo" (aleatorio) entre te 3. Se 0 numero 1 for eeleclonado, voce terao dobro. A mesrna logica aplica-se para. uma chance em dua&,exceto qU€! Voc~ tern 0 resultado deurn numero "randomico" entre 1 e 2.

Seuescore sera mostrado nas linhas.l.270 - 1.510. As Jinhas 1.330 - 1.340 e 1.360 ~ U70 dao a voee 10 pontes para 0 dobra que poderia, caso contrario, fazer menos 4e 10 pontes no eseore.

ApOscadajogador ter jogado, os totals acumulativos dos jogadores serao mostrados antes da pr6~iIna. j o gada ser fei ta Uinhas l. 550 ., 1. 5 80). Se" en tren tan to. quaiquer eseore exoeder 0 escore do Jose _CPT), a linha 1.410 transferira 0 comando do programa para a linha 1.540, onde os escoresflnats sao mostrados, Boasortel

62 M5X- Melhores Program as

10 REM REM REM RI,;:M' REM REM REM REM

20

***********************

* *

* JDGO *

* *

* DIREITOS AUTORAIS *

'* »<

* NELSON ALVES $

30 40

50 60 70 90

* *

* *

*********************** OFF

90 REM 100 REM 110lKEY 120 CLS 130 LOCATE 10,0

140 PR I NT ., *** .lOGO *** fI 150 PRINT

160 INPUT uDIGI TE: Ut1 NUMERO II; X 170 DIM po (1. 0)

1 80 D 1 M P$ ( 1 0 )

190 Dl ; INT(~ND(1)*6)+1 200 D2 !C JNT tRND (X) *6) +1 210 CLS

220 1 NPU"r II NO.. DE JOGADORES (1 A 1 Q ) III; ~~J 230 IF NJ ( 1 THEN 220

240 IF NJ ) 10 THEN 220

25.0 PR I NT: I N.PUT !II ESCORE .,!; P J 260 IF PJ ( 1 THEN 250

270 REM ****************************** 280 CL9

290 F'RINT IIIESTE JOGO IPER.MITE A C.fl,DA" 300 P'RINT "JOGADClR MISTURAR OS DADC1Sii 310 F'RINT UE ENTAOI TENTAR DDDEcRO _II 320 PRINT II BE ELe:"r I RAR 0 NO. riAl OR II 330 PRINT "F"ERDE, ELE: TEM UMtl CHANCE Ii 340 P R I NiT .. EM DUAS DE T I RFtR O' DDBROI" 3~O PRiNT "- MJ")S SE G:LE TIRAR MEI"40S" 360 PR I NT :11 PER!)E. , EX I STE 1 CHANCE EM'l 3·70 PRINT 11,3 DE TI~AR 0 DOBRD ~ ~ ! u

380 REM ****************************** 390 PRINT

400 PRINT uESCORE; II

4:10 PRINT nSEM 0 DOBRO - TOTAL DOS PADOS II

4;20 PRINT u008RO -- DU\AS VEZE:S, 0 TOTAL DQS PADOS" 43.:0 PRINT uFALHOU 0 DOBRO - NENHlIM c;SCORE"

440 REM ****************************~*

Jogos e Programas Praticos 63

4SO PRINTzF'RINT~lNF'LJT II~PRESSIONE RETURN PARA CONTINUAIR II ;X- 460 FOR I = 1 rn NJ

70 ClS

BO PRINT "JOG~DOR NO. II:; I ; "NOME: .. ; 490 lNPUT Ill' ;P$ (I)

500 PO) = 0

510 NEXT I

o PART == a

530 REt1 FLr::lGtl = 0 SIGNIFICA NENHUMA TENTATIVA DE DOBRO

540 REM F~FlGO = 1 SIGNIF'ICA TENTATIVA. COM 0 DADD INFERIDR ~~M FLAGD : 2 SIGNIFICA TENTATIVA COM 0 DADO SUPERIOR ~ ~RRT = PAR T +- 1

570 FOR I = 1 TO N.J

580 CLS

590 PRINT Il *************************************** , .. 600 PRINT HPART IDA NO w II ; PART

610 PRINT i!JOI)ADOR NO. II ; I ;

~20 PR I NT SPC ( 1)' ~ II ( II ; P $ ( I ) ; ") " 630 PRINT

640 01 ~ INT{6*RND(X) )+1

650 D2 = INT <b*RND nO ) + 1 660 IF 01 (.) 0 THEN 680 670 01 =: 1

680 IF 02 o 0 THEN 700 690 D2 = 1

700 FLFlGD := 0

7JO PRINT !!DADO 1 ;;: "; D 1 ; 'SF'C (:::.: );" DADD2 ~ II ;1)2 120 PRINT

730 INPUT II JOGAR NDVAMENTE (N /1/ Z) II ~ N 1 ~~$ 740 IF N12S :::: uNu THEN 1260

750 IF Ni2t = "111 THEN 780

760 IF N12$ :::: 1!2" THEN 1630

770 GOTO 730

780 IF 01 <::: o:-~ THEN 81::0 790 FLAGO ;;: :2

gOO GQTO 930

810 FLAGD "'I 1

820 F<EM *~(~(****II<********************** 830 01 = I NT (RNo'( X) *3.) + 1

840 IF D1 :::: 1 THEN 900

a~o IF D~ = 1 THEN SSO

abO 01 :::: l}2 - 1

870 GOTD 890

SS{) D~ ::: D2 + 1 990 GOTO 1260

64 MSX ~ Melhores Programas

900 1)1 == D2 910 GOTO 1260

920 F-1'Et1 ****************************** 930 D1 = INT(RNDCX)*2)+1

940 IF Dl == 1 THEN 1000

950 IF D2 = 1 THEN 980

960 D1 .... D2 -. .1

970 GUTO 990

980 D1 ~ D2 + 1

990. 601'"0 1260

1000 D1 =: D2

1010 GOTO 1260

1020 REM **************************** 1030 IF D1 C= D2 THEN 1060

lOllO FLAGD ::;:; 2

1050 GOTO liso

lObO FLAGD :.~ 1

1070 REM ****************************

1 080 D2 ~ INT (RNO (X) *::n + 1 1090 IF D2 = 1 THEN 1150 1100 IF 01 ~ 1 THEN 1130

1 1 1 0 D.2 ~ D 1 - 1

1120 GOTO 1140

1130 D2 :::: D1 + 1

114.0 GDT01260

1150 D2 ::: D 1.

1160 GOlD 1260

1170 REM **************************** 1180 D2 = INT(RNDCX)*2)+1

1.190 IF D2 =' 1 l-HEN 1250

1200 IF Dl = 1 THEN 1230

121002 - D1 ~ 1

127::0 60TO 12-40

122c'lO D2 ~ D I + l

1240 G01'0 1260

1250 D2 := 01

1260, I F FL~)GD - 1 1~HEN 1 :::150 1270 IF FLAGD = 2 THEN 1350 1280 IF D1 () D2 THEN 1330 1290 TTL = 2*<D1+D2)

1300 IF TTL> 9 THEN 1320 1310 TTL;;::: 10

·1320 [;OTO 1410

. 1 ::L30 TTL = D 1 + D 2- 1340 GO TO 1410

J0905 e Programas Praticos 65

1350 IF 01 <> D2 THEN 1400 136:0 TTL =, 2* {D 1 +D2}

1370 IF TTL > 9 THEN 1390 1Z8:O TTL =: 10

1390 60TO 1410

1400 TTL ~ 0

1410 P(I) ;; P(Il +- TTL 1(.),20 CLS

1430 PRINT IIDADOl "",H ;D1; SPc (3) ;,IIDAD02 :;;11 ~D2

1440 PRI NT It ***************************************'~ 1450 IF P(I) }= pj THEN 1540

1460 F'RINT 11**** TOTAlS ****u

1470 F'OR' J ;; 1 TO NJ

1 aeo PR I NT "I JOGADOR' NO. 1'1 ~ ,,l ;, BPC ( 1 ) ; P$ (J') ;' TAB (23) ; P (J) 1490 NE_XT J

1500 PRINT

le1a INPUT ;'PRESSIONE RETURN P,AR,A CONTINU(")R II ;X$ 1520 NEXT 1

1:'30 GOTD 560

1540 CLS

1'550 PRINT h**** ESCOf(E FINAL ****u 15AOFOR J ::;; 1 TO NJ

1570 PRINT II JOG,ADOf': NO. "I;JiSPC(1) ;P$(~J) ;1'A.8(23) ;F'(J) 1590 NEXT J

1590 PRINT

1&'00 INPUT IIJ'OGRR NOVAMEN1"E (SJr,D "; SN$ 1610 .IF SN$ = Ii S I, THEN 210

1620 CLS: ,END

66 MSX - Me/hores Pro,gramas

JOGO ,DOS, NOMERDS

Oprograma Jogo dos Nilmeros (CHUTE) permite que ate 10 jogadores partici· pem dele. 0 eomando DIM: nas linhas 120 -150 define cinco matrizes. A v3.Iiavel

NUM representa 0 numero randomico que cadajogador deve dlgitarem cada partida. As variaveis CHUTE e ALBA$ sao matrlzes bi-dimenslonais que man' tern 0 registre de todos as numeros digitados por cada jogador e determlnam se (OU nao) cada numero e maior que: au menor que <> ou <> 0 numero que o [ogador colocou. A variavel SC mantem 0 registro do escore atual de e-ada, jogador. Cada tentativa soma 1 ao eseore; 0 menor escore ganha, Em cada partida, a vartavet GOTIT$ diz ao programa se qualquer jogador ainda nao digitou algum numero. Note que no Inicio da proxima partida, a matrs GOTIT$e preenchida com espacos para todos os jogadores nas lmhas 450 - tl:80 - que, mcidentatmonte, e tambem onde 0 programs determina 0 numero ran· dornico NUM para cadajogador na partida.

Em uma tela e gerada a descricao do programa (Iinhas 180 ~ 260). As linhas 270- 380 ajustam 0 inicio das variaveis, e as linhas 90 - 310 obtem 0 numerc de jogadores (entre 1 e 10). 0 maier nnmero dispontvel que urn Iogador pode escolher (100; 200) 1.000, ou qualquer que seja a escolhaj e determtnado nas liohas 320 e 330. Ap6s os escores de todos 08 jogadores terem sides colocados em zero, as lmhas 370 e 380 selecionam 0 mimero maximo de tentativas ('''chuteS'') Ii! 0 numero de partddas (ou numeros que os jogadoes podern ehutar).

o corpo do programa consiste em tres loops FOR-NEXT nas linhas 390 - 860. A variavel i controla as partidas; J determina S8 cada jogador esta "chutando" pela prime-ira vez, segunda etc.; e K eontrola qualjogador estajogando. Quando cada partida corneea, 0 programa coloca a vanavel NUMGOTIT em zero e Imprime 0 numero de parttdas nas linhas 410 - 440. A seguir 0 loop interne deJ nas linhas 490 - 850 inieia com :l e termina com todos os [cgadores tendo "chutado" (veja linha 500) OU quando 0 maximo dado pela variavel CHUTES tiver sido alcancado por todos os jogadore.s (veja linha 490). 0 loop K. contrelae

jogador que esta chutando (linhas 550 - 840). 0 jogo e executado mais oumenos como segue:

Partida 1 inicia

.rogador 1 da 0 seu primeiro chute Jogador 2 da 0 seu primeiro chute

Desde que 0 numero de jogadores indicados tenha sido so mente dols, Jogador 1 chuta pela segunda vez

Jogador 2 chuta pela segunda vez

E.: assim par diante ... ate ambos os jogadores terem chutado au atingido a limite

Partida 2inicia

E assim POl' diante ... ate 0 nurnero de partidas soncrtado.

A linha ,500 verifica se todos osjogadores ehutaram seus numeros; se positivo,o

Jogos e Program as PratJcos 67

controle passa para a Iinha 860 para a proxima partida. Paratodas as partidas a subrotina na linha 880 imprirne a escore de todos as jogadores. 0' numero da partida, nurnero chutado, numero do j.ogador e escore sao mostrados a cada vez que umjogador chuta um numero (linhas 570 - 600). As linhas 620 - 640 dao urn sumario dos chutes anteriores dos jogadores, calculando se cada chute fai alto ou baixo <> ou <>, e mostra estes calculos entre parenteses, 0 [ogador chuta novamente na linha 660. Baseado em se 0 chute e alto" baixo, au correto, as Iinhas 790 - 810j 750 - 770 au 710 - 730 tomam a decisao apropriada.

No final da partida, 0 con trole retorna para a linha 270, onde voce pode come car urn novo jogo ou terminar 0 programs digitando 0 quando for perguntado pelo numero de jogadores.

1.Q ,~EM :20 R[M 30 REI"'! ,40 REM 50 REM 60 F<EM 70 R~M 80 REM 90 F~EM

i 0(') R~t'1 110 I-(EY 120 D I i'1 1.30 D I iVl 140 D B-1 150 DIM 160 Dlt1

*********************** * * * 30GO DOS NUMEROS *

* * * nIREITOS ~UTORAIS *

*'

* NELSON RLVES *

* *

* *

*********************** OFF

NUM (10)

CHUTE ( 10, 100 ) ALBA$ (10, 100) sec 10)

GOTIT$ (10)

170 CLS

180 LOCATE 8,5

190 PR I NT II *** JOGO DOS NUMEROS *** II 200 PRINT: PRINT: PRINT

:no PRINT "ES.TE JOGO F'ERMITE QUE QUALQUER NUMERO" 220 PRINT I'OE JOGADORE8 DEi A 10 CHUTEt'1 UM NCt. II 230 PRINT IIC~:~DA CHUTE ADICIONA 1 AD ESCOHE. U

2AO !=':R INT II ASS I M ,. 0 MENOR ESCORE GANHARA. II

250 PRINT

260 INPUT "F'RESSIONE RETURN PRRA CONTINUAR I!~X$ 270 CI.,..S

:aSO LOCATE 0,5

290 I NF'UT ... NUMERQ DE .JOGADORES (0 :c: F 1M) II; NJ 300 IF NJ) 10 THEN 270

68 MSX - Melhores Prog;amas

310 IF NJ ( 1 THEN 950

320 PRINT,cINPLJT !'CHUTE UM NO" DE 1 A ";CHU 330 IF CHU ( 1 THEN 950

340 FOR I ~1 TO NJ

3::=;0 Be ( 1), !i2l 0

360 NE:XT I

370 PRINT: INPUT "NO. MR.XII'I0 DE TENTATIVAS ";CHUTES 380 PRINT: INPUT "NO. DE F'ARTIDAS H~PARTS

390 FOR 1 = 1 TO PARTSS

400 RD= I

410 NUMG01IT = 0 420 CLS= LOCATE 0,5

4.30 PR I t~T "PRRT r DA NO. ,. ; RD

440 PR.I NT: I NPUT II PRESS lONE RETURN PABA CIJNT I NUHR I' ~ X$ 450 FOR J ~1 TO NJ

460 GDTIT$(J) = CHR$(32)

470 NUM(J) = INTCCHU*RND(1»+1 490 NEXT J

490 FOR J z 1 TO CHUTES

500 IF NUMGOTIT "'" NJ THEN 860 510 CLS : LOCATE 0,5

520 GOSUB 880

530 FOR K ~ 1 TO NJ

540 IF G:QTIT$ (~{) ;::: "5!! THEN 940 550 CL'S

560 L.OCATE 0,5

570 PR I NT II JOGADOR NO. II ~ ~\; ;1 (PART I DA II ; RD:; " ,TE'NTAT I VA,I!; j~ "I

580 PRINT

590 PRINT ;;E8COREi', 8CHO 600 PRINT

610 IF J = 1 THEN 650 620 FOR L - 1 TO J-l

630 FIRINT CHUTE O(,L);" (":; A:LBA1; O{,L) ; II) .. ;

640 NEXT L

650 PRINT

660 PR' INT :: INPUT II QUAL A SUA TEt;JTAT I VA'; ; G 670 CHUTE(K,J) = G

680 IF G = NUM(K) THEN 710 690 IF G ( NUMCk) THEN 750 700 IF G ) NUM(~) THEN 790

710 PRINT: PRINT nCORRETO ~!" ;CHR$ (7) ; 'IEL~ E"; G 720 60T1T$0'0 :::: ·"5"

130 NUMGOTIT ~ NUMGOTIT + 1 74.0 GOTO 820

750 PRINT: PRINT "ERRADO,";G;"E < QUE 0 SEU NUMERO"

Jogos e Programas PridJcos 69

760 SC·HO == SC 00 4- 1 7'70 AL'BR$ 0\ ,J) ~ ~I < II

"SO GOTO 820

790 PRU\it: f'R I NT I' Ef;.:RAOO 'I II; 5; ,I E ). QUE: 0 SEll NUr1ERO·1 8100 SC(K) ::!l: Be 00 + 1

910 AL8:A$ H'<" J) ~ II> II

e~o ,~'RINT

8Z0 INPUT Ij,F'RESS.IONE R.El·URN PARA CONT I NLJR,R" :j X$ 840 N'Ex.r K

850 NE:XTJ

abO N.EXT I

870 GiOTO 270 880 PRINT

890 FD~ F' :;;;: 1 TO NJ

900 PRI NT II JOGADOR NO. II ;.p; II SEU ESCORE E"; sc : P) 910 NEXT P

920 PRINT

9:30 INPUT I'F'tRESSlor.tE ENTER PARA. CONTINUAR H ~X$ 940 RETURN

950 eL8

960 END

i I

7.0 MSX - Me/hares Programas

o programs Roleta Bussa (ROLETA) perrnite que ate 20 jogadores (ou vttimas; [oguern. 0 objetivo, como voce ja deve saber, ·e ser 0 ultimo a ter a cabe-~a estourada POT uma bala,

As linhas 120 - 130 rnantem em uma matriz 0 registro das vitirnas vtvas O,U mortas e limpa a tela. A seguir 0 comando GOSUB 490 desenha os seis olltndros da arma, Um "0" (zero) representa a bala no sexto cilindro, enquanto 0 "O~' fa tetra 0) represents oS cilin.dros vazlos.

As Itnhas 170 - 190 acertarn. 0 numero de j ogadores, Se voce responder com 0, 0 pro grama pu1 a para a linha 500 e termma; caso con trarlo, a linha 200 coloca em 0 o valor de todos osjogadores na matriz PL. indicando que e les ainda estao vivos. o numero de partidas e coloeado em zero pela Iinha 140 e incrementado de 1 na llnha 2]0 .. As Imhas 220 - 480 entao permitern que cadajogador rode 0 clltndrc da arrna qualquer numero de vezes antes de atirar, As Iinhas 230 ~ 250 verificam se todos ja estao rnortos, neste caso as linhas 260 - 280 transferem 0 controls de volta para a linha 130 para outre Joso

Se urn [ogador ja foi rnorto, a Iinha 290 salta para 0 proximo [ogador. Ali ltnhas 300 - 350 entao Iimpam a tela; redesenham 0 cllmdro da anna; mostram 0 numero do jogo e jogador na linha 13~ coluna 0; e pergunta quantas veses 0 jogador quer rodar 0 cilindro. 0 numero de voltas quec jogadorescolhe determina a numero de vezes que 0 programa randomicamente selecionara os numeros de (1 a 6). 0 ultimo nurnero randnmico seleeionado representa 0 cilindro que sera disparado. Se 0 cilindro for 0 primeiro, segundo, tercetro, quarto OU quinto, a arma disparara urn CLICK ... (SORTUDO); mas se 0 sexto cilindro for seleeionado, a arma disparara a bala e explodira (hnhas 400 ~ 420). A Itnha 430 entao marcara 0 [ogador atual como morto.

o jogo continua ate que urn [ogador somente permaneca vivo OU todos estejam rnortos. Pressione CTRL C para terrninar 0 pro gr ama, como todos DS outros, a qualquer hora.

*********************** * * * ROLETA RUSSA *

* * * DIREITOB AUTORAIS *

* * * NELSON ALVES *

* *

90 REM * *

100 REM ***********************

10 REM
20 RE!""I
30 REr1
40 REM
50 REM
60 REM
70 REM
BO REM h,

Jogos e Program as Praticos 71

110 KEY OFF

120 OIM PL(20) 130 CLS

140 ,PAHT= 0

150 GOSUB 510 IbO LOCRTE 0., 11

17.0 INPUT IINO. DE JOGADORES (VITIMAS) ";r~l 180 IF N1 "'" 0 THEN 500

190 IF Nl } 20 THEN i 30

200 FOR I = 1 TO N 1 ~ PL ( I) = 0:: 'NEXT I 210 PART ::: PART + 1

2,2'0 f"aR I ~ 1 TO N 1

2JQ FOR J ::: 1 ro Nl

240 IF PL (J) = 0 THEN 290 Z:SO NE1'\ T J

260 PF;INT I.ITODOS ESTAO MORTOS t I i .~

270 PRINT: INPUT "PRESSIONE RETURN PARA CONTINURR II P;$ 280 GOTD 130

290 IF PL ( I) :::: 1 THEN 480 ~oo CLS

::; 0 BOSUB ~10 320 LOCA1-E 0, 1:3

330 PRfN:i I~P~lRTIDA ";PART

340 PRINT: F'RINT I'JOGADOR NO. 11;- I

350 PRl NT: I NPLJT II NO. De: VOL T~S DO TAf'180R II;. S 3b0 FOR Ii :; 1 TO 8+1

370 X ::: I NT (6*RND < 1 ) ) ... 1 380 NgXT k

39'0 F'Rl NT; PH I NT II TAI'1BOR NO. II :; ,X 400 IF X o 6 THEN 460

4.10 PRINT: PRINT uBANG ~ ! II ;CHR$ (7)

420 FOR L l':;il 1 TO 4: PRINT CHR$(7);: NEXT L 430 PL (I) = 1

440 PRINT: INPUT IIPRESSIONE RETURN P~R(~ ctl~~T!NUAR II; X$ 45Q GOTD 49b

460 PR I NT: PR I NT II CL I cx , ... ( SORT UDO) II

470 PRINT~· INPUT "PRESSIONE RETURN PARA CONTINUAR II ;~'<$ a80 NEXT 1

490 GOTO 210

500 CLS; E:ND

510 CLs

520 lOCATE :Ii 7.,:3 ~ PRINT 11011 5JO L()CI=ITE 19,1HPRINT "0'1 540 LOC~TE 19, t) :: PR I NT II 0 II 1550 LOCATE 1 7 ,7 : PR I NT II D I"

72 MSX - MeJhores Programa.s

560. LOCA1-E 15,6:PRINT "0" 570 LOCATE1::;h4=PRINT 1'0"

580 LOCATE O,9:PRl'NT "CILINDRO 6 (E 0) TEM UMA ~~LA,I' 590 LOC~=l TE 5, 0: PR I NT 11 R () L e: TAR U S S A II 600 RETURN

Jogo.s e Programas Praticos 73

MENSAGEM DE TELA,

o pro gram a Mensagem de Tela (TELA) permite que voce escreva mensagens na tela de forma multo faciL Duas variaeoes estao disponiveis; para repetir urna linha qualquer numero de vezes OU repetir cinco linhas tambem qualquer numero de vezes .. (Veja a Imha 140). POl' exernplo, se voce tiver que sair de casa as 16:45, e quiser deixar uma mensagem para uma pessoa de sua famiha que yhegara as 17:001 pode usar 0 programa TELA para criar uma rnensagem que preenche e limpa a tela perlodicamente.

Be voce selecionar a opcao umaImha, a tela sera preenchida com aquela linha, um caracter par vez e entao apagada a linha urn caracter por vez tambern, da direita para a esquerda e debaixo para cirna.

Aslinhas 180 - 390 geram a vartacao de umalinha; as Iinhas 430 - 980, a versao de cinco linhas. 0 comando PRINT MID$ move os earacteres, urn por vez, da serie de earacteres que voce dtgitou, como sen do a mensagem a ser mostrada.

10 REM 20 REM'

*********************** * *

MENSAGEM DE TELA

30 REM :+:

40 RE-M, :+:

50 REM :+:

i:J0 RE,M * 70 REM 80 REM 90 REM 100 RErl 110 ~'<EY 120 CI,.-S 130 F"RINT

*' *

* :1<

DIREITOS AUTDRAIS

:+: NELSON ALVES *-

* *

* *

********w-****>k********* OFF

140 INPUT "R£PETE 1 LINHA OU 5 (1/5) 11;; R$ 150 IF R$ ~ "1" THEN 180

160 IF R $, == jf 5 " THEN 430

170 GOTO 140

190 PRINT: INPUT fl·MSG II ;A$ 190 X m:: LEN(R$)

2Q) IF X ) 38 THEN 180

21() PRINT. INPUT ItNO .. DE LINHAS ";REPS ~~~0 F'RI NT ~ INPUT "NO. DE TEL.AS II; S

230 FOR K = 1 TO S

240 CLS

250 I=OR J = 1 TO REPS 260 FOR I = 1 1-0 X

74 MSX _, Melhores Programas

270 LfN = J: COL = I 280 LOCATE COL,LIN 290 PRINT MID$(RS,I,l) 300 Nt=:XT 1

310 NEXT J

32'0 FOR .J .... REF'S TO 1 STEF' -·1 330 FOR I - X TO 1 STEP -1 340 LIN = J:COL • I

350 LQC~~TE COL ~ LIN

360 PRINT CHR$(~2);

370 NEXT I

380 NEXT J

3,90 I~EXT ~'\

400 PR I I\lr ill I NF'UT II MA I S (SIN) II;: SN$ 410 IF SN$=II'SI! THEN 120

420 GQTO 1000

430 PR I NT: INPUT 1'1 MSGR I'; A$ 440 XA = LEN (A$,)

450 IF XA } 38 THEN 4·30 460 F'R I NT : INPUT II MSGB ":; B$ 470 XEI ~ LEN (Btl)

490 IF xe ) 38 THEN 460 45i'O PRI NT II NPUT "MSGC II; C$ 500 .xC ::: LEN(C$)

510 IF XC } 38 THEN 490 520 PRINT: INPUT II MSGD u ;.D$ 530 XV = LEN(D$)

54·0 IF XO } 39 'THEN 52.0 550 PRINT: INF'UT "MSGE II ;1;£$, 560 XE .;;;;: LEN (E$)

570 IF XE ) 38 THEN 550

580 PR l NT : I NPLJT II CONT I NUAR( S /1\.1) II; SNZ$ 590 IF SN2$ o 118!'1 TNEN 120

600 PRINT~INPUT II'RTRASO (O-;2000) n;oL. 6iG PRINT; INPUT IINb~ DE REPETrCOES !I ;R2 620 FDR K - 1 TO R?

6·30 Cl~,S

640 IF XA( 1 THEN 690 650 FOR I ~ 1 TO XA 660 LIN = 2; COL = I

670 LOCATE COL,LIN: PRINT MID$(A$,iI, 1.).; 680 NEXT I

690 I~ XB < 1 THEN 740 700 FOR J = 1 TO XB 710 LIN = 3: COL ~ I

Jogos e Pro'gramas Pratieos 75

no LOCAT~E COL ,l,.IN: PRINT MID.$ (B$, 1,1) ; 730 I\IE,X'T 1

740 IF' xc <1 THEN 790 750 FOR I z:; 1 TO xc

7eO LIN, :::; 4: COL == I

no LOCRTE COL,LIN: PRINT MID$(CS,I,1); 780. NEXT I

79fl IF' XD ( 1 THEN 840 800 FOR I ~ 1 TO XD 8UiLIN:! 5: COL = 1

B~'LOCATE COL,LIN: PRINT MID$(D •• I~l); 8'30 NEXr I

940 IF XE < 1 THEt.J 890 e~ FOR I =1 TO XE

~C LIN:::; 6: COL = I

87'0 LOCATE COL, LI N: PRINT Fir D'$( E$, I , 1 ) ; 88'0 NEXT I

890 'FDR I ;::: 7 TO 10 900 FOR J ~ I TO 38 ~'1 0 LIN = I: COL := J

920 LOCRTE COL ,LIN: IPR!NT "*"; 930 NEXT J

94:0 NEXT I

9~D PRINT

960 IF OL... I( 1 THEN 98'0

'lI70 FOR I ~ 1 TO DL: NEXT I -980 NEXT K

990 GOJO 400

1000 elf:; = END

Capitulo 3

PROGRAMAS EDU'CACIDNAIS E P'ESSDAIS

MADUINA DE CALCULAR

o programa Maquina de Calcular (MAQUINA) simula urna maquina de mdcu· Iar, mas so queele e murto melhor. Quando voce digtta os numeros a sel'em somados ou subtraidos, sao arrnazenados ria memoria na mesma ordemna qual voce os digitou, Voce pode reve-Ios -junto como total que esta acumulak ate este ponte - a qualquer hora e mudar ou elnrnnar qualquer entrada erro' ne a. Deste modo, a memoria do cornputador tern 0 mesmo proposrto que Q papel de urna maquma de sornar, entretanto, voce tern que subtrair e depois som.ard~ novo para arrumar urn valor digit ado erroneamente. Com 0 programa MA. QUlliA, voce pode ter uma nova Usta die numeros que foram digttados tao logo voce tenha feito as ccrrecoes.

Este prograrna nao prectsa de uma impressora.ja que ate 40 numeros podemser facilm.ente mostrados .na tela. Quando tod.as as errtradas sao chamadas, elal sao mostradas ern duas colunas. Por exemplo, se 20 numeros foram digitadolS 10 sao mostrados em cada Iado da tela, com os numeros rntulados de 1 a 10 na metade ·esquerda da tela e as rotulados de 11 a 20 na metade direita, Para corr.igir 0 item 13, responda S para a pergunta "IMPRIMIR DETALHES",A ssguir voce responde 13 ao prompt que pergunta pelo numero que voce qual corrigir e digita a adicao ou subtracao desej ada para repor a entrada lncorreta

As linhas 200 - 310 indicam os comandos que voce pode usar. Digitando INSTRUQGES. as instrucoes sao rnostradas novamente. As instrueoes sao exibidas automaticarnente na tela no mtcio do pro grama ,

A llnha 190 usa 0 comando CLS para Iimpar a tela.

Toda vez que a cursor e colocado na segunda posicao sem urn prompt anterior, voce pode fairer uma nova entrada dlgttando urn numero com ou sem 0 ponto

decimal e finalizar numero com urn + ou ~, ou urn A ou S. Urn A (para adi~-ao}e urn S (para subtracao) podem set usado s para. facili tar a entrada de uma adi~ao ou subtraeao, isto e; as letras sao mais faceis de serem achadas pelo usul1rlo, Com este metodo, voce pode digitar urn numero apos 0 outro ate visualizarum subtotal (S) OU um total (T). A diferenea entre os dcis e que 0 T autorn.atica· mente Iimpa a memoria 'e OoS totals acumulados, enquanto S mostra 0 totala~ aquele ponto, permitindo que voee continue insertndo numeros apes ver 0 subtotal, tao bern quanta fazer as correcoes neoessarias.

Os comandos LIOAR e DESLIGAR (lmpressora) servem para voce ut.ilizaro\l nao a impessora ao rnves da tela. Voee pode Iigar ou desligar a tmpressotaea qualquer ponte do pro gram a. Como mencionado ante rio rmente, entretanlO. voce pode usar este programa sem ter uma impressorae desta forma economi· zar papel,

Outra caractertsttca deste programa permite que voce tenha resultados inter· medtartos que nao tnterferem com 0 que esta armazenado na memoria. Porle·se fazer isto dlgitando-se urn numero seguido por uma / (para divisao) au urn X (para multiplicncao) e depois digttando-se RETURN. A seguir, digitando 0 numero a ser multiplicado DU di vidido, seguido par urn sinal de tgual, e di~·

Programas Educacionais e Pessoais 79

tamlo RETURN, voce tera a resposta. Par exemplo, se voce primetro digttar lOX e um RETURN, entao 10= e umRETURN terao a resposta 10. Voce pode somar ou subtrair 100 digitando 100+ ou 100- e digttando RETURN.

Voce pode ad.icionar ou sub tratr 0 mesmo nurnero repetitrvamente sem redigi·ta-lo. Apenas insira-o uma vez para ser sornado ou subtraido e digite R.ETURN para cada calculo, Por exernplo, digitando 20- e a seguir RETURN RETURN RETURN RET'URN RETURN RETURN, voce esta subtramdo 20 seis vezes. As linhs 520 - 570 ligarn a impressora (se urn tor usado) ou desligam quando voce dlgitar LIGAR OU DESLIGAR. Quando a impressora for ligada, um sinallzador sera coiocado em B (YN$ ria linha 510) OU N tlmha 550). 0 progrruna sernpre sera alertado paraexibir os dados na tmpressora Oll na tela.

AS: unhas 620 - 730 avaliarn o operador arttmetico digitado como 0 Ultimo earaeter de urn nurnero, Be 0 caracter nao for urn A, I~ X=, S, + ou P, ooperador sera considerado mvalido e uma mensagem de erro sera mostrada (linha 730).

Aslinb~s 750 - 780 avaliam 0 numero digitado antes de urn X ou uma I de modo que aslmhas 790 e 820 ou 840 provoquem exibtcao imediata do resultado da divisao na tela e/ou impressora. Do meSl110 modo, urn produto intermediarto de uma rnultrplicacao e impressa nas linhas 860 e 880.

Aslinhas900-980 acumulam o numero digitado em urn total) tanto adicao como S1Jbtra~ao, dependendo do operador final (+,-, AI OU S). A entrada e salva na matrlzde memoria E$ (lmha 1.000). Note que se umS ou um A fol digltado, urn ~ ou urn + substtturra 0 operador digit ado na memoria.

o sumotal ou total e lmpresso nas linnas 1.030 - 1.690. 0 nurnero de entrauas cQntidas na memoria ·~CTRI na linha 1.230) e dividido POl' dais para determinar quamas linhas de duas colunas devem ser mostradas ou impressas ..

oome previamentemenctonado, cada Item e claramente nurnerado de modo que qualquer entrada possa ser facllrnente Iocalizada e mcditleada. As Iinhas 1.700 - 2.020 permitem que voce efetue rnudancas ou apague as entradas, Para $ubstituir uma entradapor urna correcao, voce precisa somente digrtar urn no~ro numero apos responder a questao de rnodificacao do detalhe na linha 1.720, A entrada antiga e entao ou subtraida do total (se foi uma adicao) ou adicibnada ao total (Se foi uma subtracao), 0 numero digitado em substmucao e armazenado na rnesma Iocalizacao na matriz de memoria.

As dnhas 2.0.3,0 - 2.050 limpam a acumulador TOTAL e colocam 0 ponteiro da matns de memoria de volta em zero.

~:40 F'RINTII}j( #1 au :tt;X nIV ISt"+O OU l'1UL TIPL r CACAO *,11

250 PRINT"* ;j4;1l;;; PARA· DEf'rER 0 RESHL TADO :-I{U

260 PRINT'I>+: 8 F"ARA DBTER 0 SUBTOTAL *11

270 PRINT'I* T PI DEITER TOTAL (LIMPA MEMORIA) l-kii

28·0 PR I NT II * PARR SOMAR ISUB" f~A I RUSE +, -. , A J 2; *~I

290 PRINTII)j( LIGRR LIGAA IMPF:E8S0RA >1('11

300 PRINT il * nESL IG(-lR DESLI GA A IMpRESSOHA *11

310 PRINTU* FIM TE::HI"HNA 0 ~ROGRAMA *11

3:20 PR lNT II * >!I 'I

330 PRINTH* *I!

340 F'R I NT I, *****************>!:{******~oiO!GK**********H :350 PRINT

390 F'RH~r

370 PRINT

380 F'RINT

390 PR I NT II F'REBSI Dt.JE A LETRA C PARA COt~T Ho.IUAR

400 I F I NKEY$ = -c II THEN errro 410 ELSE !;IOTO 40:0

1,1

80 MSX - Melhotes Programas

10 Rl:!M 20 REM 30 REM

*********:1<'**********iK** * MAQUINR DE CALCULAR *

* *

40 REM * DIRE I TDSA'UTORA IS *

50 REM' * *

60 REM * NELSON ALVES *

70 REM * *

80 REM *********************** 90 REM * * 100 REr1 * SOMA 'I SUBTRAI E * 110 REM * MA"'~TEM REG!STRO DE *

120 REM * AUDITORIA *

130 REM * *

140 REM *********;.j(}jot<*********** 150 REM

160 DiM E$ (:200) 170 CTR 1 • .e; 0 190 TTL Jmt 0

190 CLS

2·00 PR I NT IJ ****************************}!<*********II 210 PRINTI!J:I< *,11

220 PRINTIla<: 230 PRINT"*

INSTRUCOES PARA UTILIZACAO

410 CLS

Programas· Educacionais e Pessoais 81

430 If A$ =: I! I NSTRUCOES"! THEN 180 '440 IF A$ ::. "FIM!I THEN 2.060

450 IF 1=1$ lll;; "S" THEN 1020

460 [F A$ - IITII THEN 1020

~70 IF A$ = n L. I GAR II THEN 500

~eQ IF A$ := IIIDESLIGAR" THEN sao ~9~ soro 580

6"00 IF SN$ ~ II S 1"1 THEN 530 510 SN$ ~ liS II

5Z0 REM ***** r MPF<ESSORA L I G.ADA ***** 530 GOTO 420

5AO IF aN$ ~ hN" THEN 570

550SN$ == 'ON II

~o ~M **** IMPRESSORA DESLIGADA **** 570 GOTO 420

580 LA== LEN (A$)

590 IF LA } 0 THEN 620 bOO A$ :: E$ (C-rR 1)

610 LA ... LE:N (A$ )

&:20 OPER$ = M I D$ (A$ , LA., 1 )

~3" IF OPERilii ~ uA'1 ~rHEN 690 640 IF OF'ER$ := II /.. THEN 750 ~50 IF" OPEF!$, "'" "XU THEN 750 i60 IF OPER$ - II == II THEN 790 670 tF OPER$ :: IISI! THEN 710 680 GOTD 720

690 ElPERs ;;;: "+.' 700 GOTD 720

71'0 OPER$ = I! ~ II

720 IF OPER$, ::: "+" OR OPER$ = II~" THEN 900

730 PRI NTIIERRO .~ ULT I MO CARACTERE DEVE SER A, S, + ,_ H 740 GOTO 420

750 NUM$ = MID$(A$,l,LA-l) 760 NA :::i: VRL ·O~UM$)

770 OA$ == OPER$

760 GOTO 420

790 NUM$ ;;;; MID$ (A$ ~ 1 ,LA.-i) 800 N;~ ::;: VAL (NUM$)

&1"0 IF OAt. ;:;= .. X" THEN 860

820 PRINT NA/NB

830 IF 5N$ 0 II 811 THEN 850 B40 LF'RINT NA/N8

850 GCHO 420

sso PRINT NA*NB

~70 IF SN$ o 'IS'! THEN 420

8,2 MSX - Methores ,Program as

880 LF'R 1 NT NA*NB 890 GOTO 420

900 NUM$· = MID$(A$,1.LA-l1 910 Nt - VALCNUM$)

920 N 1 ::;: (1 NT (N 1 * 100+. ::;) ) /100 930 IF OPER$ ~, Ii +-" THEN 960 940 TTL = TTL~Nl

950 GOTO 970

960 TTL = TTL+Nl

970 CTRl ~ CTR1+1

980 TTL = (rNT(TTL*100+.5»/l00 990 NX$ = STR$(Nl)

1000 ES<CTR1) = NX$+OPER$ 1010 50To 420

1020 IF SN$ () USI! THEN .1100 10.30 If!' PI$ p;: liS" "rHEN 1070

lOll.O LPRINT "TOTAL == ";

1050 LPRINT TTL

1060 GOiO l160

1070 LPR I NT· "S,UBTOTAL - "; 1080 LPRINT TTL

1090 50TO 1160

1100 1 F A$ :l. US'" '"HEN 114.0 1110 PRINT "TOTAL ~ u; 1120 P'R I N:T TTL

1130 GOTO 1.160

1140 PRINT uSUBTOTAL == II; 1150 PRINT TTL

1160 INPUT "I MPR 1M I R DE:·-rALHES "; I SN$ 1170 IF A$ -. "5u THEN 1190

1180 IF A$ =: I'T'" THEN 1210

1190 IF .ISNll o "S" THEN 4~20

1 200 GCn-O 12:;~O

121;0 IF" 18N$ o '!S'I THEN 20:'::;0

1220 C2 ~ 0

.1230 CA ~. CTR 1/2

1240 IF CA = INT(CR) THEN 1260 1250 CA - INT(CA)+l

1260 FOR I ~ 1 TO CA

1270 IS ~ STRSel)

1280 LI = LENCI.)

1290 IF CTR1 = 0 THEN 420 1300 12$ = 1$+"."

1310 IF SN$ () US" THEN 1510

1320 LF~RIf.JT 12$; SPCC5-LJ); E$(}};

P'fo.gfama.s fdvcacionais e Pessoais 83

1~30 l_PR INT SPC ( .is--LEN CE$ (.1 ) ) ) ; i31l0 EX == .I+CA

1350 I F I X ) crs 1 THEN 1400 1360 I;<;$ ;;::: STR$ { 1;0

1370 LX. ::: LEN ( I)($ )

1380 12$ ::::: I X$+!! _ n

1390 LP:RINT I2$; SPC(5-LX); E$(IX); l40~ LF'R I rrr

1,410 NEXT I

]420' LPR! NT

laZO IF"A$ = liS" THEN 1470 lMQ LF'R I I'~T IIjClTAL ~ II;

1450· L_PHINT "rTL

1460 GOlD 1490

1~70 LPR I NT II SUBTOTRL ;:::: ":; 1480 LPRI NT TTl.

1490 LPR I I\H!! ******.********~Oi.{********"}j(}k******H(*****11 1500 GOTO 1690

1510 PRINT 12$; SPCC:j·--LI); E$(ll; 1520 PRI NT S:PC ( 15·-LE:N (E$ ( I ) ) ) ;

1530 !-J'<;"'" I -t-GA

l~UO IF LX )- CTRl THEN 15"90 15;50 I X$ = STR$ ( r;q

15ba LX = LEN (IX$J

l57012. :;::; IX$+I! ~ II

1580 PRINT I2$; 8PC(5~L.X); E$(IX);

1599 P'RINT

1600 NE:Xl I

[61G PRINT

1~i20 IF A$ ~ 1I:8!1 THEN 1660 1630 PRI NT II TOTAL - II:;

IbAQ, PRINT TTL

Ib50 GOrO 1680

1660 PRINT IISUBTOTAL == II;.

167.0 P·R r NT TTL

uao F'R I NT" **************}\{***********************., 1~90 IF A$ = II T II THEN 2030

1700 INPUT 10 MIJDA DETALHE II; DSN$ 17"LQ IF DS.N$ < > 11811 THEN 420

1120 I NPUT I! DETnLHE #: "; DN

!7~lO 1-1= DN ) CTR 1 1"HEN :1700

1740 INPUT "NOVO VALOR ~ !!; A$

1750 LA .=:; LEN ( A$ )

I7QO IF LA ~ 0 THEN 174() ina OPER$ = MID$(A.,LR,l)

84 MSX - Melhores Program as

1780 I F npEF~$ :;;: " A" THEN 1810 1790 IF OPER$ "'" "8U THEN 18::;~O 18.00 60TO 1840

1910 OPER$ ;::; 1'.1 -fr"

1820 GO-r01840

1830 OPER$ =:; "-" OJ

1840 IF OPER$ == II 1- II OR OPER$ = "-" THEN 1870

1850 PR I NT II EHRO- UL TI.MO C~~RACTr::RE DEVE SER' A, B , 1; 1-,1 1860 GDTO 1740

1870 NUMS = MJDSCAS,l,LA-l) 1 880 N 1 ;:: VAL ( NUt1$ )

1890 LE = LEN(E$CDN)

1900 OE$ = MID$(E$(DN),LE,l) 1910 NES ~ MIO$(E$(DN),l,LE-l} 1920 NE :;; VAL<NE$)

1930 IF OE$ += .1 +" THEN 1960

1~40 TT~ = TLL+NE

19'50 60TO 1970

1960 TTL = TTL~NE

1970 IF OPER$ = "+" THEN 2000 1980 TTL == TTL-Nl

1990 GOTO 2010

2000 TTL = TTL+Nl

2010 E$(DN) = NUMS+OPER$ 2020 GOTO 1.700

2030 CT-Rl = "0

.:2040 TTL =' 0

2050 GOTO .420

:2060 CLS: END

Programas EC/ucacionais e Pessoais 85'

SUBfOlAL ==

1. 12+

2. 14+

127

6. 7.

:';~c5--· 1·23+

124-·

d, 152+

SUBTOTRL =: 127

~$:***?i'c+r* ** *** * >I< ** *.** *- * **'*** ** * *' * >I:< *** * *

SUBTOTAL ~ 1 47

1 ~ 32+

25~

14+

b. 7 ..

123+

25- 152+

124-

~U8raTAL·~ 1 4. 7 *M***********************************

TOTAL - 147

i '32+ ;,r' .-.n:::-
• oJ ~ ..:..' " .. ~.-....
2 " 1 4A'" 6 .. J. 2'3+
:; . 25- 7 ~ 1 24-
4. 1 52+ TOTAL - .~. 47

~**,**:$**********************ij{,***li<*****

Figura 4. Programa Maquina de oalcular: exemplo de saida do programa.

86 MSX - Mefhores Programas

ADIQAO/5UBTRAI;AO

o programa Adi~aoJSubtracao (ADISUB) foi desenvolvido para melhorar 11: performance na adicao e subtracao,

o programa desenha urn quadro no meio da tela (se desejado) na linha 1501. Respondendo com qualquer numero de 2 a 999 nas linhas 160 a 190~ 0 u:su3rio pode Iacilmente selecionar as faixas superior e inferior a serem somadas ou subtraidas.

Os totals das respostas corretas e incorretasencontram-se nas lmhas 220-e 230, Voce pode escolher adieao somente, subtracao somente, OU uma mistura QOs dais - selecionando randornioamente.

A rottna das Iinhas 300 - 430 desenham 0 quadro em torno do problema (se voce digitar S na Iinha 150), Urn pequeno caracter e utilizado CHR$(lS9) e repetidQ para desenhar 0 quadro.

o trace (sublmha) e us-ado para desenhar a barra abaixo da conta, asstm eemo voce faz no papel. 0 processo de selecao randornica Ierto para 0 pnmeiro e segundo nurneros e feito nas Iinhas 440 e 450. Se voce quer urn nurnero randa· mica entre 1 e 50, por exemplo, use 0 comando

10 Nl = INT(50*RND(1»)+ 1

Neste prograrna, 0 cornando INPUT da lmha 140 da urn valor para a vanavel X. Qualq uer nurnero posi ti vo como gerador c a usaa se lecao do n umero randomico:

Para evitar respostas negatlvas, 0 valor N e dado para NEG$ na nnha 120. Para mostrar a conta no meio da tela.os dois numerus sao convertidos para series de caracteres (s&ri;ngs) em NI$ e N2$ .. As lmhas 650 e 660 determinam 0 comprimento destes dais itens altanumericos (autra palavra para sene de ca racteres), Os caracteres, primeiro e segundo numeros, sao entao colocados dentro, urn digtto por vez, da vigesima posicao da tela, da direita para aesquerda.Esta movirnentacao e realizada por dois loops FOR~NEXT I que tern urn passo negative (isto e, dscrementam do cornprtmento da serle de caracteres ate 1). Ao mesmo tempo, os eornandos LOCATE nas linhas 700 e 760 causam a movtrnentacao de cada digito para a vigeslma posicao da ela, a seguu' a declma-nona e assim POl' diante nas Iinhas 9 e 8.

As lmhas 670 a 830 sao stmilares 8.:;; Iinhas 300 ~430 posicoes em que os digitosdos numeros Nl e N2 sao determinados pelas Iinhas 700 e 760. As Iinhas 790 - 840 desenham 0 operador + ou - e sublmham a conta,

Ap6s a conta ser mostrada, voce sera soUcitado a digttar uma resposta, Be a resposta que voce der for correta, 0 programa vai para Dutra conta; se sua resposta estiver incorreta, a resposta correta e apresentada. Voce deve pressionar RETURN para con tinuar,

Program as Eduoacionais e Pessoais 87

PgrA tennlnbar 0 programa, digite 99999 como resposta para a conta, Urn !eSblIDO das suas respostas corretas emeorretas sera entao mostrado,

10 REM *******************>1<.*** 20 REt4 ll<*

30 REM * AD I CAO/BU.BT"RACAO *-

ao RtJ1 >I< *'

50 !liEN * DIRE I TOSAUTDRA I S *

SO REM ::1< *

70 ~EiN '* NELSON ALVES >I<

eo R~M * :.I:<

90 R,!El"l .* *

!OQ REM ****'******************* UOKEY OFF

12;0 Ne:G$. := II' N II

130 CLS.

140 INF'UT ~'.NUt1EHa R.ANDONICO (lA 999'9)!! ~ X 150 INPUT II COM ,REQUADRO (SIN} II ; SN$

l{.d INPUT IIPRIME:.IHD tlJUMERO DE 1 A C2/999)il;T1 17'0 IF Tl < 2 THEN 1·60

HIO IF T 1 > 99r::;· THEJ>J 160

190 INIPU.T "SEGUNDO NUMERD DE 1 A (2/999) II ; Hi 2&0 IF 81 <B2 THEN 190

2iO IF B1 ::- 9'1;!J9 THEN 190

i!.zd EFtS ~ 0

230 El ::; 0

~ ..... . ... .

·240 l~PUT II. AD r c r ONRR '" 8UBTRA 1 R, AMBOS (A, S, D) "; ASB$

250 I FASB$- Ib A II THEN 290

260 IF RSB$, = H8u THEN 290

21Q IF ASB$ ;;:; HDIl THEN 290

28:0 G or 0 ;~ t1 a

~9.0tL8 ': IF .sN$ :::: JI N H -rHE;:N 440 JOO R => 13

31Q FOR C == 5 TO 15 JZQ LDClATEF'<, C

J30 PR tNT CHR$ < :l,89} ~ ·340 LOCATE (R+ 1 0), C J50 PRINT CHR$ (189) ; 3bO I'JjEXT C

370 C c: 5

3,BO FOR R = 13 TO 23 ~90 LOCATE: R, C

~oo F'RI NT CI-IR$ ( 189) ;

88 MSX - MelhoresProgramas

410 LOCA'fE R, <C+10) 420 PRINT CHR$(189); 430 NEXT R

440 N1 = INT(Tl*RNO(X»+l 450 N2 = INTCBl*RND(X)+1 460 IF' NEG$ o IINu THEN 51 0 470 IF Nt ) N2 THEN 510

480 NX = Nl

49Ci N:L l!l: N2

500 N2 ::::: NX

510 IF ASB$= "5" THEN 570 520 1 F ASB$ = II A II THEN 550 500 01 ~ INT(2*RND(X)1+1 540 GOTO 580

550 '01 ;: 1

560 GOTO ~j80

570 01 :::;; :2

580 IF 01 - 1 THEN 590 590 Nl$ - STR$(Nl)

6bo N2' ~ STR$(N2)

610 IF 01 = 1 THEN 640 620 OP$. == U_II

630 GOTO 650 64.0 OPiI; c il + Ii

650 Ll l!l: LENCN1$) 660 L2 = LEN<N2$) 67Q J .~ 2Q

680 FOR I ~ Ll TO 1 STEP -1 690 J = J-1

700 LOCATE J~8

710 PRINT M·ID$ (Nl$, 1,1) ; 720 NEXT I

730 J ~ 20

740 FOR I = L2 TO 1 STEP -1 750 J = J-1

760 LOCATE ,J, 9

770 PRINT MID$CN2$,I,1) 790 NEXT I

790 LOCA-rE 16., 9 800 PRINT OP$;

810 FOR I ~ 16 TO 19 8;20 LOCATE 1,10

830 PB I NT .11 _," .. ;

840 NEXT I

850 LOCATE 0,23

.Programas Educaclonais e Pessoajs 89

860 INPUT "D I G I TE (9'99'99 PAH{4 F I r-iAL I ZRR): H; x i 870 r F Xl:::: 99999! THEN 1030

8~ IF 01 ~ 2 THEN 910

990 IF X 1 ;;:: N1 +N2 THEN 99;j 900 GOTO 9~~O

910 IF X 1 ~ Nl ~N2 TI·-IEN 990 920 CLS

930 IF 01 = 2 THEN 960

940 F'RINT iiERRADO II<~Nl; II -1- ";N:2; II "'" ";Ni+N2 950 GOTO 970

960 PR I NT ,,, EF(RADO .ii; N 1; II 970 ERS == ERS+ 1

980 GOTO 1010

990 C1 := Cl + 1

1000 :GOTO 290

1010 r NPUT X$

1020 GOTO 290

1030 CLS

1040 PR I r~T 11..*************************************** FI 1050 PRINT 1!.*1':; TAB (38) ; ii;.l<"

iuso F'R I NT !! >I< CdRh:ETO ::l "; C 1 ; TAB (::':,8); "*"

1070 PRINT "*";: TAB C39); "»<"

1080 F'R I NT II * ER.RCJ:::; - "; EF:S; TAB (38); II *"

1090 PRINT "*11; TAB{38); "*I!

.1100 IF C1 } 0 THEN 1130

1110 IF 'ERS } 0 -rH~N l1.~JO

1120 EHS :;::: 1.

1130 PHINT ">I<

"; N 1-'N2

ESCORE

....... .J ,iii

-- ,

INT(Cl/(Cl+

ERS) ;td 00); "/. "; TAB (:38); 11'* II lWO PH INT Ii *11; TAB (:;:;'8); II *"

! 150 F'R I NT II ******************************.********* II 1~60 PRINT

1170 PR I Nr

1180 PR INT

1190 PRINT

1200 END

ti

90

MSX - Me/heres Programas

o programa Calculadora (CALCULA) funciona como uma calculadora _·so· mando, subtralndo. multrpllcando, dividindo, tirando a raiz e elevando varios numeros, Na inicializacao do programa, a Imha 130 limpa 0 acumulador de totais (TTL) para zero. Cada ealculo realizado e digrtado na linha 140. 0 que quer que seja que voce digite e entao avaliado pelas linhas 160 ate 0 final do programa. Apos cada avaliacao, 0 controle e devolvido ·a linha 140 para a proxima operacao.

Voce pode entrar com dots nurneros, as quais sao separados par urn operader e termmados por urn sinal de igual, como em

200-100=

Quando urn numero inicia a expressao digltada, 0 valor total acumulado anteriormente (TTL) e autornatlcamente limpo. Isto e dstermmado nas linhas 280 a 330, onde 0 primetro caracter digitado e inspecionado para vet se ele e numenco au um operador.

As linhas 360 - 490 asseguram que a operacao seja valida (ambos X, /, +~ -, ., A, S, lin ponto OU urn numero).

Entao, dependendo se 0 numero que esta sendo lido earacter a caractere 0 primeiro ou 0 segundo numero, as ltnhas sao - 63,0 movem os numeros e/ou pontes decimals para Nl$ ouN2$. A serie de caracteres e examinada pelo compnmente da serie de caracteres (LA na linha 340). Quando isto for complebado, Nl e N2 receberao valores numericos das series d.e caracteres Nl$ e N2$, (linhas 710 e 740). As linhas 750 e 760 limpam 0 total se 0 primelro caracter digttado for numerieo. Aslinhas 770 - 960 entao computam 0 total para 0 resultado de N1 e N2, produzido pelo primelro operador, Entao, se 0 segundo operador for 001 sinal de igual, 0 resultado sera impressa (Iinhas 940 e 950). Entretanto. se 0 primetro caracter for urn operador, 0 total anterior sera sornado, multipllcado, e assim POl' diante, para obter urn novo total. Mais uma vez, sernpre que apareeer um sinal de iguat, 0 total sera mostrado na tela.

A seguir temos comandos de particular interesse.

A linha 350 a valta os caracteres digitados urn par vez, A instrucao MID$(A$;I,l) representa 0 segmento de A$, cornecando na posicao numero I para um comprimentc de.I caracter, Note qU€ i e incrementado de 1 no loop FOR-NEXT has ltnhas 340 - 680.

A funeao LEN (A$) na linha 150 determma 0 comprimen to de A$ de modo que ele possa ser avahado cracter par caracter. F'inalrnente, lernbre-se de que A e S podern ser usados no lugar de + e - altemativamente.

) :~ I·, 0 ... THEt\l 300
(== il 9'; l-HE:N 3'30 10 REM ***********************

:2.0· RE.M }I( *

* »<

* * * *

30 REM ao IRE.M 50 REM ~o REM

10 REM * BO REM $.

90 REM 100 REM 11'0 KEY 120 Cl.8 130 TTL ::::l 0

11l1) INPUT .A$

150 LA ~ LEN (A$)

lbO IF LA = 0 "(HEN 140

170 IF A$ = !IF 1M" T'HEN 1190 190 I FA$ o II! C Ii THEN 220 19'0 Til ~ 0

ZOO CLS

210 GOTQ 140 220, Nt. _ H"

230 N2$, == II I! 240 0 1 $. ~ ""

}{{ It:

* DIREITOS AUTORAIS

*

CALCULADDRA

NE::LSON ALVES

* * *********************** OFF

A:2$ .C:::: 1':' ......... II THEN
1=12$ = " A" THEN
A2ii .... iI.S Ii! THEN
A2$ " _u THEN
.,...
A2$ :;:;: " u THEN

A2$ ) ,I 9" THEN Programas Educ,acionais e Pessoais 91

92 MSX - Me/hores Programas

4,60 IF A2$ ( II 0 II THEN 480 470 GOTO 500

480 PRINT "DEVE SER :it 00 X,/'t .... ,+,-,A,S,~n 490 GOTO 140

500 IF 01:$ = II" THEN 580

510 IF FLOPER$ == liS" "rHEN 580 520 C2N2 = C2N2 + 1

530 IF C2N2 ) 1 THEN 560 540 N2. c MID$(A2$,1~1) 550 GOTO 57.0

560 N2$ ~ N2$+MID$CA2$,1,1) 570 GOTO 680

580 CINl = C1Nl+1

590 IF ClN1 ) 1 THEN 620 600 N1. = MID$(A2$,1~1) 610 GO TO 630

620 Nt. ~ Nl$+MID$(A2$,1,1) b,30 GOTO 680

640 I~ 01$= 1111 THEN 670 650 02$ == A2$

660 60TO 680

670 01$ == A2$

680 NEXT 1

690 IF LEN '(Nl $) < 1 THEN 720 700 IF Nt $ :!!l II'" THEN 720

710 Nl = VALCN1.)

720 IF LEN(N2$) ( 1 THEN 750 730 IF N2$ ,::: II ,. THEN 750

740 N2 ~ VALCN2$)

750 IF FLOPE.R$ = "S" THEN 970 760 TTL == 0

770 IF 01$ .,... flAU

780 IF Oj$ == "+"

790 800 810 820 830 840 850 860 870 880 890

IF IF IF IF 0·1$ = IF 01~ ~.

GOTO 140 TTL = N,! GOTO 94 . .0 TTL ~ Nl GOTO 940 TTL ;: Nl *

01$ ~
01$ ==
01$ - II ~Ii o

UX"

II/H

II AU

+ 1\12

- N:2

THEN 850 THEN 8'50 THEN 870 THEN 870 THEN 890 THEN 910 THEN 930

N2

900 GlOTOCJaO

910 TTL .::;: Nl J N.2 920 GOlD 940

930 TTL ~ Nl " N2

9.40 IF 02$ 0":;:::" THEN 140 950 PRINT'! * TOTAL * n ; TTL 9'60 GOT 0 i ao

9'70 IF 01$ -. "=" 2BO IF 01'$ .::;: "+1' 990 IF 01$ l:";: liA.Ii 1000 IF 01$ ~- "_" THEN 11080 10~O IF 01$ ~ "8"

j G.l20 I F 0 1 $ 11fl:: " X"

lC,30 IF 01$ ~ n/,.

j 040 IF 01.'$ ::::l " " "

1050 G010 140

i060 TTL :;: TTL -I, N 1. 107'0 GOTO 1150

lose TTL 0;:;. TTL ~ t<.ll 1-090 (jOTO 1150

110D TTL = TTL >I< Nl 1110 GOlD -1150

ll:2b' TTL :: -rTL I Nl 1130 GOrOl 150

1140 TTL ':::TTL ANi

:rHEN 1170 THEN 1060 THEN 1060

THEN! THEN THEN THEN

1080 1100 11:20 1140

1.150 IF 02$ = " ==" THEN 11 +o 1:160 ~OTD .140

11 70 PI,~ I NT I' *- TOTAL *Ji; TTL

1180 GOTO 140

1190. CLS: END

Prograrnas EdUc:acJon.ais e PessoaisSI'3

Estes anos centesimais. os quais terminarn com dots zeros, sao.anos blssextes somente se eles forem di visivels por 400. Deste modo, 1800 e 1900 nao toram anos bissextos, embora 0 ano 2000 venha a ser ano bissexto.

Como voce pode ver, este programa rnantem calendarios dos anos de 1,80'0 ~ 2099. Se voce quiser estender-se para alern d.e 2099 e abaixo de 1800, aslinhas3~O - 450 ajustam os parametres para 1800, as linhas 460 - 540 para os anos 1900,f.! as Imhas 550 - 630 para os anos 2000. Para adicionar outros seculos, voce predsa sornar tambern modules para 0 Irucio e lim dos anos, Note que R 1 micia em 4 na linha 390 indicando que 1 de janeiro em 1800 caiu na quarta-feira. A vanavel ANO na linha 400 e 1 signlficando que 1800' nao era urn ano bissexto. E, na linha 430, LF (sinalizador do ano bisse xto ) e :99, 0 que signific a que 1800 nan fo! ano bissexto naquele seculo,

Desta informacflO basica, contando de 1800, 1900 ou 2000 para 0 ann do talenda·· rio desejado, voce pode facilmente calcular exatamente que a dia foi 0 dia 1 ti"e janeiro em qualquer ana e se DU nao este ana loi urn ano btssexto. A gera~~lD de urn calendario por ano e portanto uma tarefa simples.

Agora vamos discutir alguns comandos espeoificos do programa. Como mencionamos anteriormente, as Iinhas 200 - 630 ajustam os parametres desejados para 0 primeiro ano do seculo para 0 Z\110 do calendario req uisrtado. Voee notara que, na linha 200, voce pode finalizar 0 programa digi tando 0 para 0 ano de~e· jade. Obvtamente este programa, como qualquer Dutro, pode tambem'serter minado atraves do comando CTRL + C.

As linhas 640 = 860 eontern urn loot: FOR~NEXT que computa 0 dta da semana para 1 de janeiro do ana pedido. 0 loop inicia (linha 640) com FANO -definido anteriormente como lHbOI 1900 ou 2000 - e tenninaquando 0 ana sendo compu tado for igual aoano requerido (linha 850 quando 0 contador I = Yl, 0 aho digitado na linha 200). A vanaval DIAl {o dia da semana do prlmeiro dia do allo}

94 MSX - MeJhares Programas

CALE:NDARIO

o programs Calendarfo {CALEND.) produz urn calendarto para qualquer anode 1800 a 2099 .. Com este programa, voce pode achar a data de amversano de qualquer pessoa, 0 dia e a semana exatos, ou imprimir 0 calendario de qualquet ana quantas vezes quiser.

A logica par detras deste calculo e explieada nas Iinhas 140 - 180. A cada dla da semana e dado urn numero (Domingo e 1, Segunda e 2. e assim por dlante, ate sabado. 0 qual e 7). Em cada ano sucessivo, 1 de janeiro cai urn dia rnaior do que o ano ante rlo r, As unicas excessoes para esta regra sao:

1. Dais dias sao somados no ana segumte ao ano bissexto.

2. Nem todos os anos do seculo sao bissextos embora eles sejam divtsfveis por quatro.

Programss Educacionais e Pessoais 95

e so ada, uma a uma, quando cada ana e eontado, exceto quando a ana Mli:erior ttver sido blssexto. Neste caso, 2 e somado a DIAl (linhas 740 -750). Se DIAl exeeder 7 0 valor '(~ mudado para DIAl menos 7 (linhas 810 - 820).

Note que na llnha 8401 0 residua de urn comando de depuracao ainda existe com o programa. Neste caso os valores de LF e DIAl forarn mostrados na tela para determinar 0 que estava acontecendo com a 16giea do programa, 0 comanoo PRINT pode ajudar a rnostrar os valores de algumas variaveis chave que voce pede eetar querendo conhecer.

Apes 0 dia da semana do prrmerro dia do ana tel' sido determinado e se ou nao 0 ana selecionado for bissexto, 0 programa estara pronto para gerar 0 calendario, As unrras 940 -2.0,30 contem dois loops, 0 loop I que conta de 1 ate 12 para as aeses, e o loop J que con ta de 1 a 31 para. os dias de cada meso As Iinhas 990 -1.3,30 fomece as abreviacoes dos meses sendo mostrados, As Iinhas 950 - 960 geram a hnpl'essao do calendario. CALEND, como qualquer outro prograrna, pode ser usad@com ou sern uma impressora. Obviamente, 0 programa fica mais pratico com sua propria irnpressora.

AsUnhas 1.450 - 1.630 determinarn quantos elias ha em cada roes. assim como 0 diada&emana e incrementado de 1 (de 1 a 'tve o numero do dia do rnes e impressa naccluna do dia da sernana espaeo pela Instrucao SPC (linhas 1.680 - 1.970). A llnna 1.680 usa 0 comando 'ON GOTO que gera um salto para a Iinha desej ada quando Rl-l, 2, 3,4,5,6 OU 7. Quando 0 calendario esta complete, a linha 2.040 fecha a rmpressora (se ela estiver sendo utihzada) e a lmha 2.050 retorna 0 cDutrole para a linha 200.

*********************** * *-

10 REt1 20 REM 30 REM, 110 ~EM 50 ~EM 60 REM 70 REM 80 RE:M 90 REM 100 REM

CALENDARIO

*

* * * DIREITOS AUTORAIS *

* *

NELSON ALVES

* *

* ~~

***********************

110 KE"Y OFF 130 CLS

1® REM 1980 E eASE PARA LA/3 (TER) l:iO REM 1981 E EIA8E PI=~RA LA<I=l/5 «(;lUA) ,~ REM 1982 E BASE PARA LA+~/6 (SEX) 170 REM 1983 E BASE PARA LA+3/7 (SAB)

ISO REN 01/01./80 GAl NO TEF~CEIRO DIA DA SEMANf.h TEF:CA' 190 CLS

96 MSX - Melhotes Programas

zoo INPUT "ANO DESEJADO Pf-lRA 0 CALENDARID II ;Ai 210 IF Ri =0 THEN 26~O

220 IF Ai < 1806 -rHEN 190

230 IF AI ~ 2099 THEN 190

240 ANDl ~ INT(Al/4)

250 L 1 =: Ft"JOl *4

260ANO ~ Al-Ll

270 REM AND ~. 0 (ANa B I SSEX TO) 28Q'REM AND - 1 (LA + 1)

29.0 REM ANO - 2 .{ LA + 2)

300 REM AND = 3 (LA + 3)

310 REM 1800 E 1900 NRG SAO RNOS BISSEXTO~ 320 IF Ai < 1900 THEN 360

330 IF Ai ( 2000 THEN 460

340 IF Ai < 2100 THEN 550

350 REM ****************************** 36,0 rANd = 1. BO 1

~70 FANO ;:;:: 1899

380 IF A1 () 1800 THEN 420 :390 R.t =: 4

400 AND ~ .1

410 ,6010 870

4:20. DIAl .~ 4

430 LF ~9c)

440 fUiM * LA =1~9 8IGNIF"lCA ANO NO MESMO SECUL.Cl 8< 450 GOTO bllO

460 lANo ~ 1901

470 FANO :::: 1999

480 IF Al () 1900 THEN 520 490 R1. =: 2

500 RND =: 1

510 (30TO 870

52001441 0:::; .2

530 LF :::: 99'

540 GDTO 640

550 I ANO .;:;; 2001

560 FAND :;:; 2099

570 IF Al o 2000 THEN 610 580 Rl :;:; 7

590 AND :;:: 0

bOO GOTO 870

610 DIAl :;:: 7

620 LF =:; 0

·630 GOTO 640

640 FOR 1= IANO TO FANO

Programas fducacioilais e Pe.s50ais 97

650 LF = LF+l

660 IF IF } 90 THEN 780 p70 IF L,.F ( 4 -rHEN7l1.0 680 IF ::::: 0

~O REM LF ~ 0 SIGNIFICA LA

700 REM LF == 1 SIGNI!=ICA LA -I- 1 7'10 REM LF ::::: ;~ SIGNIFICA LRi + .2 no REM LF ::::: 3 SIGNIFiCA LA + :]

730 REM LF =: 99 SIGN I FICA AND NO MESMO SECULO 7·40 IF' LF o 1 iHEN 780

7:;0 DIAl == DIAl + 2

760 G01"O 810

no .DrA 1 "'" 5

~o DIAl = DIA1 + 1

no IF LF ( 90 THEN 810 800 LF r:: 1

910 IF DIAl { 8 THEN 8.30 B~ DIAl = DIAl - 7

830 Rl = DIA 1

840RB'1 PRII\H "LF =: 1·;LF;IIDlAl:;: I!;DIRl 8BO IF i ~ A1 THE2N 870

SbO NEXT r

870 REFI R 1 E 0 RESTANTE ( D I A PARA 1 DE JANE I RO) 980 Rl == Rl - 1

8110 IF Ri, > 0 THEN 910 900 Rl ;::: 7

910 REM PRINT "Ri = I, ;R1

920 INPUT /1 IMPRIMIR <SIN) ";,X$ 9~;O CLS

940 F'OR I = 1 TO 1.2

950 I F X,~i (". "S II TH~N 980 960. LPF: I NT

970 -GOTO 980

91!!O PRINT

990 MD$ __ II II

10010 I F I r::t: 1 THEN 1 120 1010 IF I - 2 THEN 1140 1020 IF I ::: 3 THEN 1160

:l 030 I F' I = 4 THEN 1 180 LMO I·F I - 5 THEN 1200 1-05:0 IF 1 "'" 6 rHEN 1220 1060 IF I - 7 THEN 1240 1070 IF" .I = S THEN 1260 1080 IF I - 9 THEN 1280 1090 IF" I :::0: 10 THEN 1300

98 MSX ~ Nf,rHhores Programas

1100 IF I ~ 11 tHEN 1320 1110 IF 1 = 12 THEN 1340 1120 ME$ = IIJANEIRO"

1 1 ::'\0 (jOTO 1350

1140 ME$ :::; "FEVER'EIRDH 1150 Gf.lTO 1350

1160 ME$ J::;: "MARCO" 1170 GOTO 1350

1180 ME $ ;;;;: " A8R I L " 1190 GOTO 1350

1200 MIS$ =: "MAIO"

1210 GOlD 1350

1220 ME $, "'" "JUNHO"

12:':;0 50TO 1350

1240 ME$ = "JULHOJi 1250 GOTO 1350

1260 ME$ = I, f4GOSTO" 1270 GOTO 1350

1280 ME$ := "5ETEMBROII 1290 GOTO 1350

1 3-00 ME$ == " OUTUBRCl .a

1310 (;IOTO 1350

1320 ME$ = I, NOVEMBRO II 1330 GOTO 1350

1 :340 ME$ = "DE:ZEMBRO ,i

13-50 IF X* <> jl5" IHEN 1450 1360 IF I () 7 TH£N 1400 1370 FOR K = 1 TO 10

1380 LPRINT

1390 NEXT K

1400 LPRINT SPC (1,) ; ME$; " P' ;..A 1

1410 LPR I NT II - -.- ~,- ~.~ .... -~ ~.~ ~_ .. ,.,_" :,

1420 LF'RINT SPC(1);"DO";SPC(2) ;"SE";SPC(2) ;"TE";

14,30 LPRINT SPC<2) ;'iQA",SPC(2) ;"QI";SPC(2) ; "SE'!;SF'CC:?) ; "SA111 ltl40 GOTQ 1490

1450 PRINT SF'C(l) ;ME$; ii/'!;Al

1460 PR I NT ,,' --..;.---.- .. --",_.~~,-~-,,_----- .~.~ __ ~_" :

1 t.L 70 F'R I NT s=c ( 1 ) ; ,,' DO" ; SF'C (2) ; II SE:" ; SPC (2) ,'i TE II ;

i/.J,80 PRINT SPC(2) :;"G!A",SPC(2) ;"QI"~;8F'C(2) ;"giE";SPC(2) ;!'SAI' 1490 FOR J ~ 1 TO 31

1500 IF J ( 28 THEN 1700

151'0 IF r ::: 1 THEt~ 1700

152QIF I = 3 THEN 1670

1530 IF I - 5 THEN 1670

1540 IF I - 7 THEN 1670

Program as Educacionais e Pesso afs 99

IF! - I F' I --

8 THEN 11....,70 10 THEN 16'70

1550 1560 1570 158()

IF I IF 1

- 12 THEN 1670 = 9 THEN 16.90 ~ 4 THEN 1690 == 6 THEN 1690

== 11 THEN 1690

1590 IF I 1bOO IF I i61'0 IF 1

1420 IF ANO ~ 0 THEN 1650 1630 IF J ) 29 THEN 2430 1640 GDTO 1700

1b50 IF J ) 29 THEN 2430 1660 GOTO 1700

1670 IF J ) 31 THEN 2430 1680 GOTO 1. 700

1690 IF J > 30 THEN 2430 1700 R 1 - R 1 -I- 1

1710 IF Rl < 8 THEtJ 1770 1720 R1. == 1

i7::::iO IF X$, 0 "8U THEN 1760 1.740 LPRINT

1. 750 GOTO 1 770 1760 pRINT

1770 ON. R1 501"0 1 7f~O, 184.0, 194.0, ZOllO .,214.0,2240,234.0 1'780 IF X-$ <> "SI! THEN i ai o

1790 I.PR I NT SF'C (0) ; 3·:;

1600 GOTO 1820

L810 PRINT BPC(O);J; 18'20 GOSUB 2500

1830 GOTO 2430

1840 IF )<$() JlS" THEN 1890 1B50 IF J" o 1 THEN 187.0 1860 LPRINT SPC(4);

1870 LF'RINT J;

All 1880 60TO 1920

1890 IF J {} 1 THEN 1910 1900 PRINT 8PC (4), ;

1910 PRINT J;

1920 G()SUB 2500 19~iO C.::'.'OTO 2430

1940 IF )<$ {} IIlsn rHEN 1990 1950 IF J () 1 THEN 1970 19bO LPRINT SPC(S);.

197() LPRINT J~

1 !jIBO GOTO 2020

H

1990 IF J (} 1 THEN 2010

Você também pode gostar