Você está na página 1de 236

Este livro foi editado em convênio com

FACULDADE POLYTECHNICA ESTÃCIO DE SÃ


E
EMPRESA DIGITAL BRASILEIR A S/A - DIGIBR ÃS
ROBE RTO KRESCH
Engenheiro de Telecomunicações

Introdução à lingua9em basic

5� edição


Editora Rio
ESTACIO DE SA
© Copyright by
R O B E RTO K R ESCH

Capa :
Arte final da Editora Rio
inspirada na ilustração de Hovik
Dilakian, publicada na revista
Electronic Learning, de março/abril/82

EQU I PE D A E D I TO R A R I O
Revisão:
Francisco de Castro Azevedo
Aleidis de Beltran
Composição:
Bento José Neto
Montagem:
Luiz Epitácio de Oliveira
Arte:
Renato Martins Dias

Nenhuma parte deste livro poderá ser reproduzida,


sejam quais forem os meios empregados (mimeografia,
xerox, datilografia, gravação, reprodução em disco ou
fita), sem a permissão por escrito da Editora.
Aos infratores se aplicam as sanções previstas nos artigos
122 e 130 da Lei nP 5.988 de 14 de dezembro de 1973.

Todos os direitos desta edição reservados à


E D I TO R A R I O - Sociedade Cultural Ltda.
Rua Dona Cecília, 25 - Tels. : 273-2793 e 273-2743
Rio de Janeiro - RJ
As meus filhos André, Liana, Renata e
Felipe, que participarão ativamente de uma
nova era da história humana, assustadora
para alguns e maravilhosa para outros mas,
acima de tudo, real e vigorosa.
APRESENTAÇÃO

O brasileiro, por sua formação cultural, é um leitor que


dispensa o maior apreço, e mesmo uma acentuada preferên­
cia pelos textos técnicos redigidos de forma simples e clara,
sem prejuízo do valor teórico, conceituai ou didático do tra­
balho. Poderia até acrescentar que ele exige, comumente, do
autor, um estilo escorreito, associado a uma exposição rigo­
rosamente lógica. Partimos, talvez, do princípio de que a
exatidão das idéias induz necessariamente à sua apresentação
facilmente inteligível.
Por isso, estou certo de que o livro que tenho a grande
satisfação de apresentar, obterá livre curso entre todos os
que se interessam por conhecer as linguagens de programa­
ção, de alto nível, elaboradas para computadores, não impor­
tando o grau de conhecimentq que possuam sobre o assunto.
Roberto Kresch foi muito feliz na escolha do tema de
seu livro, bem como na transmissão de seus princípios fun­
damentais e do mecanismo de seu uso.
Contribui, ademais, para a difusão do uso de equipa­
mentos eletrônicos de tratamento de dados e da informação,
prestando desta forma um grande serviço à Informática no
Brasil.
Afirmo, sem constrangimento, que ao cabo da primeira
leitura da "1 ntrodução à Linguagem Basic" tornei-me um
programador razoável de microcomputadores, e com grande
surpresa para mim, que me considerava um leigo na matéria,
habilitado a resolver, com rapidez, problemas de cálculos
aritméticos, estatísticos e algébricos, cuja solução sempre me
pareceu exigir um trabalho árduo e relativamente longo.
Que essa afirmação sirva de estímulo aos que preten­
dem empregar a linguagem de programação BAS IC na utili­
zação dos mini e dos microcomputadores.
Que desperte também a curiosidade dos que ainda não
tiveram nenhum contacto com o místico instrumento da
computação para conhecer sua extraordinária e diversificada
potencialidade, como ferramenta inusitada de trabalho, utili­
zável na grande maioria das disciplinas do conhecimento.
Por último, anuncio com prazer que este livro é o pri­
meiro de uma série de publicações técnico-didáticas que a
DIGIB RÃS pretende patrocinar.

Brasília, 29 de abril de 1982.

Paulo Augusto Cotrim Rodrigues Pereira


O iretor Presidente
D IG I B RÃS
PREFÁCI O

Este texto foi preparado com a finalidade de suprir


uma deficiência observada pelo autor no mercado brasileiro,
em relação à litera tura em língua portuguesa descrevendo a
linguagem de programação BASIC. Considerando a crescente
introdução do uso de microcomputadores no País, e o cres­
cen te número de usuários "leigos", isto é, pessoas que
não tiveram, an teriormen te, treinamen to formal ou de longa
prática no camp o de computação, ficou paten te a necessida­
de de se difundir essa linguagem, mesm o no âmbito daqueles
que não tenham condições de se utilizarem de textos em
língua estrangeira.
A linguagem BASIC ou, simplesmen te, o BASIC, talvez
seja a linguagem de alto n/vel de mais fácil apreensão pelos
operadores de computadores e, também, aquela que pode ser
mais imedia tamen te usada; em ou.tras palavras, à proporção
que o "vocabulário" do BASIC vai sendo aprendido, ele po­
de ser, imedia tamen té, usado em um computador, permitin­
do, desde níveis elemen tares de conhecimen to, a preparação
de pequenos programas, os quais serão, paula tinamen te, so­
fisticados, à medida que o vocabulário conhecido for aumen­
tado. É experiência pessoal do autor que essa característica
do BASIC é altamen te gratifican te, em termos de desenvolvi­
men to dos usuários na arte e ciência da programação,
em virtude da possibilidade de poder penetrar nos meandros
da linguagem aos poucos, sem preju/zo da facilidade de usar
imedia tamen te cada tip o de ins trução aprendida.
Es te texto é, obviamen te, baseado em diversos livros
publicados recen temen te, no es trangeiro, e também em algu­
mas experiências p róprias do autor e seu filho, André; assim,
pudemos inserir no texto "dicas" de programação que fo­
ram aprendidas no dia-a-dia da preparação de programas e,
também, diversos exemplos, que poderão ser experimentados
pelos leitores, desde que feitas as devidas adap tações relati·
vas a peculiaridades do BASIC da máquina a que cada um
possa ter acesso.
Não poderia deixar de agradecer à DIGIBRAS, e aos
companheiros que nela trabalham, pela assistência e suges·
tões que deram em relação ao tex to, fazendo valer a sua ex·
periência profissional no ramo de compu tação e em muito
contribuindo para o aperfeiçoamento do trabalho.
Gostaria de agradecer, também, às FACULDADES IN­
TEGRADAS ESTAGIO DE SA, pelo apoio e colaboração na
parte didática deste tex to, e à EDITORA RIO, pela ajuda
na mon tagem e pela impressão do mesmo. º

Finalmen te, não poderia deixar de agradecer à tremen·


da paciência de minha secretária, Maria Amélia, durante to­
do o trabalho de datilografia dos manuscritos, especialmente
as listagens de programas de exemplos.

Brasflia, DF, dezembro de 1981.

Roberto Kresch
PREFACIO DA SEGUNDA EDIÇÃO

O grande incremento ocorrido nos últimos meses, na fa­


bricação e venda de microcompu tadores no País, contribuiu,
sem dúvida, para a necessidade de se reeditar este livro, pou­
co depois da primeira impressão.
Como não podia deixar de ser, no tei, após o lançamen­
to da primeira edição, que havia diversos aspectos merecedo­
res de melhor explicação, algumas expansões de conceitos e,
por que não dizer, correções no tex to daquela edição.
Procurei, até onde me foi possível, contando com o au­
xllio de amigos e colegas, melhorar o tex to anterior, dando­
lhe maior generalidade, em termos de máquinas e, mesmo,
de variações existentes na linguagem BASIC.
A própria existência, hoje, no mercado brasileiro, de
microcompu tadores nacionais, o que não ocorria quando ini­
ciei a preparação do tex to original, muito contribuiu para a
inclusão de alguns conceitos e adaptação de ou tros, tornan­
do a obra mais a tualizada, dentro da dinâmica própria deste
setor da a tividade humana.
Grande parte dos conceitos adicionais foi concentrada
em um APÊNDICE, para o qual gostaria de chamar a a ten­
ção do leitor.
Reitero meus agradecimentos aos que colaboraram, dire­
ta ou indiretamente na preparação deste trabalho.

Brasília, setembro de 1982.

Roberto Kresch
'
INDICE GE RAL

Prefácio
Capítulo
1 ntroduÇão .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Capítulo li
Organização do Basic ........................ . 19
Capítulo 111
Uso do Teclado e dos Comandos .............. . '.25
3.1 - Teclado ........................... . 25
3.2 - Organização das Instruções no Vídeo . . . . 31
3.3 - Comandos . . . . . . . . . . . . . . . . . . . . . . . . .
. 3:3
Capítulo IV
Instruções Múltiplas por Linha ................ . 71
Capítulo V
Computações Matemáticas . . . . . . . . . .· . . . . . . . . . . . 75
Capítulo VI
Instruções para Entrada de Dados .............. . 91
Capítulo VII
Instruções de "Loop" e Instruções Condicionais .. . 1 07
7 .1 - 1 nstruções de "Loop" ............... . 1 07
7 .2 - Instruções Condicionais .............. . 1 24
Capítulo VI li
Sub-rotinas ................................ . 141
Capítulo IX
Variáveis Indexadas .......................... . 1 61
Capítulo X
Funções Diversas de String . . . . . . . . . . . . . . . . . . . . 179
Capítulo X I
Instruções e Comandos Diversos . . . . . . . . . . . . . . . . 197
Capítulo X II
Mensagens de Erro . . . . . . . . . . . . . . . . . . . . . . . 2 1 5
. . . .

Apêndice. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223

Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227

1·ndice Analítico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229


Capítulo 1
I N T R O D U ÇÃ O

A linguagem de programação BASIC, cujo nome é de­


rivado das iniciais de Beginners A ll-purpose Symbolic lns­
truction Code ( Código de Instrução Simbólico, de Uso G e­
ral, para Principiantes), foi desenvolvida por John Kemeny e
Thomas Kurtz, no Dartmouth Col lege, no início da década
de 60, sendo introduzida no mercado em 1 964.
A princípio procurou-se implementar uma linguagem
que não fosse especializada para determinadas aplicações e,
portanto pe rm i t i sse um uso m a i s gene ra l i za d o , ao mes m o tem­
,

po que fosse adequada para a i n i c i ação d e pessoas de fo rma­


ção em áreas as mais diversas, na técnica da programação de
computadores. Com o passar do tempo as máquinas foram
sendo aperfeiçoadas, seu preço foi caindo rapidamente e, ho­
je, já se pode encontrar microcomputadores usados para fins
residenciais, especialmente na área do lazer. Ao mesmo tem­
po, o "vocabulário" e a "gramática" do BAS IC foram sendo
aperfeiçoados e ampliados, de modo que, atualmente, essa lin­
guagem pode ser considerada bastante poderosa, compatível
com as aplicações mais variadas, sejam comerciais ou cientí-
ficas, sem prejuízo de sua facilidade de manipulação e rapi­
dez do aprendizado.
O BASIC pode ser encontrado, nos computadores, co­
mo programa residente, isto é, já estar gravado em memórias
permanentes dentro do próprio computador, ou estar grava­
do em um meio de armazenagem externo, tal como disco
magnético ou fita cassete. Neste caso, antes de se poder usar
o computador com a linguagem BAS I C, é necessário carre­
gá-lo com o programa de linguagem, ou seja, colocar nas
memórias do computador o conteúdo do disco magnético,
cassete ou outro tipo de armazenador externo de dados.

15
N o tex to que se segue su poremos sem p re q u e o p rogra­
ma de l i nguagem BAS I C já se encontra armazenado nas me­
mórias do computador e que está p ronto para u so .
O p rogra ma q u e "traduz " para o com putador a s i n stru­
ções que serão i ntroduzi das no mesmo em B AS I C pode as­
su m i r três formas p r i nc i pa i s : i nterpretador, tradutor e com p i ­
lador. Pa ra poder ex p l icar m e l h o r essas ex pressões devem os
fazer u ma cu rta· d ig ressão , a respeito da mane i ra de funcio­
nar de u m com p u tador t íp ico , no q ue tange à sua capaci­
dade de entende r e executar i n struções.
As d iversas pa rtés que compõem o com p u tador se com u ­
n i ca m entre si u sando u m .cód igo espec ial , b i n á r i o (ou seja,
formado apenas por zeros e u m 's ) ; esse cód igo, que contém
as i nstruções de operações e os dados a serem com p u tados,
recebe a den o m i n ação genérica de " l i nguagem de máq u i n a " .
Se u m progra ma f o r i ntroduzido no com p u tador usando a
sua l i n guagem de máq u i na (que é d i fe rente para cada tipo
de com p utado r ) , ele executa rá esse programa com extrema
rap i dez , pois não haverá necessi dade de se fazer nen h u ma
tradução de l i nguage m .
Quando se u s a u ma l i nguagem cujas i nstruções são pala­
vras do voca b u l á r i o com u m (voca b u l á r i o i n g l ês, bem enten­
dido ) , essa l i nguagem é denom i nada de a l to n ível e necessita
que haja, n o com p u tador, u m p rograma espec ia l , capaz de
passa r as i nstruções tipo pa l avra ou frase para i nstruções em
l i ng u agem de m á q u ina: que o com p u tador será capaz de en­
ten der e executa r .
O p rogra ma espec i a l para cada ti po d e l i n guagem d e a l ­
to n ível e cada l inguagem d e máqu ina pode ter, entre várias
outras, três formas p ri n c i pais : i n terpretador, tradutor e com­
pilador.
N o i nterpretador as i nstruções são converti das para l in­
guagem de máq u i n a no momento em que a i n strução é l ida,
ou sej a , cada vez que o com putador começa a execução do
programa, as i nstruções são convertidas e executadas uma a
u ma ( por conju nto de i n struções, den o m i nado linha, como
ex p l i caremos adiante ) em linguagem de máq u i na.
No caso do com pilador, o p rograma i ntroduz ido em lin­
guagem de alto n ível é convert i d o de u ma vez só em li ngua­
gem de máqu i n a , resultando dessa conversão u m novo pro­
grama, que é deno m i nado comp i lação do programa origi na l

16
ou progra m a o bjeto ( para s i gn i f i c a r q u e é o prog rama q u e
o computador é capaz d e entender e executa r ) . U m a vez·
que o progra ma foi com p i lado pe l a p r i m e i ra vez , as p róx i ­
m a s execuções d o mesmo serão feitas d i reta men te por leitu ra
do progra ma objeto , ou seja , mu i to ma is rap i da mente ( por
não ser necessário "tradu z i r " n ovamente o p rograma e m l i n ­
guagem de a l to n ível ) . No entanto, cada vez que se i nt roduz
uma a l teração em um p rograma já com p i lado , é necessá r i o
fazer nova co m p i l ação do p rograma i n tei ro, o que d i m i n u i
u m pouco a faci l i dade d e operação para o usuár i o , n a fase
de p reparação d os p rogramas.
O trad utor se co mporta de mane i ra seme l hante ao i n ter­
p retador. Apenas, ao i nvés de armazenar as i n struções e co­
mandos ta l co mo os mesmos são entrados pe l o teclado, o
t radutor va i a rmazena n d o u ma versão cod ificada das i nstr u ­
ções, d i m i n u i n d o o espaço necessá r i o na memó r i a para g u a r­
dar o progra m a . N o entanto , cada l i n h a (já cod i fi cad a ) será
convertida em l i nguagem p rópria de máqu i n a , u ma a u m a ,
não sendo prod u z i d o u m p rog rama comp leto com p i lado . O
t radutor é m a i s ráp i d o que o i n terpretador, na execu ção ,
mas a i nda é bem m a i s l en to q u e o comp i l ador.
G uarda a van tage m da flex i b i l i dade de operação , d a
mesma fo rma q u e o i n terpretador.
N o que se segue, deixaremos de lado as q uestões re lat i ­
vas aos méri tos d e i n terpretadores, tradutores e compi l a c;J o­
res e nos ded i ca remos à descrição da l i nguagem em si . N o
e n tanto , d i versos exem p l os que serão mostrados no tex to
p ressu põem que o com p u tador possu i u m i nterpretador e não
u m com p i lador (embora todas as i n struções e meca n ismos de
p rogra mação sej a m as mesmas para a m bos os casos) .
A l i nguagem B AS I C possu i u m "vocabu l á r i o " especi a l
para o ' traba l h o com u n i d ades d e g ravação em d i sco magné­
t i co . Esse voca b u l á r i o , que per m i te criar arqu ivos para g rava­
ção em d i sco e ler a rq u ivos já g ravad os, a lém de u ma série
de outras funções rel a c i onadas com o a rmazenamento e re­
cu peração de dados nesses d ispositivos per i féri cos, não será
descrito neste l ivro i n trod u tó ri o .
O BAS I C aqu i descrito é apenas o necessá r i o para a
o peração de u m m i c rocomputador l i gado a u ma te l a de v í­
deo, u m gravad or de f i ta cassete e, eventual mente, u ma i m­
p ressora .

17
També m não estão i n c l ui'das as fu nções de ed i ção que
perm item a l terar e rearranjar p rogramas e textos já armaze­
nados no computador, através de comandos especiais .
Esperamos em u m p róx i m o vol ume i n cl u i r o vocabu lá­
rio BAS I C para operação com d i scos magnéticos e para ed i­
ção de textos.
Final mente, . gostadamos de enfatizar que o t i p o de i n ­
terpretador BAS I C ex posto neste l ivro é o den o m i nado
" M I C R OSOFT", devido ao nome da empresa de "software "
que o desenvo lveu e q ue é, ta lvez , o mais d i fu nd i d o atua l ­
mente. Outros tipos d e BAS I C podem d i feri r d o q u e está
descrito a segu i r, depen den do de sua origem.

18
Capítulo li
ORGANIZAÇÃO DO BASIC

A linguagem BASIC obedece a certas regras de organi­


zação que descreveremos· a seguir . Como toda linguagem, ela
tem sua gramática própria, que deverá ser obedecida, sob
pena de o computador não poder entender a mensagem.
As informações que são contidas no programa em
BASIC podem ser de várias naturezas:
- COMANDO é um tipo de instrução que determina
ao computador que execute determinada tarefa, diretamente
e sem condições;
- STATEMENT é uma frase escrita em BASIC, con­
tendo instruções para a execução de uma certa tarefa e da­
dos a serem manipulados pelo computador; cada STATE­
MENT instruí o computador para executar um tipo de ope­
ração (que pode ser direta, do tipo COMANDO, ou condi­
cional, como veremos mais adiante);
- DADOS são valores numéricos ou alfanuméricos (in­
cluindo letras do alfabeto) que serão usados na execução das
instruções, pelo computador;
- VARIAVEIS são letras ou combinações de letras e
números, aos quais, na execução do programa, serão atri­
buídos valores numéricos ou alfanuméricos;
- STRING é um conjunto de letras e números que o
computador manipulará tal como foram escritos no progra­
ma; as letras e os números não têm nenhum significado es­
pecial para o computador.
Os "statements", que incluem comandos, instruções de
operação que não são comandos, variáveis e "strings", de­
vem, no programa, ser sempre precedidos de u m NÚMERO
DE LINHA . Assim, o programa é constituído de informações
colocadas em linhas numeradas seqüencial mente. Mais adian­
te daremos maiores detalhes sobre as l inhas e seus números .

19
Quando o p rograma é i n troduzido no com putador, seu
aspecto gera l é o seg u i n te :

XX (STATE M E NT)
XY (STATE M E NT)
XZ (STATE M E NT)

em que XX, XY - - -XZ são os n ú meros das l i n has,


-

em ordem crescente (esses nú meros podem va riar de 0 até


um máx i mo que é def i n ido pel a estrutu ra d o com putador,
sendo, em a l g u ns casos, igual a 9999 e , em outros, até
65000) .
Neste pont o , varias d ú v i das podem estar su rg indo na
mente do leitor; vamos ten tar escla recer a l g u mas.

- Como o programa é preparado? O p rograma pode já


ex ist i r e esta r gravado em fita cassete, fita aberta , d isco
magnético r íg i d o , fita de papel perf1Jrado, d isco magnético
flex ível ou a l g u m outro meio de armazenamento ; se o pro­
grama está sendo fe i to pel o próprio usuá r i o , ele será , nor­
ma l mente, escri to, ana l i sado e verif i cado antes de ser i ntro­
duzido no com p u tador; a· i ntrodução será fei ta através de
um teclado, seme l hante ao de uma máqu i n a de escrever.

- Co mo se pode ver o que está sendo i n trod u z i d o no


computador? Na maioria dos casos são uti l izados mon itores
(telas ti po te levisão) ou apare l h os de te levisão comerciais
(nesse caso o co m p u tad o r p rec i sa te r u m adaptad o r para 1 i­
ga r na antena d o apare l h o ) ; esses "v(d eos" m ostra m cont i­
nuamente o q u e está se'nd o c o l ocad o na memória do com pu­
tad o r at ravés do tec l ad o o u , em caso de g ravação em bai xa
ve l ocidad e , q u ando conte ú d o de u ma f i ta cassete é c o l ocad o
dent ro d o co m p u tad o r ( q uando são u sados out ros m e i os de
armazenament o , m ais rá p i dos , ta i s c o m o d i scos f l exíve i s o u
ríg i d os, não é possíve l s e ve r cont e ú d o d o programa, n o ví­
deo , d u rante seu "car regamento" ou " l oad ing" na m e m ó r i a ) .

- O que é necessário fazer para i n iciar a "tecl agem " do


programa para dentro d o computador? � necessário saber se
o computador está p ronto para receber i nstruções, o que é
indicado em geral pela palavra OK (ou, em a l gu mas versões
de BAS I C, READY), que aparece escrita no can to inferior

20
(ou su perior) esquerdo do v ídeo ; nesse momento pode ser
i n iciado o proced i mento para a carga , a p a rti r de um meio
externo ( p . ex . : fita cassete ) , ou i n iciada a teclagem manual
das instruções ; é necessário, também, a pagar o que está na
memória do com p u tador (a menos que se esteja a d i c ionando
instruções a u m programa já armazenad o ) ; quando for neces­
sário apagar o que está na memóri a , basta tec l a r o comando
N EW (ou , em a l g u mas versões do B AS I C , os comandos
CLEAR ou SC R ) .

- Co mo dar a part i d a na execução do p rogra m a ? Logo


após a i n trod ução da últ i ma l i nha do p rograma pode-se te­
clar o comando R U N , o que fará com que o programa seja
executado .

Esclarecid os esses pontos fundamentais, va mos p rossegu i r


com a descrição da orga n ização e i n trodução d e u ma p rogra­
ma em BAS I C no com p u tador.
Cada vez que se quer entra r com u ma nova l i n h a (que
terá u m n ovo n ú mero ) , é necessá rio bater na tecl a R ET U R N
(proveniente de C A R R IAG E R ETU R N , que sig n i f i ca retorno
do carro da máqu i n a de escrever e mu dança de l i n ha ) , ou ,
em alguns tecla d o s , C.R. ou, ainda, E N T ER. É importante
entender bem a seguinte mecânica:
Uma linha numerada só poae ter um certo número máxi­
mo de caracteres (letras, n.úmeros, espaços ou si nais diversos) ;
esse número, em geral, é menor que 2 56 , podendo variar com a
estrutu ra do com p u tador u sado . Assim , é conveniente mudar
de l i nha antes de chegar a esse va l or, para não ter que "es­
tou rar" a capaci dade da l i n h a , p rovocando u ma i n d i cação de
erro, por parte do computador.
Acontece que os vídeos normalmente usados não po­
dem colocar 256 ca ra cteres em uma linha. Nesses casos o ta­
manho máximo de uma linha no v ídeo va ria de 22 a 80
(apare l hos comerciais de TV usa a os como monitor). Por essa
razão, o computador subdivide a linha numerada em linhas
menores, que cabem na tela do vídeo.
Assim, se introduzirmos uma linha numerada de 72 ca­
racteres e o computador estiver preparado para um vídeo de
24 caracteres, a linha numerada aparecerá na tela como três
linhas (porém as duas últimas não começam cõm um núme-

21
ro, pois pertencem à mesma l i n h a nu merada de 72 caracte­
res ) .
Quando se está i ntrod u z i n do u ma l i n ha de p rogra ma
( n u merad a ) no computador e se term i n a a tecl agem da
mesma , é necessário bater a tecl a R ET U R N , o que perm i t i rá
a i n trod u ção de nova l i n h a .
Os COMAN DOS t ê m a ca racte rística de atuação d i reta ,
isto é, e l es não 'p recisa m fazer parte de u m program a e po­
dem ser i n troduzi dos no com p u tador sem a necessi dade de
usa r u ma· 1 i n ha n u merada.
Desse modo , ao se pressionar a tecla R ETU R N , o co­
mando será executado imed iata mente, não req uerendo a
instrução R U N . Os comandos tam bém podem fazer parte de
STAT E M E NTS, em u ma l i n h a n u merada ; nesse caso, eles só
atuarão quando o prog rama for executado, após o comando
R U N . Como exe m p l o de comando podemos mencionar :

P RINT XXXX

Quando esse coma ndo for co l ocado na máqu i n a e p res­


sionada a tecla R ET U R N , aparecerá " i m p resso" na te l a o
nú mero XXXX (ou e m u ma i m presso ra , se estiver l igada ao
computador) . Mais ad ia nte m ostra remos os comandos uti l i za­
dos no B AS I C .
Quanto à n u meração das l i n has, deve ser notado o se­
gu i nte :
- não é necessá rio usa r nú meros consecutivos ;
- a boa prática recomenda que, ao ser escrito u m p ro-
g ra m a , a n u meração deixe espaços em b ranco ; por
exemp l o , poder-se-á n u mera r as l i n has de 1 0 em 1 0
( p r i m e i ra l i nha, 1 0
- segunda l i nha, 20, e assi m por
d iante ) ; desse modo, se for necessá rio i ntrod u z i r i ns­
truções no meio do p rograma, essas instruções pode­
rão ser n u meradas n os espaços vagos ( por exemp l o ,
1 1 - 1 2- 1 3, etc. ) ;
- na hora de escrever o p rograma não é necessário
manter rigorosamente a ordem n u mérica crescente ; o
computador col ocará as i nstruções na ordem correta,
ao executar o p rogra m a ; assi m , se tivermos i ntroduz i ­
d o as l i nhas 1 0, 20, 3 0 e 4 0 e qu isermos col ocar
u ma instrução anterior, podemos teclar, em segu ida à

22
l i n ha 40, por exem p l o a l i n h a 25; na hora da execu ­
ção a l i n ha 25 será executada l ogo após a l i n ha 20;
- após ser aci onada a tecla R ET U R N , qualquer n ú mero
co l ocado no co mputador será automaticamente con ­
si derado como o n ú mero de u ma nova l i nh a ;
- toda a vez q u e u ma l i n ha f o r i ntroduzida no compu­
tador com um n ú mero de l i n h a que já ex istia n a me­
mória, a nova l i nha su bst i tu i rá automaticamente a a n ­
terior d e mesmo n ú mero ; por isso, é conveniente to­
mar cu idado ao teclar os n ú meros das l i n has, pois
corre-se o risco de a pagar ou a l terar u ma l i nha já a r­
mazenada ;
- se for i n troduzido o n ú mero de u ma l i nha, sem ne­
n h u m "statemen t " , p ressionada a tecla R ETU R N , es­
sa l i n h a fi cará em branco até que seja repetido o seu
nú mero seg u ido de i n struções ; se o nú mero teclado
corresponder a um n ú mero de l i n ha já a rmazenado, a
l i n ha anterior será apagad a ; por exem p l o , se já estava
armazenada no computador a l i nha

10 PRINT X XXX

e, posterio rmente, for i n trod u z i d o o n.ú mero 1 0 e


batido o R ET U R N , a l i nha anterior dei xará de ex ist i r
no progra m a , até q u e u ma n ova l i n ha com o mesmo
n ú mero seja i ntroduz ida .
Nos cap ítu l os seg u i n tes descreveremos os coman dos e
i nstruções existentes no B AS I C , assi m como a mane i ra de
uti l izá- l os.
G osta r ía m os, neste ponto, de fazer u ma o bservação i m­
portante, relativa mente aos sinais do a lfabeto português, em
comparação com o i nglês. Na 1 íngua i ng l esa não existem cer­
tos si nais, com o , por exemp l o , ced i l ha , ti l e acentos agudos,
g raves ou ci rcunflexos. Assi m , todos os textos que forem es­
critos em português aparecerão n a tel a ou na i m p ressora sem
esses sina is. No correr deste l ivro nós u sa remos a grafia cor­
reta em português, mas o leitor já está p reven ido para o não
apareci mento desses sinais na tel a .

23
Ex.: quando dizemos que o computador deve imprimir
COMPOSIÇÃO, daremos o comando da seguinte
forma:

1 0 7 "COMPOSIÇÃO"

Mas, n� tela, aparecerá escrito:

1 0 7 "COMPOSICAO".

24
Capítulo 111
USO DO TECLADO E DOS COMANDOS

3. 1 - TECLADO
O teclado normalmente usado para a introdução de progra­
mas em BAS1C é o denominado ASC 11 de 53 ou mais teclas, do
qual um exemplo é mostrado na página seguinte; deve-se notar
que há variantes do tipo de teclado mostrado, principalmen­
te no que se refere às teclas de funções especiais. Menciona­
remos algumas das diferenças que podem ser encontradas,
mas o leitor deverá verificar, no teclado que tiver à sua dis­
posição, quais as teclas que efetuam as funções que serão
descritas. Em alguns teclados, a segunda função, que aparece
desenhada em cima das letras, não está explicitada nas te­
clas, ou seja, só aparece a letra propriamente dita; no entan­
to a segunda função existe, e o leitor deverá verificar qual a
sua posição no teclado (provavelmente é a m8sma que será
descrita a seguir).

3.1.1 - Teclas n umencas: as teclas indicadas 1 a í/J ( ze­


ro) representam esses algarismos quando não está pressiona­
da a tecla SH 1 F T (falaremos mais sobre esta tecla mais a d i ­
ante); quando s e pressiona a tecla SH 1 F T e, a o mes m o tem ­
po, uma das teclas numeradas, será introduzido n o computa­
dor o símbolo que está em cima do número p ressionado :
! " * $ % & ' ( ).

3. 1.2 - Teclas de letras: q uando não está p ressi onada a


tecla SH 1 F T , as letras maiúsculas serão i n trodu z idas ; q u a ndo
é aper tado o SH 1 F T e, ao mesmo tem po uma tecl a de l etra ,
será i n trod u z i d o u m outro s ímbo l o ou seg u n da fu n ção , que
depende do teclado usado.
Gera l mente os seg u nd os s ímbo l os ou fu nções são :
- em cima d o O : �, flecha que i n d ica o a pagamento
do ú lt imo caracter i n trodu z i d o ( letra , n ú mero, s ímbo-
25
AS P E CTO D O T E C LADO
ASC 11-53 ( * )
V E R SÃ O N O R M A L

ITJ ITJITJ OJ ITJ DJ ITJ OJ DJ GJ CJ [] B


B�GJGJGJQGJGJQGJQ[ 1 RETURN

8 GJ GJ GJ GJGJGJ GJITJITJCJG B
B GJQ GJGJ GJITJITJ CJ[J ITJB
1 SPACE
1

ASP E CTO D O T E C LA D O
A S C 11-53 ( * )
V E R SÃO COM M I N ÚSCULAS

CJ CJ ITJ ITJ [IJ ITJ [] ITJ ITJ GJ CJ [] g


EJGJGJGJGJQQGJQGJQI 1 RETURN

Qnn nnnnnlll GJ l+I SHIFT o o


L_j � L:_j � LJ � � L__.:j � � L_j LOCK LJ LJ

BGJQGJGJGJITJGJDDDEJ
1 1 SPACE

*ASCII: AMERICAN STANDARD CODE FOR INFORMATION INTERCHANGE


ESTE TECLADO, O MAIS USUAL, TEM 53 TECLAS - EXISTEM MAIO­
RES E MENORES.

26
l o ou espaço ) ; isso tem a f i na l i dade de se efetuar
correções n a h o ra de i n troduz i r u m program a n o
co m p u tador, quando se ver i f i ca ter sido co met i d o u m
erro d a dat i l ografia ; esse mesmo efe i to é obt i d o com
a tecl a +-;

Exem p l os :
a ) fo i tec l a d o 10 PRINN
verifi cado o erro, tecl a -se o O com S H 1 F T ou +-

aparece 10 PRIN _ ( o cu rsor vo l tou u ma casa )


fêcla-se a l etra desejada
1 0 PRINT

na mem ó r i a do com p u tador foi i ntrod u z i da a


pa lavra· certa P R I N T .

b ) pode-se a paga r m a i s d e u ma letra :


fo i tec l a d o 10 P R RIN T
ver i f i cado o erro, tecla-se O com S H 1 F T tantas
vezes q u a n tas letras se q u e r corr i g i r (seg u n d o R , I ,
N , espaço , T, ou seja , 5 vezes) . Apa rece ·na tela :
10 PR_
correção : 10 PRINT

-em c i m a d o P : @ (a rroba ) , cuja f i n a l i dade, em a l g u ns


ti pos d e B AS I C , é apagar a l i n h a que está sen d o es­
crita , sem alterar u ma l i n h a ante r i o r que já ten h a o
mesmo n ú mero ; ao ser tecl a d o P com S H I FT, ou se­
ja, @, não é necessári o tec l a r R ET U R N , pois a tecl a
@ p ro du z o efe i to d e m u da n ça d e l i n ha e retor n o d o
carro .

Exem p l o : Programa j á ex isten te


10 P R I N T XXXX
20 P R I N T YYYY
30 E N D

Quere m os corr i g i r a l i n h a 2(/J, m u da n d o para ZZZ.


Tec l a mos 20 PRINT z
Nesse m o mento, antes de teclar RETURN , m u da mos
de i d é i a e q ueremos m a n te r a l i n ha 2(/J ta l com o esta-

27
va e co l oca r a n ova l i n ha com o n ú mero 2 5 ; tecla­
mos @
20 P RINT Z @
25 P RINT ZZZ

Ago ra o p rog ra m a esta rá na memória com o segu i nte


aspecto :
10 P R INT XXXX
20 P R INT YYYY
2 5 P R INT ZZZ
30 END
Nota Importante : se , depois de tecl a r 20 P R I N T Z ,
tec l a rmos R ET U R N , a l i n ha anter i o r será su bst i tu ída
pel a n ova ; nesse caso , para corr i g i r o p rogra ma tere­
m os que tec l a r nova mente a l i n ha 20 P R I NT YYYY
e depois tec l a r a n ova l i n h a 25 P R I NT ZZZ.

- em ci ma d o N : t ou A, cuja f i n a l i dade é e l evar u m


n ú mero a u ma potência ; por exem p l o , se q u isermos
escrever 23, deveremos tec l a r 2 t 3 ( o u , conforme o
tec l ado, 2 A 3).
- e m cima d o K: [ (seg u n d o co l chete, esquerd o ) ; serve
pa ra se u sa r dentro de ST R 1 N G S ; não tem f u n ção es­
pec ífica n o BAS I C , em gera l .
- e m c i m a d o L : \ ( ba r ra i n c l i nada para a esquerd a ) ;
dependen d o da versão d o B AS I C utilizada, serve para
sepa ra r i nstruções d i ferentes col ocadas na mesma l i ­
n h a (verem os isso mais a d i a n te ) ; a l é m d isso é u m s i ­
n a l q u e pode ser u sa d o dentro de u m ST R 1 N G .
- e m c i m a d o M: ] ( mesma observação j á vista aci ma ) .
Observação : e m d i ve rsos t i p os de tecl ado a pa rece a
tecl a +- o u a tec l a Back Space , que tem a mesma
fu n ção descrita em rel ação ao S H 1 F T O; da mesma
for m a pode ser encontrada a tecl a t , que tem a fu n ­
ção desc r i ta para S H I F T N .

3.1 .3 - Letras minúsculas: e m a l g u ns teclados é poss í­


ve l se tec l a r letras m i n úscu las; em gera l e l as n ão podem
ser usadas para i ntroduz i r i n struções ou comandos no com­
puta d o r, sendo perm i t i das apenas para i m pri m i r t ítu los de

28
p rogramas ou outras frases, exclusivamente como pa rte de
ST R 1 NGS (vej a mais a d i a n te ) .
N os teclados que per m i te m letras m i n úscu las, as d u as te­
c l as SH 1 FT (esquerda e d i re i ta ) têm funções d i ferentes : a
tecla SH 1 FT esq uerda apertada faz o teclado funci o n a r nor­
ma l mente ( tecl as m a i úscu l as, n ú meros, etc . ) ; a tec l a d i re i ta
faz aparecer a seg u n da fu nção ou seg u n d o s ím bo l o ; se ne­
n h u ma das tecl as SH 1 F T for a pertada , as tec las de letras fa­
rão aparecer as m i n ú scu las.
i:. evi dente que, se q uere m os t rabalha r a maior pa rte do
tem p o com o tec l a d o norma l , torna-se i n conven iente f i ca r
apertando a tecla S H 1 FT esq uerd a ; nesse t i p o d e tec l a d o
aparece, então , u ma n ova tec l a , que p rende ao ser apertada,
den o m i nada S H 1 FT LOC K e q u e faz o papel da SH 1 F T es­
q u erda ; q u a n d o queremos usa r m i n úscu las, basta p ress i o n a r e
so ltar a SH 1 F T LOC K ; q u a n d o a SH 1 FT d i reita é apertad a ,
e l a passa a p reva lecer sobre a SH I FT LOC K , perm i t i n d o o
uso da segunda f u n ção sem necessidade de so ltar esta ú l t i m a .
E m d iversos ti pos d e tec l a d o , ex iste u ma tec la espec i a l
q ue faz passa r d e m a i úscu las para m i n úscu l as e vi ce-versa ;
basta p ressionar u m a vez e é fe i ta a mudança ; press i o n a n d o
ou tra vez v o l t a a o t i po anter i o r ; nesses tec lados a s d u as te­
c l as SH 1 FT tem a mesma fu nção , já mencionada .
.

3. 1 .4 - Teclas especiais: as teclas que têm fu nção espe­


c ífica são as seg u i n tes :

- R ETU R N ( o u C . R . ) : serve para m u d a r de l i n ha ,


q u ando se está i n t rod u z i n d o u m p rograma ; deve ser aperta­
da, ta m bém, para i ntrodu z i r q u a l q uer comand o , do t i po
P R I N T , R U N , etc.
- B R E A K : i n terro m pe a execução de q u a l q uer p rogra­
ma e faz o computador retornar à posição i n i c i a l ( a q u e l a
q u e aparece l ogo a pós a máqu i n a ser l igada ) ; dependendo d o
t i po de com p u tador e da tec l a apertada a pós o B R EA K , o
p rogra ma que estava a rmazenado poderá ou não ser apagado ;
o leitor deve consu ltar a s i n struções d o com p u ta d o r que
estive r usando para ver i f i ca r as conseq üências d o uso d a te­
c l a B R EA K . A t ítu l o de exem p l o descrevemos o que ocorre
com o m icrocomputador d o autor.

29
Ao ser ligado o computador, aparece escrito na tecla
do vídeo:

O/ C/ W/ M ?

O operador deverá teclar uma dessas letras para indicar


o tipo de operação que vai realizar:
D - operação com disco magnético (que tem algumas
instruções especiais no BASIC).
C - operação em BASIC, com inicialização, isto é, cer­
tas rotinas internas do programa interpretador são passadas
para a memória de trabalho, possibilitando o início da ope­
ração; essa tecla é usada quando o computador é ligado e se
deseja trabalhar em BASIC (C provém de ·cold StartL
W - é usada quando , no meio do trabalho em B AS I C ,
houver necessidade de se apertar a tecla B R E A K (ou quando
isso acontece acidentalmente); depois do B R EA K , o compu­
tador volta para a posição D/C/W/M?; ao ser apertado o W ,
o computador está , novamente, e m ação, não tendo sido
apagados os programas já gravados (Warm Start).
M - é usada para operar em linguagem de máquina
(que não é objeto deste livro).
Observação: em diversos computadores a tecla BREAK
tem a função de interromper a execução de um programa,
de maneira idêntica ao que é descrito em relação a CT R L C;
nesses casos a função descrita acima (retorno à condição ini­
cial) é obtida com uma tecla ou botão denominarlo RESET.
- C O N T R O L ou CT R L : essa tecla deverá ser usada si­
multaneamente com algumas outras teclas, para obter dife­
rentes efeitos:
a) com a tecla C: provoca a interrupção do programa
que estiver sendo executado, resultando uma mensa­
gem do computador para o usuário do tipo:

B R E A K IN XX

o que indica que a próxima linha que seria executa­


da, antes da interrupção, seria a linha n<? X X . O co­
mando C T R L C é muito útil para interromper um
programa que, por exemplo , tenha entrado em
"loop" (o programa roda de uma instrução para ou-
30
t ra e vo l ta , f i cando em operação i n i nterru pta ) ; com
o co m a n d o CTR L C o " l oo p " pode ser i n terro m p i d o
e efetu ada a correção de u m eve n t u a l defe i to n o p ro­
grama;
b ) e x i stem o u t ras l etras que podem ser usadas e m con­
j u nto com C O N T R O L ; n o e n ta n t o , seu u so não é co­
m u m no B AS I C e as funções que e l as tê m são preen ­
ch i d as por o u t ras tec las ou conj u nto de teclas, com o
está sen d o ex p l i cado neste cap ítu l o . E m tel e processa­
mento , ou em sistemas m a i s co m p lexos q u e u sa m
BAS I C , poderá aparecer o uso dessas tecl as, q u e des­
crevem os para com p l eta r a i n formação :
CT R L G - pa ra acionar si n eta de a l a rme
CT R L H - para dar retrocesso no cu rso r
CT R L J - provoca o p u l o de u ma l i n h a ( L I N E
F E E D- )
CT R L V - avança o cu rso r
C T R L X - apaga a l i n h a q u e está sendo i ntro­
d u z i da
CT R L A - prod u z o m es m o efe i to i n d i cado aci­
ma, pa ra SH 1 FT P (a rroba ) , e m cer- •

tos m i croco m putadores

- E SC é u m ca racter usado para d a r sign i f i cado espe­


c i a l a um conjunto de ca racteres cont íg u os, den o m i nados se­
q üência de escape .

3.2 - O R GAN I ZAÇÃO DAS I NST RUÇÕE S NO V fD E O

Neste i te m a bo rdaremos a l g u ns aspectos q u e j u l ga m os


ser do i nteresse dos usu á r i os de m i croco m p u tadores em
BAS I C , n o que se refere à m a ne i ra de aparecer e à l oca l i za­
ção das i nst ruções e resu l tados n a te l a .
a ) A te l a é d iv i d i da e m n casas, ou sej a , perm i te a intro­
d u ção de n caracteres por l i n h a : a posição do p róx i ­
mo ca racte r a entra r é ma rcada p o r u m cu rsor, ou se­
ja , u m sina l q u e se move da esq uerd a para a d i re i ta ,
à proporção q ue o s ca racteres vão entrando; su pon h a­
mos q u e o m o n itor ou apare l h o d e TV u sado perm i ­
t a 2 4 ca racte res em u ma l i n h a e perm i ta 2 4 l i n has
na te l a i nte i ra . As casas são n u meradas-de (/J a 23, e
31
tudo o q u e for tec l a d o pel o operador co meça rá na
casa í/J, depois de um R ET U R N .
E x . 1 : Va m os tec l a r u m p rogra ma, após a paga r o
q u e já estava n a memória (veja m a i s a d i a nte
os coman dos N EW, P R I N T e L I ST) :
N EW
OK
10 PRINT "A BCDEFGHIJKLMN
OPORSTUVXYZ"
RUN
A B C D E F G H I J K L M N O P Q R STU VXY
z

OK
t__ ( casa í/J)

Ver i f i camos q u e tu d o o que fo i tecl a d o e o p rog ra­


ma que foi executado começou na casa (/J e fo i até a
casa 23 ( ev i dentemente o p rog ra ma corta as p a l avras
sem se i m p o rta r com a questão da d iv i são correta de
s íl a bas) .
b ) Dependendo do t i p o de m i croco m p utador u sa d o , as
l i n has serão p reench i das de c i m a para ba i x o ( o cu rso r
va i desce n d o , a pós cada l i nha ser com p l eta d a ) ou as
l i n has são sem p re i m p ressas na pri m e i ra ca rre i ra de
ba i x o da te l a e vão su b i n d o , à p roporção q u e vão fi­
cando co m p letas : nesse caso o cu rso r n u nca sa i d a
p r i mei ra l i n ha de ba i x o : f i ca a n d a n d o , da posi ção (/J
para a posi ção 23 e depo is vo l ta para posição í/J, e n ­
q u a nto a l i n h a com p l etada sobe u m passo .
E x . 2 : de c i ma para ba i x o :
1 0 P R I N.T " A B C D E F G H IJ K LM N +- (1':l l i n ha su pe­
OPOHSTU V XYZ - �
( c u rsor aguardando o
peri o r da te l a )

p róx i m o ca racte r )

E x . 3 : d e ba i x o para c i ma :
1 0 P R I N T " A B C D E F G H IJ K L M N 1(1':l l i n h a i n fe-
OPO R ST U V XYZ - ( . r i o r da te l a )
( c u rso r ) __J
32
i: c l a ro q u e , n o p ri m e i ro caso , quando o cu rso r che­
ga na ú l t i m a l i n h a i nfer i o r da tel a , a part i r d a í, en­
quanto não for apagada a te l a , o c u rsor t ra ba l ha rá
nessa l i n ha , se com p o rta n d o como no seg u n d o caso .
c) No B AS I C não é necessár i o deixar espaços entre as
instruções, co mandos, dados e ST R 1 N G S; o p ró p r i o
prog ra m a de B AS I C s e enca r rega d e fazer a separação
das d iversas pal avras entre si .
E x . 4 : 1 0P R I N T"ABC" ;" D E F "
20P R I NT5+3 * 1 2
No enta n to , q ua n d o for dado o comando L I ST , a l i s­
tagem já aparecerá na te l a com todos os espaços ne­
cessá r i os (aqueles que separa m a l ga rismos ou n ú me­
ros dos outros caracteres ou , em certos casos, sepa­
·
rando os comandos ou i nstruções) .
L I ST
10 P RI N T" A B C " ;" D EF"
20 P RI N T 5 + 3 • 1 2

d ) U m outro ponto i n teressan te de n ota r é q u e , q ua n d o


i ntrod u z i mos u m p rograma n o com p u tador, todas a s
entradas começam na casa 0; n o entanto , q ua n d o
mandamos l ista r , os n ú meros correspondentes às l i ­
nhas d e i x a m u m espaço e m branco; todo n ú me ro , a o
ser p rocessad o pel o co m p u tador e ao ser i m p resso ,
deixa u ma casa em b ra n co na fren te ( para u m eve n ­
tua l si n a l negativo):
Veja o exe m p l o anteri o r :
L I ST
10 P RI N T' A BC";" OEF"
20 P RI N T 5 + 3 • 12
a -(casa 0)

OK

3.3 - COM A N DOS

Conforme foi men c i o n a d o , os comandos d o BAS I C são


instruções que o compu ta d o r exec u ta no den o m i nado "mo-

33
do d i reto " , isto é , tão l ogo se dá entrad a , através da tec l a
RETU R N .
Os com a n d os podem ser executados a q u a l quer momen­
to (exceto e n q uanto o com p u tador está executando um p ro­
grama ) , i st o é , mesmo que haja um p rogra m a em sua memó­
ria (já executado ou a i nda não ) .
Ao est u d a r mos cada u m dos coman d os verem os q u e ,
freq üenteme nte, é úti l , d u ra n te a tecl agem de u m p rogra m a ,
efetua r u m comando para i ntrod u z i r dados, verificar certas
situações d e estado de memórias, etc . A execução de u m
co ma n d o , d u ra n te ou a pós a i n trodução d e u m prog ra m a n o
com putador n ão afeta esse p rogra m a , podendo a i n t ro d u ção
ou execução d o mesmo ser fe ita n o r m a l mente, após a execu­
ção do com a n d o ( h á exceções, j á que certos comandos po­
dem a l terar o conteú do das memórias, m o d i f i cando, natu ral ­
m e n te , o p rogra m a que está sen d o i ntrod u z i do ) .
N o q u e se segue vamos ad m i t i r que está enten d i d o q u e ,
para aci ona r u m coma n d o , ou para entra r c o m n ova l i n h a
n u merada , sem p re será bat i d a a tecl a R ET U R N (ou C . R . ) ;
por isso , n ão m a i s faremos refe rência à mesma, a não ser
em casos bem espec i a i s . U ma o u t ra o bservação i m portante é
que, toda a vez que for i ntroduz i d o u m comando e tec l ad o
o R ETU R N , o co m p u tador executará o comando e m ostra­
rá a mensagem O K (em gera l pu l a n d o u ma l i n ha a pós a
execução d o co mando ) . O mesmo ocorre a pós à execução
de p rogra mas i n trod u z i dos em modo i n d i reto (com l i n has
n u meradas).
Os p ri n c i pa i s comandos d o B AS I C são :
3.3.1 - N EW (ou C L E A R ou SC R ) : d iz ao com p u ta d o r
que todos os p rogra mas a n teri o r mente a r mazenados, e m
BAS I C , devem s e r apagados, para a i ntrodução de u m n ovo
progra m a .
E x . : pa ra a paga r o s progra mas a rmazenados tecl a rem os
N EW
e, a pós, a tec l a R E T U R N ; o com p u tador responde­
rá com OK (ou R E A DY ) , e as memór i as estão
p r o n tas para receber n ovo p rogra m a .
3.3.2 - R U N: é o coman d o q u e faz o computador exe­
cu ta r o p rogra m a que está a rmazenad o ; a pós a entrada de
tod o o p rogra m a , co m as l i n has n u meradas, e após tec l a r o
34
ú l t i m o R ET U R N , entra-se com o co ma n d o R U N e , depo i s
d o R E TU R N , o p rogra ma será executado; e m a l gu mas ver­
sões de BAS I C é poss íve l co l oca r u m n ú mero de l i n ha após
a palavra R U N , o q u e fa rá com q u e o co m p utador execute
o prog rama a partir da l i n h a cujo n ú mero fo i i n d icad o .

E x . 5: RUN 30
o p rogra ma começará a s e r executado a part i r
d a l i n h a 30; esse· t i po de poss i b i l i dade é bastan ­
te com u m n a s versões de B AS I C m a i s e ncontra­
das n o mercad o .
Essa faci l i dade é i m porta n te d u ra n te o teste d e p rogra­
mas, quando os mesmos estão sendo p repara d os.
Ex. 6: 1 0 (statement)
20 (statement)
30 (statement)
40 (statement)
50 (statement)
Queremos testar se as l i n has 30, 40 e 50 estão funcio­
nando :
Tecla mos R U N 30 e o com p u tador executará o p rogra­
ma da l i n h a 30 em d ia n te , até o f i m .

3.3.3- L I ST é o com a n d o q u e i n struí o com p u tador


para apresenta r, n a te l a d o v ídeo ou e m u ma i m p ressora , a
l istagem do p rogra ma q u e está a rmazenado e m sua memóri a .
� i m portante nota r q u e tudo o q u e aparecer após u m nú me­
ro será i n te rp retad o pe l o com p utador co m o sendo u ma l i n h a
d e i n strução n u me rada; como já mencionado atrás, q u a l quer
nú mero tec l a d o a pós um R E T U R N será i nterpretado com o
nú mero de u ma n ova l i n h a . .
U ma caracter íst i ca i m portante d a l istagem é q u e as l i ­
nhas apa recerão n a ordem crescente de n u me ração , mesmo
que tenham sido i nt rodu z i das fora de o rdem; isto é i m po r­
ta nte para se poder ver i f i ca r como está a r m azenado o p ro­
grama na m e m ó ri a . i: u ma boa p rática l istar o p rogra m a ,
para u ma ver i f i cação visu a l , a n tes de m a n d a r executá- l o ( o u
sej a , antes de d a r o com a n d o R U N ) .

E x . 7: i n trod u z-se o co m a n d o L I ST
aperta-se a tec l a R E T U R N

35
o com p u tador l i sta rá o que se encontra na me­
mória :
1 0 (statement )
20 (statement )

1 90 (statement )
O K (co ma ndo o u progra ma co ncl u ído )
O co mando L I ST també m pode ser en de reça d o , i sto é ,
co l ocan do-se o n ú me ro de u ma l i n ha a pós a pa l avra L I ST , o
co m p u tador l ista rá a l i n h a q ue tem a q u e l e n ú mero:
E x . 8: L I ST 20
o co m p u tador a p resenta rá a l i n h a 2í/J
20 (statement )

OK

Ta m bé m podem ser dados d o i s n ú meros, e o com p u ta­


dor l i sta rá o prog ra m a q u e se encontra entre as l i n has que
têm a q u e l es n ú m eros :
L I ST 20 - 50
o co m p u tador a p rese n ta rá :
20 (statement )
30 (statement )

50 (statement )

OK
Se , após o p ri m e i ro n ú mero , for co l ocado o h ífen e
não fo r co l ocado o seg u n d o n ú mero , o com p u tador l i stará
todo o p rograma a partir d o p r i mei ro n ú mero i n d icado :
L I ST 30 -
o co m p u tador a p resenta rá :
30 (statement )
40 (statement )

1 00 (statement )

OK
36
(supondo que 1 í/Jí/J seja o n ú mero d a ú l t i ma l i n ha d o p ro­
grama que estava a rmazenado n a memóri a ) .
A contrá r i o , se fo r co l ocado u m h ifen e , depo i s , u m
n ú mero, o co m p u tador l i sta rá o p rograma desde a p r i mei ra
l i n h a a rmazenada até a l i n h a cujo n ú mero fo i i n d i ca d o :
L I ST - 60

o com p u tador ap resenta rá :


1 0 (statement )
20 (statement )
60 (statement )

OK

O coma n d o L I ST, associ a d o às i n d i cações de n ú mero


de l i n ha , é m u i to ú t i l na fase de p repa ração e correção de
p rog ra mas, pois dá a possi b i l i dade de se ver i f i ca r como está
a r mazenada cada i n strução , l i n h a a l i n ha ou por conj u nto d e
l i n has.
3.3.4 - PRINT é o coma n d o que i nstru i o com p u ta­
dor pa ra apresenta r , na te l a ou e m u ma i m p ressora , u ma de­
te rm i nada mensage m , n u mérica ou a l fa n u mé r i ca .
E sse coma n d o pode ser u sado de d ive rsas manei ras :

A ) I m p ressão de STR I NGS


Uso pa ra. i m p ressão de pa l avras ou conj u nto de p a l a ­
vras, selecionadas pe l o p rogra m a d o r ; esse conj u nto de pala­
vras ou nú me ros deverá ser col oca d o entre aspas ( " ) , pa ra
que o co m p u tador " i m p r i m a " exata mente tudo o q u e está
dentro das aspas, seja m letras, a l ga r i s m os, s i n a i s , espaços, etc .
( o bv i?mente não se pode co l oca r aspas n esse conj u nto de
s 1-m bo l os entre aspas ; ver n ota m a i s a d i a n te ) .

E x . 9 : 1 Ql P R I N T " E STÁ T U DO B E M "


2 0 P R I N T " I STO É U M P R OG R A MA"
30 E N D
R UN
E STÁ TU D O B E M
i ST O E U M P R O G R A M A

OK

37
A i nstrução 1 0 manda o computador i m pri m i r a frase
E STÁ T U D O B E M ; a i n strução 20 manda o co m p u tador i m­
pri m i r I STO É U M P R O G R A M A ; a i n strução 30 i n d i ca o
fi m do p rogra m a ; as letras O K i n d ica m que o p rograma fo i
executado e o computador aguarda n ovas i nstru ções ; n ota-se
que as frases fo ra m i m p ressas, ou co l ocadas no v ídeo , sem
aspas, pois a i n strução manda i m p ri m i r o que está en tre as
aspas.
Den o m i n a-se ST R I N G o conj u nto de l etras, n ú meros,
s í m b o l os, espaços, etc . que aparecem e n t re aspas e que
são tratados pe l o co m p u tador como um b l oco se m nen h u m
sig n i f i cado especi a l ; mesmo q u e se co l oque dentro d o
ST R 1 N G u m co mando o u i n strução, o co m p u tador não i n ­
te rp reta rá esse comando, p o i s consi dera o conj u nto entre as­
pas co mo u ma "ca i x a p reta " , a ser tratada a penas como u m
conj u nto d e ca racteres.

E x . 1 0 : 1 0 P R I N T " L I ST 20"
20 P R I N T " N EW"
30 E N D

RUN

J
L I ST 20
N EW +- isto é o que apa rece na te l a

OK

É m u i to com u m encontra r-se versões d e B AS I C nas


quais a pa l avra P R I N T pode ser su bst i t u i'd a pe l o ca racte r ?
( i n terrogação ) ; ass i m , em vez de se esc rever P R I N T , usa-se
o s i n a l ? , o q u e d i m i n u i o esfo rço dat i l ográf ico, en tre outras
vantagens.

Ex . 11 : 1 0 ? "COMO VAI ?"

RUN
COM O VAI?

OK

38
Note-se que o s i n a l de i n terrogação que está dentro d o
ST R 1 N G não é i n te r p retado pel o computador com o i nstru­
ção de P R I N T .
Quando f o r ped i d a u ma l istagem do p rog ra ma a r m aze­
nado, a i n terrogação será s u bstitu ída pe l a p a l av ra P R I N T
(que é o sig n i ficado da i n terrogação , para o B AS I C ) .

E x . 1 2 : 1 0 ? " H OJ E É D I A"
20 ? " 1 5 DE J U L H O"
30 E N D
RUN
H OJ E É D I A
1 5 D E JU LHO

OK

L I ST
1 0 P R I N T " H OJ E É D I A"
20 P R I N T " 1 5 D E J U L H O"
30 E N D

OK

Nota-se , n os exemp los ac i ma , que cada i n stru ção


P R I N T {ou ? ) faz com que o ST R I N G correspondente seja
i m presso em u ma l i n ha d i ferente na te la ou n a i m p ressora .
E x istem, n o enta n to , mane i ras de fazer com q u e a frase
toda seja i m p ressa na mesma l i n h a ; a mane i ra ó bvia é co lo­
ca r tudo dentro d o mesmo S T R I N G .

1 0 P R I N T " H OJ E É D I A 1 5 D E J U L H O "

Po rém, ex i stem casos e m que n ã o é poss íve l fazer-se i s­


so ; por exe m p lo, q u a n do a f rase e m u ito l o n g a { ma i s de 256
ca racte res n a l i n h a ) ou q u a n d o os pedaços da frase p recisa m ,
por qu estões d e p rogra ma , aparecer e m l i n has n u meradas d i ­
fe rentes.
Nesse caso pode ser u sado o segu i n te a rt i f íci o:
Após cada i nstrução P R I N T e depo is do ST R I N G , após
as aspas, é co l ocado o s i n a l de ponto-e-v írg u l a ( ; ), o q u a l
é i n terpretad o co m o u ma i n strução para q u e o p róx i mo

39
ST R I N G a ser i mpresso seja col ocado l ogo em segu ida ao
pri meiro.

NEW (apagamos os programas anteri ores)

OK (o computador está pronto )

Ex. 1 3: 10 P R INT " H OJE É DIA" ; ( n ote o ponto-e-v írgu­


la)
20 ? " 1 5 D E J U LHO" - ( não precisa d e ponto­
e-v írg u l a se for o f i m
30 END da frase )

R UN
H OJ E t D I A 1 5 D E J U L H O

OK

Ex . 1 4 : 1 0
10
?
? " É DIA " ;
]
" H OJ E " ;
( n ote o ponto-e-v írg u l a )
30 ? "1 5 DE ";
40 ? "J U L HO" (sem ponto-e-v írg u l a )
50 END

R UN
H OJ E t D I A 1 5 D E J U L H O

OK

i: i m portante n otar que não se deve col ocar ponto-e­


v í rgu l a após a ú lti ma parte da frase que deve ficar na mes­
ma l i n ha ; se for col ocado o ponto-e-v írgu la, a próx i ma i ns­
trução de P R I N T será executada na mesma l i n ha da frase
anteri or, o q ue, provavel mente , não é desejado.

Ex . 1 5 : 10 ? " H OJ E É ";
20 ? " DIA 1 5 DE J U LHO"
30 ? "AMAN H Ã SE R Á ";
40 ? " 1 6 DE J U LHO"
50 E N D

RUN
40
H OJ E E D I A 1 5 D E JU L H O
AM A N H A SE R A 1 6 D E JU L H O

OK

Observe que as l i n has 20 e 40 não term i nam e m ponto­


e-v frgu la; dessa forma a segu n da frase ficou em l i n ha separa­
da e u ma nova frase fi cará em outra l i n ha na tel a .
U ma outra observação i m portan te se relaciona c o m os
espaços entre palavras: todos os espaços necessários devem
ser col ocados dentro d o ST R I N G .
Veja mos os segu i n tes exem p l os :

E x . 1 6 : N EW

OK
1 0 P R I NT "COMO VA I "
2 0 P R I N T "VOCt ? "
30 END
RUN
C O M O VAIV OCE?

OK

(verifique q ue as aspas depois d o VA I e antes d o VO­


C� estão co l ocadas sem espaço ; assi m , o seg u n d o
ST R I N G será emendado n o pri mei ro ) .

E x . 1 7 : N EW

OK
1 0 ? "COMO VAI " ; (espaço depois do VA I )
20 ? "VOCt ?" (sem espaços)
30 E N D
R UN
C O M O V A I V OC E ?

OK

( o espaço col ocado dentro d o p ri meiro ST R 1 N G apare­


ce na frase após a pa lavra V A I ) .
41
Obv i a mente, o mesm o efeito se ria consegu i d o se fosse
co l ocado u m espaço no segundo STR 1 N G , a n tes da pa l avra
VOC Ê .
U ma o u t ra ca racte r ística i m porta n te re lacionada com a
i n strução P R 1 N T é o fato de se poder co l oca r m a i s de u m
ST R 1 N G n a mesma l i n ha d e p rogra ma ; n esse caso os
ST R 1 N G S d ife re ntes devem ser separados por ponto-e-v írg u l a .
E x . 1 8 : 1 0 P R I N T " H OJ E É " ; " D I A 1 5 D E J U L H O "
20 E N D
R UN
H OJ E É D I A 1 5 D E J U L H O

OK
M a i s a d i a n te veremos q u a l a u t i l i dade d e se co l oca r
m a i s de u m ST R 1 N G n a mesma l i n ha , em bora , em p ri n c íp i o ,
se p u d esse co l ocar t u d o dentro das mesmas aspas.
Até agora vi m os que o uso de pon to-e-v írg u l a perm i te
justa por e x pressões co l ocadas e m ST R 1 N G S d i ferentes . É ·

poss íve l , n o e nt ra n to , fazer a mesma coisa com v írgu l a ao


i n vés de ponto-e-v írgu l a . Apenas, e isto é m u ito i m porta n te ,
a v írgu l a te m u m t i po de operação d i ferente :
- já v i m os q u e u ma l i n h a de p rog ra m a tem espaço para
N ca racteres ; a v írgu l a separa . esses N ca racte res e m
zonas, ou seja , são marcadas posi ções b e m defi n i das n a
l i n ha , n a s q u a i s começará a se r i m p resso o p róx i mo
S T R I N G i n d icando após a v írgu l a ; n o caso de u m com­
putador cuja zona ten ha 1 4 caracteres as posi ções cor­
respo n d e n tes aos caracte res n C? í/J , 1 4 , 28, 42, 56 e 7(/J
são f i x as, marca n d o o l u ga r onde co meça a i m pressão
do p róx i m o ST R 1 NG (considera n d o u m v ídeo co m 24
ca racte res por l i n ha ) .
E x . 1 9 : 1 0 P R I N T "A", " B ", " C D "

( v írgu l a ) 1 1 l
(sem v írgu l a }=---_J
20 E N D
RUN
A B
CD
OK
42
A está na pos1çao í/J, B na pos1çao 1 4 e C D co m eça na
posição 28 ( q u e é na o utra l i n h a de te l a ) .
E x . 20 : 1 0 ? "AAAAAAAAAAAAAAA", ( 1 5 A's)

(v írgu l a ),__
___ _.J
20 ? " B B "
30 E N D
RUN

( u ma l i n h a de v ídeo com 24 posições)


AAAAAAAAAAAAAAA
t t
( pos. (J ) ( pos. 1 4 )
88 ( p róx i m a l i n h a de v ídeo )
t
( pos. 28)

OK
No exem p l o 20 verifica m os d u as coi sas : a v ír­
gu l a está no f i m da l i n h a de nú mero 1 í/J; i sso
fu nciona da mesma forma como se e l a estives­
se entre os ST R I N G S (co m o no exem p l o 1 9 ) ;
a posição 1 4 não foi u sada pel o seg u ndo
ST R 1 N G , pois o p r i mei ro t i n h a mais de 1 4 ca­
racteres; ass i m as letras começa ram a ser i m ­
p ressas n a p róx i m a posi ção d ispon íve l ( posi ­
ção 28 ) .
Nota: o ta man h o das zonas va ria conforme o com p u ta­
dor usado; n o r m a l mente u ma zona não tem mais de 16 ca­
racteres.
A i n strução P R I N T, dentro de u m p rogra m a , pode ser
usada para pu l a r l i n has ( i sto é, i m p ri m i r l i n has em branco ) ;
para isso basta co l ocar P R I N T, sem nen h u m ST R I N G a pós
essa i nstrução .
E x . 2 1 : 1 0 P R I N T "AA"
20 P R I N T
3 0 P RI N T
4 0 P R I N T " B B"
50 E N D
RUN

43
AA ] ( d u as l i n has em branco )

BB

OK

E x . 22 : 1 0 P R I NT
20 ?
30 P R I N T
40 P R I N T "A"
50 P R I N T
60 P R I N T "C"
70 ?
80 ?
90 P R I N T
1 00 E N D
RUN
..
1

! l t rês l i n has e m b ra n co , con forme i n stru ções


l 1 0, 20 e 30 )
-•
A ( i nstrução da l i n h a 40 )
J ( i nstrução da l i n h a 50 )
e ( i n strução da l i n h a 60 )
.,
1
1

l ( i n struções das l i n has 70, 80, 90 )


1
-�

·. 1: (espaço normal mente ex istente )

OK

Vamos ap roveita r o p rogra ma do exem p l o 22 para fazer


algu mas man i p u l ações q ue per m i t i rão a assi m i l ação dos con­
ce i tos já ex postos ( i ncl usive outros comandos ) :
a ) Aoós a execução do p rograma d o exe m p l o 22 aci m a ,
sem teclar N E W, va m os L I S Ta r o p ro g ra m a , p a ra ver
com o o mesmo se encontra na memória do compu­
tador :
44
L I ST
10 P R I N T
20 P R I N T
30 P R I N T
4 0 P R I N T " A"
50 P R I N T
60 PRINT C " "

70 P R I N T
80 P R I N T
90 P R I N T
1 00 E N D

OK ( i n d ica que a i n strução , ou seja , o comando


L I ST, foi executado)

Nota-se que os si nais ? foram su bstitu ídos, na l ista­


gem , pelas pa l avras P R I N T .
b ) Va mos d i m i n u i r a l g u n s espaços, refazendo a l g u mas
l i n has :

tecle - 20 ( não co loque nen h u ma i nstrução )


( aperte R ET U R N )
tecle 80 ( ne n h u ma i n strução )
-

( aperte R E TU R N )
tecle L I ST ( pa ra ver como ficou o p rograma )
(aperte R ET U R N )

10 P RI N T
3 0 P RI N T
40 P RI N T " A"
50 P RI N T
6 0 P RI N T " C "
70 P RI N T
9 0 P RI N T
100 E N D

OK

as l i n has 20 e 80 desaparecera m do p rograma ; agora


vamos ver o q ue acontece, na execução :

45
RUN
.,
.
1
1
1 (duas l i n has em branco )

A ...

-
� ( l i n ha em branco)
e .,
1
1
1
( d uas l i n has em branco )
1
..J
...
.
.
( l i n h a em branco norma l )
-

OK
e ) Agora , vamos acrescentar a letra B , q ue hav ía mos,
quem sabe, esqu ecido de p rogramar :
tecl e - 50 ? " B "

Veri f i q ue :
L IST
1 0 PRINT
30 PRINT
40 P R I N T " A"
50 P RI N T B " "

60 P R I N T " C "
70 P R I N T
90 PRINT
1 00 E N D

OK
A n ova l i n ha 50 su bsti tu i a anteri o r :
Ago ra execute :
R UN

A
B
e

OK
46
d ) Se, por acaso , acharmos que as l etras estão m u ito
ju ntas, podemos separá - l as :

tecle - 45 P R I N T
5 5 P R I NT

vejamos como f i cou :

L I ST
1 0 PR I NT
30 P R I N T
40 P R 1 N T " A"
45 P R I N T
5 0 P R I N T " B"
55 P R I N T
60 PRINT "C"
70 P R I N T
90 P R I N T
1 00 E N D

OK

as novas l i n has ( 45 e 55) fora m devidamente enca i x a­


das no l u ga r certo.

Execüção :

RUN

OK

U m outro exemp l o i n teressante de ap l icação das v írgu­


las e ponto-e-v (rgu1as em conjunto com a instrução P R 1 N T é

47
a colocação desses sinais após a i nstrução , sem ser segu ida
de argu mentos (variáveis, stri ngs e n ú meros) , na forma :

Ex . 23 : 1 0 P R I NT; ( note o ponto-e-v írgu l a )


20 P R I NT "AA"
30 E N D
ou
1 0 P R I NT, (note a v írgu l a )
20 P R I NT "AA"
30 E N D

Veja mos o q u e ocorre no pri meiro caso ; c o m o já v i ­


mos, o ponto-e-v írgu la faz c e m que o próx i mo comando
P R I NT comece a i m pressão l ogo após o que tem ponto-e­
v írgu la , na mesma l i n ha. O ra , o comando da l i n ha 1 0 não
mandou i m p ri m i r nada , mas mandou conti n uar na mesma l i­
n h a ; assi m , a i mpressão de AA será fei ta como se a l i nha 1 a
não ex istisse ;

RUN
AA

OK
N o outro caso , a v írgu la manda começar a próx i ma i m­
pressão na segu nda posição ( casa 1 4) ; desse modo teremos :

R UN
AA ( o pri m e i ro A foi i m p resso na ca­
sa 1 4)

OK

Se col ocarmos duas v írgu las, a i m p ressão começará na


posi ção 28, e ass i m por d iante .
Nota : mencionamos, n o i n íci o , que não é poss ível colo­
car aspas ( " ) dentro de ST R 1 N G , pois esses ST R 1 NGS come­
çam e term i na m por aspas.
E m a l guns ti pos de B AS I C a co l ocação das aspas den ­
tro do ST R I N G pode ser fei ta usando du p las aspas ( " " ) , de
modo que esse si nal seja i n terpretado como aspas dentro de
STRING :
48
Ex. 24 : 1 07 "E U ME CHAMO""ROB E RTO"""
20 E N D
RUN
EU M E C H AM O " R O BE RTO"

OK

Ex. 25 : 1 07 """D IGA SEU NOME"""


20 E N D
RUN
" D I G A S E U N O M E"

OK

Veja que, onde aparecem as aspas principais ( i n i'cio e


fi m do ST R I N G ) , somos obrigados a co l ocar três aspas, sen ­
d o u ma a do ST R I N G e a s ou tras duas sign ificando aspas
dentro do STRING .
N os casos em que não é poss i'vel fazer o a rtif ício das
d u p l as aspas, será necessá rio usar-se outro método para
i m p ri m i r ST R 1 N G S que contenham aspas :

E x . 26 : 1 0 7 " M E U NOME �" CH R $ (34) ; " R O B E RTO";


CH R $ (34)

20 E N D
RUN
M EU N OM E t " R O B E RTO"

OK

A fu nção C H R $ ( 34) , que será ex p l i cada mais ad iante,


i nstru i o computador para i m p ri m i r o si n a l de é.lspas (cujo
cód igo é 34 ) .

B ) I mpressão de nú meros

Até aqu i fa l a m os apenas sobre a i m p ressão de ST R 1 N G S ;


n o entanto , a i nstrução P R I N T pode ser usada para " i m pri­
mir" valores n u méricos, tanto n o modo d i reto (comando )
como no i n d i reto (statement em l i n ha n u merada ) ; nesse caso

49
não se usam aspas, pois o n ú mero a ser impresso tem u m
significado be m defin ido, a o contrário d o q u e aparece
dentro de u m ST A 1 NG (é claro que pode haver nú meros
dentro do ST R 1 N G , mas, nesse caso , eles não são tratados
· como nú meros e, si m , como meros s ímbolos) :

E x . 27 : P R I NT 5 (sem aspas)
< R ETU R N> (usaremos esse s ímbolo para i n d i ­
car q u e a tecla R ET U R N deve se r
pressionada )
5 (aparece na te la ou na i m pressora )

OK

Ex. 28 : 1 0 7 1 8 (sem aspas)


20 E N D
RUN
18

OK

C ) Impressão de variáveis

Denom i na-se variável u ma l etra , ou conj u n to de letras


que, no decorrer do programa, poderá (ão ) ter um va l o r n u ­
mérico a ele a l ocado ou que poderá representar u m ST R I N G .
Na má ioria dos casos encontrados na p rática d o BAS I C para
m icrocomputadores, as variáveis só podem ser const i tu ídas
de duas letras ou u ma l etra e um nú mero (sendo o pri meiro
caracter sem p re a letra ) .

Exem p l os de variáveis : A, AB, X , TX , A 1 , 83, etc .

No i n ício do p rograma as va riáveis têm va l o r zero (a


menos que tenha ficado algu ma i n d icação na memória do
computador ) .
Quando mandamos i mpri m i r u ma variável , será i mp resso
o seu valor numérico ou o ST A 1 N G que fo i associado a essa
va riável .

50
Mais adiante veremos d iversas manei ras de associ a r va l o ­
res ou ST R 1 N G S a variáveis. P o r enquanto , va mos apenas
usar o método mais i med iato, que u t i l iza o comando L ET .
O comando L ET (ou i nstrução dentro de u ma l i n ha )
permite associar d i retamente u m val o r a u ma variável :

E x . 29 : LET A = 2
(a variáve l passou a ter o val o r 2 )

Vejamos o segu inte p rogra ma :

E x . 30: N EW

OK
1 0 P R I NT A
20 P R I N T
30 LET A=2
40 P R I NT A
50 E N D
RUN
0 ( n o 1 n i c1 0 d o p rograma o va l o r de A é
zero )
2 ( novo val o r de A )

OK

� i mportan te nota r que toda a vez que u m n ovo va l o r


for associado à mesma variáve l , p reva lecerá o ú l t i mo , isto é
a variável vai m u dando de va l o r , de acordo com as i nstru ­
ções recebidas.

E x . 3 1 : N EW

OK
10 PRINT A1
20 P R I NT A2
30 LET A 1 =2
40 LET A2=4
50 LET A 1 =3

51
60 P R I NT A 1 ; A2 (veja o u so d o ponto-e-v írg u l a )
70 E N D
R UN
0 0 ( 1 C? va l o r de A 1 e A2 )
3 4 ( ú l t i mo va l o r de A 1 e ú l t i m o va l o r de
A2 )
OK

U m deta l he deve ser mencionado, n o que respe i ta à i m ­


pressão d e n ú meros : todos o s n ú meros são armazenados na
memória d o com p u tador com um espaço vago na f rente , se
fo rem positivos; se forem negativos esse espaço é p reench i d o
pe l o sinal ( - ) .

Ex . 32 : 1 0 P R I NT 1 5
20 P R I NT -4
30 E N D
R UN
1 5 (veja o espaço na frente )
-4

OK

Além d isso , os programas B AS I C , e m gera l , de i x a m va­


go um espaço após cada n ú mero, q u a n d o se usa separação
por ponto-e-v írg u l a .

E x . 33 : 1 0 P R I NT 1 5;-4; 2
20 E N D
RUN
1 5 -4 22

OK

I sso não acontece com ST R I N G S, q u e não têm nen h u m


va l o r n u mérico .

E x . 34 : P R I N T "AA"; " B B "


< R E TU R N>
AAB ff (sem espaços)

OK
52
Quando os n ú meros são separados por v írgu l a , tudo se
passa como já fo i m ostrado n o caso d os STR 1 N G S (acres­
centa n do-se os espaços antes e · após os n ú meros ) :

E x . 35 : P R I N T 5, 1 8
< R E T U R N>
5 18

OK

O n ú mero dez o i to fo i i m p resso na 1 5� casa , pois a casa


14 contém o espaço para o seu si n a l .
Quando quere m os associar u m ST R I N G a u ma variáve l ,
é necessé rio col oca r o si n a l $ (cifrão ou dó l a r ) após o no­
me da vai áve l e col oca r o ST R I N G en tre aspas ( pa ra m os­
trar que é u m ST R I N G ) .

,
E x . 36 : 1 0 L E T A $ = " H OJ E ;
20 L E T B 1 $ = " É D IA "
30 L E T CC$ = " 1 5 D E J U LHO''
40 ? A$; B 1 $ ; CC$
50 E N D
R UN
H OJ E t D I A 1 5 D E J U L H O
OK

H á l i m i tes para o taman h o dos n ú meros e d os S T R I N G S


que podem ser a l ocados a variáve i s ; esse tam a n h o depende
da estrutu ra do computador e da versão d o BAS I C usado.
Daremos a l g u n s exemp l os, relativos ao m ic roco m p u tador
usado pel o a u tor.
Quando o computador é chamado a processar um p ro­
grama cujo resu ltado é maior do que 6 a l ga r ismos, esse re­
su ltado será most rado em n otação cienti' f i ca , i sto é , u ma
mantissa e u m fator m u l t i p l i cador em base de potência de
1 0 (outras máqu i n as podem dar resu l tados com maior n ú ­
mero d e a l garismos; n o enta nto, o s exemp l os aba i x o sã o e l u ­
cidativos d o p rocesso ) :
53
E x 3 7 : N EW
.

OK
1 0 L ET A= 37256
20 P R I N T A
30 E N D
RUN
37256 (o n ú mero s ó tem c i n co a l ga r i smos)

OK

E x . 38 : 1 0 LET A = 3725687 (7 a lgaris rr; os)


20 ?A
30 E N D
RUN
3 .72569 E+6

OK

O computador recebe o n ú mero , n a h o ra da p rogra ma­


ção , com mais de 6 a l ga rismos; porém, na h o ra de p rocessa r
( i sto é , nesse caso visto aci ma , i m p ri m i r) o resu l tado , este
será l i m i tado a 6 a l ga r i smos ; a let ra E i n d i ca "vezes 1 O ele­
vado a " e o n ú mero que se segue é o ex poente ( o s i na l +
i n d i ca que o ex poente é positivo ) .
3.72569 E+6 equ iva l e a
3 . 72569x 1 06 o u seja
3725690 (comparando com o n ú mero o r i g i n a l
3725687 - ver i f i ca-se que houve u m a r redonda­
mento para c i m a )

E x . 39 : 1 0 L E T C= 578432439 ( n ove a l ga r i smos)


20 ? e
30 E N D
R UN
5 .78432 E+8

OK

( 5 .78432 E+8 = 5 . 7 8432 X 1 08 = 578432000,


ou seja , houve u ma a p rox i mação para bai x o , em

54
vi rtude de os p róx i mos a l garismos serem meno­
res que 5X X )

E x . 40 : 1 0 LET B=-387 532839


20 P R I N T B
·

30 E N D
R UN
-3 .87533 E+8 (veja a posição do si na l )

OK

E x . 4 1 : 1 0 LET X= 0.03284783
20 ? X
30 E N D
RUN
3 .28478 E -2

OK

N o caso de n ú meros fracionários menores que 1 , o ex­


poente de 1 O será negat ivo :
3 . 28478 E -2 = 0 ,0328478

Ex . 42 : 10 L ET A= -0.0003478257
20 ? A
30 E N D
RUN
-3 .4782 5 E - 4

OK

No ta sobre : a escrita de números fracionários. i;, i mpor­


tante lem brar q ut3, em i nglês, a n ossa v írgu l a cor;esponde a
um ponto : \
3 .4832 (em português) equ iva l e a 3 .4832 (em i n g lês) .
Além d isso , os n ú meros fraci onários menores que 1 ,
que nós escrevemos 0 , X X X , não têm o zero i n icial , para os
americanos :
0,3456 (em português) eq u iva l e a . 3456 (em i n g lês) .
� i m portan te n otar esses aspectos, pois o s computado­
res que, na ma ioria dos casos, possuem l i nguagens prod u z i -

55
das nos Estados U n i dos, só entendem a n otação americana,
que é a que usaremos daq u i para a frente, neste texto .
Quando se trata de ST R I N GS, a possi b i l idade é bem
maior; a rigor, o ta manho de um STR I N G que pode ser alo­
c a d o é1 u m a va r i ave i é i i m i ta a o , e m g e ra l , pe l o t a m a n h o d a
l i nha, podendo ati n g i r 256 caracteres ; deve m se r descon tados
desses tota is os espaços e a palavra L E T, ass i m c o m o a va ­
.
r i áve l , o c i f rão , o s i n a l de igual e as aspas .

E x . 43 : (no caso de l i m ite de 72 caracteres)


1 0 LET AB$ ="AB CDE . . . . . XYZ . . .
. . . "

20 ? AB$
30 E N D
RUN
ABC D E . . . . . . . XYZ . . . . . . .
(6 1 ca racteres, no máx i m o )

OK

Foram descontados 2 espaços, 3 letras ( L E T ) , a variável


(AB ) , o cifrão , o si nal de igual e as duas aspas, no tota l de
1 1 caracteres.
Pode-se mandar i mp ri m i r várias coisas com o mesmo
comando.
Pa ra isso , como já vi mos, é necessário que os S T R I N G S
fiquem entre aspas e q u e as d iversas co isas a serem i mpres­
sas (nú meros, variáveis, ST A 1 N G S ) sejam separadas por pon­
to-e-v írgu la ou v írgu l a ; usa-se mais normal mente o ponto-e­
v írgu la, que não dei xa espaços entre os d i versos i tens a se­
rem i m p ressos.

Ex . 44 : 1 0 P R I NT "EU TE N H O";N ;"ANOS"


20 E N D
R UN
EU TEN H O 0 A N O S

OK

O número zero apareceu porque a variável N não tinha


nenhum valor a e la atri buído.

56
Ex . 45 : 1 0 P R I NT " E U TE N H 0";1 5;"ANOS"
20 M= 1 5 + 2
30 P R I NT "E voei: TEM";M ;"ANOS"
40 E N D
R UN
E U TE N H O 1 5 A N OS
E v o e � T E M 1 7 A N OS

OK

3.3.5- L ET é o comando que associa u m va l o r a


u ma variável : já vi m os d iversos exem p l os mais aci m a .
Cabe acrescentar que, em gra n de parte d a s versões de
BAS I C usadas h oje em d i a , esse comando é opciona l , i sto é ,
não é necessário u sá-l o , para associar u m va l o r a u m a variá­
ve l .
L ET A=3 pode ser s i m p lesmente escrito A=3 e o
computador entenderá que estam os associando o va l o r 3 à
va riável A.

Ex. 46 : 1 0 A = 1 8
20 ? A
30 E N D
RUN
18

OK

Ex . 47 : 1 0 A$ = "COMPUTADO R "
20 ? A $
30 E N D
RUN
C OM P U TA D O R

OK

Todos os exemp l os v i stos n a descrição do comando


P R I NT, com o uso de l. ET, fu ncionam igual mente sem o
L ET.
57
3.3.6 -CL EA R , quando não tem o sign ificado N EW, é
usado para "zera r" todas as variáveis, isto é, apagar todos os
va lores que foram atribu ídos anteriormente às variáveis.

Ex . 48 : 10 A=1 5
20 8=1 8
30 ? _ A;B
40 E N D
R UN
15 18

OK

Esse p rogra ma con t i n u a armazenado n o com p u tador, de


modo que podemos mandar exec u tá-lo n ova me nte :

R UN
15 18

OK

Agora , antes de mandar executa r novamente o p rogra­


ma , va mos i ntroduz i r um a l teração :

Tecle : 25 C L E A R
E , agora , execute :
RUN
(J (J

OK

N ote que, apesar de termos dado os valotes 1 5 e 1 8


para as variáveis A e B , a i n strução C L E A R apagou esses va­
lores e, ass i m , o comando P R I NT A ; B só consegu i u i mpri m i r
os zeros.
Às vezes é i mportan te u sar os va l o res atri bu ídos a u ma
variável em u ma parte do p rogra ma e, depois, em outra se­
ção do programa, apagar esses val o res ( para recomeçar u ma
contage m , por exemp l o ) :

58
E x . 49 : 1 0 A=1
20 ? A
30 A=A+ 1
40 ? A
50 A=A+1
60 ? A
70 CLEAR
80 A=A+1
90 ? A
1 00 A=A+1
110? A
1 20 E N D
RUN
1
2
3
1
2

OK

Anal isemos o que aconteceu : n o i n ício do programa de­


c l a ra mos que A = 1 ; a próx i ma instrução ( l i n ha 20) mandou
i mpri m i r esse va lor de A.
Na l i nha 30 declaramos que A = A + 1 , ou seja , o val o r
a n terior d e A ( 1 ) f o i acrescido d e 1 , passando para 2 ; assi m ,
o novo va lor d e A , após a execução da l i nha 30. é 2 ; a l i ­
nha 40 manda i m p ri m i r o va l o r d e A , d e modo que será i m ­
presso o nú mero 2 ; a mesma mecâ n i ca ocorre com a s l i n has
50 e 60.
Na l i n ha 70 damos o comando C L EA R , que · �apaga " o
va lor anteri or de A; assi m , nesse m omento, A = 0 ; na l i nha
80 mandamos somar 1 ao val o r de A, de modo que o n ovo
va lor passa a ser 1 (0 + 1 ) ; esse va l o r se rá i m p resso pel o co­
mando da l i n h a 90; as l i n has 1 00 e 1 1 0 se com po rtam do
modo já visto .

3.3.7 - CONT é u m comando q u e manda o p rograma


cont i n u a r a ser executado, a pós u ma i n terru pção causada
por CT R L C ( Contrai C ) , pe l a i nstrução STO P , ou , e m a l 7
g u ns casos, pela tecla B R E A K .

59
Como já vi mos anteriormente , d u rante a e xecução de
u m p rogra m a , podemos i n terrompê-lo apertando si m u l ta nea­
mente as tecl as CT R L e C, o que p rovocará o apa reci mento
da mensage m :
B R EAK IN XX
sendo X X o n ú mero da p róx i ma l i nha que ser i a executada ,
se não houvesse a i n terru pção .
Se q u iserm o s con t i n u a r a execução do p rogra ma , a par­
ti r do ponto em que foi i n terromp i d o , basta tec l a r CO N T e
bater R ET U R N ; o p rograma p rossegu i rá normal mente .
Essa i n terru pção ta m bé m pode ser p rogramad a , co l ocan ­
do-se, em u m certo ponto do programa a i nstru ção STOP ;
quando o progra ma chegar àquele ponto será a u tomat i ca­
mente i n terro m p i d o , aparecendo a mensagem rel a t i va ao n ú ­
mero da l i nha do STO P .
Ta m bém nesse caso o p rogra ma pode ser conti n u ado
pel a teclagem de CONT e R ET U R N .
A técn ica de uso d o STOP e C ü N T é m u i t o úti l para
se descobr i r erros n o p rog ra m a :
E x . 50 : N EW

OK
10 A=1
20 B=A+2
30 P R I NT B
40 A=A+ 1
50 P R I NT B
60 A=A+ 1
70 P R I NT B
80 END
N esse programa q uere m os que seja i m p resso o va l o r de
B , que é i g u a l ao va l o r de A+ 2 e , após a u mentarmos o va­
l o r de A de u ma u n idade, q ueremos i m p ri m i r o n ovo valor
de B ( essa operação seni repet i da n as l i n has 60 e 70) .
Vejam os o q u e acontece :
RUN
3 ( p r i me i ro va l o r d e B )
3 (seg u n d o va l o r de B )
3 (terce i ro val o r de B)

OK
60
Parece q u e a l g u ma coisa está errada n o p rogra m a , pois
esperávamos ter os val o res 3 , 4 , 5, i mp ressos, respectivamen­
te , como p r i m e i ro , seg u n d o e tercei ro va l o res de B .
Será que a variável A não foi i n crementada, n a l i n h a
40?
Faça mos o segu i n te : i ntroduzam os duas n ovas l i n has n o
p rograma :

45 P R I NT A
46 STOP

Agora , executamos o p rogra m a :

R UN
3 ( p r i me i ro va l o r de B )
2 (va l or de A )

B R E A K I N 46

Aparentemente tudo está correto ; o va l o r de A, q ue e ra


1 , passou para 2 .
Vamos con t i n ua r o p rogra m a :

CO N T
< R E T U R N>
3 (segundo va l o r de B )
3 ( terce i ro va l o r de B )

OK

Con t i n u a errado ! Mas já sabemos que o erro não é n o


acrésci mo d e A . Se , após a execução d a l i n ha 40, o va l o r d e
A passou a ser 2 e, depois ( l i n ha 50 ) , o va l o r d e B con t i ­
n uou sendo 3, isto sig n i fica q u e não f o i fei ta a soma de
A + 2 (= B ) .
Vamos tentar o seg u i n te : acresce n ta r :

46 B=A+2
(a n ova l i n h a 46 a pagou a i n st rução STO P )
5 5 STOP
61
Vejamos, agora , como está este p rograma :

LIST
1 0 A=l
20 B=A+2
30 PR I N T B
40 A=A+l
45 P R I N T A
46 B=A+2
50 P R I N T B
55 STOP
60 A=A+l
70 P R I N T B
80 E N O

OK

E , agora , vamos rodar o p rograma :

RUN
3 ( p r i m e i ro va l o r de B )
2 (va l o r de A )
4 (segundo val o r de B )
B R EA K I N 55

A í está . A conta B=A+2 só estava sendo executada


u ma vez ( l i nha 20 ) e, assi m , a variável B não mudava mais
de va lor.
Vamos cont i n u a r :

CONT
4 (tercei ro val o r de B )

OK

Chegam os à concl usão de que esta ria fa l tando uma no­


va l i n ha , após a l i nha 60 e antes da 70, para mandar fazer
novamente a con ta B=A+ 2 .
Mais adiante veremos outras maneiras de se fazer a
mesma co isa . N este m o me n t o qu i se m os apenas i l ustrar o uso
de STOP e ·coNT, como meio de corrig i r programas.

62
3.3.8- LOAD é u m comando que instru i o computa­
dor para a rmazenar em sua memória o conteúdo d e u m
meio externo , ta l como fita cassete o u d i sco magnético.
Dependen do d o t i po de BAS I C usado e do tipo de
meio extern o, o comando LOAD p oderá ser seg u i d o de u m
rótu lo, que identifica rá o p rograma a ser l i do.
A operação, em gera l , funciona da seg u i n te manei ra :
Su pon hamos u m p rograma que esteja g ravado e m fita
cassete ; vamos passar o con teúdo da fita (ou de pa rte da
f i ta ) para a memória do com p u tador :

N EW ( apagamos os p rogramas a n teri ormente


armazenados)
OK (o com p u tador está p ronto)
LOAD ( a n tes de tec l a r R ET U R N , l igamos o gra­
vador, em modo de rep rodução)
< R E TU R N> .,
1 0 (statement) l (as l i n has vão sendo armazenadas
20 (statement) : n o com p u tador ta l como se est i -
1 vessem sendo tecladas
1 00 E N D .J

( nesse momento desl iga m os o g ravador)

Agora , o p rogra ma q u e foi l i do da f i ta se encontra gra­


vado na memória e está p ronto para execução .
Não devemos esqu ecer de des l igar o g ravador a pós a ar­
mazenagem do p rogra m a , pois, se não , o com p u tador conti­
nuará lendo e arma7•mando o que estiver n o resto da fita.
U ma outra o bse rvação i m portan te é que, em a l g u mas
versões de BAS I C (não todas) , o comando LOAD pode ser
co l ocado como i nstrução dentro de u m p rogra m a ; ao chegar
nessa l i n ha, o com p u tador começará a a rmazenar o que esti­
ve r sendo l i do de u ma f i ta ou disco (se os mesmos estive­
re m l igados) .

E x . 5 1 : 1 0 A=2
20 P R I NT A
30 LOAD
40 E N D
RUN
2 ( i m p ressão d o val o r d e A )

63
10 (statement) -� progra ma l i do da fita
20 (statement ) 11
1
1
1
1
'"'

(ao ser des l i gado o gravador, o programa será


term i n ado)

OK

As l i n h as l i das da fita passa m a esta r armazenadas na


memória do computador e su bstitu i rão as de mesmo n ú mero
que estava m a rmazenadas anteriormente .

3.3.9 - SAV E é u m comando q u e instru í o com puta­


dor para efetuar a gravação dos progra mas contidos em sua
memória, e m um meio externo, ta l como fita ou d i sco mag­
nético ; esse comando perm i te armazenar nesses su portes ex­
ternos o conteú do dos dados ou p rogramas elaborados ou
processados no computador.
De mane i ra gera l , o comando SAV E perm i te gravar as
l istagens de progra mas ta is como as mesmas se encontram
nas memórias; para isso é necessá rio teclar o comando L I ST
após o SAV E ; com isso o computador começa rá a l istar as
l i n has, u ma a u ma ( caracter a caracte r) em vel oci dade com­
pat ível com o meio de gravação ; essa ve l oci dade é sensive l ­
mente m a i s lenta d o q u e a q u e é usada quando se manda
l istar o programa no v ídeo (sem gravação ) .

E x . 52 : Programa armazenado no computador :


10 A = 15
20 B = 1 2
30 P R I N T A
40 P R I N T B
50 E N D

Para gravar esse p rograma ( p . ex . , e m fita casse­


te ) , devemos segu i r as segu i n tes etapas :
a ) teclar SAV E
b ) teclar < R ET U R N>

64
O K ( resposta do computador)
c) tec l a r L I ST
d ) l igar o gravador, em modo de gravação
e) tec l a r < R E TU R N> _

as l i n has vão sendo r1 0 A=l 5


1 i stadas lentamente l 2 0 8=1 2
e , ao mesmo tempo, 30 P R I N T A
g ravadas na fita
l1 40 P R I N T B
l 50 E N D
1

1L. O K ( f i m de l istagem )
f ) desl igar o gravador
g) tec l a r LOAD ( para desl igar o comando SAV E )
h ) tec l a r < R ETU R N>

O K (está tudo pro nto )

Agora , o p rogra ma que va i das l i n has 1 0 a 50 está gra­


vado na fita e pode ser reprod uzido mais tarde ( isto é, reco­
l ocado na memória do computador ) .
E m diversos ti pos de BAS I C o comando SAV E perm ite
a gravação de tudo o que o computador vier a executa r em
segu i da (em vel oci dade mais lenta ) ; tudo o que aparecer no
v ídeo, após o comando que fo r dado depois do SAV E , será
gravado da mesma fo rma que for mostrado na te l a .

E x . 53 : Su ponhamos o mesmo p rograma m ostrado n o


exem p l o 52 :
a ) SAV E
b ) < R E T U R N>

OK
c) R ü N ( mandamos executa r o p rograma que
estava na memória )
d ) (g ravador l igad o)
e) < R E T U R N>
1 5 · 1 esses n ú meros aparecem mais lenta-
1 2 : mente na te l a e , ao mesmo tem po,
: são gravados.
O K J (fi m de execução )
f) desl igar o gravador

65
g) LOAD
h ) < R ETU R N>

OK

Agora estão gravados na fita , em seqüência, os nú meros


1 5 e 1 2. Isso é m u i to i nteressante, porque, às vezes, necessi­
tamos gravar e rri fita apenas uma seqüência de dados, sem
que os mesmos estejam embuti dos em u ma l istagem de pro­
grama :

E x . 54 : Progra ma armazenado
1 0 P R I N T " M E U N O M E É" ;
20 P R I N T " R O BE RTO"
30 P R I N T " E O S E U " ;
40 P R I N T " É A N D R É "
50 E N D
va mos gravá-l o :
SAV E (< R ET U R N>)

OK
RUN (< R ET U R N> )
M EU N O M E É R O B E RTO ·1 essa pa rte está sen­
E O SEU É AN D R É l d o g ravada n a fita
1
1
OK 1
.J

LOAD (desl igar o SAV E )

OK
Agora , para mostra r o que aconteceu , vamos passa r o
que foi gravado da fita para o computador :

N EW (< R ET U R N> )

OK
LOAD (< R ET U R N> )

M EU N O M E É R O BE RTO

E O SEU É AN D R É
66
O K (esse O K estava na fita )
(desl iga-se o g ravador)

Até aqu i tudo bem . Acontece que o que se passa, na


rea l i dade, não é exata mente o que foi mostrado aci ma.
Já menci onamos que, ao ler frases da fita, m u i tos ti pos
de BAS I C i n terpreta m e executa m essas frases i med iatamen­
te , a menos que as mesmas esteja m preced i das de um nú me­
ro de l i nha ( como se ífossem comandos teclados em modo
d i re i to ) .
N o exemp l o m ost rado aci m a , não há nú meros d e l i nha
antes dos ST R 1 NGS que fora m gravados na fita ; assi m , o
com putador, ao l e r o que está na fita, acusa rá erro de sinta­
xe ( i sto é, co m a n d o i n i n te l i g íve l para o I n terpretador BAS 1 C ) .
Vejamos o que rea l mente aconteceri a :

LOAD
M EU N OM E É R O BE RTO
SN E R R O R ( o com putador acusa e rro de
s i n taxe e diz que está p ronto
OK para a p róx i ma frase )
E O SEU É AN D R É
SN ERROR

OK
(desl iga r )

Nesse momento, s e q u isermos l ista r o que está n a me­


mória , não encontra remos nada , pois as frases que fora m
g ravadas não correspondem a comandos d i retos nem a i nstru­
ções n u meradas.

L I ST ( < R ET U R N> )

OK ( nada a l istar)

Se, no entanto, q u isermos gravar u m conju nto de da­


dos, o com putador os ace i tará e guardará corretamente na
memória, pois, com o já v i m os, L E T é um comando d i reto .

67
Ex . 5 5 : progra ma existente
1 0 P R I NT " A = 1 0" ( n ote as aspas)
20 P R I N T " 8 = 1 8"
30 P R I N T " C = 8"
40 P R I N T "O = 1 1"
50 E N D

Va mos gravá-l o :

SAV E

OK
R UN
A = 10 ••
1
B = 18 1 foi gravado na fita
C = 8 1
1
o = 11 1
1
1

OK J
(desl igar o gravador)

LOAD (desfazer o SAV E )

OK

Agora , se rep rod u z i rmos essa f i ta , os va l o res de A , B , C


e D serão l i dos e aceites pel o computador.

3.3. 1 0- COPY é u m comando q ue perm i te transcre­


ver pa ra uma i m p ressora exata mente o que está na tel a do
vrdeo, naquele m o mento . i: natu ra l que, se h ouver movi men­
to , isto é, s ímbo l os e caracteres m u dando de l ugar, é neces­
sá rio, pri m e i ro , parar o processa mento do p rogra m a , por
exem p l o , através d o comando CT R L C.
Após a tel a estar "conge l ada " , ela pode ser cop iada em
uma i m pressora , fazendo o que se costuma chamar "hard
copy" do v ídeo .
i: c laro, ta m bém, que as caracter ísticas da i m p ressora
devem ser compat íve is com as da tel a , caso contrário a i m ­
pressão não rep rodu z i rá fiel mente o q u e está mostrado n o
v ídeo . Com o exe m p l o de d i ferenças podemos citar o n ú mero

68
de caracteres por l i n ha (que deve ser compat íve l , caso con­
trário as l i n has não fica rão com a mesma d isposi ção que
apareceu na te la ) , o tipo de caracteres (há caracteres, espe­
cial mente gráficos, no computador, que não existem nas i m ­
pressoras, o que sign ifi ca q u e será i mpresso u m s ím bo l o d i ­
ferente d o q u e se encontra na tel a ) .

3.3.1 1- Observação sobre a instrução END : até agora


mostra mos todos os progra mas termi nados com a i n strução
E N D ; no entanto, na ma ioria das versões de BAS I C atua l ­
mente usadas esta i nstrução não é necessária.
O programa i n terpretador ou comp i l ador reconhece
quando não há nen h u ma l i n ha de i nstrução e considera o
programa term i nado.

Ex. 56 : 1 0 P R I NT " B O N ITO D I A "


20 P R I NT " MAS ESTÁ F I CAND O " ;
30 P R I NT " N U B LADO"
RUN
B O N ITO D I A
M AS ESTA F I CAN D O N U B L A D O

OK

O computador sabe que não há nen h u ma i nstrução com


n ú mero aci ma de 30 e, portanto, term i n ou o p rograma.
t: preciso tomar cu i dado porque, se em u m p rograma
anteri or sobrou a l g u ma l i n h a n u merada que não foi apagada,
o prog rama p mssegu i rá até a l i n ha de maior n ú mero . Para
evitar esse ti p o de surpresa é conven iente mandar l istar os
programas antes de executá-los; assi m , todas as l i n has n u me­
radas que esti ve rem armazenadas n o com putador aparecerão
na l ista .

E x . 57 : Su ponhamos que havia n o computador u m pro­


grama que começava no nú mero 1 00 :
1 00 PR I N T "A SU A I DA D E E " ;1 5 ;
1 1 0 PR I N T "AN OS"
1 20 P R I NT " E A M I N H A E " ;
1 30 P R I N T 1 7 ;" AN OS''

69
Se estivermos preparando u m progra ma começando no
n·ú mero 1 0 e esse progra ma for até o nú mero 50, normal­
mente não será necessár i o col ocar a i nstrução 60 E N D .
Acontece que, ao mandarmos executa r o programa ele
começará na l i nha 1 0 e p rossegu i rá até a l i nha 1 30, execu­
tando o p rograma novo e o anterior; se qu isermos evitar que
isso aconteça, podemos usar as segu i n tes a l ternativas :
·
a ) apagar o progra ma anterior a parti r da l i n ha 1 00 ; as­
si m , ao ser executado, o programa só i rá até a l i n ha
50,
b ) col ocar a i nstrução 60 E N D ; nesse caso, o p rogra ma
começará da l i n h a 1 0 e parará na l i n ha 60, ao ler a
i nstrução E N D ; veremos mais adiante que a col oca­
ção de E N D no meio de um programa é, m u i tas ve­
zes, um art i f ício bastante úti l de progra mação .
Se usarmos a a l ternativa b , o programa anterior não
será apagado e poderemos executá-l o , bastando dar o coman­
do R U N 1 00; assi m , o programa começará a ser executado a
pa rt i r da l i n h a 1 00 .
C o m a col ocação do E N D e do R U N 1 00 n ós tem os a
possi b i l idade de executar i ndependentemente dois p rogramas
di ferentes, a rmazenados na memória do computador.

70
Capitulo IV
INST R U ÇpES M Ú LTIPLAS PO R LIN HA

Até agora tudo o que foi mostrado apresentou apenas


u ma instrução por l i n ha n umerada .

Ex. 1 : 1 0 A = 5
20 B = 3
30 C = A + B
40 P R I NT C

Na ma ioria das versões de BAS I C usadas nos m icro­


computadores (exceto os bem reduzidos ) , é poss ível colocar
mais de uma i nstru ção por l i n ha n u merada . Essas i nstruções
devem ser separadas por dois pontos ( : ) ou barra i nvertida
(\ ) . Nos exem p l os segu i n tes usa remos dois pontos, cabendo
ao leitor verificar como isso fu nciona no seu computador.
O programa aci ma pode ser reescrito da segu i nte manei-
ra :
10 A = 5 : B = 3 : C= A + B : ? C

Quando for executado, tudo se passará da mesma for­


ma como se tivesse sido escrito da manei ra anterior. O uso
de instruções m ú lti plas, por l i n ha, p rovoca econom ia de me­
mórias, na armazenagem do p rograma.
No entanto , é necessário não exagera r :
- u ma l i n h a nu merada s ó comporta u m certo n ú mero
de caracteres, o que l i m i ta � q u a n t i dade de .i nstru ­
ções e co man dos por l i n h a n u merada ;
- ex istem certas i n st ruções (como veremos mais ad ian­
te ) que infl uenciam todas as outras instruções coloca­
das na mesma l i n ha ; por isso, em IT' U i tos casos, é ne­
cessário m u da r de l i n ha para col ocar certas i nstru­
ções;

71
- certos comandos ou i nstruções só podem ficar n o
fi m da l i nha ( ú l t i ma i n strução ) , para não pertu rbare m
a s i n struções segu i n tes :

E x . 2 : 1 0 A=5 : 8=6 : E N D : C=8+A :?C


RUN

OK

não aconteceu nada, pois o programa te rm inou no


E N D ; esse comando só poderia ficar no fi m da l i n h a ;
- é recomendável não col ocar m a i s d o q u e u m nú mero
su ficiente de i nstruções que preencha até duas l i n has
de v ídeo , caso contrário, se tivermos que corrig i r a l ­
gu ma coisa no me io d a l i n ha, teremos q u e teclar no­
vamente a l i n ha i n te i ra, o que poderá ser traba l h oso .
Caberá ao l e i tor se habituar com a manei ra mais p rát i ­
ca d e uti l izar esses comandos mú l t i p lGs p o r l i n ha.
U ma o bservação .i mportante sobre os coman dos mú l t i ­
p l os é q u e o s mesmos podem se r i ntroduz idos de modo d i ­
reto e executados i mediatamente :

E x . 3 : A= 5: B = 3 : P R I N T A + B (< R ET U R N> )
8

OK

Às vezes, n o meio de u m p rograma, é i mportante fazer


um pequeno progra ma de veri ficação , em modo d i reto , para
efetuar correções e saber o estado das d iversas variáveis; esse
programa em modo d i reto não i nterfere com o programa já
gravado, a menos que haja i n struções nele que a l terem dados
ou variáveis do anterior; depois da verificação , podemos
prossegu i r com a execução do programa :

E x . 4 : programa ex istente
10 A=5 : 8=8 : C=3•B
20 A= A+2
30 C =C+A
40 ? e
RUN

72
31

OK

Se, por acaso , houvesse u m engano no programa e o re­


su ltado não fosse o esperado , poder íamos usar um p rograma
em modo d i reto para saber o que está acontecendo .
Vamos supor que, por engano, na l i nha 20, hav ía m os
escrito 20 A=A-2
em vez de 20 A=A+2
Ao ser execu tado o programa, o resu l tado seria 27 e
não 3 1 .
Suponhamos que não percebemos esse erro, na l i stagem
do programa.
Façamos o seg u i n te :
2 5 STOP
Agora
R UN

B R EA K I N 25
OK

Nesse ponto, podemos i n trodu z i r u m programa em mo­


do d i reto , para sa ber qual o va l o r das variáveis, na hora da
i n terru pção :

? A; B ; C (< R ET U R N> )
3 8 24

OK

Já ficamos sa bendo que A = 3, quando deveria ser 7 ;


l ogo, houve u m erro n a li n ha 20.
Se quisermos sa ber se o erro foi só esse, façamos o se­
gu i n te :

Mantenha o 25 STOP
RUN
B R EAK I N 25
OK

73
Agora , em modo d i reto , façamos o segu inte :

A = 7 :CONT
31

OK

Quando o programa for n ovamente executado, o co­


mando d i reto A=7 não será consi derado ( mas não esq ueça
de ret i ra r o 25 STOP ) .

74
Capítulo V
COMPUTAÇÕES MATEMATICAS

Na ma i o r i a dos p rogra mas i n terpretadores ou com p i la­


dores BAS I C já está embutida a capacidade de executar u ma
série de operações aritméticas e a lgébricas, que podem variar
desde simp l es somas e subtrações até computações bem mais
com p lexas, dependendo do ta ma n h o d o i nterp retador ou
comp i l ador.
Vamos dar u ma visão gera l do que é , norma l mente , en­
contrado nos p rogra mas de tamanho méd i o para bom, fican­
do a critéri o do le itor verificar quais as possi b i l i dades de seu
m icrocomputad or.

5 . 1 - Operações elementares : são as de So ma, Subtração ,


M u l ti p l i cação e D iv isão .
Pa ra usar o computador na execução de u ma dessas
o perações, basta usar o si nal correspondente no teclado .
Por exem p l o : na tec la onde aparece o ponto-e-v írg u l a ,
a parece tam bé m o s i n a l "+ " ; para tec l a r + , é necessário ba­
ter si m u l taneamente a tecla SH I FT (como já vi mos anterior­
mente ) com aquela tec l a .
O s i n a l " - " aparece aba i x o do i g u a l ( = ) , ou SP.ja , não é
necessário tec l a r SH 1 FT.
O s i n a l de m u l t i p l i cação é u m asterisco ( • ) , que apare­
ce em ci ma d o si n a l de dois pontos; é necessário teclar si­
m u l tanea mente o SH I FT; final mente, o si n a l de d ivisão é a
barra (/) , que aparece aba i x o da i n terrogação , não sendo ne­
cessário teclar SH 1 FT.
A execução das operações é i med iata , por comando di­
reto ou por p rograma :

75
E x . 1 : P A I NT 1 5 + 1 2 (< R ETU R N> )
27

OK

(é necessário dar a i nstrução P R I N T quando queremos ver o


resu ltado; e m c�rtos programas não queremos ver resu ltados
i ntermed i á r i os e só mandamos executar a operação, sem
P R I NT ) .

E x . 2 : 1 0 A= 1 3
20 B= 1 5
30 C= A-B
40 P R I NT C
R UN
-2

OK

Ex. 3 : PA I NT 2*1 5
30

OK

E x . 4 : P R I NT 50/2
25

OK

Os exe m p l os aci ma mostra m as o perações executadas


uma a u ma ; no entanto, é perfe i tamente poss íve l executa r
d e u ma s ó vez u m conju nto d e operações, como mostrare­
mos nos exem p l os a segu i r :

E x . 5 : P R I N T 20*3/2+1 8/2
39

OK

E x . 6 : 1 0 C= 1 2
20 D = C*3

76
30 F = D+C
40 G = F /4+ 1 2
50 ?G
RUN
24

OK

Também é poss ível usar parênteses, para efetuar as ope­


rações, segu i n d o as regras usu a i s de ari tmética :

E x . 7 : P R I N T( 1 2+ 1 3 ) �4
1 0a

OK

E x . 8 : . 1 0 A=3
20 8=3*6
30 C=( A + B ) /2
40 P R I N T C
50 D=C* (A+B+5)/B
60 P R I NT D
RUN
1 0 .5
1 5 . 1 667

OK

Verifica-se que foi i m p resso u m resu ltado parcial ( C =


= 1 0 . 5 ) e que o resu l tado f i n a l fo i i m p resso arredondado na
6� casa .

5.2 - Exponenciação perm i te elevar u m n ú mero a determ i ­


nada potência, u sa n d o o sinal t ou /\ .

E x . 9 : PR I N T 2t3
8

OK

77
E x . 1 O : 1 0 A=3
20 8=6
30 ? (A+B )t2
RUN
81

OK

E x . 1 1 : PR I NT 3t2t2 ( potenciação repetida)


81

OK
5.3 - Extração de R a i z ; essa operação não ex iste, norma l -
mente, como i nstrução espec ífica, n a l i nguagem
BAS I C (a não ser em versões cient ífi cas especiais ) ;. o que se
faz é elevar o n ú mero a u ma potência frac i onária, do ti po
X = At ( 1 /N ) , em que A é o n ú mero. cuja ra iz de g rau N se
deseja . A exceção é a ra i z quadrada, que possu i u ma i nstru­
ção especial , com o será mencionado m a i s adiante, ao t ratar­
mos de fu nções matemáticas .

5.4 - Regras gera is de organ ização das operações : as opera-


ções aritméticas são executadas pe l o comp u tador em
u ma certa o rdem , que deve ser enten d i da (da mesma forma
que cada ca l cu ladora de bolso tem a sua p rópria ordem de
execução das operações) .
As regras são as seg u i n tes :
a ) as operações começa m da esq u erda para a d i reita ;
b ) as 1 operações de ex ponenciação são efetuadas pri mei ro
(todas as q ue ex ist i rem na ex p ressão ) ;
c) depo is da ex ponenciação o p rograma vo lta ao i n íc i o
d a ex pressão e executa todas a s m u l t i p l icações e d i ­
visões, até o f ü n d a ex p ressão ;
d ) começando n ovamente n o i n ício da ex pressão , . serão
executadas todas as operações de adição e su btração ;
é) se houver parênteses, as operações dentro dos parên­
teses serão executadas e m pri mei ro l ugar ;
f ) se h ouver parênteses dentro d e parênteses, a s opera­
ções serão começadas pel os parênteses i nteri o res,
seg u i ndo-se os parênteses mais exteriores, e assi m por
d iante.

78
Vejamos essas regras, segu i das passo a passo :

E x . 1 2 : PR I N T ( 5 * 3 + (4 - 2) t 3 - ( 1 3 + 3)/4 )
p r i m e i ras operações : execução dos parênteses in­
ternos :
(4 - 2) = 2
( 1 3 + 3) = 1 6
em seg u i d a , potência :
2 t 3 = 8
em seg u i d a , m u l t i p l i cações e d ivisões :
5 . 3 = 15
1 6/4 = 4
f i n a l mente, somas e subtrações :
15 + 8 - 4 = 19
o com p u tador mostrará :
19

OK

E x . 1 3 : 1 0 A=1
20 B=3
30 C=5
40 D= ( A * B + C ) /C+ B t 3 * ( B + C )
50 P R I N T "O V A L O R D E D É " ; D
RUN
O V A L O R D E O É 2 1 7 .6

OK

5.5 - Os progra mas de B AS I C mais comp l etos p ossuem u m


repertório g ra n de de fu nções matemáticas, das quais
m ostra remos as mais u su a l mente encontradas. São funções
q u e já estão p rogramadas no i nterpretador ou com p i l ador e
p odem ser obti das por si m p les tecl agem do n o me da função
e do a rgu mento :

- R N D ( X ) é u ma fu n ção que dá u m n ú mero a l eató­


r i o en tre O e 1 ; n orma l mente o va l o r de X deve ser posit i ­
v o e m a i o r q u e zero : n essas cond ições, cada vez que o com­
p u tador executa r a fu nção R N D ( X ) escol herá um n ú mero d i­
fe rente, a leatoria mente ; se o va l o r de X for zero, será esco-

79
l h i d o u m n ú mero a leatór i o mas, n o mesmo p rogra m a , será
o mesmo ; se o n ú me ro ( X ) for negativo, para cad a va lor de
X será se lecionado u m n ú mero a l eató r i o , o que se rá repet i d o
enq u a n to não se fizer C L E A R n o p rograma .
Daremos u m exem p l o s i m p les e most rare m os, em
outros cap ítu l os, novos exem p l os da f u n ção R N D ( R A N ­
D O M = A L EATÓ R I O ) .

Ex . 1 4 : 1 0 P R I NT R N D ( 1 )
20 P R I N T R N D (1)
30 P R I N T R N D (1)
R UN -,
1
.47 8 5 6 3 1
c a d a operação dá u m n ú m e ro d i ­
.954328 1 fe re n te ( ma i o r q u e 0 e m e n o r
1
.76 3 1 66 1 que 1 )
1
.J

OK

E x . 1 5 : 1 0 P R I NT R N D (0)
20 P R I N T R N D (0)
30 P R I N T R N D (0)
RUN
-,
.543287 : o n ú mero é a l eató r i o m a s é sem ­
.543287 : pre o mes m o , d e n t ro d o m es m o
.543287 : p rog ra ma
_J
OK

E x . 1 6 : 1 0 P R I N T R N D (-4)
20 P R I N T R N D ( -0 . 3 )
30 P R I NT R N D (-4)
R UN
.332854
.47 3462
.332854 ( i g u a l ao pri me i ro )

OK

H á m u itas ou tras obse rvações a fazer sobre esta i m por­


tan te função, como se verá a d i an te .
- L E N ( A $ ) : essa f u n ção dá o n ú mero de caracteres
do ST R I N G A $ , i n cl usive s i n a i s e espaços.
80
E x . 1 7 : 1 0 A $ = "ABCD E "
W P R I NT LEN (A$)
RUN
5 ( c i n co caracte res )

OK

E x . 1 8 : 1 0 A $ = "JOÃO R . SOU ZA"


20 ? L E N ( A $ )
RUN
13 ( i n c l u s i ve o p o n to e os espaços )

OK

- A BS ( X ) , dá o va l o r a bso l u to d a e x p ressão X :

E x . 1 9 : 1 0 X=1 3 - 1 8
20 ?AB S ( X )
RUN
5 ( va l o r a b so l uto de - 5 )

OK

- I N T ( X ) , d á o m a i o r va l o r i n te i ro con t i d o em X :

Ex. 20 : 1 0 X=1 3 .478


20 ? I N T ( X )
RUN
13

OK

Essa fu nção é bastan te i m portan te , poi s , e m m u i tos ca­


sos, necessitamos apenas de va l o res i n te i ros de n ú meros, co­
mo, poí exemp l o , no caso de efetuar contagens de eventos,
a part i r de equ ações cujos resu l tados não são sem p re i n te i -
,

ros.

- TAB ( X ) é u m a fu nção de ta bu l a Ção que determ i n a


a posição do cu rsor, para i m p ressão d e u m n ú mero ou
STR I N G , seja n a tela de v ídeo, seja em u ma i m pressora ; o
a rgu mento X representa a posição , considerando com o 1 �

81
pos1çao o lado mais à esquerda de cada l i n ha do v ídeo ou
da i mp ressora . É necessá r i o nota r que cada l i n ha só conté m
N caracteres, em gera l , o q u e l i m i ta a posi ção q u e pode m os
atri bu i r a " X " .

E x . 2 1 : P R I N T TAB (3) ; "POSI ÇÃO 3 "


P.O S I Ç Ã O 3 ( P está na posi ção 3 )

OK
( observe o ponto-e-v írg u l a entre TA B ( 3 ) e o
ST R I N G )

E x . 22 : 1 0 ? TAB ( 1 8) ; "POS I ÇÃO"


20 ? TAB (32 ) ; "N Ú M E R O 32"
R UN
P OS I Ç Ã O
N Ú M E R O 32

OK

O TAB (32) ficou em outra l i n h a , pois esta m os consi ­


dera nto u m v ídeo com 24 posi ções por l i n ha .
- SG N ( X ) é u ma f u n ção q u e i n d ica se X é m a i o r ,
i g u a l ou menor que zero . Quando X é ma i o r que zero , S G N
( X ) = 1 ; se X = C/J, SG N ( X ) = (/J e s e X é menor que zero ,
SG N ( X ) = - 1 . É u ma f u n ção m u i to ú ti l , pois serve para p ro­
du z i r a rtif íci os de p rogramação e m que desej a m os sa ber
quando um certo va l o r é m a i o r , menor ou i g u a l a zero . Bas­
ta saber se SG N ( X ) é i g u a l a 1 , -1 ou C/J.

Ex. 23 : 1 0 A= SG N ( X )
2 0 X = -4. 1 8 *.56
30 ? A
RUN
0

OK
O va l o r zero apareceu porq u e a função A = SG N ( X )
a i n da não sabia quem era X , ao passar pel a l i n ha 1 (/J e , as­
si m , considerou X = C/J.
Agora , vamos i n verter :
82
1 0 X= -4 . 1 8 *.56
20 A = SG N (X)
30 ? A
RUN
-1 (X tem val o r negativo )

OK

E x . 24 : modo d i reto
P R I NT SG N (4.8)
1

OK

E x . 25 : 1 0 A=3*-. 1 5 + 1 8/3 * .09


20 ? SG N (A)
RUN
1

OK

Mesmo sem saber o va l o r da ex p ressão , sa bemos que


ela é posit iva .
- S I N ( X ) dá o sen o (função trigonométrica ) de X , sen ­
do X ex presso e m rad i an os (convém l e m b ra r q u e 360º cor­
respondem a 21T rad ianos) .

Ex . 26 : PR I N T S I N ( . 523) (equ iv. a 30º )


.499481 (aprox i mação de 0 . 5 )

OK

- C O S ( X ) dará o cosse n o d e X , e x p resso em rad i a n os.

E x . 27 : (cá l c u l o de um dos lados de um triângu l o retân­


gu l o cuja h ipotenusa é igua l a H e o ângu l o ad­
jacente ao lado desejado é 60º, ou 1 .046 rad ia­
n os ) .
10 H = 5 ( h i potenu sa )
20 ? cos ( 1 .046)
30 e = cos ( 1 .046)

83
40 D = C * H (para con f i rmar o valor d o cosse­
50 ? D/5 no)
RUN
.50
.50

OK

( n o exem p l o aci ma usamos a propriedade dos


triângu l os retângu l os de que o lado adjacente ao
ângu l o X d ividido pela h i potenusa é igual ao
COS ( X ) )

- TAN ( X ) d á o valor da tangente d e u m ângu l o ex­


presso em rad ianos.
- ATN ( X ) dá o valor do ângu l o em rad ianos, cuja tan­
gente é X , ou sej a , dá o a rcotangente . ( X ) :

E x . 28 : 1 0 X = .785398 ( o u seja , 45º )


20 ? TAN (X)
30 C = TAN (X)
40 ? ATN (C)
RUN
1 (tangente de 45º )
.785398 (ângu l o e m rad ianos cuja tangente
é 1)

OK

- SOA ( X ) dá a raiz quadrada de X ; como já mencio­


namos atrás, não é u ma operação que pode ser feita através
da teclagem de u m s ímbolo (ta l como m u l t i p l i cação ou ex­
ponenciação ) : é u ma função matemática que é produzida
por u m programa especial que já faz parte do interpretador
ou com p i l ador B AS I C ( nos de tipo mais com pleto ) .

E x . 29 : P R I NT SOR (25)
5

OK

84
i: claro que X deve ser posit ivo , pois a l i nguagem
BAS I C não traba l h a com nú meros comp lexos, a não ser que
haja programa especial mente preparado para isto.
- EX P ( X ) dá o val o r da constante "e" elevada a X
(e = 2,7 1 828 . . . )

E x . 30 : P R I NT EXP (3)
20 .0855 ( "e" elevado ao cubo)

OK
- F R E (X ) dá a quantidade de Bytes a i n da l iv res na
·
memória onde esta mos p rogramando ; é mu ito úti l para saber
se, ao prepara r um programa mu ito longo, não vamos u l tra­
passar a capacidade da memória do computador.

Ex. 3 1 : P R I NT F R E (0)
5437

OK
( i sto significa que, se o tota l de Bytes da me­
mória com que esta mos traba l hando é, p . ex . ,
8 . 1 92, já usamos, até agora , 1 .7 55 Bytes nos
p rog ra mas já armazenados) .

O valor atri bu ído a X sign ifica , apenas, que X , nessa


função é u m argu mento fa lso ( "d u m my " ) , ou seja , pode as­
su m i r qualquer valor e só ex iste para que a função ten ha a l ­
gum argu mento .
E m alguns ti pos de BAS I C (os mais com p l etos) , se X =
= 0, o n ú mero de Bytes l ivres não conta os Bytes ocu pados
por ST R I N G S ; quando queremos incl u i r os ST R I N GS , X de­
ve ser su bstitu ído por A$ . Esse arranjo é m u ito úti l para se
determi nar quais os t ipos de programas ou arranjos que po­
demos fazer uti l i zando o m ín i mo poss ível de memórias.
- LOG ( X ) dá o val o r do l ogaritmo neperiano (de base
"e" ) , de X.

E x . 32 : PR I NT LOG (2.7 1 8)
.999896 ( l og . nep . de "e" é igual a 1 )

OK

85
Para se ter o l ogaritmo de base 1 O , basta d iv i d i r LOG
(X ) por LOG ( 1 0 ) ( l ogaritmo neperiano de 1 0) .

E x . 33 : 1 0 X = 1 00
20 C = LOG ( X )
30 ? e
40 O = C/LOG ( 1 0)
50 ? o
RUN
4.605 1 7 ( l og . nep . de 1 Q)Q))
2 ( l og . 1 Q) de 1 Q)Q))

OK

- POS ( X ) dá a pos1çao, naquele momento, do cu rsor


do v ídeo ( p osição onde está sendo i m p resso u m caracter ) ou
da cabeça de i m pressão, no caso de u ma i m p ressora seri a l .
X é u ma variável fa l sa ; é necessá rio atri bu i r- l he u m va l o r .

Ex . 34 : 1 0 ? "ABCD"; POS( 1 )
RUN
ASCO 4 ( p róx i ma pos1çao do cu rso r ; a pri­
mei ra posição é Q))

OK

Note o seg u i n te : a função P O S ( 1 ) foi col ocada na mes­


ma l i n ha que a i nstrução P R 1 NT e está separada por ponto­
e-v írgu l a . I sto significa : i m p ri m i r o ST R I N G "ASCO" e , l ogo
depois, a posição d o cu rsor.
Se colocarmos P R I NT POS ( 1 ) em outra l i n ha , a posição
será sempre zero, pois, quando m udou de l i n ha , o cu rsor
vol to u para a posição zero .

E x . 35 : 1 0 ? "ABC"
20 ? POS( 1 )
RUN
ABC
0

OK

86
- SPC ( X ) é u ma i nstrução de espaço, que manda col o­
car na l i n ha X espaços em branco ; essa função só fu nciona
associada ao comando P R I NT.

E x . 36 : P R I N T SPC(4) ; "ABC"
ABC ( começa no 5<? espaço )

OK

E x . 37 : 1 0
A= 1 5
B= R N D ( 1 )
20
? SPC ( A ) ;B
30
C=I NT ( 1 0* 8 )
40
? SPC( C ) ;A
50
RUN
(dei xa 1 5 espaços + · : ---+ .47 368 5
o espaço d o si n a l ) _J
·. r 1 5
(deixa 4 espaços + LJ D K
o espaço s i na l ) J

Ex p l i cação : n a p r i mei ra l i n h a o nú mero B foi i m p resso


após 1 5 espaços ; o n ú mero B é a leató r i o e, no caso , corres­
p o ndeu a .473685 ; na seg u n da l i n h a o n ú mero de espaços
foi igua l ao m3 i o r va l o r i n te i ro ( 1 N T ) de B m u l ti p l i cado por
1 0 , ou seja , i n te i ro de 4 .73685 , o que dá 4 espaços.

- D E F F l\I A ( X ) essa função D E F , e m conj u nto com


F N A ( X ), serve para defi n i r, em um p rogra m a , a equação de
u ma função A, da variáve l X. Depois de fei ta essa def i n i ção ,
no restante d o programa podemos fazer referência apenas a
F N A ( X ) , e o com p u tador já saberá qual a equação corres­
pondente.
O uso dessa D E F i n ição de fu nção é m u ito i mportante,
especial mente quando h á várias funções d i ferentes, de variá­
veis d i ferentes, n o mesmo programa .

E x . 38 : 1 0 D E F F NA ( X ) = 1 5 * X t 2
20 D E F F N B (Y) = Y * 2 + SOA {Y)
30 X = 3
40 y = 2

87
50 P R I NT F NA(X)
6 0 P R I NT F N B ( X )
RUN
1 35
5.41 42 1

OK

D u rante o programa podemos fazer variar o va l o r de X


e Y , e o p rogra ma sem p re dará o va l o r da fu nção def i n ida
previamente F N A ( X ) e F N B (Y ) .

E x . 39 : 1 0 D E F F NT(W) = 3* Wt3
20 D E F F NO(Z) = Z + 1 8/Z
30 w = 1
40 z = 2
50 ? F N T(W) ; F NQ(Z)
60 W = W + 1
70 z = z + 2
80 ? F NT(W) ; F N Q(Z)
90 W = W + 3
1 00 z = z + 4
1 1 0 ? F NT (W ) ; F N Q(Z)
RUN
3 11 ( p ri mei ra vez )
24 8 .5 (segunda vez )
375 1 0 .25 (terce i ra vez )

OK

Observe que os va l o res de W e Z foram a l terados, mas


as funções j á estavam def i n i das e, assi m , seus val o res pude­
ram ser i mpressos para cada val o r das variáveis (W e Z) ; na
l i n ha 30 W era igual a 1 , depois passou para 2 (W = W + 1 )
e depois, para 5 (W W + 3 ) ; o mesmo aconteceu com Y .
=

As funções matemát i cas o u de posicionamento que aca­


bamos de descrever são as mais usuais nas versões de BAS I C
d o tipo denomi nado A L T A I R . Ex iste , n o entanto, o que se
den o m i na BAS I C P L US, mais comp leto, que contém outras
fu nções e instruções que não descreveremos neste l ivro
introdu tóri o .

88
- Ex iste u ma observação i m portante a fazer ao final
deste cap ítu l o : em certos ti pos de BAS I C não podemos
m andar i mpri m i r A + B, sem d izer antes que C = A + B.
Depois, mandamos i mpri m i r C.

Ex . 40 : 10 A=2; 8=3 : ? A+B

Em certas versões de BAS I C i sso não fu nciona ; é preci­


so escrever :

1 0 A=2 :B=3:C=A+B :?C

89
Capítulo V I
I NSTR UÇÕES PARA ENT RADA DE DADOS

Neste cap ítu l o co bri remos a defi n ição e a ex p l i cação


das i n struções mais usu a l mente encontradas n os p rogra mas
de BAS I C de certo porte para atri b u i r va l o res a va r i áve i s .
F i ca claro que ex istem o u t ras i n struções não men c i o nadas
n este l ivro , que fazem pa rte de versões mais sofist i cadas ou
são instruções espec i a i s para certos t i pos de sistema opera­
c i onal com comando de per i féricos, ti po d i sco magnético.
No entanto , acred i ta mos q u e estão descritas as i n struções
q ue o prog ra mador poderá encontrar e usa r nos m i c rocom­
p u tadores mais usu a i s d o mercado .
Já vi m os que u ma var i áve l pode ter va l o res a e l a atr i ­
b u ídos e q u e esses va l o res podem ser a l terados, a o l ongo d o
p rogra m a .
Podemos dar u m va l o r a u ma va riável de várias formas,
u sando instruções de BAS I C . Veja mos as p r i n c i pa i s :

6.1 - INPUT X

Essa i nstrução faz com que o programa pare e fique


aguardando a entrada , pel o teclado, do va lor que q ueremos
dar a X (a i n strução é I N P U T e X o u qual quer outra variá­
vel é aquela que tomará o val or que for tec l ado ) . Ao i n ter­
romper o progra m a , aparece na tel a do v ídeo u m a i n te rroga­
ção, que indica ao o perador que o p rogra ma está aguardan­
d o a entrada de um va l o r .
Ex . 1 : 1 0 I N PUT B
20 e = s•3
30 A = B+C
40 ? A
RUN
?
91
(o p rogra ma parou na l i n ha 20 e a i n terrogação
pergunta ao operador q u a l o va lor de B ; a pós
ser teclado um va l or, B passará a ter esse val o r
d u rante todo o resto d o p rograma, e a execução
conti n ua i med iatamente após ser apertada a te­
cla R E TU R N )

V a m os conti n u a r :

Tecl e o n ú mero 3
? 3
(o n ú mero 3 aparece l ogo depois da i nterroga­
ção ) .

Tecle R E TU R N e o p rograma p rossegu i rá :


12

OK
( B= 3 , C= 3 * 3 , A = 3 + 9 = 1 2)

E x . 2 : 1 0 P R I N T "ESCO L H A U M V A L O R "
2 0 I N PUT O
30 P R I NT "O V A LO R " ; O; " F O I ESCO L H I DO"
(su ponha mos que vam os esco l her o va l o r 1 8)
R UN
ESC O L H A U M V A L O R
? 18
O V A L O R 1 8 F O I E SC O L H I D O

OK

É sem p re aconse l h ável , an tes de ped i r o va l o r de u m a


va riáve l , i m p ri m i r a l g u ma ex p l i cação sobre q u a l a vari áve l
que está sen d o ped i d a , para que seja faci l i tado o traba l h o
d o operador. Caso contrá r i o nós ter ía mos q u e lembra r a ca­
da m o mento qual a variável que está sen d o ped ida pel o p ro­
grama ( le m b re-se que a i n strução 1 N P U T pode aparecer vá­
rias vezes no mesmo p rograma , ped i n d o variáveis d i ferentes) .

E x . 3: 1 0 ? " D E MO NSTR A ÇÃO DE SOMA E M U LT I P L I ­


CAÇÃO"

92
15 ? "QUAL O V A LO R D E A?"
20 I N P UT A
25 ? "Q U A L O VA LO R D E B ? "
30 I N P UT B
35 C = A + B
40 P R I NT C
45 ? "Q U A L O V A L O R D E D ? "
50 I N PUT D
60 E = D * C
70 ? "O V A L O R F I N A L D E E SE R Á " ; E

(Vamos su por esco l h i dos A = 2 , B = 3 e D = 4 )

RUN
D E M O N ST R A Ç Ã O D E S O M A E M U L T I P L I C AÇ Ã O
QU A L O V A L O R D E A?
? 2

QU A L O V A L O R D E B?
? 3
5 (va l or de C )

QUAL O VAL O R D E D?
? 4

O V A L O R F I N A L D E E S E R Á 20

OK

Essa i n strução 1 N P U T serve para p ro m over u m meio de


co m u n i cação entre o operador e o co m p u tado r . Veremos,
mais a d i a nte, co mo essa i nstrução pode ser u t i l izada e m to­
da a sorte de p rog ra mas, i n c l u sive jogos para v ídeo .
A mesma i nstrução pode ser usada para ST R 1 N G S, isto
é, va ri áveis de ST R I N G S .
Se chamarmos A $ u ma variáve l d e S T R I N G , podemos
da r a ela u m si g n i f i cado q u a l q uer, que ficará a rmazenado n a
m e m ó r i a do com p u ta d o r .

E x . 4 : 1 0 I N PUT Q$
20 P R I N T Q$ ;" É O MEU N O M E "
RUN
93
? R O B E R TO (esse nome foi teclado pe l o
operado r )
R O B E RTO É O M EU N O M E

OK
Agora a vari ável 0$ passou a sign i f i ca r o ST R 1 N G
" R O B E R TO " .
E n q u a n to não for m u dado o va l o r de 0$ , dado o co­
m a n d o C L E A R (zera n d o as va riáve i s ) ou o coman d o N EW
(apaga n d o o progra ma ) , essa va riáve l permanecerá com esse
s i g n i ficad o .
� p rec iso não esq uecer q u e u m novo coma n d o R U N
a p agará os va l o res j á atr i b u (d os às va riáveis.
Façamos um n ovo p rogra ma , com n u meração mais a l ta
( pa ra não pertu rbar o p ri m e i ro p rog ra ma ) .

50 ? " M E U N O M E É ; 0$
"

60 I N P U T B $
70 ? "E O TEU É ; 8 $"

Ao rodar este prog ra ma ( a part i r d a l i n ha 50 ) , ve remos


q u e o va l o r a n te r i o r de 0$ foi apagad o :

R U N 50
M EU N O M E É ( fa l ta o va l o r de 0 $ )
? AN D R É ( e n tra m os com A N D R � )
E O TEU É ANDRÉ

OK

Observe q u e , n o caso de u ma va ri áve l n u meri ca , se não


derm os nen h u m va l o r à mesma, o p rog rama considera rá q u e
a va r i áve l t e m va l o r 0 (zero ) . N o caso de u m a va riáve l d e
ST R 1 N G , n o e n ta n to , o p rogra ma considera rá q u e o
ST R I N G está vaz i o ( não i m p ri m i rá nada ) .
Agora va mos rodar o p rograma d o i n (ci o e m u da r os
no mes :

RUN
? ANDRÉ
A N D R É É O M EU N OM E

94
M EU N O M E É AN D R É
? R O B E RTO
E O TEU É R O BE RTO

OK
M u damos o sig n i fi cado das variáveis 0 $ e 8 $ .
A i nstrução 1 N P U T pode ser p reced ida, n a mesma l i ­
n h a , de u m ST R I N G , que será i m p resso antes do ponto de
i nterrogação . I sso é i mportan te para saber que i nformação o
p rograma deseja naquele momento .
Ex . 5 : 1 0 I N PUT "QUAL É O T E U N O M E " ; N $
( ponto-e-v írgu l a ) t
20 P R I N T N $ ; " É O TEU N O M E "
RUN
QU A L É O T E U N O M E ? JOÃO
( i nte rrogação
I NPUT
�') t 1
( nome tec l ado
JOÃO É O TEU N OM E

OK
Se não fosse col ocado u m espaço n o ST R 1 N G É O
"

T E U N O M E " , as pal avras i m p ressas f i ca r i a m sem espaço :


JOÃOÉ O TEU NOM E.
N a l i n ha 1 0 é i m portante n ota r q u e a perg u n ta q u e an­
tecede a variáve l , n o statement de 1 N P U T , te m que esta r en ­
t re aspas e deve h aver u ma separação , entre a pergu nta (en­
t re aspas ) e a vari áve l ped i d a , por ponto-e-v írgu l a ; u ma sepa­
ração usando apenas v írgu la não fu n c i o n a , e o com p u tador
a c u sa rá erro .
U ma var i a n te d o 1 N P U T, para a en trada de d iversos da­
dos pode ser usa d a , da segu i n te forma :

E x . 6 : 1 0 I N PUT A, B, e (1)
20 ? A ; B ;C
RUN
? 5,3,-2 (2)
5 ; 3 -2

OK
95
( 1 ) as va r i áveis ped i das devem ser col ocadas u ma a pós a
outra , separadas por v írgu las, exceto a n tes da p r i ­
me i ra e depoi s da ú l t i ma ;
( 2 ) a entrad a , pelo teclado, das va riáveis, deve se r fei ta
usa n d o v írgu las, na mesma ordem em q u e as va riá­
vei s foram ped i das; o pri mei ro n ú mero teclado va i
corresponder ao A, o segundo ao B e o terce i ro ao
e.

Se esq uece rmos de entrar com u m a das va r i áve i s ped i ­


das e tecla rmos < R E T U R N> , o com putad or co l oca rá ou tra
i n terrogação , ped i n d o a próx i ma ou as p róx i ma s var i áve i s :

E x . 7 : 1 0 P R I NT "QUA IS OS N O M ES D OS SEUS F I L H OS";


(1 )
20 I N PUT A$, 8 $ , C$, D $
3 0 ? " O P R I M E I R O É "; A$
40 ? "O SEG U N DO É ; 8$ "

50 ? "O T E R CE I R O É ; C$"

60 ? "O QUARTO É ; D $ "

RUN
QU A I S O S N O M E S D O S S E U S F I L H O S ? A N D R É ,
LIANA (2)
? ? R E NATA, F E L I P E
O PR I M E I R O t AN D R t
O SE G U N D O t L I AN A
O T E R C E I R O t R E N ATA
O QU A R T O t F E L I P E

OK

( 1 ) o ponto-e-v írg u l a depois do ST R I N G va i fazer com


que a p róx i ma i m pressão se dê. na mesma l i n h a ; por
isso a i n terrogação do 1 N P UT va i aparecer l ogo de­
pois da frase QU A I S OS N O M E S DOS S E U S F I ­
L H OS e não n a p róx i ma l i n h a , como em exe m p l os
que vi m os a n teriormente ( quando não hav i a ponto­
e-v írg u l a depois do ST R 1 NG - ver exemp l os 2 e 3 ) ;
a entrada dos dados se fará na mesma l i n h a , a pós a
i n terrogação ;

96
( 2 ) a q u i dever ía mos co l ocar q u at ro nomes, pois o pro­
g ra ma pede 4 var i áve i s ( A $ , 8 $ , C$ e 0 $ ) ; por
engano tec l a mos < R E T U R N> depois d o seg u ndo
n o m e e assi m , o com p u tador co l ocou dois pontos
de i n te rr og a ção, ped i n do os p róx i mos nomes. No ta
imp ortan te : o com p u tador já atri bu i u os d o i s pri ­
m e i ros n o mes às va r i áve is A$ e 8 $ ; agora está
aguarda n d o C $ e 0 $ ; por i sso, a n ova perg u nta
não sign i fica que devemos repet i r os quatro n o mes,
mas apenas os que fa l ta m .

6.2 R E A D e DATA

Essas i nst ruções são , ta m bé m , usadas pa ra atri bu i r va l o ­


res a va r iá v e i s ; apenas, em vez de dar en trada n a s va r i áve i s
u ma a u ma , n ó s constru ímos u ma ta be l a d e dados ( DATA) ,
e o programa va i , p rogressiva mente , dando os va l o res dessa
ta b e l a às va r i áve i s q u e n ó s i n d i ca m os após a i n st r u ção R E A D .

Ex . 8 : 1 0 R EA D A
20 ? A
30 DATA 1 8
RUN
18

OK

A i nstrução R E AD da l i n h a 1 0 leu os dados da l i n ha


30 (só havia o dado 1 8 ) e associ o u o va l o r 1 8 à var i áve l A .
E sse va l o r foi i m p resso pe l a i n strução d a l i n h a 20.
Se co l ocarmos m a i s de u ma variáve l nas i n struções
R E AD, o grupo de dados será l i do seq üencial mente, isto é ,
cada R E AD lerá o p róx i m.o d a d o l istado após a p a l av ra
DATA.

E x . 9: 1C1 R EAD A
20 R EA D B
30 R EA D C
40 ? A;B ;C
50 DATA 2 , 1 8,1 7
RUN
97
2 18 17

OK

O p r i m e i ro R EA D ( R E A D A ) leu o pri mei ro dado ( 2 ) ,


o seg u n d o R E AD leu o seg u n d o dado e, assi m por d ia n te ;
a part i r desse momento , n o p rograma (até ser a paga d o ou
a l terado) a va riáve l A terá o va l o r 2 , B será igual a 1 8 e C
igual a 1 7 .
Observação importan te : o comando R U N faz com que
todas as va riávei s sejam zeradas ( i sto é , fiq uem com va l o r 0) .
Ass i m , a pós rodar (execu tar ) o p rograma visto ac i ma , as va­
riáve is A. B e C ficam com os va l o res a t r i b u ídos a e l as até
que se dê n ova execução do p rogra ma· ( R U N ) .
E m gera l isto não tem i m portâ n c i a , pois, n o p rogra m a ,
a o ser executado n ovamente , a s variáveis vo ltarão a ter os
seus va l o res associados, por meio de R EAD e DATA .
Pa ra entender mel h o r este ponto , faça a seg u i n te ex pe­
riência :
Escreva u m p rogra m a com n u me ração mais a l ta d o que
a ú l t i ma l i n ha do anter i o r :

1 00 ? "O V A LO R D E A É " ; A
1 1 0 ? "O V A LO R D E B É " ; B
1 2 0 ? "O VA LO R D E e É " ; e

Agora , execute o p rogra m a , à part i r da l i n h a 1 00

R U N 1 00
O V AL O R D E A E 0
O V AL O R O E B E 0
O V AL O R O E C E 0

OK

O coman do R U N 1 00 fez a paga r os va l o res de A , B e


C dados pe l o pri mei ro progra m a . Ago ra , vamos executar tu­
do desde o i n íci o ( i nc l u íd os os dois p rogra mas) .

98
RUN
2 18 17 -1
O VAL O R DE A t 2 1 os va l o res de A , B e C
O V AL O R D E B t 1 8 1 não fora m apagados
O VAL O R D E C t 1 7 I
.J

OK

Os dados têm que ser separados por v írgu l as, ex ceto o


p r i mei ro e depois d o ú l t i m o .

5 0 DATA 2, 1 8, 17

(sem v írg l a
(v írg u l as )
� N
D a mesma fo r m a , a s var i áve is podem ser co l ocadas sob
u ma mesma i n strução R E AD, separadas por v írgu l as, na mes­
ma l i n h a :
1 0 R EA D A,B,C
A mecâ n i ca é sem p re a mesma : a i nstrução R EA D as­
soc i a à pri mei ra va r i áve l o pri me i ro dado ; à seg u nda va r i ável
o segu ndo dad o ; e assi m por d iante .
Quando h ouver m a i s vari áveis d o que dad os, o progra­
ma acusa rá erro .

Ex . 1 0 : 1 0 R EAD A,B,C,D
20 P R I N T A;B ;C ;D
30 D ATA 55,2 , 1 8
R UN
55 2 18
? ERROR IN 10 ( fa l ta u m dado para a va riá­
vel D )
OK
Se h ouver mais dados d o que ·�ariáveis somente serão
l i das as variáveis correspondentes aos pri mei ros dados :

Ex . 1 1 : 1 0 R EAD A,B
20 ? A;B
30 DATA 1 2;1 8,1 7,1 9
RUN

99
12 18

OK

O programa associou o pri meiro dado a A, o segu ndo


dado a B e os outros dados foram ignorados.
As i nstruçõ�s R E AD e DATA podem ser associadas a
variáveis de ST R I N G , funcionando da mesma forma que no
caso de variáveis n u méricas.
Ex . 1 2 : 10 R EAD A$,8 $,C$
20 P R I NT C $ ;8 $ ;A $
30 DATA ÓT I MO,É, I STO
RUN
ISTO E úTI M O

OK
O q ue aconteceu? lembremo-n os que o ponto-e-v írgu l a
não introduz nen h u ma separação entre o s ST A 1 N G S q u e vão
ser i mpressos. No caso de nú meros é d i ferente, pois sem p re
é co l ocado u m espaço depois do ú ltimo a l garismo (além do
espaço na frente, para o s i n a l + ou - ) .
Se usarmos v írgu la , em vez de ponto-e-v írg u l a , a im­
pressão será feita nas casas 0, 1 4 , 28, etc. (como já foi
visto ) .
Veja mos (su bstitu indo a l i n h a 20 )
20 P R I N T C$,8$,A$
Vamos l ista r
L I ST
1 0 R EAD A $ , 8 $ ,C $
20 PR I N T C $ , 8 $ ,A$
3 0 DATA O T I M O , E , I ST O
RUN
I STO E
ÓTI M O -·

OK

U ma observação i m portante a fazer é relativamente à


ordem de leitu ra ( R EAD ) e de i mpressão ; u ma coisa não
tem nada a ver com a outra .
1 00
As var i ave1 s A $ , 8 $ e C $ foram l i das na mesma or­
dem em que foram co l ocadas após o DATA. Desse modo
A$ passou a ser ÓT I M O , 8$ ficou sendo E e C$ assu m i u o
va lor I STO.
Na hora de mandar i m p r i m i r , nós podemos mandar a
i m pressão ser fe i ta em qualquer o rdem ; n o caso , foi i m p res­
so pri mei ro a va riável C$, depois 8 $ e por ú l t i mo A $ . I sto
fo i feito apenas para exem p l i f i ca r a atri bu ição de um va l o r
a u m a variáve l e o uso dessa va riáve l , que são coi sas d i fe­
rentes.
Podemos, tam bé m , m istu rar variáve i s n u méricas e variá­
veis de ST R I N G :

E x . 1 3 : 1 0 R EA D A $ , N , B $
2 0 P R I N T A $ ;N ;B $
3 0 DATA TE N H 0, 1 5,A N OS
RUN
TE N H O 1 5 ANOS

OK

A variáve l A $ ficou sendo T E N H O , a var i ável N ficou


sendo 1 5 e a va riáve l 8$ passou a ser A N O S .
É i m porta n te n ota r , n o entanto , q u e não podemos m i s­
t u ra r a ordem das va riáve is n u mér i cas e de ST R 1 N G . Assi m ,
q uando n a l i n h a 1 0 o p rogra ma é i n stru ído para ler ( R E A D )
A $ , o pri mei ro dado q u e deve ex ist i r depo i s do DATA deve
ser u m ST R I N G , pois A$ só pode ser ST R I N G . Se co l ocar­
mos um nú mero , como pri mei ro dado , o p rograma conside­
ra rá esse n ú mero como sendo um ST R I N G e o n ú mero não
p oderá ser usado em nen h u ma operação matemáti ca .
Va mos i nverter a o rdem d os dados :
30 D ATA 1 5, T E N HO, A N OS

Tentemos executá-l o .
RUN
1 5 ( o p r i me i ro f o i l i d o e i m p resso )
? E R R O R I N 30 (o computador acusou erro )

.O K
1 01
Acon tece que A $ pode ser igual a 1 5 e , nesse caso , 1 5
passa rá a ser u m ST R I N G ; porém , N (que é u m a variável
nu mérica ) não pode ser i g u a l a T E N H O .
Vamos a l terar n ovamente a l i nha 30 :
30 DATA 1 5, 1 5, ANOS
Ago ra , o p rograma va i ace i ta r :
RUN
15 1 5 ANOS

OK

N ote o seg u i n te : o p r i me i ro 1 5 fo i transfo rmado em


ST R I N G , mas esse ST R I N G inclui um espaço pa ra o si na l ;
ass i m , se m p re q u e o ST R I N G A$ for i m p resso d e i x a rá u m
espaço na frente do n ú mero ( mas não atrás, p o i s esse espa­
ço é u ma questão de est r u t u ra da l i n g u agem e não faz pa rte
do n ú me ro ) .

E x . 1 4 : 1 0 R EA D A $ , N , B $
2 0 ? A $ ; N ;B $
30 DATA 1 5, 1 5,ANOS
40 ? Nt2
50 ? A $ * 2
RUN
15 1 5 AN OS
225 ( i nstrução da l i n h a 40 )
E R R O R I N 50

OK

Veri fica m os q u e N 1 5 e pode ser man i p u l ad o matema­


=

ticamente , mas o mesm o não acon tece com A $ , a pesa r de


A$ 1 5 . Por isso , o com p u tador acusou erro, quando man­
=

damos m u l t i p l i ca r A$ por 2 .
A i n da sobre a s i n struções R E AD e DATA :
E n q u anto h ouver dados e i nstruções de leitu ra , os da­
dos serão l id os pelas va riáveis, mesmo que o conj u nto de da­
dos esteja mais a d i a n te n o p rogra m a . A i n strução R EA D vai
proc u ra r u m dado onde h ouver u ma i nstrução D ATA :

1 02
E x . 1 5 : 1 0 R EAD A,B
20 ? A;B
30 R EAD C, D
40 DATA 1 2
50 ? C;D
60 DATA 1 8, 1 5
65 E= B+C
70 ?E
80 DATA 1 0
RUN
12 1 8 (A e B)
1 5 10 (C e D)
33 (E)

OK

Ve rifique o segu i n te : a pri mei ra i n strução R E A D A foi


pega r o pri me i ro dado depoi s d o D ATA na l i n h a 40 ; R E AD
B não encontrou mais nada na l i n h a 40 e fo i p rocu ra r o
p róx i m o DATA ( l i n h a 60 ) , pegan do o pri mei ro va l o r ; R EAD
C foi pegar o segu ndo va l o r na l i n h a 60 e R EAD C foi p ro­
cu ra r um novo DATA. q ue encontrou na l i n ha 80 . O con­
j u nto de dados pode esta r n o fi m d o p rograma (o que é até
usua l ) .
É i m porta n te guardar d u as coisas e m mente :
- cada l i n h a que tiver dados tem que começar com a
i nstrução DATA;
- se aparecer n ovamente a mesma variável , depois de
u ma i n strução R E AD, essa var iável assu m i rá o va l o r
correspondente à o rdem e m que estão sendo l i d os os
dados, mudando, incl usive, de val o r , se já tiver assu ­
m i do a l g u m a nterio rmente .

E x . 1 6 : 1 0 R EAD A $ , B $
20 ? A $ ; B $
3 0 R EAD A$,B $
40 ? A $ ;B $
50 DATA " L I N DO ","D IA"
60 DATA " F I CO U ","F E I O"
R UN
1 03
LINDO DIA
FICOU FEIO

OK

Algu ns aspectos são i nteressan tes nesse p rogra ma :


N a p r i me i ra i m p ressão ( l i n ha 20) , A$ e ra igual a L I N­
D O e B $ era igual a D I A ; quando mandamos conti n ua r a
l e i t u ra ( l i n h a 30 ) , o A$ tomou o va l o r do p róx i m o dado
d i spon íve l ( F I C O U ) e B$ assu m i u o va l o r segu i n te ( F E I O ) .
Esses ú l t i m os va l o res são os q u e fica ram armazenados na
mem ó r i a , pois o n ovo va l o r de A $ e B $ a pagou seu va l ores
a n te r i o res.
Faça m os u ma experiência : vamos mandar i m p ri m i r A$
e B $ , em modo d i reto :
PR I NT A$; 8$
FICOU FEIO

OK
(os va l o res de A $ e B $ con t i n u a m atu a l i zados, pois
não foi dado nen h u m C L E A R ou R U N ) .

U ma o u t ra observação se refe re às aspas uti l izadas nos


dados :
Toda a vez que for necessár i o co l ocar espaços como
pa rte de ST R 1 NG é necessário u sa r aspas, caso contrá r i o as
pa l avras fica rão grudadas u ma na outra , como já v i m os em
exem p l o anteri o r ; nesse caso o espaço passa a fazer pa rte do
ST R I N G . A mesma coisa ocorre se fo r necessá r i o co l ocar
v írgu las dentro do ST R I N G (já sa bemos q u e a v írgu l a separa
os· dados entre si e, portanto , para co l ocar v ígu l as em u m
ST R 1 N G se necessita das aspas) .

E x . 1 7 : 1 0 R EA D A$,B $
20 P R I NT A $ ; B $
30 DATA "O c � u ESTÁ ","AZ U L,
L I N DO E CLARO"
R UN
O C t U ESTA AZ U L , L I N D O E C L A R O

OK

1 04
Os espaços fo ra m co l ocados dentro dos ST R 1 N G S , as­
si m como a v írgu l a depois da pa l avra AZ U L.

6.3 - R ESTO R E

Essa i n strução com p le menta o R EAD/DATA e m certos


ca sos e tem a segu i n te função :
Quando a i nstrução R E AD acabou de l e r todos os da­
dos conti dos em O AT A , o p rograma p rossegu i rá , com o já v i ­
m os. N o entanto , s e q u isermos repet i r , dentro d o mesmo
p rograma, a l e i tu ra dos mesmos dados, podemos usa r a i ns­
trução R ESTO R E , que fa rá com que o próx i mo R E A O vo l ­
te a l e r o p ri me i ro DATA q u e for encontrado.
I sto sign i f i ca : R E STO R E é u ma i nstrução que diz ao
p rograma que os dados podem ser l i dos novamente , ·desde o
i n ício.

Ex . 1 8 : 10 R EA D A $ , B $
20 P R I NT A$;B$
3 0 R ESTO R E
4 0 R EA D C$, 0 $
50 P R I N T C$ ; D $
6 0 D ATA "S I M "," NÃO"
RUN
SI M NÃO
SIM NÃO

OK

Se não ex istisse a i nstr u ção R E STO R E , n a l i nh a 30,


q u ando o progra ma man dasse l e r C $ e 0$, seria acusado
e r ro , pois os dados já teriam acabado (A$ = S I M e 8$ = N A O ) .
C o m o R E STO R E , o p rogra ma entende que deve vo l ta r para
o prime i ro dad o , como se não tivesse hav i d o l e i tu ra n en h u ­
m a anterior. Assi m , o C $ e 0 $ pudera m ser l i dos e i m p res­
sos ( C $ = S I M e 0 $ = N ÃO ) .
E m v á r i a s ve rsões d e B AS I C é perm i t i da a s i n ta x e
R E STO R E X X , e m q u e X X é o n ú mero d a l i n h a o n d e q u e ­
re mos l e r n ova m e n te o conj u n to de D AT A ; n esse caso , a
p r ó x i m a i n st r u ção R E A O n ão i r á b u sca r o p r i m e i ro d a d o

1 05
da pri mei ra l i n ha que contém D ATA ; a i nstrução i rá l e r o
p r i mei ro dado da l i n ha de DATA i n d i cada em X X .

E x . 1 8 : 1 0 R E AD A $ , B $
2 0 PR I NT A $ ;B $
30 R EAD C $ , D $
40 PR I NT C $ ; D $
50 R ESTO R E 7 0
6 0 DATA "S I M ", " NÃO"
70 DATA "TA LV EZ", " TA LVEZ NÃO"
80 R EAD E $ , F $
9 0 PR I NT E $ ;F $
RUN
S I M NÃO
TA LVEZ TA LVEZ NÃO
TA LVEZ TA LVEZ NÃO

OK

OK

A i nstrução R E STO R E 7(/J fez com q ue as var i áveis d a


l i n h a 8 (/J ( E $ e F $ ) fossem l i das da l i nha 7(/J; s e a i nstrução
fosse R E STO R E , aquelas va riáve i s ser i a m l i das da l i n h a 6(/J,
que é a pri mei ra l i n h a de DATA.

1 06
Capítu lo V I 1
I NSTR U ÇÕES DE " L OOP" E
I NSTR U ÇÕES CONDICIONA I S

7.1 I N ST R U ÇÕ E S D E " L OOP"

Até agora , em todos os exem p l os que fora m mostrados,


a s i nstru ções era m executadas seq üen c i a l mente , das l i n has de
menor para as de m a i o r n ú mero .
E m outras pa l avras, se ex ist i a u m p rograma com a s l i -
n h as :
1 0 (statement )
1 5 (statement )
20 (statement )
a execução era fe i ta l i n h a por l i n ha : p r i m e i ro a l i n h a 1 0,
depois a l i n h a 1 5 , e assi m por d i a n te . As exceções men­
c i onadas fora m :
a ) começo endereça d o :
RUN 1 5
e m que a l i n h a 1 0 não ser i a executada , pois o pro­
g rama ser i a rodado a part i r da l i n h a 1 5;
b ) E N D , n o me i o d o p rogra m a :
1 0 (statement)
20 (statement)
25 E N D
3 0 (statement)
40 (statement)
nesse caso a execução ser i a encerrada n a l i n ha 25 e
as l i n has 30 e 40 não ser i a m executadas ;
e) u ma variante d o caso d o E N D seria o u so de STO P ;
nesse caso, poré m , se fosse d a d o o com a n d o CONT,
o p rogra ma con t i n uaria normal mente, n a próx i ma
l inha;

1 07
d ) o bviamente , se h ouver erro em a l g u ma l i n h a , o p ro­
g rama ta m bé m não executa rá as l i n h as seg u i n tes .
E m su ma , exceto no caso de começar fora de ordem e
term i na r fo ra de o rde m , e as d iversas poss i b i l i dades de i n ter­
ru pção forçad a , o p rograma execu ta rá as l i n has na ordem se­
q üenci a l .
Pe l o menos,. fo i o que vi mos até agora .
E x i stem i nstru ções n o BAS I C que orientam o progra m a
para u ma execução fo ra de ordem d a s l i n has n u meradas .
Le ia co m atenção os p róx i mos parágrafos, pois i n trodu ­
z i remos conce i tos i m portant lssi mos pa ra a execução d e p ro­
gramas em BAS I C .

7 1 1 - G OTO é u ma i n strução que determ i n a que o


. .

prog rama "pu le" para u m a ou tra l i n h a , d i ferente da p róx i ­


ma, e conti n u e a execução a part i r dessa n ova l i n h a .

Ex. 1 : 10 A=1 0
20 8=1 5
30 C=A+B
40 P R I NT A
50 P R I NT B
60 P R I NT C

Esse progra m a , ao ser execu tado, passa rá por todas as


l i n has e p rodu z i rá o seg u i n te resu l tado :
R UN
10
15
25

OK

Agora , va mos fazer u ma ex penencia com a i ntrodu ção


de G OTO. Va m os co l ocar u ma n ova l i n ha :

35 G OTO 60

Va mos l i sta r
L I ST
1 0 A=1 0
1 08
20 8=1 5
30 C=A+B
35 G O T O 60
40 P R I N T A
50 P R I N T B
60 P R I N T C
Vejamos o que acontece quando o p rogra m a é rodad o :
R UN
25

OK

Ana l isemos : a i n strução G OTO 60 mandou o p rogra m a


p u l a r da l i n h a 35 para a l i n ha 60. Ass i m , as l i n has 40 e 50
não fo ra m executadas e o ú n ico resu l tado que sa i u fo i o
va l o r de C , dev i d o a :
60 P R I NT C
Com a i n strução G OTO, o p rogra ma va i p rosseg u i r na
l i nha cujo n ú mero for i n d icado .
O n ú mero da n ova l i n h a , para o n de o p rogra ma deve
p u lar, não precisa ser m a i o r do que o da l i n h a onde está o
G OTO. E m ou tras pal avras, não é obrigatório p u l a r apenas
p a ra a frente . A i nstrução G OTO pode mandar vo l ta r para
u ma l i nha já execu tada, a q u a l será executada de n ovo :

E x . 2 : 1 0 A=1 5
20 B=A+2
30 C=A+B
40 P R I NT C
50 G OTO 1 0
RUN
32 (va l o r de C )
32
32
32
32

O p rograma não vai parar, porqu e entrou em " l oop " ;


isto significa que, depois d e vo ltar para a l i n h a 1 0, o p rogra­
ma i m p ri m i u novamente o va l o r de C ( l i n ha 40 ) e depo is
vo ltou novamente para a l i n ha 1 0, g i ra n d o sem parar. Pa ra

1 09
interrom per esse " l oop" devemos tec l a r CT R L C (a pertanto
si m u l ta nea mente as teclas C RT L e C ) ; o p rograma será i nter­
ro m p i d o e su rg i rá u ma mensagem de i n terru pção :
B R E A K I N XX
em que X X é o n ú mero da l i nha que ser i a executada no
i n sta nte em que apertamos as teclas CTR L e C.
O p rograma pode ta m bém ser i nterro m p i do pel a tec l a
.
B R E A K (veja ex p l i cação em cap itu l o anteri o r ) .
No ta importante: é prec iso to mar cu i dado na hora de
programar, para evitar loops infi n i tos. Em gera l , quando é
necessá rio i n terromper o loop, depois de a l g u mas vo l tas, nós
usamos o que se denom i na contador, ou si m p lesmente u m
F LAG (si nal ) . I sso será ex p l i cado l ogo a d i a n te , quando trata­
remos dos desv i os cond icionais, isto é, i n struções que man­
dam o p rogra ma p u l a r para ou tra l i nha apenas em certos ca­
sos, que nós defi n i mos no programa. A i n strução que esta­
mos descrevendo - GOTO - é denom i nada i ncon d iciona l ,
pois ela será obrigatoria mente executada q u a n d o o p rograma
chegar na l i n ha e m que e l a está .
Vejamos u m outro exem p l o de l oop :

E x . 3 : 1 0 T=1
20 P R I NT T; ( n ote o ponto-e-v írgu l a )
30 T= T+ 1
40 G OTO 20
RUN
1 2 3 4 5 6 7 8 9
20
B R EA K I N (apertamos CTR L C )

OK

Vejamos o q u e acon teceu : depoi s d a i m p ressão d o va l o r


d e T ( q u e era i g u a l a 1 , no i n íci o ) , a l i n h a 3 0 mandou a u ­
menta r sem p re T de u ma u n i dade ; desse m o d o , na segunda
vez que o p rog ra m a passou pela l i nha 20, o va l o r de T já
era 2 ( depois 3 , 4 , etc . ) .
Por isso não manda mos vol ta r pa ra a 1 i n ha 1 0. Se a
instrução da l i n ha 40 fosse G OTO 1 0, só ser i a i mpresso o
n ú mero 1 . Por q uê?
Cada vez que a l i n h a 30 mandar a u mentar T de u ma
u n i dade, l ogo e m segu ida o G OTO 1 0 mandaria o p rograma

11o
pa ra u ma i n strução que d iz que T = 1 e , assi m , T vol taria a
ter esse va l o r ; o va lor i m p resso , então, seria sempre 1 .
Vo l temos ao exem p l o 2 :
Não era necessá rio mandar vo l tar o programa para a
l i n ha 1 0, pois as defi n ições.

1 0 A=1
20 B=A+2
30 C=A+B

serão sempre repetidas; como não h ouve a lteração no


va l o r d e A , B e C , bastaria vo l ta r para a l i n ha

40 P R I NT C

e o programa fa ria ,a mesma coisa : i m p ri m i ri a , seg u i damente ,


o n ú mero 32.
E m u m p rograma podem ser usados vá rios G OTO, mas
é p reciso toma r mu ito cu idado pois é fáci l o programador se
perder nos retornos e o p rogra ma entrar em l oo p .

Ex. 4 : 10 P R I NT "VALOR D E A";


2 0 I N PUT A
30 P R I NT A
40 G OTO 80
50 P R I NT "VALO R D E B " ;
6 0 I N PUT B
80 P R I NT "VA LO R D E C";
90 I N PUT C
1 00 P R I NT C
1 1 0 GOTO 1 50
1 20 P R I N T "VALO R D E D";
1 30 I N PUT D
1 40 P R I N T D
1 50 P R I NT " F I M"

V.amos anal isar esse p rograma por partes :


Pri mei ro, vamos su por q u e não ex istem as l i n has 40
G OTO 80 e 1 1 0 G OTO .1 50 .

111
O p rog rama seria rodado da segu i n te mane i ra :
RUN
V AL O R D E A? 1 5 ( tec l amos 1 5)
15
V AL O R D E B? -4 ( teclamos -4 )
-4
V AL O R D E C ? .38 ( tec l a m os .38)
.38
V AL O R D E D ? 0 ( tec l amos 0 )
0
FIM

OK

N ote o segu i n te : a i n terrogação correspondente aos


I N P U TS apareceu depois dos ST R I N G S " VA L O R DE . . . " ;
isto acon teceu porque co l ocamos u m ponto-e-v írg u l a depois
das i nstru ções
P A I N T "VALO R DE A";
esse ponto-e-v írgu la trouxe a i nstrução 1 N P U T A para a mes­
ma l i n ha onde fo i i m p ressa a frase VA L O R DE A; conse­
q uentemente os nú meros que fora m tec l ados apareceram na w•

mesma l i n h a , depois da i n strução .


O l e itor se lembra que u ma mane i ra d i ferente de o bter
o mesmo resu l tado é usar I N P U T "VALO R DE A" ; A.
Agora, vamos manter as l i n has que têm G OTO :
RUN
V AL O R D E A ? 1 3 ( tec l a m os 1 3)
13
V AL O R D E C ? -1 8 ( tec l amos - 1 8)
-1 8
FIM

OK

Observe que fora m p u l adas as l i n has referentes aos val o­


res de B e D ; o programa pu l ou para a l i n h a 80 e da l i nha
1 1 0 pu lou para a l i n h a 1 50 .
Observe, ta mbém , q u e nós tecl amos n ovos nú meros pa­
ra A e C. Os va l ores anteriores não ficaram armazenados,
depo is q u e · nós demos n ovo R U N no p rogra m a .

112
7 . 1 .2
- F O R/N E XT : essas i nstruções vêm sem p re j u n ­
tas, isto é, u ma d u p l a de i nstruções q u e executa u m l oo p
programado , ou sej a , faz o p rograma vol ta r para u ma certa
l i nha e executar as p róx i mas i nstruções d u ra nte u m n ú mero
ce rto de vezes, que é defi n ido pel o F O R .
Nada mel ho r q u e u m exem p l o :

Ex . 5 : 1 0 F O R A=l TO 1 0
20 P R I N T A
30 N EXT A
RUN
1
2
3
4
5
6
7
8
9
10

OK

Ana l isemos esse p rograma : F O R A= 1 TO 1 0 sign i fica


q u e , cada vez que o p rograma vo l ta r para a 1 i n ha 1 0, o va­
l o r de A passa rá a ser o p róx i m o da seq üência entre 1 e 1 0.
Ass i m , na p r i m e i ra passada pel a l i n ha 1 0, A= l ; e m se­
g u i da foi executada a i n strução segu i n te :

20 P R I NT A .

n a l i nha 30 a i nstrução N E XT A manda o progra m a vo ltar


para a l i n ha 1 0 ( u ma i nstrução N E X T semp re manda vo l ta r
pa ra a l i n ha q u e tem F O R ) e pega r o próx i m o val o r de A .
Então , na segunda passada , o va l o r de A é 2 e a p ró­
x i ma i n strução será n ovamente executada :

20 P R I NT A

Quando chegamos a 30, essa l i n ha manda pega r o


p róx imo va lor de A, e, assi m por d i a nte .

1 13
O que acontece depois que A atingi u o ú l t i m o va l o r ?
Quando a i nstrução N E XT A m a n d a pega r o p róx i m o va l o r
d e A e não ex iste próx i m o va l o r, o p rograma prossegue para
a l i n ha que vem l ogo depois da i nstrução N E XT.

Ex. 6: 10 FOR A=1 TO 5


20 ? " "O V A L O R D O QUA D R ADO D E A É =" ; A t 2
"
30 ? "O V A L O R D O T R I P LO DE A É ; 3*A=

40 N EXT A
50 P R I NT "ACA B O U O P R O G R AMA"
RUN
O V AL O R D O QU A D R A D O D E A t 1 =

O V AL O R D O T R I P L O D E A t 3
=

O V AL O R D O QU A D R A D O E A t 4 =

O V AL O R D O T R I P L O D E A t 6
=

O V AL O R D O QU A D R A D O D E A t 9 =

O V AL O R D O T R I P L O D E ft.. t 9
=

O V AL O R D O QU A D R A D O D E A t 1 6 =

O V AL O R D O T R I P L O D E A t 1 2
=

O V AL O R D O QU A D R A D O D E A t 25 =

O V AL O R DO T R I P L O DE A t 1 5
=

AC A B O U O P R O G R A M A

OK

Pa ra cada va l o r que A fo i assu m i ndo, · fo ra m executadas


as p róx i mas i nstruções até o N E X T e , depois de term i nados
os va l o res de A, o p rogra m a passou para a p róx i m a l i n ha :
50 ? "ACABOU O P R OG R A M A " .
i:: i m portan te nota r q u e , enquanto não acabarem o s va­
lores da va riável associada à i n strução F O R , o p rogram a não
sai rá desse loop , isto é, só executará aqu i l o que está entre
as l i n h as do F O R e d o N E XT .
Os val o res d a var iáve l vão au mentando de 1 em 1 , a
menos que se dê u ma i nstrução e m contrá r i o .
S e não d issermos m a i s nada a o computador, ele fará va­
riar A, de 1 até 1 0 (ou o n ú mero que q u i sermos) de u m
em u m .
Não é necessá rio começar e m 1 : a variável pode assu m i r
va l o res dentro d e u ma fa i x a que nós estabel ecemos :

1 14
Ex . 7 : 1 0 F O R X = 3 TO 6
20 ? X
30 N EX T X
RUN
3
4
5
6

OK

Pa ra fazer var iaçoes que não sej a m de 1 e m 1 , é neces­


sá rio acrescenta r u ma outra i n strução depois do F O R ; é a
i n strução ST E P (passo ) , que i n d ica o i n terva l o em que a va­
r i ável vai pu l a r :

E x . 8 : 1 0 F O R P=2 TO 8 STEP 2
20 ? p
30 N EXT P
RUN
2
4
6
8

OK

A variável P andou de 2 e m 2 , o que sig n i fica : o p ró­


x i mo P ( N E X T P ) representou u m avanço de 2 sobre o ante­
r i o r . A i n strução ST E P deve ser col ocada na mesma l i nha
q u e o F O R , sem nen h u m outro sinal ou carar:ter separando
as duas instruções.
O utra observação : usando ST E P, o passo de avan ço da
va riável não precisa ser i ntei ro nem positivo .

E x . 9 : 1 0 F O R T = . 5 TO 1 .95 STE P .6
20 ? T
30 N EXT T
RUN
115
.5
1 .1
1 .7

OK

Apareceu nesse p rograma u m aspecto bastante i m portan­


te : o ú lt i m o va l o r de T ( 1 .95) não foi usado, pois o N E XT
T, quando somou .6 ao anterior, que era 1 .7 , chegou a 2 . 3 ;
esse va l o r está fo ra da fa i x a estabel ecida, porque é maior
que 1 .95. Ass i m o l oop acabou em 1 .7 , que é o maior va l o r
poss ível dentro da fa ixa ( de . 5 a 1 .95) .
Quando o passo é negativo , o pri mei ro va l o r d a vari áve l
deve ser mai o r que o ú l timo e, ass i m , a v a r i áve l va i d i m i n u ­
i n d o d e va l or , em cada passada .

E x . 1 0 : 1 0 F O R 0=1 0 TO 5 STE P - 1
20 ? 2 * 0
30 N EXT O
40 ? "NÃO T E M M A I S O"
RUN
20
18
16
14
12
10
NÃO TEM MAIS O

OK

Os va l o res negativos tam bém podem ser frac ionários :

E x . 1 1 : 1 0 F O R A=2 TO - 1 STE P -.5


20 ? A
30 N E XT A
RUN
2
1 .5
1
.5
1 16
0
-.5
-1

OK

A fa ixa da va riável tam bém p ode at i n g i r val o res negati ­


vos, como v i m os neste ú l t i m o exem p l o ( A = 2 T O - 1 )
.

U ma outra o bservação i m porta nte é de que podem ser


usadas instruções mú lti p las para F O R e N E XT (com o , a l iás,
para qualquer outra i n strução ) .

Ex . 1 2 : 1 0 F O R T =1 TO 6 : ? T : N EXTT
R UN
1;
2
3
4
5
6

OK

O p rogra ma passou a ter apenas u ma l i n h a .


Essa mesma l i n ha pode ser usada e m m o d o d i reto , isto
é, sem nú mero :

E x . 1 3 : F O R T= 1 TO 6 : ? T : N EXT T
(< R E TU R N> )
1
2
3
4
5
6

OK

Ex . 1 4 : 1 0 R EAD A,8
20 F O R N= 1 TO 3: A= A+ 1 : 8=8+1
30 P R I NT A;8

1 17
40 C= A+B
50 ? "O VALO R DE e É " ; e
60 N E XT N
70 DATA 3,-4
R UN
4 -3
O V AL O R O E C É 1
5 ·-2
O V AL O R D E C É 3
6 -1
O V AL O R O E C É 5

OK

E x p l icação : pri mei ro o p rogra ma leu os val o res de A e


B (3 e -4) ; e m segu ida entrou n o l oop F O R/N E XT , execu­
tando as i nstruções cont i das entre essas i nstruções :
- a u mentou A e B de u ma u n i dade ;
- i m pri m i u o va l o r de A e B ;
- ca lcu l o u o va l o r de C ;
- i m p ri m i u a frase com o va l o r d e C ;
- vol tou para a l i n h a 20, isto é , au mentou n ova mente
A e B , e ass i m por d ia n te ;
- esse l o o p f o i executado 3 vezes, pois a i n strução era
F O R N= 1 TO 3.
Agora, vam os supor que o p rograma estivesse em u ma
forma d i ferente :

Ex . 1 5 : 1 0 F O R N= 1 TO 5 : R EA D A,B
20 P R I N T A ;B
3 0 N EXT N
40 D ATA 5, 1 2, - 1 , .5, 2, -2, -.04, 0, 1 1
50 D ATA -2, -6
RUN
5 12
-1 .5
2 -.M
0 11
-2 -6

OK
118
O que aconteceu ? S i m p l esmente , o l oop F O R / N E XT fi­
cou antes do R EA D , o que fez com que a i nstrução R E AD
fosse executada 5 vezes. Conforme ja mostra m os, cada i ns­
trução R EAD va i buscar o p róx i m o DATA e, assi m , os valo­
res de A e B fora m sendo l idos e i mp ressos, dentro d o con­
j u nto de DATA, cada vez que o l oop F O R/N E XT deu u ma
vo lta (5 vezes) .
Os va l o res associados à i nstrução F O R podem ser va riá­
veis numéricas, desde que o seu valor seja definido no pro­
grama antes da i nstrução F O R .

E x . 1 6 : 1 0 A=5 : 8=1 0
20 F O R C=A TO B : ? " C= " ; e : N EXT e
R UN
C=5
C=6
C=7
C=8
C=9
C=1 0

OK

E x . 1 7 : N o p rogra m a anteri o r vamos su bstitu i r a l i n ha


1 0 pel a segu i n te :

1 0 I N PUT " A= " ; A : I NPUT " B= " ; B

e co l ocar u ma n ova l i n h a

30 ? : G OTO 1 0

Vamos l ista r :
L I ST
10 I N P U T " A= " ; A : I N PU T " B= " ; B
20 F O R C= ATO B : P R I NT " C= " ; C : N EX T C
30 P R I N T : G O TO 1 0

OK
1 19
e executar
R UN
A=? 3
B=? 7
C= 3
C= 4
C= 5
C= 6
C= 7 r{essa l i n ha fo i pu l ada por causa d o
+.J P R I N T da l i n h a 30 )
A=?

Nesse ponto podemos entra r com novos dados ou s i m ­


p l esmente teclar R ET U R N e i n terromper o p rog ra m a .
Os va l o res i n ic i a l e f i n a l da variáve l do l oop F O R/ N E XT
podem ser defi n i dos de q u a l quer manei ra , usando , i ncl u sive ,
ex pressões matemáticas ; o i m porta nte é q u e o pri m e i ro e o
ú l ti m o va l o r , assi m como o ST E P, es;tejam cl a ramente def i ­
n i dos antes da i nstrução F O R ser executada .

E x . 1 8 : 1 0 A=2 : B=3 : C=4


20 F O R N= A * B TO B+C : ? N : N EXT
RUN
6
7

OK

Outras observações i m portan tes sobre as i nstruções


FO R/N EXT :
- o uso de CTR L C pode i n terromper o l aop no m e i o
(se percebermos, por exem p l o , que está havendo u m
erro ) ;
- o l oop pode ser u sado para dar u m i n te rva l o de tem­
po n o progra m a ; p a ra isto basta fazer o segu i nte :

F O R N= 1 TO 500 : N E XT N

nada acontecerá e n q u a n to o computador não "con­


tar " de 1 a 500 ; o va l o r dos i n terval os de tem p o de­
pende da vel ocidade d o com putador; cada l e i tor po­
derá fazer ex periências para veri ficar q uantas u n i da-
120
des são n ecessárias para o com putador espera r , p . ex . ,
u m segu ndo ;
- não é necessá r i o col oca r ( na m a i o r i a das versões m a i s
com p l etas de BAS I C ) o n o me da variável , dep o i s d o
N E X T (exceto quando h á mais de u m loop sendo
execu tado no programa, podendo trazer confusão )

Ex. : F O R P= l TO 5 : ? P : N E XT

( não esc reveremos N E XT P; o co m p u tador já sabe


que esse N E XT se refere ao P ) .

7 . 1 .3 - L OOPS E M B U T I DOS ( Nested Loops)


Os l oops F O R / N E XT podem ser col ocados uns den tro
dos outros, fo rmando os " l oops e m b u t i d os " .

Ex. 1 9 : 10 FOR A= 1 TO 5
20 ? "SÉ R I E N Ú M E R O" ; A
25 B= 8+4
30 F O R C= 8 TO 8+3 : P R I N T C
40 N EXT C
50 N EXT A
60 ? "ACABOU"
R UN
SÉ R I E N Ú M E R O 1
4
5
6
7
SÉ R I E N Ú M E R O 2
8
9
10
11
SÉ R I E NÚ M E R O 3
12
13
14
15
1 21
O que acontece u ? Si m p l esmente, o l oop F O R / N E XT fi­
cou antes d o R EA D , o que fez com que a i nstrução R EAD
fosse execu tada 5 vezes. Conforme ja m ostramos, cada i ns­
trução R EAD va i buscar o p róx i m o DATA e, assi m , os val o­
res de A e B fora m sendo l i dos e i mp ressos, dentro d o con­
ju nto de DATA, cada vez que o l oop F O R/N E XT deu u ma
vo l ta ( 5 vezes ) .
Os va l o res associados à i n strução F O R podem ser va riá­
veis n u mencas, desde que o seu valor seja definido no pro­
grama antes da i nstrução F O R .

E x . 1 6 : H J A=5 : 8=1 0
20 F O R C=A TO B : ? " C= " ; e : N EXT e
R UN
C=5
C=6
C=7
C=8
C=-9
C=1 0

OK

E x . 1 7 : N o p rogra m a anterior vam os su bst i tu i r a l i n ha


1 0 pel a seg u i n te :

1 0 I N PUT " A= " ; A : I N PUT " B= " ; B

e co l ocar u ma n ova l i n h a

30 ? : G OTO 1 0

Vamos l ista r :
L I ST
10 I N P U T " A= " ; A : I N PU T " B= " ; B
20 F O R C= ATO B : P R I N T " C= " ; C : N EX T C
30 P R I N T : G O TO 1 0

OK
1 19
e executa r
RUN
A=? 3
B=? 7
C= 3
C= 4
C= 5
C= 6
C= 7 r<essa l i n ha fo i pu l ada por cau sa d o
� P R I N T da l i n ha 30 )
A=?

Nesse ponto podemos entra r com n ovos dados ou s i m ­


pl esmente tec l a r R E T U R N e i n terromper o p rogra m a .
Os va l o res i n i c i a l e f i n a l da variáve l do l oop F O R/ N E XT
podem ser defi n i dos de q u a l quer mane i ra , usando , i nc l u sive ,
ex pressões matemáticas ; o i m po rtan te é que o pri mei ro e o
ú l ti mo va l o r , ass i m como o ST E P, e�tejam c l a ramente def i ­
n i dos antes d a i nst rução F O R ser execu tada .

Ex . 1 8 : 1 0 A=2 : 8=3 : C=4


20 F O R N= A*B TO B+C : ? N : N E XT
R UN
6
7

OK

Outras o bservações i m po rtantes sobre as i n struções


FO R/N E X T :
- o uso de C T R L C pode i n terro m per o l aop n o m e i o
(se percebermos, por exem p l o , que está havendo u m
erro ) ;
- o loop pode ser u sado para dar u m i n te rva l o de tem ­
po n o p rog rama ; para isto basta fazer o segu i n te :

F O R N= 1 TO 500 : N E XT N

nada acontecerá e n q u a n to o com p u tador não con­


tar" de 1 a 500 ; o va l o r dos i n te rva l os de tem p o de­
pende da vel oci dade d o com putador; cada l e itor po­
derá fazer ex periências para veri ficar q uantas u n ida-
1 20
des são necessárias para o computador espera r, p . ex . ,
u m seg u n d o ;
- não é necessá r i o col oca r ( na m a i o r i a das versões m a i s
com p l etas de B AS I C ) o nome da variável , dep o i s d o
N E XT (exceto quando h á mais de u m /oop sendo
execu tado no programa, podendo trazer con fusão )

Ex. : F O R P= l TO 5 : ? P : N E XT

( não escreveremos N E X T P; o com p u tador j á sabe


que esse N E XT se refere ao P ) .

7 . 1 .3 - L OOPS E M B U T I D OS ( Nested Loops )


Os loops F O R / N E XT podem ser col ocados uns dentro
dos outros, fo rmando os " l oops e m b u t i d os " .

Ex. 1 9 : 10 FOR A= 1 TO 5
20 ? "S É R I E N Ú M E R O"; A
25 B= 8+4
30 F O R C= B TO B+3 : P R I N T C
40 N EXT C
50 N EXT A
60 ? "ACABOU"
RUN
St R I E N Ú M E R O 1
4
5
6
7
St R I E N Ú M E R O 2
8
9
10
11
St R I E N Ú M E R O 3
12
13
14
15
1 21
Si: R I E N Ú M E R O 4
16
17
18
19
St R I E N Ú M E R O 5
20
21
22
23
ACABO U

OK

E x p l i cação : Vam os aco m panhar a execução do p rogra-


ma , passo a passo :
a ) o p rogra ma começou fazendo A = 1 ;
b ) em seg u i da i m p r i m i u o n ú mern da série ( A ) ;
c) na l i n ha 25 ficou estabelecido que B = 4 ( n a pri mei ra
vez ) , pois B era igual a zero e ficou igual a zero + 4 ;
d ) na próx i ma l i n ha o p rog rama entrou n o ou tro l oop
F O R/N E XT "embutido" den tro d o p r i m e i ro ; esse
l oop e m butido será executado i n tegra l mente, antes de
se chegar ao N E XT do pri mei ro l oop ( N E X T A ) ; por
i sso , NEX T C vem an tes de NEX T A ;
e ) a execução do l oop embutido faz i m p ri m i r os n ú me­
ros que vão de B até B+ 3 (ou seja , na p r i mei ra sé­
rie, de 4 até 7 ) ;
f ) q uando acaba o l oop i n terno ( l oop da variável C ) .
o p rogra ma passa pa ra a l i n ha N E XT A e vo lta para
a l i nha 1 0 ; dessa vez A = 2 ;
g ) será i m p resso o n ú mero da série 2 ( i nstrução da l i ­
n ha 20 ) ;
h ) B au mentará de 4 , passando pa ra 8 ;
i ) entra m os n ova mente no l oop C ; dessa vez va ría n d o
de 8 a 1 1 ; esse l oop i m p ri m i rá os nú meros e, depois
de ter m i nado, passará para N EXT A;
j ) o p rocesso recomeça e va i até que os va l o res de A
ten ham term i nado ( A = 5) ;
k ) depois de ter m i nado o l oop A , o p rogra ma passa rá
para a p róx i ma i n strução ( l i n ha 60) e a executará .

1 22
i= m u i to i m portante entender que os l oops embuti dos
devem ter os F O R e os N E XT col ocados de mane i ra que a
execução comece pel os l oops mais i n ternos e vá passando
para os mais externos. i= o bv i o que, nesses casos, n ão se
pode o m i t i r a variável depois da pa l av ra N E XT.

Ex. 20 : 10 F O R A= 1 TO 5 : P R I N T A
20 F O R 8= 1 TO 5 : P R I NT 8
30 FOR C= 1 TO 5 : P R I NT C
40 N EXT e ·1 (ve] a a ordem das variáve is, de
50 N EXT 8 : dentro para fora )
60 N EXT A 1
.J

Nesse p rograma, o l oop C será executado dentro d o


l o op B , o q u a l será executado dentro do l oop A.
Se h ouver engano na ordem o computador acusará erro,
i n d icando que encontro u u m N E X T sem o respectivo F O R .
Pa ra com p l eta r o entend i mento do uso do l oop F O R /
N E XT, vamos dar o exem p l o d a formação d e u ma tabel a de
quadrados e ra ízes quadradas de u ma série de nú meros.

Ex . 2 1 : 1 0 R EA D A$, 8$, C$
20 P R I N T A$; TA8 (8 ) ; 8 $ ; TA 8 ( 1 8) ; C$
30 F O R N= 1 TO 1 0
40 ? TA8 ( 1 ) ;N ; TA8 (8) ; Nt2; TA8 ( 1 7) ; SQR ( N )
50 N EXT N
60 DATA N Ú M E R O, QUAD RADO, " R . QUAD."
RUN
NÚMERO QU A D R A D O R . QU A D .
1 1 1
2 4 1 .41 42 1
3 9 1 .73205
4 16 2
5 25 2 2 3607
6 36 2 .44949
7 49 2 .64575
8 64 2 .82848
9 81 3
10 1 00 3.1 6228

OK

1 23
Usa m os as i n struções R E AD/DATA pa ra i m p ri m i r os t í­
tu l os das col u nas e o F O R/N E XT para ca lcu l a r e i m pri m i r
(tabu ladamente ) o s va l o Fes de N e d o quadrado e ra i z qua­
d rada de N .
Daremos n ovos exem p l os mais adiante . As inst ruções
F O R/N E X T são ri cas em a p l i cações de p rogra mação .

7 .2 - I NST R U Ç Õ E S CON D I C I ON A I S

As i nstruções d e con d ições são aquelas q u e mandam o


com p u tador execu ta r determ i n ada ta refa no caso de alguma
condição ser satisfeita . Essâ con d i ção é defi n i da no p rogra­
ma e, toda a vez que ela é satisfe i ta o p rograma executa rá
determ i nada i n strução . Caso a con d i ção não seja satisfeita , o
programa con t i n u a rá normal mente , na l i n ha segu i n te .

7 .2 .1 - I F - - - - TH E N
Esse par d e i nstruções, que é e m p regado sem p re em
conj u nto, fu nciona da segu i n te manei ra :
1 F ( S E ) acon tecer determ i nada con d i ção no progra m a ,
TH E N ( E N TÃO ) execu te a segu i n te i n strução (segue-se u rn a
nova i n strução ) .

E x . 22 : H J P R I NT "ESCO L H A U M N Ú M E RO";
20 I N PUT A
30 I F A=5 TH E N P R I NT "AC E R TO U" : GOTO 50
35 P R I NT " E R R O U"
40 G OTO 1 0
50 E N D
RUN
E SC O L H A U M N Ú M E R O ? 3
ERROU
E SC O L H A U M N Ú M E R O ? 2
ERROU
ESC O L H A U M N Ú M E R O ? 5
AC E RT O U

OK

1 24
Ana l ise m os o que aconteceu : o p rograma ped i u u m n ú -·
mero ( l i n has 1 0 e 20) . A va riável A tomou esse n ú mero ,
isto é, ficou sendo i g u a l ao n ú mero que o operador técl ou .
Na l i n ha 30 a i nstrução d i z q ue se A for igual a 5 ( 1 F
A = 5 } , o p rograma deve mandar i m p ri m i r AC E R T O U ( T H E N
P R I N T " AC E R TO U " ) ; a lém d i sso , o p rograma deve p u l a r
pa ra a l i n ha 50, que term i n a a execu ção ( E N D ) . Mas, se A
não for igual a 5, a l i n h a 30 não é executada e o p rograma
prossegue para a l i n h a 35, onde se manda i m p ri m i r E R R O U .
Na l i n ha 40 o p rogra ma vo l ta para a l i n h a 1 0 ( G OT O 1 0 )
e pede n ovo n ú me ro . O p rogra ma fi cará ped i n do n ovos n ú ­
meros até o operador tec l a r 5, que é o n ú mero certo , para
esse prog ra m a .
Na m a i o r i a d o s i n terpretadores e com p i lado res B AS I C ,
q uando h ouver mais de u ma i n strução por l i n ha , o p rogra- "
ma só executa rá as i n st ru ções seg u i n tes ao 1 F no caso de a
cond ição esta be l ecida ser satisfe i ta . N o exemp l o aci m a , na
l i n ha 30 havia u ma i n strução separada d o conj u nto
1 F- - - - T H E N por dois pontos ( G OTO 50 ) . No exem p l o .
que nós ex p l i ca mos, essa i n strução , a pesa r de separada do
1 F - - - -TH E N , tam bé m f i cou Gon d i c i o nada a o atend i men­
to da cond i ção A = 5 .
E m a l g u ns ti pos d e B AS I C , n o entanto, essa i nstrução
ficaria rea l mente separada do 1 F - - - - TH E N , e ser i a execu­
tada sem p re , mesmo que A não fosse igual a 5.
i: necessár i o que o leitor verifique com o funci o n a o
BAS I C com q ue estiver traba l hando.
Para os efe i tos deste manual considera remos que tudo o
que vier depois d o 1 F - - - - T H E N está suje i to à mesma
cond i ção , i sto é , só será executado se o 1 F for sat i sfeito.

E x . 23 : 10 I N PUT A
20 I F A= -4 TH E N G OTO 40
30 G OTO 1 0
40 P R I N T "ACABOU"

Nesse exem p l o , quando o operador entrar com o nú me­


ro -4, o p rograma va i p u l a r da l i n h a 20 para a l i n ha 40 ; i m­
pri m'irá ACABOU e ter m i na rá a execução. E n q uanto A não
fo i igual a -4 o p rograma fica rá i n do da l i n ha 30 para a l i­
nha 1 0 e ficará ped i n do n ovos va l o res de A.

1 25
N as versões m a i s recen tes de. BAS I C não é necessá r i o ,
n o caso d o exem p l o ac i ma , escrever T H E N G OTO 4 0 , basta
escrever T H E N 40. O p rograma já sa be q u e se trata de u m
desv i o pa ra a l i n ha 40.
As con d i ções em que o 1 F é u sado são as seg u i ntes :
- considera n d o d u as va riáve is, A e B , podemos usa r o
1 F n os s�gu i n tes casos :
IF A < B ( A menor que B )
A > B ( A m a i o r que B )
A = B (A igual a B )
A <= B ( A menor ou i g u a l a B )
A >= B ( A m a i o r ou i g u a l a B )
A <> B ( A d i fe rente de B )
Por mais com p lexas que seja m as con d ições esta be l ec i ­
das em u m p rogra m a , e l as aca ba m ca i n do em u ma d a s cate­
gorias aci ma (veremos d iversos exem p l os a segu i r ) .
U m outro uso mu ito com u m para o 1 F - - - - T H E N é
o uso d o coman d o P R I N T :
I F A > B TH E N P R I N T "XXX"
Se essa con d i ção não fo r sat isfe i ta , o com p u tador não
i m p ri m i rá nada .
E x . 24 : 1 0 R EA D X
20 I F X < 0 TH E N P R I N T " V E R D A D E I R O :" ;X ;
"<0 " : G OTO 1 0
30 P R I N T " F A LSO : " ; X ; " N ÃO É < 0 : G OTO 1 0
"

40 DATA 5, 0, 2 , -6, -2, 1


RUN
FALSO : 5 NÃO É < 0
FALSO : 0 NÃO É < 0
FALSO : 2 NÃO É < 0
V E R DADE I R O : -6 < 0
V E R DA D E I R O : -2 < 0
FALSO : 1 NÃO É < 0
ERROR IN 10

OK

Observações sobre o exem p l o aci ma :


- i n i c i a l mente o p rogra ma atri bu i u a X o p r i m e i ro va l o r do
DATA ( X = 5 ) ;
- co mo X não era menor d o que zero, todo o conteúdo da

1 26
l i nha 20 fo i abandonado e o p rog rama passou
nha 30 ;
- i m p ri m i u o que estava dete r m i nado e vol tou para
1 0;
- leu u m n ovo va l o r para X ; agora X = 0 ( p ró x i m o va l e,
l i n ha 4 0 DATA) ;
- passou pa ra a l i n h a 20 e , já que X não era menor d o que
0, passou para l i n h a 30, i m p ri m i ndo e vo ltando para 1 0 ·
- fo i l i d o u m novo va l o r para X ( X = 2 ) , que era o próx
mo do conj u n to de D ATA ;
- na l i n h a 2\J X a i n da não era men o r do que 0 ; passou pa­
ra l i n ha 30, i m p ri m i u e vo ltou para a l i n ha 1 0 ;
- n ovo va l o r pa ra X ; dessa vez X = -6 ;
- na l i n h a 20, ao ver i f i ca r que X é menor que 0 , o p rogra- ,,
ma mandou i m p ri m i r o que v i n h a depo is do T H E N e pu­
l o u pa ra a l i n h a 1 0 ;
- foi l i do n ovo va l o r de X ( X = - 2 ) ;
- a l i n ha 2\J funcionou , pois X era men or que (J ;
- n ovo va l o r de X ( X = 1 ) ;
- na l i n ha 20 , como X não era men or d o que 0, o p rogra-
ma passou d i reto para a l i n h a 30 ;
- na l i n ha 30 , i m p ri m i u o que estava determ i nado e vo l tou
para a l i n ha 1 0;
- nesse mo mento , a l i n h a 1 0 mandou ler o p róx i m o va l o r
pa ra X , m a s já acabara m o s va l o res da l i n h a 4 0 ( DATA) ;
assi m , fo i i m p ressa u ma mensagem de erro, i n d i ca n d o
" m a i s R E AD's do que D A T A's" .
U m ou tro exem p l o , va r i a n te do pri me i ro, se ria mandar
i m p ri m i r os n ú meros posi tivos.
E x . 25 : 10 R EA D X
20 I F X > 0 TH E N P R I N T X
30 G OTO 1 0
40 D ATA 2,-5,0,3 .5,-.5,.4
RUN
2
3 .5
.4
ERROR IN 10

OK

1 27
1 vez que o n ú mero não era m a i o r do que 0, o
passava para a l i n h a 30, vo l tava para a l i n ha 1 0 e
·

va l o r para X (nesse caso não encontrava nen h u ma


J P R I NT, pois o P R I N T está associado a X > 0 ) .
J mensagem de erro quando aca bara m os dados.

Vejamos um p rograma um pouco mais com p l icado :


E x . 26 : 5 Nc: N+l : I F N>B TH E N 60
1 0 I N PUT "VA LO R D E B " ; B
20 I N PUT "VALO R D E D " ; D
30 A= 3 t B + 2* B : C = SOR ( D ) + D
40 I F A > C T H E N P R I N T " B � M E LH O R " : G OTO 5
50 P R I NT "D � ME L H O R " : G OTO 5
60 P R I N T "ACABOU O JOGO"
RUN
VAL O R D E B ? 1
V AL O R D E D ? 2
B É MELHOR
V AL O R D E B ? 2
V AL O R D E D ? 9
B É MELHOR
V AL O R D E B ? 5
V AL O R D E D ? 7
B É M ELH OR
V AL O R D E B ? .9
V AL O R D E D ? 8
D É M ELH OR
V AL O R D E B ? - 1
V AL O R D E D ? .8
D É MELHOR
V AL O R D E B ? -5
V AL O R DE D ? 5
D É MELHOR
V AL O R D E B ? . 5
V A L O R DE D ? 4
D É M ELHOR
V AL O R D E B ? 3
V AL O R O E D ? 8
B É MELHOR
AC A B O U O J O G O

OK
1 28
A ex p l i cação do programa é si m p les :
- cada vez que o progra ma volta para a l i n ha 5 vai "con­
tar" u ma passada , isto é, N au mentará de uma u n i dade ;
- na mesma l i n ha d i zemos que, quando N for maior que 8 ,
i sto é, depo i s de entrarmos 8 vezes com va l o res para B
e O , o programa p u l a para a l i nha 60, i m pri me ACA­
B O U O J O G O e term i n a ;
- nas l i n has 1 0 e 2 0 o p rograma pergu nta o s va lores d e B
e O, que serão teclados pelo operado r ;
- na l i nha 30 o p rogra ma efetua d uas contas : u ma q u e de­
f i ne um va l o r de A, em função de B, e outra que defi ne
u m va lor de C em fu nção de O ;
- n a l i nha 40, a pós ca l cu l a r os va l o res de A e C , o p rogra­
m a determ i na que, se A fo r ma i o r que C , deverá ser i m­
p resso a frase : B É M E L H O R e o p rograma deve vo l ta r
pa ra a l i n h a 5 contando m a i s u ma passada e pergu ntan­
do n ovos va l o res de B e O ;
- se A não for m a i o r que C , o programa passa para a l i n ha
50, que manda i m p ri m i r O É M E L H O R e vol ta para o
i n íci o ( ped i ndo n ovos va l o res de B e O ) .
o contador que fo i u sado n o p rogra­
No ta importan te :
ma do exem p l o 26 para term i na r depois de um certo
n ú mero de passagens, pode ser u sado para evi ta r as
mensagens de erro que apareceram n os exem p l os 24 e 25.

Ex. 27 : 10 R EA D X
20 N=N+1 : I F N>5 TH E N E N D
30 I F X>0 TH E N P R I N T X
35 G OTO 1 0
40 D ATA 2, -5, 0, 3.5, .4, -.5
RUN
2
3 .5
.4

OK
Essa nova versão do exemp l o 25 não deu mensagem de
erro porque, quando foi l id o o ú l t i m o dado (o sexto dado,
- . 5 ) , N passou a ser igual a 6 e, l ogo, maior do que 5 , o
que fez term i nar o p rograma na l i n ha 20 (TH E N E N D l :

1 29
Mesmo se col oca rmos mais dados positivos na l i n ha 40,
o resu l tado será o mesmo pois o contador term i n a rá o pro­
grama quando N> 5.

E x . 28 : Colocar a nova l i nha 40


40 DATA 2, -5, 0, 3.5, .4, -4, -.5, 3, 4, - 1
RUN
2
3.5
.4

OK

Agora , se t i ra rmos o "contador", os va l o res posi tivos 3 .

e 4 que nós i n c l u (mos na l i n ha 4() serão l i dos e i m p ressos,


mas, nesse caso , apa recerá a mensagem de erro , ind icando
"mais R E ADS d o que DATA" , depois que for l id o o ú l t i m o
dado ( a l i n ha 3 5 mandará vol ta r para a l i n ha 1 0, para l e r
m a i s u m val o r d e X , mesmo depois q u e os va l ores acaba­
rem ) . Suponhamos e l i m i nada a l i n h a 20 :
RUN
2
3 .5
.4
3
4
ERROR IN 10

OK

As comparações ou con d ições que i n f l uem nas i n stru­


ções 1 F/T H E N não são a penas n u méricas. Também podem
ser fei tas comparações de ST R 1 N G S.
Vamos mod i f i ca r u m pouco o p rograma do exem p l o 22 :

E x . 29 : 1 0 P R I N T " ESCO LHA U M N Ú M E R O " ;


2 0 I N PUT A
30 I F A=5 TH E N P R I NT "ACE RTO U " : G O T O 50
40 P R I NT "E R ROU"
50 I N PUT "QU E R CO N T I N U A R " ; K $
60 I F K $
= "S I M" TH E N 1 0
RUN

1 30
E SC O L H A U M N Ú M E R O ? 3 (1 )
E RROU
QU E R C O NTI N U A R ? SIM (2)
ESC O L H A U M N Ú M E R O ? 5
AC ERTOU
QU E R C O N T I N U A R ? N Ã O

OK

( 1 ) tec l a mos o n ú mero 3 ;


( 2 ) tec l a mos a pal avra S I M , sem aspas.

O bservações s o b re o exe m p l o aci ma :


- q u a n d o q u e remos que o 1 N P U T seja u ma pa l av ra , l etra ou
frase , a vari áve l associada deve ter o cifrão ; n o caso aci ma
defi n i mos q u e a resposta será um ST R I N G den o m i nado
K$;
- podemos co mpara r o ST R 1 N G K $ com outro ST R 1 N G ,
u sando a s a l ternativas > , < , > = ,< = ,< > , ; essa com ­
=

pa ração será fe ita pe l a ver i f i cação da o rdem a l fabét i ca da


p r i m e i ra letra do ST R 1 N G ( se a pri m e i ra l etra d o ST R 1 N G
K $ for, p o r o rdem a l fa bética , men o r qwe a p r i me i ra l etra
d o outro ST R I N G , o ST R I N G K $ será considerado me­
nor que o outro ) ; se as p r i m e i ras l et ras forem iguais, a
comparação se fa rá na p ró x i ma e , assi m por d iante ; se
todas as letras forem iguais até u m certo ponto, mas u m
'
dos ST R 1 N G S tiver mais ca racte res , o que t iver m a i s ca­
racteres será consi derado m a i o r ;
- quando q u e remos comparar u ma va ri áve l de ST R 1 N G com
um ST R 1 N G , este deve esta r . co n t i d o en tre aspa� ( l e m bre­
se d o caso d o coman do L E T : L E T A$= "AN D R � " ) ;
- quando o operado r va i tec l a r u m ST R I N G , com o resposta
à perg u n ta do com p u tador, esse ST R 1 N G não l eva aspas
( reveja o cap ítu l o sobre a i n strução I N P U T ) ;
- o prog ra ma comparou K $ com o q u e o opera d o r tec l o u ;
se for o mesmo ST R I N G ( K $= "S I M " ) , o p rogra m a exe­
cutará o que est iver depo is do T H E N ( n o exem p l o aci m a ,
v o l ta para a l i n ha 1 0, perg u n ta n d o -novo n ú mero ) ;
- se K $ não for i g u a l a S I M ( isto é, se for teclado q ua l ­
quer o utra pa l avra , frase , letra o u ca racter) , o computad o r
passa pa ra a p róx i ma l i n ha ( c o m o n ã o h á , n o exem p l o

1 31
. aci ma, nen h u ma outra l i n ha, o p rograma s i m p l esmente
acaba ) .

i: c l a ro que o p rogra ma mostrado poderia ser fe i to de


vá rias outras mane i ras :
Poder ía mos, na l i n ha 60, co l oca r :

60 IP K$ = "S" T H E N 1 0

Nesse caso , para con t i n u a r o p rogra m a basta ria teclar a


letra S, em vez da pa lavra S I M .
Poder ía mos, ta m bé m , fazer por desigua l dade :

60 I F K $ <> " N " TH E N 1 0

Nesse caso , batendo qua l q uer tec l a , diferente de N , o


jogo i ria con t i n uar, com o progra ma vo l tando para a l i n h a
1 0 . Se fosse tec lado N , o prog ra ma ter m i n a r i a .
A comparação d e vari áveis d e ST R I N G pode ser úti l n o
caso das i nstruções R E AD/DATA.
Va m os adaptar um pouco o p rogra ma do exem p l o 24 :

E x . 30 : 1 0 R EAD X $ , Y
20 I F X $= "F I M " TH E N P R I N T "ACABO U " : E N D
3 0 I F Y < 0 T H E N P R I NT " V E R DAD E I R O :" ;
X $ ;Y ;" É <0" :G OTO 1 0
40 P R I N T " F A LSO :" ; X $ ; Y ; " N ÃO É <0" : GOTO 1 0
50 D ATA " O N Ú M E R O", 5, " O N Ú M E R O ",
0, " O N Ú M E R O", -6, " O N Ú M E RO",
-.2,
" O N Ú M E R O " , 1 , F I M,0

Antes de rodar o p rogra ma, observe o segu i n tE: :


- dessa vez va mos ler duas va riáveis d e cada vez : u ma va riá­
vel de ST R 1 NG e u m n ú mero;
- va mos mandar i m p ri m i r as d uas va riáveis ( l i n has 30 e 40) .
- os ST R I N G S " O N Ü M E R O " estão entre aspas por causa
do espaço i n icia l , que será necessá r i o na hora da i m p res­
são ; o ST R I N G F I M não precisa de aspas;
- o zero fo i co l ocado depo is d o F I M para poder dar um va­
l o r a Y, já que X $ e Y são l i dos de u ma vez e, se
pa rássemos no F I M , o p rogra ma acusaria fa l ta de dados;
- quando o R E AD X$ chega r à pa l av ra F I M , a i nstrução

1 32
da l i nha 20 ma n dará i m p ri m i r ACABO U e ter m i n ará o
p rograma ; nesse caso é necessário col oca r o E N D, pois, se
isso não for feito, o p rog rama prossegu i rá para a l i n ha 30,
depois de i m p ri m i r ACABO U ; é u m dos exe m p l os de caso
em que se necessita co l ocar a i n strução E N D no meio do
p rograma . Essa pa l avra , F I M , é u m tipo de F LAG .

Agora , vamos execu ta r o p rograma :


RUN
FALSO : O N Ú M E R O 5 NÃO É <0
FALSO : O N Ú M E R O 0 NÃO É < 0
V E R D A D E I R O : O N Ú M E R 0 -6 É <0
V E R D A D E I R O : O N Ú M E R 0-2 . É <0
FALSO : O N Ú M E R O 1 NÃO É <0
AC A B O U

OK

O bservações :
- veja que o espaço col ocado n os ST R I N G S " O N Ú M E­
R O " serv i u para separar as palavras F A LSO : e V E R DA­
D E ! R O : das palavras O N Ú M E R O ;
- como não co l oca m os n e n h u m espaço depois d a palavra
·

N Ú M E R O , os n ú meros n ega t ivo s ficara m "grudados" na


pa lavra N Ú M E R O ; i sso não aconteceu com os n ú meros
positivos que têm se m p re u m espaço na frente ( represen­
tando o sinal de + , que não aparece ) .

Até aqu i vi mos casos e m q ue havia u ma i nstrução


1 F- - - - - TH E N em u ma l i nha, e se a condição estabe lecida
não fosse satisfeita , o p rogra ma passaria para a próx i ma l i ­
nha. I sto s i g n ifica : 1 F (certa coisa acontecer) TH E N (faça
determ i nada coi sa ) . Se não acontecer, apenas passe para a
p róx i ma l i n h a .
Acontece que, e m a l guns casos não ex iste apenas a con­
dição e o seu oposto (ou seja, "acontece" o u "não acon­
tece" ) .
Para exem p l ifica r : q ueremos saber se u m n úmero é
maior que zero, igual a zero ou menor que zero (são 3 con­
d i ções e não apenas 2 ) .

1 33
Nesse caso, teremos que usar as i n struções 1 F- - - - TH E N
repetidamente . E m outras palavras, pri mei ro o p rograma veri ­
fica se a primeira cond i ção foi satisfeita ; se não foi , passa
para a p róx i ma l i nha, onde i rá encontrar u ma n ova i nstru­
ção 1 F- - - -TH E N para verificar a segu nda cond ição ; se a
segu nda condição não for satisfe i ta , o p rograma passa para a
li n h a segu i nte.
Teorica mente podemos col ocar vár i os 1 F- - - -TH E N em
l i n has sucessivas, para verifica r u ma série grande de cond i ­
ções. N a p rática isso se torna u m pouco com p l icado e ex ige
m u i ta atenção do p rogra mador para não entra r em condições
con t raditórias.

Ex. 3 1 : 10 I N PUT "ESCO L H A U M N Ú M E R O"; N


20 I F N <0 T H E N P R I NT "O N Ú M E R O ";
N ; " É <0 " : G OTO 1 0
30 I F N=0 T H E N P R I NT "O N Ú M E R O " ;
N ; " É=0 "; G OTO 1 0
40 P R I NT "O N Ú M E R O " ; N ; " É >0" :
GOTO 1 0

Vej a m os o que acontece :


R UN
ESC O L H A U M N Ú M E R O ? 2
O NÚMERO 2 t > 0
ESC O L H A U M N Ú M E R O ? -5
O N Ú M E R O -5 t < 0
ESC O L H A U M N Ú M E R O ? 0
O NÚMERO 0 t 0 =

ESC O L H A U M N Ú M E R O ?
( nesse momento vam os tecl a r < R ET U R N > e i nterrom­
per o p rograma )

U ma ráp i da aná l ise mostra o que aconteceu :


- q uand o entramos com o n ú mero 2, N passou a ser igual a
2;
- n a l i n h a 20 o programa verificou q u e N não era menor
que zero e passou para a l inha 30;
- na l in h a 30 o p rograma verificou que N não era igual a
zero e passou para a l inha 40;

1 34
- a l i nha 40 mandou i mpri m i r o N Ú M E R O 2 E > 0 e vol ­

tou para a l i nha 1 0;


- na l i n ha 1 0 foi ped ido u m novo n ú mero ; entramos com
o nú mero -5;
- na l i n ha 20 o p rogra ma verificou que N < 0 e então
(TH E N ) mandou i m p ri m i r O N Ú M E R O -5 E < 0 e voltar
para a l i n ha 1 0 ;
- com a nova pergunta , esco l hemos o nú mero 0 ;
- na l inha 2 0 o progra ma passou d i reto , p o i s N não era me-
nor que 0;
- na l i nha 30, a cond i ção foi satisfeita ( N=0) ; foi i m p resso
0 E = O e vo l tou para a l i n ha 1 0 ;
- quando foi ped i d o n ovo n ú mero, nós tecla m os < R ETU R N >
e i n terrompemos o progra ma.

7 .2 .2 - AN D, OR e N OT
Essas i n struções servem para fazer comparações m ú lti­
p l a s (se ta l coisa acontecer E (ANO) ta l co isa acontecer OU
(OR) ta l acontecer T H E N faça aqu i lo ) .
E m m u i tos casos, já vi m os que gosta r ía m os de com pa­
ra r d iversas coisas si m u l taneamente, para , só então , chegar a
u ma conclusão .

Ex . 32 : 1 0 A=3
20 I N PUT "VALO R DE B" ; B
30 I N PUT "VALO R D E C"; C
40 I F B=A A N O C= A TH E N P R I NT
"OS TR �S N Ú M E R OS SÃO I G UA I S" : E N D
50 P R I NT "OS T R �S N Ú M E R OS NÃO
SÃO I G UAIS"
RUN
VAL O R D E B? 3 (teclamos 3)
VAL O R DE C? 4 (teclamos 4)
OS T R � S N Ú M E R OS NÃO S Ã O I G U A I S

OK

O q u e aconteceu : B=3 (o primeiro I N PUT) era igual a


A, mas C=4 não era igual a A. Assim a condição dupla não
foi satisfeita e o programa passou para a l i nha 50.
A condição · AN O pode ser• usada mais vezes :

1 35
E x . 33 : 1 0 I N PUT "QU E R JOGAR COM I GO"; S$
20 IF S$ <> "S" TH E N E N D
3 0 I N PUT "D I G A U M N Ú M E R O "; N
40 I N PUT " D I G A O UT R O N Ú M E R O" ; M
50 I N PUT " D I G A OUTRO N Ú M E R O" ; Q
60 I N PUT "QU E R V i: - LOS E M O R D E M C R ESCE NTE";
A$
70 IF N<M ANO M < Q ANO A$="S"TH E N P R I NT N ;
M; Q
80 I F N < M A N O Q< M A N O N <Q A N O A $="S"
TH E N P R I NT N ; Q; M
90 I F N<M A N O N>Q A N O A$= "S" T H E N
P R I NT Q ; N ; M
1 00 I F N > M A N D M > Q A N O AS="S" TH E N
P R I NT Q ; M ; N
1 1 0 I F N < M _ A N O M <Q A N O Q> N A N O A$="S"
T H E N P R I NT M; N ; Q
1 20 I F N > M A N O N > Q ANO Q> M A N O A $="S"
TH E N P R I NT M; Q; N
RUN
QU E R J O G A R C O M I G O ? S (tec l a mos S )
D I GA UM N Ú M E R O? 25 ( tec l a mos 25)
D I G A O U T R O N Ú M E R O ? 38 (tecl a mos 38)
D I GA O U T R O N Ú ME R O ? 1 3 (tecl a mos 1 3 )
QU E R V t- L O S E M O R D EM C R ESC E N TE ? S (tecla-
m os S )
1 3 25 38

OK

Veri fica-se que o programa executou várias com pa rações


si m u l tâneas, i ncl usive com u m S T R I N G (A$ ) . E m qualquer
caso, quando u ma das condições si m u l tâneas não é satisfe i ta ,
o programa passa para a próx i ma l i nha.
No caso do O R , as con d i ções ·são a lternativas : se acon­
tecer ·isto OU (OR) aqui l o , então faça ta l coi sa .

Ex. 34 : 1 0 I N PUT " D I G A SEU NOME"; A$


20 IF A$="JOÃO" O R AS=''MANOE L" O R AS=
"ANTÔN IO"TH E N P R I N T "SEU NOME �";A$ :E N D
30 PR I NT "NÃO E NTEN D I S E U NOM E-FAVOR

1 36
R EPETI R " ; : I NPUT AS
40 GOTO 20
RUN
D I GA SEU N OM E? JOAQU I M (foi teclado esse
nome)
NÃO E N TE N D I SEU N O M E - FAV O R R EPETI R ?
JOÃO (tecla mos JOÃO)
SEU N O M E t J O Ã O

OK

Na l i n ha 2 0 col oca mos u ma con d ição n a qual o progra­


ma reconhecerá os nomes JOÃO OU (OR) M A N O E L OU
(OR) ANTÓ N I O . Se nen h u m deles foi teclado o progra ma
passa para a l i n ha 30, pergu nta de n ovo e vol ta para a l i n h a
20 (comparação ) .
Vamos, agora , fazer u m exemp l o i nteressante em que
a parece a comparação de ST R 1 N G S por sua ordem a l fabét i -
ca .
Vamos esco l her três pa lavras e mandar o program a co­
l ocá-las em ordem a l fabética ( t i po d i c i onári o ) .
Esse exem p l o é u ma variante do exemp l o 33.

Ex. 35 : 10 I N PUT "DIGA T R �S PALAV R AS SEPAR ADAS


PO R V (R G U LAS " ; AS, B S, CS
20 ? "A O R D E M A L F A B ÉT I CA É A SEG U I NTE"
30 IF AS<BS A N O B S <CS THEN P R I NT
AS : P R I N T B S : P R I N T CS : GOTO 1 0
40 I F A S < B S A N O CS < B S ANO A$ <C$
TH E N P R I NT A$: P R I NT C$ : P R I NT 8 $ : GOTO 1 0
50 I F A S < B S A N O AS>CS TH E N
PR I NT C$ : ? AS : ? 8 $ : GOTO 1 0
60 I F A$> B $ A N O B $ > C$ THEN
PR I NT C$ : P R I NT 8$ : ? A $ : GOTO 10
70 I F A$>B$ A N O B $ <C$ ANO
C$>A$ T H E N ? 8$: ? A$ : ? C$ : GOTO 10
80 PR I NT 8$: P R I NT C$ : PR I NT A $ :
GOTO 1 0
RUN

1 37
D I G A T R �S P A L AV R AS S E P A R A DAS P O R
V fR G U L AS? T R EVO, G ATO, POSTE
!-.. O R D E M A L F A B É T I C A É A S E G U I N T E
G AT O
P O STE
T R EV O
D I G A T R ÊS P A L AV RAS SEPA R A D AS P O R V l'R G U ­
L AS?°

Nesse ponto podemos con t i n uar, tentando va r i as pa l a­


vras, ou tec l a r < R ET U R N > , i n terrompendo o progra m a .
A i nstrução N OT eq u iva l e a " não é i g u a l a" ; e l a é usa­
da da seg u i n te mane i ra , em conju nto com 1 F e TH E N :

I F N OT B > A T H E N 7
O sign i ficado dessa i n strução é o segu i nte :
se B não for m a i o r que A vá para a l i n ha 7 (é o mes­
mo q u e B< =A ) .

E x . 36 : 1 0 I N PUT " D I G A U M N Ú M E RO"; A


20 I F N OT A=0 T H E N P R I N T "A É D I F E R E N T E D E
Z E RO"
30 P R I N T "A É I G UA L A Z E RO"

Se A for d i ferente de zero, a i n strução con d i c i on a l da


l i nha 20 será satisfe i ta .

7 .2 .3 - An tes d e prossegu i r na descri ção das i nstruções


da l i n guagem BAS I C devemos mencionar que ex iste u ma q u e
não tem a fi na l i dade d e executa r nen h u ma fu nção no pro­
grama. i: a i n strução R EM , o r i u nda da pal avra "-remark", ou
seja , comentá r i o .
A i nstrução R EM serve para se colocar notas e i n forma­
ções no programa, para faci l ita r a sua compreensão . Quando
o p rograma for escrito, i m p ress o ou l istado no v ídeo, as in­
formações contidas j u nto à i n strução R EM poderão ser de
grande va l o r para a correção de erros ou , mesmo, para re­
lembrar ao autor do programa a razão de ser de certas i ns­
truções ( le m b re-se que, após a l gu m tempo, os p rogramas
mais longos fica m d i f íceis de ser entendidos até mesmo pel o
au to r ) .

1 38
A i nstrução R E M é usada da seg u i n te mane i ra :
20 R E M - P R OG R AMA PA R A CÁ LCU LO
DA Á R EA DE UM CIR CU LO
A i nstrução é col ocada em uma l i n ha n u merada, n o lo­
cal do progra ma em que se deseja colocar a i n formação e é
segu ida de traço ( h ífen ) e o comentá r i o , sem necessi dade de
aspas.

E x . 37 : 1 0 R E M - V O L U M E DE UM C I L I N D RO
20 I N PUT " R A I O DA B ASE" ; R :
R EM - CÁ LCU LO D A Á R EA DA BASE
30 A= 3 , 1 4 1 59* R t 2
40 I N PUT "A LTU RA"; H
50 R E M - CÁ LCU LO D O V O L U M E
60 V = A * H
70 P R I N T "O V O L U M.E É " ; V

Quando o programa for executado, as i nstruções R EM


e os comentários que se seguem não serão considerados pelo
co m p u tador. No entanto esses comentários ficam i n c l u ídos
n o programa e, toda á vez que se l i sta r o mesmo, todos os
R E M serão ta mbé m l istados, facil i tando o traba l h o do ope­
ra d or
.

No caso do exemp l o aci ma não serra necessá rio colocar


co mentários, mas, quando o programa fica mais com p l i cado,
essa i n strução se torna bastan te ú ti l .
Duas observações :
- a instrução R E M deve sem p re ser a ú lti ma de u ma l i­
n ha com instruções m ú l t i p las; se isso não for feito,
tudo o que aparecer depois do R EM , na mesma l i nha
n u merada , será considerado comentário e n ão será
executado (veja l i n ha 20 n o exem p l o aci ma ) ;
- não se deve abusar d a i n strução R E M , pois os comen­
tários ocupam memória do com putador; �i m , deve­
mos colocar o R E M em l ugares estratégi cos, para ori­
entação do p rogramador ou de outras pessoas que
tenham que estu dar o p rograma.
A colocação de comentá rios se torna particu larmente
i mportante quando usamos sub-rotinas, como se verá n o pró­
x i mo cap ítu l o .

1 39
7 .2 .4
- Para concl u i r este cap ítu lo sobre i nstruções de
l oop e condicionais, vamos mostra r u ma ap l i cação i n teres­
sante da i n strução G OTO.
E m d iversas versões de B AS I C é poss ível usar essa i ns­
trução em modo d i reto , dando o n ú mero de u ma l i nha (su­
pondo que já ex iste u m progra ma armazenado no computa­
dor ) .
Com isso o progra ma será execu tado, a part i r d a l i n h a
i n d icada, da mesma forma q u e c o m o uso do comando
RUN.
A d iferença é que, enquanto o comando R U N zera as
variáveis (como já vimos) , a e ntrada por G OTO faz execu ­
ta r o p rogra ma sem a l terar as va riáveis.

Ex. 38 : 10 I N PUT " V A LO R D E A " ;A


20 P R I N T A
RUN
V AL O R D E A? 5
5
OK

Se fizermos R U N 20, te remos u m resu l tado 0 , pois a


variáve l A foi zerada pel o comando R U N . No entanto, se f i ­
zermos G OTO 2 0 , o programa i m p ri m i rá o va l o r 5, q u e não
terá sido apagado da memória.

1 40
Cap(tulo V I I I
S U 8-R O T 1 N A S

8.1 - U ma su b-rot i n a pode ser def i n i d a como u m pedaço


de progra ma q u e pode ser u sado vá rias vezes, dentro
de u m progra ma m a i o r ou , mesmo , dentro de vá rios pro­
g ra mas.
Vamos m ostra r u m exem p l o s i m p les.
Su pon hamos o seg u i n te jogo de a d i v i n ha ção de n ú meros
( p a ra d uas pessoas ) :

E x . 1 : 5 N= I N T ( R N D ( 1 ) * 1 0 + 1 )
H J I N P UT "J O G A D O R 1 : D I G A U M N Ú M E R O D E 1 A
1 0 :" ;A
20 I F A=N T H E N P R I NT "ACE RTOU - O N Ú M E RO
É "; N : E N D
30 P R I NT " E R R O U - É A V EZ D O O U T R O JOGA­
DOR"
4 0 I N PUT "JOGA D O R 2 : D I G A U M N Ú M E R O D E 1 A
1 0 :";A
50 I F A=N THEN P R I N T "ACE RTOU - O N Ú M E R O
É "; N: END
6 0 P R I NT " E R R O U - É A V EZ D O O U T R O JOGA­
DOR "
7 0 G OTO 1 0

A l i n ha 5 m a n d a o computador esco l her u m n ú mero


a l ea tór i o entre 1 e 1 0. Esse n ú mero é den o m i n ado N e fica
constante du ran te a execução do p rograma. Se o programa
fo r rei n iciado, através de u m novo comando R U N , o n ú me­
ro aleatório N esco l h ido será outro .
Quando o pri mei ro jogador escol he u m n ú mero (A) ,
esse nú mero é comparado com N , e o resu l tado i m p resso no
v ídeo é correspondente ao acerto ou erro . Se h ouve acerto,

141
o p rograma term i n a . Se h ouve erro , o p rograma pede a
esco l ha de u m nú mero pe l o ou tro jogador. A va riáve l A
pode ser usada n ovamente pois, como já v i m os, q u a l quer
variáve l pode se r m u dada no mei o de u m progra m a . Quando
o jogador 2 escol he um n ú mero , a variável A passa a ter
esse va l o r, em l ugar do va l o r esco l h ido anteriormente .
Verifica-se que o p rograma d e comparação das l i n has
50 e 60 é idêntico ao das l i n has 20 e 30.
E m vez de repeti r essas l i n has, poder ía mos s i m p lesmen ­
te ter usado a i n strução G OTO, da segu i nte mane i ra :

50 G OTO 20

Assi m , após o jogador 2 esco l her o nú mero, a com para­


ção seria executada n ovamente pe las l i nhas 20 e 30.
Acontece que essa so l u ção ap resenta u m sério i nconve­
n iente : o jogador 1 não seria mais chamado a joga r, pois o
prog rama não vo l taria m a i s para a l i nha 1 0.
De fato, após a execução das l i ntias 20 e 30 , o jogador
2 seria chamado pe l a l i n h a 40 e o p rogra ma voltaria para a
l i nha 20 até term i nar. Essa so l u ção é boa quando ex iste .
apenas u m jogador. Agora i mag i n e o le itor se tivéssemos 3
ou 4 jogadores.
O i dea l é poder usa r as i nstruções das l i n has 20 e 30
quando q u i sermos, após a jogada de q u a l q uer jogad or. Esse
conceito básico é que caracteriza u ma su b-rotina : é u m pe­
daço de programa que pode ser usado vá rias vezes no mes­
mo programa, de mane i ra i n depen dente, sem estar amarrado
a u m determi nado l uga r (como acon teceu no exem p l o que
vi mos aci ma, ao ser usada a i n strução G OTO ) .
Assi m , as l i n has 20 e 3!J , nesses progra mas, passa m a
ser consideradas como u ma su b-rotina dentro do p rograma
gera l .
Vejamos, e m segu ida, como podem ser usadas a s sub-ro­
ti nas.

8.2 - GOSU B XX

Esta i n stru ção determ i n a que o progra ma deve p u l a r


para a su b-rotina q u e começa na l i n h a de n ú mero X X .
U ma su b-roti na tem que ter u m fi m , obviamente . Se
não , seria i m poss ível separar a su b-rot i na do resto do p rogra-

1 42
m a . As sub-roti nas, em BAS I C , ter m i nam com a i nstrução
R ETU R N . I sso sign i f i ca q ue, após a execução da su b-rotina
o programa retornará ( R ETU R N ) ao pon to onde estava o
p rograma . Ma is clara mente, o p rogra ma retorna para a l i nha
segu i nte àque l a em que estava a i n stru ção G OS U B .
Ass i m , o esquema é o seg u i n te :
l i n h a 1 00 G O S U B 500
(ao chega r à l i n ha 1 00, o p rogra ma passará para a su b­
rotina que começa na l i n h a 500)
l i n has 500 a 600
(su b-rot i n a )
l i n ha 6 1 0 R E TU R N
(6 1 0 é , nesse exem p l o , a próx i m a l i n ha depois da su b­
rot i n a )
O prog rama vo lta para a l i n ha 1 1 0
(Supondo, nesse exem p l o , que a p róx i ma l i nha; depo is
da 1 00, é a l i n h a 1 1 0 ) .
E xi stem d iversas particu l a r i dades a serem observadas n o
u s o d a s su b-roti nas. Vamos mostra r essas part icu laridades nos
exem p l os a segu i r :
Vo l tando a o exe m p l o 1 , vamos fazer a s segu i ntes a l tera­
ções :
5 N= I NT ( A N O ( 1 ) * 1 0 + 1 )
1 0 I N PUT "JOGADO R 1 : D I G A U M N Ú M E R O D E 1 a
10: "; A
20 G OSUB 1 00
30 I N PUT "JOGADO R 2 : , D I G A U M N Ú M E R O D E 1 a
10: "; A
40 G OSUB 1 00
50 G OTO 1 0
1 00 I F A=N TH E N P R I N T "AC E R TO U - O N Ú M E R O
i; ; ; N : E N D
"

1 1 0 P R I N T " E R R O U - É A V EZ DO O UT RO JOGA­
DO R "
1 20 R ETU R N

Ana l isemos essa versão d o p rogra m a :


� . esco l h ido u m n ú mero N ; depois, o � regrama pede o
pa l p ite do jogad o r 1 ; em segu ida p u l a a su b-roti na que co­
meça na l i nha 1 00 .
1 43
Na execução da su b-roti n a o p rogra ma pode ser encer­
ra do, q uando houve acerto na esco l ha , ou vo l ta r . Nesse caso ,
o prog ra ma vol ta para a l i n ha 30, que é a p róx i ma l i n h a ,
depois da i n strução G OS U B 1 00.
Após a escol h a fe ita pe l o jogador 2, o p rog rama vol ta
para a su b-rot i n a da l i n ha 1 00 . Acontece a mesma coisa que
já foi ex p l i cada . . N o entanto , desta vez o programa volta pa­
ra a linha 5fJ, que é a próx i m çi , depois da n ova cha mada da
su b-rot i n a . Po r isso co l ocamos a i n stru ção G OTO 1 0 , para
que o progra ma possa vo l tar ao jogador 1 .
É i m portan te entender bem os segu i ntes concei tos so­
bre as su b-rot i nas :

a ) após a su b-rot i n a , o prog rama vo lta para a l i n ha se­


gu i n te à q u e l a que chamou a su b-rot i n a (a mesma
su b-rot i n a pode ser chamada d iversas vezes n o p rogra­
ma e vo l ta rá sempre para a l i l') ha segu i n te àquela que
contém a i n strução G OS U B que a chamou ) ;
b ) é necessá r i o toma r cu i dado para não perm i t i r que o
p rogra m a passe pe la su b-rot i n a sem que e l a seja ex­
p l i c i tamente chamada ; não deve ser esq uec i d o que a
su b-rot i n a é const i tu ída de i n struções em l i n has n u ­
meradas e, s e o prog ra ma chega r até essas l i n has1 e l as
serão executadas; nesse caso , o p rograma não sa berá
para onde vo l tar quando encontra r o R E T U R N e
acusa rá e rro ;
c) a su b-rot i n a pode fica r em q u a l q ue r l uga r d o p rogra­
ma, não necessariamente n o fi m ; é necessá r i o , apenas,
tomar certas precauções para que não ocorra o que
está descrito n o i tem b aci ma ;
d ) q u a n d o a i n strução G O S U B está no me i o de u ma
l i n h a com i nstruções m ú l t i p l as, o reto rno se rá fe i to
para a p róx i m a i n strução , após o G O S U B ; n os t i pos
de i n te r p reta d o r em que isso n ão oco rre o G O S U B
deve f i ca r n o fi m da l i n h a , com o ú l ti ma i nst rução ;
Vam os m ostrar mais a l g u ns exem p l os, ex p l i cando as
precau ções de " p roteção" das su b-rot i n as, para que elas não
seja m execu tadas. fo ra de h o ra .
A i n da usa n d o o exem p l o anterior, vamos a l tera r a col o­
cação da su b-roti n a .

1 44
5 N= I N T ( R N D ( 1 ) * 1 0 + 1 )
1 0 G OTO 50
20 I F A=N TH E N P R I N T "ACE RTOU - O N Ú M E R O
É : "; N: END
3 0 P R I NT " E R ROU - É A V E Z D O O U T R O JOGA­
DO R "
40 R ETU R N
50 I N PUT "JOG A D O R 1 : D I G A U M N Ú M E R O D E 1 A
1 0 :" ;A
60 G O S U B 20
70 I N P UT "JO G A D O R 2: D I G A U M N Ú M E R O D E 1 A
1 0 :" ;A
80 G O S U B 20
90 G OTO 50

Agora, o p rog ra m a manda p u l a r por cima da su b-rot i n a ,


l o g o no i n ício ( G OTO 50 ) . S e isso não fosse fe ito , o p rogra­
ma passa ria da l i n ha 5 d i reto para a su b-rot i n a e· tenta rin as
l i n h as 20 e 3 0 (como A=O , pois n ão h ouve esco l ha n en h u ­
ma , A seria d i ferente de N e o p rograma i m p ri m i ri a a f rase
da l i n h a 30 ) ; na l i n ha 40 enco n t ra r i a a i n strução R ET U R N e
i m p r i m i r ia u ma mensage m de e r ro :
R G E R R O R I N 40
(as letras RG sig n i f i ca m R E T U R N sem G O S U B ; esse
cód igo e a manei ra de i n d ica r o t i p o de e r ro va r i·a m de
com p u tador para com p u ta d o r ; d a remos a l g u ns exe m p l os
em cap ítu l o mais a d i a n te )
Depois que o p rograma p u l o u para a l i n ha 50 , a sub­
rot i na f i cou "proteg i d a " , pois, da í e m d iante, o p rograma só
poderá voltar pa ra a l i n h a 20 q u a n d o houver uma i nstrução
espec ífica ( G O S U B 20) .
A i nstrução G OTO 50 perm i te passa r de vo l ta para o
jogador 1 ; se não houvesse essa i nstrução , o p rograma term i ­
n a r i a depois da seg u n da passada pel a su b-roti n a , pois ten ta r i a
vo l ta r à próx i ma i n stru ção d e p o i s d o G O S U B e não h averia
p róx i ma l i n ha ( o que seria i n terp retado, na maioria dos ti­
pos de B AS I C m a i s recen tes, com o fi m de p rogra ma ) .
U ma com pactação d o p rograma aci ma pode ser fe ita ,
u sa n do i nstruções m ú l t i p las p o r l i n h a (veja o bservação d a
a i ínea d , mais atrás) .

1 45
5 N= I N T ( R N D ( 1 ) * 1 0 + 1 ) : G OTO 30
1 0 I F A=N T H E N P R I NT "ACE RTOU - O N Ú M E RO
É :" ; N : E N D
20 P R I NT " E R R OU - É A V E Z D O OUT R O JOGA­
D O R " : R ETU R N
30 I N PUT "JOGADOR 1 : D I G A U M N Ú M E R O D E 1 A
1 0 :" ; A : G OSUB 1 0
.
40 I N PUT "JOG A D O R 2 : D I G A U M N Ú M E R O D E 1 A
1 0 :" ; A : G OSUB 1 0
50 GOTO 30
Ver i ficamos que as i n struções G OS U B 1 0 são as ú lt i mas
das l i n has 30 e 40 . Se ass i m não fosse , todas as i n struções
que aparecessem na mesma l i n ha , após a i nstrúção G OS U B ,
não seriam consideradas, pois o p rograma já teria p u lado
para a su b-rot i n a . O mesmo ocorre com R ET U R N na l i n ha·
20. Se o R ET U R N viesse antes de u ma i n strução na mesma
l i n h a , esta i nstrução não seria executada .
i: bastante com u m o uso de su b-roti nas associ adas a
u m desv io con d iciona l ; assi m , se u ma dete r m i nada con d i ção
for satisfeita, o p rograma deverá p u l a r pa ra uma su b-rot i n a .
E x . 2 : 1 0 I N P UT "QU ER UMA L I STA D E N Ú M E ROS
PA R E S E NTR E 0 e 20" ; S$
20 I F S$
= "S" TH E N G OSU B 1 00
30 I N PUT "QU E R OS N Ú M E ROS (MPA R ES"; A $
40 I F A $ = "S" TH E N G OSUB 200
50 E N D
1 00 F O R N=0 T O 20 STE P 2 : P R I N T N ;
: N E XT : R ETU R N
200 F O R N=1 T O 1 9 STE P 2 : P R I N T N ; :
N E XT: R ETU R N
Nesse p rog ra m a , q u a n d o a parece n a tela a perg u n ta
Q U E R U M A L I STA D E N Ú M E R O S PA R E S ENT R E 0 e
20? o ope rador poderá tec l a r S, se q u ise r a l ista , ou o utro
caracter q u a l q uer, se não q u iser. Nese ú l ti m o caso , o p rogra­
ma passa rá pa ra a l i n ha 30 e a pa recerá a pergu nta Q U E R
OS N Ú M E R OS fM PA R E S? ; n ovamente a l etra S i n d i cará se
o operador q u e r ou não essa l ista . Se não q u iser, o p rogra­
ma term i nará na l i n ha 50.
Supon hamos que deseja mos a l i sta dos n ú meros pares;
ao teclar S, fazemos com que seja sati sfei ta a cond ição da

1 46
l i nha 20 e o progra ma p u l a rá parn a su b-rotina i n iciada na
l i nha 1 00. Essa su b-rotina p roduz a impressão dos n ú meros
pares entre 0 e 20 e, depois, volta para a l i nha 30, onde
se pergunta pela l ista dos nú meros ím pares. Se q u isermos
essa l ista , a letra S nos enviará para a su b-rotina da l i nha
200, que i m p ri m i rá os nú meros ímpares. Na volta dessa sub­
rotina o programa term i nará , na l i nha 50.
U m outro aspecto i mportante a ser mencionado é que
p od e haver uma su b-rot i n a dentro de outra su b-roti na. Aqu i ,
ta m bém , se ap l i ca m as restrições mencionadas n o caso dos
" l o o ps
" F O R/N EXT embutidos. E preciso toma r cu i dado
co m os retornos, para evita r que as duas su b-roti nas f i q uem
e m bara l h adas e o programa não sa i ba para onde vo ltar. O
retorno da sub-roti n a i n terna fica dentro da su b-rotina ex­
te rna .
E x . 3 : 1 0 R EM - CÁ LCU LO D O VO LUME DE
P R ISMAS E C I L I N D R OS
20. I N PUT "QU E R O V O L U M E D E UM
P R I MA QUA D R A D O, P R ISMA R ETAN G U LA R
O U C I L I N D R O"; A $
30 I F A$ = "P.Q." TH E N GOSUB 1 00
40 I F A$ = "P. R . " TH E N GOSU B 1 50
50 I F A$ = "CI L." TH E N G OSU B 200
60 I F A$ < > "P.Q." A N O A$ < > "P. R ." A N O
A S < > "C I L" TH E N 80
70 P R I NT "O V O L U M E É " ; V : E N D
80 P R I NT " E SS E SÓ L I D O NÃO T E M
R EG I ST R O " : E N D
1 00 I N PUT "VALO R D O LADO D A BASE E DA
A LTU RA"; L, H
1 1 0 AB = L t 2 : G OSU B 250
1 20 R ETU R N
1 50 I N PUT "VALO R DOS LADOS DA BASE
E DA A LTU RA"; L 1 , L2, H
1 60 AB= L 1 * L2 : GOSUB 250
1 711 R ETU R N
200 I N PUT "VA LO R D O R A I O D A BASE E DA
AL TU RA" ; R , H
2 1 0 AB= 3. 1 4 1 59 * R t 2 : GOSU B 250
220 R ETU R N
250 V= AB * H : R ETU R N
1 47
Anal isemos esse programa :
Na l i n ha 20 vamos esco l her o t i po de sól i do cujo vo l u ­
m e q ueremos (usando a s abrevi ações P . Q . - P . R . - C I L . pa­
ra si m p l ificar o traba l h o de teclagem ) . Se esco l hermos u m
prisma d e base quadrada ( P .Q. ) , o programa i rá para a su b­
roti na da l i nha 1 00 ; se esco l hermos prisma retangu lar ( P . R . ) ,
a su b-rot i na será a da l i n h a 1 50, e se escol hermos ci l i n d ro , a
so b-rot i n a será a · da l i n h a 200. Se não escol hermos nen h u m
de les, a condição d a l i n h a 6 0 n os envi a rá para u m a resposta
i n d i ca n do não haver reg istro e o p rograma ter m i nará .
A su b-rot i n a 1 00 ca lcu la a á rea de base e , dentro del a ,
u ma outra su b-rotina ( l i n ha 250) ca lcu l a o produto d a á rea
da base pel a a l t u ra . O va l o r do lado da base e da a l t u ra é
i n d i cado · pel o operador ( l i n ha 1 00) . A su b-rot i n a 250 tem
apenas u ma l i nha e retorna para a l i n h a 1 20, que, por sua
vez , manda reto rnar para a l i n h a 40 ( isto porque, quando a·
su b-rot i na 250 term i n a , a su b-rot i n a 1 00 ta m bém está ter­
mi nada ) . Na l i n ha 40 é fe ita u ma nova comparação, cujo re­
su ltado será negativo, pois A$ = " P. Q . " e, assi m , o p rogra­
ma passará d i reto , chegan d o à l i n h a 60; nessa l i nha a cond i ­
ção não é satisfeita , pois A$ não é. d i ferente d e P . Q . ; assi m ,
o progra ma prossegue para a l i n h çi 70, i mpri me o va l o r do
vo l u me e termi n a .
A mesma mecâ n i ca ocorre se escol h ermos u m prisma
retangu l ar ou u m ci l i n d ro . Am bas as su b-roti nas vão usar,
ta m bé m , a su b-rotina da l i n h a 250. O resto é igual ao já ex­
pl i cado .

8 .3 - ON - - - - - - G OSU B

Esta i n strução consta das pal avras ON e G OS U B tend o ,


também, u m argu mento, que é na rea l i dade uma va riáve l .
A i n strução é escrita da segu i n te forma :

ON K GOSU B XX,YY,ZZ,WW · · · • -

em q u e K é u ma variáve l e X X , Y Y ,ZZ, etc . o n ú mero


das l i n has em que são i n iciadas d i versas su b-rotinas. A sub­
roti n a esco l h ida depende do va l o r da variável (no caso , K ) .
Se K for igual a 1 , a su b-rot i n a será a da l i n h a XX, se for
2, a da l i n ha YY e , assi m por diante .
1 48
I sso perm i te que com apenas u ma instrução se possam
ut i l izar várias su b-rotinas, sem a necessidade de escrever,
para cada u ma de las, a condição em que ela deve ser esco­
l h ida.

Ex . 4 : Va mos m ostrar u m programa que não usa a i ns­


trução O N - - - - G OSU B e, depois, mostrar co­
mo ele é si m p l ificado por essa i nstrução :

1 0 I N PUT "ESCR EVA UM N Ú M E R O I NTE I R O DE 1 a


5" ;A
20 I F A=1 TH E N GOSUB 80
30 I F A=2 T H E N GOSUB 1 00
40 I F A=3 T H E N GOSU B 1 20
50 I F A=4 T H E N GOSU B 1 40
60 I F A=5 TH E N G OSU B 1 60
70 G OTO 1 0
80 ? "VOC� ESCO L H E U O P R I M E I R O N Ú M E R O " :
G OSUB 1 80
90 R ETU R N
1 00 ? "O N Ú M E R O ESCO LH I DO � O SEG U N D O " :
G OSUB 1 80
1 1 0 R ETU R N
1 20 ? "DESTA VEZ voe� F I COU COM o T E R CE I R O
N Ú M E R O " : GOSU B 1 80
1 30 R ETU R N
1 40 ? " F O I ESCO LH I DO O N Ú M E RO 4" : G OSU B 1 80
1 50 R ETU R N
1 60 ? "ESCO L H E U O QU I NTO N Ú M E R O " : GOSUB
1 80
1 70 R ETU R N
1 80 I N PUT "QU E R CONT I N UAR"; S$
1 90 I F S$ < > "S" TH E N E N D
200 R ETU R N

E x p l i cação : Suponhamos que foi escol hido A= 1 ; o pro­


g ra ma vai para a su b-rotina 80; i mpri me a frase correspon­
dente e passa para u ma nova sub-rotina ( 1 80 ) , na qual o
programa vai continuar ou terminar conforme a resposta do
operador. E m caso de continuação, da sub-rotina 1 80 o pro­
grama volta para a l i nha 30 (não se esqueça que estávamos

1 49
na su b-rotina 80, i n iciada pela l i n ha 20 ) . Nas l i n has 30, 40,
50 e 60, a cond ição 1 F não é satisfeita e o prog ra ma passa
p a ra a l i n ha 70 de onde vol ta para o começo .
A mesma operação ocorre com qu a l quer n ú mero i ntei ro
esco l h ido. Se não for i nte i ro ou for menor que 1 ou maior
que 5, o progra m9 vol ta l ogo para o i n íc i o , pois chega até
a l i nha 70.
Pa ra os outros va l o res de A o fu ncionamen to é igua l
ao já ex p l i cado .
Agora , veja mos o p rograma s i m p l ificado :

1 0 I N PUT "ESC RºEVA U M N Ú M E R O I NTE I R O D E 1 a


5"; A
20 O N A GOSU B 40, 60, 80, 1 00, 1 20
30 G OTO 1 0
40 ? "VOC� ESCO L H E U O P R I M E I RO N Ú M E R O " :
G OSU B 1 40
50 R ETU R N
60 ? "O N Ú M E R O E SCO L H I DO � O SEG U N DO" :
G OSU B 1 40
70 R ETU R N
80 ? " DE SSA VEZ voe� F I COU COM o T E R CE I RO
N Ú M E R O" : G OSU B 1 40
90 R ET U R N
1 00 ? " F O I ESCO LH I DO O N Ú M E R O 4" : GOSUB 1 40
1 1 0 R ETU R N
1 20 ? " ESCO L H E U O Q U I N TO N Ú M E R O " : GOSUB
1 40
1 30 R ET U R N
1 40 I N PUT "QU E R CONTI N U A R" ;S$
1 50 IF S < > "S" TH EN E N D
1 60 R ETU R N

Expl icação : quando teclamos u m nú mero intei ro, "entre


1 e 5, a instrução da l i nha 20 faz o segu inte : se o nú mero
(a variável A) for 1 , o programa irá para a su b-rotina 40 ;
para A = 2, a su b-rotina será 60 ; A = 3 enviará o programa
para a su b-rotina 80 e assi m até A = 5; se A n ão for inteiro
ou for maior do que 5 ou menor do qu e 1 , o programa
volta para a l i nha 1 0 e recomeça.

1 50
Dentro de cada su b-rotina ex i�te u m a outra , na l i nha
1 40, para pergu nta r se o operador quer continuar. _ O restan ­
t e do prog ra ma é o mesmo já visto, n a pri mei ra versão .
Note que foram redu z i das 4 l i n has n o programa, por­
q u e a i n strução da l i n ha 20 da versão si m p l i ficada su bst i tu i u
as l i nhas 20, 30, 40, 5 0 e 6 0 da versão a n terior.
U ma observação i m portan te é que o a rgu mento (a va­
ri áve l que aparece na ex pressão ON - - - - va riável - - - - G O S U B )
pode ser obtida através de man i p u l ações matemát icas. Ass i m ,
n o meio d o programa , se u ma va riáve l pode assu m i r va l o res
i n tei ros, nós podemos associar a cada va l o r i nte i ro u ma su b­
rot i na .

E x . 5 : Vamos fazer u m p rograma si m u lando a esco l h a


aleatória d e ca rtas em u m bara l h o :
1 0 P R I NT SPC (72 ) : I N PUT "VAMOS ESCO L H E R
CA R TAS" ; S$
20 1 F S$ <> "S" TH E N 270
30 K= I N T ( R N D ( 1 ) * 1 3 + 1 ) : Q=I N T ( R N D ( 1 ) * 4+ 1 )
40 O N K G OSU B 1 00 , 1 1 0 , 1 20, 1 30, 1 40, 1 50, 1 60,
1 70, 1 80, 1 90, 200 , 2 1 0, 220
50 ON Q G OSU B 230, 240, 250, 260
60 P R I NT : P R I NT : P R I NT "A CAR TA ESCO L H I DA
F O I " ;A $ ; " D E " ; B $
70 I N PUT "QU E R CONTI N UA R " ; G $
80 I F G $ < > "S" TH E N 270
90 G OTO 30
1 00 A$= "ÁS" : R ETU R N
1 1 0 A$= "2" : R ETU R N
1 20 A$= "3" : R ETU R N
1 30 A$= "4" : R ETU R N
1 40 A$= "5" : R ETU R N
1 50 A$= "6" : R E T U R N
1 60 A$= "7" : R ETU R N
1 70 A$= "8" : R ETU R N
1 80 A$= "9" : R ETU R N
1 90 AS= " 1 0" : R ETU R N
290 A$= "VALETE": R ETU R N
2 1 0 AS= "DAMA" : R ETU R N
220 A$= " R E I " : R ETU R N
230 B S= "OU R OS" : R ETU R N

1 51
240 B $= "ESPADAS" : R ETU R N
250 B $= "COPAS" : R ETU R N
260 B $ = "PAUS" : R ETU R N
270 P R I NT : P R I NT "ACABOU O JOGO"

Anál ise do progra ma : .


Na l i n h a 1 0 m a n damos i m pri m i r 72 espaços ( ce rca de 3
l i n has) para dar u m espaço em branco na tel a , a n tes de co­
loca r o t ítu l o , q ue é VAMOS ESCO L H E R CA RTAS? ; a i n ­
terrogação, co m o se sa be , é devida à i nstrução 1 N P UT. Se
a resposta a essa pergu nta n ão for S, o p rogra ma p u l a para
a l i n h a 270, que dá o jogo por encerrado ( n ote o P R 1 NT
que dá u m a l i n ha de espaço em branco, antes de i m pri m i r
ACAB O U O J O G O ) .
A resposta sen d o S , o progra ma prossegue e esco l he,
a l eatoria mente , um n ú mero K , entre 1 e 1 3 e um n ú mero
O, entre 1 e 4 .
N a p róx i ma l i n h a , dependendo d o val o r d e K esco l h ido,
o progra ma pu l a rá para a su b-rot i n a correspondente (é im­
portan te notar q ue os n ú meros das l i n has das su b-roti nas têm
que esta r na ordem certa : a p r i m ei ra l i n ha i n d icada corres­
ponde ao val o r 1 do a rgu mento K, a segu nda, ao val o r 2 e
ass i m por d i a n te ) . Suponhamos que foi esco l h ido K = 5 ; a
l i n h a 40 mandará o p rograma p u l a r para a su b-roti n a da l i ­
n h a 1 40 .
Na su b-rot i n a 1 40 si m p l esmente fazemos A $ ser i g u a l a
5 ( n ote que A $ é u ma variável de ST R I N G , para ser poss í­
ve l esco l her as cartas AS, VA L ET E , DAMA e R E I ) .
Ao vo l ta r da su b-rotina, o p rograma volta para a l i n h a
50.
Na l i n ha 50 encontramos, novamente, a i nstrução
ON - - - G O S U B , dessa vez com o argu mento O. O valor de
O foi esco l h ido entre 1 e 4; dependendo do val o r esco l h ido
o p rograma passará para u ma outra su b-rotina.
Su ponhamos que o nú mero Q esco l h ido é 2 ; o progra­
ma passará para a sub-rotina da l i nha 240, na qual defin i ­
mos que 8 $ é i g u a l a ESPADAS. A o retornar d a su b-rotina,.
o p rograma i mpri m i ra o nome da carta esco l h ida (que de­
pende de A$ e 8 $ ) . N o caso que estamos exempl ificando
será i m p rnsso :

1 52
A C A R TA ESC O L H I DA F O I 5 D E ESPADAS
( n ote que co l ocamos dois P R 1 N T na l i n h a 60, pa ra d a r d uas
l i nhas de espaço, antes de i'l'Ti p ri m i r o nome da carta ) .
Na l i n ha 70, o p rogra ma pergunta se queremos conti ­
n uar. Se a resposta não for S, passamos para a l i n ha 270 e
o programa term i n a . Se for S, o programa vo l ta para a l i n ha
30, onde são escol h idos n ovos va l o res de K e O .
i= claro que há mane i ras mais compactas de esc rever es­
te programa , mas o n osso i n tu i to aqu i fo i apenas dem onstra r.
o uso da i n strução O N - - - - G O S U B .
Apenas para d a r m a i s u m exem p l o , vamos i n troduz i r
uma a l teração n o p rograma, pa ra fazer a compactação :
Va mos m u dar a l i n h a 40, da segu inte mane i ra :
40 ON K G OSU B 1 00, 1 1 0, 1 1 0, 1 1 0 1 1 0, 1 1 0, 1 1 0,
1 1 0, 1 1 0, 1 1 0, 1 20, 1 30, 1 40
O que sign ifica isso? sign ifica que, quando o n ú mero K
fo r 2, 3 - - - - 1 0, o p rograma pu lará sem p re para a mesma
su b-roti na, da l i n ha 1 1 0 .
Agora , na l i n ha 1 1 0 va mos escrever :
1 1 0 P R I NT : P R I NT : P R I NT "A CAR TA ESCO L H I DA
F O I " ; K ; " D E " ; : R ETU R N
Nas l i n has 1 00, 1 20, 1 30 e 1 40 vamos fazer a s seg u i n ·
tes a l te rações :
1 00 A $= "AS" : G OSU B 1 50
1 05 R ETU R N
1 20 A$= "VALETE " : GOSUB 1 50
1 25 R E TU R N
1 30 AS= "DAMA" : G OSUB 1 50
1 35 R ETU R N
1 40 A S= " R E I " : G OSUB 1 50
1 45 R ETU R N
1 50 PR I NT: PR I NT : P R I NT " A CARTA ESCO LH I DA
FOI "; A S ; " D E ";: R ETU R N

Agora, n a l i nha 60, vamos colocar apenas :


60 P R I NT BS

As l i nhas 1 60 até 220 podem ser e l i m inadas.


Vamos ver como ficou?
1 53
L I ST
1 0 P R I N T SPC (72 ) : I N PU T "V AM OS E SC O L H E R
C A R TAS" ; S$
20 1 F S $ < > " S" TH EN 270
30 K = I N T ( R N D (l ) * 1 3 + 1 ) : Q = I N T( R N D ( l ) *4+1 )
40 O N K G O SU B 1 00 . 1 1 0, 1 1 0, 1 1 0 , 1 1 0 , 1 1 0, 1 1 0 ,
1 1 0 , 1 1 0 , 1 1 0 , 1 20 , 1 30 , 1 40
50 · o N Q G OSU B 2 30 , 240 , 250, 2 60
60 P R I N T 8 $
70 I N P U T " QU E R C O N T I N U A R" ; G $
8 0 I F G $ <>"S" TH E N 270
90 G O TO 30
1 00 A$= " ÁS" : G O SU B 1 5 0
1 05 R ETU R N
1 1 0 P R I N T : P R I N T : P R I N T " A C A R T A E SC O L H I DA.
F O I " ; K ; " D E " ; : R ETU R N
1 20 A $ = " V A L E T E" : G OSU B 1 50
1 25 R ETU R N
1 30 A $ = "D A M A" : G OSU B 1 50
1 35 R ETU R N
1 40 A $ = " R E I " : G OSU B 1 50
1 45 R ETU R N
1 50 P R I N T : P R I N T : P R I N T " A C A R TA E SC O L H I DA
F O I " ; A $ ; " D E " ; :R ETU R N
2 30 8 $ = " O U R OS" : R ETU R N
240 8 $ = " ESPA DAS" : R ETU R N
250 8$ = " C O PAS" : R ETU R N
2 60 8 $ = " PAU S" : R ETU R N
270 P R I N T : P R I N T "ACABOU O J O G O"
- Algu mas observações adicionais sob re a instrução
ON - - - - G O S U B :
Quando o a rgu mento é negativo, o programa passa para
a próx i m a l i nha, não considerando a . instrução O N - - - -
G OS U B . O mesmo ocorre quando o a rgu mento é zero ou
não i ntei ro . Quando o a rgu mento ati nge um val o r maior do
que o nú mero de su b-roti nas i n d icadas ria instrução , o pro­
grama passa para a p róx ima l i nha.

E x . 6 : 1 0 N=0 : I N PUT "ESCO LHA U M N Ú M F. R O D E 1 A


5";A
20 O N A GOSU B 70 , 70, 70, 79, 70

1 54
30 I F N>0 TH E N 50
40 P R I NT : P R I N T " N Ú M E R O E R RADO" : PR I NT:? :
GOTO 1 0
50 I N PUT "QU E R CONTI N UAR"; S$
60 I F SS < > "S" TH E N 7 "O JOGO ACABO U " : E N D
6 5 G OTO 1 0
70 P R I NT : P R I N T "O N Ú M E R O ESCO L H I DO
F O I " ; A : N= N + 1 : R ETU R N

E x p l i cação :
Na l i n ha 2(/J , se o n ú mero esco l h i d o for u m i n te i ro de
1 a 5, o prog ra ma p u l ará para a su b-rotina 7(/J (veja q u e ti­
vemos que repeti r o n ú mero 70 5 vezes) ; será i m p ressa a
mensagem d i zendo q u a l o n ú mero esco l h ido e o conta d o r N
i n c rem entado de 1 u n i dade; da í retornamos para a l i n h a 30.
O c ontad or N serve para o segu i n te :
Se for esco l h i d o u m n ú mero negat ivo, n u l o , frac i o n á r i o
o u ma i o r que 5 , o programa passa para a l i n h a 30; nesse
caso , N é igua l a (/J e , portanto, o p rograma p u l a para a
l i n h a 40; nessa l i n ha será i n d i cado o erro e o p rograma re­
co meça na l i nha 1 0. Cada vez que o p rograma recomeça n a
l i n ha 1 0 o va l o r d e N passa a ser 0, para perm i t i r q u e a
mensagem de erro seja i m p ressa ( l i n ha 40) .
Quando o p rograma retorna para a l i n h a 30, após pas­
sar pel a su b-rot ina 70, o va l o r de N será maior que 0; as­
si m , o programa passa para a l i nha 50, onde se pergu nta se
o jogo vai continuar. O resto o le itor já deverá ter enten­
dido.
Vamos tentar executa r esse p rograma :

RUN
ESC O L H A UM N U M E R O D E 1 A 5 ? C8

NÚMERO E R RADO

ESC O L H A U M N U M E R O D E 1 A 5 ? 2

O N Ú M E R O ESC O L H I D O F O I 2
QU E R C O NT I N U A R ? S
ESC O L H A U M N Ú M E R O D E 1 A 5 ? 6

1 55
N Ú M E R O E R RA D O

ESC O L H A U M N Ú M E R O D E 1 A 5 ? 3

O N Ú M E R O ESC O L H I D O F O I 3
QU E R C O N T I N U A R ? N
O J O.G O A C A B O U

OK

O fato de, às vezes, ser necessar i o co l oca r mais n ú me­


ros de su b-roti nas d o que cabem em u ma l i n h a de p rograma
pode ser contornado da segu i n te mane i ra :

E x . 7 : 1 0 (i nstrução )
20 (instrução)
30 ON K G OSU B 1 00 , 1 1 0, 1 20, 1 30,
1 40, 1 50, 1 60, 1 70, 1 80, 1 90
(va m os su por que não dá mais para col oca r as su b-rot i ­
n a s restantes - de 20f/J e m d ia nte - nessa l i n ha )
40 O N K - 1 0 GOSU B 200, 2 1 0, 220,
230, 240

E x p l icação da l i n h a 411 : q uando K é maior que 1 0 (que


é a quanti dade de l i n has de su b-roti nas que foram escritas
na l i n h a 30 ) . o p rograma p u l a para a l i n h a 40 . Nessa l i nha
K- 1 0 será , novamente, 1 , 2 , 3, etc . ; assi m , o p rogra ma p ros­
segu i rá i n do para as su b-roti nas 200, 2 1 0, etc .
, F i n a l mente, é i m po rtan te notar que a instrução
O N - - - - GOSU B deve ser sempre a ú lt i ma de uma l i n ha de
várias i nstruções :

E x . 8 : 1 0 N= N + 1
20 P R I NT N : O N N G OSU B 50,
60, 70 - - - -

Veja que, na l i n ha 20, a instrução O N - - - - G OS U B fi­


cou depois do P R I NT. Caso contrá r i o o P R I NT não seria
executado.

1 56
8.4 - ON - - - - G OTO

Essa i nstrução não é , na rea l i dade, u ma i n strução de


su b-rot i n a . Esta mos co l ocan do-a neste cap ítu l o apenas em
razão das sem e l h anças que e l a a p resenta com a i nstrução
O N - - - GOSU B .
O funcioname n to é muito seme l ha n te ao já ex p l j cado,
co m a ú n ica d i ferença que, sendo um G OTO, não há retor­
no e , portanto , . i nstrução R ETU R N . Assi m , q u a n d o escreve­
mos :
O N K G OTO XX, YY, ZZ
i sso sig n i fica que, para K= 1 o p rogra ma p u l a rá para a l i n h a
X X ; para K = 2 i rá para a l i n ha Y Y , e ass i m por d ia n te . N o
entanto , depois de p u l a r para essas l i n has, o p rograma p ros­
segu i rá , na ordem crescente de n u me ração de l i n has, a me­
n os que u ma outra i nst ru ção (tipo G OT O , G OS U B , etc . )
determ i ne de mane i ra d ife rente .

Ex. 9: 1 ? "VOU ESCO L H E R U M N Ú M E R O - A D I V I N H E


E M 5 T E N TATI VAS"
5 N= I N T ( R N D ( 1 ) • 1 0 + 1 )
1 0 I N PU T "ESCO L H A U M N Ú M E R O " ; A
20 T = T + 1
30 K = SG N (A-N )+2
40 ON K GOTO 50, 60, 70
50 ? "ESTÁ ABA I XO" : I F T> 4 T H E N 1 00
55 G OTO 1 0
60 ? "ACE R TO U ! O N Ú M E R O t " ; N : E N D
7 0 ? "E STÁ AC I MA": I F T> 4 TH E N 1 00
75 G OTO 1 0
1 00 ? " E SG OTOU AS 5 T E N TATI VAS"

E xp l i cação : na l i n ha 5 o programa esco l h e um n ú mero


a l eatório entre 1 e 1 0.
Na l i nha 1 0 o operador escol he u m n ú mero ( A ) ; na l i ­
n h a 2 0 col oca mos u m contador de ten tativas .
Na l i nha 30 u sa mos a fu nção S G N , q u e , como já ex p l i ­
ca mos, é igual a - 1 , se o a rgu mento ( o q u e está entre
p a rênteses) for negativo, 0, se o a rgu mento fo r n u l o e + 1 ,
se for posi tivo. Assi m , se A for menor q u e N , K será igual
a 1 ; se A= N , K= 2 e se A for maior que N , K=3 .
1 57
Na prox 1 ma l i n ha, dependen do de K, o p rog ra ma p u l a­
rá para as l i n h as 50, 60 ou 70. Se o contador ( T ) a i nda não
tiver ati ngi d o o va l o r 5 , o progra ma vo l ta rá a ped i r u m n ú ­
mero . I sto porque co l oca mos a i nstrução G OTO 1 0 . S e T j á
f o r i g u a l a 5, passa remos pa ra a l i nha 1 0'1 , onde o p rograma
term i na .
Verifica-se que, se não houver u m comando t i p o G OTO
(como nas l i n has 55 e 75) o p rograma fica rá o u p rossegu i rá
a part i r da l i n ha para onde fo i mandado pel o O N - - - -G OTO
- - -. ( p . ex : l i n h a 60 ) .
As ca racter íst icas operacionais e as restrições d a i nstru ­
ção O N - - - - G OTO são iguais às do O N - - - - G OS U B , de
modo que não i nsist i remos no assu nto . Va mos apenas dar
mais um exem p l o , pa ra fixar bem a idéia.

E x . 1 0 : 1 0 R E M - E X E M P LOS D E M U LT I P L I CAÇÃO,
D I V I SÃO, POTE N C I A ÇÃO E RAIZ QUA D R ADA
20 FOR T= 1 TO 32: ? : N EXT
30 ? "TA B E LA D E OPE R AÇÕ E S"
40 ? :? " 1 - M U LT I P L I CAÇÃO"
50 ? :? " 2- D I V I SÃO"
60 ? :? " 3- POTE NCIAÇÃO"
70 ? :? " 4- R A I Z QUAD R ADA"
80 ?: I N PUT "ESCO LHA U MA OPE RA ÇÃO" ; A
90 O N A G OTO 1 1 0, 1 50, 1 90, 230
1 00 ? " E SCO L H E U E R RADO - TENTE O U T R A V E Z" :
G OTO 20
1 1 0 F O R T= 1 TO 32 : ? : N EXT
1 1 5 ? " M U LT I P L I CAÇÃO"
1 20 ? : I N PUT "PR I M E I R O N Ú M E R O " ; B
1 30 I N PUT "SE G U N DO N Ú M E R O" ; C
1 40 D = C * B : P R I N T : P R I N T "O R ESULTA DO É " ;
D : GOTO 280
1 50 F O R T= 1 TO 32 : ? : N EXT
1 55 ? " D I V I SÃO"
1 60 ? : I N PUT " D I V I D E N DO"; E
1 70 I N PUT " D I V I SO R " ; F
1 80 G = E/F : P R I NT : P R I NT " O R ESU LTA DO
É"; G : G OTO 280
1 90 F O R T=1 TO 32 :? : N EXT
1 95 ? "POTE N C I A ÇÃO"

1 58
200 ? : I N PUT " N Ú M E R O" ; H
2 1 0 i N PUT "POTÊ NCIA"; 1
220 J= H t l : P R I N T : PR I N T "O R ESU LTADO
E " ; J: G OTO 280
230 F O R T= 1 TO 32 : ? : N EXT
235 ? " R A I Z QUA D R A D A "
240 ? : I N PUT "N Ú M E R O ; K
"

250 L = SOA ( K )
260 P R I NT : P R I N T " O R ESU LTADO i; " ; L
280 ? : ? "QU E R TE NTA R D E NOVO";S$
290 I F S$ = "S" TH E N 20

Vamos ex p l i car, ra p i damente , este p rograma :


N a l i n ha 1 0 apa rece apenas o t ítu l o d o p rogra ma ( veja
i n strução R E M ) .
Nas l i n has 20, 1 1 (/J , 1 5(/J , 1 9(/J e 23(/J usamos u m p roces­
so s i m p les pa ra apaga r a te l a , antes de i mpri m i rmos o nome
do exerc íci o ou a ta be l a de operações .
Nas l i n has 3(/J a 70 col oca mos u ma ta be l a de operações
na tel a , para que o operador esco l ha aque l a que deseja efe­
t u a r . Na l i n ha 8(/J pergu nta mos q u a l a operação d esejada,
pe l o seu nú mero .
A l i nha 9(/J u sa a i nstrução q u e esta mos exp l i can d o :
conforme o n ú mero esco l h i d o , o p rograma va i p u l a r para a
l i nha onde é fei ta essa operação . Se o n ú mero ésco l h i d o for
d i ferente dos que aparecem na ta be l a , o operador é convi­
dado a recomeça r ( l i n ha 1 (/J(/J ) .
As l i n has 1 1 (/J até 1 4(/J, 1 5(/J até 1 8(/J, 1 9(/J até 22(/J e
23(/J até 26(/J contêm os p rogramas das operações . Cada u ma
de l as term i na com a i n strução G OT O 28(/J, exceto a 26(/J
( o n de não é necessá r i o mandar p u l a r para a l i n ha 28(/J , q u e
é a p róx i ma l i n ha n o p rogra ma ) .
A l i nha 28(/J pergu nta se o operador deseja con t i n u a r o .
p rogra m a .
Acred itamos que esse exem p l o dê u ma i déia c l a ra sob re
como se pode u sa r a i n strução O N - - - - G OTO - - - -.
Aconse l hamos o leitor a p rogra m a r e executar o exem­
p l o aci ma , assi m como os ante r i o res, para se fa m i l iarizar me­
l h or com as técn icas envo l v idas.
1 59
Capítulo I X
VAR IÁV E IS I N D E XADAS

9.1 - Em cap ítu lo anterior vi mos como a l i nguagem BAS I C


t ra ba l ha com variáveis n u méri cas e variáve i s de
ST A 1 N G . Essas va riáveis, descritas mais atrás, são as variá­
veis si m p les, isto é, cada variável assume um val o r de cada
vez .
Assi m a va riável A pode assu m i r, por exem p l o , os va lo­
res 1 , -2, .3, etc . , u m de cada vez .
Ago ra vamos trata r de u m outro t i po de variável , extre­
mamente ú t i l , den o m i nada variável i n dexada. As variávei s i n ­
dexa das podem ser d e ín d i ce si m p les o u de índ i ce d u p l o .
U ma variável d e ín d i ce si m p les pode ser i n d i cada d a
segu i nte manei ra :
A( N )
em que A é o nome da va riável e N é o seu índ i ce. A va­
riável i ndexada pode assu m i r um va l o r d i fe rente para cada
va l o r d o índice.
I sso significa que A ( 1 ) pode ter um va l o r e A(3) pode
te r outro .
Natu ra l mente, já que os índ ices são i n d i cadores da "or­
dem " de u ma variáve l , esses índ i ces devem ser i ntei ros e po­
s i tivos.
U ma variável de d u pl o índ i ce pode ser designada da se­
gu i nte forma :
Z (M, N)
e m que Z é a variável e M e N são os índ ices. A variável
Z {3, 1 ) pode ser d iferente da variável Z { 1 ,3) , Z ( 1 , 1 ) , e assi m
·
por d iante .
O conju n to de val o res das variáveis i n dexadas é den o m i ­
n a d o , em i nglês , " A R R AY " , o que poderia ser tradu z i do l i -
1 61
vremente com o matriz . U ma matriz de índice s i m p l es ou
matriz u n i d i mensi onal é chamada , tam bém, vetor.
O conju n to A B ( P ) , e m que A B é o n ome da variável e
P é o índ i ce, que pode assu m i r val o res i ntei ros e positivos
( i ncl usive 0 ) , é denomi nado um vetor. O conj u nto C l( R ,S ) ,
e m q u e C 1 é o n ome da va riáve l e R e S são o s índ i ces, é
den o m i nado "array " b i d i mensiona l , ou , s i m p lesmente , "array "
º
( o u matriz, se o l e i tor prefe r i r ) .
Vejamos como podem ser u t i l izadas as variáveis i ndexa-
das.

9.2 - Variáveis u n idimensionais ( ín d i ce si m p les)


Como já mensionamos, as variáveis podem assu m i r os
mesmos nomes das variáveis i n d i cadas em cap ítu l o anterior,
isto é , ter u ma máx i mo de dois caracteres, dos q uais o pri­
mei ro tem que ser u ma letra e o segu ndo (quando h ouver)
pode ser u ma letra ou um d ígito, de 0 a 9 . Além d i sso , as
va riáveis podem ser de ST R 1 N G . Os ín dices são va l o res i n ­
tei ros e positivos, i ncl usive 0 .
A a l ocação d e va l o res a var i áveis i n dexadas pode ser
feitas da mesma manei ra que para as var i áveis si m p les, isto
é, através de :
a ) Comando L ET (que não p recisa ser escrito )

J;: x . 1 : 1 0 A (0 ) = 28 : A { 1 ) = .3 : A (2) = -5
20 P R I NT A (0) :?A ( 1 ) :?A (2)
RUN
28
.3
-5

OK

b ) I nstrução I N P U T

E x . 2 : 1 0 I N PUT " A(0) = " ; A{0)

2 0 I N PUT " A ( 1 ) = "; A ( 1 )

3Q I N PUT '' A(2) = " ; A(2)

40 7 A(0) ; A( 1 ) ; A (2)
RUN

1 62
A (0 )=? 1 3
A ( l )=? -8
A (2 ) =? .04
1 3 -8 .Ql4

OK

ou , a i n da,

Ex. 3 : 10 ? " D i; OS VALO R ES DE A(0), A ( 1 )


E A(2)"
2 0 I N PUT A (0) , A ( 1 ) . A (2 )
30 ? A (0) ; A ( 1 ) ; A ( 2 )
RUN
D Ê O S V AL O R ES D E A(0 ) , A ( 1 ) E A (2 )
? 25,- 1 ,0
25 -1 0

OK

c ) I nstrução R E A D/DATA

E x . 4: 1 0 R EA D A (0), A ( 1 ) , A(2) , A (3 )
2 0 ? A(0) ; A ( 1 ) ; A (2 ) ; A(3)
30 D ATA 3, -2, .8, 6.5
RUN
3 -2 .8 6.5

OK

ou ,

E x . 5 : 1 0 R EA D A $ (0), A $ ( 1 ) , A $ (2)
20 P R I NT A $ ( 1 ) ; A$ 10 1 ; A $ (2)
30 DATA "BOM ", " M U ITO", D I A
RUN
M U ITO BOM D I A

OK

Até aqu i , tud o fáci l . N a rea l i dade não h á necessi d ade


de se d izer clara mente todos os índ i ces das variáveis, como
1 63
fo i fe i to nos exem p l os ac i ma ( ped i mos ou l e m os d i reta m e n ­
t e os va l o res de A ( 0 ) , A ( 1 ) , etc . ) .
Os índ i ces ta m bém podem ser considera dos c o m o va r i á ­
ve i s . É m e l h o r exem p l i f i ca r .

E x . 6 : 1 0 F O R N = 1 T O 1 0 : R E AD A ( N ) : N E XT
20 F O R K = 1 TO 1 0 : ? A ( K ) ; : N E XT
30 D ATA 3, - 1 2, .5, 8, -8 , 1 0, 500, -.03 , - 1 00, 30
RUN
3 -1 2 5 8 -8 1 0 500
.

-.0 3 - 1 00 30

OK
E x p l i cação : na l i n h a 1 0 a i n strucão F O R / N E X T m a n da
N vari a r de 1 a 1 0 , o q u e sign i f i ca q � e , na p r i me i ra passada
do " l oo p ", a i n strução R EAD va i l e r A ( 1 ) ; na seg u n da pas­
sa da N = 2 e , l og o , se rá l i d o o va l o r de A ( 2 ) ; e assi m por
d i a n te , até N = 1 0 . Os va l o res l i d os· são os con sta n tes da
l i n h a 30 ( D ATA) .
U sa m os nova m e n te a i n stru ção F O R / N E X T para m a n ­
d a r i m pr i m i r o s va l o res de A i n dexados de 1 a 1 0 . Ve r i f i q u e
que, nesta l i n ha n ós c h a m a m o s a va ri ável de K , e m vez d e
N , e fazemos va r i a r K de 1 a 1 0 . É óbv i o q u e n ã o há n e ­
n h u ma d i ferença , p o i s o q u e i n te ressa é o va l o r do ín d ice e
não o seu nome .
E x p l i ca n d o mel h o r : A ( N ) é a mesma c o i sa q ue A ( K ) , se
N e K t i ve re m os mesmos va l o res. Na l i n h·a 30, na pr i m e i ra
passad a do " l oo p " K = 1 e , ass i m , será i m p resso o va l o r de
A ( 1 ) , que é o mesmo va l o r q u e fo i l i d o na l i n h a 1 0, q u a n ­
do N = 1 .

E x . 7 : (vamos refazer pa rte d o ex . 1 O do i te m 8 .4 )


3 0 F O R K = 0 T O 4 : R E A D A $ (.K ) : N E XT
40 F O R K= 0 TO 4: ? : ? A$ ( K ) : N E XT
50 DATA "TA B E LA DE OP E R AÇÕ ES", " 1 M U L­
-

T I P L I CA ÇÃO", "2 - D I V I SÃO", 3 POTE N C I AÇÃO"


" -

60 D ATA "4 - R A I Z Q UA D R A DA"


80 ? : I N P U T " ESCO L H A U MA O P E R A ÇÃO " ; A
85 F O R T = 1 TO 32 : ? : N E XT
87 ? A $ ( A )
9 0 O N A G OTO 1 20, 1 60, 200, 240
1 64
Ver i f i q u e o seg u i n te (compara n d o com o prog rama do
ex . 1 0, i tem 8 .4 ) :
A tabe l a de operações é col ocada n a te l a , atri b u i ndo-se
cada t ítu l o a u m ín d i ce da variável de ST R I N G A$ ( K ) .
Assi m , a o fazer o " l oo p " F O R/ N E XT, da l i n h a 30 , o
p rograma va i pega r os dados da l i n ha 50 e fazer com que :

A$ (0) = TA B E L A D E O P E R A Ç Õ E S
A$ ( 1 ) 1 - M U LT I P L I CAÇÃO
A$ (2) = 2 - D I V I SÃO
A$ (3) = 3 - POT E N C I AÇÃO
A.$ (4 ) = 4 - RA I Z QUAD RADA

Na l i n h a 4 0 , u samos o F O R/ N E X T pa ra i m p r i m i r os
va l o res de A $ ( K ) ; repare que usa m os a va riáve l K, nessa l i ­
n h a , como poder íam os ter u sado q u a l q uer o u t ra . N ão h á
p r o b l e m a em repet i r as var i áveis desde q u e i sso não cause
confusão . N o caso a q u i mostrado o " l oo p " da l i n h a 30 fez
K va r i a r de 0 a 4. Na l i n h a 40 a i n strução ma n da K va r i a r
nova mente de 0 a 4 , e , dessa mane i ra , não h averá confusão .
É p rec iso , apenas, tomar cu i dado para n ão u sa r n ovamente o
va l o r de K ta l como e l e se encon tra , sem m a n dá-l o m u d a r
de va l o r, p o i s , dep o i s da i nstrução da l i n h a 40 o va l o r de K
f i cou sendo i g u a l a 4 e assi m con t i n uará até o rdem em con ­
t rá r i o .
A s l i n has 85 e 8 7 foram i n trod u z i das para su bst i tu i r as
l i n h as 1 1 0, 1 1 5, 1 50 , 1 55, 1 90 , 1 95 , 230 e 235, que
podem ser e l i m i nadas do p rogra m a .
Q u a n d o o operador esco l he o n ú mero da operação e ,
p o rta nto", d á u m va l o r pa ra A, o p rogra m a , em segu i d a , apa­
ga a te l a e m a n da i m p ri m i r A $ ( A ) ; dependendo do va l o r de
A , o t ítu l o da operação será i m p resso na te l a .
E m segu i da o p rogra ma passa para a l i n h a 9 0 o n de va i
busca r a su b-rot i na esco l h ida . Veja q u e nós m u da mos os n ú ­
meros das l i n h as, j á q u e não é necessá r i o te r as l i n has 1 1 0 ,
1 1 5 , etc.
O uso de va r i áve i s i n dexadas é m u i to ú t i l na confecção
de tabe l as e m a n i p u lação de dados d iversos .
As var iávei s de ST R 1 N G e n u méricas podem ser m i stu ­
radas, desde q u e seja o bservada a o rdem correta d e a l ocação
de va l o res (veja o cap ítu l o sob re en trada de dados) .

1 65
E x . 8 : 5- R E M-TABE LA D E DADOS PESSOA I S
1 0 F O R K = 1 TO 5 : R E AD A$ ( K ) , B $ ( K ) , C ( K ) ,
D $ ( K ) : N EXT
20 ? : ? " TAB E LA D E NOM ES"
30 F O R K = 1 TO 5 : ? : ? A $ ( K ) : N E XT
40 ? : I N PUT " E SCO LHA UM N OM E " ; N $
50 F O R K = 1 TO 5 : I F A$ ( K )=N $
TH E N G OSU B 90
55 N E XT K
60 ? : I N P UT "QU E R E SCO L H E R O U T R O N O M E " ; S$
70 I F S$ = "S" TH E N 20
80 E N D
9 0 F O R N = 1 T O 32 : ? : N E XT
1 00 P R I N T " N O M E : "; A $ ( K )
1 1 0 PR I N T : P R I NT " E N D E R E Ç O : R UA " ; B $ ( K ) ;
" N Ú M E RO"; C ( K )
1 20 ? : P R I N T "TE L E F O N E : " ; D $ ( K )
1 30 K = 5 : R ETU R N
1 40 DATA R O B E R TO, A MAZO NAS, 1 5, "267-1 255",
PAU LO, PA R A (BA, 32, "250-3827", R E N ATO, P I A U (
1 0, "275-8828"
1 50 DATA P E D R O, B E L É M, 1 78, "225-30 1 8", A N TÓ­
N I O, N ATAL, 42, "236-8888"

E x p l icação do p rogra ma : na l i n ha 1 0 o p rogra m a vai ler


os va l o res de A $ ( K ) , B $ ( K ) ,C ( K ) . D $ ( K ) , em q u e A $ ( K ) é o
nome de u ma pessoa , B $ ( K ) é o n ome de u ma rua , C ( K ) é
o n ú mero da casa e D $ ( K ) é o n ú mero d o te l e fo n e . Qua n d o
K = 1 , n o " l oo p " F O R / N E XT, o p rogra ma va i l e r , de u ma
vez , os va l o res de A $ ( 1 ) , 8 $ ( 1 ) , C ( 1 ) , D $ ( 1 ) Po r isso , nas
.

l i n has que con tê m DATA, os dados devem ser co l o ca d os na


mesma o rdem da l e i tu ra : um nome, u m n o me de rua, um
nú mero de casa , um n ú mero de te lefone ; o u t ro n o m e , outro
nome de rua , ou tro n ú mero de casa , tel efone e , assi m por
d i a n te . D$ ( K) está como ST R 1 NG por cau sa d o t raci n h o no
nú mero d o te l efone.
Na l i n h a 20 , será i m p resso o t ítu l o d a tabe l a .
Na l i n h a 30 são i m p ressos os nomes q u e con sta m da
tabe l a : q u a n d o K va r i a de 1 a 5, serão i m p ressos os va l o res
A$ ( 1 ) . A $ { 2 ) , A $ (3 ) , A $ (4) e A $ ( 5 ) .

1 66
Quando o progra ma pergu nta q u a l o nome esco l h i d o , o
o perador tecla o nome da pessoa cujo endereço e tel efone
deseja . Esse n o me é, tempora r i a mente, chamado de N $ .
N a l i n ha 50 o progra ma va i p rocu ra r o nome que foi
esco l h i d o . Para isso , va i lendo os va l o res de A$ ( 1 ) , A$ (2) ,
etc .
Su ponhamos que o o perador esco l heu o nome P E D R O .
A operação das i nstruções d a l in ha 50 funciona d a seg u i n te
m a nei ra :
Quando K = 1 , o prog ra ma compara N $ com A $ ( 1 ) ,
o u sej a , R O B E R T O . N o caso , não é igua l , pois A$ ( 1 ) é
igu a l a R O B E R TO e N $ é igua l a P E D R O . Com o N E XT
K , K passa a ser igual a 2 e A $ ( K ) igual a A$ ( 2 ) , que é
P A U LO. A con d ição ai nda não foi satisfeita . Quando K che­
ga ao va l or 4, A $ ( K ) passa a ser igual a A$ (4) , q ue é P E ­
D R O.
Nesse momento A$ ( K ) é igu a l a N $ e o programa p u l a
p a ra a su b-rot i n a 90 . É i m po rtan te notar que, agora , K é
ig u a l a 4, até ordem em contrá ri o .
A l i n ha 9 0 apaga a tel a e a l i n ha 1 00 i m pri me o nome
esco l h i d o (que, nesse caso , é A $ (4) ) .
A l i n ha 1 1 0 i m pri me u ma l i n ha e m branco e depois a
frase :
E N D E R E Ç O : R UA B E L É M N Ú M E R O 1 78

As pa l avras E N D E R E Ç O : R U A e N Ú M E R O são fi xas,


isto é, estão pré-progra madas. Quando o p rogra ma passa pel a
l i n ha 1 1 0, as ú n icas co isas q u e podem m u dar são o s va l o res
de B $ ( K ) e C ( K ) . No nosso exem p l o , B $ (4) é igual a B E ­
L É M e C (4 ) é igual a 1 78 .
O mesmo ocorre n a l i n h a 1 20 q u e manda i m pri m i r o
n ú mero do tel efone. N o n osso exem p l o , D $ ( 4 ) é i g u a l a
225-30 1 8 .
Quanüo o progra ma passa para a l i n h a segu i n te ( 1 30 ),
n ós fazemos K = 5 e retornamos da su b-rot i n a . Quando o
p rogra m a vo l ta da su b-rot i n a , e l e va i para a l i n ha 55, que é
a l i n ha segu i nte ao G OS U B . Se n ós não fi zéssem os N = 5 ,
o p rograma prossagu i ria com o N E XT K e roda ria n ovamen­
te a l i n h a 50, i n u t i l mente, gastan d o tempo do compu tad o r .
Co m o n ó s já fi zemos K = 5 , o progra ma passa d i reto para a
l i n ha 60 onde perg u n ta se o opera d o r q uer con t i n u a r .

1 67
Se não for tecl ada a l etra S, o p rogra ma term i n a rá na
l i n ha 80 .
Pa ra com p l eta r este i tem, so bre va riáveis de ín d i ce sim­
ples devemos menci onar que a va riáve l que def i n e o índ i ce
pode ser resu l tado de u ma operação matemática , desde que
esse resu l tado seja posi t ivo e i n te i ro o u n u l o .
E x . 9 : 1 0 R E M - SA LADA D E F R UTAS
20 F O R N= 1 TO 1 0 : R EAD F$ ( N ) : N E XT
25? "VAMOS FAZ E R UMA SA LADA D E F R UTAS"
30 P= I N T ( R N D ( 1 ) * 1 0 + 1 )
40 P R I NT F $ (P) : M = M+l
50 I F M>4 T H E N ? "QU E R O U T R A SA LADA?" :
G OTO 70
60 G OTO 30
70 I N PUT "S O U N"; S$
8 0 I F S $ < > "S" TH E N E N D
9 0 M = 0 : GOTO 25
1 00 DATA LAR ANJA, ABACAX I , M E LÃO,
ABACATE , MAMÃO, MAÇÃ, P� R A
1 1 0 DATA U VA, C E R EJA, M A N G A

Co m o funci ona esse p rograma?


E m pri mei ro l ugar o p rog ra m a lê o nome de 1 0 fru tas,
que estão nas l i n has 1 00 e 1 1 0 .
Na l i n ha 30 é esco l h i d o , ao acaso , u m nú mero i ntei ro
entre 1 e 1 0 . Nas l i n has 40, 50 e 60 mandamos i m pri m i r
ci nco vezes o n ome d a fruta esco l h ida (veja o contador M=
M+ 1 e a con d i ção I F M > 4 ) ; suponhamos que o pri mei ro va­
lor escol h i d o ( P ) é 3; será i m p resso o nome da fruta A $ ( 3 )
que, n o caso, é M E LAO (ver l i n h a 1 00 ) .
Como M a i nda não é m a i o r d o que 4, o programa vai
para a p róx i ma l i n ha (60) que manda vo l ta r para a l i nha 30,
onde outro nú mero P é esco l h i d o : su ponhamos que seja 8.
A fruta será A $ (8 ) , que é UVA.
Quando M é ma i o r d o que 4, o p rogra ma pergunta se
o operado r quer outra sa lada e p u l a para a l i n h a 70, onde o
operador va i responder S o u N . Com S, o programa vol ta
para a l i n h a 30, mas, antes, faz M = 0 , pois, caso contrá r i o,
ele já seria ma i o r que 4 de sa ída (dev i d o à passada anterior
pel o progra ma ) . Se for q u a l q u er outra letra , que não S , o
programa term i n a rá .

1 68
Veja mos u m exem p l o de execução desse progra m a :

RUN
V AM OS F AZ E R U M A S A L A D A D E F R U TAS
C E R EJA
UVA
A BACAX I
A BACATE
A BACATE
QU E R O U TR A SA LA DA?
S O U N? s
V AM OS F AZ E R U M A SAL A D A D E F R U TAS
MAÇÃ
L ARANJA
M E LÃ O
C E R EJA
QU E R O U TR A SALA DA?
S O U N? N

OK

N ote que na pri me i ra rodada o A B ACAT E apareceu


duas vezes. I sto porque a f u n ção P é a leatória e pode d a r o
mesmo n ú mero duas vezes segu idas.
E x istem tru ques de progra mação para evitar i sso , mas
dei xare m os esse caso para mais a d i a n te .

9 .3 - Variáveis d e índice d u p l o ( matrizes)


As regras que menciona mos aci ma são , e m gera l , vá l i ­
das para as va riáveis d u p l a me n te i n dexadas .
E. necessár i o , a penas, p resta r bastante atenção para o
fato de que A ( 1 ,2) é d i fe rente de A ( 1 ,3) e d i ferente de
A ( 2 , 1 ). Veremos como fu ncionam essas va riáveis, através de
exem p l os :

E x . 1 0 : (antes d e executar, veja i tem 9 .4 )


10 R EM · L I STA D E D ESPESAS DOM ÉST I CAS
20 F O R M=1 TO 4: F O R N = 0 TO 5: R EA D A $
( M, N ) : N EXT N , M
3 0 F O R T = 1 T O 32 : ? : N EXT : ? "TA B E LA D E
D ESPESAS"

1 69
40 F O R K = 1 TO 4 : ? : ? A $ ( K ,0) : N E X T
5 0 ? : I N PUT " E SCO L H A U M T I PO D E D E SP E SA" ; A
60 F O R T= 1 TO 32 : ? : N E XT : ? A $ ( A ,0)
70 FOR O= 1 TO 5 : ? : ? A $ ( A , O ) : N E X T
8 0 ? : I N P UT " Q U E R O U T R A E SCO L H A " ; S $
9 0 I F S $ < > "S" TH E N E N D
1 0CJ GOTO 30
1 1 0 DATA " 1 - A L I M E NTAÇÃO" , CA R N E , F R U­
TAS, L E G U M ES, L E I T E , PÃO
1 20 DATA "2 - SE R V I Ç OS P Ú B L I COS", E L E T R I C I ­
D A D E , GÁS, L U Z , T E L E F O N E , ÁG UA
1 30 DATA "3 - D E SP ESA S DE CASA", E M P R E G A­
DOS, A L U G U E L, CO N D O M l-N I O , CONSE R TOS, I M POS­
TOS
1 40 D ATA "4 - D I V E R SOS", G ASO L I N A, D I V E R ­
SÕ ES, R O U PAS, P R E S E N T E S, " D E SP E SAS M É D I CAS"
An a l i se m os o p rog ra m a : n a l i n h a 20 t e m os d o i s " l oo p s "
F O R / N E X T e m b u t i dos.
Ass i m , q u a n d o M 1 , o seg u n d o " l o o p " l e rá os d a d o s
=

A$ ( 1 ,0 ) , A $ ( 1 , 1 ) , A $ ( 1 , 2 ) , A $ ( 1 , 3 ) , A $ ( 1 , 4 ) e A $ ( 1 , 5 ) ;
q u a n d o M 2 , serão l i dos, em seq ü ê n c i a , A $ ( 2 ,0 ) , A $ ( 2 , 1 ) ,
=

A$ ( 2 , 2 ) , A $ ( 2 , 3 ) , A $ ( 2 ,4 ) , e A $ ( 2 , 5 ) ; a l e i t u ra t e r m i n a
q u a n d o M 4 e fo i l i d o o d a d o A $ ( 4 , 5 ) .
=

Na l i n h a 30 a paga mos a te l a e co l ocamos o t i' t u l o . N a


l i n h a 40 m a n d a mos i m p r i m i r , u sa n d o F O R / N E X T , os va l o res
A$ ( 1 ,0 ) , A $ ( 2 ,0 ) , A $ ( 3 , 0 ) e A $ ( 4 ,0 ) : esses va l o res são os
t ít u l os das despesa s .
N a l i n h a 50 p o d e m o s esco l h e r u m t i p o de despesa , p a r a
te r a l i sta de s u a s su bd i v i sões . Q u a n d o esco l h e m os o va l o r
A, correspo n d e n te a o n l'.1 me ro da despesa esco l h i d a , o p r o ­
g ra m a va i a paga r a te l a e i m p r i m i r o n o me da despesa ( l i n h a
60 ) . Le m b re-se q u e os n o mes das despesas têm se m p re N = í/J,
e , assi m , q u a n d o A é , p o r exe m p l o , i g u a l a 2 , o t ít u l o i m ­
p resso se rá A $ ( A , 0 ) , o u sej a A $ ( 2 ,0 ) , q u e é o t ít u l o da se­
g u n d a despesa .
Na l i n h a 70 vamos l i sta r os i te n s q u e co n st i t u e m a des­
pesa n ú mero 2 : com o " l oo p " F O R / N E X T l i stamos, s u cess i ­
va men te , A $ ( 2 , 1 ) . A $ ( 2 , 2 ) . A $ ( 2 , 3 ) , A $ ( 2 ,4 ) e A $ ( 2 , 5 ) .
Esses va l o res são os i tens desej a d os
Nas l i n h as seg u i n tes podemos fazer n ova esco l h a ou ter­
m i n a r o p ro g ra m a .

1 70
Ago ra , va m os a n a l i sa r cu i d adosa m e n te as l i n has d e DA-
TA :
Na l i n ha 1 1 0 o p r i m e i ro dado é " 1 - A L I M E N TA­
Ç Ã O " (as aspas a pa recem por cau sa dos espaços e do t raço
de p o i s do 1 ) . Esse dado é o p r i m e i ro a se r l i d o pel o p rogra­
m a , e já sa bemos que o p r i mei ro dado l i d o se c h a m a rá
A $ ( 1 ,0 ) ; então , esse p r i m e i ro dado é , o b r i gato r i a m e n t e , u m
t ít u l o de despesa . C o m o os p róx i m os dados a serem l i dos
são A$ ( 1 , 1 ) , A $ ( 1 ,2 ) , A $ ( 1 , 3 ) , A $ ( 1 ,4 ) e A $ ( 1 ,5 ) , os da
dos segu i ntes, n a l i n ha 1 1 0 , são os i tens q u e com põem a
despesa A L I M E N TAÇ Ã O .
Depois d e l i d o o v.a l o r A $ ( 1 , 5 ) , o p rogra m a passa rá a
l e r A $ (2 ,0 ) . Assi m , na l i n ha 1 20 o p r i m e i ro i te m , q u e é o
p róx i m o a ser l i d o , ta m bém se rá o t ítu l o de u m i te m de
despesas. E m seg u i d a são co l ocad os os su b i tens desse seg u n ­
d o i tem d e despesa . Ass i m va m o s até o fi m .
O esq uema gera l é o seg u i n t8

- p r i m e i ro i te m de despesa : A$ ( 1 ,0 )
su b i tens : A$ (1 ,1 )
A$ ( 1 ,2 )
A$ ( 1 ,3 )
A$ ( 1 ,4 )
A$ ( 1 ,5 )
- segu n d o i te m de despesa : A$ ( 2 ,0 )
su b i ten s : A$ (2, 1 )
A$ (2,2)
A$ ( 2 ,3 )
A$ ( 2 ,4 )
A$ ( 2 ,5 )

e assi m p o r d i a n te .
Va m os experi m e n tar o p rograma?

RUN
TA B E L A D E D E SP E SAS

1 - A L I M E N TA Ç Ã O

2 - S E RV I Ç O S PÚ B L I C O S

17 1
3 - D E SP ESAS D E C ASA

4 - D IV E RSOS

ESC O L H A U M T I P O D E D ESP E SA? 3

3 - D E S P E SAS D E C ASA

EMPRE GADOS

AL U GU E L

C O N D O M (N I O

C O N SE RTOS

I M P O ST O S

QU E R O U T R A E SC O L H A? s

T A B E L A D E D E SP E SAS

1 - A L I M E N TA Ç Ã O

2 - S E RV I Ç O S P Ú B L I C O S

3 - D E SP E SAS D E C ASA

4 - D IV E RSOS

ESC O L H A U M T I P O D E D ES P E SA ? 4

4 - D I V E RS O S

G AS O L I N A

D IV E RSÕES

R O U PAS

PR ESENTES

1 72
D ESP ESAS M t O I C AS

QU E R O U TRA ESC O L H A? N

OK

O exem p l o aci ma mostra a gran de u ti l i dade da� variá­


ve i s d u p l amente i ndexadas, ou "a rrays " , na p repa ração de
ta be l as ou demonstração de dados.
Va mos mostrar um outro exem p l o , de con tagem de vo­
tos em u ma e l e i ção :
Va m os su p o r q u e os mesmos ca n d i datos podem ser vo­
tad os para três ca rgos d i feren tes em u m c l u be : Presi dente ,
V i ce-Presi dente e Tesou re i ro . O s votos já estão co l ocados nas
l i n h as de dados. O p rograma faz a con tagem e i m p ressão
d o s resu l tados.

E x . 1 1 : 1 0 R E M - CO N TAG E M D E V OTOS EM UMA E L E I ­


ÇÃ O
1 5 F O R N= 1 TO 1 0: R E AD N $ ( N ) : N E XT N
20 R EAD A$, 8 $ : I F A $="P R ES I D E NT E " TH E N
C= l : G OTO 40
25 I F A$ = "V ICE-P R ES I D E NT E " TH E N C= 2 : G OTO
40
30 I F A $ = " F I M " A N D 8 $ = " F I M " T H E N 1 50
35 C= 3
40 I F 8 $ = "A NTÔN I O" TH E N D= 1 : G OTO 1 40
50 I F 8 $ = "JOAQU I M " TH E N D= 2 : G OTO 1 40
60 I F 8 $ = " M A R CE LO" TH E N D= 3 : G OTO 1 40
70 I F 8 $ = " R O B E RTO" TH E N D= 4 : G OTO 1 40
80 I F 8 $ = "PAU LO" TH E N D= 5 : G OTO 1 40
90 I F 8 $ = "PE D R O" TH E N D=6 : G OTO 1 40
1 00 I F 8$= "JOÃO" TH E N D = 7 : G OTO 1 40
1 1 0 I F 8 $ = "MANO E L " T H E N D=B : G OTO 1 40
1 20 I F 8 $ = " R AU L" TH E N D= 9 : G OTO 1 40
1 30 D= 1 0
1 40 T (C, D ) = T(C, D ) + 1 : G OTO 20
1 50 P R I N T " N O M E " ; TAB ( 7 ) ; " P R ES"; TAB ( 1 2) ;
"V.PR ES" ; TAB ( 1 9) ; "TES"
1 60 F O R N= 1 TO 1 0: P R I NT N $ ( N ) ;
TAB ( 7 ) ; T ( l ,N ) ; TAB ( 1 2) ; T(2,N ) ; TAB ( 1 9) ; T (3,N )

1 73
1 70 N E XT N
1 80 DATA ANTÓN IO, JOAQU I M , M A RCE LO, R OB E R ·
TO, PAU LO, P E D RO, JOÃO, MANOE L, R A U L, JOS�

Até esse ponto do p rograma esta be lecemos as regras pa­


ra a contagem e i m pressão d o resu l tado .
As p ró x i mas l i n has d e DATA vão conter o s dados n a
forma q u e forem sendo l i dos nas céd u l as : cargo e n o me d o
can d i dato . Se houver 2 0 eleito res e cada u m vota r em 3 no­
mes pa ra os 3 cargos, teremos u ma seq üência de 60 cédu las,
cada u ma com um cargo e um nome.
Da l i n ha 1 90 em d i a nte os dados vão sen d o col ocados
no p rograma conforme as cédu l as vão sen d o l i das.
1 90 DATA P R ES I D E NTE, P E D RO, "V I CE-PR ESI D E N ·
T E " , ANTÓ N IO, TESOU R E I R O, JOÃO, P R ES I D ENTE,
R O B E RTO
200 DATA "V I CE-P R ES I D E NTE", RA U L, TESO U R E I ·
R O , P E D R O, P R ESI D E NTE, M AN O E L
E assi m p o r d ia n te .
C o m o va i fu ncionar esse p rograma?
N a l i n ha 1 5 fazemos u ma leitu ra dos n omes dos can d i -
datas :
N $ ( 1 ) = ANTÓN I O
N $ ( 2 ) = J OAQU I M

N $ ( 1 0)= JOSÉ
N a l i n h a 2 0 va mos ler o s votos : u m ca rgo ( A$ ) e u m
n ome ( B $ ) ; va mos assoc iar o cargo P R E S I D E NT E c o m o va­
lor de C= 1 , V I C E- P R E S I D E N T E co m C=2 e , se não for
nem P R E S I D E N T E nem V I C E- P R E S I D E N T E , só pode ser
T E S O U R E I R O e C f i ca igual a 3 .
O mesmo oco rre c o m o s n o mes : q uando o n o m e vota­
do é A N T Ô N 1 O. D fica sendo igual a 1 ; se for J OAOU 1 M
fica sendo 2 ; se não for nen h u m dos i n d icados nas l i n has
40 áté 1 20 , só pode ser J O S É e D será i g u a l a 1 0.
N a l i n ha 1 40 será montada a matriz de contagem :
T ( C , D ) é eq u iva lente a u m voto dado ao can d i dato D ,
para o cargo C .

1 74
Assim, cada vez que aparecer o mesmo conj u nto C , D
(o mesmo can d i dato votado para o mesmo cargo ) o va l o r de
T ( C , D ) au menta de u ma u n i dade . Dessa forma. no f i m da
" F I M " ( l i n h a 30) ,
c o n t ag e m , q u a n d o A $ = " F I M " e B $ =

i:e remos o tota l de votos pa ra cada conju nto de val o res C e


D.
N a l i nha 1 50 col oca mos o t ítu l o d a tabe l a , e a l i nh a
1 60 manda im pri m i r o s n o mes dos can d i datos e o n ú mero
de votos que cada um obteve para cada cargo :
Por exem p i o : (antes de executar, veja i tem 9 . 4 )
RUN
NOME P R ES V . P R ES TES
ANTÓ N I O 6 3 0
J O AQU I M 3 0 15
MARCELO 0 12 7
R O B E RTO 0 2 0
PAU L O 2 5 0
PEDRO 5 5 5
JOÃO 2 0 0
MAN OEL 0 10 8
RAU L 1 13 2
JOSt 1 0 10

OK

Recomen damos ao leitor fazer vá rios exem p l os seme-


1 h a n tes a este , com variantes, para e n tender bem o p rocesso
do uso das variáve is i n dexadas e do contador. No caso , o
p onto mais i m porta n te desse con tad or fo i o fato de que
T ( C , D ) ta m bé m é u m a va r i áve l de d u p l o i n d 1 ce e os va l o res
de C e D apareceram no p rogra m a por p rocessamento i n ter­
n o . I sto most ra que os índ i ces podem ser def i n i dos dentro
d o p rograma, por um meio q u a l q uer, desde que sej a m i n ­
te i ros e . positivos ou n u los.

9.4 - I nstrução D I M

Quando tra ba l h amos com variáveis i n dexadas, a l i ngua­


gem BAS I C estabelece u ma certa q uanti dade de memórias
pa ra a rmazenar os va l o res dessas var i áveis.

1 75
E m outras pa l avras, o programa p reci sa saber, antes de
começa re m a aparecer as variáveis i n dexadas, q u a l é o tama­
nho máx i mo d o "a rray " que se terá , ou , em outras pa l av ras,
quantos elemen tos ex isti rão nas mat r i zes ou nos vetores ( ín -
·

d i ces b i d i mensionais e u n i d i mensi o n a i s ) .


Na m a i o r parte das versões de BAS I C não é necessá r i o
decl a ra r tama n h os d e "arrays" com menos d e 1 1 el emen tos.
I sto sig n i f ica q u e , se tivermos u ma va riável d o t i po :
A(K)
e , se K n a execução d o p rograma não for m a i o r do q u e 1 0 ,
não se rá p rec iso dar u ma instrução espec i a l dec l a rando q u a l
o ta ma n h o d a s mat rizes (ou sej a , dec l a ra n d o q u a l o m a i o r
va l o r q u e se espera q u e K possa ati n g i r ) .
A i n stru ção D I M ( o r i u nda de " D I M E N S I O N " ou D I ­
M E N SÃO ) é u sada d a segu i n te mane i ra :
Logo n o i n íci o do p rograma deve ser escrito :
D I M A ( 20)

Nesse ex em p l o , esta mos dec l a ra n d o que a matriz A ( K )


poderá , n a execução d o p rog ra m a , te r va l o res A ( 0 ) , A ( 1 )
- - - - A ( 20 ) . O p rogra ma vai guardar 20 posi ções para a r ma­
zenar os va l o res de A( K ) . Qua ndo não é usada a i nstrução
O 1 M , o progra m a , auto mati camente , g u a rda 1 1 posi ções
(de 0 a 1 0 ) .
N o caso de índ ice du p l Ó , a i n strução será do t i po :
D I M 8 (30, 50 )
o que sig n i f i ca que a var i áve l B poderá assu m i r (n d i ces des­
de B (0,0) até B ( 30, 50) .
N o caso de variáve is co m d u p l o ín d i ce é sem p re neces­
sá rio dec l a ra r a d i mensão . Dessa forma os exe m p l os a n teri or­
mente mostra d os têm que ter o seg u i n te acrésc i m o :

E x . 1 0 : Acrescenta r : 1 5 D I M A $ (4,5)

E x . 1 1 : Acrescenta r : 5 D I M T(3, 1 0)

É i m porta n te n ota r o segu i n te : q u a n d o se faz u m a de­


claração de d i mensão , espec i a l mente de var i áve l d u p l a mente
1 76
i n dexada , o n ú mero de casas de memória reservadas pe l o
p rograma pode se tornar bastan te g rande.
Exemp l o : quando dec l a ra mos D I M A ( 20 , 30 ) , esta mos
reservando 600 va l o res para a vari áve l A ( M , N ) . Além d isso o
com p u tador p recisa escrever o p ró p r i o n o me da va r i áve l o
que toma outra ta n tas vagas de memó r i a . Na rea l i d a d e , u ma
d i mensão 20, 30 poderá ati n g i r mais de 600 Bytes de me­
m ór i a .
E m resu m o , o u so de matri zes é m u i to ú t i l rnas ocu pa
m u i ta memória . Po r isso é necessá r i o se ca l c u l a r co m razoá­
ve l ap rox i mação a d i mensão dos "arrays' ' , para ev i t a r decla­
ra r d i mensões m a i o res do que o rea l mente necessá ri o .
As d i mensões podem ser dec l a radas e m conj u n to , m i s­
tu ra n do-se va riáve is de ín d i ce s i m p l es, d u p l o e de ST R I N G .
E x . : D I M A ( 1 00 ) , 8 $ ( 1 0, 1 5) , T ( B, 1 4 )
As d i mensões das va riáve is são co l ocadas depo is da i n s­
trução D I M e separadas u mas das outras através de v írgu las.
E m conc l u são a este tópico va mos menc i o n a r dois pon­
tos que devem ser bem g ravados pe l o l e i to r :
a ) quando os ín d i ces da va riável ati ngem u m va l o r
ma i o r d o q u e o q u e está i n d icado n a dec l a ração
D I M , o p rograma e m i t i rá u ma mensagem de erro :

Ex . : 1 0 D I M K ( 1 2 )
20 F O R N= 1 TO 1 5 : K ( N ) N: =

N EXT
3 0 F O R M = 1 TO 1 5 : ? K ( M ) :
N EXT
RUN
D O E R R O R I N 20

OK

O que ocorreu fo i que, q u a n d o o l oop d a l i n ha 20 ten ­


t o u fazer K ( 1 3) = 1 3 , o n ú mero 1 3 j á era m a i o r do q u e a d i ­
mensão ind icada na l i n ha 1 0 e , ass i m , o p rograma parou e
acusou erro de d i mensão .
b.) o p rogra m a deve ser fe i to de manei ra q u e a i nstrução
D 1 M re l a tiva à mesma va riável não seja 1 ida m a i s de
u ma vez . O p rogra ma f i ca confuso com duas i n d i ca -

1 77
ções de D I M da mesma va riáve l . I sto oco r re mesmo
q u e a d i mensão i n d icada seja a mesma :

E x . : 1 0 D I M A ( 1 5)
20 F O R N= 1 TO 1 5 : R EA D A ( N ) :N E XT
30 F O R M= 1 TO 1 5 : P R I N T A ( M ) ; : N E XT
40 I N P UT "QU E R CON T I N UA R " ; S$
50 I F S $ < > "S" T H E N E N D
60 R ESTO R E : G OTO 1 0
7 0 D ATA 1 , 2 , 3 , 4 , 5, 6 , 7 , 8 , 9 , 1 0
81'.l DATA 1 1 , 1 2 , 1 3 . 1 4 . 1 5
RUN
1 2 3 4 5 6 7 8
9 10 1 1 12 1 3 14 15
QU E R C O N T I N U A R ? s
DO ERROR IN 10

OK

Quando mandamos o p rograma con t i n uar, e l e vo l to u


pa ra a l i n ha o n d e encontrou nova mente a dec l a ração D I M
A ( 1 5 ) e , assi m , acusou erro de d u p l a d i mensão ( d i mensão
dec l a rada duas vezes no mesmo p rograma ) .

1 78
Capítulo X
F UNÇ Õ E S D I V E RSAS DE STR ING

1 0. 1 - Já v i m os q u e as var i áveis de ST R 1 N G da fo rma A $


ou A$ ( K ) ou A $ ( M , N ) podem ser tratadas " m ate­
m atica mente " , nos p rogra mas em BAS I C , e m bora os
S T R I N GS seja m , apenas, conj u nto de caracteres, sem va l o r
n u mérico .
Já demos, i n c l usive, d iversos exem p l os d o trata mento
q ue pode ser dado a essas variáveis, e m ca p ítu l os a n te r i o res.
Agora va mos m ostra r a l gu mas funções espec íf icas pa ra a ma­
n i pu lação dessas va r i áveis, ou seja , d iversos t i pos de transfor­
m ações e operações que podem ser fe itas em ST R 1 N G S e
q u e são mu ito ú teis na p reparação de certos p rogramas.

1 0 .2 - L E FT$

Essa fu nção , q u e é esc r i ta da seg u i n te forma :

LE F T $ ( A $ , N )

rep resenta os N p r i mei ros caracteres d o ST R 1 N G A $ , a par­


t i r da esquerda .

E x . 1 : 1 0 C D $="T E M P E R ATU RA"


20 P R I N T LEFT $ ( C D $ ,2 )
RUN
TE

OK

Quando escrevemos L E FT $ ( C D $ , 2 ) , estabe lecemos u ma


fu nção que rep resenta os dois pri mei ros caracteres d o

1 79
ST R I N G C D $ , ou seja , as letras T e E . Como mandamos
i m p ri m i r essa fu nção , foi i m p resso T E .
O va l o r do parâ metro q u e i n d ica a quanti dade de letras
do ST R I N G que serão representadas pel a fu nção L E F T $
pode ser uma variáve l , desde que positiva e i n te i ra , vari áve l
essa determi nada dentro d o p róprio p rograma :

E x . 2 : 1 0 A$ = "ABCD E F G "
2 0 I N PUT "QUANTAS LETRAS" ; N
30 K $ = L E FT$ ( A $ , N )
40 P R I N T K $ : G OTO 20
R UN
QU A N TAS L ET R AS? 3
A BC
QU A N TAS L ET R AS? 5
ABC D E
QU A N TAS L ET R AS? 1 0
A BC D E
QU A N TAS L ET R AS? ( < R ET U R N >)

OK

Cada vez que fo i dado u m va l o r a N , o prog ra m a i m ­


pri m i u o nú mero co rrespondente d e ca racteres. Q u a n d o fo i
ped i d o u m va l o r m a i o r d o q u e o com pri mento d o ST R I N G ,
só i m p r i m i u os caracteres ex isten tes n o ST R I N G .

E x . 3 : 1 0 A $ = "ABCD E F G H IJ "
2 0 N = I N T( R N D ( l ) * 1 0+ 1 )
30 ? L E F T $ ( A $, N ) : M = M + 1
40 I F M > 6 TH E N E N D
50 G OTO 20
RUN
A BC
A
A BC D E F G
ABC D
AB
A BC D E
A
OK

1 80
Desta vez fizemos N ser u m va l o r i n te i ro , a l eató r i o , en­
tre 1 e 1 0 e mandamos o p rogra m a i m p ri m i r 7 vezes a fun­
ção L E FT$ , a cada vez com um va l o r de N .

Ex . 4 : 5 A $ = "ABCD E F G "
10 FOR N= 1 TO 5
20 ? L E FT$ (A$,N ) : N E XT
R UN
A
AB
A BC
ABC D
A BC D E

OK

Neste programa, u samos o " l oo p " F O R / N E X T para va­


r i a r os va l o res de N de 1 a 5 e i m p ri m i r o n ú mero de ca­
racteres corresponden te .
Se nós l e m b ra r m os a f u n ção L E N ( A$ ) , que fo i ex p l ica­
d a em cap ítu l o anterior, poderemos u sa r o própr i o com p r i ­
mento do ST R I N G c o m o va l o r máx i mo d o parâmetro, n o
" l oop" F O R/ N E XT e, assi m , escrever o S T R 1 N G i nte i ro .
Lem b rando que L E N ( A$ ) é o n ú mero d e ca racteres d o
ST R I N G A $ ( i ncl u i nd o espaços, v írgu l as, s i n a i s , etc . ) , po­
demos fazer o segu i n te :

E x . 5 : 1 0 A $ = "CA F É COM L E I T E "


20 FOR N = 1 TO LEN (A$)
3 0 ? L E FT$ (A$ , N ) : N EXÍ'
RUN
c
CA
CAF
CAFÉ
CAFÉ (*)
CAFE C
CAFE CO
CAFE COM
CAFE COM (* )
CAF E COM L

1 81
CAFE COM LE
VAFE COM LEI
CAFE C OM LEIT
CAFE COM LE ITE

OK

( * ) o n ú mero de ca racteres não é i gu a l ao a n te­


r i o r ; h á ta m bé m , o espaço depo i s de ú l t i ­
ma letra , que é i nv i s lve l .

E x . 6 : 50 I N P UT "QU E R CO N T I N U A R " ; A $
6 0 I F L E F T $ ( A $ , 1 ) < > "S" T H E N E N D

Este é u m pedaço d e p rograma i g u a l a m u i tos q u e já


ex em p l i f i ca m os ; a d i ferença é que não é necessá r i o respon­
der apenas co m a letra S . Pode m os tec l a r S 1 M (ou q u a l q uer
outra pa l avra começada por S ) , e o efe i t o será o mesm o ,
porq ue a fu nção L E F T $ ( A $ , 1 ) s ó l everá e m consideração a
pri mei ra letra da pal avra que for tec l ada pe l o opera d o r , em
resposta à perg u n ta d a l i n h a 50 .

10 .3 - R IGHT $

É u ma f u n ção si mét r i ca à a n te r i o r , com a d i fe rença de


co ntar os ca racte res da d i re i ta pa ra a esq u e rda .

E x . 7 : 1 0 A $ = "ABCD E F G H "
2 0 P R I N T R I G H T$ ( A $ ,2)
R UN
GH

OK

F o ra m i m p ressos os d o i s ú l t i mos va l o res à d i re i ta


ST R I N G .
S u ge r i m os a o l e i to r ex per i me n tár os exem p l os m ostra­
dos p a ra a ·f u nção L E F T $ , dessa vez usa n d o R I G H T $ .

1 82
10.4 - MID$ (A$ , K ,I)

Essa fu nção rep resen ta os 1 ca racteres d o ST R I N G A$ ,


a part i r do ca racter K , ou seja , u m su b-ST R I N G de A $ .

E x . 8 : 1 0 A$ = "ABCD E F G H IJKL"
20 ? M I D $ (A$, 3, 2)
RUN
CD

OK

F,o ra m i m p ressos d o i s ca racteres, a p a rt i r d o terce i ro


( 3 ,2 ) .
Vej a m os u ma a p l i cação i n te ressa n te desta fu n ção .

E x . 9 : 1 0 F O R N = 1 TO 1 0 : R E A D A $ ( N ) : N E XT
20 I N P U T " S O B R E N O M E " ; 0 $
25 Q = L E N (Q$ )
30 F O R M= 1 T 1 0 : F O R T= 1 TO L E N
(A$ ( M ) )
4 0 I F M I D $ ( A $ ( M ) , T , Q)= Q $ T H E N T =
L E N (A $ ( M ) ) : ? A $ ( M )
5 () N E X T T , M
60 D ATA "J OÃO D A S I LVA, " A N TÔ N I O
SOA R ES", " P E D R O S I L V E I R A", "JOSÉ D A
S I LVA"
70 D ATA "ANTÓ N I O D A S I LVA", " R E N ATO
SOA R E S", " L U I S S I LV E I R A" , " M A N O E L
SOA R ES"
80 D ATA "JOAQU I M DA S I LVA", " F E R N A N ­
D O SO..A � ES"
90 G OTO 20
RUN
S O B R E N O M E ? S I LVA
J OÃO DA SI LVA
J O St DA S I LVA
A N TÓ N I O DA S I LVA
J O A QU I M D A S I LV A
S O B R E N O M E ? SOA R ES
A N TÓ N I O S O A R E S

1 83
R E N AT O S O A R ES
M A N O E L S O A R ES
F E R N A N D O S O A R ES
SO B R E N OM E?
(tec l a mos < R E T U R N > )

OK

Veja mos o que se passou :


N a l i n h a 1 0 manda mos o p rograma l e r 1 0 nomes :
A $ ( 1 ) = J O Ã O D A S 1 L VA
A $ ( 2 ) = A N T O N I O SOA R E S
e ass i m p o r d i a n te .
Na l i n h a 20 o progra ma perg u n ta u m sobrenome, que
será teclado pe l o operador. Esse sob renome, nesse m omento ,
passa a ser rep resentado pe l a va ri áve l de ST R I N G Q$ . N o
exem p l o mostra d o , a p r i me i ra resposta do operad or fez Q $
ser i g u a l a S I LV A .
N a l i n ha 30 temos 2 " l oops" F O R / N E X T e m bu t i dos .
A va r i áve l M faz com que o p r i me i ro " l oo p " ( ma i s ex tern o )
"chame" . a s va r i áve is A $ ( 1 ) , A $ ( 2 ) . . . A $ ( 1 0 ) . A va r i áve l
T va i fazer o p r i m e i ro caracter da função M I O $ va r i a r de
1 até o co m p r i mento do A $ ( M ) refe ren te ao M em que es­
tiver o " l oo p " extern o . A va r i áve l Q do M 1 0 $ é i g u a l ao
co m p r i mento de Q $ , isto é, o n ú mero de l etras do so breno­
me tec l a d o � i n h a 25) .
Quando houve r i g u a l dade entre o sob renome ( Q$ ) e a
f u n ção M 1 0 $ , será i m p resso o nome i n te i ro A $ ( M ) , pa ra o
va l o r de M em q ue essa i gu a l dade aconteceu .
Assi m , de u ma l i sta de n o mes, nós podemos fazer u ma
l i sta daque les q u e têm o mesmo so b ren o m e .
O s " l oops" da l i n h a 30 f u n c i o n a m da segu i nte mane i ra :
Quando M = 1 , A $ ( M ) é i g u a l a A $ ( 1 ) , que é J O ÃO
DA S I L V A . E n q u a n to M conti n u a sen d o i g u a l a 1 , o " l oop"
i n terno faz T va r i a r de 1 até L E N ( A $ ( M ) ) , i sto é , até o n ú ­
mero d e ca racteres d o n o m e J O Ã O DA S I LVA ( i nc l u i n do os
espaços ) . Q u a n d o o sob renome S I LVA fo i tec l ado, Q$ pas­
sou a se r i g u a l a S I LVA e Q = L E N ( Q $ ) passou a ser i g u a l
a o n ú me ro de ca racteres do nome S I LVA ( n o caso , i g u a l a
5) .

184
Ass i m quando T 1 , M I D $ (A$ ( M ) ,T,Q) é igual a
=

M I 0 $ ( A$ ( 1 ) , 1 ,5) . E n tão , nesse momento, a fu n ção M I O $


é i gu a l a JOÃO + u m espaço . Como isso não é igual a S I L­
VA, o loop i n terno conti n ua e faz T 2 . Ago ra , temos
=

M I D $ ( A$ ( 1 ) , 2,5) , q u e é igual a OÃO D. A i n da não é ig u al


a S I LVA. Quando T f or igual a 9 , teremos M I D$ ( A $ ( 1 ) ,
9 , 5 ) , q ue é exatamente igual a S I LVA.
Nesse momento será i m p resso o nome A $ ( M ) , q u e é
A$ ( 1 ) , ou seja, J OÃO D A S I LVA. Como não a d i a n ta mais
fazer o valor de T a u mentar, pois já ana l i sa m os o que i n te­
ressa com M = 1 , fazemos T ser igual a L E N ( A$ ( 1 ) ) , ou
seja , o ú l timo va l o r d e T, no l oop i n terno.
Com N E XT M , recomeçamos tudo n o segu ndo nome,
A $ ( 2 ) , que é A N TO N I O SOA R ES. Quan do T var i a r de 1
a t é o com pri mento desse nome, não vai encontrar nen h u m
M I O $ que seja igual a S I LVA. Assi m , o " l oop" extern o pas­
sa para M = 3 e o n o me ANTON 1 0 SOA R E S não é i m p res­
so . Com M = 3 acontece a mesma co i sa. Com M = 4, vamos
encontra r u m va l o r de M I O $ , que é igual a S I LVA e , assi m ,
será i m p resso o va l o r d e A $ (4) , que é J O S t D A S I LVA.
O programa con t i n u a até M = 1 (/J, quando te rm i n a m os
l oo ps. Agora, vo l ta mos para a l i n ha 2(/J onde um n ovo sobre­
n o m e é pergu ntado e serão i m p ressos todos os nomes que
t i verem esse sob ren o m e .
Veja bem que n ã o é necessário que o sobrenome seja o
ú l t i m o . A busca de M I O $ , andando de u m em u m ca racter
pe r m i te que se esco l h a u m nome do meio ou , até , pa rte de
u m n o me .
N o exem p l o aci ma vamos responder c o m a pal avra D A .
q u an d o for perg u ntado o sobrenome .
SO B R E N O M E ? DA
J O Ã O D A S I LV A
J O S t D A S I LV A
A N T Ô N I O D A S I LV A

e ass i m por d ia n te . . .
Acontece que é p rec iso tomar u m certo cu i dado, pois,
se houvesse alguém n a l ista chamado DAG O B E RTO A N T U ­
N E S, o M I O $ recon heceria o DA d o n o m e D AG O B E RTO e
esse nome seria l istad o j u nto com os DA S I LV A. I sso pode
se r ev i tado , nesse exemp l o , teclando um espaço, as letras

1 85
OA e ou tro espaço . Ago ra o nome DAG O B E RTO não será
l istado pois o sobrenome que nós queremos tem 4 caracte­
res : espaço, D, A, espaço.
U ma observação ad iciona l :
Quando não co l ocamos o segundo parâmetro do M 1 D $
( A $ , M , N ) , isto é , quando escrevemos
M I D $ (A $ , M )
essa fu nção va i representar todos os caracteres d o ST R I N G
A $ , começando n o caracter de o rdem M até o fi m d o
ST R I N G .
1 0 .5 - CHR$(N)
Essa função efetua a conversão de u m cód igo n u mérico
( N ) . para o s ím b o l o rep resentativo desse cód i go .
N os sistemas d e com p u tação e , p r i n c i p a l mente, de
transm issão de dados a d istânci a , todas as l etras, s i n a i s, ca­
racteres espec i a i s , ass i m como s i n a i s de fu nções espec i a i s ,
têm u m cód igo nu mérico equ iva l ente. A tabe l a de cód i gos
mais u sada é a den o m i nada ASC 1 1 ( American Sta n d a rd Code
for l nformation l n terchange ) . mostrada aba i xo .
Verificamos que a letra A é rep resentada pe l o n ú mero
dec i ma l 65, B é 66 , e ass i m por d i an te . A armazenagem dos
ca racteres no com p u tador é fe i ta através do cód i g o . Ass i m ,
quando o com p utador armazenar na mem ória u ma pa l avra
ou um ST R I N G , ele está , na rea l i dade, armazena ndo os có­
di gos n u méricos correspon dentes às letras e aos s i n a i s ( i n c l u ­
sive espaço ) .
E x . : quando escrevemos
A$ =" JOGO "
o co m p u tador a rmazena o segu i n te :
65 36 61 34 74 79 71 34
CÓ D I G O D E C A R ACTE R E S ASC I I

C ó d igo Ca racteres C ó d igo Ca racteres Cód igo Ca racteres


ASC I I ASC I I ASC I I

000 NUL 043 + 086 V


00 1 SOH 044 087 w
002 ST X . 045 088 X

1 86
003 ETX 046 089 y
004 E OT 047 / 090 z
005 ENO 048 o 09 1 [
006 AC K 049 1 092 \
007 BEL 050 2 093 ]
008 BS 051 3 094
009 HT 052 4 095 +-

010 LF 053 5 096


01 1 VT 054 6 097 a
01 2 FF 055 7 098 b
01 3 CR 056 8 099 e
014 so 057 9 1 00 d
01 5 SI 0 58 1 01 e
01 6 DLE 059 ' 1 02 f
01 7 DC1 060 < 1 03 g
01 8 DC2 061 1 04 h
01 9 DC3 062 > 1 05
020 DC4 063 ? 1 06 j
02 1 NAK 064 @ 1 07 k
022 SY N 065 A 1 08 1
023 ETB 066 B 1 09 m
024 CAN 067 e 1 10 n
025 EM 068 D 111 o
026 SU B 069 E 1 12 p
027 E SCAP E 070 F 1 13 q
028 FS 07 1 G 114 r
029 GS 072 H 1 15 s
030 RS 073 1 1 16 t
03 1 us 074 J 1 17 u
032 SPAC E 075 K 1 18 V

033 076 L 1 19 w
034 077 M 1 20 X
035 # 078 N 1 21 y
036 $ 079 o 1 22 z
037
038
%
&
080
081
p
o
1 23
1 24
{
1
\

039 082 R 1 25
040 083 s 1 26 �
t
04 1- 084 T 1 27 DEL
*
042 085 u

1 87
Os cód igos ASC 1 1 estão na forma dec i m a l
LF próx i ma l i n h a
FF a l i men tação de form u l á r i o
C. R. retorno d e carro
DEL rubout
Além d i sso ex iste m f u n ções espec 1 a 1 s que têm cód i g o .
Menc i o n a remos a l g u mas q u e n ã o são l i gadas e x c l usiva mente
à transm issão de dados e que podem , porta n t o , se r u sadas
n o traba l h o com um m i croco m p u tador em B AS I C :
- Cód igo 1 0 - LINE FEED
é u ma i n strução q u e faz o cu rso r d o v ídeo o u a ca beça de
i m p ressão perma nece r no mesmo l u ga r e n q u a n to o pape l de
i m p resso ra ou a l i n h a n o v ídeo avança de u ma posi ção .
- Cód igo 1 3 - C A R R I AG E R E TU R N
faz o cu rso r o u o ca beça d a i m p resso ra vol tar p a ra o i n íc i o
da l i n ha (a mesma l i n ha q u e estava sen d o i m p ressa ) .
Va m os d a r a l g u n s exem p l os :

E x . 1 0 : 1 0 P= I N T ( R N D ( 1 ) * 26+ 1 )
20 P R I N T C H R $ ( P+64 ) ; : M= M + 1
30 I F M > 1 0 TH E N E N D
4 0 G OTO 1 0
RUN
A G D E TX PX K J U

OK

Veri f i q ue o segu i n te : P é u m nú mero a l ea tó r i o , enue 1


e 26 . Assi m P+ 64 é u m n ú mero a l eató r i o entre 6 5 e 90.
Qua ndo m a n d a mos i m p ri m i r C H R $ ( P+64) o com puta­
dor converte o n ú me ro P+ 64 n o seu ca racter cor respo ndente
e o i m p r i me . Por isso , obtivemos u ma seq üên c i a a l ea tó r i a de
letras, ao execu tar o progra m a .

E x . 1 1 : (em m o d o d i reto )
P R I N T "ABC D E " ; C H R $ ( 1 0) ;" F G H I J "
(< R E TU R N > )
A BC D E
F G H IJ

OK

1 88
A função C H R $ ( 1 0 ) fez p u l a r u ma l i n h a (não esq ueça
q u e , nesse momento , o cu rsor já t i n ha avançado u ma casa ,
a p ós a i m p ressão d a letra E - i sso ocorre automat ica mente
após cada i m pressão) .

E x . 1 2 : (em modo d i reto )


P R I N T "A B C D E " ; CH R $ ( 1 3) ; " F G H "
(< R E T U R N > )
FGHDE

OK

Na te la do v ídeo acontece o segu i n te :


Pri mei ro aparece m as letras A B C D E e , depois da f u n ção
C H R $ ( 1 3 ) , o cu rso r vo l ta para o i n íc io d a l i n h a e faz apa­
recer F G H , apagando os caracteres q u e estava m nesse l u ga r .
E m u m a i m p ressora a s letras F G H se rão i m p ressas e m c i m a
das l etras ABC.
Vamos repeti r u m exem p l o já mostrado em ca p ítu l o
a n te r i o r ( aspas den t ro d o ST R I N G ) .

E x . 1 3 : 1 0 P R I N T CH R $ (34) ; "CO M P UTADO R " ; CH R $ (34)


R UN
" C O M P U TA D O R "

OK

O Cód igo 34 rep resen ta aspas.

1 0 .6 - ASC (A$ )

� a função oposta à ante r i o r . E l a dá o va l o r d o cód igo


ASC I 1 d o caracter A$ .

Ex . 1 4 : PR I N T ASC ( "A " I


(< R E TU R N > )
65

OK

1 89
As aspas se rvem para mostrar que A é u m ST R 1 N G e
não u m a va r i ável . Se co l oca rmos dentro dos parên teses da
fu nção ASC um conj u n to de caracteres, se rá i m p resso o có-·
d i go ASC I 1 do pri me i ro ca racte r .

E x . 1 5 : 1 0 F O R N =l TO 6 : R EA D X $ ( N )
2 0 P R I N T ASC ( X $ ( N ) ) ; : N E X T
3 0 DATA C,O, D , 1 ,G,O
RUN
67 7 9 68 73 71 79

OK

O p rogra m a leu os va l o res das l i n h as de dados, transfor­


mou cada um dos s ím bo l os n o seu va l o r ASC I 1 e i m p r i m i u
esses va l o res.

10.7 - ST R $ (X)

Essa fu nção t ransfo rma um n ú mero X em um ST R I N G .


Depois dessa tra nsfo rmação o ST R 1 N G não pode sofre r ope­
rações mate m á t i cas, a pesa r de esta r rep resentando um n ú me­
ro . No entanto pode ser t ratado como um ST R 1 N G , u sa n d o
todas as f u n ções a p l i cáve is a ST R 1 N G S .

E x . 1 6 : 1 0 N = 34.65
20 A$ = ST R $ ( N )
30 ? N * 2 : ? A $
RUN
69 .3
34 .65

OK

Nesse caso , q u a n d o manda mos i m p r i m i r N * 2 , o co m p u ­


ta d o r efetuou n o r m a l mente a m u l t i p l i cação e quando m a n da­
mos i m p r i m i r A $ , ele i m p r i m i u o S T R I N G 34 . 6 5 ( n ão es­
q u eça que o espaço na frente do n ú mero faz pa rte d o
ST R I N G ) .
1 90
E x . 1 7 : 1 0 F O R X = 1 TO 8 : ? X ; : N E XT :?
20 F O R X = 1 TO 8 : K $ = ST R $ ( X ) :
P R I N T M I O $ ( X $,2) ; : N E XT
RUN
1 2 3 4 5 6 7 8
1 2 345 678

OK

E x p l i cação : q u a n d o manda mos i m p ri m i r X , aparece ram


os espaços n o r m a i s n a frente e atrás dos n ú meros. A i nst ru­
ção P R I N T ( ? ) , n o fi m d a l i n h a 1 0 faz com que o p ró x i m os
P R I N T f i quem em ou tra l i n h a .
Quando transformamos cada n ú mero em u m ST R 1 N G ,
mesmo q ue m a n d ássemos i m p r i m i r o ST. R I N G ( K $ , n o caso ) ,
o s espaços a p a receri a m . E n tão , u samos a função M 1 0 $ , para
m a n dar i m p r i m i r a part i r do seg u n d o caracter d o ST R 1 N G .
Desse modo p u l a mos o p r i me i ro ca racte r , que é o espa­
ço d o si n a l .
E m conseq üênc i a , os n ú meros fora m i m p ressos sem
espaços entre e l es .

E x . 1 8 : 1 0 O= 1 5 . 47
20 P R I N T L E N ( ST R $ (0 ) )
RU N
6

OK

Neste exem p l o manda mos i m p ri m i r o n ú mero de ca rac­


te res do ST R I N G em q u e o n ú mero Q fo i t ra nsformado ( o
espaço do s i n a l ta m bém contou c o m o u m ca racte r ) .
Va m os d a r u m exem p l o e m q u e q u e remos i rr. p ri m i r n ú �
meros c o m a posi ção da v írgu l a dec i ma l ( ponto, n o caso da
1 íngua i ng l esa ) sen d o a mesma para todos e l es .
P r i m e i r o , vejamos o q u e acon tece n o r m a l mente :

E x . 1 9 : 1 0 F O R K = 1 TO 5 : R EA D A ( K ) : N EXT
20 F O R K = 1 TO 5 : ? A ( K ) : N E XT
30 D ATA 1 5.5, 1 384 . 53,.4, 1 .538, 1 2
RUN
1 91
1 5 .5
1 384.53
.4
1 .5 38
12

OK

O ponto dec i m a l não ficou na mesma posição vert ica l .


Cada i m p ressão começou n o pri me i ro caracter d o n ú l]lero e
na pri me i ra posição da l i n h a .
Agora , va mos fazer a segu i n te a l teração n o p rograma :

20 F O R K 1 TO 5 : B ( K) L E N ( ST R $ ( I NT(A( K ) ) ) ) :
= =

N E XT
25 F O R K = 1 TO 5 : ? TAB ( 1 0- B ( K ) ) ;
A ( K ) : N EXT

Va mos executa r :
RUN
1 5 .5
1 384.53
.4
1 .5 38
12

OK

E x p l i cação : A fu nção B ( K ) va i dar u m n ú mero que é


igual ao com p ri mento do ST R I N G e m que foi transformada
a parte i n teri ra de A ( K ) . Para ex.em p l i ficar, se K 1 , A ( 1 )
=

é o nú mero 1 5 .5. Sua parte i n tei ra é 1 5. Essa parte i ntei ra


é transformada em u m ST R 1 N G e o compri mento desse
ST R I N G é 3 (dois a l garismos mais o espaço do si na l ) . As­
si m , 8 ( 1 ) é igual a 3 .
Escol hemos u ma posição no v i'deo pa ra a col ocação d o
ponto deci ma l , de modo que haja espaço, à s u a esq uerda,
para col ocar as partes i ntei ras dos n ú meros. Nesse caso, es­
colhemos a posição 1 0.
Agora , manda mos i m p ri m i r cada n ú mero , A ( K ) , come­
çando na p osição 1 0 menos o compri mento de sua parte i n -

1 92
te i ra . Ass i m , o ponto f i ca rá sem p re n o mesmo l uga r. N o caso
de K 2 o nú mero A ( 2 ) é igual a 1 384 . 53. Sua pa rte i n te i ­
=

ra tem 5 ca racteres ( co m o s i n a l ) . E l e será i m p resso a p a rt i r


d a posi ção TAB ( 1 0-5 ) o q u e sign i fica q u e o ponto ficará n a
p osi ção TAB ( 1 0 ) .
Esse prog ra ma a p resentou u m defe i to : o n ú mero .4 f i ­
co u co m a "v írg u l a " fo ra d o l uga r. I sso ocorreu pe l a seg u i n ­
te razão :
A parte i n te i ra de .4 é 0 . Ass i m , o n ú mero de ca racte­
res da pa rte i n te i ra é 2 ( ze ro + si n a l ) . A i m p ressão com eça
n a casa 1 0-2, ou seja , 8. N essa casa é co l ocado o si n a l ( co­
m o o s i n a l é pos i t ivo , não aparece nada ) .
N a casa seg u i n te deve aparece r o p ri m e i ro a l ga r i s m o da
p a rte i nte i ra . Acon tece que a pa rte i n te i ra é zero e a l i ngua­
gem B AS I C não i m p r i m e o zero à esq u erda do ponto dec i ­
ma l . Ass i m o ponto f i cou desl ocado d e u ma casa .
Pa ra corri g i r essa deficiência va mos fazer as seg u i n tes
a l terações no programa :
Nas l i n has da D ATA va mos de i x a r todos os n ú meros
menores que 1 e ma i o res q u e -1 (ou seja , que tem a pa rte
i n te i ra n u l a ) no f i m da l istage m .
3 0 DATA 1 5 . 5, 1 384 .53, 1 .538, 1 2, .4,
.04, -.2345
Agora , va mos separar a l i n ha 20 em duas :
20 F O R K = 1 TO 4 : B ( K ) L E N (ST R $ ( 1 NT (A ( K ) ) ) ) :
=

N E XT
22 FOR K = 5 TO 7 : B ( K ) LEN (STR $ ( 1 NT(A( K ) ) ) ) )
=

- 1 : N EXT
E, nas l i n h as 1 0 e 25, fazemos K va r i a r de 1 a 7, já
q u e m u damos a q u a n t i dade de n ú meros a serem l i dos.
O truque é que, n a l i n ha 22, subtra ímos uma u n i dade
dos va l o res B ( K ) co rresponde n tes aos ú l t i m os n ú meros -

8 ( 5 ) , 8 (6) e 8 ( 7 ) . Ass i m , o ponto deci ma l ava nça rá de u ma


casa , f i cando no l ugar certo ( a penas para os ú l t i m os n ú me­
ros - A ( 5 ) , A ( 6 ) e A ( 7 ) ) .
Vamos l ista r e execu ta r o p rogra m a m od i f i cado e ver o
q u e acontece :
L I ST
1 0 F O R K=1 T07 :R EADA(K ) :N EX T
2 0 F O R K=l T04:8 ( K )=L E N (STR $ ( 1 N T
(A ( K ) ) ) ) : N E X T
1 93
22 F O R K=5T07 : B ( K )=L E N (ST R $ ( 1 N T
(A ( K ) ) ) )-1 : N E X T
2 5 F O R K=1 T07 :P R I N TTA8 ( 1 0 -B ( K ) ) ;
A( K ) :N EX T
30 DATA 1 5 .5 , 1 384.53 , 1 .538
, 1 2 , .4 , .04 ,-.2 345

OK
RUN
1 5 .5
1 384.53
1 .5 38
12
.4
.04
-.2 345

OK

1 0 .8 - VAL (A$)

Essa função serve para vo ltar a d a r a caracter íst i ca d e


n ú mero a u m ST R I N G , obt i d o p o r ST R $ , o u a u m n ú mero
que fo i transformado em ST R I N G por a l g u m outro método .
I sso é mu ito ú t i l , pois podem os ter u m nú mero , trans­
fo rmá- l o em ST R I N G , fazer man i p u l ação de ST R I N G e , de­
pois t ransformá- l o , de novo, em n ú mero :
E x . 20 : 1 0 A=1 83 :8=438
20 A $=M I D $ (ST R $ (A ) ,2 ) : B $=M I D $
(ST R $ ( B ),2)
30 C$=A$+B$ :?C$
40 C=VA L(C$ ) :?C
RUN
1 83438
1 83438

OK

Nesse exem p l o usa mos u m a ca racte r íst i ca dos ST R 1 N G S


den o m i nada- con caten ação : o s i n a l + , entre dois ST R I N G S ,

1 94
s i m p l esmente faz j u n ta r os d o i s em u m só . Dessa fo rma con­
segu i m os ju ntar os dois n ú meros e, agora , vo l ta m os a ter u m
n ú mero só , co m todas a s ca racter íst i cas matemáticas . Veja
que a pri mei ra l i n h a i m p ressa não tem s i n a l : é o ST R I N G
C $ . Já a segu nda l i n h a é o n ú mero C .
Vamos su por q u e queremos col oca r todos o s n ú meros
co m a penas d u as casas deci m a i s ( p . ex . : q u a n do trata m os de
va l o res monetár i os ) .

E x . 2 1 : 1 0 F O R N= 1 T05 : R EADA( N ) :N EXT


20 F O R N=1 T05:C ( N )= L E N (ST R $
( I NT(A ( N ) ) ) ) :NEXT
30 F O R N=1 T05 :A $ ( N )=M I D $ (ST R $ .
( A ( N ) ) , 1 ,C ( N )+3) :N EXT
40 F O R N= 1 T05 :A 1 ( N )=VA L ( A $ ( N ) ) :
?Al ( N ) :N E XT
50 DATA 1 438.555, 1 2 .3, 1 35.3764, 1 .32,
1 8.478
R UN
1 438 .55
1 2 .3
1 35 .37
1 .32
1 8 .47

OK

E x p l i cação :
N a l i n ha 1 0 l emos A ( 1 ) = 1 438 .555.A ( 2 ) = 1 2 . 3 , etc .
N a l i n h a 20 defi n i mos os va l o res C ( 1 ) . C (2 ) , etc . . que
re prese n ta m o n ú mero de ca racteres d o ST R I N G e m q u e é
t ra nsfo rmada a pa rte i n te i ra de A ( N ) . I sto s i g n i f i ca q u e ,
quando N 1 : =

A ( 1 ) = 1 438 .555
C ( 1 ) = 5 ( q u atro i n te i ros mais o s i n a l )

Na l i n h a 30 def i n i mos os ST R I N G S A $ ( N ) . q u e são as


pa rtes dos n ú me ros A ( N ) . que vão d o p r i me i ro caracter ( s i ­
na l ) a t é o com p r i mento da pa rte i n te i ra m a i s 3 . Esse va l o r
+ 3 rep resenta o p o n t o deci m a l e as d u as casas dec i m a i s q u e
n ó s q ueremos com o l i m i te .
1 95
No caso de Ny: l :

A ( l ) = 1 438 .555
C ( l )=5
ST R $ ( A ( 1 ) )= espaço, 1 438 . 555 (é um ST R I N G )
A$ ( 1 )= M 1 D $ ( ST R $ ( A ( 1 ) ) . 1 ,8) = espaço +-1-438 .55

Na l i n h a 40 defi n i mos novos n ú meros A l ( N ) , q u e são a


rep resentação n u mé rica dos A $ ( N ) . Desse modo :

A 1 ( 1 ) = s i na l , 1 438 .55 (é u m n ú mero e não me i s u m


ST R I N G )

F i na l mente man damos i m p r i m i r os va l o res de A 1 ( N ) .


Note que, q u a n d o o n ú mero só t i n ha u ma casa dec i m a l
( 1 2 . 3 ) , ficou só com essa casa , p o i s o p rograma não pode
acrescentar o ze ro, para f i ca r i gu a l a 1 2 .30 ( pe l o menos esse
tipo de p rograma ) .

10 .9 - A $ ( M , N ) : em a l g u mas versões de B AS I C a f u n ção


M I D $ ( A $ , M , O ) é rep rese n tada p o r A $ ( M , N ) e m q u e :

A $ = ST R I N G em q u estão .
M ordem do p r i me i ro ca racter d o su b-ST R 1 N G de­
sejad o .
N ordem do ú l t i mo ca racter do su b-S T R 1 N G d ese­
jado ( O= N -M+ l ) .

E x . : 1 0 A $= "ABCD E "
20 ? A $ ( 2.4)
RUN
BC D

OK

1 96
Cap ítulo X I
I NST R U Ç ÕES E COMANDOS DIV E RSOS

1 1 .1 - Daremos, neste cap ítu l o , u m breve apanhado sobre


outras i n stru ções. e coma n d os enco n t rados n a l i ngua­
gem B AS I C , mas q u e não são u n ive rsa is, i sto é , m u i tas ver­
sões dessa l i nguagem não possuem u ma ou m a i s dessas faci l i ­
d ades.
Além daqu i l o que va mos most ra r ex istem m u i tas ou tras
i n stru ções encon tradas em d i feren tes ve rsões d o B AS I C , q u e
é u ma l i nguagem q u e t e m cresc i d o e se adaptado a os n ovos
eq u i pamentos, sistemas e per i féri cos, assi m como às necess i ­
d ades dos usu á r i os de m i croco m p u tadores. E m part icu l a r , não
a bordaremos neste vo l u me as i n st ru ções referen tes ao u so de
d i scos magnét i cos co m o m e i os de a r mazenamento externo de
d ados.
Essas i nstruções const i t u e m um tó p i co à pa rte , sob a
d e n o m i nação genérica S i stemas Operac i on a i s de D i sco , e espe­
ra mos poder trata r das mesmas em ou tro vo l u me , fu tu ra­
mente .

1 1 .2 - PEEK e POKE

Essas i n stru ções têm a f i n a l i dade d e col oca r e l e r dados


d i reta mente de endereços de memória def i n i d os na i n strução .

1 1 .2 . 1- Leitura d i reta de memória - PEEK


Essa i n strução , o r i u n da de pa l avra i n g lesa que sign i f i ca
"esp iar", é u t i l i zada da seg u i n te mane i ra :

PE E K( X )

em q u e X é o endereço a bso l u to , em nu meração dec i m a l ,


elo q u a l quere m os saber o conteúdo.
1 97
E x . 1 : (em m o do d i reto )
P R I N T P E E K ( 5347 )
(< R E T U R N > )
1 27

OK

M a n d a mos o co m p u tado r i m p r i m i r ( o u co l oca r na te l a )


o va l o r q u e está armazenado n o endereço d e m e m ó r i a n <?
5347 ( n ote q u e n u n ca devemos co l oca r pon tos , v írgu l as ou
espaços para se parar os m i l h ares, n o endereço ; o n ú mero
deve se r esc r i to de m a ne i ra corr i d a ) . Esse va l o r é i n d i cado
sob a fo rma dec i m a l , em bora a mane i ra de a rmazenar n ú me­
ros n as me mór i a s não seja dec i ma l .
Essa i n strução é m a i s u sada e m re l ação a endereços que
têm a l gu ma co isa a ver com per i féri cos (no caso , o tec l ado
e o v ídeo são con s i d e rados per i fé r i cos ) .
A i n strução é bastan te u sada para " l i mpar" p rogramas,
isto é , descobri r e rros de p rogra m ação em casos mais com ­
p l e x os.
N ão d aremos m a i o res deta l hes so bre o uso dessa i nstru ­
ção , porq u e as m a ne i ras de u t i l izá-la dependem s i g n i f i cat iva­
mente d a a rq u i tetu ra do m i crocomputador usado e da versão
de B AS I C e x i sten te .

1 1 .2 .2 - Escrita d i reta e m memória - P O K E


Essa i n strução per m i te ao operador m a n d a r armazenar
um dete r m i nado n ú mero em um endereço de memória espe­
cificad o . A forma gera l da i n strução é :

POK E X,N

em que X é o endereço desejado e N é o n ú mero a ser ar­


mazenado (tanto X quanto N são escritos sob a forma de­
c i m a l , em bora a a rmazenagem seja na forma bi nária ) .
É p reciso . de sa íd a , n otar o segu i nte :
U m endereço d e memória só comporta , e m gera l , u m
Byte, q u e é u ma . pal avra de oito b its ( cada bit é u m valor
b i ná r i o 1 o u 0, a rmazenado e l etricamente na memória ) .
Assi m , o maior n ú mero dec i m a l que pode ser armaze­
nado na memória é 255 .

1 98
Po rtanto, o va l o r de N n ão pode ser superior a 255 (de
0 a 255 há 256 va l o res d i feren tes q u e u m Byte pode ter ) .
Além d i sso , é necessá r i o tomar cu i dado com o e ndere­
ço onde va mos mandar armazenar um n ú mero :
- se esse endereço perten cer a u m a memória d o t i p o
R E A D O N L Y (a penas l e i tu ra ) , o va l o r que i n d i ca m os
não será escr i to , pois esse t i p o de memória n ão ad­
m i te esc r i ta ; essas memórias são as que armaze n a m
o s programas permanentes d o com p u tador, ta l co m o
o i n terpretador BAS I C , p o r exem p l o ;
- se o endereço pertence a u m t i p o d e m'e m ó r i a onde
se pode escrever . (apagan d o o q u e estava esc r i to a n ­
tes ) é p rec iso ver i f icar se nesse endereço não ex istem
- i n struções de operação do computador. Quando o
co m p u tador é l i gad o , a l g u mas i n struções da m e m o r i a
permanente são passadas para u m pedaço da merr. ó r i a
não permanente .
Se essas i n struções forem a pagadas p o r u m co­
mando P O K E , o co m p u tador pode parar de f u n c i o ­
nar co rreta mente e terá que se r des l igado e l i gado
n ova me n te . Com isso , todos os prog ra mas q u e esta ­
va m em sua memória de traba l h o (ou seja , os p rogra ­
m a s co m q u e o operador estava t ra ba l h a n d o ) serão
a pagados, o q u e pode ser u m g rande transto r n o .
i: necessá r i o que o l e i to r ver i f i q u e , n o m a n u a l d o seu
com pu tador, q u a i s os endereços de memória d ispon íve i s para
o seu traba l h o e somente n essas memórias deve ser esc r i to
a l g u m n ú mero , a través de PO K E .

E x . 2 : 1 0 PO K E 5347,65
20 P R I NT CH R $ (P E E K (5347))
R UN
A

OK

Na l i nha 1 0 mandamos a rmazenar o n ú mero 65 n o en­


dereço 5347 . Na l i nha segu i n te mandamos i mp ri m i r o s ím ­
bo l o ASC I 1 d o q u e está na memoria 5347 (veja o P E E K
(5347) ) . Esse s ímbolo é a letra A .
1 99
U ma a p l i cação i n teressan te do co mando PO K E é o uso
da memória de v ídeo para co l oca r g ráfi cos, jogos e outras
co isas d i reta mente em certos pon tos da te l a .
Quando u m com p u tador tem memória d e v ídeo mapea­
do (o l e i to r deve verifica r se é o caso do seu co m p u tado r ) ,
isso sign ifica que ex iste u m certo trecho de memória onde
cada endereço corresponde a u ma posi ção bem def i n ida na
té l a .
Va mos exem p l i f i ca r com o m i croco m p u tador do autor :
Os endereços de 5338 1 até 54 1 4 1 referem -se a pontos
be m determ i n ados na tel a . O ponto m a i s ac i ma , à esq uerda ,
te m , na me m ó r i a , o endereço 5338 1 ; o ponto m a i s a ba i x o ,
à d i re i ta , te m o endereço 54 1 4 1 .
Assi m , tudo o que est iver a rmazen ado nesse pedaço de
memória esta rá , automat i camente , col ocado n a tel a .

E x . 3: (em modo d i reto )


PO K E 53423 ,88
(< R E T U R N > )

a te l a f i ca rá assi m :

.- 2� l i n h a
X

l
1 � pos i ção

200
Aparecerá a l etra X n a 1 O� posi ção da seg u n da 1 i n h a da
tela (correspondente ao endereço esco l h i do ) . O va l o r 88 é o
cód igo ASC I I da l etra X .
Além d i sso , o coma ndo que nós escreve m o s a i nda
estará na te la :

P O K E 5 342 3 ,8 8

OK

U sando o ma n u a l d o seu com p u ta do r o l e i to r poderá


d e sc o b r i r mu i tos u sos para a i nstrução P O K E , espec i a l m e n te
pa ra o caso de j ogos de v ldeo .

1 1 .3 - USR ( X )

Essa fu nção per m i te traba l h a r com su b-rot i n as e m l i n ­


gu agem de máq u i na , dentro d e u m p rogra m a e m B AS I C .
Ta m bém nesse caso , a mane i ra de u sa r essa f u n ção va r i a
co nforme a versã o d o B AS I C u sado .
De manei ra gera l q u a n d o a fu nção U S R é c o l ocada n o
m e i o d e u m p rogra m a em B AS I C , o p rog ra ma passa a fu n ­
c i onar e m l i nguage m d e m á q u i n a , seg u n d o u m p rogra m a p re­
p a rado pe l o opera d o r e cuja p r i m e i ra i n strução tem o en de­
reço col ocado pelo mesmo e m um ce rto endereço f i x o , q u e
d e pende do com p u ta d o r u sa d o .
Su pon hamos q u e os endereços onde d eve m se r a rmaze­
n a d os os Bytes, que i n d icam o endereço onde co meça a ro­
t i n a em l i nguagem de máqu i n a , sej a m 574 e 57 5 . Le m b re-se
de q u e os endereços podem ir de 0 a 65536 , o q u e si g n i fi ca
que dois Bytes são , e m gera l , necessá r i os para defi n i r u m e n ­
d e reço . Ass i m u m endereço co m p l eto ocu pa d o i s endereços
d e memó r i a . Em outras p a l avras, é necessá r i o usar d o i s ende­
reços consecu tivos para escrever o n ú mero de um endereço .
Se a sub-roti n a em l i n gu agem de m áq u i n a co meça n o
e n dereço 800 (deci m a l ) , esse endereço tem c; u e ser tra n sfor­
mado em dois Bytes, de o i to b i ts .
O ra , o n ú mero 800, e m forma b i n á r i a , te m o segu i n te
aspecto :

000000 1 1 00 1 00000
20 1
Se d i v i d i rmos esse n ú mero b i nário em quatro g ru pos de
4 b i ts, te remos o seg u i n te :

0000 00 1 1 00 1 0 0000
Byte Al to Byte Ba i x o

Cada grupo d e 4 b i ts pode se r transfo rmado em u m


nú mero em notação hexadec i ma l .

3 2

Assi m , o endereço 800 (dec i mal ) é equ iva len te a 0320


hexadeci m a l , co nst i tu Id o de d o i s Bytes : a l to = 03 e ba i x o =
20 .

Assi m , deve mos co l oca r n o endereço 574 o Byte Ba i x o


(20 ) e , em 575 o Byte A l to (03 ; .
Depen den do do t i po de B AS I C usado, a i n stru ção

X = U SR ( N )

faz co m que seja chamada a su b-roti n a e m l i n g u age m de


máq u i n a que co meça , nesse exem p l o , no en dereço 800 ( dec i ­
ma l ) ou 032() ( hexadec i m a l . O parâ metro N será transfe r i d o
pa ra a su b-rot i n a em l i nguagem de máq u i n a e o va l o r de X
se rá transferido para o p rogram a e m BAS I C , após o térm i n o
das operações da su b-roti n a . A su b-rot i n a te m que ter m i n a r
co m u ma i nstru ção em l i n g u agem d e máqu i n a que sign i f i q u e
" rP t'.) rno d e su b-rot i na " , para o p rograma poder vo l ta r para
B AS I C .

Ex . 4 : 1 0 A=1 6
20 X=USR ( 1 6)
30 C=A+X :?C

Vamos su por que a su b-roti na em l i nguagem de máqu i ­


n a faça o segu i n te :
Ad iciona a o val o r d o parâmetro u m valor igual a 1 6
(deci mal ) e devolve o val o r de X = 32. Teremos, então :
RUN
48

OK
202
H averia m u i tas ou tras co i sas a comentar so bre a f u n ção
U S R , mas o l e i tor deverá consu l tar o m a n u a l do BAS I C d o
s e u próprio computador para verif icar a s pecu l i a r i dades d e
sua uti l i zação n o seu caso part i cu l a r .
R esta menc i o n a r , apenas, que nem se m p re é necessá r i o
passa r u m nú mero para a su b-rot i n a em l i n gu agem de m á ­
q u i n a e receber u m va l o r d e vo l ta . Às vezes a su b-ro t i n a
executa a l g u ma fu nção d o t i p o " l i m pa r a te l a " , p o r exem­
p l o , que não p rec isa dos va l o res de N e X .
E m ou tros casos é necessá rio passa r a l g u m parâ metro
pa ra a su b-rot i n a de l i nguagem de máq u i na , porém sem re­
ce ber n en h u m va l o r de vo l ta , i sto é, o va l o r N será passado
p a ra a sub-roti n a , mas não h averá nen h u m va l o r de X a
receber (ex : co l ocação de gráfi cos na te l a ) .

1 1 .4 - E LS E

Essa i n st ru ção t ra ba l h a sem p re em conj u n to co m 1 F/


T H E N , sendo u m com p le mento da mesm a .
Já v i m os q u e 1 F /TH E N faz u ma com pa ração e u ma es­
c o l ha ( S E acontecer ta l co isa E NTÃO faça i sso ) .
H á casos, poré m , em q u e há m a i s de u ma possi b i l idade,
o u sej a , uma s i m p les comparação e esco l h a não são su f i c ien­
tes. Nesse caso será usada a i nstrução co m p l e menta r E LSE
( q u e sign i fi ca "caso contrá r i o " ) . f i ca n d o a ex pressão com p le­
ta com o segu i n te formato :
1 F (ce rta co isa aco n tece r ) T H E N ( faça i sto ) E LSE
(caso contrá r i o faça aqu i l o )
Vejamos a lguns exem p l os :

E x . 5 : 1 0 I NPUT"ESC R EVA O N O M E JOSÉ" ;A$


20 I F A$="JOSÉ" TH E N ?"VOC� E SC R E V E U O N O M E
C E RTO : JOSÉ "E LSE?"VOC� N Ã O E SC R E V E U
JOSÉ, E SC R E V E U ";AS
30 GOTO 1 0
R UN
ESC R EV A O N O M E J OSE? JOSÉ
v o e � ESC R EV EU o N OM E C E RTO : JO SE
ESC R EV A O N OM E J OSE? P E D RO
voe� N Ã O ESC R EV EU J O S E , ESC R EV EU P E D R O
203
ESC R EV A O N OM E J O St? (< R E T U R N > )

OK

Na l i n ha 20 o p rograma comparou o q u e fo i tec l ad o


co m a pal avra J OS É ; s e a pa l avra tec lada fo i J O S É , a con ­
d i ção 1 F fo i sat isfe i ta e se rá i m p ressa a frase correspondente .
O p rogra ma p u l a para a p róx i ma l i n h a , que m a n dava vo l ta r
a o i n íc i o .
Se a pal avra teclada não fo i J O S É , a cond ição E LS E é
satisfei ta e se rá i m p ressa a frase correspondente . O p rogra m a
pu l a para a p róx i ma l i n h� e vo l ta para o i n íc i o .
O i m porta n te é nota r q u e , nesse caso , a s d u as con d i ­
ções contra d i tó rias fora m escritas na mesma l i n h a e o p ro­
grama p rossegu i u para a p róx i ma l i n h a em a m bos os casos.
Não sendo usada a i nstrução E LSE, o progra m a ter i a q u e
se r escrito da segu i n te forma :

E x . 6 : 1 0 I N PUT "ESC R EVA O N O M E JOSÉ " ; A $


2 0 I F A $= "JOSÉ" T H E N ? "Voei: ESC R E­
V E U O N O M E C E RTO : JOSÉ " : GOTO 1 0
30 P R I NT "Voei: NÃO ESC R E V E U JOSÉ,
ESC R E V E U "; A $ : G OTO 1 0

Ago ra a i n strução G OTO 1 0 teve que ser escrita duas


vezes : u ma para cada con d i ção ( satisfe i ta ou não sat i sfe i ta ) .
No exem p l o ac i ma a co i sa a i n da é re l ativa mente s i m ­
p l es. Supon hamos , agora , q u e queremos enviar o p rogra m a
para u ma certa su b-rot i n a , no caso de 1 F ser sat i sfe i to e
para outra su b-rot i n a , n o caso de não ser sat i sfe i to . Mas
ql:leremos que a vo l ta ( R E T U R N ) de a m bas as su b-rot i nas
seja pa ra a mesma l i n h a ( o u seja , e m a m bos os casos, o p ro­
gra ma con t i n uará a part i r d o mesmo l ugar) .

E x . 7 : 1 0 I N PUT "SU B- R OT I N A 1 ou 2 " ; A


20 I F A=1 T H E N GOSU B 50 E LSE G OSUB 1 00

30 (continuação do programa)

204
Na l i n h a 20, se for esco l h i d o A = 1 , o progra ma i rá
pa ra a su b-rot i n a 50 e vol ta rá para a l i n ha 30 . Se A n ão fo r
i g u a l a 1 o programa i rá pa ra a su b-rot i n a 1 00 e v o l ta rá
ta m bém para a l i n h a 30, onde o prog ra ma con t i n ua .
Pa ra fazer a mesma co isa sem a i n strução E LS E , te r fa­
mos que prepara r o p rogra ma da seg u i n te mane i ra :

10 I N PUT " SUB- R OT I N A 1 O U 2"; A


20 I F A=1 TH E N GOSUB 50
30 I F A=1 T H E N G OTO 45
40 G OSUB 1 00
45 (continuação do programa)

Verifica-se q u e o progra m a f i co u m a i s com p l i cado : ago­


ra é necessá ri o , na l i n h a 30 , fazer n ova co mparação de A = 1
e, depois, passa r para a l i n h a 45. I sto porq u e , q u a n d o o
p rograma vo l ta da su b-rot i n a 50, e l e va i para a l i n ha 30 e
nós não q uere m os co l oca r a i n strução G O S U B H J(J n essa
l i n ha , pois isso fa ria co m q u e a su b-rot i na 1 00 fosse ex ecu ­
ta d a se m p re, l ogo após a su b-roti na 50 ( o que não é o dese­
j o do programador ) . Por ou tro l a d o , se nós escrevermos ape­
nas G OTO 4 5 , q u a n d o A não for i g u a l a 1 , o p rograma pas­
sa rá se m p re para a l i n ha 30 e, com essa i n strução , não i ri a
n u n ca para a su b-rot i n a 1 00 . Po r i sso , col oca m os nova com­
pa ração 1 F A= 1 . Quando a con d i ção d a l i n h a 20 não é sat i s­
fe i ta , o progra ma passa para a l i n ha 30 onde testa outra vez
( e , obvi a mente, não é satisfe i ta ) , passa n d o para a l i n h a 40,
o n d e recebe a ordem de ir para a su b-ro t i n a 1 00 .
E m a l g u ns casos o u so d a i n strução comp lementa r
E LS E faci l i ta a i n da mais a l e i t u ra d os p rog ra mas, co m o o
l e i to r apren derá por ex periência p ró p r i a .

1 1 .5 - C LS

E m a l g u mas versões de B AS I C ex i ste a i n strução C LS ,


q u e tem a fu nção de l i mpar a tel a . O leitor s e recorda d e
e x e m p l os ante r i o res em q u e t ivemos de u sa r d o recu rso :

F O R N= 1 TO 32 : ? : N EXT

p a ra l i m pa r a te l a .

205
Usa n d o essa i n strução t u d o se resu me a pe nas n u ma
p a l avra .

E x . 8 : 1 0- - - - -
20 C LS
30 - - -- -

N a l i n h a 2r/J a te l a se rá apaga d a .
Essa i n st r u ção ta m bé m pode se r col oca d a , c o m o u t ras
i n stru ções, n a mesma l i n h a .

1 1 .6 - R A N D O M I Z E o u R A N DOM

Em ce rtas ve rsões de BAS I C a f u n ção R N D ( X ) . q u e


já mostra mos em cap ítu l o a n te r i o r , a p rese n ta se m p re o mes­
mo va l o r ou conj u n to de va l o res, mesmo q u a n d o e l a ·é cha­
mada vá rias vezes segu idas . N a pri me i ra passa d a , a f u n ção
R N D esco l h e os n ú meros a l eató r i os e, depo i s , usa rá os mes­
mos n ú meros, nas p róx i mas chamadas.
N essas versões d o B AS I C ex iste a i n strução R A N DO M l ­
Z E , q u e i n d i ca ao p rogra ma q u e cad a passad a pe l a f u n ção
R N D deve prod u z i r u m n ovo n ú mero a l eató r i o .

Ex. 9 : (sem RAN DOM I Z E )


1 0 ? " V O U ESCO L H E R U M N Ú M E R O "
2 0 N= I N T ( R N D ( l ) * 1 0+ 1 )
30 ? N ; : G OTO 20
RUN
V O U E SC O L H E R U M N Ú M E R O
8 8 8 8 8 8 - - - - - - ­

(< CT R L > C )
B R E A K I N L I N E 20

OK

O " l oo p " con t ín u o teve q u e se r i n te rro m p i d o com o


uso de C O N T R O L C , co mo já v i m os e m cap ítu l o a n te r i o r .
M a s o i m porta n te é nota r q u e a f u n ção R N D esco l heu u m
n ú mero a l eató r i o e n t re 1 e 1 í/J, n a p r i m e i ra passada e , q u a n ­
d o o progra m a m a n d o u esco l her ou tro n ú mero, o mesmo
nú mero 8 fo i repet i d o .

206
Agora , usa n d o R A N D O M I Z E , i sso não acon tece rá :

E x . 1 0 : 1 0 R A N DO M I Z E
2 0 N = I N T ( R N D ( 1 ) * 1 0+ 1 )
30 ? "VOU ESCO L H E R U M N Ú M E R O"
40 ? N :G OTO 20
R UN
V O U E SC O L H E R U M N Ú M E R O
4
V O U E SC O L H E R U M N Ú M E R O
6
V O U ESC O L H E R U M N Ú M E R O
8
(< C T R L > C )
B R E A K I N L I N E 40

OK

Dessa vez , cada passada pela l i n h a 2(} p rod u z i u u m n ú ­


m e ro d i ferente .

1 1 .7 - SET ( P L OT)/ R E S E T

E ssa i n strução ex iste de manei ras d i feren tes, conforme a


ve rsão de B AS I C usada . N o caso m a i s co m u m , a i nstru ção
m a n da co l oca r deter m i n a d o ca racte r ou dese n h o em ponto
be m espec i f i ca d o da te l a .
A posição do p o n to é defi n i d a p o r d u as va riáve i s , so b
a forma de coordenadas ca rtes i a n as .

SET ( X , Y )

Os va l o res que as va r i áve i s X e Y podem assu m i r de­


pe n dem d o m i croco m p u tador u sa d o e d o seu sistema d e ma­
peamento de v ídeo e se l eção de caracteres. T i p i camente , X
se n d o a coordenada h o r i z o n ta l , poderá assu m i r va l o res de 0
a 1 27 (ou menos) , correspondendo a 1 28 posi ções por l i n h a
d e v ídeo ; a va ri áve l Y pode i r de 0 a té 32, em g ra n de pa rte
d o s casos, co rrespon dendo a i g u a l n ú mero de l i n has na te l a .
Quando é dada u ma i n strução

SET ( X , Y )

207
u m ponto, na coorde nada X , Y será aceso , na te l a .
A i nst ru ção R E S E T ( X , Y ) manda apaga r o ponto n a
coordenada X , Y .

1 1 .8 - D E L ETE

E ssa i n strução perm i te a l tera r p rogramas mandando apa­


ga r u ma l i n ha o u co n j u nto de l i n has de u rn prog rama a rma­
ze nado na memória do co mputado r .

Ex. 1 1 : (em modo d i reto )


D E L E T E 1 00
(será cance l ada a 1 i n h a 1 00 d o prog rama )
Ex. 1 2: ( e m modo d i reto )
D E L E T E 50 - 1 00
( serão apagadas as l i n has de 50 a 1 00 )
Ex. 1 3: ( modo d i reto )
D E L E T E - 50
(serão apagadas todas as l i n h as até a do n ú mero 50 )
Ex . 1 4 : ( m odo d i reto )
D E L E T E 60 -
(a paga rá as l i n h as do n ú mero 60 até o f i m d o p rogra­
ma)
-�

É natu ra l q u e esse comando sej a u sado se m p re em mo­


do d i reto , pois não há sen t i d o em co l oca r dentro de u m
programa u ma i n strução q u e m a n da a pagar u ma o u m a i s
l i n h as do mesmo p rogra m a .

1 1 .9 - P R I NT U S I N G

É u ma i n strução q u e perm i te a formatação d e u m va l o r


a ser i m p resso .
A ma n e i ra m a i s u sada, nas versões de B AS I C q u e tem a
i n strução P R I N T U S I N G , é a fo rmatação de n ú meros, i nd i­
ca ndo q u a n tas casas tem a pa rte i n te i ra e a dec i m a l ou sepa­
ra ndo os m i l hares por me i o de v írgu ías ( i sso é ú t i l para i m ­
p r i m i r va l o res monetá r i os) .

208
A manei ra de i n formar a quanti dade de casas i nte i ras e
deci ma is é, normal mente, a segu i n te :

P R I NT US I N G "##. ##" ;A

em que os s i n a i s # co rrespondem às casas i n te i ras e dec i ­


m a i s , separadas pe l o p o n t o . A é o n ú mero ou var i áve l n u ­
mérica a se r i m p ressa .

E x . 1 5 : 5 F O R N= 1 TO 5: R EA D A ( N ) : N E XT
1 0 F O R N= 1 TO 5
20 P R I NT USI N G "###. ###" ; A ( N ) :N E XT
30 DATA 1 38:65, 1 :38, . 1 3865, 1 386 .5, 1 3865
R UN
1 38 .650
1 .380
. 1 39 ( h ouve a rredon damento )
1 38 6 . 500 (*)
1 38 65 .000 (*)

OK

Se rão obedec i d os, na i m p re!:isão , o s tama n h os dos ca m­


pos i n te i ro e deci m a l i n d i cados na l i n h a 20 , exceto q ua n d o
o n ú mero t e m mais casas i n te i ras do que a formatação i n d i ­
ca . Nos casos ma rcados c o m asterisco, dependendo da ver­
são de BAS I C usada , poderá aparecer u ma mensagem ou
si n a l de erro, porq ue col ocamos mais a l ga r i smos i n te i ros do
q u e o P R I N T U S I N G ped e .
N ote-se o segu i n te : o s ím bo l o "## . ##" é u m ST A 1 N G
e pode receber o nome de u ma variáve l d e ST R I N G .
O exem p l o ac i ma poderia se r escrito da segu i n te forma :

0 A $ ="###. ###" (colocamos a linha 0)


20 P R I NT USI N G A $ ; A ( N ) : N E XT
Ou tros ti pos de formatação :
- Pa ra ST R I N G
P R I N T USI N G "% %"
Os sinais % separa m u ma certa quanti dade de espaços,
o que sign i f i ca q u e esta mos mandando i m pri m i r u m
ST A 1 N G com a q u e l a q u a n t i dade d e espaços + 2 (esses 2 a d i ­
c i onais co rrespondem a o s s ím b o l os % ) .

209
E x . 1 6 : 1 0 A$ = ''% %" (4 espaços)
20 P R I NT USI N G A $ ;"ABCD E F G"
RUN
A BC D E F

OK

A$ co rrespon de a 4 espaços mais dois s i n a i s % . Assi m ,


fo ra m i m pressos 6 caracte res d o ST R I N G " A B C D E F G " .
- Com cifrão

E x . 1 7 : P R I NT USI N G " $ $ ##. ##" ; 33.474


(< R ET U R N> )
$ 33 .47

OK

U m d u p l o cifrão dentro do ST R I N G faz aparecer u m


ci frão n a i m p ressão .
- Com n otação ex ponenci a l

E x . . 1 8 : P R I N T USI N G " ##. ##[ [ [ [ ";1 5. 1 8


(< R ET U R N > )
1 .5 1 8 E� 1

OK

E x istem , possive l men te , m u i tas outras formas de u sa r


i n strução P R 1 N T U S I N G . O l e i to r deve consu l ta r o m a n u a l
do BAS I C do seu co m p u tador para ver q u a i s as faci l i dades
qi_ie o mesmo apresenta para essa i n strução ( se ex i st i r ) .

1 1 .1 0 - OP E R A Ç Õ E S LÓG I C AS

Já vi mos a n teriormente que as operações l óg i cas A N O ,


O R e N OT podem ser u sadas em re lação à i nst ru ção 1 F /
TH E N .
Ago ra m ost ra remos q u e esses operadores podem se r usa­
dos para a man i p u l ação de b i ts .

21 0
Quando co m paramos dois n ú meros, por mei o dos ope­
radores A f\1 0 , O R e N OT, esses n ú meros são convert i d os em
n ú meros b i n á r i os , n a notação " co m p l e mento de d o i s " .
A n otação "comp lemento de 2" e m 1 6 b i ts s i g n i f i ca
q u e o maior n ú mero p osi tivo que pode ser escrito é 32767 ,
q u e te m a forma

01 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Os n ú meros negativos, na fo rma "co m p l emento d e 2" ,


são escri tos c o m 1 n a 1 6� casa ( ma i s à esq u erda ) e c o m os
va l o res dos 1 e 0 se posi c i o n a n d o da seg u i n te mane i ra :
A forma b i ná r i a norma l dos n ú me ros posi tivos é si me­
t r i z ad a , i sto é, cada 0 é transformado e m 1 e v i ce-ve rsa e ao
resu l tado é so mado o va l o r 1 .
Ass i m ,
- 2 e q u iva l e a

1 1 1 1 1 1 1 1 1 1 1 1 1 1 10

(2 é i g u a l a 00000000000000 1 0, seu rec íp roco b i t a b i t ,


ta m bé m chamado com p l emento de 1 , é equ iva lente a
1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 e, so mando 1 a esse n ú me ro , encontra­
m os o co mp lemento de 2, negat ivo, m ostrado aci ma ) .
Qua nto usa mos os operadores A N O , O R e N OT, essas
ope rações são efetuadas nos b its de mesma l o ca l i zação cor­
resporideiltes aos n ú me ros comparados en tre s i .

Ex . 1 9 : 1 0 A=1 6 : B = 7
20 C= A O R B
30 P R I NT C
RUN
23

OK

E x p l i cação :
A = 1 6 equ iva l e a 1 0000
B = 7 equ iva l e a 00 1 1 1
A O R B equ iva l e a 1 01 1 1

ou seja , e = 23
21 1
E x . 20 : 1 0 A = - 1 : B 12=

20 C = A A N D B
30 ? e
RUN
12

O l<r

E x p l i cação :
A= - 1 equ iva l e a 1111111111111111
A= 1 2 equ iva l e a (J(}(J(J(J<J(J<J(J<J(JCJ 1 1 (J<J
A A N O B equ iva l e a 000000000000 1 1 00

ou sej a , e = 1 2

Ex. 21 : 10 A = 8 : B = 7
20 C = A AN D B
30 P R I NT C
RUN
0

OK

E x p l i cação :
A= 8 eq u iva l e a 1 000
B= 4 eq u iva l e a 0 1 00
A A N D B equ iva l e 0000

ou sej a , e = 0

O o perador N OT , usado na forma b i t a b i t , i nverte os


b i ts de u m n ú mero , d a nd o o co m p le mento de 1 desse n ú ­
mero e m b i ná r i o de 1 6 b i ts .
Dessa forma :

N OT 1 = 2 -

1 eq u iva l e a 000000000000000 1
N OT 1 equ iva l e a 1 1 1 1 1 1 1 1 1 1 1 1 1 1 10

q u e é i g u a l a --2 (em · co m p l e mento de 2 )


D e forma gera l , N OT N = - ( N+ 1 )

21 2
E x . 22 : N OT - 1 eq u iva l e a 0
N OT 0 equ iva l e a - 1
N OT 3 eq u iva l e a -4

Co m este cap ítu l o encerra mos o q u e se poderia deno­


m i na r B AS I C f u n d a menta l . Há m u i tas o u t ras i n struções, var i ­
a n d o conforme a versão d o BAS I C , m a s todas e l as raz oave l ­
mente compat íve is entre si .
O l e itor deverá p rocu ra r a me l h o r forma de com pati b i l i ­
z a r as ex p l icações dadas n os cap ítu l os a n te r i o res e neste
co m o conj u n to de i nst ru ções da l i nguagem B AS I C q u e roda
no com putador com que est iver t ra ba l h a n d o .

21 3
Capítulo XI I
M ENSAGENS DE E R RO

1 2.1 - Conforme já fo i . me n c i onado a n te r i o rmente , o i n te r-


p retador B AS I C " i m p ri me" u ma mensagem de e rro
toda a vez que u ma i n strução ou co mando i l ega l o u i n i n te-
1 ig (ve l é i n trod u z i d o , seja pe l o tec lado, seja através de u m
me i o externo ( p . ex . , f i ta cassete ) .
Quando q u a l quer coisa é escrita , fo ra de u ma l i n h a n u ­
merada e é ape rtada a tecl a < R E T U R N> , isto é i n terpreta­
d o como u m com a n d o , em modo d i reto . Se o com p u tador
não entender ou não p u de r executa r o coma n d o e m i t i rá
i med iatamente u ma mensagem de erro .
Quando u m erro é comet i d o dentro de u ma l i n h a n u ­
merada, o u seja , dentro de u m p rogra ma , o com p u tador não
faz a cr ít ica i mediata mente . O e rro só será detectad o q u a n ­
do o p rograma fo r execu ta d o , i sto é, depo i s do co m a n d o
RUN.
O formato gera l d a mensagem de erro pode va r i a r de
co m p u tador para com pu ta d o r e depende do ti po de B AS I C
usado.
Genericamente , a mensagem de erro tem a fo rma

XX E R R O R I N YY

em q u e X X é u m cód i g o (em gera l de d uas letras) q u e i n d ica


qua l o t i po de erro e YY é o n ú mero da l i n ha onde se en­
contra o erro . No caso de co mando d i reto , não apa rece o
n ú mero da l i nha :
XX E R R O R
Va mos i n d i ca r , a segu i r , os t i pos de erro m a i s u su a l ­
mente encontrados n os p rogra mas em B AS I C , mencionando
os seu s cód igos (que, com o já d issemos, podem va r i a r con ­
fo rme a máqu i na usada ) .

21 5
1 2 .2 - D D - ( Double D i mension )

Essa i n d i cação de erro oco rre quando u ma va ri áve l i n ­


dexada é d i mensionada ma i s d e u ma vez ; i sso sign i f i ca q u e a
i n strução D I M , pa ra a mesma va r i áve l , é l i da m a i s de u ma
vez no mesmo progra ma ou que há m a i s de u ma i nstrução
D I M para a mesma va r i áve l .

E x . 1 : D O E R R O R I N 50
(é i n d i cada a l i n ha em que é l i da a i n.:;tru ção
D I M adicional ) .

1 2 .3 - F C - ( F u nct ion Ca l l E rro r)

Sign i f i ca que o parâmetro assoc iado a u ma fu nção fi­


cou fo ra . d os l i m i tes a d m i ss íve i s para o B AS I C ou que o
parâmetro é i n compat íve l com a fu nção a se r executada .

E x . 2 : ? SQ R (- 1 ) ( m odo d i reto )
(< R E T U R N > )
FC ERROR

OK
(o programa não pode co m p u ta r ra i z q u a d rada
de n ú mero negativo )

E x . 3 : 1 0 A$ = "AAAAAAA"
20 ? M I D $ ( A $ ,0,2 )
RUN
F C E R R O R I N 20

OK
(o progra ma não ace i to u o parâmetro 0 , n a fu n ­
ção M I O $ ) .

1 2 .4 - I D - ( l l lega l D i rect)

E sse erro é i n d i cado q u a n d o se ten ta entrar e m modo


d i reto u ma i n strução que não é perm i t i d a nesse modo.

21 6
E x . 4 : I N PUT A (em modo d i reto )
{< R E T U R N> )
10 E R R O R

OK
( o B AS I C n ão ace i ta 1 N P U T e m modo d i reto )

1 2 .5 - N F - { N EXT Without F O R )

S i g n i f i ca q ue o p rograma encontrou u ma i n strução


N E X T se m te r h av i d o a n tes u m F O R co rresp o n dente.

E x . 5: 1 0 R EAD A ( K )
2 0 N EXT K
30 D ATA 1 ,2 ,3,4,5
RUN
N F E R R O R I N 20

OK
(foi esq u ec i d o o F O R correspondente ao N E XT
q u e apa rece n a l i n ha 20 )

1 2 .6 - 0 0 - {Out of Data )

Sign i f i ca q u e em u ma i nstrução R E AD/DATA o p rogra­


ma encontrou mais i nstru ções R E AD d o que dados d i spon í­
ve i s em DATA.

E x . 6: 10 R EAD A(K)
20 P R I NT A(K): K = K+ 1
30 G OTO 10
40 DATA 1 ,2,3 ,4,5
RUN
1
2
3
4
5
00 ERROR I N 1 0

OK
21 7
( o p rogra ma fu ncionou até acabare m os dados;
n o próx i m o retorn o para l i n ha 1 0 ocorreu o
erro )

1 2 .7 - OM - (Out of Memory )

Sign i fica que o p rogra ma fo i l ongo dem a i s o u contém


m u i tos " l oops" ( F O R /N E XT , G O S U B , etc . ) ou va r i ávei s de­
mais (espec i a l mente as d u p l a mente i n dexadas) .
Esse erro pode oco rrer n o meio da execução .de u m
progra m a , pois m u i tos p rogra mas vão gerando e armazenan­
do dados d u ra n te sua execu ção . N o momento em q u e aca­
bar o espaço de memória se rá e m i t i da a mensage m de erro .

1 2 .8 - OV - ( Overflow)

I n trodução de um parâmetro ou resu l tado de um cá l ­


cu l o sendo i g u a l a u m n ú mero g ra n de dema is para o B AS I C .
( Esse va l o r pode va r i a r con forme a versão da l i ng uagem
usada ) .

1 2 .9 - SN - (Syntax E rror)

E r ro de si n taxe, sign i fi ca q u e u ma i n strução fo i mal te­


c l a d a , co m erro de ortografia ou que o BAS I C não enten­
deu a i n stru ção ou q u a l quer ou tro dado fornec i d o .

Ex. 7: A (< R E T U R N > )


SN ERROR
(en tra m os com a l etra A e tecl a mos R E T U R N ;
o B AS I C não enten deu do que se trata )

E x . 8 : 1 0 I N PUT "TECLE U MA LETRA ATÉ J"; A$


20 I F A $ "J" T H E N E N D
30 ? "TECLOU A L ET R A" ; A$
RUN
S N E R R O R I N 20

OK

21 8
( fa l tou ,.u m si n a l entre A $ e "J " , i n d i ca n do a
des i g u a l dade)

1 2 . 1 0 - R G - ( R ET U R N Without G OS U B )

S i gn i fi ca q u e o programa encontrou u ma i n strução de


R ET U R N sem q u e , antes, t i vesse h av i d o um env i o para
su b-rot i na ( G O S U B ) . O p rograma não sabe para onde reto r­
nar, já que deve r i a reto rnar para a l i n ha seg u i n te ao G O S U B .

1 2.1 1 - U S - ( U n defi ned Statement)

É u ma i n strução não co m p letamente def i n i d a . Por


e x em p l o , manda mos o p rogra m a p u l a r para u ma l i n h a cujo
n ú mero não ex i ste .

E x . 9 : 1 0 G OTO 30
20 E N D
RUN
US E R R O R IN 10 . .
(a l i n h a 1 0 m a n da p u l a r para a l i n h a 30, q u e
n ã o ex iste )

1 2.12 - /0 ( D ivisão por Zero )

Quando u m cá l c u l o q u a l q uer con d u z a u ma d i v isão por


zero , essa mensagem é e m i t i d a .

E x . 1 0 : 1 0 F O R N = 1 TO 5
20 P R I NT 5/( N -3 ) : N EXT
RUN
-2 .5
-5
/0 E R R O R I N 20
(o p rogra ma fo i sen d o executado até que h ou ve
a tentativa de d iv i d i r 5 por zero , n o caso de
N = 3)

21 9
1 2 . 1 3 - C N - (Continue Errors) �:..
�·

Esse cód igo apa rece quando se ten ta u sa r o co mando


CONT para dar p rosseg u i mento em um p rograma q u e fo i i n ­
te rro m p i d o ( por exem p l o , com a i n strução STO P ) e q u e não
pode ser con t i n u ad o .
Esse caso ppde ocorrer se d u ra n te a i n terru pção o p ro­
gºra ma fo i a l te ra d o , de modo que não p ossa have r p rossegu i ­
mento . H á ou tros casos em q u e não se pode conti n uar o
p rog ra m a , co m o , por exem p l o , se a i n terru pção fo i devida a
u m erro .

1 2 . 1 4 - LS - ( Long Stri ng)

Esse e rro apa rece quando se ten ta p rocessa r um


ST R 1 N G m a i o r q u e 255 ca racte res.

1 2 . 1 5 - OS - ( Out of String Space)

t: u m cód i go q u e i n d i ca q u e o espaço rese rvado para


ST R 1 N G S n a m e m ó r i a fo i ex ced i d o . I sso ocorre q u a n d o se
i n trod u z ou p rocessa u ma q u a n t i dade m u ito grande de
ST R 1 N G S, os quais ocu pam m u i to espaço de memóri a .

1 2 . 1 6 - S T - (String Temporaries)

Esse t i p o de erro ocorre q u a n d o se ten ta co l oca r u ma


fórm u l a m u i to comp l i cada envo lve n d o -::i T R 1 N G S ; nesses ca­
sos é prefer íve l tentar su bdivi d i r a e x p ressão em ou tras me­
nos co m p l exas.

1 2 . 1 7 - TM - (Type M ismatch )

Esse cód igo é p rod u z i d o q u a n d o há i n compat i b i l i dade


de va r i áveis, i sto é, q u an d o se tenta dar um va l o r n u mérico
a um ST R I N G o u associa r um ST R I N G a u ma variáve l n u­
mér i ca .

220
E x . 1 1 : 1 0 A=1 8: 8 $= ST R $ (2)
20 ? A; 8$
30 e = A+ B $ : ? e
R UN
18 2
TM E R R O R I N 30
OK
( q u a n d o a l i n h a 30 ten tou so m a r u ma va ri áve l
n u mérica com u m ST R 1 N G ocorreu o erro)

1 2 . 1 8 - UF - ( U ndefi ned F u nction )

Esse t i po de erro ocorre q u a n d o n ão se def i ne correta­


mente u ma fu nção ; por exem p l o , q u a n d o não são fo rneci dos
todos os parâ metros necessá r i os.

Ex. 1 2 : 10 DEF F N A ( X ) = F N B ( X ) + 5
20 ? F N A( 1 )
RUN
U F E R R O R I N 20
( q u a n d o o progra ma te ntou i m p ri m i r o va l o r de
F N A ( 1 ) desco b r i u que o va l o r de F N B ( X ) não
havia s i d o defin i d o )

1 2 . 1 9 - BS - (Su bscript O u t o f Range )

Esse cód igo i n d i ca que u ma va ri áve l excedeu a q u a n t i ­


dade de ín d i ces d i mensionada a priori o u q u e u ma va r i áve l
d e índ i ces s i m p les excedeu o ín d i ce 1 0 , sem a i n d i cação de
D I M.

Ex . 1 3 : 1 0 D I M A( 1 3)
20 F O R N = 1 TO 20 : R EA D A ( N )
3 0 ? A ( N ) ; : N E XT
40' DATA 1 , 2, 3, 4, 5, 6, - - - - - - - - - - - - 20
RUN
1 2 3 4 5 6 7
8 9 10 11 12 13
BS E R R O R 1 N 20
(depois de ler 1 3 va l o res o p rogra m a acusou er­
ro na l i n h a 20, pois não pod i a ler A ( 1 4 ) , já q u e
t i n h a s i d o esta be l ec i d o q u e D 1 M A ( 1 3 )
22 1
An tes de concl u i r , vamos re l e m b ra r ao l e i to r q u e as va­
rias ve rsões de BAS I C a p resentam cód i gos de erro às vezes
um pouco d i feren tes entre si . No enta n t o , não será d i f íc i l
assoc i a r as ex p l i cações ac i ma co m o caso part i cu l a r d o seu
co m p u tador.

TAB E LA D E E R R OS
(coloque na pri me i ra col u na os cód igos de seu computador)

CÓD I G O D E S C R I Ç Ã O

DD Va r i áve l d i mensi onada m a i s de u ma vez .


FC Pa râmetro não acei táve l para a fu nção .
ID C o m a n d o d i reto não ad m i t i d o .
NF N E X T se m F O R .
OD F i m de dados; m a i s R E AD d o que dados.
OM M e m ó r i a tota l mente ocu pada .
ov Pa râ metro ou resu l tado g ra n de dema i s .
SN E r ro de s i n taxe.
RG R E T U R N sem G O S U B .
us I n stru ção m a l defi n i d a .
/0 D iv i são por zero .
CN I m p oss íve l conti n ua r o p rog ra m a .
LS ST R I N G m a i o r q u e 2 5 5 ca racteres.
F o i exced i d o o espaço para ST R I N G na me-
os
mória.
ST F ó r m u l a de ST R I N G m u i t o co m p le x a .
Va r i áve is n u mér i cas e de ST R I N G i nco m pat í-
TM
ve is co m os dados.
UF F u n ção i n defi n i d a .
BS i'n d i ce ma i o r d o q u e a d i mensão dec l a rada .

222
APÊNDICE

V A R I AN T E S E COM P L E M E NTOS DAS


I N ST R U ÇÕ E S DO B AS I C

Nos cap ítu los deste l ivro , ta l como composto em sua


p r i meira ed ição , fora m expl icados d iversos comandos e i ns­
truções usual mente encontradas no BAS I C versão M I C R O­
SO F T.
Com o advento dos m icrocomputadores nacionais tor­
nou-se necessá rio acrescenta r ao texto u ma série de variantes
u suais das instruções exp l icadas anteriormente, assim como
co m p lementar o "vocabu l ário" do BAS I C com aqueles co­
m a ndos ou instruções q u e não haviam sido incl u ídas na pri­
m e i ra ed ição .

1 . Comandos de gravação e lei tura de fita cassete

Além da forma gera l expl i cada anteriormente, com o


u so dos coma ndos LOA D e SAV E , é m u ito usual a particu­
l a ri zação de u m comando excl usivo para fita cassete, na for­
m a C LOAD e CSAV E ; no caso mais gera l , �m diversos ti pos
de m icrocomputado res os comandos LOAD e SAV E pod e m ,
ta mbém , ser usados para gravação em d i sco, desde q u e a
máq u ina possua o sistema operacional adeq uado .
C LOAD- é a forma mais u su a l do comando de leitura
de fita cassete; em a l g u ns ti pos de BAS I C, o comando
C LOAD pode ser segu ido de um rótu lo, entre aspas, const i ­
tu ído de u m ou m a i s caracteres (em gera l letras do a l fabe­
to ) . Dessa forma, ao se dar o comando C LO A D " AB " ,
p o r exemplo, o ú n ico programa que será l ido da fita será
aq uele que tiver o t ít u l o " A B " .
U ma observação i mportante é que o comando C LO A D
provoca, n a maioria d o s casos, o apagamento d o s programas

223
já armazenados na memória do computador. Assi m , a menos
que se u sem artif ícios (que dependem do computador usa ­
do ) , não é poss ível l e r dois p rogra mas seguidos, de fita . O
segu ndo C LOAD apagará o pri me i ro programa l id o .
A mane i ra de se ver, no v ídeo, o processo de leitura
depende, usual mente , da velocidade de gravação .
N a maioria dos casos, em q u e a velocidade de gravação
é superior a 300 baud ( usua l mente 500, 1 200 ou até 2 000 ) ,
o prog rama l ido d a fita não aparece n o v ídeo; o q u e apare­
ce é um sinal que indica que está havendo leitu ra ; q ua ndo
ter m i n a a leitura o computador o i nd ica, através de R EADY
(ou O K ) .
Tam bém é comum encontra r-se m icrocomputadores em
que o controle remoto do gravador é contro lado por aque­
les, fazendo o motor do gravador a ndar, logo após o coman­
do C LO A D , e para r quando o p rograma está todo carregado .
CSAV E - é a mane i ra mais usual de comandar a grava­
ção de u m progra ma em fita cassete; em alguns tipos de
BAS I C esse comando pode ser segu ido de u m t ítulo, entre
aspas, contendo u m ou mais caracteres; esse t ítulo será reco­
nhecido pelo comando C LOAD "t ítu lo" .
A forma gera l do comando CSAV E é :
CSAV E o u CSAV E "XX"
O comando CSAV E provoca a gravação em fita dos
programas a rmazenados na memó ria do computador, não
perm iti ndo a gravação de outras i n struções, como menciona­
do em rel ação a algumas a p l i cações de SAV E .

2 . Outros Comandos
- C L E A R N - Em alguns ti pos de BAS I C a i nstrução
C L E A R pode ser segu ida de um número , ind icando que o
computador reservará aquela q u antidade de Bytes para a ar­
mazenagem de ST R I N G S :
Ex. 1 : ( modo d i reto )
C L E A R 1 00

sign ifica que serão reservados 1 0 0 Bytes para a a rmaze­


nagem de ST R I NGS.

224
É bastante comum que os i nterpretadores BAS I C dei ­
xem reservados 50 Bytes para a armazenagem de ST R I N G S ;
nesse caso, se o tota l d e Bytes d o ST R 1 N G S usados n o pro­
g rama não exceder 50, não será p reciso i nd icar C L E A R N .
O comando C L E A R é, freqüentemente , usado com a
a breviação C L R .
- L P R I N T - é u m comando que perm ite fazer a im­
pressão de ST R I N G S , n ú meros e variáveis em u ma i m p resso­
ra , ao i nvés de co locar esses caracteres no v ídeo . Todas as
ca racter ísticas do comando P R I N T, já vistas, são em gera l ,
apl i cáveis a o comando LP R I NT.

Ex. 2: ( comando d i reto )


LP R I N T "ABACAX I "
Ex. 3 : 1 0 LP R I N T " B OM D I A"
Ao serem executados esses comandos, as palavras A BA­
CAX I e BOM D I A serão impressas no papel e não aparece­
rão no v ídeo.
E preciso p resta r atenção pois, dependendo do t i po de
i m p ressora usada , o coma ndo LP R 1 N T pode variar u m pou ­
co o u apresentar outras caracte r ísticas.
- L L I ST - q u a ndo se deseja l istar um p rograma em
u ma i m p ressora, o , comando L I ST é um pouco mod ificado :
L L I ST i n d i ca ao computador que a l istagem não será feita
no v ídeo e sim i m p ressa em papel . Todas as demais caracte­
r ísti cas do coma ndo L I ST são vá l idas para L L I ST.
- F R E ( A $ ) - E m a l g u ns ti pos de B AS I C pode-se co­
l o car u ma variável de ST R I N G , como argu mento de função
F R E , da forma F R E (A $ ) , o que dará como resu ltado a
q ua ntidade de Bytes l ivres para a armazenagem de ST R I N GS;
a variável A $ não tem maior sign ificado, i n d icando apenas
q ue se trata de uma fu nção de ST R I N G ; em vez de A$ po­
de-se usa r também u ma letra entre aspas : F R E ( " B " ) .
Para concl u i r, é necessário mencionar que o elenco de
comandos e instruções uti l izadas na l i nguagem BAS I C cresce
a cada d ia , com o lançamento de novos computadores.
E nossa i ntenção, em um outro vo l u me, comp l ementar
a descrição da l i nguagem, mostrando os acrésci mos e adapta­
ções mais usua l mente encontradas, em relação ao n ú cleo
exp l icado neste texto .

225
\
B I B L I OG R A F I A

B R OW N , J era l d R . lnstan t Basic . D i l i th i u m Press, 1 97 8 .


A L B R ECHT, F i n ke l & B rown . Basic - A Self Teaching .
Guide, J o h n W i l ey & Sons, l nc, 1 979.
T R A C TO N , Ken . The Basic Cookbook, TAB Boo ks, 1 97 8 .
PE R E I RA F I L H O, J o rge da C . Basic Básico. Ed i to ra C a m ­
pus, 1 98 1 .
Manual do Usuário, M i croco m putador O h i o Scientifi c , Mode­
lo Su perboa rd 1 1 .
A L B R E C H T , F i n ke l & B rown . A tari Basic - A Self Teacbing
Guide, J o h n W i l e y & Sons, l nc, 1 969 .

L1 EN, Dav i d A. The Basic Handbook , C o 1T1 r; u soft Pu b l i ­


sh i n g , 1 9 8 1 .

227
IÍ\I D I C E ANAL IT I C O

A $ , 1 96 D a d o s , e n trada , 9 1
A BS , 8 1 DATA , 9 7
A l fabeto, 23 Deci m a l , p o n t o , 55
A N D , 1 35 D E F F N , 87
A rg u m e n to , 85 D E L E TE , 208
A rg u me n to f a l so , 85 D I M , 1 75
A r mazenage m , 63 D i re t o , coma n d o , 22, 3 3 , 6 7 , 7 2
" A rray " , 1 6 1 D i re t o , G OT O , 1 4 0
A r ro ba , 2 7 D i v i são , 75
A S C , 1 89 D o i s pon tos ( :) , 7 1
A S C I I , código , 1 86 " D o l l a r " , 53
ASCI 1 , t a be l a , 1 86 " D u m m y " , 85
A s pa s , 3 7 , 3 8 , 4 9 , 5 3 , 1 04 , 1 3 1 D u p l o , ln d i c e , 1 69
A T N , 84
E LS E , 203
B AS I C , 1 5 E m bu t i dos, " l o o p s " , 1 20
B R E A K , 29, 6 0 , 1 1 0 E m bu t i da s , s u b-rot i n a s , 1 4 7
B y te , 8 5 , 1 98 , 20 1 E N D , 37, 69
B y te a l t o , 202 E n de reço , 1 98
B y te ba i x o , 202 E N TE R , 2 1
E n t rada d e d a d o s , 9 1
Caracteres, 21 E r r o , mensagens d e , 2 1 5
Casas ( po s i ç ões ) , 3 1 , 4 2 " E R R O R " , 6 7 , 9 9 , 1 26 , 1 4 5
" C a r r i age R e t u r n " . 2 1 , 2 9 , 3 4 E r r o s , t a be l a de , 2 2 2

C H R $ , 1 86 ESC, 31
E spaços, 3 2 , 4 1 , 5 2 , 1 0 2 , 1 3 2
C i e n t íf i ca , n o tação , 53
E ve n tos, c o n t a d o r , 1 29 , 1 55
C i f rão , 53
E X P , 85
C L E A R , 2 1 , 34, 58, 94 , 2 24
E x po n e n c i a ção , 7 7
C LOA D , 2 2 3
C L R , 59
C LS , 205 F a l so , argu m e n t o , 8 5

Código ASCI 1 , 1 86 F i ta , gravação e m , 64


Co m a n d o , 1 9 , 25 F i ta , l e i t u ra d e , 6 2

C o m a n d o d i re t o , 2 2 , 3 3 , 6 7 , 7 2 " F l a g " 1 1 0, 1 33
FO R, 1 1 3
C o m paração d e v a r i á v e i s , 1 26 , 1 3 1 , 1 3 5
C o m p u tações mate m á t i ca s , 7 5 F R E , 8 5 ,. 225
F u n ções de S T R I N G , 1 79
Co n d i c i o n a i s , i n st r u ções , 1 24 , 1 46
C O N T , 59 F u n ções matemá t i ca s , 79

Co n t a d o r de eve n t o s , 1 29 , 1 5 5 , 1 74
CO N T R O L , 30 G OS U B , 1 4 2

CO P Y , 68 G OS U B , ON . . . , 1 4 8, 1 54

COS , 83 G OT O , 1 08

CSA V E , 2 24 G OTO d i re t o , 1 40

CT R L C, 3 0 , 59, 1 1 O, 1 20 G OT O , ON . . . , 1 5 7
C u rso r , 30 G ravação em f i t a , 64

Dados, 1 9, 1 73 H e x adec i m 'l l , 20 2

229
I F , 1 24 Parên tes i s , 7 7
I n de x a d a s , v a r i ávei s , 1 6 1 PE E K , 1 97
I Íl d i ces, 1 6 2 P LOT, 207
'
i n d i ces d u p l o s , 1 69 PO K E , 20 7
I N PUT, 91 P o n t o dec i m a l , 5 5
I n st r u ções, 1 9 , 7 1 Po n t o -e -v irg u l a , 39
I n st r uções c o n d i c i o n a i s , 1 24 , 1 46 POS, 86
I n st r u ções de " l o o p " , 1 0 7 Posições, 3 1 , 4 2
I n st r u ções m ú l t i p l a s , 70 P R I NT, 2 2 , 37
' I N T, 81 P R I N T U S I N G , 208
I n terrogação , 38 Progra m a , 1 9
P r o teção de su b-rot i n as , 1 44
L E F T $ , 1 79
Le i t u ra de f i ta , 6 2 R A N D O M , 206
L E N , 80 R A N D O M I Z E , 206
L E T . 5 1 . 57 R E A D , 97
L i n h a de v ídeo, 3 1 R E A D Y , 20
L i n h a . n ú mero d e , 1 9 , 2 2 , 7 1 R E M , 1 38
LI ST, 3 3 , 35, 3 7 R E S E T , 30, 2 0 7
L L IST , 2 2 5 R E STO R E , 1 0 5
LOA D , 6 3 R E STO R E X X , 1 0 5
LOC K , S H I F T, 29 R e t o r n o de su b-rot i n a s , 1 44
L O G , 85 R E T U R N , 2 1 , 2 9 , 3 3 , 1 43
Lóg i c a s , o perações. 2 1 O " R e t u r n " , "Ca r r i age " , 2 1 , 2 9 , 34
" Loop " , 1 0 7, 1 1 0 R I G H T $ , 1 82
" Loo p " de tempo , 1 20 R N D, 79
" Loo p " e m bu t i d o , 1 2 1 R U N , 34
" Lo o p " , i n st r u ções de , 1 0 7
LP R I N T, 225 S A V E , 64
S C R , 2 1 , 34
Matemá t i ca s , f u nções, 79 S E T , 207
Matemá t i ca s , c o m p u tações , 7 5 SG N , 82
Matemá t i ca s , ope rações , 7 8 S H I F T , 25, 27
M a t r i zes, 1 69 S H 1 F T d i re i t a , 28
Mem ó r i a , e n dereço d e , 1 98 S H I F T esq u e r d a , 28
Mensage n s de e r r o , 2 1 5 S H I F T L O C K , 29
M I O $ , 1 83 S H I F T , 25
M i n ú scu l a s , 28 S H I FT P, 27
M ú l t i p l a s , i n st r u ç õe s , 7 1 S I N , 83
M u l t i p l icação , 7 5 Sinais, 23, 52
S i n ta x e , e r r o d e , 6 7
NEW, 2 1 , 34 Soma, 75
N E XT, 1 1 3 SPC, 87
N O T, 1 38
SQR , 84
N o tação c i e n t íf i c a , 53
"Stateme n t " , 1 9
N ú me r o s , 49, 53
ST E P , 1 1 5
N ú meros de l i n h a , 1 9 , 2 2 . 7 1
S T O P , 60
S T R I N G , 1 9 , 3 7 , 53, 56
O K , 2 0 , 34 S T R I N G , f u nções de, 1 79
O N . . . G OS U B , 1 4 8 , 1 54 S T R $ , 1 90
ON . . . G O T 0 , 1 5 7 S u b-rot i n a s , 1 4 1
O perações l óg i c a s , 21 O S u b- r o t i n a s e m b u t i d a s , 1 4 7
O perações mate m á t i c a s , 7 8 S u b- r o t i n a s , p r o teção d e , 1 44
O R . 1 35 S u b-rot i n a s , r e t o r n o d e , 1 44

230
S U B -S T R I N GS , 1 83 US I N G , P R I N T , 20 8
S u bt ração , 7 5 US R , 20 1

VA L , 1 94
Variáve i s , 1 9 , 50, 53, 9 1 , 1 1 9 , 1 5 1 , 1 6 1 , 1 63
TAB, 81 1 61
T a be l a A S C I I , 1 86 Variáve i s , comparação de, 1 26 , 1 30 , 1 3 5
T a be l a de erros, 222 V a r i áveis i n dexadas, 1 6 1
Tabu l ação , 81 Veto r , 1 6 2
TAN , 84 V ídeo, 3 1
Tec l a d o , 25 V ídeo , l i n h a d e , 3 1
T e m p o , " l oo p " de, 1 20 V írgu l a , 4 2
T H E N , 1 24 V írgu l a , ponto e , 39

23 1

Você também pode gostar