Escolar Documentos
Profissional Documentos
Cultura Documentos
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
Roberto Kresch
PREFACIO DA SEGUNDA EDIÇÃO
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
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
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)
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 ) .
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
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
23
Ex.: quando dizemos que o computador deve imprimir
COMPOSIÇÃO, daremos o comando da seguinte
forma:
1 0 7 "COMPOSIÇÃO"
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).
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
BGJQGJGJGJITJGJDDDEJ
1 1 SPACE
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 +-
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
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 .
.
29
Ao ser ligado o computador, aparece escrito na tecla
do vídeo:
O/ C/ W/ M ?
B R E A K IN XX
OK
t__ ( casa í/J)
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
OK
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 .
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
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
OK
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
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
1 0 P R I N T " H OJ E É D I A 1 5 D E J U L H O "
39
ST R I N G a ser i mpresso seja col ocado l ogo em segu ida ao
pri meiro.
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
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
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
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
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 . É ·
( 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
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
OK
70 P R I N T
80 P R I N T
90 P R I N T
1 00 E N D
( 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
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
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
Execüção :
RUN
OK
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 :
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
OK
OK
20 E N D
RUN
M EU N OM E t " R O B E RTO"
OK
B ) I mpressão de nú meros
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
OK
C ) Impressão de variáveis
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 )
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
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
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
E x . 33 : 1 0 P R I NT 1 5;-4; 2
20 E N D
RUN
1 5 -4 22
OK
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
,
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
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
OK
OK
54
vi rtude de os p róx i mos a l garismos serem meno
res que 5X X )
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
Ex . 42 : 10 L ET A= -0.0003478257
20 ? A
30 E N D
RUN
-3 .4782 5 E - 4
OK
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 .
20 ? AB$
30 E N D
RUN
ABC D E . . . . . . . XYZ . . . . . . .
(6 1 ca racteres, no máx i m o )
OK
OK
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
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
Ex . 48 : 10 A=1 5
20 8=1 8
30 ? _ A;B
40 E N D
R UN
15 18
OK
R UN
15 18
OK
Tecle : 25 C L E A R
E , agora , execute :
RUN
(J (J
OK
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
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
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
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
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
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
CONT
4 (tercei ro val o r de B )
OK
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 :
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
'"'
OK
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> _
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>
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
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
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)
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 )
L I ST ( < R ET U R N> )
OK ( nada a l istar)
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)
OK
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 ) .
OK
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
Ex. 1 : 1 0 A = 5
20 B = 3
30 C = A + B
40 P R I NT C
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 :
OK
E x . 3 : A= 5: B = 3 : P R I N T A + B (< R ET U R N> )
8
OK
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
B R EA K I N 25
OK
? A; B ; C (< R ET U R N> )
3 8 24
OK
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
74
Capítulo V
COMPUTAÇÕES MATEMATICAS
75
E x . 1 : P A I NT 1 5 + 1 2 (< R ETU R N> )
27
OK
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
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
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
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
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 .
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
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
OK
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 :
OK
ros.
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 " .
OK
( observe o ponto-e-v írg u l a entre TA B ( 3 ) e o
ST R I N G )
OK
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
OK
OK
83
40 D = C * H (para con f i rmar o valor d o cosse
50 ? D/5 no)
RUN
.50
.50
OK
OK
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) .
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
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
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
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
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
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.
89
Capítulo V I
I NSTR UÇÕES PARA ENT RADA DE DADOS
6.1 - INPUT X
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 ) .
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
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
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
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 $"
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
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
"
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.
50 ? "O T E R CE I R O É ; C$"
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
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
Ex . 8 : 1 0 R EA D A
20 ? A
30 DATA 1 8
RUN
18
OK
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
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
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
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
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
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
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
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
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
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
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
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 ) .
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
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
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
1 06
Capítu lo V I 1
I NSTR U ÇÕES DE " L OOP" E
I NSTR U ÇÕES CONDICIONA I S
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 .
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
OK
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
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
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
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
40 P R I NT C
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
OK
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
20 P R I NT A .
20 P R I NT A
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.
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
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
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
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
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
OK
Ex . 1 2 : 1 0 F O R T =1 TO 6 : ? T : N EXTT
R UN
1;
2
3
4
5
6
OK
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
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 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=?
OK
F O R N= 1 TO 500 : N E XT N
Ex. : F O R P= l TO 5 : ? P : N E XT
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 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=?
OK
F O R N= 1 TO 500 : N E XT N
Ex. : F O R P= l TO 5 : ? P : N E XT
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
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
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
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"
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
"
OK
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
·
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.
OK
OK
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 31
. aci ma, nen h u ma outra l i n ha, o p rograma s i m p l esmente
acaba ) .
60 IP K$ = "S" T H E N 1 0
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
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 .
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
·
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.
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 )
1 34
- a l i nha 40 mandou i mpri m i r o N Ú M E R O 2 E > 0 e vol
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
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
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
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?°
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 ) .
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
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.
1 40
Cap(tulo V I I I
S U 8-R O T 1 N A S
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
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
8.2 - GOSU B XX
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
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
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
ON K GOSU B XX,YY,ZZ,WW · · · • -
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 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 .
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"
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
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
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 . 8 : 1 0 N= N + 1
20 P R I NT N : O N N G OSU B 50,
60, 70 - - - -
1 56
8.4 - ON - - - - G OTO
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
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
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,
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
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 .
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"
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
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
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
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 ) .
=
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
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
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�
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 $ =
OK
9.4 - I nstrução D I M
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 -
·
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)
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
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
1 78
Capítulo X
F UNÇ Õ E S D I V E RSAS DE STR ING
1 0 .2 - L E FT$
LE F T $ ( A $ , N )
OK
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
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
1 81
CAFE COM LE
VAFE COM LEI
CAFE C OM LEIT
CAFE COM LE ITE
OK
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
10 .3 - R IGHT $
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
1 82
10.4 - MID$ (A$ , K ,I)
E x . 8 : 1 0 A$ = "ABCD E F G H IJKL"
20 ? M I D $ (A$, 3, 2)
RUN
CD
OK
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
184
Ass i m quando T 1 , M I D $ (A$ ( M ) ,T,Q) é igual 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
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 +-
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
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) .
OK
OK
1 0 .6 - ASC (A$ )
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
10.7 - ST R $ (X)
E x . 1 6 : 1 0 N = 34.65
20 A$ = ST R $ ( N )
30 ? N * 2 : ? A $
RUN
69 .3
34 .65
OK
OK
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
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
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
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
=
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 -
OK
RUN
1 5 .5
1 384.53
1 .5 38
12
.4
.04
-.2 345
OK
1 0 .8 - VAL (A$)
OK
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 ) .
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 )
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
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 .2 - PEEK e POKE
PE E K( X )
OK
POK E X,N
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
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
1 1 .3 - USR ( X )
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
3 2
X = U SR ( N )
Ex . 4 : 1 0 A=1 6
20 X=USR ( 1 6)
30 C=A+X :?C
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
OK
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 :
1 1 .5 - C LS
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
(< CT R L > C )
B R E A K I N L I N E 20
OK
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
1 1 .7 - SET ( P L OT)/ R E S E T
SET ( X , Y )
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
1 1 .9 - P R I NT U S I N G
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
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
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
OK
OK
1 1 .1 0 - OP E R A Ç Õ E S LÓG I C AS
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
1 1 1 1 1 1 1 1 1 1 1 1 1 1 10
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
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
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
21 3
Capítulo XI I
M ENSAGENS DE E R RO
XX E R R O R I N YY
21 5
1 2 .2 - D D - ( Double D i mension )
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 ) .
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)
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 )
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 )
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 )
1 2 .8 - OV - ( Overflow)
1 2 .9 - SN - (Syntax E rror)
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 )
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 )
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) �:..
�·
1 2 . 1 6 - S T - (String Temporaries)
1 2 . 1 7 - TM - (Type M ismatch )
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)
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 )
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
222
APÊNDICE
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
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.
225
\
B I B L I OG R A F I A
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 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
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