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 • , •••••••••••••••••••••••
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:
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
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
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
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
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
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
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)
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 ~ ,,' ~
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,
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)
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
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
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
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
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$)
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
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
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 - -.- ~,- ~.~ .... -~ ~.~ ~_ .. ,.,_" :,