Sei sulla pagina 1di 227

APRENDENDO

APRENDENDO
A PROGRAMAR
A PROGRAMAR

NA PRTICA
NA PRTICA
Virglio V. Vilela
Virglio V. Vilela
"A rocha imensa e dura. O cortador bate uma, duas, trs, dez vezes,
nenhuma rachadura. Ele d 100 marteladas, s tirando lascas. Na
centsima rimeira batida, a rocha imensa e dura se arte em duas. O
cortador de edras sabe !ue n"o #oi somente a!uela martelada a !ue
conse$uiu, mas tambm todas as !ue vieram antes".
"E na r%ima edra, o cortador ode e$ar uma #erramenta mais
aroriada e cortar a edra mais raidamente".
Este produto adota o
Princpio da Retribuio Espontnea Princpio da Retribuio Espontnea
H alguns movimentos no sentido de que a informao digital seja disponibilizada gratuitamente. Ns
apoiamos essa iniciativa. Entretanto, achamos tambm que ela conflita com a necessidade de os
produtores e autores de informao e arte terem renda para sua sustentao mnima, o que a prazo
mais longo pode inclusive reduzir a informao e a arte oferecidas.

Como uma iniciativa no sentido de equilibrar esse quadro, este produto se enquadra no Princpio da
Retribuio Espontnea, que consiste no seguinte:

1) O usurio de informao e arte digitais tem o legtimo direito de usufruir de produtos digitais
gratuitamente, para fins no-comerciais.

2) A seu critrio, e dentro de suas possibilidades, o usurio pode retribuir ao detentor dos direitos
autorais o valor monetrio que considerar justo em termos dos benefcios que obteve, por meio de
depsito em conta ou outro indicado pelo produtor, tendo o usurio direito a um recibo.

Acreditamos que, desta maneira, todos os interesses podem ser atendidos: os produtores e autores
recebem por seu trabalho se este tiver qualidade, os usurios continuam tendo acesso aos produtos
digitais, quem no pode pagar no paga e quem pode pagar paga somente o quanto pode e o que achar
justo.
Assim, estaremos construindo uma sociedade justa e produtiva no por regras e obrigaes, e sim por
um saudvel esprito de respeito, liberdade de escolha e troca.
Portanto, esteja vontade para se beneficiar deste produto. Caso voc decida espontaneamente retribuir
por ele, faa seu depsito conforme indicado abaixo. Aps, envie um e-mail ao autor, informando nome
completo, endereo e CPF ou CGC, para efeitos de imposto de renda. E, desde j, muito obrigado!
Creditado: Virgilio Vasconcelos Vilela
E-mails: virgiliovv@ieg.com.br; virgiliovv@uol.com.br; webmaster@possibilidades.com.br
CPF: 398.136.146-68 (para copiar e colar, use este: 39813614668)
Opo 1:
Banco: 104 Caixa Econmica Federal
Agncia: 0002-1
Conta: 01181810-3
Opo 2:
Banco: 237 Bradesco
Agncia: 3426-6
Conta: 2703-0
SUMRIO SUMRIO
Princpio da Retribuio Espontnea..............................................................................................................................1
APRESENTAO.......................................................................................................................................5
O!O EST"#AR NESTA APOST$%A.....................................................................................................&
.0 INTRODU!O " PROGRAMA!O DE COMPUTADORE#...................................................$
.'.1. Pro(ra)as e pro(ra)ao.............................................................................................................................*
.'.+. on,ecendo os pro(ra)as..........................................................................................................................1'
.'.-. A .in(ua(e) do co)putador.......................................................................................................................1'
.'./. %in(ua(ens de a.to n0e..............................................................................................................................11
.'./.1 Tipos de instru1es de a.to n0e............................................................................................................1+
.'.5. on0erso do pro(ra)a23onte.....................................................................................................................1-
.'.4. Orientao das .in(ua(ens de a.to n0e.......................................................................................................1/
.'.&. %in(ua(e) Pasca........................................................................................................................................1/
.'.5. So3t6are 7ue 0oc8 precisa ter ou con,ecer.................................................................................................15
.'.*. 9atores de sucesso ......................................................................................................................................14
.'.1'. Para 0oc8 7ue est: co)eando..................................................................................................................1&
.'.11. Ati0idades sup.e)entares..........................................................................................................................15
.% PEN#ANDO A PROGRAMA!O................................................................................................%$
.1.1. !eu Pri)eiro Rob;.....................................................................................................................................1*
.1.+. <rincando de rob;........................................................................................................................................+/
.1.-. A.(orit)os....................................................................................................................................................+5
.1.-.1 Representando prob.e)as e situa1es...................................................................................................+*
.1./. Ati0idades sup.e)entares.............................................................................................................................-+
.& O PROCE##O DE PROGRAMAR................................................................................................''
.+.1. Estrat=(ia (era. de pro(ra)ao..................................................................................................................--
.+.+. Etapas da pro(ra)ao................................................................................................................................-/
.+.-. Especi3icao do pro(ra)a.........................................................................................................................-/
.+./. Pro>eto de pro(ra)as...................................................................................................................................-&
.+./.1 O 7ue os pro(ra)as 3a?e)....................................................................................................................-&
.+./.+ Tipos de pro(ra)as...............................................................................................................................-5
.+./.- Estrutura de pro(ra)as........................................................................................................................./'
.+././ Pro>etando pro(ra)as.........................................................................................................................../+
.+.5. @iso (era. de u) pro(ra)a23onte.............................................................................................................../4
.+.4. Teste e 7ua.idade de pro(ra)as.................................................................................................................../&
.+.4.1 O 7ue testar.........................................................................................................................................../*
.+.&. Ati0idades sup.e)entares.............................................................................................................................5'
.' O AM(IENTE TUR(O PA#CA)..................................................................................................*'
.-.1. O Turbo Pasca.............................................................................................................................................5-
.-.+. $nsta.ando o Turbo Pasca............................................................................................................................5-
.-.-. Acessando o Turbo Pasca...........................................................................................................................5/
.-./. Editando teAto.............................................................................................................................................5/
.-.5. A.ternati0as para obter a>uda.......................................................................................................................5&
.-.4. O #OS S,e..B u) pouco de !S2#OS.........................................................................................................55
.+ PRIMEIRO# PROGRAMA#.........................................................................................................,%
./.1. Pri)eiras instru1es....................................................................................................................................41
./.+. !ais de Crite..............................................................................................................................................45
./.-. Turbo #ebu((er..........................................................................................................................................&1
././. EApress1es arit)=ticas................................................................................................................................&+
./.5. "nits............................................................................................................................................................&4
./.4. 9un1es ......................................................................................................................................................5'
./.4.1 9un1es )ate):ticas............................................................................................................................5'
./.4.+ ND)eros a.eatErios..............................................................................................................................5-
./.&. onstantes dec.aradas.................................................................................................................................5/
./.5. Ati0idades sup.e)entares ............................................................................................................................54
.* MEM-RIA E ENTRADA DE DADO#..........................................................................................$
.5.1. o)andos de )e)Eria.................................................................................................................................5*
.5.+. Tipos de dado...............................................................................................................................................*+
.5.+.1 Tipos de dado do Turbo Pasca..............................................................................................................*+
.5.-. !ais do tipo de dado c,ar............................................................................................................................**
.5./. !ais do tipo de dado strin(........................................................................................................................1'1
.5.5. #escobrindo 0ari:0eis ...............................................................................................................................1'-
.5.4. #ec.arando seus prEprios tipos de dado.....................................................................................................1'5
.5.&. on0ers1es entre tipos de dados................................................................................................................1'*
.5.5. Ati0idades sup.e)entares...........................................................................................................................111
., A)TERNATIVA# E DECI#!O...................................................................................................%%*
.4.1. #eciso e eApress1es .E(icasB $9...............................................................................................................115
.4.+. !D.tip.as a.ternati0asB ASE.....................................................................................................................1++
.4.-. Recon,ecendo decis1es..............................................................................................................................1+4
.4./. Or(ani?ando o pensa)entoB :r0ores de deciso........................................................................................1+*
.4.5. Ati0idades sup.e)entares...........................................................................................................................1-'
./ REPETI!O................................................................................................................................. %'*
.&.1. C,i.e..........................................................................................................................................................1-5
.&.+. Repeat.........................................................................................................................................................1-5
.&.-. 9or..............................................................................................................................................................1/'
.&./. asos 3re7Fentes e prob.e)as co) co)andos de repetio.......................................................................1//
.&.5. Pro(ra)ando repeti1es.............................................................................................................................1/4
.&.4. Ati0idades sup.e)entares...........................................................................................................................15&
.. CRIA!O DE IN#TRU0E# E MODU)ARI1A!O............................................................%*$
.5.1. $nstru1es criadas pe.o pro(ra)ador.........................................................................................................15*
.5.+. Tipos e caractersticas de instru1es.........................................................................................................14'
.5.-. #ec.arando procedi)entos.........................................................................................................................141
.5./. Par)etros por re3er8ncia..........................................................................................................................14&
.5.5. 9un1es dec.aradas pe.o pro(ra)ador.......................................................................................................1&1
.5.4. $ndepend8ncia e reusabi.idade...................................................................................................................1&/
.5.&. Roteiro para criar no0as instru1es...........................................................................................................1&5
.5.5. Reusabi.idade tota.B units...........................................................................................................................15'
.5.*. Ati0idades sup.e)entares...........................................................................................................................154
.$ )I#TA# NUMERADA#2 VETORE# E MATRI1E#..................................................................%$%
.*.1. @etores......................................................................................................................................................1*1
.*.+. #ec.arao de 0etores...............................................................................................................................1*+
.*.-. Opera1es co) 0etores.............................................................................................................................1*-
.*./. Processando todo u) 0etor.......................................................................................................................1*4
.*.5. Re(istros....................................................................................................................................................+'+
.*.4. !atri?es ....................................................................................................................................................+'4
.*.&. Ati0idades sup.e)entares..........................................................................................................................+'*
.%0 TRA(A)3O 4INA)...................................................................................................................&%%
.1'.1. Especi3icao............................................................................................................................................+11
.1'.+. Pro>eto......................................................................................................................................................+11
.1'.-. Pro(ra)a23onte.........................................................................................................................................+1+
.1'./. Teste.........................................................................................................................................................+1&
.1'.5. $d=ias para traba.,os.................................................................................................................................+1&
APGN#$E AB PERH"NTAS 9REIJENTES ......................................................................................++1
APGN#$E <B PROE#$!ENTOS E 9"NKES #O T"R<O PASA%............................................++-
APGN#$E B 9ERRA!ENTAS #E PENSA!ENTO..........................................................................++5
APGN#$E #B TA<E%A AS$$..............................................................................................................++*
<$<%$OHRA9$A.......................................................................................................................................+-1
LN#$E RE!$SS$@O...............................................................................................................................+--

APRESENTAO
") bo) pro3issiona. de in3or):tica tipica)ente = a.(u=) co) disposio para buscar
so.u1es onde necess:rioM por sua prEpria iniciati0a. o) base nessa pre)issaM )uitos .i0ros e
cursos deiAa) a car(o do estudante (rande parte da buscaM co) a )e.,or inteno de esti)u.ar
essa iniciati0a. !as 7uando co)ea)os a.(oM i(nora)os at= o 7ue no sabe)osN = co)u) no
dispor)os de pontos de partidaM e procur:2.os representa u) custo Os 0e?es a.to de)ais. Nesse
)o)entoM obter orientao ade7uada pode 3a?er a di3erena entre prosse(uir ou desistir. O
ob>eti0o deste curso = ser u)a orientao para 7ue) est: iniciando o aprendi?ado da
pro(ra)ao de co)putadores. Atra0=s de u)a .in(ua(e) espec3icaM 3aci.itar o treina)ento nas
,abi.idades essenciais necess:rias para 7ua.7uer .in(ua(e) de pro(ra)aoM de 3or)a si)p.es e
pr:tica.
<ons pro3issionais de in3or):tica ta)b=) sabe) 7ue so)ente dedicao e pr:tica
re(u.ares pode) condu?ir ao a)adureci)ento e O co)pet8ncia. Por istoM )ais de /'' eAerccios
e pr:ticas condu?e) o aprendi? a co)preender e 3iAar os no0os con,eci)entos e ta)b=) a
con,ecer 0a.iosos recursos da .in(ua(e) e do a)biente de pro(ra)ao.
A .in(ua(e) adotada = o Turbo Pasca. &.' da <or.andM u)a 0erso para #OS. ")a ra?o
b:sica para isso = redu?ir a 7uantidade de in3or)a1es necess:rias para 7ue o estudante obten,a
resu.tados. #e 7ua.7uer )aneiraM este no = u) .i0ro destinado a es(otar os recursos da
.in(ua(e). O ob>eti0o no = 3or)ar especia.istasM e si) apoiar a 3or)ao b:sica de
pro(ra)adoresM cu>a prioridade )aior consiste e) desen0o.0er as ,abi.idades centrais
)encionadas aci)a. 9eito issoM o pro(ra)ador estar: e) condi1es de do)inar outras
.in(ua(ens rapida)ente.
Estrutura do 5urso
Pressup1e2se 7ue o estudante est: 3a)i.iari?ado co) os conceitos iniciais de
processa)ento de dados. O )ateria. 3oi desen0o.0ido para ser traba.,ado principa.)ente no
co)putador. ApEs 3a?er os eAerccios e as pr:ticasM o aprendi? de0e i)p.e)entar pro(ra)as a
partir de especi3ica1esM se>a) as su(eridas ou outras 7ue descobrir ou e.aborarN o )ais
i)portante = estar pro(ra)ando.
")a das pri)eiras ati0idades = co.ocar o aprendi? e) contato co) os pro(ra)asM para
criar u)a 0iso das possibi.idades e do 7ue e.e 0ai 3a?er. Por istoM = i)prescind0e. 7ue e.e ten,a
os pro(ra)as de de)onstrao 7ue aco)pan,a) este teAto.
#e )aneira (era. os captu.os inicia) co) pr:ticas 7ue )ostra) ao a.uno co)o 3unciona
a.(u) recurso da .in(ua(e)M o 7ue e) a.(uns casos ser: su3iciente. aso se>a necess:rioM e.e
pode recorrer Os eAp.ica1esM e)bora o )ais i)portante se>a o a.uno #azer coisas e perceber o
3eedbacP proporcionado pe.o co)putadorN isto = considerado )ais did:tico do 7ue eAi(ir 7ue o
a.uno saiba descrever co)o as coisas 3unciona). Nesta edio ta)b=) se procurou 3ornecer
u)a estrat=(ia (era. de pro(ra)aoM en0o.0endo especi3icaoM pro>eto e i)p.e)entaoM co) o
ob>eti0o de suprir o a.uno co) u)a estruturaM independente de .in(ua(ensM 7ue or(ani?e seu
pensa)ento na direo dos resu.tados dese>ados.
@:rias das )odi3ica1es e3etuadas nesta 0erso re3.ete) conceitos e )=todos da
Aprendi?a(e) #in)icaM de Robert <. #i.ts e Todd EpsteinM 7ue acredito 0o e3eti0a)ente
3aci.itar para os a.unos o desen0o.0i)ento das ,abi.idades de pro(ra)ar.
O autor
En(en,eiro E.etricista e !estre e) i8ncia da o)putao pe.a "9!H. Ana.ista de
Siste)as na aiAa Econ;)ica 9edera.. Pro3essor de Pri)eira %in(ua(e) de Pro(ra)ao na
"NE< 2 "nio Educaciona. de <ras.iaM e na "P$S 2 "nio Pioneira de $nte(rao Socia.M
ta)b=) de <ras.ia. Practitioner e) PN%.
Agrade5i6e7tos
Ao Pro3essor S.0io !oreira SantanaM por )e )ostrar 7ue os a.unos poderia) ir )uito
a.=) das )in,as eApectati0as e das de.esN ao Pro3essor @icente P. TeiAeiraM pe.o Ap8ndice <N ao
Pro3essor Roberto Si.0eiraM ento c,e3e do #eparta)ento de $n3or):tica da "NE<M pe.a
.iberdade e apoio proporcionados.
o)ent:riosM crticas e su(est1es sero )uito be)20indos e pode) ser en0iados 0ia
$nternetM para 0ir(i.ioQtba.co).br.
@ir(.io @asconce.os @i.e.a
&ome a$eB 0ir(i.io00.c>b.net.
<ras.iaM RaneiroS+'''.
!OMO ESTU"AR NESTA APOSTI#A
Para u) )e.,or apro0eita)ento da sua dedicaoM si(a as se(uintes orienta1esB
Os captu.os consiste) de ati0idades dos se(uintes tiposB rticas Ta )aioriaU
de0e) ser 3eitas no co)putadorN e%erc'cios de0e) ser 3eitos 3ora do co)putador e
se destina) pre3erencia.)ente para re0is1es ou testes de aprendi?adoN
eseci#ica()es indica) pro(ra)as a sere) 3eitosN es!uisas indica) ati0idades
nas 7uais 0oc8 de0e se 0irar. Si)p.es)ente 0: eAecutando cada ati0idade na
se7F8ncia e) 7ue apareceM pu.ando o 7ue >: esti0er )uito Eb0io para 0oc8. A
)aioria dos pro(ra)as das pr:ticas e eAe)p.os esto dispon0eis no dis7uete 7ue
aco)pan,a esta aposti.a ou na ,o)e pa(e do autor.
E) a.(u)as p:(inas ,: caiAas co) teAtos eAp.icati0os. ")a 0e? 7ue o ob>eti0o =
3or)ar pro(ra)adoresM no = estrita)ente necess:rio .er essas eAp.ica1esN o
essencia. = saber pro(ra)arM e no saber eAp.icar ou contar co)o = 7ue se
pro(ra)a. Pro(ra)ar = i)p.e)entar causas para e3eitos dese>adosM e se 0oc8 sabe
o 7ue acontece 7uando escre0e CriteTNU e) u) pro(ra)aM no se considera a7ui
7ue 0oc8 de0a saber descre0er para a.(u=) o 7ue = este co)ando.
Ao 3ina. de cada captu.o ,: u)a seo de ati0idades sup.e)entares. ApEs 3a?er
as pr:ticas e eAercciosM esco.,a a.(u)as e i)p.e)ente os pro(ra)as so.icitados.
Iuando esti0ere) V3:ceisVM = ,ora de se(uir e) 3rente. V9:ci.V 7uer di?erM por
eAe)p.oM 7ue apEs ter contato co) u)a especi3icao e i)a(inar ou es7ue)ati?ar
u)a te.a de sada de u) pro(ra)aM as instru1es e) Pasca. necess:riasM ou u)a
boa parte de.asM 0e) natura.)ente O sua )enteM se) (rande es3oroM e 0oc8
e0entua.)ente consu.ta a.(u) )ateria. apenas para se certi3icar.
Antes de co)earM d8 u)a boa o.,ada na apresentaoM no su):rioM no ndice
a.3ab=tico e no captu.o 1M apenas para ter u)a id=ia do conteDdo e 3a)i.iari?ar2se.
9o.,eie as p:(inas u)a a u)aM o.,ando a.(u)a coisa 7ue .,e c,a)e a ateno.
No (aste )ais 7ue uns 1' ou 15 )inutos nesta ati0idade. Estes poucos )inutos
pode) .,e econo)i?ar ,oras posterior)enteW
*i!ue atento aos te%tos neste #ormato+ dicas, alertas e in#orma()es
imortantes.
$
$% INTRO"UO & PRO'RAMAO "E
!OMPUTA"ORES
") co)putador = u)a ):7uina 7ueM para rea.i?ar a.(oM precisa 7ue a.(u=) .,e indi7ue o 7ue
3a?erM de u)a 3or)a 7ue e.e entenda. Para 7ue voc possa 3a?er issoM = preciso 7ueB
on,ea o co)putador e os recursos dispon0eisN
Saiba o 7ue 7uer 7ue o co)putador 3aaN
$nstrua o co)putadorM atra0=s de u) pro(ra)a escrito e) u)a .in(ua(e) de pro(ra)ao.
Nesta introduo 0ere)os in3or)a1es b:sicas para se aprender u)a .in(ua(e) de pro(ra)ao
de co)putadores. Pressupo)os a7ui 7ue 0oc8 est: 3a)i.iari?ado co) os 3unda)entos do processa)ento
de dadosM inc.uindo operao do co)putador e peri3=ricosM siste)a operaciona. e siste)a de ar7ui0os.
$%$($ Progra6as e progra6a89o
O ,ard6are do co)putadorM constitudo de p.acas e dispositi0os )ecnicos e e.etr;nicosM precisa
do so3t6are para .,e dar 0idaB pro(ra)asM co) 3ina.idades be) deter)inadasM 7ue 3aa) o 7ue os
usu:rios 7uere) ou precisa). X: pro(ra)as para editar u) teAtoM para 3a?er c:.cu.osM >o(os e .itera.)ente
)i.,ares de outras 3ina.idades. A.(uns pro(ra)as )aioresM co)o processadores de teAtoM p.ani.,as e
na0e(adores da $nternetM so de 3ato a(rupa)entos de de?enas de pro(ra)as re.acionados entre si.
Pro(ra)as so constitudos de instru1es e co)andos 7ue o processador do co)putador entendeB
3aa issoM 3aa a7ui.o. Esses co)andos de0e) estar representados e) u)a .in(ua(e). @oc8 ta.0e? no
este>a ciente de 7ue est: 3a)i.iari?ado co) 0:rios tipos de .in(ua(e). A.=) do Portu(u8sM ,: .in(ua(ens
para inD)eras 3ina.idadesB sinaisM 3aiAas e p.acas de trnsitoM (estos co) a )o e co) a cabeaM o <rai..e e
a .in(ua(e) dos surdos2)udos... At= para 3a.ar co) beb8s te)os 3or)as espec3icasW Ta)b=) ,: 3or)as
de .in(ua(e) )ais si)p.es para nos co)unicar)os co) ):7uinasM co)o a te.e0isoM o 0ideocasseteM a
ca.cu.adora. Nin(u=) Vc,a)aV 0erba.)ente u) e.e0adorM ne) Vdi?V O T@ 7ua. cana. sintoni?arN se 0oc8
no 3i?er a.(o 7ue os apare.,os entenda)M no 0ai conse(uir o 7ue 7uer. Assi) = o co)putadorB 0oc8
de0e co)and:2.o de u)a 3or)a 7ue e.e entenda.
Para 7ue a.(o acontea no co)putadorM no basta u) pro(ra)aN os co)andos
do pro(ra)a de0e) ser eAecutados. Pro(ra)as de co)putador so co)o 3i.)esB u)a
coisa = a pe.cu.a e) u) ro.oM contendo u)a se7F8ncia de i)a(ens. Outra coisa =
co.ocar o 3i.)e e) u) pro>etor e assisti2.o na te.ona. Os pro(ra)as 3ica) (uardados
e) ar7ui0os no disco r(ido ou #M at= 7ue se>a co)andada sua eAecuo. So ento
carre(ados pe.o siste)a operaciona. para a )e)Eria e sE ento acontece TeAata)enteU
o 7ue 3oi pro(ra)adoM e 0oc8 pode perceber o 7ue o pro(ra)a 3a?.
")a di3erena entre ):7uinas e) (era. e o co)putador = 7ue este pode 3a?er )uito )ais coisasM
portanto precisa de u)a 0ariedade )aior de co)andos. E outra di3erena 3unda)enta.B o co)putador
pode ar)a?enar os co)andosM a(rupados e) pro(ra)asM para eAecuo posterior.
%0
Pro(ra)ar u) co)putador =M portantoM produ?ir co)andos a(rupados e) pro(ra)asM e) u)a
.in(ua(e) 7ue o co)putador entenda e 7ueM 7uando eAecutadosM 3aa) o co)putador produ?ir a.(u)
resu.tado dese>ado. ") bo) pro(ra)ador = treinado e) a.(u)as ,abi.idadesM sendo o nosso ob>eti0o
desen0o.0er na pr:tica essas ,abi.idadesM para isso usando u)a .in(ua(e) de pro(ra)ao de
co)putadores c,a)ada Pasca..
$%$)$ Co7:e5e7do os progra6as
Iuando 0ia>a)osM nossa principa. re3er8ncia = o destino dese>adoM 7ue nos (uia nas decis1es de
para onde 0irar. Nesta seo 0oc8 0ai con,ecer o nosso destinoB pro(ra)as prontos. X: u)a in3inidade
de.esN a7ui 0ere)os a7ue.es dentro dos nossos propEsitos.
Para as ati0idades desta seoM 0oc8 0ai precisar dos pro(ra)as 7ue so parte do curso. Todos
pode) ser eAecutados a partir do pro(ra)a principa.M c,a)ado Vdemoa.e%eV. Se 0oc8 no possui o
dis7uete de pro(ra)asM obten,a2os na $nternetM na p:(ina indicada no 3ina. da apresentao da aposti.a. Se
os pro(ra)as 3ora) 3ornecidos e) u) Dnico ar7ui0o co)pactadoM desco)pacte2os e) u)a Dnica pasta.
Para 7ue os pro(ra)as de de)onstrao possa) ser eAecutadosM e.es precisa) constar do
cadastro do pro(ra)a Tar7ui0o Vcadpro(.datVU. Outros pro(ra)as pode) ser cadastrados a partir de u)a
opo no )enu principa..
Os pro(ra)as 7ue 0oc8 0ai 0er 3ora) 3eitos por eA2a.unosM pe.o prEprio autor ou obtidos na
$nternet. #i0irta2seW
Pr;ti5a .0.% < (ri75a7do
EAecute o pro(ra)a de de)onstrao. Esco.,a a opo VPro(ra)as por cate(oriaVM depois esco.,a a
cate(oria dese>ada T>o(osM desen,oM sons e as de)aisU e esco.,a a.(uns. No ,: nen,u)a re(raM esco.,a os
7ue .,e parecere) )ais interessantes.
$%$*$ A li7guage6 do 5o6putador
A ati0idade b:sica de u) co)putador consiste e) eAecutar instru1esM atra0=s de u)
)icroprocessador ou si)p.es)ente processadorM Os 0e?es ta)b=) c,a)ado de P" T,entral -rocessin$
.nitU. O processadorM e) D.ti)a an:.iseM recebe instru1es na 3or)a de i)pu.sos e.=tricosB e) u)
deter)inado circuitoM pode estar ou no 3.uindo corrente. Representa)os cada i)pu.so por 1 ou 'M
con3or)e passe corrente ou no. Esta = a )enor unidade de in3or)ao 7ue pode ser representada e) u)
co)putadorM e = c,a)ada =it. A P" recebe instru1es e dados na 3or)a de bits a(rupados de 5 e) 5N
cada con>unto de 5 bits = c,a)ado =>te. #e u)a 3or)a si)p.i3icadaM u) bYteM ou se>aM u) con>unto de 5
i)pu.sos e.=tricos Tou sua aus8nciaUM constitui u)a instruo ou u) dado Tna 0erdadeM u)a instruo
pode ocupar )ais de u) bYteU. Representare)os essa unidade de in3or)ao pe.o nD)ero correspondente
no siste)a deci)a.. #essa 3or)aM ao bYte '''''''1 associa)os o nD)ero 1M ao bYte ''''''11
associa)os o nD)ero -M ao '''''1'' o nD)ero / e assi) por diante. ") bYte pode ar)a?enarM portantoM
u) nD)ero de ' a +55 T11111111U.
A )e)Eria RA!M ou si)p.es)ente )e)EriaM de u) co)putador = constituda de u)a se7F8ncia
de )i.,ares ou )i.,1es de bYtesM cada u) identi3icado por u) nD)ero 7ue constitui o seu endere(o
T3i(uraU. O processador te) a capacidade de buscar o conteDdo da )e)Eria e eAecutar instru1es a.i
ar)a?enadas. A P" ta)b=) cont=) a.(u)as unidades de )e)EriaM c,a)adas re$istradoresM
identi3icados por no)es co)o AZM S e $PM 7ue ta)b=) ar)a?ena) nD)eros e ser0e) a 0:rias 3un1es.
.0 - NTRODUO PROGRAMAO DE COMPUTADORES %%
1 + - / 5 4 ...
54 +- ' +/& 15/ 5& ...
Esquema simplificado da memria RAM: endereos, bytes e respectivos valores.
Os nD)eros ar)a?enados na )e)Eria pode) representar dados ou instru1es. Iuando
representando instru1esM te) si(ni3icados espec3icos para a P". Por eAe)p.oM a P" e) (era. recebe
co)andos do tipo T)as no na 3or)aUB
/Armazene 0 no re$istrador 123
/Armazene 405 no endere(o de memria 1.465.4553
/2ome 7 ao conte8do do re$istrador A93
/2e a 8ltima instru("o deu resultado 0, asse a e%ecutar as instru()es a artir do
endere(o de memria 57:.7743
Esse tipo de .in(ua(e) = c,a)ado lin$ua$em de m!uina ou
asse)b.Y T0e>a ao .ado u) trec,o de pro(ra)aU. As instru1es so
eAecutadas na se7F8ncia e) 7ue esti0ere) na )e)EriaM a )enos 7ue o
3.uAo de eAecuo se>a redirecionado por a.(u)a instruo apropriada.
Nesta .in(ua(e)M )es)o para )ostrar a.(o na te.a = necess:rio co.ocar
nD)eros e) certos endereos de )e)EriaM reser0ados para isso. No
,: indicao eAp.cita do tipo nD)ero da .in,a ou da co.una da te.aN
de0e)os ca.cu.ar esses dados.
$%$+$ )i7guage7s de alto 7?el
Escre0er pro(ra)as de co)putador e) .in(ua(e) de ):7uinaM apesar de os pro(ra)as
produ?idos sere) eAtre)a)ente r:pidosM pode ser )uito di3ci.M traba.,oso e de a.to custoM a.=) de eAi(ir
con,eci)entos pro3undos sobre o co)putador.
Para no ter)os 7ue pro(ra):2.o nessa .in(ua(e) di3ci.M 3ora) desen0o.0idas as li7guage7s de
alto 7?el. Estas nos per)ite) descre0er o 7ue 7uere)os 7ue o co)putador 3aa uti.i?ando instru1es
)ais prEAi)as da nossa .in(ua(e). A.=) de 3aci.itar a descrio dos processos a sere) eAecutadosM as
.in(ua(ens de a.to n0e. si)p.i3ica) a uti.i?ao da )e)Eria do co)putadorM di)inuindo a 7uantidade de
deta.,es co) os 7uais de0e ocupar2se o pro(ra)ador. Assi)M ao in0=s de .idar)os co) bitsM bYtesM
endereos de )e)Eria e u)a in3inidade de outros deta.,esM pode)os pensar e) V.i)par a te.aVM Vi)pri)ir
u)a .in,a de teAtoVM so)ar e subtrair 0ari:0eis co)o na )ate):tica e to)ar u)a deciso na 3or)a Vse...
entoV.
@e>a u) eAe)p.o espec3icoB as instru1es abaiAoM na .in(ua(e) Pasca.M deter)ina) 7ue a te.a
se>a .i)pa e u)a so)a se>a e3etuadaM e o resu.tado desta )ostrado na te.aB
ClrScr;
Write(513 + 450 + 1200);
")a .in(ua(e) de pro(ra)ao de a.to n0e. possui 0:rias caractersticas e) co)u) co) a
nossa .in(ua(e). E.as possue) u) al#abeto T.etrasM nD)eros e outros s)bo.osU e alavras. X: pa.a0ras
prede3inidas na .in(ua(e)M )as ta)b=) pode)os 3or)ar as nossas prEprias. *rases pode) ser
construdas co) as pa.a0rasM respeitando2se certas re(ras. O con>unto de re(ras de construo de pa.a0ras
e 3rases nu)a .in(ua(e) de a.to n0e.M assi) co)o nas .in(ua(ens co)unsM c,a)a2se si7ta@e.
PUSH DS
CLD
MOV CX,0FFFFH
XOR AL,AL
NOT CX
LES DI,Dest
REP MOVSB
MOV AX,DI
MOV DX,ES
DEC AX
POP DS
%& APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
.0.+.% Tipos de i7stru8Aes de alto 7?el
O 7ue 0oc8 pode 3a?er dentro de u) pro(ra)aM uti.i?ando u)a .in(ua(e) de a.to n0e.[ @a)os
0er a.(u)as ana.o(ias co) outras ):7uinas.
") te.e0isor possui 0:rios recursosB a te.aM o a.to23a.anteM o contro.e re)otoM op1es de
con3i(urao. Iuando 0oc8 aperta ou (ira u) boto de contro.eM est: de certa 3or)a instruindo o te.e0isor
a 3a?er a.(oN = u)a 3or)a rudi)entar de .in(ua(e). E) 7ua.7uer casoM 0oc8 est:
.i)itado a atuar sobre os recursos do seu te.e0isorN no ,: )eios de instru2.o a
(ra0ar a.(o nu)a 3ita de 0deo. #a )es)a 3or)aM nu)a .in(ua(e) de
pro(ra)ao 0oc8 no 0ai encontrar Ta princpioU instru1es para re(u.ar
contraste ou te)peratura. ")a cate(oria de instru1es 7ue 0oc8 pode esperar
7ue eAista) so a7ue.as 7ue 0o .,e per)itir i7teragir 5o6 os re5ursos
dispo7?eisB tec.ado e )ouse TentradaUM te.a e i)pressora TsadaUM discos
Tentrada e sadaUM )e)Eria. Assi)M ,: instru1es para se .er a.(o do tec.ado e
)ostrar a.(o na te.a. Sendo o disco r(ido estruturado e) pastas TdiretEriosU e
ar7ui0osM ,: instru1es para se .er e (ra0ar ar7ui0os no disco r(idoM e para se saber seu
conteDdo. Ta)b=) ,: instru1es 7ue dec.ara) 7ue 0oc8 7uer usar a )e)EriaM e instru1es para
ar)a?enar e consu.tar dados ne.a ar)a?enados.
Para poder eAecutar u)a (ra0ao pro(ra)adaM seu 0ideocassete precisa to)ar
pe.o )enos duas decis1esB 7uando inici:2.aM e 7uando interro)p82.a. Assi) = nu)
pro(ra)aB e) 0:rias situa1es ser: necess:rio 3a?er 0eri3ica1es e to6ar de5isAes de
7uando eAecutar ou no u) con>unto de instru1esM ou eAecutar u) ou outro con>unto. Por
eAe)p.oM u) pro(ra)a 7ue .8 u)a nota 7ue u) a.uno tirou e) u)a discip.ina e de0e
in3or)ar se e.e 3oi apro0ado ou no. Ou o pro(ra)a in3or)a 7ue o a.uno passou ou 7ue 3oi
repro0adoM )as nunca as duas coisas. PortantoM nu)a .in(ua(e) de a.to n0e.M ta)b=)
0oc8 pode esperar 7ue eAista) instru1es para to)ada de decis1es.
Para eAp.orar a enor)e capacidade de processa)ento de u) co)putadorM 7ue ta. deiAar)os para
e.e 3a?er coisas 7ue eAi(e) a repetio de u) procedi)ento u)a certa 7uantidade de 0e?esM se>a) duas
ou )i.,1es de 0e?es[ @oc8 ta)b=) encontrar: nu)a .in(ua(e) instru1es para pro(ra)ar repeti89o
5o7di5io7al de u) (rupo de instru1es. Supon,a 7ue 0oc8 7uer escre0er u) pro(ra)a 7ue escre0a seu
no)e e) cada .in,a da te.a. Ao in0=s de escre0er +5 instru1esM u)a para cada .in,aM 0oc8 pode usar u)a
instruo para repetir +5 0e?es a instruo 7ue )ostra seu no)e na te.a. E) outros casos 0oc8 ter: u)
padro a ser se(uidoM co)o no caso do c:.cu.o da )=dia arit)=ticaB .8 o nD)eroM ca.cu.a a so)a parcia.M
incre)enta u) contadorM .8 outro nD)eroM ca.cu.a a so)a parcia.M incre)enta u) contadorM e assi) por
dianteN no 3ina. da .eituraM di0ide a so)a pe.o contador. ")a 0e? identi3icado o padroM 0oc8 escre0e
apenas u)a 0e? as instru1es 7ue se repete) e inc.ui u) co)ando 7ue contro.e a repetio.
Para 3aci.itar a 0ida do pro(ra)adorM as .in(ua(ens de a.to n0e. ta)b=) cont8) 0:rios outros
tipos de instru1esB todos cont8) opera8Aes 6ate6;ti5as b:sicas Tso)aM subtraoM )u.tip.icao e
di0isoU e ta)b=) 3un1es )ate):ticas co)o senoM co2senoM .o(arit)o e eAponencia.. A.(u)as
.in(ua(ens disponibi.i?a) instru1es (r:3icasM para desen,ar retasM crcu.os e outros ob>etosM co.orir
ob>etos e )uitas outras.
.0 - NTRODUO PROGRAMAO DE COMPUTADORES %'
E o )e.,or dos )undosB 0oc8 ta)b=) poder: 5riar suas prBprias i7stru8Aes e Cu78AesM 7ue
depois de testadas e corretasM poder: usar co)o se 3i?esse) parte do repertErio da .in(ua(e). Por
eAe)p.oM 0oc8 poder: escre0er u)a instruo c,a)ada Repete!euNo)eM 7ue )ostra seu no)e na te.a +5
0e?es. ")a 0e? testadaM correta e (ra0adaM basta inserir o no)e da instruo na posio apropriada do
pro(ra)a TVc,a)arV a instruoU para )ostrar seu no)e +5 0e?es. E se 7uiser )ostrar seu no)e )ais +5
0e?esM basta Vc,a)arV de no0o a instruo. Para )e.,orar ainda )aisM 0oc8 pode criar a instruo de
3or)a 7ue a 7uantidade de repeti1es se>a de3inida so)ente 7uando o pro(ra)a 3or eAecutado.
E@er55io .0.& D Re?is9o
o)p.ete os espaosB
aU O processador eAecuta instru1es e) .in(ua(e) de \\\\\\\\\\\\\\\\.
bU As instru1es eAecutadas pe.o processador de0e) estar e so buscadas na \\\\\\\\\\\\\\\.
cU As instru1es e) .in(ua(e) de ):7uina so a(rupadas e) \\\\\\\\\\\\\M cada u) co) u)a
3ina.idade deter)inada.
dU Para ser eAecutadoM u) pro(ra)a de0e estar na \\\\\\\\\\\\\\ do co)putadorM para onde =
carre(ado pe.o \\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\.
E@er55io .0.' < Va7tage7s e des?a7tage7s
Assina.e co) @ as 0anta(ens e co) # as des0anta(ens de se e.aborar pro(ra)as e) .in(ua(e) de
):7uinaB
T U !ais traba.,oso
T U !aior rapide? de eAecuo
T U Per)ite )aior contro.e do co)putador
T U EAi(e )ais con,eci)entos sobre o ,ard6are do co)putador
E@er55io .0.+ < Categorias de i7stru8Aes
#escre0a as cate(orias de instru1es de u)a .in(ua(e) de pro(ra)ao de a.to n0e.. Para cada
cate(oriaM 3ornea dois eAe)p.os de coisas 7ue pode) ser 3eitas.
$%$,$ Co7?ers9o do progra6aDCo7te
o)o o co)putador no entende as instru1es de u) pro(ra)a23onteM para 7ue este possa ser
eAecutadoM e.e precisa ser con0ertido para a .in(ua(e) 7ue o co)putador recon,eceM a .in(ua(e) de
):7uina. ")a instruo e) u)a .in(ua(e) de a.to n0e. pode corresponder a centenas ou at= )i.,ares
de instru1es e) .in(ua(e) de ):7uina. A con0erso = 3eita por pro(ra)as apropriadosM e pode ser 3eito
antes ou durante a eAecuo do pro(ra)a.
Iuando o pro(ra)a23onte = todo con0ertido e) .in(ua(e) de ):7uina antes da eAecuoM esse
processo = c,a)ado de 5o6pila89oM e os pro(ra)as 7ue o 3a?e) so c,a)ados 5o6piladores. O
pro(ra)a resu.tante = c,a)ado ro$rama;ob<eto ou cEdi(o2ob>etoM 7ue cont=) instru1es e) .in(ua(e)
de ):7uina )as ainda no pode ser eAecutadoN para 7ue isso ocorraM = necess:ria outra etapa c,a)ada
V.inPedioV T>ar(o da :reaU ou .i(aoM e3etuada ta)b=) por u) pro(ra)a apropriado c,a)ado
V.inPeditorV ou .i(ador. Na .inPedioM so >untados ao cEdi(o2ob>eto do pro(ra)a outros cEdi(os2ob>eto
necess:rios O sua eAecuo. ApEs esta etapaM a con0erso est: co)p.eta e produ? 3ina.)ente u)
ro$rama e%ecutvel T3i(uraU.
%+ APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
P R O H R A ! A
9 O N T E
P R O H R A ! A
O < R E T O
P R O H R A ! A
E Z E " T ] @ E %
c o ) p i . a d o r . i n P e d i t o r
t e A t o . i n ( u a ( e ) d e
) : 7 u i n a
. i n ( u a ( e ) d e
) : 7 u i n a
e d i t o r
Iuando a con0erso = 3eita durante a eAecuoM o processo = c,a)ado de i7terpreta89oM e o
pro(ra)a con0ersorM i7terpretador. Neste casoM o interpretador per)anece na )e)EriaM >unto co) o
pro(ra)a23onteM e con0erte cada instruo e a eAecutaM antes de con0erter a prEAi)a. ^ e0identeM portantoM
7ue a eAecuo de u) pro(ra)a interpretado = )ais .enta 7ue a de u) co)pi.ado.
Note 7ue no = a .in(ua(e) e) si 7ue = co)pi.ada e interpretada. Essa caracterstica depende da
disonibilidade de u) co)pi.ador ou u) interpretadorN pode ,a0er a)bos para u)a .in(ua(e)M ou at=
nen,u).
$%$-$ Orie7ta89o das li7guage7s de alto 7?el
As instru1es dispon0eis e) u)a .in(ua(e) de a.to n0e. pode) no ser apropriadas para u)a
deter)inada ap.icao. Pro(ra)as cient3icos t8) )uitas di3erenas e) re.ao a pro(ra)as co)erciaisM
7ue ta)b=) pode) di3erir bastante de pro(ra)as 0o.tados para tratar i)a(ens ou de inte.i(8ncia
arti3icia.. Assi)M 3ora) desen0o.0idas .in(ua(ens para :reas espec3icas. A pri)eira .in(ua(e) de a.to
n0e. criadaM o co)pi.ador 9ORTRANM = direcionada para ap.ica1es cient3icas. A .in(ua(e) O<O%M
ta)b=) co)pi.adaM = orientada para ap.ica1es co)erciais. O interpretador <AS$ = 0o.tado para
iniciantes. A .in(ua(e) P%S$ 3oi criada pe.a $<! para ser a unio de 0:rias .in(ua(ens. X: ta)b=) 0:rias
.in(ua(ens 7ue 3aci.ita) o trata)ento de (randes 7uantidades de dadosM co)o SI% TStructured IuerY
%an(ua(eU.
")a distino i)portante a ser 3eita = 7ue u)a coisa = a .in(ua(e)M outra coisa = a
i)p.e)entao co)ercia. desta .in(ua(e). X: u)a de3inio padro para a .in(ua(e) Pasca.M por
eAe)p.oM e ,: co)pi.adores co)erciais desta .in(ua(e)M co)o o Turbo Pasca.. Nor)a.)ente os
a)bientes de pro(ra)ao co)erciais inc.ue) instru1es eAtrasM con,ecidas co)o e%tens)es da
.in(ua(e)M o 7ue os torna )enos co)pat0eis co) os outros. Os )e.,ores co)pi.adores co)erciais
inc.ue) outras 3aci.idadesM co)o a>uda on2.ineM eAe)p.os e 0:rios outros recursos.
$%$.$ )i7guage6 Pas5al
O PASA% Tno 3a.e Vpascoa.VWU 3oi desen0o.0ido por NiP.aus Cirt, para ser a pri)eira
.in(ua(e) de pro(ra)ao a ser aprendida. ^ be) 3:ci. de ensinar e aprenderM e sua estrutura = u) pouco
)ais r(ida do 7ue a de outras .in(ua(ensM 0isando esti)u.ar )aior or(ani?ao e discip.ina no
pro(ra)ador. $sso se >usti3ica de0ido ao 3ato de 7ue as .in(ua(ensM ao )es)o te)po e) 7ue per)ite) a
e.aborao de (randes so.u1esM possibi.ita) 7ue se co)eta (randes errosM principa.)ente e) pro(ra)as
)aiores. ") pro(ra)a pode estar sintatica)ente correto e no entanto conter erros co)o se7F8ncia
inade7uada das instru1esM 0a.ores incorretos ou ta)b=) a sua eAecuo pode nunca ter)inar
nor)a.)enteM por7ue as condi1es de ter)inao nunca so atin(idas Tesses erros so c,a)ados _bu(s`
ou erros de .E(icaU.
Para a construo de pro(ra)as (randes e co) estrutura )uitas 0e?es co)p.eAa de)ais para
nossos .i)ites atuaisM 3ora) Te ainda continua) sendoU criadas 0:rias t=cnicas e )etodo.o(ias de
desen0o.0i)ento e estruturao de pro(ra)as )ais 3:ceis de sere) testadosM a.terados ou corri(idos. !as
no se i.udaB 7ua.7uer 7ue se>a a .in(ua(e) ou a )etodo.o(iaM = poss0e. produ?ir pro(ra)as
.0 - NTRODUO PROGRAMAO DE COMPUTADORES %*
desor(ani?adosM inco)preens0eis e rep.etos de erros ou 7ue no 3a?e) o 7ue de0eria) 3a?er. A
7ua.idade 3ina. dos produtos depender: predo)inante)ente do pro(ra)ador.
E@er55io .0.* D Re?is9o
Assina.e @ para as a3ir)a1es 0erdadeiras e 9 para as 3a.sasB
T U SintaAe = o no)e dado Os re(ras de construo de 3rases e) u)a .in(ua(e) de pro(ra)ao.
T U ") pro(ra)a23onte pode ser eAecutado direta)enteM co)o esti0er.
T U ") pro(ra)a pode ser co)pi.ado )es)o 7ue ten,a pe7uenos erros de sintaAe.
T U ") pro(ra)a pode ser co)pi.adoM interpretado ou a)bos.
T U ") pro(ra)a pode conter errosM )es)o estando sintatica)ente correto.
$%$/$ #oCtEare Fue ?o5G pre5isa ter ou 5o7:e5er
A.(uns pro(ra)as so necess:rios Os ati0idades de u) pro(ra)adorB
#iste6a opera5io7al 2 o)o pro(ra)adorM 0oc8 precisa ter u) )ni)o de in3or)a1es sobre o
siste)a ou a)biente operaciona. e) 0ai traba.,arM co)o por eAe)p.oB
o)o eAecutar pro(ra)as
Os no)es 7ue 0oc8 pode dar aos ar7ui0os
o)o or(ani?ar seus ar7ui0os e) pastas ou subdiretErios
o)o .istarM eAc.uirM reno)ear e copiar ar7ui0os
Se o co)putador e) 7ue 0oc8 traba.,a est: conectado a u)a redeM 0oc8 0ai precisar de u) no)e
re(istradoM associado a u)a sen,aM para poder acessar ar7ui0os e pro(ra)as da rede.
Editor de te@tos 2 ") pro(ra)a Pasca. = u) teAto si)p.esM se) caracteres de contro.e do tipo
ne(ritoM ta)an,o de 3onteM pa(inaoM etc. @oc8 0ai precisar de u) editor para di(itar seu pro(ra)a no
co)putador. Editores 7ue produ?e) tais teAtos so o EditM 7ue 0e) co) o !S2#OSM o <.oco de Notas
TNotePadUM 7ue 0e) co) o Cindo6sM e 0:rios outros. TeAtos 3or)atados pe.o CordM CordPad ou arta
erta no ser0e). Os co)pi.adores co)erciais nor)a.)ente tra?e) u) editorN us:2.os ser: nor)a.)ente
)ais pr:tico. O Turbo Pasca. tra? u) Eti)o editorM e 0oc8 no precisar: se preocupar co) istoM eAceto
ta.0e? para i)pri)ir os pro(ra)as.
Co6pilador 2 ")a 0e? 7ue 0oc8 di(itou o teAto do pro(ra)aM precisar: con0ert82.o para
.in(ua(e) de ):7uina. Para isso 0oc8 precisa de u) co)pi.ador. o)o co)pi.adores co)erciais da
.in(ua(e) Pasca. te)os por eAe)p.o as 0:rias 0ers1es do Turbo Pasca.M da <or.and. X: 0ers1es para
#OS Tat= &.'U e para Cindo6s. X: 0:rios outrosM co)o o 9ree Pasca.M co)pat0e. co) o Turbo Pasca. e
7ue 0oc8 pode trans3erir 0ia $nternet (ratuita)ente.
Esco.,e)os o Turbo Pasca. &.' por 0:rios )oti0osB 3aci.idade de insta.aoM Eti)a cur0a de
aprendi?a(e)M por ser a base do #e.p,i Tu) dos a)bientes de pro(ra)ao pro3issiona. )ais usados
atua.)ente e) )icrosU e ainda o 3ato de ser o V7ueridin,oV da $nternetB ,: )uitos sites especia.i?ados
ne.eM e 7uase nada dos outros. O Turbo Pasca. &.' = 0endido at= ,o>eM e no o ac,o eAata)ente baratoM o
7ue = u)a )edida do interesse (era. por e.e.
%, APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
$%$0$ 4atores de su5esso
") pro(ra)ador pode atuar e) 0:rias :reas. o)o 3uncion:rio de u)a e)presaM nor)a.)ente
traba.,a e) e7uipeM recebendo especi3ica1es dos ana.istas de siste)as. Pode ter u)a e)presaM co)
outros pro(ra)adores ou noM e atra0=s de.a co)ercia.i?ar seus pro(ra)as. Outra possibi.idade =
distribuir seus pro(ra)as 0ia $nternetM na 3or)a de s,are6areM )oda.idade de distribuio na 7ua. o
usu:rio te) acesso ao pro(ra)a para a0a.iao antes da deciso de co)pra. X: )uitas pessoas 7ue
pro(ra)a) por ,obbYM por (ostare)M e 0:rios de.es acaba) se pro3issiona.i?andoM inc.usi0e por7ue so
)uitas as oportunidades para 7ue) est: disposto a 3a?er u) bo) traba.,o.
Para 7ue isso se )ateria.i?eM so essenciais a.(uns recursos )ateriais eM a.=) destesM ,: recursos
pessoais 7ueM 7uanto )ais desen0o.0idosM )ais enri7uece) a co)pet8ncia do pro(ra)adorB
Co6putador pessoal D ^ 3unda)enta. 7ue 0oc8 ten,a o seu prEprio co)putadorM para 7ue se
dedi7ue )ais e )e.,orM para 7ue prati7ue 7uando 7uiser e puder e )ais u) )onte de ra?1es. Para
co)earM no = preciso ter u) Pentiu)N = poss0e. rodar o Turbo Pasca.M nosso co)pi.adorM at= e) u)
processador +54 e siste)a operaciona. #OS -.'. Por tudo istoM 3aa o 7ue 3or preciso para ter o seu
prEprio )icroco)putador ou para ter acesso a u).
DatilograCia ou digita89o 2 Se 0oc8 = u) T)auU _cati.E(ra3o`M corra para 3a?er u) cursoM a no
ser 7ue 7ueira so3rer. Sua produti0idade ser: bastante pre>udicada.
I7glGs 2 A )enos 7ue 0oc8 ten,a u) co)pi.ador co) a>uda ou )anua. e) Portu(u8sM procure
desen0o.0er pe.o )enos a.(u)a ,abi.idade de .er in(.8s. ^ essencia.M por eAe)p.oM para poder usu3ruir da
a>uda sens0e. ao conteAto dos co)pi.adoresB 0oc8 aperta u)a tec.a e aparece) in3or)a1es sobre a
pa.a0ra onde est: o cursor da te.a. No saber in(.8s = u)a 3or)a de ana.3abetis)o da :rea de in3or):ticaW
Te6po e dedi5a89o 2 So os principais recursos 7ue 0oc8 pode in0estirM e constitue) 3atores
crticos de sucesso. Se) e.esM nada ser: poss0e..
)i6ites 2 Ter u)a consci8ncia c.ara de 7ue 0oc8 te) .i)ites per)ite 7ue e.es se>a) respeitados e
ta)b=) 7ue possa ir a.=) de.es. E) u) deter)inado )o)entoM ,: .i)ites para o 7ue 0oc8 sabe do
siste)a operaciona.M da .in(ua(e)M do co)pi.ador. X: .i)ites ta)b=) para sua capacidade de or(ani?ar
)enta.)ente in3or)a1es e) )aior 7uantidade. on,ecer seus .i)ites pode e0itar aborreci)entosM no
sentido de 7ue 0oc8 saber: eAata)ente 7uando precisa de )e.,ores in3or)a1es ou )=todos e 7ue est: na
,ora de busc:2.os.
"2e al$o est di#'cil, eis a' uma indica("o de al$o !ue voc n"o sabe"
Ric,ard <and.er a Ro,n Hrinder
Atitude D O direciona)ento interior 7ue 0oc8 assu)ir Tsuas
crenas e con0ic1esUM principa.)ente e) )o)entos crticosM pode
3a?er )uita di3erena. Todo pro3issiona.M de 7ua.7uer (rau de
)aturidadeM e) a.(u) )o)ento 3ica diante de a.(o 7ue no sabeM e de0e decidir o
7ue 3a?er. PersistirM desistir[ Tentar u) pouco )ais[ !uitos desiste) dois )inutos
antes de ac,ar a so.uo ou u) ponto de partida para e.a. O ponto c,a0e a7ui =
perceber 7ue cada )o)ento desses = u)a oortunidade de melhoria.
.0 - NTRODUO PROGRAMAO DE COMPUTADORES %/
E@periG75ia 2 Aprender a pro(ra)ar co)putadores = u) processo 7ue te) u) incioM )as no
u) 3i)M e se ,: .i)ites para o 7ue 0oc8 sabeM no ,: .i)ites para o 7ue 0oc8 pode aprender. @oc8 0ai
aprender de .i0rosM eAe)p.osM ao 0er outros 3a?endo e outras 3or)as. !as a )eu 0erM a eAperi8ncia Te o
7ue 0oc8 3i?er co) e.aUM inc.uindo os erros apro0eitados e os desa3ios 0encidosM ser: seu )e.,or pro3essor
e o 7ue .,e proporcionar: os aprendi?ados )ais consistentes. E o 7ue 0oc8 pode aprender depende pura e
si)p.es)ente de sua dedicao e de sua ca.)a e) pro(redir passo a passo.
"A inteli$ncia n"o substitui a #alta de in#orma("o"
E@er55io .0., < Pla7eHa7do o dia
9aa u) .e0anta)ento das suas ati0idades se)anaisM >unta)ente co) o te)po )=dio necess:rio para cada
u)a. ApEsM identi3i7ue o te)po de 7ue 0ai usar para o curso 7ue est: 3a?endo.
$%$(%$ Para ?o5G Fue est; 5o6e8a7do
Neste captu.o 0oc8 obte0e a.(u)as no1es b:sicas sobre o 7ue = pro(ra)ar co)putadores e do
7ue 0oc8 precisa para iniciar. R: sabe 7ue tudo 7ue = 3eito co) e atra0=s do co)putador sE = poss0e.
por7ue ,: pessoas e.aborando os pro(ra)as necess:rios. E cada u) desses pro(ra)as 3oi produ?ido por
u) pro(ra)ador ou u)a e7uipe de pro(ra)adores. Nos pro(ra)as )aiores pode) estar en0o.0idos
0:rios tipos de pessoasB pro(ra)adores 0isuaisM consu.tores e at= co)positores para as tri.,as sonoras.
!as o pro(ra)ador = o 8nico co) presena (arantida e) 7ua.7uer pro>eto de pro(ra)ao.
!as na 0ida de todo pro(ra)ador ,ou0e u) te)po e) 7ue e.e no sabia nadaN te0e 7ue co)earM
e do >eito )ais si)p.es. Pri)eiro aprendendo a.(o sobre co)o o co)putador 3uncionaM depois aprendendo
as pri)eiras instru1es. Iuase se)pre o pri)eiro pro(ra)a )ostra u)a 3rase na te.a ou e3etua u)a
operao arit)=tica b:sica. ApEs do)inar os princpios da coisaM e.e aprende no0as instru1esM co)o
3a?er u) pro(ra)a to)ar decis1es e contro.ar repeti1esM depois cria as suas prEprias instru1es. on,ece
u)a no0a .in(ua(e)M descobre no0as 3or)as de pro(ra)arM ap.ica suas prEprias id=iasM u.trapassa
obst:cu.os e apro0eita 0:rias oportunidadesM sucessi0a)ente atin(indo (raus crescentes de )aturidade.
Pro0a0e.)ente Te isto = bo)U 0oc8 te) 0:rios pontos de interro(aoB ^ di3ci.[ Ser: 7ue eu
consi(o[ ^ .e(a.[ #: pra (an,ar din,eiro pro(ra)ando[ o)o = 7ue = esse Pasca.[ Te) 7ue dedicar
)uito pra 3icar bo)[ E por a 0ai.
@ou resu)ir e) a.(u)as 3rases )in,a opinioB
Pro(ra)ar = to 3:ci. ou to di3ci. 7uanto aprender a 3a.arM andarM tocar u) instru)ento ou
outra ,abi.idade. ApEs u) co)eo a.(o obscuroM estabe.ece2se u)a base de con,eci)entos e
,abi.idades sobre a 7ua. se cresce.
Pro(ra)ar pode ser )uito pra?erosoM e)bora ten,a )o)entos de desa3io 7ue pode) di)inuir
o pra?er de 7ue) no os aprecia. ^ u)a ati0idade )uito absor0enteB se 0oc8 7uiser 3u(ir de
a.(u)a coisaM 0: pro(ra)arW
X: )uitas T)es)oU oportunidades para pro(ra)adores (an,are) din,eiroM se>a co)o
aut;no)oM co)o e)pres:rio ou co)o e)pre(ado. Atuar co)o pro(ra)ador ta)b=) te) sido
a porta para )uitos pro3issionais de outros ra)os de in3or):ticaM e )uito de.es so )e.,ores
de0ido O eAperi8ncia co)o pro(ra)ador. O sa.:rio inicia. = e) (era. superior a )uitas outras
cate(oriasM e a co)pet8ncia pro3issiona. = 0a.ori?ada. R: 0i casos de pro(ra)adores 7ue e)
%. APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
dois anos passara) a ana.istas. ^ Dti. para isso ter consci8ncia de 7ue u) bo) pro3issiona.
no = constitudo apenas por con,eci)entos e ,abi.idades t=cnicas. Neste curso 0oc8
encontrar: ta)b=) te)as no direta)ente t=cnicos 7ue pode) serM e) certos )o)entosM at=
)ais i)portantes.
Obst:cu.os 3a?e) parte da 0ida de 7ue) aprendeN 7ue) est: aprendendo ne) se)pre est: na
V?ona de con3ortoVM pe.o contr:rioM est: a0anando sobre .i)ites. ertos 3atosM c,a)ados e)
outros conteAtos de Vprob.e)asVM para pro3issionais de in3or):tica so na 0erdade
oportunidades de )e.,oriaM so 3eedbacPN bons pro3issionais aprende) co)o 3a?er e ta)b=)
co)o no 3a?er.
O 7ue 0ai acontecer depende basica)ente de 7uanto 0oc8 esti0er disposto a in0estirM sabendo 7ue
Os 0e?es se)ea)os para co.,er os 3rutos a.(u) te)po depoisM e 7ue cada )inuto dedicado co) certe?a
dar: seus 3rutos. Si(a a receita do sucessoB estabe.ea onde 7uer c,e(ar Te) etapasM se necess:rioU e to)e
as )edidas necess:rias para c,e(ar .:M )odi3icando suas atitudes ou estrat=(ias 7uando 0eri3icar 7ue o
7ue est: 3a?endo no est: 3uncionando.
$%$(($ Ati?idades suple6e7tares
E@er55io .0./ D Re?is9o
$denti3i7ue os conceitos e ac,e2os no dia(ra)aM da es7uerda para a direitaM de ci)a para baiAo e 0ice2
0ersaB
aU on>unto de re(ras de construo de pa.a0ras e 3rases e) u)a .in(ua(e) de pro(ra)ao de a.to
n0e.
bU A )e.,or pro3essora
cU Tipo de instruo 7ue per)ite eAecutar 0:rias 0e?es u) con>unto de instru1es
dU Harante o e)pre(o do pro(ra)ador
eU Runta)ente co) a dedicaoM constitui u) recurso essencia. do pro(ra)ador
3U o)ponente do ,ard6are usado para ar)a?enar dados e instru1es
(U Tipo de instruo 7ue per)ite eAecutar u) ou outro con>unto de instru1es
,U Processo de traduo de u) pro(ra)a23onte para .in(ua(e) de ):7uina
P $ A Z A # E $ S O
O S S $ N T A Z E @ N O $
! ! A R T E O P ! N A R N
P O Z b c S E E $ E 9 C T
$ T E ! E T E R R O " A E
% $ R E P E T $ O R R
A @ E ! % A $ G O O X N 9
A A X S d N P % O A
O $ N H O $ ! A T
O A $ 9 $ E P S E
S O % E $ 9 Z A A T O R P
E7tre?ista .0.. < E@periG75ia de outros
Entre0iste pe.o )enos dois a.unos de tur)as )ais adiantadas e per(unteB 7ua. 3oi a i)portncia desta
discip.ina para discip.inas posteriores[ Se pudesse 0o.tar atr:sM co)o procuraria condu?ir a discip.ina[ Se
o co.e(a >: pro(ra)ou e) duas ou )ais .in(ua(ensM per(unte2.,e se o 7ue aprende e) u)a .in(ua(e)
pode ser ap.icado e) outras. E.e (ostou ou (osta de pro(ra)ar[
%$
$( PENSAN"O A PRO'RAMAO
@oc8 sabe 7ue cada discip.ina possui 3or)as pecu.iares de pensarB a 3or)a de reso.0er prob.e)as
de !ate):tica no = a )es)a da <io.o(ia. A 3or)a de pensar da 9sica inc.ui a da !ate):tica e a.(u)as
outras. #e 3or)a an:.o(aM a pro(ra)ao de co)putadores re7uer raciocnios apropriadosM c,a)ados e)
(era. de V.E(ica de pro(ra)aoV. Essa .E(ica = u)a co)binao de e.e)entos si)p.esM 7ue todos
usa)os no dia a dia )as ne) se)pre esta)os cientesB eAecutar u)a se7F8ncia de a1esM to)ar decis1es
diante de a.ternati0as e contro.ar a1es repetidas.
")a 0e? 7ue 0oc8 >: con,ece essas a1esM este captu.o 0ai prepar:2.o para .idar co) esses tipos
de a1esM na #orma co)o so usados na pro(ra)ao.
$($($ Meu Pri6eiro Ro=I
PARTE I2 UAUJ
AnoB +'1'. en:rioB sua casa. No seu ani0ers:rioM 0oc8 rea.i?ou u) son,oB (an,ou u) )a(n3ico
rob; tipo ,u)anoM )ode.o se)2seAo. No = o )ais )odernoM = 0erdadeM )as se) dD0ida = sensaciona..
E a(ora 0oc8 de0e aprender a oper:2.oM e para isso disp1e to2so)ente do )anua. de instru1es Te
7uando ti0er (ranaM ta.0e? 0oc8 3aa o curso da .o>a...U.
@oc8 ento 3a? o pri)eiro testeB 0irando2se para o rob; est:ticoM 0oc8 di?B
%i(ue a te.e0iso no cana. 1'. O rob; 3ica i)E0e.. @oc8 insisteB
Rob;M .i(ue a te.e0isoW E e.e respondeW Nu)a 0o? )ascu.inaM a.(o )et:.icaM )as no
desa(rad:0e.M e.e di?B
$nstruo no co)preendida.
P;M rob;M co)o = 7ue 0oc8 3unciona[
$nstruo no co)preendida.
@oc8 ento se resi(na e pe(a o )anua.. %:M descobre 7ue todas as co)unica1es co) o rob;
de0e) iniciar2se co) a pa.a0ra _RO<e`M e 7ue e.e entende a .in(ua(e)M )as no co)o 3a.a)os
nor)a.)ente. Seus co)andos de0e) ser instru1es nu) 3or)ato espec3icoB a.(u)as re(ras de0e) ser
obedecidas. A.=) dissoM o rob; te) u) repertErio .i)itado de instru1esB sE = capa? de 3a?er o 7ue >: te)
pro(ra)ado.
!ais resi(nado Tou resi(nadaU aindaM 0oc8 paciente)ente d: u)a o.,ada (era. no )anua.M
en7uanto procura pe.as instru1es 7ue o rob; entende. Encontra ento u)a seo de aprendi?a(e) r:pidaM
e descobre 7ue para 3a?er o rob; 3a.ar a.(oM de0e di?er2.,eB
*aleT9raseM EntonaoU.
!as o )anua. a.erta para di?er o *aleM 79o pronunciar os par8ntesesM substituir 9rase pe.o 7ue
0oc8 7uer 7ue e.e 3a.eM e substituir Entonao por u)a das pa.a0ras+ Normal, En#tico, 2ussurrante,
Nervoso, Autoritrio e 2taccato. @oc8 pode o)itir a entonaoM e o rob; assu)ir: Nor)a.. TestandoM
0oc8 di? ao rob;B
9a.e =oc muitcho le$alM 2taccato.
&0
O rob; continua e) si.8ncio. A 0oc8 se .e)bra de co)o de0e co)earB
Rob;M 9a.e =oc muitcho le$alM 2taccato.
@o2c82=2)ui2tc,o2.e2(a.. O so) da resposta ressoa )ara0i.,osa)ente e) seus ou0idos e 0oc8
3ica )ais ani)ado.
#epois de brincar u) pouco co) as entona1es do rob;M e 3uando no )anua.M descobre u)a
seo c,a)ada _Ser0ios #o)=sticos`M e ne.a encontra as instru1es
%i(arTApare.,oU
#es.i(arTApare.,oU.
Os apare.,os 7ue o rob; recon,ece pode) ser %)padaM @enti.adorM R:dioM Te.e0iso ... A2X]W
Rob;M %i(ar televis"o.
@oc8 08 o rob; )o0er a cabea at= parar na direo da te.e0isoM andar at= e.aM estender a )o e
pressionar co) u) dedo o boto de ONSO99M retornando O sua posio de i)obi.idade.
Rob;M des.i(ar televis"o.
O rob; 3a? os )es)os )o0i)entosM desta 0e? se) andar. Pro(ressosW
#e no0o o )anua.. Na )es)a seoM 0oc8 ac,a a instruo
Sintoni?ar TApare.,oM ana.U
onde Apare.,o pode ser Te.e0iso ou R:dio e cana. = u) nD)ero de 1 a 5'' se Apare.,o 3or Te.e0iso e
= u)a 3re7F8ncia se Apare.,o 3or R:dio. %8 de no0oM para se certi3icar de 7ue tin,a entendido eM >: usando
a eAperi8ncia ad7uiridaM co)anda rapida)ente ao rob;B
Rob;M %i(ar televis"o. Rob;M sintoni?ar televis"oM 10.
O rob; eAecuta os co)andos eAata)ente co)o 0oc8 7ueria.
Rob;M 0oc8 sintoni?a 7ua.7uer te.e0iso[
$nstruo no co)preendida.
2 ^M 0oc8 no = nen,u) EAter)inador do 9uturo. #: u) .e0e tapa no o)bro do rob;M se)
7ua.7uer reao.
E?olui7do
ApEs a.(uns dias eAp.orando o rob;M e ac,ando2o )uito .i)itadoM decide pedir u)a (rana
e)prestada para co)prar u) acessErio opciona.B a "%P 2 "nidade %E(ica Pro(ra):0e.. ") 3o.,eto 7ue
0ira di?ia 7ue co) a "%P o rob; poderia aprender a recon,ecer no0os ob>etos e no0as instru1es.
R: co) a "%P 7ue 0oc8 )es)o insta.ou T.endo as instru1esM = c.aroUM 0oc8 testa o
recon,eci)ento de ob>etos. @oc8 >: sabe 7ueM para ensin:2.oM de0e )ostrar o ob>eto e di?er o no)e de.e.
E se 7uiser 7ue recon,ea 0:rios ob>etos distintos co) o )es)o no)eM de0e 3a?er o )es)o co) os
de)ais ob>etos.
@oc8 pe(a .o(o a caiAa de %e(o do seu ir)o?in,oM e )ostra ao rob; 0:rias peasM di?endo
_%e(o` a cada u)a. ApEs ou0ir cada no)eM e.e di? _Re(istrado`. @oc8 )ostra por 3i) a caiAaM di?endoB
aiAa do %e(o.
Re(istrado.
@irando o conteDdo da caiAaM di?B
Rob;M (uarde os .e(os na caiAa do .e(o.
2 9a0or re3or)u.ar a instruo.
2 - PENSANDO A PROGRAMAO &%
$)pacienteM re0ira o )anua. e descobre 7ue o rob; recon,ece a instruo o.o7ueT%oca.U. Ao
ou0i2.aM e.e so.tar: u) ou )ais ob>etos 7ue este>a) e) suas )osM no %oca. especi3icado. E u)a das
)aneiras de por ob>etos e) sua )o = atra0=s da instruo Pe(ueTOb>etoU. Pensando _pri)eiro te) 7ue
pe(arM para depois co.ocar`M 0oc8 di?B
Rob;M Pe(ue 9e$o. Rob;M o.o7ue ,ai%a do 9e$o.
O rob; i)ediata)ente se abaiAaM pe(a u)a pea e a co.oca na caiAa.
Rob;M = pra 0oc8 (uardar todasW
9a0or re3or)u.ar a instruo.
An(ustiado co) a possibi.idade de ter 7ue di?er ao rob; +'' 0e?es as instru1es ouM piorM 0oc8
)es)o (uardar as peasM de repente se .e)bra de u) a)i(o 7ue >: te0e u) rob; co) "%P Te a(ora te)
u) )ode.o co)2seAoWU. %i(a pra e.e e 3ica sabendo 7ue 0ai ter 7ue pro(ra)ar o rob;M criando u)a no0a
instruo 7ue o ensine a (uardar todos os .e(os. O a)i(o disse 7ue 0oc8 poderia pro(ra)ar +'' 0e?es o
Pe(ue e o.o7ueM )as seria )ais si)p.es usando u)a instruo de repetio.
on3erindo o 7ue seu a)i(o disseM 0oc8 .8 no )anua. 7ueM para pro(ra)ar o rob; 0oc8 de0e
descre0erM na .in(ua(e) de.eM o padro de co)porta)ento 7ue e.e de0e se(uir. As instru1es 7ue
descre0e) o padro so ar)a?enadas na )e)Eria do rob; sob u) no)e 7ue 0oc8 )es)o atribuiM depois
da pa.a0ra al$oritmoM 7ue = o no)e dos pro(ra)as do rob;. ApEs a pro(ra)aoM basta di?er ao rob; o
no)e dado para 7ue as instru1es se>a) eAecutadas. !as atenoM a.erta o )anua.B se u) a.(orit)o ti0er
co)ando de repetio e o rob; no ac,ar u)a condio de ter)inaoM e.e o eAecutar: at= 7ue se>a
des.i(ado ou acabe a bateria.
Se) entender )uito be) o 7ue o )anua. 7ueria di?er co) o a.ertaM )as )uito interessadoM 0oc8
tenta u) pe7ueno pro(ra)a. ApEs 0eri3icar co)o 3a?er a pro(ra)aoM di? ao rob;B
Rob;M pro(ra)ar.
Re(istrado.
A.(orit)o %i(arT@. %i(ueT>elevis"oU. Sintoni?eT>elevis"oM 10U. 9i) a.(orit)o. O rob;M se) se
)eAerB
Re(istrado.
Rob;M %i(arT@.
E.e i)ediata)ente se diri(e O te.e0iso e a .i(aM sintoni?ando no cana. 1'. _<o)M bo)`.
Pensando a(ora no prob.e)a de catar o .e(oM 0oc8 procura a seo do )anua. 7ue trata de
pro(ra)ao de repeti1esM con3or)e indicado pe.o seu a)i(o. ,a)a) sua ateno as instru1esB
REPITA REPITA N @EfES
ginstruo 1h ginstruo 1h
ginstruo +h ginstruo +h
... ...
ATK LUE gcondioh 4IMDREPITA
A pri)eira = para repetir instru1es u) nD)ero inde3inido de 0e?esN o rob; sE p:ra 7uando u)a
condio ocorrer. A se(unda auto)atica)ente repete N 0e?es as instru1es 7ue esti0ere) depois do
REP$TA e antes do 9$!2REP$TAM ou se>aM u)a 7uantidade de 0e?es pre0ia)ente de3inida. @oc8 esco.,e
a se(unda instruoM 7ue .,e pareceu )ais 3:ci. de entenderB = sE con,ecer as instru1es a sere) repetidas
e substituir o N pe.a 7uantidade de repeti1es.
Antes de pro(ra)ar o rob;M e >: )ais )etEdicoM 0oc8 anota nu) pape. o 7ue dir: a e.eM >: co) as
instru1es 7ue inicia) e ter)ina) u)a pro(ra)ao e separando as instru1es 7ue sero repetidasB
&& APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
A)GORITMO Huarde%e(o
REPITA 100 @EfES
Pe(ueT9e$oU
o.o7ueT,ai%a do 9e$oU
4IMDREPITA
4IMDA)GORITMO
@oc8 repassa )enta.)ente as instru1es e ac,a 7ue est: tudo na se7F8ncia correta. R: acostu)ado
co) a7ue.e >eito estran,o de con0ersarM co)anda o rob;M en7uanto .8 suas anota1esB
Rob;M pro(ra)ar.
Re(istrado.
A.(orit)o Huarde %e(o. Repita 100 0e?es. Pe(ue 9e$o. o.o7ue ,ai%a do 9e$o. 9i) Repita.
9i) a.(orit)o.
Re(istrado.
2 Rob;M (uarde .e(o.
SucessoW O rob;M co) seu >eito )ecnicoM pe(a e (uarda as peasM u)a a u)aM at= 7ue para.
Ainda resta) peas no c,o.
@oc8 co)ea a pensar e) co)o poderia uti.i?ar a instruo REP$TA..AT^ para )andar o rob;
(uardar as peas at= no restar nen,u)a. !as outra id=ia 0e)M 0oc8 3a? u)a eApresso )arota e di? ao
rob;B
Rob;M pro(ra)ar.
Re(istrado.
A.(orit)o ,ateie $r). EAecute 1000 0e?es. 9a.e voc n"o deve me%er no rob?M 2taccato. 9a.e
voc n"o deve me%er no rob?M En#tico. 9i) EAecute. 9i) a.(orit)o.
Re(istrado.
Parte II2 To6a7do de5isAes
A(ora 0oc8 7uer descobrir co)o 3a?er o rob; catar o .e(o at= no restar nen,u)a pea. R:
3a)i.iari?ado co) o )anua.M 0oc8 procura no ndice a.3ab=tico pe.a pa.a0ra _9$!`. Nada. #epois tenta
_T^R!$NO`M e nada ainda. #e sDbitoM 0e) u)a id=ia e 0oc8 procura _#E$SO`. E .: est:B _#ecis1esM
to)ando`. Abrindo na p:(ina indicadaM encontra a descrio da se(uinte instruoB
#E gcondioh ENT!O
ginstruo 1h
ginstruo +h
...
4IMD#E
Nesta instruoM se a gcondioh 3or 0erdadeiraM o rob; eAecutar: as instru1es depois de
ENTO e at= 9$!2SE. Por issoM no .u(ar de gcondioh 0oc8 de0e co.ocar u)a instruo 7ue ten,a
resposta do tipo @ER#A#E$RO ou 9A%SO.
Procurando no ndice _ON#$O`M e abrindo na p:(ina indicadaM 0oc8 descobre 7ue o rob; =
capa? de 3a?er a0a.ia1es do a)bienteM atra0=s da instruo
ON#$O TOb>etoM EstadoU.
Ao instruir o rob;M Ob>eto de0e ser trocado por l@madaM ortaM a.(u) apare.,o ou outro ob>eto
7ue o rob; recon,ea. Estado de0e ser substitudo por aberto, #echado, li$ado, desli$ado ou outroM 7ue
3aa sentido para o ob>eto in3or)ado. O eAe)p.o do )anua. .,e pareceu u)a das 3or)as )ais estran,as
7ue >: tin,a 0isto de se co)unicar co) a.(u=)B
2 - PENSANDO A PROGRAMAO &'
#E ondioT%)padaM AcesaU ENT!O #es.i(ueT9@madaU.
_!as parece 3:ci.`M 0oc8 pensaM e ento testa o rob;B
Rob;M ondioT>elevis"o, 9i$adaU.
9a0or re3or)u.ar a instruo.
Rob;M ondioT>elevis"o, 9i$adoU.
9a0or re3or)u.ar a instruo.
SurpresoM 0oc8 se inda(a por7ue no 3uncionou. 9o.,eia o )anua.M res)un(ando a.(o sobre os
in0entores da7ui.o no (ostare) de arti(os e preposi1esM 7uando 08 u) eAe)p.o no )anua. e di?B
Rob;M 9a.eTondioT>elevis"o, 9i$adaUU.
@erdadeiro.
"3aW 9uncionouM )as 0oc8 se per(unta se no ,a0eria >eito )e.,or de pro(ra)ar a.(o to bobo.
_<e)M se no ti0erM = co) isso 7ue eu 0ou ter 7ue )e 0irar`.
!as 0oc8 no 0iu ainda u) >eito de o rob; 0eri3icar se ainda te) peas de .e(o para (uardar.
@o.tando O p:(ina do SE..ENTOM e .endo os eAe)p.osM 0oc8 08 7ue depois do SE pode ser usada a
instruo AXO"M por7ue esta ta)b=) te) as respostas @ER#A#E$RO ou 9A%SO. _Ac,ou o 7u8[`
Ani)ando2seM descobre 7ue o rob; entende a instruo
Procure TOb>etoU
Ao ou0i2.aM e.e e3etua u)a busca 0isua. no a)biente pe.o ob>eto indicado. O AXO" se re3ere O
D.ti)a procura 3eita. E 0oc8 pode inc.uir u) NO antes do AXO"B _Se ac,ou...`M _Se no ac,ou...`.
TestandoM di? ao rob;B
Rob;M Procure T-e(a do 9e$oU. Rob;M 9a.eTAc,ouU. O rob;M apEs a.(uns )o0i)entos co) a
cabeaM respondeB
@erdadeiro.
!uito bo). ")a no0a id=iaB
Rob;M ProcureT-e(a do 9e$oU. Rob;M se ac,ou ento 3a.eT_Aeu amado mestre, achei uma e(a
do le$o`U.
!eu a)ado )estreM ac,ei u)a pea do .e(o.
@e>a sEM te) >eito de 0oc8 parecer u) pouco )ais nor)a.W
#e repenteM .,e 0e) O )ente 7ue ,a0ia a7ue.a instruo REP$TA..AT^ 7ue eAecuta0a 0:rias
instru1es at= 7ue u)a condio 3osse 0erdadeiraB a(ora >: entende as condi1es. Ac,a ento 7ue >: te)
todas as 7ue precisaB co)o procurar u)a pea e (uard:2.a na caiAaM co)o repetir a procura e co)o 3a?er o
rob; decidir a ,ora de parar. A(ora sE 3a.ta or(ani?ar as instru1es nu)a se7F8ncia apropriada.
ApEs 3a?er a.(uns esboos nu) pape.M 0oc8 3ina.)ente c,e(a ao a.(orit)oB
A)GORITMO Huarde todos os .e(o.
REPITA
ProcureT-e(a do 9e$oU
Pe(ueT-e(a do 9e$oU
o.o7ueT,ai%a do 9e$oU
ATK LUE No Ac,ou
4IMDA)GORITMO
@oc8 ac,a 7ue o a.(orit)o 0ai 3uncionarM )as parece estar 3a.tando a.(u)a coisa. 9a? de conta
ento 7ue = o rob;M e eAecuta as instru1es co)o se 3osse e.e. Procura u)a peaM pe(aM co.oca na caiAaM a
&+ APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
condio _No Ac,ou` = 3a.saM ento 0o.taM procura u)a peaM co.oca... Espera aB e se no ac,arM 0ai
co.ocar o 7u8[ ,e(a O conc.uso de 7ue apEs a procura de0e testar se encontrou u)a peaM e sE
pe(arSco.ocar se ac,ou pea. O a.(orit)o aper3eioado 3ica assi)B
A)GORITMO Huarde todos os .e(o.
REPITA
ProcureT-e(a do 9e$oU
#E Ac,ou ENT!O
Pe(ueT-e(a do 9e$oU
o.o7ueT,ai%a do 9e$oU
4IMD#E
ATK LUE No Ac,ou.
4IMDA)GORITMO
ApEs pro(ra)ar o rob;M espa.,a as peas pra todo .ado e di?B
Rob;M (uarde todos os .e(o.
cESSSWWW ")a a u)aM o rob; 0ai pe(ando as peas e co.ocando na caiAaM at= no sobrar
nen,u)a. <e)M sobrou u)aM 7ue cara e)baiAo do so3:M )as ne) por isso a satis3ao = )enor.
Sua i)a(inao dispara co) as possibi.idades de usar a7ue.e seu ser0oB 3a?er2.,e )assa(e) e
ca3un=M arru)ar seu 7uartoM ca3= na ca)aM di(itar traba.,os Tou 7ue) sabe 3a?82.osWUM .,e dar ban,o... Iue
outras coisas interessantes poderia 3a?er co) e.e[
E@er55io .%.% < Outras utilidades do ro=I
Se ti0esse u) rob; co)o o do teAtoM para 7ue ac,a 7ue o usaria[ $denti3i7ue - ap.ica1es. Se>a espec3icoB
_atender O porta`M ao in0=s de itare3as do)=sticas`.
E@er55io .%.& D C:atea7do
o)o 0oc8 instruiria o rob; para c,atear a.(u=)M se 7uisesse[ 9aa u) a.(orit)o si)p.es para isso. @oc8
pode uti.i?ar instru1es )encionadas no teAto ou in0entar a.(u)a 7ue .,e parea ra?o:0e. estar dispon0e.
nu) rob; do)=stico Tpor eAe)p.oM PuAar TOb>etoUM onde Ob>eto pode ser _cabe.o`U.
E@er55io .%.' < De5isAes 5otidia7as
otidiana)ente to)a)os 0:rios tipos de decisoB 7uando parar de co)er ou a 7ue ,oras to)ar ban,oM
estudar ou ir ao cine)aM o 7ue >o(ar no co)putador e inD)eras outras. 9ornea - eAe)p.os si)p.es de
decis1es do)=sticas e cotidianas do tipo SE gcondioh ENTO gaoh SENO goutra aohM
distintas das )encionadas no teAto. !ode.oB SE _te.e3one est: tocando` ENTO _Atenda ao te.e3one`
SENO Vontinue estudandoV.
E@er55io .%.+ < 4ale 5o6igo
A.tere o a.(orit)o _Huarde todos os .e(o`M acrescentando instru1es de 3or)a 7ue o rob;M depois de
(uardar todas as peasM in3or)e a conc.uso.
$($)$ (ri75a7do de ro=I
Apro0eitando as id=ias da ,istEriaM 0a)os eAp.orar u) pouco as possibi.idades de u) rob;. Nos
eAerccios abaiAoM considere 7ue o rob; entende as se(uintes instru1esB
A7deMN passosU
2 - PENSANDO A PROGRAMAO &*
VireMN grausOM onde (raus positi0os re3ere)2se ao sentido ,or:rio.
As respostas dos eAerccios de0e) ter a 3or)a de u) a.(orit)oM co)o na ,istEria. @e>a u)
eAe)p.oB
E@e6plo .%.* < A7de e ?ire
"sando as instru1es Ande e @ireM e.abore u) a.(orit)o 7ue 3aa o rob; TO es7uerdaU a.canar o pote do
outro .ado. A .in,a trace>ada representa a )edida da distnciaM e) passos .
2olu("o+
Algoritmo BuscaOPote_2
Ande(10 passos)
Vire(90 graus)
Ande(3 passos)
Vire(-90 graus)
Ande(8 passos)
fim
E@er55io .%., < A7de e ?ire &
A(ora = sua 0e?B 3aa u) a.(orit)o se)e.,ante para o roteiro abaiAoB
E@er55io .%./ < A5:e o erro
O a.(orit)o abaiAo 3oi 3eito para o rob; ac,ar o pote por u) dos ca)in,osM )as cont=) erros. orri>a2o.
&, APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
Algoritmo BuscaOPote_com_erro
Ande(10 passos)
Vire(90 graus)
Ande(4 passos)
Vire(90 graus)
Ande(8 passos)
Vire(90 graus)
Ande(4 passos)
Vire(-90 graus)
Ande(8 passos);
fim
E@e6plo .%.. < Alter7ati?as
Na 3i(ura abaiAoM ,: u) obst:cu.oM e no se pode saber se o rob; pode passar at= 7ue e.e c,e(ue ao .oca..
%:M e.e de0e 0eri3icar se pode passarN se puderM prosse(ueM seno 0o.ta.
P
@eri3i7ue 7ue o a.(orit)o de0e ter os se(uintes passosB
"Ande at o local do obstculo"
"Se puder passar"
"Ande at o pote"
"Seno"
"Volte ao ponto de partida".
%e)bre2se de 7ue o rob;M diante de a.ternati0asM pode to)ar decis1esM na 3or)aB
Se <condio> ento
Aes
Seno
Outras aes.
onsu.tando o )anua.M 0eri3ica)os 7ue o rob; entende u)a instruo do tipo 0erdadeiro ou 3a.soM no
3or)ato Poss0e.T@erboUM onde 0erbo = u)a ao. ")a das a1es pode ser andarM ou se>aM a instruo
in3or)a 0erdadeiro 7uando o rob; pode dar u) passo e 3a.so 7uando no pode. o) essa instruoM
pode)os con0erter os passos aci)a para u) a.(orit)o 7ue o rob; entendaB
Algoritmo BuscaOPoteComDeciso;
Ande(6 passos)
Se Possvel(Andar) ento
Ande(6 passos)
Seno
Vire(180 graus)
Ande(6 passos);
fim.
2 - PENSANDO A PROGRAMAO &/
E@er55io .%.$ < Alter7ati?as duplas
@a)os ap.icar o co)ando de esco.,a para o percurso abaiAo. A(ora o rob; de0e se(uir por u) dos .adosM
0eri3icar se pode passar. Se puderM se(ueM caso contr:rioM 0o.ta e passa pe.o outro .ado. So)ente u) dos
.ados 0ai estar 3ec,ado.
P
P
o)o dicaM 0e>a a se7F8ncia b:sica das a1esB
"Ande at o obstculo da esquerda"
Se " possvel andar" ento
"Ande at o pote"
Seno
"Retorne e v at o pote pelo outro lado".
Note 7ue a.(u)as das a1es de0e) ser deco)postas para se c,e(ar a instru1es 7ue o rob; entende. 9aa
a(ora o a.(orit)o.
E@e6plo .%.%0 < Repeti89o
@a)os 0er a(ora co)o u) co)ando de repetio pode 3aci.itar o contro.e das a1es do rob;.
o)binando as instru1es Repita..At=27ue e u)a 0ariante de Poss0e.TUM a instruo $)poss0e.TUM para o
percurso abaiAo pode)os 3a?er o se(uinte Tpassando pe.a es7uerdaUB
Algoritmo AndandoComRepetio
Repita
Ande(1 passo)
At que mpossvel(Andar);
Vire(90 graus);
Repita
Ande(1 passo)
At que mpossvel(Andar)
Vire(-90 graus)
&. APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
Repita
Ande(1 passo)
At que mpossvel(Andar)
Vire(90 graus)
Ande(6 passos)
Vire(-90 graus)
Ande(6 passos)
fim
Note 7ue para a )aioria do percurso no precisa)os )ais saber 7uantos passos o rob; de0e darM o 7ue
se) dD0ida proporciona )uito )ais 3.eAibi.idade.
E@er55io .%.%% < A 5asa
E.abore u) a.(orit)o para 7ue o rob; percorra a VcasaV da 3i(ura abaiAo e ca)in,e at= o pote. 9aa u)a
esti)ati0a de passosM di(a)osM cada cent)etro na 3o.,a u) passo.
$($*$ Algorit6os
o)o 0oc8 0iu na ,istEria do rob;M a.(orit)os descre0e) padr1es de ao para se reso.0er u)
prob.e)a ou atin(ir u) deter)inado resu.tadoM usando u) repertErio de a1es dispon0eis. A e.aborao
de a.(orit)os = a a.)a da pro(ra)aoN boa parte desta consiste e) se ac,ar so.u1es 7ue possa) ser
i)p.e)entadas co) os recursos dispon0eis no co)putador e e) u)a .in(ua(e) de pro(ra)ao. O
persona(e) da ,istEria esta0a en0o.0ido e) e.aborar a.(orit)os para conse(uir 7ue o rob; 3i?esse o 7ue
7ueriaM assi) co)o 0oc8M nos eAercciosM esta0a en0o.0ido e) 3a?er o rob; c,e(ar at= o pote.
Todos esta)os 3a)i.iari?ados co) a.(orit)osM >: 7ue ap.ica)os 0:rios no dia2a2dia. Iuando 0oc8
decide 7ue 0ai a a.(u) .u(ar e esco.,e o )eio Ta p=M de carroM de ;nibusU e u) itiner:rioM est: e.aborando
u) a.(orit)o. Assi) co)o os a.(orit)os do rob;M 0oc8 eAecuta a1es TandarUM repete a.(u)a ao at=
7ue u)a condio se>a atin(ida Tandar at= c,e(ar ao destino ou a u) ponto inter)edi:rioU e to)a
decis1es T7ua. ca)in,o to)arM para onde 0irar e) encru?i.,adasU. At= 7uando pa7uera 0oc8 e.abora
a.(orit)osM e)bora possa no ter consci8ncia disto. E.e ou e.a )e interessa[ O 7ue 3a?er pri)eiroM 3.ertar
ou )andar u) bi.,etin,o[ Ta.0e? 0oc8 repita a.(uns co)porta)entos 7ue 3uncionara) e) outras
oportunidades Tou i)ite o padro de a.(u=)...U.
2 - PENSANDO A PROGRAMAO &$
E se sabe 3a?er 7ua.7uer coisa ao 3o(oM se>a 3er0er :(ua ou preparar )acarro O bo.on,esaM sabe
7ueM se no eAecutar certas a1es e) u)a deter)inada se7F8nciaM no 0ai atin(ir os resu.tados dese>ados.
!es)o para .er esta p:(ina est: usando a.(u) a.(orit)o. Assi)M a.(orit)o para 0oc8 = )ais u) no)e
no0o para a.(o 3a)i.iar.
")a p:(ina pode ser .ida de 0:rias )aneirasB a 7ue aprende)os na esco.aM a .eitura din)icaM a
3oto.eitura. Ou se>aM ,: 0:rios a.(orit)os de .eitura. O )es)o ocorre co) os a.(orit)os de co)putadorN
para u) )es)o prob.e)a ou resu.tado dese>adoM pode) ,a0er 0:rias so.u1es poss0eis. ") prob.e)a
)uito co)u) = ordenar u)a s=rie de 0a.ores e) orde) crescente ou decrescenteM co)o u)a .ista de N
no)es de c.ientes. ")a 3or)a de 3a?er isto = percorrer a .ista O procura do )aior e co.oc:2.o e) outra
.istaM repetindo isto N 0e?esM a cada 0e? esco.,endo o )aior dentre os 7ue restara). Para o prob.e)a da
ordenao ,: 0:rios outros a.(orit)osM co)o o da bo.,aM o 7uicP2sort e o ,eap2sortM cada u) apropriado a
u) tipo de situao. No caso de ir a a.(u) .u(ar pe.a pri)eira 0e?M 0oc8 e) (era. estar: procurando o
melhor a.(orit)o dentre 0:rias a.ternati0as para c,e(ar .:.
.%.'.% Represe7ta7do pro=le6as e situa8Aes
@oc8 ta)b=) >: con,ece 3or)as de representao de prob.e)as e padr1es de so.uoM co)o a da
)ate):tica. %e)bre2seM por eAe)p.oM das e7ua1es do se(undo (rauM co)o ' 1 -
+
= + % % . Para
representar todas essas e7ua1esM escre0e)os. Os coe3icientes aM b e c eApressa) 7ue os 0a.ores e) suas
posi1es pode) ser 7uais7uer. Para de3inir u)a e7uao do se(undo (rauM portantoM precisa)os saber
so)ente os coe3icientesM 7ue so o 7ue varia de u)a e7uao para outra. E para ac,ar as so.u1esM o
padro =
A 3Er)u.a aci)a indica o 7ue se de0e 3a?er para ac,ar as so.u1es usando os coe3icientesM ou
se>aM o padro de co)porta)ento 7ue se de0e se(uirM e = u) tipo de a.(orit)o. #esi(na)os co) nomes o
7ue = i)portante para descre0er a situao TaM bM cU e indica)os a so.uo por )eio de a.(u) tipo de
representao das a1es 7ue de0e) ser eAecutadas Topera1es )ate):ticasU. E 7uando 3or)os reso.0er o
prob.e)a para a.(u) caso espec3icoM troca)os os no)es pe.os respecti0os 0a.ores e eAecuta)os as
opera1es pre0istas.
#e )aneira (era.M u) a.(orit)o en0o.0e coisas ou o=HetosM e a8Aes sobre ou usando esses
ob>etos. Na e7uao aci)a os ob>etos so os coe3icientesM representados por suas .etrasM e as a1es so
e.e0ar ao 7uadradoM subtrairM so)arM di0idir. Na ,istEria do rob; os ob>etos era) .e(osM e as a1es era)
procurarM pe(arM co.ocarM a.=) de a1es de contro.eM co)o deciso e repetio. %e)bre2se do 7ue acontece
no Cindo6s 7uando c.ica co) o boto direito sobre u) ob>etoM co)o u) cone de ar7ui0oB aparece u)
)enu co) as a1es ou opera1es 7ue 0oc8 pode eAecutar sobre a7ue.e ob>eto.
Tudo se resu)e ento a duas per(untasB co)o representar ob>etos e co)o representar a1es sobre
os ob>etosM de uma #orma mais #cil e mais aroriada. No Cindo6sM representa2se ar7ui0os co)o cones
ou pe7uenas i)a(ensM e esta = u)a 3or)a 7ue a.(u=) considerou apropriada para .idar co) e.es. No
anti(o ensino pri):rioM u)a incE(nita de u) prob.e)a era representada por u) j. No nosso conteAto
co)putaciona.M os ob>etos so representados de 3or)a se)e.,ante O )ate):ticaM usando2se ?ari;?eis.
")a 0ari:0e. = u) no)e atribudo a u) 0a.or ou caracterstica para (enera.i?:2.o. Na e7uao do
se(undo (rauM VaV = o no)e dado ao coe3iciente do ter)o ao 7uadradoM 7ue representa todos os
coe3icientes poss0eis para o ter)o.
a
ac b b
%
+
/
+

=
'0 APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
Voc j usa variveis
=e<a como usamos variveis no dia a dia+ se voc vai comrar um saato,
o vendedor lhe er$unta+ !ual o seu n8meroB =oc er$unta+ !uanto
custaB O n8mero e o re(o s"o variveis !ue reresentam caracter'sticas
de um ob<eto, um saato. Outras variveis de um saato odem ser de
interesse, con#orme a essoa+ cor, marca ou altura do salto. Ao decidir se
a!uera ou n"o al$um, voc rocura "valores" ara certas variveis de
seu interesse+ se%o, idade, cor do cabelo, e or a' vai.
o)o 0oc8 >: 0iu na ,istEria do rob;M no conteAto da pro(ra)ao ,: )ais 3.eAibi.idade ao se dar
no)es a 0ari:0eis. ^ )uito )ais 3:ci. entender no)es co)o VNo)e.ienteVM Vodi(oProdutoV Tno se
usa acentos ne) espaosU e VontadorV do 7ue co) NM P ou .
O 7ue se pode 3a?er co) as 0ari:0eis de u) prob.e)a[ Henerica)enteM o 7ue se 3a? co)
0ari:0eis = ar)a?enar 0a.ores TVatribuioVU e recuperar 0a.ores ar)a?enados Tatra0=s do respecti0o
no)eU. Outras opera1es depende) do pape. da 0ari:0e.. SubtraoM por eAe)p.oM = u)a ao apropriada
para se 3a?er co) nD)eros. No caso de u)a pessoaM Vpe(arV = u)a ao apropriada para u)a pea de
.e(oM )as Vco)erV no parece ser. Assi)M as opera1es sobre as 0ari:0eis 0o depender do 7ue cont=) a
0ari:0e.B se representa u) nD)ero 7ua.7uerM pode2se 3a?er contas co) e.e. Se o nD)ero representa a
popu.ao de u)a cidade ou a 7uantidade de 3a.tas de u) a.unoM outras coisas pode) ser 3eitas.
E u)a 0e? 7ue se sabe o 7ue 3a?erM 7ua. = a )e.,or 3or)a de representar as a1es[ Para os nossos
propEsitosM 0oc8 pode i)a(inar u) a.(orit)o co)o u) VserV ou processador Tco) )e)EriaU 7ue recebe
u)a entradaM na 3or)a de 0ari:0eisM eAecuta a1es e produ? u)a sada ta)b=) na 3or)a de 0ari:0eis ou
u) resu.tadoB
A 1 e s
E n t r a d a
S a d a o u r e s u . t a d o
Para a e7uao do se(undo (rauM o dia(ra)a seriaB
a . c u . a r
r a ? e s
a M b M c
Z 1 M Z +
Se o a.(orit)o 0isasse u) desen,oM por eAe)p.oM no ,a0eria u)a sada na 3or)a de 0ari:0eis Te
ta.0e? 0oc8 desen,asse o prEprio crcu.o na seta da sadaU.
2 - PENSANDO A PROGRAMAO '%
Tendo a 0iso entradaSprocessa)entoSsadaM basta descre0er as a1esM para o 7ue ,: 0:rias
)aneiras. O prob.e)a da e7uao do se(undo (rauM por eAe)p.oM poderia ser descrito e) 3or)a de
narrati0aB V")a e7uao do se(undo (rau = representada co)o o produto de a pe.o 7uadrado de A )ais o
produto de b por A )ais cM tudo isto i(ua. a ?ero. Para ac,ar a pri)eira rai?M so)e )enos b co) a rai?
7uadrada do 7uadrado de b )enos o produto de / por a por cM di0idindo o resu.tado pe.o dobro de a...V. Se
3or esco.,ida a )ate):ticaM a so.uo ser: indicada pe.o 3Er)u.a aci)a. As opera1es no )uda)M sE a
3or)a de indic:2.asN ao in0=s de se escre0er V)enosVM por eAe)p.oM escre0e2se V2V. O rob; da ,istEria
entende VPe(arVM )as poderia entender co)o VPicPV se a sua .in(ua(e) 3osse baseada no in(.8s.
o)preender o !ue de0e ser 3eito = )ais i)portante do 7ue a representao.
Assi)M para representar u)a so.uo a.(ort)ica no ,: re(ras r(idasM 0oc8 0ai esco.,er a
)e.,or de acordo co) o conteAto e co) o 7ue con,ece. Pode ser a )ate):tica ou u)a narrati0aM co)o
aci)a. Pode ser co)o os a.(orit)os do rob;. EAiste) 3or)as )ais 0isuaisM co)o o 3.uAo(ra)a e o
dia(ra)a de ,apin T0er por eAe)p.o Hui)ares e %a>esU. Se )uitas decis1es de0e) ser to)adas e)
se7F8nciasM pode2se usar u)a :r0ore de deciso T0e>a o captu.o .4U. @oc8 pode usar u)a 3or)a sua de
eApressoM pode )isturar tudo e pode in0entar co)andos. As diretri?es principais so usar a.(o 7ue 0oc8
con,ea e 3icar prEAi)o ao 3or)ato estruturado das .in(ua(ens de pro(ra)ao To 7ue 0oc8 sE pode 3a?er
7uando con,ecer u)aU. E.aborar u) a.(orit)o pode ser u) (rande pra?erM 7ue no de0e ser pre>udicado
por nen,u)a re(ra r(ida.
No decorrer do te%to reresentaremos al$oritmos de #ormas livres e
variadas, incluindo comandos arecidos com os da histria do rob?,
dia$ramas, seudo;comandos Ccomo "armazene 1 na varivel ,ontador"D
e outros !ue ser"o descritos. ,on#ira tambm as dicas ara elabora("o e
o andice com #erramentas de ensamento.
E@er55io .%.%& < Re5o7:e5e7do a8Aes so=re o=Hetos
Para cada ob>eto abaiAoM identi3i7ue duas opera1es 7ue 0oc8 pode e3etuar sobre ou co) cada u)B
aU Te.e0iso
bU %:pis
cU %i0ro
dU arro
eU Tesco.,a u)U
E@er55io .%.%' D Vari;?eis de u6a p;gi7a
%oca.i?e e) u) processador de teAtos TCordM CordPer3ectM arta ertaU a parte de con3i(urao de
.aYout de p:(inaM e identi3i7ue pe.o )enos / 0ari:0eis 7ue o pro(ra)a usa para representar u)a p:(ina.
E@er55io .%.%+ < Vari;?eis de etiFueta
Obser0e ou 3aa u) es7ue)a de u)a 3o.,a para i)presso de eti7uetas e identi3i7ue as 0ari:0eis 7ue
seria) i)portantes caso 0oc8 3osse 3a?er u) a.(orit)o para i)pri)ir nesse tipo de 3o.,a. Por eAe)p.oB
7uantidade ,ori?onta.M a.tura da eti7ueta. $ndi7ue e) u)a 3i(ura as 0ari:0eis encontradas.
E@er55io .%.%* < Orde7a7do
Ordene os se(uintes con>untosM procurando obser0ar co)o o 3a?B
aU Os dedos de sua )oM pe.o ta)an,o
bU $de)M pe.a espessura
'& APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
cU As pa.a0ras desta 3raseM por 7uantidade de .etras
E@er55io .%.%, < Algorit6o para 5oQi7:a
$denti3i7ue a.(o si)p.es 7ue saiba 3a?er na co?in,a TV3er0er :(uaVM V3ritar u) o0oVU e descre0a2o co)o
u) a.(orit)oB entrada necess:riaM processa)ento e sada ou resu.tado.
$($+$ Ati?idades suple6e7tares
E@er55io .%.%/ < Apaga7do as luQes
9aa u) a.(orit)o para 7ue o rob;M no es7ue)a de casa aci)aM percorra todos os c;)odos e 0eri3i7ue se
cada .)pada est: acesa. Se esti0erM e.a de0e ser apa(ada. onsidere a instruo AcesoTob>etoUM 7ue
retorna 0erdadeiro ou 3a.soM e Apa(ueT%)padaU. Para 7ue o rob; possa 0eri3icar u) c;)odoM e.e de0e
dar pe.o )enos u) passo dentro de.e.
E@er55io .%.%. < #oletrar te6 algorit6oP
Obser0e a se(uinte a3ir)aoB
"A estrat$ia t'ica de soletra("o das essoas roduzir uma ima$em interna da alavra e .er cada
letra. .ma evidncia disso o olhar #i%o E #rente da essoa en!uanto est soletrando".
@oc8 ac,a 7ue o procedi)ento descrito pode ser considerado u) a.(orit)o[ Se si)M descre0a2o e)
ter)os de entradaM processa)ento e sada.
''
$) O PRO!ESSO "E PRO'RAMAR
O processo de e.aborar u) pro(ra)a23onte e) u)a .in(ua(e) de a.to n0e.M na 0erdadeM = apenas
u)a parte da pro(ra)ao. Saber o 7ue o pro(ra)a de0e 3a?erM e saber 0eri3icar se o pro(ra)a 3a? o 7ue
de0e e n"o 3a? o 7ue n"o de0e so etapas inte(rantes de 7ua.7uer pro>eto de i)p.e)entao. E so
independentes da .in(ua(e) uti.i?ada.
Neste captu.o 0oc8 0ai 0er tEpicos 7ue so i)prescind0eis a 7ua.7uer pro(ra)ador e O
e.aborao de 7ua.7uer pro(ra)a. on,ecer e saber usar este )ateria. tornar: tudo )ais 3:ci.M e no
con,ec82.os pode rea.)ente tornar todo o resto i)poss0e..
$)$($ EstratRgia geral de progra6a89o
Pense no seu corpoN o 7ue i)a(ina[ Pro0a0e.)ente pensou no seu corpo inteiroM u) todo. Este
todo pode ser 0isto e) u) n0e. de estruturaoB cabeaM tronco e )e)bros. Ao .er issoM 0oc8 de0e ter
i)a(inado essas partes. A(ora 3oca.i?e os )e)brosB estes ta)b=) pode) ser 0istos de u)a 3or)a
estruturadaB braos e pernas. A(ora i)a(ine u) brao e suas partes... ontinuandoM passare)os pe.o n0e.
3isio.E(ico e pe.os n0eis ce.u.arM )o.ecu.arM at;)ico e = poss0e. descer ainda )ais.
#e 3or)a an:.o(aM 0oc8 pode obser0ar o uni0ersoM u)a (a.:AiaM u) siste)a so.arM
u) p.anetaM u) continenteM u) pasM u) estadoM u)a cidadeM u) bairroM u)a casaM u) 7uarto
e...0oc8 praticando pro(ra)aoW @ideo(a)es t8) 3asesM 7uebra2cabeas t8) peasM .i0ros t8)
captu.os e por a 0ai.
Assi) co)o tantas coisas na 0idaM ao pro(ra)ar co)putadores
precisa)os se$mentar as coisas at= 7ue as partes ten,a) u) ta)an,o
ad)inistr:0e.M ao a.cance da nossa inte.i(8ncia e capacidade atuais. O ta)an,o de
cada parte 0ai depender do 7ue 7uere)os e sabe)os 3a?er.
Esta estrat=(ia = usada por u) pro(ra)ador e) todos os n0eisM co)o 0oc8 0er: nas
se1es se(uintes.
E@er55io .&.% D #eg6e7ta89o
$denti3i7ue di0is1es de cada ite)B
aU ") >orna.
bU ") co)putador
cU ")a esco.a
dU O te)po
eU ")a 3rase
'+
,omo diretriz $eral, lembre;se de !ue, se al$um resultado dese<ado n"o
estiver sendo atin$ido, rovavelmente o momento de se$mentar, de
dividir o roblema em artes menores.
$)$)$ Etapas da progra6a89o
@oc8 >: te0e contato co) a.(uns pro(ra)as prontos. @iu 7ue u) pro(ra)a 3a? a.(u)as coisasM
outro 3a? outras di3erentes. @iu co)o so os pro(ra)as por 3oraM na 0iso do usu:rioM e >: sabe 7ue o 7ue
produ? esses e3eitos no co)putador = u) pro(ra)a eAecut:0e.M pro(ra)ado ori(ina.)ente co)o u)
pro(ra)a23onteM 7ue 3oi con0ertido para .in(ua(e) de ):7uina.
@oc8 >: te) no1esM portantoM dos e.e)entos 3unda)entais da pro(ra)ao de co)putadoresB a
especi3icaoM 7ue di? o 7ue o pro(ra)a de0e 3a?erN o resu.tado 3ina.M 7ue = o pro(ra)a 3uncionando no
co)putadorN e o pro(ra)a23onte propria)ente dito. ") pro(ra)ador est: en0o.0ido co) esses tr8s
e.e)entos. E.e parte da especi3icao e pro>eta u) pro(ra)aM a partir deste pro>eto i)p.e)enta u)
pro(ra)a eAecut:0e. e o testa para 0er se atende O especi3icao T3i(uraU. Este = o pri)eiro n0e. de
se()entao da pro(ra)ao.
E # P E C I 4 I C A ! O
P R O G R A M A
P R O S E T A D O
P R O G R A M A
4 O N T E
I M P L E M E N T A R
T
E
S
T
A
R
P
R
O
J
E
T
A
R
A especi3icao indica os ob>eti0os do pro(ra)adorM o !ue 3a?er. O pro(ra)a pro>etado = o e3eitoM
o 7ue ser: 0isto por seus usu:riosM isto =M 0isto por 3ora. E o pro(ra)a23onte = o comoB instruo a
instruoM co)ando a co)andoN = a causa 7ue 0ai 3a?er co) 7ue acontea o e3eito.
$)$*$ Espe5iCi5a89o do progra6a
/-ode me dizer, or #avor, !ue caminho devo e$arB3
/1eende ara onde voc !uer ir3, disse o $ato.
/N"o me imorta muito onde...3, disse Alice.
/Ent"o n"o imorta o caminho !ue voc e$ue3,
resondeu o $ato.
A.ice no Pas das !ara0i.,as
%e6is arro..
3 - O PROCESSO DE PROGRAMAR '*
")a pessoa pode diri(ir u) auto)E0e. de pe.o )enos duas )aneirasB co) destino ou se)
destino. Se no ,: destino de3inidoM a pessoa pode andar a es)o por ,oras a 3ioM 0irando para 7ua.7uer
direo 7ue .,e der na cabeaM 7ue no 3ar: )uita di3erena. Por=)M se a pessoa sai de casa pretendendo ir
a a.(u) .u(arM a direo para onde 0ai deter)inar: se 0ai ou no c,e(ar ou se c,e(ar: co) atraso. $sso
0a.e ta)b=) para certos e7uipa)entos do)=sticosB ao pro(ra)ar a (ra0ao de u) 0ideocasseteM por
eAe)p.oM 0oc8 ter: e) )ente u)a descrio precisa do 7ue 7uerM co)o por eAe)p.oB
/Fravar o ro$rama !ue ser transmitido no dia 47.14.0G, das
41+60 Es 46 horas, no canal :".
@oc8 ta)b=) sabe eAata)ente 7ua. = o produto 3ina.B u)a 3ita (ra0ada co) o pro(ra)a
dese>ado. Re3.ita por u) )o)ento co)o 0oc8 conse(uiria pro(ra)ar o 0ideocassete se) a.(u)a das
in3or)a1es aci)a.
#e 3or)a an:.o(aM )uitos pro(ra)adores senta)2se diante de u) )icroco)putador para
pro(ra):2.oM se) de3inir precisa)ente aonde 0o c,e(ar. !uitos a.unos perde) pontos e) pro0as
por7ue no .8e) ou no 3a?e) tudo 7ue est: sendo pedido. $sso ocorre ta)b=) e) outras discip.inas 7ue
no pro(ra)ao. E )uitos pro(ra)as pro3issionais so de0o.0idosM (erando custos eAtras e atrasosM pe.o
)es)o )oti0oB 3ora de especi3icao. Assi) co)o na 0ida pessoas se) ob>eti0os e) (era. dispersa)
suas ener(iasM pro(ra)adores se) u)a especi3icao ade7uada so 0ia de re(ra dispersadores de ener(iaM
7ue pode) dedicar ,oras ou dias para pouco produ?ir de e3eti0a)ente Dti..
PortantoM a pri)eira coisa a se ter e) )ente ao pro(ra)ar co)putadores = saber o 7ue ser: 3eitoM
u)a descrio ob>eti0a do 7ue se espera 7ue u) pro(ra)a 3aaM c,a)ada especificao. ")a
especi3icao cont=) as caractersticas e deta.,es re.e0antes de u) pro(ra)aB o 7ue entraM o 7ue saiM
instru1es para c:.cu.osM podendo inc.uir ta)b=) 3i(uras e dia(ra)as i.ustrati0os. A especi3icao indica
o ob>eti0o pri):rio do pro(ra)ador. ^ o ponto de partida e o ponto de c,e(ada. ^ a re3er8ncia para e.e
saber se est: certo ou erradoM e se est: pro(redindo ou no. erto = o 7ue atende O especi3icao.
EAe)p.os de especi3ica1es si)p.esB _a.cu.ar 3atoria.`M _#esen,ar
u) 7uadrado na te.a ou na i)pressora`M _Ordenar u)a .ista de 1'''
nD)eros e) orde) ascendente`M _Ro(ar o >o(o2da20e.,a`. Especi3ica1es
)ais co)p.eAas pode) en0o.0er 0:rias 3o.,asM docu)entosM es7ue)as e
3i(uras.
O =o6 progra6ador R Ciel 2 @oc8 pode ser u) pro(ra)ador
es3orado e dedicadoM a.=) de eAtre)a)ente criati0oM )as se no 3i?er o
7ue 3oi especi3icadoM estar: errado e ponto 3ina.. Por istoM deiAe 7ue crie
ra?es be) 3ortes na sua )ente o princpio da 3ide.idade O especi3icao.
Pri)eiro 3aa o 7ue .,e 3oi pedidoN depoisM se 7uiser e ti0er te)poM dedi7ue2
se a 3a?er a.(o a )ais.
Cara5tersti5as de u6a =oa espe5iCi5a89o D ")a especi3icao de0e ser 5orretaB se o
pro(ra)ador se(ui2.a ade7uada)enteM o pro(ra)a resu.tante produ?ir: resu.tados con3i:0eis e de acordo
co) o esperado. Por eAe)p.oM a especi3icao pode conter u)a 3Er)u.a para o c:.cu.o de >uros 7ue
cont=) u) sina. in0ertido. @oc8 pode ter sido 3ie. O especi3icaoM )as o pro(ra)a 3ar: c:.cu.os errados.
")a especi3icao ta)b=) de0e ser 5o6pletaM e) ter)os de seus ob>eti0os. Iuando co)p.etaM
cont=) todos os deta.,es necess:rios e su3icientes para 7ue o pro(ra)a possa ser e.aborado. ")a das
(randes causas de atrasos no desen0o.0i)ento de pro(ra)as so especi3ica1es inco)p.etasM 7ue obri(a)
o pro(ra)ador a re0er decis1es anterior)ente to)adasM co) todo o retraba.,o 7ue isso pode causar. Por
eAe)p.oM supon,a 7ue 0oc8 entre(ou o pro(ra)a dos >urosM prontoM para o usu:rio testar. E.e ento
', APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
descobre 7ue es7uecera de .,e in3or)ar 7ue o c:.cu.o dos >urosM e) u)a deter)inada =pocaM era 3eito de
3or)a di3erente. %: 0ai 0oc8 ento a.terar o pro(ra)a e testar tudo de no0o.
O progra6ador de?e to6ar de5isAes k No )undo rea.M eAiste a possibi.idade de 7ue a
especi3icao este>a inco)p.eta ou erradaM por 3atores 3ora do contro.e do pro(ra)adorM co)o en(anos do
especi3icador ou erros de di(itao.
No caso de especi3ica1es inco)p.etasM as in3or)a1es no sero su3icientes para a produo de
u) pro(ra)a co)p.eto. @:rias o)iss1es ocorre) no a)biente esco.arB a especi3icao nor)a.)ente
o)ite deta.,es a respeito de 3or)atao de te.a e outros aspectos 7ue no 3aa) parte da ess8ncia do
prob.e)a. No caso de u) pro(ra)a 7ue ca.cu.e as ra?es de u)a e7uao do se(undo (rauM por eAe)p.oM
no i)porta TeAceto se especi3icadoU se o 3a? e) u)a >ane.aM se .i)pa ou no a te.aM ou se u)a )ensa(e)
de erro 3ica piscando na te.a por 5 se(undosM desde 7ue as ra?es se>a) ca.cu.adas correta)ente. O
aprendi? de0e ento decidir por si )es)o co)o 0ai i)p.e)entar o pro(ra)aM suprindo as o)iss1es.
H imortante comreender !ue, ao ver ela rimeira vez uma
eseci#ica("o, o ro$ramador est no $rau mais suer#icial de
entendimento. Este vai aumentando E medida !ue se l, se estuda, se
discute e se evolui na imlementa("o.
"Aantenho seis servidores honestos, eles me ensinaram tudo o !ue sei. 2eus nomes s"o+ O !u e -or
Iu e Iuando e ,omo e Onde e Iuem".
RudYard dip.in(
E@er55io .&.& D Re?is9o
Assina.e @ para as a3ir)a1es 0erdadeiras e 9 para as 3a.sasB
T U ")a especi3icao indica ao pro(ra)ador o 7ue 3a?erM )as no necessaria)ente co)o.
T U E0entua.)ente o pro(ra)ador ter: 7ue to)ar certas decis1es sobre o 7ue 3a?er no pro(ra)a
de0ido a o)iss1es da especi3icao.
T U E0entua.)ente o pro(ra)ador no poder: to)ar certas decis1es sobre o 7ue 3a?er no
pro(ra)a de0ido a o)iss1es da especi3icao.
T U O pro(ra)ador de0e )odi3icar a especi3icao para tornar o pro(ra)a )ais si)p.es e 3:ci.
de i)p.e)entar.
T U O pro(ra)ador no de0e se i)portar se a especi3icao est: co)p.eta ou noM se)pre poder:
cu.par depois 7ue) 3orneceu a especi3icao.
E@er55io .&.' < Cara5tersti5as de espe5iCi5a8Aes
o)p.ete os espaosB
aU !ais i)portante 7ue ser criati0o = o pro(ra)ador ser \\\\\\\\\\\\\\\ O especi3icao.
bU ")a boa especi3icao de0e ser \\\\\\\\\\\\\\\ e \\\\\\\\\\\\\\\\\.
cU ")a das (randes causas de atraso na entre(a de pro(ra)as so especi3ica1es
\\\\\\\\\\\\\\\\\\\\.
E@er55io .&.+ < #e7do espe5Ci5o
@oc8 pode de3inir especi3ica1es precisas Tpe.o )enos para 0oc8U para tare3as do)=sticasM co)oB
3 - O PROCESSO DE PROGRAMAR '/
/-e$ar o ,1 azul da EnnJa e reroduzir a #ai%a 6 duas vezes3
#e3ina especi3ica1es deta.,adas para as tare3as abaiAoB
aU Preparar u) .anc,e da tarde.
bU Estudar u) tEpico de u)a discip.ina Tespeci3i7ue 7ua.U.
cU Preparar u)a )a.a para 0ia(e).
E@er55io .&.* < #eu dia
E.abore u)a especi3icao das suas ati0idades para u) prEAi)o dia Dti.. ApEsM 3aa u)a crtica da
co)p.ete?a e correo. ApEs 0i0er esse diaM 0eri3i7ue o 7uanto 3oi 3ie. ao p.ane>a)ento 3eito.
$)$+$ ProHeto de progra6as
"=oc ode realizar tudo !ue ode conceber3
E0a PierraPosM e) O Ca6i7:o da Autotra7sCor6a89o.
O 3ato de ,a0er especi3ica1es decorre e) (era. de ,a0er a.(u=) 7uerendo u) pro(ra)a e no
sabe ou no 7uer 3a?82.oM e ento pede para u) pro(ra)ador. Nesta situaoM e e) 7ua.7uer outra e) 7ue
o pro(ra)a no 3oi concebido pe.o prEprio pro(ra)adorM este precisa entender o 7ue o outro 7uerM para
7ue possa atend82.o. A )e.,or 3or)a de 3a?er isto = criar u)a 0iso do resu.tado 3ina.M 7ue a7ui
c,a)a)os de ro<etar o pro(ra)a.
Ao 0er pe.a pri)eira 0e? a especi3icaoM 0oc8 est: no ponto e) 7ue disp1e da )enor 7uantidade
de in3or)a1es. Se est: co)eando e no te) )uita eAperi8nciaM pode ter u) VbrancoV ou u) VpretoV
tota.. $sto = natura.N 7uando inicia)os a.(oM 0oc8 sabe 7ue = pre0is0e. 7ue tere)os a.(u)a di3icu.dadeM
)uito )ais pe.a 3a.ta de in3or)ao 7ue por 3a.ta de ,abi.idade. Ta)b=) = co)u) ocorrere) no incio
erros de interpretao da especi3icaoM 7ue 0o sendo esc.arecidos O )edida 7ue se prosse(ue. No =
ne) necess:rio c,a)ar isto de VerrosVB se pre3erirM c,a)e de Vinterpreta1es iniciaisV.
Todos esses 3atores re)ete) a u) sE pontoB = preciso e.aborar u) pro>eto do pro(ra)aM conceber
co)o e.e 3icar: 7uando pronto. $)a(ineM por eAe)p.oM 7ue u) >o(o de co)putador de0e ser pro(ra)ado.
o)o ser: )ais 3:ci. 3a?er istoM co)eando de a.(u)as 3rases no pape. ou depois de >: ter V>o(adoV o
>o(o a.(u)as 0e?es na cabea[ Na 0erdadeM nen,u) pro(ra)ador conse(ue 3a?er u) pro(ra)a se) t82.o
na )enteN o 7ue Os 0e?es ocorre = 7ue o desen,o 0e) se) 7ue precise)os pensar consciente)ente ne.eM o
7ue = inc.usi0e e0id8ncia de )aior )aturidade.
Para pro>etar pro(ra)asM 0oc8 precisa saber co)o so os pro(ra)as e o 7ue = poss0e. 3a?er co)
e.es e co) o co)putador. Parte da eAperi8ncia 0oc8 >: te0eM ao eAperi)entar os pro(ra)as de
de)onstraoN 0e>a )ais a se(uir.
.&.+.% O Fue os progra6as CaQe6
<asica)ente o 7ue os pro(ra)as 3a?e) so co)bina1es das se(uintes opera1esB
#ada k Pro(ra)as )ostra) ao usu:rio instru1es ou resu.tadosM na te.a ou e) outro peri3=rico de
sada. Pode) ta)b=) 3a?er a.(u) tipo de 3or)atao ou desen,o na te.a.
E7trada k Pro(ra)as e3etua) .eituras de dados Tu) nD)eroM u) teAtoM u)a tec.aUM nor)a.)ente
di(itados pe.o usu:rio. ApEs .idoM u) dado = (uardado na )e)Eria para 7ue possa ser usado depois.
'. APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
De5isAes k #iante de a.ternati0asM os pro(ra)as to)a) decis1esB o a.uno passou[ O nD)ero .ido
= 0:.idoM ou se>aM est: dentro de u)a 3aiAa de 0a.ores esperada[ Iua. opo do )enu de0e ser eAecutada[
Repeti89o k Por 0e?es os pro(ra)as repete) a.(o 7ue 3i?era) anterior)enteM sE parando 7uando
a.(u)a condio 3or atin(ida. E) u) )enuM por eAe)p.oM o pro(ra)a sE de0e parar 7uando 3or di(itada
a opo 7ue indica o t=r)ino.
C;l5ulos e outras 5o6puta8Aes k a.(u)as coisas 7ue u) pro(ra)a 3a? pode) no estar 0is0eis.
Por eAe)p.oM e) u) pro(ra)a 7ue ca.cu.e ra?es de e7ua1es do se(undo (rauM na te.a 0o aparecer
)ensa(ens pedindo para in3or)ar os coe3icientes da e7uao e para )ostrar os resu.tadosM )as o c:.cu.o
3eito no = indicado.
.&.+.& Tipos de progra6as
Ta.0e? 0oc8 este>a 3a)i.iari?ado co) pro(ra)as para Cindo6sM co) barras de )enus e de
3erra)entasM bot1esM conesM caiAas de di:.o(os e outros tipos de ob>etos. Os pro(ra)as 7ue 0ere)os a7ui
no possue) a te.a e) )odo (r:3icoM co)o no Cindo6sM e si) e) )odo teAto. Neste )odo a te.a =
di0idida e) .in,as e co.unasM assi)B
T E Z T O \
Z Z Z Z Z
Z Z
Z Z
2 2 2 Z Z
l l Z Z Z Z Z
2 2 2
E) cada posio da te.a pode)os apresentar u) caractereM co)o AM iM WM mM l e outros )enos
co)uns. Toda te.a e) )odo teAto possui u) cursorM 7ue 3ica piscando e) a.(u)a posio. X: di3erentes
)odos teAtoM sendo o nor)a. 5' co.unas e +5 .in,as.
Esta te.a = caracterstica do siste)a operaciona. !S2#OS Te suas 0aria1esUM 7ue era o padro dos
Ps antes do Cindo6s. O #OS eAecuta so)ente u) pro(ra)a de cada 0e?M e todos os pro(ra)as
co)parti.,a) a )es)a te.aM ao contr:rio do Cindo6sM no 7ua. cada pro(ra)a te) sua >ane.a. @e>a )ais
sobre #OS e) outro captu.o O 3rente.
Progra6as T6;Fui7as de es5re?erT
,a)a)os os pro(ra)as
de se!Kenciais 7uando sua te.a =
3or)ada de )aneira parecida co)
u)a ):7uina de escre0er. O teAto
aparece de ci)a para baiAoM u)a
.in,a de cada 0e?. @e>a ao .ado u)
eAe)p.o de te.a de pro(ra)a
se7Fencia.. O pro(ra)a pede o
no)eM o usu:rio di(ita o no)e e
tec.a Enter. #epois o pro(ra)a
pede para di(itar a discip.inaM a
nota e 3ina.)ente in3or)a se o
Entre nome:
Fulano
Entre disciplina:
Linguagem
Entre nota:
6
Fulano, Voc passou em Linguagem
3 - O PROCESSO DE PROGRAMAR '$
a.uno passou ou noM ter)inando e) se(uida. ApEs cada di(itao o usu:rio do pro(ra)a tec.a Enter para
in3or)ar a conc.uso.
Pr;ti5a .&., < Co7:e5e7do progra6as seFUe75iais
EAecute o pro(ra)a de de)onstrao. Se.ecione a opo VPro(ra)as por tipoV e depois VPro(ra)as
se7FenciaisV. EAecute os pro(ra)as )ostrados.
Progra6as 5o6 6e7us
X: pro(ra)as 7ue apresenta) a.(u)as op1es na te.aM e o usu:rio de0e esco.,er o 7uer 3a?er. O
pro(ra)a de de)onstrao = u) desses. O )enu pode ser ,ori?onta. ou 0ertica.M e )ais ou )enos
so3isticadoB pode) per)itir 7ue o usu:rio esco.,a o 7ue 7uer 3a?er por u)a .etra ou nD)eroM pode)
destacar a opo co) u)a cor di3erente ou bri.,o. ada se.eo pode condu?ir a u)a ao ou a outro
)enu secund:rio. ") esti.o )uito 3:ci. de i)p.e)entar = o de )enus si)p.es e 0erticaisM co)o o da
3i(ura abaiAo.
Pr;ti5a .&./ < Co7:e5e7do progra6as 5o6 6e7us
EAecute o pro(ra)a de de)onstrao T7ue = orientado a )enusU. Se.ecione a opo VPro(ra)as por tipoV
e depois VPro(ra)as co) )enuV. EAecute os pro(ra)as )ostrados.
Outros tipos
X: pro(ra)as 7ue no se(ue)
os padr1es 0istosN a3ina.M no ,: re(ras
r(idas sobre co)o os pro(ra)as
de0e) 3uncionar. ") eAe)p.o = o
pro(ra)a 7ue 3a? desen,os se(undo os
)o0i)entos 7ue o usu:rio 3a? co) o
cursor atra0=s das setas do tec.adoM cu>a
te.a pode ser 0ista ao .ado.
MENU PRINCIPAL
0 - Termina
1 - Cadastro de programas
2 - Programas por tipo
3 - Programas por categoria
Tecle sua opo:_
+-----------+


+--------+----+

+-------+--------+



---------+

+--------------------+
+0 APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
Pr;ti5a .&.. < Co7:e5e7do outros estilos de progra6as
EAecute o pro(ra)a de de)onstrao. Se.ecione a opo VPro(ra)as por tipoV e depois VPro(ra)as
0ariadosV. EAecute os pro(ra)as )ostrados.
.&.+.' Estrutura de progra6as
No i)porta 7uais opera1es os pro(ra)as eAecute)M ne) 7ua. o seu tipoN todos te) u)a
estruturaM e pode) ser 0istos de u)a 3or)a se()entada. Na 0iso )ais (era.M os pro(ra)as t8) - partes
ou se1esB inicia.i?aoM principa. e 3ina.i?aoB
$ n i c i a . i ? a o
o ) a n d o s
S e o
p r i n c i p a .
9 i n a . i ? a o
@e>a o 7ue cada u)a e) (era. pode conter2
I7i5ialiQa89oB Iuase todos os pro(ra)as t8) a.(o a 3a?er 7uando inicia). Pode ser si)p.es)ente
)ostrar na te.a o 7ue 3a? ou o no)e do pro(ra)adorM e inicia.i?ao de a.(u)as 0ari:0eis. A.(unsM co)o
o Cord ou o Cindo6sM )ostra) u)a te.a de apresentao. Os )ais e.aborados 3a?e) abertura de
ar7ui0os e recuperao de dados da sesso anteriorM (ra0ados no disco. Se o pro(ra)a eAi(e sen,aM .er e
0eri3ic:2.a ser: u)a das pri)eiras coisas a 3a?er. X: pro(ra)as 7ue 3a?e) tudo isso.
#e89o pri75ipalB A7ui = 3eito o 7ue de0e ser e3eti0a)ente 3eitoM e pode ser si)p.es ou be)
co)p.eAo. Nos pro(ra)as )ais si)p.esM a7ui = 3eita a .eitura de a.(u) dado e rea.i?ado o 7ue 3oi pre0isto
na especi3icao. E) outros casosM os pro(ra)as entra) e) u) estado de esperaB )ostra) u)a te.a co)
u) )enuM por eAe)p.oM e o usu:rio de0e co)andar a.(o ou in3or)ar o 7ue 7uer 3a?erM se>a atra0=s de u)a
tec.a nor)a. ou de 3uno ou c.i7ues de )ouse. O pro(ra)a eAecuta o 7ue 3oi co)andado e 0o.ta para
esperar outro co)ando.
4i7aliQa89oB X: coisas 7ue precisa) ser 3eitas antes 7ue certos pro(ra)as possa) sair da
)e)Eria se) prob.e)asB 3ec,a)ento de ar7ui0osM )ensa(ens de t=r)inoM (ra0ao de dados da sesso
para uso posterior. X: u) insta.ador de u) pro(ra)a co)ercia. 7ueM antes de ter)inarM )ostra u)a
)ensa(e) baseada na ,ora e no dia da se)anaB se de )an,M V<o) diaWVM se apEs )eio2diaM VTen,a u)a
boa tardeVM e se seAta23eiraM V<o) 3i) de se)anaWV.
Nos pro(ra)as )aioresM pode)os se()entar o produto 3ina. e) te.asM e cada te.a e) opera1esM
co)o )ostrar u) teAtoM .er a.(o do tec.ado ou e3etuar u) c:.cu.o.
o)o eAe)p.oM considere a se(uinte especi3icaoB
3 - O PROCESSO DE PROGRAMAR +%
As notas de uma #aculdade s"o atribu'das or bimestre, tendo o rimeiro bimestre eso 4 e o
se$undo eso 6. A nota semestral deve ser arredondada ara o m8ltilo de 0,7 mais r%imo. Elabore
um ro$rama !ue calcule a nota #inal.
O pri)eiro n0e. de estruturao do pro(ra)a 3ica assi)B
$ n i c i a . i ? a o
: . c u . o d e
n o t a 3 i n a .
a . c u . a r n o t a
3 i n a .
9 i n a . i ? a o
O b.oco principa. ainda est: )uito (en=rico. a.cu.ar a nota co) base e) 7u8[ E o c:.cu.o da
)=dia ponderada[ E o arredonda)ento[ Sero necess:riosM portantoM outras etapasB .er as notas
bi)estraisM ca.cu.ar a )=dia ponderadaM arredond:2.a e 3ina.)ente )ostrar o resu.tado na te.a. O dia(ra)a
3ica assi)B
$ n i c i a . i ? a o
: . c u . o d e
n o t a 3 i n a .
a . c u . a r n o t a
3 i n a .
9 i n a . i ? a o
% e r n o t a s
b i ) e s t r a i s
a . c u . a r ) = d i a
p o n d e r a d a
A r r e d o n d a r
) = d i a
! o s t r a r n o t a
3 i n a .
A se()entao at= esse n0e. per)itiu identi3icar os a.(orit)os 7ue de0e) ser so.ucionadosB
dadas as notasM co)o ca.cu.ar a )=dia ponderadaM e dada u)a notaM co)o arredond:2.a para o )D.tip.o de
'M5 )ais prEAi)o. Estas so so.u1es 7ue independe) do pro(ra)aM e pode) ser desen0o.0idas antes de
se iniciar o pro(ra)a23onte.
E@er55io .&.$ D Progra6a 5o6er5ial
Esco.,a a.(u) pro(ra)a co)ercia. 7ue >: usou ou use e descre0a a1es 7ue o pro(ra)a eAecuta ou 0oc8
sup1e 7ue e.e eAecuta na inicia.i?ao e na 3ina.i?ao.
E@er55io .&.%0 D Diagra6as de =lo5os
9aa u) dia(ra)a de b.ocos para a se(uinte especi3icaoB
+& APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
Elabore um ro$rama !ue l um n8mero de 1 a 0 e mostra a tabuada de multilica("o do n8mero. -or
e%emlo, ara o 7+
5 A 1 n 5
5 A + n 1'
...
5 A 1' n 5'
.&.+.+ ProHeta7do progra6as
Ao 3a?er u) pro>eto 0oc8 est: de3inindo a apar8ncia 7ue o pro(ra)a ter: para o usu:rio. @oc8
estar: 0endo o pro(ra)a co)o u)a caiAa pretaM >: 3uncionando. Para issoM 0oc8 identi3ica 7ue opera1es
o pro(ra)a 0ai rea.i?arM co)bina essas opera1es e) u)a ou )ais te.as de sada eM se necess:rioM 3a?
dia(ra)as de b.ocosM tudo isso de u)a 3or)a 7ue atenda O especi3icao. Ao deta.,ar as situa1esM de3ina
dados 0ariados de entradaM 7ue pro0o7ue) o pro(ra)a no ):Ai)o de situa1es poss0eis Tcasos de testeU.
on0=) identi3icar ta)b=) os a.(orit)os en0o.0idos no pro(ra)aM e ac,ar so.uo para e.es antes de
iniciar a i)p.e)entao propria)ente dita.
@oc8 de0er: buscar respostas ade7uadas para as se(uintes per(untasB
O !ue vou ver ao e%ecutar o ro$rama < rontoB
O !ue aarece rimeiro, e aondeB
Iue in#orma()es #orne(o ao ro$ramaB Em !ual se!KnciaB O !ue acontece as eu
#ornecer cada in#orma("oB Iue in#orma()es o ro$rama me aresentaB
,omo termina o ro$ramaB
Iue al$oritmos ocorrem no ro$ramaB L e%iste uma solu("o ou vou desenvolver umaB
Iuais os casos e situa()es com !ue vou testar o ro$ramaB
@e>a)os u) eAe)p.o de pro>etoM dentro dos nossos ob>eti0os. A especi3icao = a se(uinteB
/Elaborar um ro$rama !ue l uma lista de valores inteiros ositivos e, !uando lido zero,
in#orma !ual #oi o maior e o menor n8mero lido3
Sentado e) 3rente ao
co)putadorM 0oc8 eAecuta o
pro(ra)a. A te.a = .i)paM e
aparece u)a )ensa(e)B _Entre
u) nD)ero inteiro`. @oc8 di(ita
o nD)ero 5/ T7ue aparece na
te.aUM e tec.a Enter. #e no0o a
)ensa(e)M abaiAo do nD)ero
5/M e 0oc8 entra co) 1+. $sso se
repete a.(u)as 0e?esM at= 7ue
0oc8 entra co) ?ero eM apEs
tec.ar EnterM aparece) as
)ensa(ens Tos nD)eros so
eAe)p.osUB _O )aior nD)ero 3oi
+-/` e _O )enor nD)ero 3oi 1+`M
Clculo de maior e menor nmeros de uma lista.
Entre um nmero inteiro positivo
54
Entre um nmero inteiro positivo
12
Entre um nmero inteiro positivo
234
Entre um nmero inteiro positivo
0
O maior nmero foi 234
O menor nmero foi 12
3 - O PROCESSO DE PROGRAMAR +'
e o pro(ra)a = encerrado. Para re(istrar as in3or)a1es obtidasM 0oc8 poderia esboar a te.aM 7ue 3icaria
)ais ou )enos co)o na 3i(ura.
Para este pro(ra)a no ,: u)a condio de ter)inao eAp.citaN e.e ter)inar: apEs )ostrar o
)enor nD)ero.
Opciona.)ente 0oc8 poderia ter co)eado pe.a se()entao do pro(ra)aM identi3icando os
se(uintes b.ocosB
"Mostrar mensagem informativa da finalidade do programa"
"Ler lista de nmeros, parando quando for digitado zero"
"Mostrar o maior nmero lido"
"Mostrar o menor nmero lido"
O pro(ra)a aci)a en0o.0e o a.(orit)o para ac,arM dentre u)a .ista de nD)erosM o )aior e o
)enor. O a.(orit)o ser: di3erenteM con3or)e o pro(ra)a ar)a?ene na )e)Eria toda a .istaM para depois
buscar a so.uoM ou se ar)a?ena o )aior e o )enor .idos at= o )o)ento.
E) outros casosM 0oc8 ter: )ais possibi.idades. onsidere a especi3icao abaiAoB
"Mmlementar um ro$rama !ue reetidamente l os coe#icientes a, b e c de uma e!ua("o do
se$undo $rau e, se o delta #or ositivo, calcula as ra'zesN se o delta #or zero, calcula a raiz 8nicaN se o
delta #or ne$ativo, mostra uma mensa$em,. O ro$rama termina !uando os coe#icientes #orem zero."
") es7ue)a da te.a Tse7Fencia.U do pro(ra)a poderia ser co)o a se(uir. Obser0e 7ue o
deta.,a)ento da te.a pre0iu as tr8s situa1es poss0eis para o de.ta Te 7uando o pro(ra)a entrar e) testesM
0oc8 >: ter: dados para test:2.oU.
A(ora considere u)a especi3icao 7ue di? 7ue o pro(ra)a de0e si)u.ar u) iOi se )o0endo pe.a
te.aM da es7uerda para a direita e de ci)a para baiAo. o)o 0oc8 deta.,aria esta te.a[ ")a possibi.idade =
Entre zeros para terminar.
Entre coeficientes a, b e c, separados por um espao:
1 1 1
A equao no possui razes reais
Entre coeficientes a, b e c, separados por um espao:
1 -3 2
As razes so -1.00 e -2.00
Entre coeficientes a, b e c, separados por um espao:
1 -6 9
A nica raiz -3.00
Entre coeficientes a, b e c, separados por um espao:
0 0 0
++ APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
0isua.i?ar )enta.)ente a te.a. Se no conse(uirM pode 3a?er u) dia(ra)a da te.a co) setas indicando
Tco)o 3or poss0e.U as dire1es do )o0i)ento.
O Fue R 6es6o Fue este progra6a CaQP 2 @a)os 0er u) eAe)p.o de co)o o pro>eto 7ue 0oc8
de3ine para o pro(ra)a a3eta o usu:rio. Supon,a 7ue 0oc8 eAecuta u) pro(ra)a e se depara co) a
se(uinte te.aB
Para 7ue ser0e cada opo[ Se 3oi 0oc8 7ue) 3e? o pro(ra)aM e isto ocorreu recente)enteM 0oc8
pode at= saberM caso contr:rio 3icar: co) u) i)enso ponto de interro(ao na testa. o)pare a te.a aci)a
co) estaB
"9embre;se dos !uebra;cabe(as+ s"o muito mais #ceis !uando voc ode ver toda a #i$ura rimeiro".
H. #rYden e Reanette @os
Programa para testar funes matemticas
Opes:
0 - Fim
1 - Fatorial
2 - Pi
3 - Tangente
Sua opo: _
Entre opo (1, 2 ou 3, 0 para terminar): _
3 - O PROCESSO DE PROGRAMAR +*
E@er55io .&.%% < ProHeta7do u6 5:urras5o
@oc8 >: de0e ter 0i0ido a eAperi8ncia de pro(ra)ar u) c,urrascoM .e0ando 0:rias coisas para o .oca.B
espetosM c,urras7ueiraM car0oM ta.,eresM a carneM etc. !as durante o c,urrascoM descobre 7ue acabou
es7uecendo a.(u)a coisa i)portanteB ta.0e? a toa.,a de pape.M ou o :.coo. ou outra coisa necess:ria para
acender o car0o. O 7ue 0oc8 poderia 3a?er para no es7uecer nada[ ")a coisa a 3a?er seriaM ao p.ane>ar
ou pe(ar os apetrec,osM i)a(inar o c,urrasco acontecendoB a.(u=) acende o car0oM a.(u=) prepara e
corta a carneM a.(u=) ser0e a carneM a.(u=) a co)eM >unta)ente co) arro?M 0ina(rete e...cad8 a 3aro3a[
Iue) 3icou de tra?er a 3aro3a[
o) base no teAto da seoM identi3i7ue o 7ue 3a?er c,urrascos te) e) co)u) co) e.aborar pro(ra)as.
E@er55io .%.%& < Outras apli5a8Aes
O tipo de 0isua.i?ao descrita no teAto pode ser ap.icado ao p.ane>a)ento de u) c,urrasco e ao
desen0o.0i)ento de pro(ra)asM e certa)ente ,: outros conteAtos e) 7ue pode ser Dti.M co)o por eAe)p.o
para pro>etar as poss0eis conse7F8ncias de u)a deciso. $denti3i7ue dois outros conteAtos ou ati0idades
e) 7ue 0oc8 poderia uti.i?:2.a para p.ane>ar a.(o ou se antecipar a e0entuais prob.e)as. onc.uaB 0oc8
ac,a 7ue esta t=cnica pode ser Dti. e) sua 0idaM de )aneira (era.[
E@er55io .&.%' < ProHeta7do progra6as si6ples
Pro>ete pro(ra)as 7ue atenda) Os especi3ica1es abaiAo. _EAecute` o pro(ra)a para pe.o )enos +
entradas di3erentes.
aU %8 dois nD)eros e ca.cu.a o seu produto
bU %8 u) nD)ero 7ua.7uer e in3or)a a )etade e o dobro do nD)ero .ido
cU %8 dois nD)eros 7uais7uer e in3or)a sua so)a e sua di3erena
dU %8 dois nD)eros 7uais7uer e in3or)a sua so)aM di3erenaM produto e 7uocienteM 3or)atados co)
+ casas deci)ais
eU %8 u) nD)ero Tsupon,a 7ue = positi0oU e in3or)a seu 7uadradoM rai?M .o(arit)o e eAponencia.M
3or)atados co) / casas deci)ais
E@er55io .&.%+ D Me7u
#esen,e u) es7ue)a de te.a e u) dia(ra)a de b.ocos para u) pro(ra)a 7ue )ostra u) )enu
centra.i?ado na te.aM co) as op1es abaiAoB
>'tuloB !enu Re.atErios
O()esB 1 2 Por no)eM + 2 Por cEdi(oM - 2 Por dataM / 2 9i)
E@er55io .&.%* < ProHeta7do progra6as 5o6 de5isAes
ada especi3icao abaiAo en0o.0e a.(u) tipo de deciso entre a.ternati0as. 9aa pro>etos para cada u)aM
co) pe.o )enos situa1es 7ue inc.ua) todas as a.ternati0as.
aU %8 u) nD)ero 7ua.7uer e in3or)a se o dobro do nD)ero .ido = )aior do 7ue 1''
bU %8 dois nD)eros 7uais7uer e in3or)a se o pri)eiro = )aior do 7ue o se(undo
cU %8 dois nD)eros 7uais7uer e in3or)a se o pri)eiro = )aiorM i(ua. ou )enor do 7ue o se(undo
dU %8 u) nD)ero 7ua.7uer e in3or)a se o nD)ero .ido est: no inter0a.o de ' a 1''
eU %8 u) nD)ero 7ua.7uer e in3or)a se o nD)ero .ido est: nos inter0a.os de ' a 1' ou +' a -'
3U %8 tr8s nD)eros e in3or)a 7ua. dos tr8s = o )aior
+, APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
(U %8 a renda de u)a pessoa e ca.cu.a u) i)postoM co) base na tabe.a de a.7uotas abaiAo.
At= 1.+''M'' isento
de 1.+'1M'' a 5.'''M'' 1'o
de 5.''1M'' a 1'.'''M'' 15o
aci)a de 1'.'''M'' +'o
E@er55io .&.%, < ProHeta7do progra6as 5o6 repeti89o
As especi3ica1es abaiAo cont=) repetio de co)andos. E.abore pro>etos de te.a para cada u)a.
aU !ostra os nD)eros de 1 at= 1'' e depoisM na .in,a de baiAoM de 1'' at= 1
bU %8 u) nD)ero e )ostra os nD)eros de 1 at= o nD)ero .idoM e e) se(uida na orde) decrescente
cU !ostra todos os 0a.ores pares entre dois nD)eros .idos
dU !ostra a 7uantidade de 0a.ores pares entre dois nD)eros .idos
eU %8 7ua.7uer 7uantidade de nD)eros e )ostra a so)a dos nD)eros .idos. O D.ti)o = ?ero
3U %8 7ua.7uer 7uantidade de nD)eros e )ostra sua so)aM 7uantidade e a )=dia arit)=tica dos
nD)eros .idos. O D.ti)o = ?ero e no de0e ser considerado.
(U %8 u)a co.una eM se 0:.idaM )ostra u)a _.in,a` 0ertica. na co.una .idaM desen,ada co) caracteres
_Z`
,U Se)e.,ante ao anteriorM )as .8 o caractere 7ue = usado para desen,ar a .in,a
E@er55io .&.%/ D Dese7:o
E.abore u) es7ue)a de te.a para a se(uinte especi3icaoB
*a(a um ro$rama !ue desenha um "O" na linha 7, coluna 1 e deois #az o se$uinte, eserando
uma tecla ara cada a("o Csemre na linha 7D+
aa$a o "O" da coluna 1 e o mostra na coluna 4
aa$a da coluna 4 e mostra na 6
; aa$a da 6 e mostra na 5
E assim sucessivamente at a coluna 17.
$)$,$ Vis9o geral de u6 progra6aDCo7te
O pro(ra)a23onte 0ai ser u) resu.tado direto do pro>etoB u)a 0e? 7ue 0oc8 ten,a de3inido as
opera1es 7ue sero eAecutadasM 0ai poder identi3icar as instru1es e co)andos da .in(ua(e) 7ue 0ai
precisar. E) a.(uns casosM = i)ediatoM a u)a operao corresponde u)a instruo. E) outrosM sero
necess:rias duas ou )ais instru1es.
Ao e.aborar pro(ra)as23onteM se()enta)os as a1es at= atin(ir u) n0e. e) 7ue ,: a.(u)
co)ando dispon0e. na .in(ua(e). E e) (era.M o pro(ra)a23onte corresponde a u)a se()entao )ais
deta.,ada do pro>etoB = u)a continuao.
As instru1es e) u) pro(ra)a so be) parecidas co) as 7ue 0oc8 0iu na ,istEria do rob;. Por
eAe)p.oM u) pro(ra)a para cadastro de pro(ra)asM co)o o de de)onstrao desta aposti.aM te)
co)andos na se7F8ncia abaiAoM representados na 3or)a de pseudo2co)andos Tt8) u)a estrutura e
3or)ato uni3or)eM )as no so co)andos de nen,u)a .in(ua(e)U. o)pare co) a te.a a se(uir.
3 - O PROCESSO DE PROGRAMAR +/
repita
"Limpe a tela"
"Mostre na tela o ttulo do menu"
"Mostre a opo 0 do menu"
"Mostre a opo 1 do menu"
"Mostre a opo 2 do menu"
"Mostre a opo 3 do menu"
"Mostre a mensagem 'Tecle sua opo:' "
"Leia do teclado a opo do usurio"
Se a opo for 1, ento ... (comandos para executar a opo)
Seno se a opo for 2, ento ...(idem)
Seno se a opo for 3, ento ...(ibidem)
at que a opo digitada seja 0.
E) a.(u)as situa1es ne) a te.a ne) o dia(ra)a de b.ocos 3ornece) pistas para os co)andos a
usar. Neste casoM de0e2se e.aborar u) a.(orit)oM te)a de u) captu.o prEAi)o.
$)$-$ Teste e Fualidade de progra6as
@:rias coisas 7ue 3a?e)os te) a caracterstica deM a partir de u) ob>eti0oM ir a>ustando as a1es
at= atin(i2.o. Ao (uiar u) carroM por eAe)p.oM 3a?e)os todo o te)po pe7uenos a>ustes no 0o.ante. Ao
apertar u) para3usoM pode)os tentar co) u)a c,a0e de 3enda pe7uenaN se no derM pe(a)os u)a )aior
ou ap.ica)os )ais 3ora ou co.oca)os u)a substncia 0iscosa no para3usoM ou todas essas a.ternati0as.
Pro(ra)ar co)putadores te) )uito dessa caracterstica de 3a?er a>ustesM >: 7ue di3ici.)ente so)os
per3eitos ao e.aborar )enta.)ente os pro(ra)as.
Por istoM u)a das etapas )ais i)portantes da pro(ra)ao = a 0eri3icao de 7ue o pro(ra)a
atende aos ob>eti0osM O especi3icao. onsiderando 7ue 3a?er produtos de 7ua.idade = essencia. para
7ua.7uer pessoa 7ue pretenda (an,ar a 0idaM 3a?er u) no)e no )ercadoM rea.i?ar2se e tantas outras coisas
7ue constitue) ideaisM 7ua.7uer pro(ra)ador de0e ter e) )ente u) propEsito 3ir)e e inaba.:0e. de testar
be) seus pro(ra)as e aper3eioar2se cada 0e? )ais nesta ,abi.idade.
Tipos de erros 2 @:rios tipos de erros pode) ocorrer e) u) pro(ra)aB
MENU PRINCIPAL
0 - Termina
1 - Cadastro de programas
2 - Programas por tipo
3 - Programas por categoria
Tecle sua opo: _
+. APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
Erros devidos a eseci#ica()es incomletas ou simlesmente erradasN
Erros de l$ica
Erros devido E #alta de dom'nio da lin$ua$em de ro$rama("o. ="o diminuindo com a
e%erinciaN
Erros acidentais, como or e%emlo e%cluir sem erceber uma linha de cdi$o, ao #azer uma
altera("o.
O custo da correo de u) erro e) u) pro(ra)a = tanto )aior 7uanto )ais adiantado se est: no
desen0o.0i)ento. Para corri(ir u) erro no pape. basta reescre0erN corri(ir u) erro de u) pro(ra)a >:
co)pi.ado eAi(e )uito )ais a.tera1es e cuidadosN e corri(ir erros de u) pro(ra)a >: e) uti.i?ao por
seus usu:rios pode ser desastroso.
O Fue R testar D X: 0:rias de3ini1es de testeM cada u)a ade7uada a u)a 3ina.idade. #e 3or)a
(era.M todas se re3ere) a )edidas de 7ua.idade de pro(ra)as. Para nossos propEsitos introdutEriosM a
se(uinte de3inio de teste = satis3atEria T!YersM 1*&*UB
>estar o rocesso de e%ecutar um ro$rama com a inten("o de encontrar
erros.
$sto i)p.ica 7ueM ao testar u) pro(ra)aM 0oc8 no estar: buscando pro0ar 7ue e.e est: correto ou
7ue 0oc8 = u) Eti)o pro(ra)ador. @oc8 estar: co) u) esprito Vdestruti0oVM o contr:rio do 7ue 3e? ao
e.aborar o pro(ra)a. !as 0oc8 sE poder: saber o 7ue est: errado se ti0er u)a re3er8ncia do 7ue = certoM e
esta re3er8ncia = a especi3icao e seu deta.,a)ento.
A eAecuo do pro(ra)a no = necessaria)ente no co)putadorN na 0erdadeM te)os duas etapas
e) 7ue se busca a 7ua.idade. A pri)eira = a veri#ica("o manualM 3eita no pape. antes )es)o da di(itaoM
7ue pode e0itar )uito desperdcio de te)poM e pode ser 3eita tanto para os a.(orit)os 7uanto para o
pro(ra)a. A se(undaM o teste propria)ente dito, = 3eito no pro(ra)a eAecut:0e.. A)bos de0e) ser
preparadosN se o pro>eto 3oi be) 3eitoM os dados de teste >: estaro prontos.
E%ecutar manualmente os rascunhos dos ro$ramas n"o imortante
somente ara revenir erros. Ao #azer isso, voc vai estar desenvolvendo a
habilidade de se$uir e e%ecutar mentalmente as instru()es, o !ue
conse!Kentemente melhora a sua rria habilidade de ro$ramar.
")a das 0anta(ens da ati0idade de pro(ra)arM e) re.ao a outrasM = 7ue est: dentro do contro.e
do pro(ra)ador asse(urar 7ue o seu produto est: correto. Testar ade7uada)ente seus produtos = a (rande
(arantia 7ue u) estudante pode ter de suas notasM e que u pro!raa"or profissio#a$ po"e %er "e seu
epre!o. A.=) dissoM saber 7ue seu produto 3ina. ser: ade7uada)ente testado per)ite )aior .iberdade ao
pro(ra)adorM durante o desen0o.0i)entoM de criarM eAperi)entar e arriscar co) tran7Fi.idade. @e>a a si
)es)o co)o u) pro(ra)ador pro3issiona. e co) pro(ra)as sendo usados por )uitos usu:riosM e
i)a(ine co)o poderia 0ariar a 7ua.idade do seu sonoM por eAe)p.oM e) 3uno de ter ou no se(urana a
respeito da correo de seus produtos. Haranta a sua 7ua.idade de 0idaB testeM teste e teste sE )ais u)a
0e? para se certi3icarM e depois pea a u) co.e(a para testar ta)b=).
@oc8 pode )e.,orar ou piorar a 7ua.idade do teste si)p.es)ente e) 3uno do 7ue pressup1e ao
3a?82.o. R: presenciei situa1es Te ta)b=) as 0i0encieiWU e) 7ue u) pro(ra)a no 3unciona
ade7uada)enteM e o pro(ra)ador respons:0e. 3ica est:ticoM di?endo a.(o co)o _mas n"o oss'vel` ou
_mas o ro$rama est certoO`. A conse7F8ncia de pressupor 7ue o pro(ra)a est: correto nor)a.)ente =
o pro(ra)ador 3icar se) pontos de partida para descobrir erros. E 0oc8 pode ter u)a certe?aB se houver
al$um erro no ro$rama, ele aarecer !uando estiver em uso. Por issoB
3 - O PROCESSO DE PROGRAMAR +$
Ao testar um ro$rama, ressuonha !ue h elo menos um erro, e !ue
voc deve encontr;lo ; antes !ue outro menos indicado o #a(a.
") co)ent:rio 3ina. sobre teste de pro(ra)asB at= 7ue se>a eAecutado e) u) co)putadorM u)
pro(ra)a pode conter prob.e)as 7ueM se) eAperi8nciaM 0oc8 di3ici.)ente detectaria. Por eAe)p.oM
supon,a 7ue 0oc8 3e? u) pro(ra)aM corretoM 7ue si)u.a u) caractere se )o0endo pe.a te.aM da direita
para a es7uerda e 0ice20ersa. Ao eAecut:2.oM descobre 7ue o caractere se )o0e to r:pido 7ue )a. pode
082.oW Precisa ento inc.uir instru1es 7ue retarde) o )o0i)ento para u)a 0e.ocidade co)pat0e. co) a
capacidade dos o.,os ,u)anos. Por issoM e na opinio deste autorM o con,eci)ento )ais consistente 7ue
0oc8 poder: obter no 0ir: so)ente de .i0rosN 0ir: da pr:ticaM dos errosM dos prob.e)as e desa3ios 7ue
0oc8 0encer.
Resu)o das diretri?es para testar pro(ra)asB
,onscientize;se da imort@ncia de testar bem seus rodutos.
=eri#i!ue manualmente o ro$rama antes de di$it;loN
Ao testar, suonha !ue h um erro e voc tem !ue descobri;loN
Arenda com os errosN
,onscientize;se !ue seu emre$o vai deender da !ualidade dos seus rodutos.
Ao testar seus pro(ra)asM no se es7uea de ap.icar e praticar as diretri?es su(eridas. Produtos de
7ua.idade atrae) 0a.ori?ao pro3issiona. e )e.,ores oportunidadesM e 0oc8 pode i)a(inar o 7ue isso
representa.
.&.,.% O Fue testar
O 7ue 0oc8 procura ao testar pro(ra)as[ O pro(ra)ador = o 7ue )e.,or con,ece os ca)in,os
internos do pro(ra)aM e potencia.)ente = o )e.,or testador. A.(u=) 7ue est: 0endo o pro(ra)a por 3ora
0ai testar as opera1es 7ue o pro(ra)a eAecuta. @e>a u)a .ista (en=ricaB
2e o ro$rama tem menus, teste o acesso a cada o("o e teste cada o("o.
>este todas as entradas com dados variados, rocurando descobrir al$o !ue o ro$rama n"o
rev.
=eri#i!ue se as mensa$ens de orienta("o est"o ade!uadas.
2e o ro$rama #az clculos ou $era in#orma()es, con#ira tudo, con#rontando com o resultado
#eito de outra maneira+ E m"o, calculadora ou outro meio.
2e o ro$rama ede n8meros, entre com letras ara ver o !ue acontece.
2e o ro$rama indica o !ue deve ser di$itado, di$ite al$o di#erente.
2e o ro$rama reete al$o, #a(a;o reetir muitas vezes mais do !ue o normal.
2e o ro$rama $rava no disco, elimine seus ar!uivos C#a(a um bacPu antesD. >ermine o
ro$rama e e%ecute;o novamente, e ve<a se reservou os dados como deveria.
*a(a er$untas rovocativas+ "O !ue ode estar erradoB", ",omo osso #urar este
ro$ramaB"
*0 APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
%e)bre2se de 7ue a re3er8ncia principa. = a especi3icaoN se e.a no pre08 0a.ida1es de entrada
de dadosM por eAe)p.oM o pro(ra)a no estar: errado se 3a.,ar nisto. E se o pro(ra)a passar nos testesM
no se es7uea de cu)pri)entar o pro(ra)adorW
E@er55io .&.%. < Re?is9o
Assina.e @ ou 9B
T U O teste pode ser considerada a etapa )ais i)portante da pro(ra)aoM >: 7ue erros nas etapas
anteriores pode) ser percebidos nesta.
T U Pressupor 7ue o pro(ra)a possui erros = u)a atitude )ais e3iciente ao se testar pro(ra)as.
T U ") pro(ra)ador 7ue testa be) seus pro(ra)as pode ser )ais dese>:0e. para u)a e)presa do
7ue u) 7ue pro(ra)a )ais rapida)ente.
T U Pro(ra)as pode) ser escritos se) errosM )as = )ais pro0:0e. 7ue os conten,a).
T U @eri3icar )anua.)ente os pro(ra)as ace.era a aprendi?a(e) de u)a .in(ua(e) de
pro(ra)ao.
E@er55io .&.%$ < Tipos de erros
#escre0a os tipos de erro 7ue pode) ocorrer e) u) pro(ra)a.
Pr;ti5a .&.&0 < Testa7do progra6as
A 0erso atua. do pro(ra)a de de)onstrao dessa aposti.aM Vademo.e%e"M no = )uito robustaM no
sentido de 7ue no est: preparada para a.(uns tipos de prob.e)as. Teste o pro(ra)a se(undo as
orienta1es desta seo e descubra pe.o )enos tr8s desses prob.e)as.
$)$.$ Ati?idades suple6e7tares
E@er55io .&.&% < Trei7a7do a i6agi7a89o
@oc8 pode )e.,orar a sua capacidade de pro>etar u) pro(ra)a por )eio de eAerccios e) outros
conteAtos. Para a0a.iar e praticar essa ,abi.idadeM concentre2se nas i)a(ensM sons e sensa1es su(eridas
abaiAoM durante pe.o )enos 15 se(undos cada u)aB
aU $)a(ine u)a criana >o(ando bo.a
bU $)a(ine u) a)i(o de in3ncia
cU $)a(ine u)a 3o.,a sendo .e0ada pe.o 0ento
dU $)a(ine a.(u=) sorrindo
eU Oua o so) de u)a pessoa ca)in,ando pe.o as3a.to
3U Oua sua )Dsica 3a0orita
(U Oua o baru.,o de u) tro0o
,U Sinta o ca.or da :(ua no c,u0eiro
iU Sinta a areia da praia escorrendo entre seus dedos
>U Sinta o peso dos seus sapatos
PU Sinta o c,eiro de peiAe 3rito
.U Sinta o sabor de u) cubo de (e.o
)U Sinta o c,eiro de ca3= no0o
3 - O PROCESSO DE PROGRAMAR *%
nU Sinta o sabor de u)a 3atia de .i)o
T9onteB Ana !aria RossiM =isualiza("o. Ed. Rosa dos Te)posM 1**5U
E@er55io .&.&& < Ide7tiCi5a7do o6issAes 7a espe5iCi5a89o
#escubra as inconsist8ncias ou o)iss1es nas especi3ica1es abaiAoB
aU $)p.e)entar u) pro(ra)a para reso.0er o se(uinte prob.e)aB u)a sa.a te) A a.unos e Y a.unas.
Iua. = a idade do pro3essor[
bU Escre0er u) pro(ra)a 7ue )o0e u) Z na te.a e para 7uando a.(u)a tec.a 3or pressionada.
cU E.aborar u) pro(ra)a 7ue ca.cu.e rai? 7uadrada de nD)eros reais.
dU Escre0er u) pro(ra)a 7ue .i)pa e desen,a na te.a u)a .in,a 0ertica. de ta)an,o 5'M 3or)ada
por caracteres ili.
E@er55io .&.&' < Re5o7:e5e7do 5o6a7dos
Obser0e a te.a a se(uir e indi7ue os pontos onde ,ou0e instru1es de sadaM de entradaM deciso e 7uais
instru1es esto sendo repetidas.
E@er55io .&.&+ D Vo5G 5o6o lder
$)a(ine 7ue 0oc8 = o .der ou coordenador de u) pro>etoM e u) pro(ra)ador subordinado a 0oc8
entre(ou u) pro(ra)a aos c.ientesM e estes rec.a)ara) 7ue a.(uns itens da especi3icao no 3ora)
atendidos. O 7ue 0oc8 3aria[
E@er55io .&.&* D Cai@a auto6;ti5o
9aa u) pro>eto para a especi3icao abaiAo.
.m cai%a automtico recisa calcular !uais e !uantas notas devem ser entre$ues ao cliente ara e#etuar
a retirada dese<ada. *a(a um ro$rama com o()es ara+
- Qeceber notas de 10 e 70 Ca !uantidade inicial zero ara ambasD
Clculo de raiz quadrada de nmeros quaisquer
Digite um nmero real (0 para terminar): 100
A raiz de 100.00 10.00
Digite um nmero real (0 para terminar): 33
A raiz de 33.00 5.74
Digite um nmero real (0 para terminar): -4
Nmero invlido
Digite um nmero real (0 para terminar): 0
*& APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
- 9er o valor da retirada e mostrar a !uantidade de notas de 10 e de 70 a serem entre$ues. 2e
al$uma das !uantidades n"o #or su#iciente, o ro$rama cancela a oera("o, com uma
mensa$em aroriada
- Aresentar relatrio com as !uantidades de notas e valor total dison'vel, e valor total de
retiradas e#etuadas.
E@er55io .&.&, D Atitudes
E) u) a)biente pro3issiona. de pro(ra)ao ,: 0:rias situa1es 7ue a3eta) as atitudes do pro(ra)ador.
Ana.ise as situa1es apresentadas abaiAo e 0i0encie antecipada)ente a.(u)as de.as Tapro0eite a(ora 7ue
as conse7F8ncias so )enoresWUB
aU Supon,aM 3aa de conta ou 3in>a 7ue o pro(ra)a est: correto e 3aa u)a auto2obser0aoB o 7ue
te) 0ontade de 3a?er[
bU A(ora supon,a 7ue ,: u) erro no pro(ra)a e no0a)ente se obser0e. X: di3erenas[
cU $)a(ine 7ue 0oc8 = o pro(ra)ador e 7ue est: co) o no)e )eio su>oN seu c,e3e .,e disse 7ue
)ais u) pro(ra)a co) erros e... ruaW o)o ac,a 7ue procederia neste caso[
& trs #ormas de um ro$ramador n"o conse$uir sucesso+ n"o !uerer,
n"o conhecer a lin$ua$em de ro$rama("o ou n"o saber o !ue #azer.
*'
$* O AM1IENTE TUR1O PAS!A#
@oc8 0iu no captu.o anterior 7ue todo pro3issiona. de0e dispor de 0:rias 3erra)entas para (erar
produtos de boa 7ua.idadeM co) boa produti0idade. A.=) das 3erra)entas inte.ectuais e e)ocionaisM na
caiAa do pro(ra)ador de0e ,a0er u) bo) co)pi.adorN a.=) dissoM 7uanto )e.,or 0oc8 con,ec82.oM
)e.,or 0ai produ?ir.
Neste captu.o 0oc8 0ai con,ecer u) pouco do Turbo Pasca. &.'M cu>a .in(ua(e) e recursos de
pro(ra)ao constitue) a base deste traba.,o.
$*$($ O Tur=o Pas5al
O Turbo Pasca. = )ais do 7ue u) si)p.es co)pi.adorN = u) a)biente inte(rado de
desen0o.0i)ento. $sto 7uer di?er 7ueM atra0=s de u)a Dnica inter3aceM 0oc8 pode 3a?er tudo 7ue precisa
para i)p.e)entar pro(ra)as. Esse a)biente inte(rado co)preendeB
Editor de teAtos
A>uda on2.ine
o)pi.ador
#epurador Tdebu((erU
EAe)p.os
EAtens1es da .in(ua(e)
@ere)os a7uiM de 3or)a resu)idaM u) subcon>unto apenas das op1es do a)biente Turbo Pasca.
para #OSM o su3iciente para 0oc8 3a?er seus pri)eiros pro(ra)as. Nos prEAi)os captu.os sero
apresentados outros co)andos e 3unciona.idades. o)o e) todo treina)entoM = i)poss0e. passar todos
os deta.,es. O )e.,or 7ue 0oc8 pode 3a?er = V3uarV de 0e? e) 7uando nos )enus e na a>udaM aos poucos
descobrindo as possibi.idades.
$*$)$ I7stala7do o Tur=o Pas5al
O Turbo Pasca. &.' = apresentado e) dois dis7uetes. Para insta.:2.oM = necess:rio ter no )ni)o
u) co)putador +54 co) #OS -.' TWU e 4 !< .i0res no discoM >: inc.udo o espao de traba.,o da
insta.ao. @oc8 no de0e ter prob.e)as se insta.ar e eAecut:2.o sob Cindo6s.
Para iniciar a insta.aoM insira o pri)eiro dis7uete e eAecute o pro(ra)a Mnstall.e%eM a partir do
Cindo6s ou do #OS. Se 0oc8 aceitar o diretErio padro Treco)end:0e.UM o insta.ador criar: o diretErio
TpastaU BSTP e a.(uns subdiretErios. ApEsM se.ecione a opo #tart I7stallatio7. Tro7ue o dis7uete
7uando so.icitado.
X: tr8s co)pi.adoresB TP.EZE Tco)pi.ador de .in,a de co)andoM para ser usado a partir do
pro)pt do #OSUM TPZ.EZE e T"R<O.EZEM tendo os dois D.ti)os inter3ace de )enus. O TPZ cont=)
a.(uns recursos adicionais 7ue no so necess:rios neste cursoM cu>os pro(ra)as 3ora) todos testados no
*+
T"R<O.EZE. Para in3or)ar2se )e.,or sobre o TPZM eAecute o ar7ui0o REA#!E.O! no dis7uete de
insta.ao.
$*$*$ A5essa7do o Tur=o Pas5al
Para entrar no a)biente inte(radoM se esti0er no #OS ou e) u)a sesso do #OS no Cindo6sM
di(ite BpTPp<$NpT"R<O na .in,a de co)ando e tec.e Enter. Se esti0er no Cindo6sM c.i7ue e)
I7i5iarVE@e5utar e 3aa o )es)o ouM se ,ou0er u) coneM c.i7ue duas 0e?es no cone. aso contr:rioM
entre no Herenciador de Ar7ui0os ou no Cindo6s EAp.orerM c.i7ue na pasta de eAecut:0eis do Turbo
Pasca. TBpTPp<$NU e c.i7ue duas 0e?es no ar7ui0o tur=o.e@e. @oc8 estar: na te.a do editor de teAtos. ^
a7ui 7ue 0oc8 editaM co)pi.aM eAecuta e corri(e seus pro(ra)asM e ta)b=) onde obt=) a>uda atra0=s do
,e.p on2.ine. Se esti0er no )odo te.a c,eia T3u.. screenUM tec.e A.t2Enter para eAecuo e) >ane.a.
-ara criar um 'cone ara o >urbo -ascal no RindoSs, abra o RindoSs
E%lorer, arraste com o bot"o direito o ar!uivo e%ecutvel do >urbo
-ascal Cturbo.e%eD e solte;o na rea de trabalho ou em uma asta,
selecionando, no menu !ue aarece, a o("o "criar atalho a!ui". Outra
#orma clicar com o bot"o direito na rea de trabalho ou rea vazia de
uma asta, selecionar "novo" e "atalho" e di$itar o caminho
"cBptppbinpturbo.eAe" Cou o caminho correto, se di#erente do adr"oD.
A te.a cont=) no a.to a barra do )enu principa.. Se ,ou0er a.(u)a >ane.a de teAto abertaM a te.a
de0e estar a?u.M caso contr:rio estar: ,ac,urada co) pontos a?uis e) 3undo branco. @oc8 entra co)andos
c.icando na barra do )enu co) o )ouse ou atra0=s da tec.a A.t )ais u)a .etra. ada pro(ra)a23onte
ocupa u)a >ane.a de teAtoN 0oc8 pode abrir 0:rios pro(ra)as ao )es)o te)poM u) e) cada >ane.aM o 7ue
no = reco)endadoM principa.)ente 7uando ,: )ais de u)a >ane.a para o )es)o pro(ra)a. Nas .in,as
in3eriores da te.a 0oc8 te) a>uda para as tec.as de a.(uns co)andos )ais usados e e0entua.)ente
)ensa(ens ou orienta1es.
No centro da .in,a superior de u)a >ane.a de pro(ra)a 3ica o no)e de.e no #OSM isto =M co)o 3oi
(ra0ado no discoM )as se) a eAtenso TV.PASVU. Se aparece o no)e VNONA!E''VM a >ane.a = de u)
no0o ar7ui0oM e) brancoM criado pe.o Turbo Pasca.M 7ue 0oc8 pode usar. Ao sa.0:2.o pe.a pri)eira 0e?M
0oc8 dar: o no)e ade7uado.
Pr;ti5a .'.% < Vis9o geral do TP
#8 u)a VpasseadaV pe.os )enus do editor do Turbo Pasca.M apenas para 0er o 7ue ,: por .:M e respondaB
aU E) 7ue )enu est: a opo Desti7atio7[
bU E) 7ua. opo do )enu Optio7s 0oc8 con3i(ura o diretErio onde 0o 3icar os ar7ui0os eAecut:0eis[
$*$+$ Edita7do te@to
9a)i.iari?e2se co) a edio de teAtos no editor do Turbo Pasca. eAecutando as pr:ticas a se(uir.
Pr;ti5a .'.& < Edi89o de arFui?o 7o?o
1. Cria7do u6 7o?o arFui?o 2 Para iniciar a edio de u) pro(ra)a23onteM crie u) no0o ar7ui0oN para
issoM no editor do Turbo Pasca.M c.i7ue 4ileVNeE Tse >: ,ou0er u)a >ane.a co) o no)e NONA!E''M
no = necess:rioU. #i3ici.)ente 0oc8 usar: este co)ando. Para criar u) no0o pro(ra)aM nor)a.)ente
0oc8 0ai pre3erir abrir u) eAistenteM sa.0:2.o co) outro no)e e apro0eitar o 7ue puder do teAto >:
di(itado.
.3 - O AMBENTE TURBO PASCAL **
+. Edita7do te@to D Na >ane.a de teAtoM 0oc8 di(ita seus pro(ra)as. #i(ite o se(uinte teAto ou a.(u)
outro 7ue dese>eB
A IBM, na dcada de 50, era a empresa mais bem administrada do mundo, graas, em
grande parte, ao modelo do lendrio diretor-presidente, Thomas J. Watson.
Contaram-me um caso que mostra como Watson reagiu ao saber de um erro
multimilionrio de um de seus gerentes regionais. Ele chamou o gerente de vendas
sua sala para trocar algumas palavras. Quando terminou, o infeliz gerente
sentia-se surrado, mutilado.
EAperi)ente as tec.as de edio )ais usadasB
setasB )o0e) o cursor u)a .in,a ou co.una de cada 0e?
PgUpM PgD7B p:(ina aci)a e abaiAo
3o6eB cursor para o incio da .in,a
E7dB cursor para o 3i) da .in,a
I7sB a.terna entre inseroSsobreposio de caracteres di(itados
(a5Wspa5eM DeleteB apa(ar caracteres
CtrlDXB e.i)inar a .in,a do cursor
AltD(a5Wspa5e Tou EditSU7doUB des3a? a D.ti)a edio 3eita e) u)a .in,a
Tpreciosssi)aWU
-. Re5upera7do te@to e@5ludo por e7ga7o k Posicione o cursor e) u)a .in,a 7ua.7uer e eAc.ua2a
tec.ando tr.2c. EAperi)ente tec.ar a(ora A.t2<acPspaceM para recuperar a .in,a. Se no 3uncionarM
0eri3i7ue e) Optio7sVE7?iro76e7tVEditor se a opo VHroup "ndoV est: )arcada.
/. #al?a7do u6 7o?o arFui?o D Iuando 3or sa.0ar pe.a pri)eira 0e? u) pro(ra)aM 0oc8 te) 7ue dar
u) no)e a e.e. .i7ue e) 4ileV#a?e as. Na >ane.a 7ue apareceM di(ite o no)e do ar7ui0o onde ser:
(ra0adoM 7ue te) u) no)e2base de at= 5 .etras e u) tipo TeAtensoU de at= -M separados por u)
ponto. Para o no)e2baseM use at= oito .etrasM nD)eros e s)bo.osM se) espaos Tre(ras do #OSUN por
eAe)p.oB CATSON T)aiDscu.as ou )inDscu.asM d: no )es)oU. No use asterisco TqUM ponto T.UM
aspas TVUM co.c,etes Tr e sUM barra 0ertica. TlUM contrabarra TpU dois2pontos TBUM i(ua. TnUM ponto2e20r(u.a
TNUM so)a TtUM )enor e )aior 7ue Tg e hUM circun3.eAo TmU e interro(ao T[U. R: os tipos de ar7ui0os
sero se)pre .PASM e o Turbo Pasca. o co.ocar: para 0oc8.
.i7ue e) Od para (ra0ar o ar7ui0o.
Sa$va#"o arquivos #o &i#"o's ()*(+,
O RindoSs 07 ossui re$ras di#erentes das adotadas elo 1O2 ara
diretrios CastasD e ar!uivos. -ara atender os ro$ramas ara 1O2, ele
de#ine um nome dentro das re$ras deste. Este nome !ue deve ser usado
ara se salvar ar!uivos. -ara saber !ual , no RindoSs E%lorer, cli!ue
com o bot"o direito do mouse na asta dese<ada e selecione -roriedades.
O nome est indicado na roriedade "Nome do A2;1O2".
5. 4e5:a7do D Para encerrar a edio de u) pro(ra)aM c.i7ue no boto situado aci)a e O es7uerda da
>ane.a ou tec.e AltD4'. 2emre 3ec,e as >ane.as de pro(ra)as 7ue no esti0er usandoM para e0itar
poss0eis con3us1es. 9aa isto para o pro(ra)a 7ue di(itou.
*, APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
Pr;ti5a .'.' < Edita7do u6 arFui?o e@iste7te
1. A=ri7do u6 arFui?o D Se o ar7ui0o >: eAisteM para )odi3ic:2.o 0oc8 de0e abri2.oM isto =M carre(:2.o
do disco para a )e)Eria. Se no ,ou0er nen,u)a >ane.a de pro(ra)a abertaM o )enu 4ile )ostra u)a
.ista dos D.ti)os ar7ui0os abertosN se o 7ue 0oc8 7uer aparece na .istaM basta c.icar no no)e para abri2
.o.
Para abrir u) ar7ui0oM c.i7ue e) 4ileVOpe7 ou 9-. Na >ane.a 7ue apareceM no ca)po VNa)eVM di(ite
o no)e do pro(ra)a 7ue 7uer abrirM neste caso CATSON. Opciona.)ente 0oc8 pode c.icar no no)e
do ar7ui0o dese>adoM na .ista de ar7ui0os. NesteM o s)bo.o V..pV 7uer di?er Vo diretErio aci)aV. ")a
0e? se.ecionado o ar7ui0oM c.i7ue e) Ope7 para abrir. Outros ar7ui0os abertos per)anece) O
disposioN basta se.ecionar o dese>ado no )enu Yi7doEM opo )ist. Ou c.i7ue na >ane.a dese>ada
para ati0:2.a.
-ara n"o ter !ue localizar o diretrio correto todas as vezes em !ue #or
abrir um ar!uivo, no in'cio de uma sess"o cli!ue em -i$e*./a#!e 0ir e
con#i$ure o diretrio dese<ado.
+. ApEs abrir o ar7ui0oM co)p.ete a di(itao iniciada anterior)enteM de 3or)a 7ue o teAto 3i7ue assi)B
A IBM, na dcada de 50, era a empresa mais bem administrada do mundo, graas,
em grande parte, ao modelo do lendrio diretor-presidente, Thomas J. Watson.
Contaram-me um caso que mostra como Watson reagiu ao saber de um erro
multimilionrio de um de seus gerentes regionais. Ele chamou o gerente de vendas
sua sala para trocar algumas palavras. Quando terminou, o infeliz gerente
sentia-se surrado, mutilado.
O senhor est me dizendo que quer que eu v embora? - o gerente perguntou.
- Ir embora? - Watson retrucou, atnito: - De maneira alguma! Imagine, gastei
mais de um milho de dlares para trein-lo!
(Charles Wang)
-. #al?a7do u6 arFui?o e@iste7te D ApEs 3a?er as a.tera1esM e co)o o ar7ui0o >: te) no)eM c.i7ue e)
4ileV#a?e para (ra0ar no disco as a.tera1es. A.ternati0a)enteM tec.e 9+. Se 3or u) ar7ui0o no0o
TVNONA!EnnVUM o editor abrir: a >ane.a do sa.0ar co)o e 0oc8 de0er: dar u) no)e ao ar7ui0o.
2alve #re!Kentemente seu trabalhoN coisas misteriosas odem acontecer e
#az;lo erder recioso temo de di$ita("o. ,omutadores !ue #alham ou
travam, ro$ramas !ue n"o terminam... *ato !ue resenciei Cmais de uma
vezD+ em um laboratrio de in#ormtica, uma tomada com mau contato
li$ava !uatro comutadores. Al$um bateu o nela e desli$ou or um
breve e #atal momento os comutadores. Outro+ al$um terminou o
trabalho e, desatento, desli$ou o comutador... do vizinhoO -ara n"o
arecer !ue estou e%a$erando+ da 8ltima vez, al$um inseriu um dis!uete
no micro do vizinho e ressionou o bot"o de resetO
Pr;ti5a .'.+ < Co6a7dos Zteis
EAperi)ente outros co)andos Dteis do )enu Cindo6 k abra 0:rias >ane.as de edio e tente a.ternar
T94UM #i0idir TTi.eU e os de)ais.
Pr;ti5a .'.* < I6press9o de progra6aDCo7te
@oc8 pode i)pri)ir u) pro(ra)a23onte das se(uintes )aneiras TeAperi)ente cada u)aUB
aU No Turbo Pasca. 2 Se.ecione a >ane.a do pro(ra)a di(itado e c.i7ue e) 9i.eSPrint para i)pri)i2
.o. Nesta opo de i)presso as pa.a0ras reser0adas e outros e.e)entos da sintaAe so
destacadosM o 7ue pode ser Dti. ao .eitor.
.3 - O AMBENTE TURBO PASCAL */
Para i)pri)ir u) ar7ui0oM o Turbo Pasca. usa u) pro(ra)a c,a)ado PRN9%TR.EZE. Se ti0er
prob.e)asM pode ser 7ue e.e no este>a no diretErio pTPp<$N ou o ca)in,o para este no este>a no
PATX do ar7ui0o autoeAec.bat do #OS T7ue 3ica no diretErio rai? do disco r(idoU.
1
Se ti0er prob.e)as na i)presso atra0=s do Turbo Pasca. Tco)o u) )onte de 3o.,as saindo da
i)pressoraUM tente a.terar a con3i(uraoM e) 9i.eSPrinter SetupM para SXP ou des)arcando o
opo de en0iar os caracteres de 3or)atao.
bU A partir do <.oco de Notas k Abra o pro(ra)a23onte e i)pri)a2oM .e)brando 7ue o <.oco de
Notas usa a i)pressora padro do Cindo6s.
cU A partir do Cord ou do CordPad k Abra o 3onte e i)pri)a2o nor)a.)ente. Para preser0ar a
3or)atao ori(ina.M se.ecione todo o teAto e a.tere a 3onte para u) no proporciona.M co)o
ourier.
dU No #OS S,e.. k Entre no #OS S,e.. T0e>a O 3rente neste captu.oU no )enu Ar7ui0o e di(ite
-rint Tnome do ar!uivoU. $sto sE 3unciona se o #OS 3oi insta.ado. A.ternati0a)enteM tente
co)andar coJ Tnome do ar!uivoU rn.
$*$,$ Alter7ati?as para o=ter aHuda
@oc8 pode acessar a a>uda on2.ine de 0:rias 3or)as. o) 91 0oc8 te) a>uda sobre a >ane.a de
edio. No )enu 3elpM ,: 0:rias a.ternati0asB Co7te7ts TestruturadoUM I7de@ Ta.3ab=ticoU e at= a>uda para
a a>uda. ") dos )ais usados = a a>uda sens0e. ao conteAto. EAecute as pr:ticas desta seo e 0e>a co)o
3unciona cada tipo.
Pr;ti5a .'., < AHuda se7s?el ao 5o7te@to
Escre0a a pa.a0ra .rScr e) 7ua.7uer >ane.a de teAto e tec.e tr.291. Rapida)ente aparece na te.a a
descrio da instruoM a unit 7ue a cont=)M u) pro(ra)a eAe)p.o e outras in3or)a1es. #i(ite a pa.a0ra
VunitV e 3aa aparecer o respecti0o teAto de a>uda. %eia apenas co)o curiosidadeM por en7uanto.
Pr;ti5a .'./ < AHuda para os 6e7us
.i7ue na opo Yi7doE do )enu. o) a seta e no co) o )ouseM indi7ue a opo Tile. Pressione 91
para obter a>uda sobre esta opo. 9aa o )es)o para a opo Yi7doEVClose. No0a)ente obten,a a>uda
para a opo 4ileVDos s:ell.
Pr;ti5a .'.. < Co7teZdo
.i7ue e) 3elpVCo7te7ts. @oc8 08 u)a .ista de tEpicos de a>uda. #8 u)a o.,ada na .istaM depois
se.ecione o ite) Me7us a7d :ot We>s. !ais abaiAo 0oc8 0er: u)a .ista de subtEpicos 7ue pode) ser
se.ecionados.
Pr;ti5a .'.$ < [7di5e
Para acessar u)a .ista de tEpicos de a>uda e) orde) a.3ab=ticaM c.i7ue e) 3elpVI7de@. Tec.e a pri)eira
.etra da pa.a0ra dese>ada para des.ocar2se rapida)ente para a seo da .etra. Por eAe)p.oM para 0er u)a
.ista de no)es de cores usadas e) certas instru1es de te.aM tec.e VcV e gtabh at= o cursor c,e(ar na
pa.a0ra XelloE. .i7ue dup.o ou tec.e Enter para 0er o teAto.
1
Iuando ne) isto 3uncionouM criei u) ar7ui0o de co)andos do #OS 7ue a>usta0a o PATX e con3i(urei o ca)po
Var7ui0o de .oteV da (uia Pro(ra)a do turbo.pi3 To Cindo6s usa os .pi3 para con3i(urar pro(ra)as #OSUM para
eAecut:2.o antes.
*. APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
Pr;ti5a .'.%0 < Des5o=ri7do outros 5o6a7dos
"sando o ,e.p de conteDdoM procure a .ista de co)andos do editor de teAtos e preenc,a a tabe.a abaiAoB
COMANDO DO EDITOR TEC)A#
opiar para a :rea de trans3er8ncia
S,i3t2#e.
o.ar da :rea de trans3er8ncia
Se.ecionar teAto S,i3t t tec.a de )o0i)ento do cursor
%oca.i?ar teAto
tr.2%
$nserir u)a .in,a e) branco no )odo de insero
$nserir u)a .in,a e) branco no )odo de sobreposio
$*$-$ O DO# #:ell2 u6 pou5o de M#DDO#
Se 0oc8 te) )enos 7ue 0inte e poucos anosM ta.0e? ten,a apenas u)a id=ia 0a(a do 7ue = o #OS.
Antes do Cindo6sM e.e 3oi o siste)a operaciona. padro para os Ps. EAecuta apenas u) pro(ra)a de
cada 0e? e no possui inter3ace (r:3ica. Os co)andos so di(itados na linha de comandoM na 7ua. so
indicados Tnor)a.)enteU o dri0e e o diretErio atua.)ente se.ecionadosM co)o por eAe)p.oB
BpC$N#OCSh\
A contrabarra indica o diretErio rai?M e este teAto = c,a)ado de romt do A2;1O2M da o no)e
da opo de abrir u)a sesso #OS a partir do Cindo6s.
Os co)andos so constitudos de u)a pa.a0ra se(uida de par)etros. Por eAe)p.oM para a.terar o
diretErio correnteM 0oc8 de0e di(itar # Tde chan$e dirU se(uido do no)e do diretErioM e depois tec.ar
EnterB
BpC$N#OCSh# pTP
Se o diretErio dese>ado est: abaiAo ou = 3i.,o do correnteM basta di(itar seu no)eB
BpTPh # <$N
ada co)ando do #OS te) sua prEpria sintaAe. Se o seu co)putador te) o #OS insta.adoM 0oc8
pode obter a>uda di(itando XE%P se(uido do no)e de co)ando.
A partir do Turbo Pasca.M 0oc8 pode acessar a te.a do #OS a 7ua.7uer )o)ento atra0=s da opo
4ileSDos s:ell do )enu. Ao c.icar essa opoM 0oc8 08 a te.a #OS nor)a.M co) o pro)pt esperando u)
co)ando. O Turbo Pasca. continua na )e)Eria. Para con3ir)ar issoM di(ite e@it se(uido da tec.a EnterB
0oc8 0o.ta para o Turbo Pasca.M do )es)o >eito 7ue esta0a 7uando 0oc8 saiu.
@: ao #OS s,e..M e tec.e #$RM se(uido de Enter. @oc8 0er: u)a .ista(e) dos ar7ui0os (ra0ados
no diretErio atua.. Entre outras coisasM e co) a.(u)as di3erenas T)ais ainda se esti0er no Cindo6sUM
0oc8 de0e 0erB
CATSON PAS +'' '&2-12*&
CATSON <Ad -& '&2-12*&
O pri)eiro ar7ui0o = u) ar7ui0o editado nor)a.)ente pe.o Turbo Pasca.B no)eM ta)an,o e)
bYtes e data da D.ti)a (ra0ao. O se(undo = a 0erso anterior do pri)eiro. Iuando 0oc8 sa.0a u)
.3 - O AMBENTE TURBO PASCAL *$
pro(ra)aM o Turbo Pasca. reno)eia a cEpia 7ue est: no disco para .<AdM e (ra0a a 7ue est: na )e)Eria
co) a eAtenso .PAS. Se 0oc8 perder a.(u) pro(ra)aM a pri)eira coisa a tentar = ir ao #OS s,e..M
reno)ear o .<Ad para .PAS TapEs eAc.uir o anti(oU e recuperar o 7ue puder.
@e>a eAe)p.os de outros co)andos do #OS e suas op1esM 7ue 0oc8 pode precisarB
dir V.as T.istar todos os ar7ui0os co) eAtenso .asU
dir meuV.V T.istar todos os ar7ui0os co)eados co) VmeuVU
dir meuV.as T.istar todos os ar7ui0os co)eados co) VmeuV e
co) eAtenso .asU
re7a6e nomeant.e%t novonome.e%t T)udar o no)e do ar7ui0o nomeant.e%t para
novonome.e%tU
5op> nome.as outnome.as Tcriar u) ar7ui0o c,a)ado outnome.asM copiando o
conteDdo de outro ar7ui0o c,a)ado nome.asU
del nome.as TeAc.uir o ar7ui0o c,a)ado nome.asU
del V.baP TeAc.uir todos os ar7ui0os co) eAtenso .baPU
del V.V TeAc.uir todos os ar7ui0os do diretErio corrente 2
cuidadoWU
pri7t nome.as Ti)pri)irU
6d nomedir Tcriar u) subdiretErio c,a)ado nomedirU
rd nomedir TeAc.uir o diretErio nomedirM se esti0er 0a?ioU
5d nomedir T)udar o diretErio corrente para nomedirU
%e)bre2seB para 0o.tar ao Turbo Pasca.M di(ite e@it. Se di(itar no0a)ente tur=oM 0oc8 pode ter
prob.e)as.
Pr;ti5a .'.%% < Co6o re5uperar arFui?os
Edite u) ar7ui0o 7ua.7uerM e sa.0e2o pe.o )enos duas 0e?es Tpara 7ue se>a criado o .baPU. @: ao #OS
S,e..M de.ete o ar7ui0o co) tipo .PAS. Reno)eie o .<Ad para ter o )es)o no)e )as eAtenso .PAS.
@o.te ao Turbo Pasca. e abra o ar7ui0o no0a)enteM e 0e>a se est: intacto.
Pr;ti5a .'.%& < Prati5a7do 5o6a7dos de diretBrios
No #OS S,e..M )ude o diretErio corrente para o rai? TpU. rie u) diretErio co) seu no)e. !ude para esteM
e dentro de.eM crie u) diretErio para esta discip.ina. !ude para este e dentro de.e crie diretErios para
traba.,osM c,a)ados TRA<1 e TRA<+. A(ora re)o0a todos os diretErios criados.
9embre;se+ "asseie" elos menus e ela a<uda de vez em !uandoN voc
descobrir recursos 8teis e muitas vezes salvadores.
,%
$+ PRIMEIROS PRO'RAMAS
/O comutador #az o !ue voc manda, n"o o !ue voc !uer3
Pro(ra)as de co)putador so essencia.)ente u) )ecanis)o de causa e e3eitoB 0oc8 7uer u)
e3eitoM pro(ra)a u)a causa. Nesse sentidoM sE eAiste) resu.tadosB o pro(ra)ador obt=) o 7ue 3oi
pro(ra)ado. Neste captu.oM 0oc8 dar: os pri)eiros passos para 3a?er a.(o acontecer no co)putadorM
escre0endoM co)pi.ando e eAecutando pe7uenos pro(ra)as e) .in(ua(e) Pasca..
$+$($ Pri6eiras i7stru8Aes
Pr;ti5a .+.% < Pri6eiro progra6a
aU Abra o Turbo Pasca. e di(ite o pro(ra)a abaiAo. Para o a.to da cabeaM use a barra de sub.in,adoM
e para a parte de baiAoM use o ,3en.
PROGRAM Careta;
{Feito por Virglio V. Vilela}
uses CRT;
begin
ClrScr;
Writeln('Este programa simples desenha uma careta na tela.');
Writeln('Pressione qualquer tecla para ver a careta');
Readkey;
Writeln(' ____');
Writeln(' / \');
Writeln('/ O O \');
Writeln('\ ^ /');
Writeln(' \ ~ /');
Writeln(' ----');
Writeln;
Writeln('Pressione qualquer tecla para terminar o programa');
Readkey;
end.
.m ro$rama escrito em uma lin$ua$em de alto n'vel um teAto, !ue
chamado de pro!raa1fo#%e ou cdi$o;#onte.
bU o)o o co)putador no entende Pasca.M = preciso con0erter o teAto para .in(ua(e) de ):7uinaM
ou se>a co)pi.:2.o. ApEs sa.0ar o ar7ui0oM c.i7ue e) o)pi.eSo)pi.e ou tec.e A.t29*. #e0e
aparecer u)a >ane.a parecida co) a abaiAo. Se aparecer a.(u)a )ensa(e) no a.to da te.aM
0eri3i7ue se di(itou o pro(ra)a eAata)ente co)o est:.
,&
+----------------- Compiling ------------------+

Main file: CARETA.PAS
Done.

Destination: Memory Line number: 0
Free memory: 239K Total lines: 19


Compile successful: Press any key
+----------------------------------------------+
No >urbo -ascal, n"o necessrio comandar a linPedi("o, !ue #eita de
#orma automtica.
cU $nstru1es so inertes se no 3ore) eAecutadas. #8 0ida ao pro(ra)a c.icando e) RunSRun ou
tec.e tr.29* para eAecut:2.o. Si(a as instru1es na te.a.
Causa pro=le6as 79o sa=er2
PROGRAMM =egi7 e e7d so alavras reservadasN te) u) si(ni3icado para o co)pi.adorM e 0oc8
no pode us:2.as para outra 3ina.idade.
.rScrM Crite.n e ReaddeY so identi#icadores adr"oB pode) T)as no con0=)U ser usados para
outras 3ina.idades.
PROGRAM = u)a pa.a0ra 7ue inicia u) pro(ra)a23onte. ^ opciona.M )as se 0oc8 co.ocar
PROHRA! de0e por depois o no)e e o ponto2e20r(u.a.
Ao 3ina. de todo co)ando ou dec.arao de0e ter u) ponto2e20r(u.aM eAceto antes de e7d.
O no)e do pro(ra)a = criado por 0oc8M se(uindo a.(u)as re(rasB
2 deve come(ar com uma letra
PROGRAM CARETA;
{Feito por Virglio V. Vilela}
uses CRT;
begin
ClrScr;
Writeln('Este programa desenha uma careta na tela.');
Writeln('Pressione qualquer tecla para ver a careta');
Readkey;
Writeln(' ____');
Writeln(' / \');
Writeln('/ O O \');
Writeln('\ ^ /');
Writeln(' \ ~ /');
Writeln(' ----');
Writeln;
Writeln('Pressione qualquer tecla para terminar o programa');

Readkey;
end.
%i)pa a te.a e posiciona o
cursor no canto superior
es7uerdo T0e) de V.ear
ScreenU
o)ent:rio
Ti(norado na
co)pi.aoU
$ncio da
seo de
co)andos
eAecut:0eis
Seo de
dec.ara1es
Espera u)a tec.a
ser pressionada
para prosse(uir
9i) dos
co)andos
eAecut:0eis
TpontoB 3i)
do pro(ra)aU
Seo de
cabea.,o
ponto2e20r(u.aB 3i)
de u) co)ando
5 - PRMEROS PROGRAMAS ,'
; a artir do se$undo caractere, ode conter letras, d'$itos ou barra de sublinhado CWD, ou se<a, n"o
ode conter esa(os
; n"o h distin("o entre mai8sculas e min8sculas CAeu-rimeiro o mesmo !ue mE.QMAEMQO !ue
o mesmo !ue mEuQMmeMQoD
; n"o s"o ermitidas letras acentuadas
EAe)p.os de no)es 0:.idos de pro(ra)asB a.cu.a9atoria.M a.c\#obro\0ersao\+M e)ite\so).
No)es in0:.idos 7ue i)pede) a co)pi.aoB a.cu.a 9atoria.M +\a.c\#obroM E)iteSo)W
E@er55io .+.& < Regras para 7o6es
Assina.e os no)es de pro(ra)as 0:.idos no Pasca.B
aU contro.a\co)pro)issos
bU a(enda di:ria
cU A(enda\0-
dU e!iTeSO)
eU a.c#obroNu)
3U 0+\So)rescente
E@er55io .+.' D Progra6
Escre0er a dec.arao PROGRAMM usando no)es si(ni3icati0osM para os pro(ra)as abaiAoB
aU Pondera notas de .istas de eAerccios e ca.cu.a nota 3ina.
bU ontro.a #s
cU Hera .ista de co)pras
dU Huarda no)es e te.e3ones
eU $)pri)e eti7uetas de enderea)ento
3U Si)u.a u) Z )o0endo2se pe.a te.a
(U on0erte (raus e.sius e) (raus 9a,ren,eit
,U on0erte (raus e.sius e) (raus 9a,ren,eit e 0ice20ersa
A declara("o PRO2RAM ocional, mas bom coloc;la ara uma
melhor documenta("o do ro$rama. Nada de nomes como ,esarW1, XYZ
ou 2mur#ette Ceste eu viODN o nome deve dar uma boa idia do !ue o
ro$rama #az.
Pr;ti5a .+.+ < Erros de si7ta@e
A sintaAe das .in(ua(ens de a.to n0e. = )uito )ais r(ida 7ue a de u)a .in(ua(e) co)u)M co)o o
portu(u8s. Iua.7uer pa.a0ra 3ora do .u(ar ade7uado ou u) s)bo.o 7ue no 3aa parte do a.3abeto Terro
de sintaAeU i)pede) a con0erso de u) pro(ra)a. Por eAe)p.oM se a sintaAe pre08 7ue u) ponto2e2
0r(u.a de0e aparecer no 3i) de u) co)andoM 0oc8 de0er: inseri2.o. O co)pi.ador detecta a aus8nciaM
)as >a)ais co.ocar: o ponto2e20r(u.a para 0oc8.
A co)pi.ao = 3eita de ci)a para baiAoM co)eando na pa.a0ra PROGRAM e ter)inando no ponto apEs
o e7d. ada 0e? 7ue encontra u) erro de sintaAeM o co)pi.ador interro)pe a co)pi.ao e )ostra u)a
)ensa(e) de erro na pri)eira .in,a da te.a de edio Te) a.(uns casosM e)baiAoU. Para con,ecer )e.,or
as )ensa(ens do co)pi.adorM 3aa as )odi3ica1es abaiAoM u)a de cada 0e?M e co)pi.e Tpara des3a?er use
,+ APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
AltD(a5Wspa5eU. A cada erroM indi7ue o cEdi(o de erro de co)pi.ao e tec.e 91 para 0er )ais
in3or)a1es sobre a causa.
aU Tro7ue PROGRAM por PROGRAMA
bU $nsira u) espao no )eio do no)e do pro(ra)aB AR ETA
cU Tire o ponto2e20r(u.a apEs ARETA
dU Tire o =egi7
eU Tire o pri)eiro apEstro3o de u) Crite.n
3U Tire o D.ti)o apEstro3o de u) Crite.n
(U Tire o e7d
,U Tire o ponto 3ina.
iU o.o7ue u) ponto no )eio do pro(ra)a
-ara obter maiores in#orma()es sobre um erro de comila("o, tecle -3
en!uanto a mensa$em de erro estiver sendo mostrada.
Pr;ti5a .+.* < 4i7alidade das 5ores do te@to
Obser0e na te.a 7ue as cores das pa.a0ras t8) di3erenasB o editor identi3ica o tipo de cada u)aM con3or)e
a sintaAe da .in(ua(e) e a.tera sua cor. Esse recurso a>uda a identi3icao de erros de di(itao. Por
eAe)p.oM retire o 3ec,a2c,a0e do co)ent:rio e 0e>a o 7ue acontece.
Pr;ti5a .+., < Tela Tur=o e tela DO#
aU @oc8 0iu anterior)ente 7ue no Turbo Pasca. ,: duas te.asB a do prEprio TP e a do #OSM 7ue =
onde aparece) as sadas dos pro(ra)as. A te.a #OS 3ica e) se(undo p.anoN para 082.a estando
e) )odo de edioM tec.e AltD4*. #8 u)a o.,ada e pressione 7ua.7uer tec.a para retornar.
bU No pro(ra)a ARETAM retire ou co)ente o D.ti)o co)ando antes do end Tassi)B {ReadKey}U.
o)pi.eM eAecute e 0e>a a di3erena. Tec.e A.t295 para 0er a te.a #OS.
cU @oc8 pode 0er as duas te.as ao )es)o te)poM e)bora )enoresB c.i7ue e) #ebu(SOutput. Para
di0idir a te.a e) duas >ane.as 7ue no se sobrep1e)M c.i7ue e) Cindo6STi.e.
Pr;ti5a .+./ D O7de est; o progra6a e@e5ut;?elP
O destino da co)pi.ao pode ser a )e)Eria ou o disco. Iuando co)pi.a para discoM o co)pi.ador cria
u) ar7ui0o no disco co) o )es)o no)e do ar7ui0o do 3onte Te n"o o no)e da dec.arao PROHRA!U
e eAtenso .EZE. Esse eAecut:0e. = independente do co)pi.ador 0oc8 pode eAecut:2.o direta)ente do
#OS ou Cindo6sM con3or)e o casoM copi:2.o para u) dis7uete e dar de presenteM reno)e:2.oM etc.
A co)pi.ao co) destino )e)Eria no cria u) eAecut:0e. e) discoN e.e per)anece na )e)Eria. Se
0oc8 sair do Turbo Pasca. no poder: eAecut:2.o. Essa = a opo )ais usadaM >: 7ue 0oc8 nor)a.)ente
co)pi.aM eAecuta e testa 0:rias 0e?esM e so)ente 7uando conc.uir os testes = 7ue ta.0e? 0: 7uerer u)
eAecut:0e. per)anente.
$ndi7ue o destino da co)pi.ao na opo Co6pileVDesti7atio7 do )enu Tse 0oc8 esti0er usando o
co)pi.ador tpA.eAe esta opo no est: dispon0e.U. Por de#ault T0a.or assu)ido se 0oc8 no in3or)ar
nadaUM a co)pi.ao = para a )e)Eria. Se ti0er dD0idas sobre 7ua. opo est: se.ecionadaM 0e>a na >ane.a
de sucesso da co)pi.ao o destino atua..
aU .i7ue e) o)pi.eS#estination para a.ternar o destino da co)pi.ao para disco. Se >: esti0erM
no 3aa nadaM apenas cance.e o )enu tec.ado ES ou c.icando 3ora de.e.
bU @oc8 pode de3inir o diretErio onde 3icaro os ar7ui0os eAecut:0eisN c.i7ue e) OptionsS#irectories
e indi7ue u) ca)in,o.
5 - PRMEROS PROGRAMAS ,*
2e voc estiver em uma rede, ode ser !ue necessariamente tenha !ue
in#ormar em Otions[1irectories, camo EZE a TP" 9i.esM uma asta
onde tenha autoriza("o ara $ravar. =oc deve in#ormar o nome 1O2N o
>urbo -ascal n"o vai reconhecer o nome do RindoSs. -ara saber !ual o
nome 1O2, v no RindoSs E%lorer, cli!ue com o bot"o direito na asta
e selecione -roriedades.
cU o)pi.e o pro(ra)a. Note 7ue na >ane.a 7ue in3or)a o sucesso da co)pi.ao consta o destino.
dU Acesse o #OS S,e.. Tno )enu 4ileUM a.tere o diretErio corrente para o 7ue 0oc8 especi3icou na
.etra cU e pea a .ista(e) do conteDdo TV#$RVU. @eri3i7ue 7ue 3oi criado u) ar7ui0o eAecut:0e.
co) o )es)o no)e do pro(ra)a23onte. EAecute o pro(ra)a di(itando seu no)e e Enter.
Pr;ti5a .+.. D E@e5uta7do o progra6a Cora do Tur=o Pas5al
aU ApEs eAecutar a co)pi.ao para discoM 0: no Cindo6s e ac,e o eAecut:0e.. #8 u) dup.o c.i7ue
ne.e para eAecut:2.o. @oc8 pode ta)b=) arrast:2.o para o A)biente de Traba.,o e criar u)
ata.,o para e.eN = u) eAecut:0e. #OS co)o os outros.
bU A(ora copie o eAecut:0e. para u) dis7uete e eAecute2o de .:.
Pr;ti5a .+.$ < O7de posso por 5o6e7t;riosP
$nc.ua os co)andos abaiAo e) u) pro(ra)a de teste e indi7ue 7uais co)pi.a) nor)a.)enteB
aU PROGRAM ucomentriosv !euPri)eiroN
bU PROGRAM !euPri)eiro ucomentriosvN
cU CriteucomentriosvTiteAtoiUN
dU CriteTiteAtoiucomentriosvUN
eU Criucomentriosvte TiteAtoiUN
-ara re$istrar comentrios voc ode usar, ao invs das chaves, os
s'mbolos CV ara abrir um comentrio e VD ara #ech;lo.
$+$)$ Mais de Yrite
Pr;ti5a .+.%0 < Yrite
A.tere o pro(ra)a ARETAM tirando os V.nV de cada Crite.n. EAecute2o e 0e>a na te.a o 7ue )udou.
Yrite\ Yritel7 e o 5ursor
A te.aM e) )odo teAto padroM = estruturada e) +5 .in,as e 5' co.unasM e ,: u) cursor T\U piscando
e) a.(u)a posio. A instruo Crite co)ea a )ostrar sua sada eAata)ente na posio atua. do
cursorN 7uando ter)inaM o cursor est: na coordenada 7ue se(ue o D.ti)o caractere )ostrado. Por
eAe)p.oM se o cursor esti0er no canto superior es7uerdo da te.aM e 3or eAecutada a instruo
Write('Teste da posio do cursor');
a pa.a0ra iTestei co)ear: a ser )ostrada no canto superior es7uerdo eM apEs a eAecuoM o cursor
estar: .o(o apEs o _r` da pa.a0ra _cursor`.
,, APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
Se o cursor esti0er na D.ti)a .in,a da te.aM e u)a instruo Crite.n 3or eAecutadaM seu par)etro ser:
)ostrado nessa .in,a e todo o conteDdo da te.a ser: )o0ido u)a .in,a para ci)a e u)a .in,a e)
branco ser: inserida na parte in3erior da te.aM sendo portanto perdida a .in,a no a.to.
O te%to !ue est dentro dos arnteses as um Rrite ou um Rriteln
uma in#orma("o !ue a instru("o recisa receber ara cumrir sua
#inalidade, !ue mostrar essa in#orma("o na telaN chamado par)etro.
Pr;ti5a .+.%% < Yrite e os espa8os
Sobre o co)porta)ento da instruo Crite co) re.ao a espaos TbrancosUM 3aa pro(ra)as 7ue
esc.area)B
aU Espaos TbrancosU 3ora dos apEstro3os 3a?e) di3erena[ Por eAe)p.oM ,: di3erena entre os
co)andos CriteTiZ ZiU e Crite T iZ Zi U[
bU o)o 3a?er para inserir a.(uns espaos antes do pri)eiro Z do co)ando aci)aM #a %e$aM ou se>aM
7uando a instruo 3or eAecutada[
cU ") teAto dentro de u) Crite pode continuar e) outra .in,aM ou se>aM a apEstro3o inicia. e) u)a
.in,a e o apEstro3o 3ina. na outra[
Pr;ti5a .+.%& < MaiZs5ulas e 6i7Zs5ulas
EAecute o pro(ra)a de teste abaiAo Tse dese>arM substitua o teAto por a.(u) 7ue pre3iraU.
PROGRAM TesteMaiuscMinusc;
uses CRT;
begin
ClrScr;
Writeln('texto em minsculas');
Writeln('TEXTO EM MAISCULAS');
Writeln('tExTo VaRiAdO');
ReadKey;
end;
Teste da posio do cursor\
\
Posio do cursor
aps Crite
Posio do cursor
aps Crite.n
5 - PRMEROS PROGRAMAS ,/
ApBstroCos
A 3uno dos apEstro3os = indicar ao co)pi.ador 7ue o par)etro = u)a cadeia de caracteres e de0e
ser )ostrada eAata)ente co)o est: escrita. Ou se>aM ao contr:rio das pa.a0ras reser0adas e
identi3icadores padroM no caso de cadeias de caracteres o co)pi.ador distin(ue )aiDscu.as e
)inDscu.asN e.e no 0ai criticar o 7ue esti0er de.i)itado pe.os apEstro3os.
Pr;ti5a .+.%' < Ide7tiCiFue a sada
9aa u) es7ue)a da te.a de sada 7ue ser: (erada pe.o pro(ra)a abaiAo. #epois eAecute2o e 0eri3i7ue
sua resposta Tas instru1es esto )isturadas para no 3icar to 3:ci.UB
PROGRAM QualASaida;
uses CRT;
begin
ClrScr; Writeln; Write('X X' ); Writeln('X X' ); Write('XXXXX' );
Write('X X' ); Writeln('X X' );
end.
Pr;ti5a .+.%+ < #eguir progra6a
_EAecute` )anua.)ente o pro(ra)a abaiAo e 3aa u) es7ue)a da te.a resu.tante Tconsidere os ontos
como esa(os, s"o aenas ara indicar sua !uantidadeU. #epoisM di(iteM co)pi.e e eAecute2oM
co)parando o resu.tado obtido co) o resu.tado pre0isto.
PROGRAM DesenhaAlgo;
uses CRT;
begin
ClrScr; Writeln; Writeln ('#####'); Writeln('..#..');
Writeln('..#..'); Writeln('..#..'); Writeln('..#..');
end.
Pr;ti5a .+.%* < Pula7do li7:as 5o6 Yritel7
Se 0oc8 7uer 7ue a.(o aparea na te.aM esse a.(o de0e estar dentro dos par8nteses de u) co)ando Crite
ou Crite.n. Se o)itir u) dos par8ntesesM o pro(ra)a no ser: co)pi.ado. !as 0oc8 pode o)itir a)bosN
neste caso o resu.tado da eAecuo ser: )o0er o cursor para a .in,a de baiAo. Pode)os usar essa
caracterstica para pu.ar .in,as Tou para posicionar o cursor no incio de u)a .in,aU.
9aa u) es7ue)a da te.a de sada do pro(ra)a abaiAoB #epois di(ite e eAecute o pro(ra)a e 0e>a se
acertouB
PROGRAM QualASaida;
begin
Writeln('Isto est em uma linha');
Writeln;
Writeln('H uma linha em branco acima desta');
end.
Pr;ti5a .+.%, < Cadeias s9o diCere7tes de 7Z6eros
#i(ite o pro(ra)a de de)onstrao abaiAo e 0e>a o 7ue aparece na te.a para cada Crite.n. A te.a de0e
resu.tar co)o ao .ado. #epois 0e>a as eAp.ica1es adiante.
,. APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
PROGRAM DemoNumeros;
uses CRT;
begin
ClrScr;
Writeln('1234');
Writeln( 1234 );
Writeln( 1234.0 );
Writeln( 1234.0:30 );
Writeln( 1234.0:30:2 );
Writeln( 1234.0: 0:2 );
ReadKey
end.
NZ6eros e 5adeias de 5ara5teres
O co)pi.ador trata nD)eros de )aneira di3erente de cadeias de caracteresB do ponto de 0ista do
co)pi.adorM 1+-/ = u) nD)eroM en7uanto 7ue i1+-/i = u)a cadeia de caracteresM )es)o sendo
3or)ada sE por d(itos.
ND)eros inteiros ta)b=) so tratadas de 3or)a di3erente de nD)eros reais. Estes so nD)eros co)
casas deci)aisM 7ue so separadas da parte inteira por u) ponto.
ND)eros reais so )ostrados na te.a e) notao cient3ica Tpor eAe)p.oM 1.+1/A1'
-
M sendo o V1'
e.e0ado aV representado co)o a .etra EUM podendo ser indicadas a 7uantidade de co.unas da te.a 7ue
0o ser usadas e a 7uantidade de casas deci)ais
PROGRAM DemoNumeros; {explicaes}
uses CRT;
begin
ClrScr;
Writeln('1234'); {cadeia de caracteres}
Writeln( 1234 ); {nmero inteiro}
Writeln( 1234.0 ); {o ponto torna o nmero real, que mostrado em
notao cientfica}
Writeln( 1234.0:30); {indica que para usar ! colunas da tela. "
nmero alin#ado $ direita dentro das ! colunas}
Writeln( 1234.0:30:2 ); {usar ! colunas como acima, e % casas decimais.
&'ita a notao cientfica}
Writeln( 1234.0: 0:2 ); {o (ero quer di(er que a quantidade de colunas no
est) definida, e o nmero mostrado a partir da
posio do cursor}
ReadKey
end.
Pr;ti5a .+.%/ D I7teiros 5o6 de5i6ais podeP
@eri3i7ue se o co)ando a se(uirM 7ue tenta )ostrar u) inteiro co) casas deci)aisM co)pi.aB
Write(1214:10:2);
=oc ode indicar a !uantidade de colunas tambm ara cadeias de
caracteres. -or e%emlo, ara deslocar o cursor vinte colunas, deois
mostrar \Nome\ alinhado E direita em 17 colunas, escreva+
*rite+, ,- %!, ,.ome,-/012
1234
1234
1.2340000000E+03
1.2340000000E+03
1234.00
1234.00
5 - PRMEROS PROGRAMAS ,$
E@er55io .+.%. < Re?is9o de Yrite 5o6 7Z6eros
Assina.e @ ou 9 con3or)e as a3ir)ati0as se>a 0erdadeiras ou 3a.sasB
T U ND)eros co)o par)etros e) u)a instruo Crite no precisa) estar entre apEstro3os.
T U ND)eros reais so )ostrados na te.a e) notao cient3icaM a )enos 7ue se>a indicada outra
3or)atao.
T U A instruo Crite per)ite 0:rios par)etrosM desde 7ue separados por 0r(u.asM )as =
)e.,or usar essa caracterstica 7uando os par)etros so de tipos di3erentes.
T U 9or)atao de 7uantidade de casas deci)aisM na instruo CriteM no = per)itida pe.o
co)pi.ador para par)etros 7ue no se>a) reais.
Espe5iCi5a89o .+.%$ < Trei7a7do YriteVYritel7
Escre0a u) pro(ra)a Pasca. co) instru1es Crite ou Crite.n 7ue produ?a) a se(uinte te.aB
MZltiplos par]6etros de Yrite e Yritel7
As instru1es Crite e Crite.n aceita) m8ltilos par)etrosM desde 7ue separados por 0r(u.as. Por
eAe)p.oM a instruo
Write('Esta uma cadeia', ' E esta outra cadeia', ' Pode ter uma terceira');
produ? na te.a a sada
Esta uma cadeia E esta outra cadeia Pode ter uma terceira_
Esta caracterstica ser: )ais Dti. 7uando 7uiser)os )ostrar na te.a in3or)a1es de tipos di3erentesM
)esc.ando cadeiasM nD)eros e outros e.e)entos 7ue 0ere)os.
Espe5iCi5a89o .+.&0 < EtiFueta 7a tela
E.abore u) pro(ra)a 7ue escre0e seu no)e co)p.eto e) u)a .in,aM seu endereo na prEAi)a e na
se(uinte o EP e te.e3one.
Espe5iCi5a89o .+.&% D 4rases assassi7as
9aa u) pro(ra)a 7ue )ostra na te.a a.(u)as 3rases assassinasM 7ue so a7ue.as 7ue 3a?e) co) )uitas
id=ias se>a) perdidas antes 7ue a)adurea) ou se>a apro3undadas. Eis a.(uns eAe)p.os Tbo.e ta)b=) os
seusUB
"Msto n"o vai dar certo"
EEEEE
E
EEE
E
EEEEE
Pressione uma tecla para terminar.
/0 APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
"=oc nunca vai conse$uir"
"=oc vai se estrear"
"N"o vai dar em nada"
"Est tudo erradoO"
Espe5iCi5a89o .+.&& D Me7sage6
Escre0a u)a )ensa(e) para u)a pessoa de 7ue (oste. $)p.e)ente u) pro(ra)a 7ue )ostra na te.a essa
)ensa(e).
Espe5iCi5a89o .+.&' D Ao 6estre
Escre0a u) bi.,ete ao seu pro3essorM in3or)ando seus ob>eti0os nesta discip.ina e o 7ue espera de.a e do
pro3essor. $)p.e)ente u) pro(ra)a 7ue )ostra seu bi.,ete na te.a.
Espe5iCi5a89o .+.&+ < Ta=ela de 7otas
Escre0a u) pro(ra)a 7ue produ?a a se(uinte sada na te.aB
ALUNO(A) NOTA
======== =====
ALINE 9.0
MRIO DEZ
SRGIO 4.5
SHIRLEY 7.0
Espe5iCi5a89o .+.&* < )etra gra7de
E.abore u) pro(ra)a para produ?ir na te.a a .etra Z usando a prEpria. Se 3osse w%xM seria assi)B
L
L
L
L
L L L
Espe5iCi5a89o .+.&, < Pala?ra gra7de
Escre0a u) pro(ra)a 7ue produ?a a te.a es7ue)ati?ada abaiAoB
5 - PRMEROS PROGRAMAS /%
******** ******** *
* * * *
* * * *
******** * * *
* * * *
* * * *
******** ******** ********
Espe5iCi5a89o .+.&/ < E6oti5o7s
Emoticons so se7F8ncias de caracteres 7ue )ostra) rostos e eApress1esM 0istos de .ado e usados
3re7Fente)ente e) correios e.etr;nicos e bate2papos na $nternet. EAiste) de?enasN 0e>a a.(unsB
2DO sorriso
2DM tristeza
2Dp mostrando a l'n$ua
2Do esanto
^2DO cabelo artido ao meio
2D^ usa bi$ode
2D_ bei<o
2D____ um monte de bei<os
E.abore u) pro(ra)a 7ue )ostre na te.a os e)oticonsM u) e) cada .in,aM co) a descrio de cada u).
Espe5iCi5a89o .+.&. < Pi7:eiro
$)p.e)ente u) pro(ra)a 7ue desen,e u) Vpin,eiroV na te.aM si)i.ar ao abaiAo. Enri7uea o desen,o
co) outros caracteresM si)u.ando en3eites.
X
XXX
XXXXX
XXXXXXX
XXXXXXXXX
XXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXXXX
XX
XX
XXXX
Espe5iCi5a89o .+.&$ < Pi7:eiro ?&
E.abore u)a 0erso + do pro(ra)a do ite) anterior 7ue desen,e o pin,eiro co) asteriscos TqU. ]1ica+
use o recurso de localiza("o[substitui("o do editor ara #azer a substitui("o raidamente^
$+$*$ Tur=o De=ugger
") debu((er ou u) depurador = u) pro(ra)a 7ue per)ite a eAecuo (radati0a e contro.ada de
u) pro(ra)aM )ediante co)andos do pro(ra)ador pe.o tec.adoM sendo a sua 3erra)enta )ais 0a.iosaM
/& APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
depois do c=rebro. O Turbo #ebu((er aco)pan,a o Turbo Pasca.M e per)ite 7ue u) pro(ra)a se>a
eAecutado u)a .in,a de cada 0e?.
Pr;ti5a .+.'0 D E@e5u89o li7:aDaDli7:a usa7do o de=ugger
aU Para co)earM eAecute )anua.)ente o pro(ra)a abaiAo e 3aa u) es7ue)a da sua te.a de sada.
PROGRAM QuadradoComX;
{3ostra na tela um quadrado feito com letras 4.
Feito por Fulano de 5al, em //6//677}
uses CRT;
begin
ClrScr;
Writeln( 'XXXXX' );
Writeln( 'X X' );
Writeln( 'X X' );
Writeln( 'X X' );
Writeln( 'XXXXX' );
end.
bU A(ora di(iteM co)pi.e e eAecute o pro(ra)aM co)parando a te.a obtida co) a pre0ista.
cU A(ora 0a)os eAecutar o pro(ra)a usando o debu((er. o) a >ane.a do pro(ra)a23onte ati0aM
tec.e 9&. $sto inicia o debu((er e a eAecuo .in,a2a2.in,a. ")a barra ,ori?onta. sur(e na te.aM
posicionada sobre o =egi7. Essa barra indica 7ua. ser: a prEAi)a .in,a de instru1es 7ue ser:
eAecutada. Tec.e 9& no0a)ente. A barra estar: sobre o .rScr. A prEAi)a operao a ser e3etuada
= .i)par a te.a. Iua. te.a[ <e)M a te.a do seu pro(ra)a no est: aparecendoN 0oc8 est: no editor.
Para 0er a te.a de sada do seu pro(ra)aM tec.e A.t295. Tudo 7ue o seu pro(ra)a 3i?er 0ai
aparecer a. O 7ue 0oc8 08 a(oraM antes da eAecuo da pri)eira instruoM = a te.a #OSM
contendo o 7ue aconteceu antes de 0oc8 entrar no Turbo Pasca. ou o resu.tado do D.ti)o
pro(ra)a eAecutado. Tec.e 7ua.7uer coisa para 0o.tar ao pro(ra)a23onte.
dU Tec.e de no0o 9&M para eAecutar o pri)eiro Crite.nM e no0a)ente A.t295. @e>a o 7ue ,ou0e na
te.a #OS e tec.e a.(o para retornar.
eU No0a)ente 9&M para eAecutar o prEAi)o Crite.n. @e>a o 7ue apareceu na te.a.
3U ontinue tec.ando 9&M at= c,e(ar ao e7d.
Obser0e 7ue a 3i(ura 3oi constru'da na te.a u)a .in,a de cada 0e? na se(uinte se7F8nciaB
XXXXX XXXXX XXXXX XXXXX XXXXX
X X X X X X X X
X X X X X X
X X X X
XXXXX
.sar o debu$$er n"o 8til somente ara encontrar erros, mas tambm
ara voc ver as instru()es #uncionando e assim arender mais
raidamente.
Pr;ti5a .+.'% < Mais de=ugger
EAecute o pro(ra)a areta usando o debu((er.
$+$+$ E@pressAes arit6Rti5as
Pr;ti5a .+.'& < 4aQe7do 5;l5ulos
#i(ite o se(uinte pro(ra)aB
5 - PRMEROS PROGRAMAS /'
PROGRAM DemoExpressoes;
uses CRT;
begin
ClrScr;
Writeln( 1234 + 1000 ); {expresso aritmtica com adio}
Writeln('1234 + 1000'); {no expresso, uma cadeia }
Writeln('1234 + 1000 = ', 1234 + 1000);
Writeln( 1234 - 1000 ); {su8trao}
Writeln( 1234 * 1000 ); {multiplicao}
Writeln( 1234 / 1000 ); {di'iso 9 resultado real}
Writeln( 54*13 - 37/11 + 23/5); {expresses aritmticas com8inadas 9
primeiro : e 6, depois, ; e 9 }
Writeln( -43/5 + 12*34 ); { o 9 in'erte o sinal}
Writeln( (1290 + 155) * (980 - 32) ); {primeiro calculado o que
est) entre par<nteses}
Writeln( -43/5:10:2); {formatando o resultado real}
ReadKey
end.
Pas5al e 6ate6;ti5a
No Pasca. 0oc8 pode e3etuar opera1es )ate):ticas de 3or)a se)e.,ante O )ate):ticaM )ontando
eApress1es co) nD)eros e opera1es. !as para 7ue 0oc8 0e>a o resu.tadoM de0e )ostr:2.o na te.a
atra0=s de u)a instruo Crite ou Crite.nM sendo a eApresso arit)=tica a0a.iadaM isto =M ca.cu.adaM e
o resu.tado )ostrado na te.a. @oc8 pode usar par8nteses para deter)inar a preced8ncia de eAecuo
das opera1es.
@oc8 indica 7ue dese>a 7ue u)a operao se>a e3etuada usando u) operador. Por eAe)p.oM o
s)bo.o t = o operador de so)aM e indica 7ue se de0e so)ar os dois nD)eros ao seu .ado Tos
opera7dosU. O con>unto operador e operandos 3or)a u)a e@press9o arit6Rti5a. No Pasca.M o
operador de subtrao ta)b=) = o )es)o da )ate):ticaN >: a )u.tip.icao e a di0iso so
representados respecti0a)ente por _ e V. 7uatro opera1es para dois nD)eros.
O tipo do resu.tado de u)a eApresso arit)=tica depende do tipo dos operandos e dos operadoresB o
operador de di0iso rea. S 3a? co) 7ue a eApresso 7ue o cont=) se>a do tipo rea.. R: as eApress1es
co) os operadores tM 2 e q sero reais se ,ou0er a.(u) operando rea.M caso contr:rio sero inteiras.
Espe5iCi5a89o .+.'' < Trei7a7do 7Z6eros
Escre0a u) pro(ra)a Pasca. co) instru1es Crite ou Crite.n 7ue produ?a) a te.a a se(uir TdeiAe 7ue o
pro(ra)a 3aa os c:.cu.osU. Para nD)eros reaisM use a 3or)atao de 7uantidade de co.unas e deci)ais.
Resultados de operaes:
2100 + 541 = 2641
7.82 + 2.04 = 9.86
77/3 + 49/12 = 29.75
Pressione qualquer tecla para terminar.
/+ APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
Pr;ti5a .+.'+ < Operadores DIV e MOD
Outros operadores )uito Dteis para 0:rios tipos de prob.e)as so di? e 6od\ 7ue so operadores bin:rios.
A)bos e3etua) a di0iso inteiraM )as di? ca.cu.a o 7uociente e 6od o resto Ta)bos os operandos de di?
e 6od de0e) ser 0a.ores inteirosUB
#i(ite o pro(ra)a de de)onstrao a se(uir e preenc,a os resu.tadosB
begin
Writeln(45 div 7); {resultado- ===}
Writeln(45 mod 7); {resultado- ===}
Writeln(5 mod 2 + 5 div 2); {resultado- ===}
end.
E@e6plo .+.'* < Estuda7te 6etBdi5o
. .m estudante muito metdico estava matriculado em G discilinas, e disunha de 1 hora e 50 minutos
ara estudar. 2ua inten("o era dividir o temo dison'vel i$ualmente ara as G discilinas, e descansar
livremente o temo restante. ,onhecendo os oeradores o" e "iv, ele #ez o se$uinte ro$rama+
PROGRAM CalcTempoEstudo;
uses CRT;
begin
ClrScr;
Writeln('Programa para clculo de tempo de estudo');
Writeln('Dedique ', 100 div 6 , ' minutos para cada disciplina');
Writeln('Aproveite bem os ', 100 mod 6 , ' minutos restantes.')
end.
aU a.cu.e os resu.tadosM di(ite e eAecute o pro(ra)a e con3ira os resu.tados T.e)bre2se de tec.ar 95
para 082.osM apEs rodar o pro(ra)aU.
bU !odi3i7ue o pro(ra)a para )ostrar cada resu.tado a.in,ado O direita e) 1' co.unas da te.a.
Pr;ti5a .+.', < Re?is9o de Di? e 6od
a.cu.e as eApress1es abaiAo. #epoisM 3aa u) pro(ra)a 7ue .,e per)ita 0eri3icar se 0oc8 ca.cu.ou
correta)ente.
aU -& )od 1- n
bU /1 di0 & n
cU 11 di0 - )od + n
dU 11 )od - di0 + n
eU 5 )od + t 5 di0 +
Pr;ti5a .+.'/ < Pre5edG75ia de opera8Aes arit6Rti5as
A eApresso 7 mod 4 _ 7 div 4 do eAe)p.o aci)a de)onstra u)a poss0e. 3onte de con3usoB se ,ou0er
0:rios operadoresM 7ua. operao ser: eAecutada pri)eiro[ Para e0itar issoM e da )es)a 3or)a 7ue na
1- #$@ 5 d:
o di0isor
1- !O# 5
d: o resto
1-5-+
5 - PRMEROS PROGRAMAS /*
)ate):ticaM pode)os usar par8nteses ou a preced8ncia dos operadoresM 7ue indica) a se7F8ncia e) 7ue
de0e) ser e3etuadas as opera1esB
PRIORIDADE OPERADOR
1 2 un:rio
+ q S di0 )od
- ` D
A orde) de preced8ncia aci)a indica 7ue pri)eiro so ap.icados todos os 2 un:riosM e) se(uida so
e3etuadas todas as opera1es de )u.tip.icaoM di0isoM resto e 7uociente de di0iso inteiroM e sE apEs
estas so e3etuadas as adi1es e subtra1es. Se a eApresso cont=) par8ntesesM estes t8) preced8ncia
superior a todos os operadoresM isto =M 7ua.7uer eApresso entre par8nteses = eAecutada pri)eiro. Se no
,: par8ntesesM e os operadores te) a )es)a prioridadeM as opera1es so e3etuadas da es7uerda para a
direita.
#i(ite o pro(ra)a abaiAo e con3ira os resu.tadosB
begin
Writeln(51 div 16 + 48 - 8 mod 5); {>esultado- ; ?@ 9 A ?@ }
Writeln( (51 div 16) + ((48 - 8) mod 5) ); {>esultado- ; ! A }
Writeln( -3*(43/(52 div 3))); {>esultado- 9:+?6/B1 A 9B.0@@}
Writeln( 6/3*2 ); {>esultado- ? +real1}
end.
Pr;ti5a .+.'. < Pre5edG75ia de operadores
a.cu.e as eApress1es abaiAoM obser0ando a preced8ncia dos operadores. E) cada casoM di?er se o
resu.tado 3ina. = inteiro ou rea.. Por 3i)M e.abore u) pro(ra)a 7ue )ostre na te.a o resu.tado de cada
eApressoM e co)pare co) seus c:.cu.os.
aU +q4 t 11q5
bU +'ST2+US5
cU +'S+q+
dU T-t*US-q/
eU T5q4ST-t+U 2 15q/US42/
3U /t-+q+ 2&q+ST*2+U
.sar a recedncia ara estabelecer a ordem das oera()es ode
rovocar erros ou tornar as e%ress)es mais comle%as muito di#'ceis de
serem entendidas, mesmo or !uem as escreveu.. .se arnteses.
Pr;ti5a .+.'$ < Co7ta teleCI7i5a
") pro(ra)ador i)p.e)entou o pro(ra)a abaiAo para a se(uinte especi3icaoB
.ma conta tele#?nica comosta dos se$uintes custos+
assinatura+ Q` 1:,00
imulsos+ Q` 0,05 or imulso !ue e%ceder a 00
interurbanos
chamadas [ celular+ Q`0,40 or imulso
Elabore um ro$rama !ue calcula o valor da conta ara 475 imulsos, Q`65,40 de interurbanos
e 46 chamadas ara celular.
/, APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
PROGRAM CalcContaTelefone;
uses CRT;
begin
ClrScr;
Write('Clculo de conta telefnica');
Write('Assinatura: ', 17.90);
Write('Impulsos: ', 254, ' a R$0,04 por impulso');
Write('Interurbanos: ', 34.29);
Write('Celular: ', 23 , 'chamadas');
Write('Valor da conta: ', 17.90 + 254*0.04 + 34.29 + 23*0.2:10:2);
end.
E)bora no ,a>a erros de sintaAeM o pro(ra)a no 3oi testado ade7uada)ente. X: u) erro no c:.cu.o e a
3or)atao da te.a est: ,orr0e.. 9aa os acertos e )e.,ora)entos necess:rios.
Espe5iCi5a89o .+.+0 D MRdia de 7otas
!onte u)a eApresso )ate):tica 7ue ca.cu.a a )=dia de suas notas de u) perodo anterior Tse no
,ou0erM in0enteU. 9aa o c:.cu.o atra0=s de u) pro(ra)aM )ostrando na te.a o resu.tadoM 3or)atado co)
duas casas deci)ais.
Espe5iCi5a89o .+.+% D Co7?ers9o de te6peratura
9aa u) pro(ra)a 7ue ca.cu.a e )ostra u)a tabe.a de (raus e.siusS9a,ren,eit de 1 a 1' r3Er)u.aB n
5S*T92-+Us. Por en7uanto Tse) co)andos de repetioUM 0oc8 de0er: escre0er as instru1es para ca.cu.ar e
)ostrar cada resu.tado.
Espe5iCi5a89o .+.+& D I6posto
") i)posto = ca.cu.ado co) base na se(uinte tabe.aB
At= 1.+''M'' isento
de 1.+'1M'' a 5.'''M'' 1'o
de 5.''1M'' a 1'.'''M'' 15o
aci)a de 1'.'''M'' +'o.
$)p.e)ente u) pro(ra)a 7ue ca.cu.e os i)postos a pa(ar para u) 0a.or e) cada 3aiAa. Para cada u)M
)ostre u)a )ensa(e) 7ue identi3i7ue na te.a a 7ue se re3ere cada 0a.or.
$+$,$ U7its
Ta.0e? 0oc8 >: ten,a se per(untado o 7ue = a7ue.e Vuses RTNV dos pro(ra)as 7ue 0i)os. O
Turbo Pasca. (uarda as de3ini1es de a.(uns co)andos e) u) ar7ui0oM c,a)ado biblioteca adr"oM 7ue =
carre(ado para a )e)Eria >unto co) o restante do a)biente. !as outras instru1es no esto nesta
bib.iotecaM e si) e) ar7ui0os co) eAtenso TtipoU .tpu c,a)ados units. A eAtenso .tpu re3ere2se a >urbo
-ascal .nit.
A unit RT cont=) instru1es re.acionadas O te.a e ao a.to23a.ante do co)putadorB .i)pe?a da
te.a ou de u)a .in,aM posiciona)ento do cursorM a.terao das cores e outras.
5 - PRMEROS PROGRAMAS //
O Turbo Pasca. tra? 0:rias outras unitsB u)a para i)pri)irM outra para acessar recursos do #OSM
outra ainda co) instru1es (r:3icas Tcrcu.osM preenc,i)entos e teAto e) )odo (r:3icoU. A.=) dissoM
0oc8 pode criar suas prEprias instru1es e (uard:2.as e) unitsM para us:2.as de 7ua.7uer pro(ra)aM co)o
ser: 0isto )ais tarde.
Iuando 0oc8 7uer usar u)a instruo de u)a unitM precisa in3or)ar ao co)pi.ador onde procurar
sua de3inioM atra0=s da pa.a0ra reser0ada uses. Se) a dec.arao usesM o co)pi.ador no recon,ecer: as
instru1es. Essa dec.arao de0e 0ir .o(o apEs PROHRA!M e 0oc8 pode indicar 0:rias unitsM se) a
eAtensoB
PROGRAM ...
uses CRT, Printer, DOS;
Pr;ti5a .+.+' < Posi5io7a7do o 5ursor
Na 0erso abaiAo do pro(ra)a aretaM 3ora) acrescentadas a.(u)as instru1es para posicionar o cursor
antes de cada Crite.
PROGRAM CARETA_XY;
uses CRT;
begin
ClrScr;
Writeln('Este programa desenha uma careta na tela na linha 10, coluna 40.');
Writeln('Pressione qualquer tecla para ver a careta');
Readkey;
GotoXY(40, 10); Write(' ____');
GotoXY(40, 11); Write(' / \');
GotoXY(40, 12); Write('/ O O \');
GotoXY(40, 13); Write('\ ^ /');
GotoXY(40, 14); Write(' \ ~ /');
GotoXY(40, 15); Write(' ----');
Writeln;
Writeln('Pressione qualquer tecla para terminar o programa');
Readkey;
end.
aU #i(ite o pro(ra)a e teste2o.
bU 9aa o pro(ra)a desen,ar a careta a partir da co.una -'M .in,a 15.
cU "se co)andos HotoZc para posicionar as )ensa(ens in3or)ati0as 7ue aparece) antes e depois
da careta.
dU O 7ue acontece 7uando HotoZc recebe 0a.ores in0:.idos[ @eri3i7ue a.terando o pro(ra)a
areta\Zc para tentar )ostrar a careta nas posi1esB
1''M 5 Tco.una in0:.idaU
1'M -' T.in,a in0:.idaU
-ara osicionar o cursor na tela antes de um comando Rrite, use a
instru("o 2o%o45 647 58, onde X o n8mero da coluna Cde 1 a a0, em
modo adr"o de te%toD e Y a linha Cde 1 a 47D.
E@er55io .+.++ < Erros de si7ta@e
Reescre0a o pro(ra)a a se(uirM corri(indo os erros de sintaAeB
T1M1U
/. APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
PROGRAMA QuadradoComX com erros;
{verso com erros de sintaxe;
usar CRT;
begin
ClearScreen;
Goto XY(20, 7); Write( XXXXX );
Goto XY(20, 8) Write( 'X X' );
Goto XY(20, 9); Write( 'X X' );
Goto XY(20, 10); Write( 'X X' );
Goto XY(20, 11); Writel( XXXXX );
End;
Espe5iCi5a89o .+.+* < Me7u posi5io7ado
E.abore u) pro(ra)a 7ue .i)pa a te.a e )ostra o se(uinte )enu centra.i?adoM e espera u)a tec.a ser
pressionada para ter)inar To trao apEs VOpoBV = o cursorU. "se co)andos de posiciona)ento do cursor
para 3aci.itar.
Espe5iCi5a89o .+.+, < Tri]7gulo 5o6 i7i5iais
Escre0er u) pro(ra)a 7ue desen,a u) trin(u.oM aproAi)ada)ente centra.i?adoM na te.a T7ue e) )odo
teAto nor)a. te) 5' co.unas por +5 .in,asUM tendo dentro as iniciais do seu no)e. 9aa o pro(ra)a .i)par
a te.a no incio. Para oti)i?ar a e.aboraoM 3aa pre0ia)ente u) desen,o deta.,ado Tinc.uindo nD)eros
de .in,as e co.unasU da te.a resu.tante do pro(ra)a.
Pr;ti5a .+.+/ < #o7s
aU EAecute o se(uinte pro(ra)aB
PROGRAM Som;
uses CRT;
begin
Sound(440);
Delay(30);
NoSound;
end.

bU A(ora a.tere a instruo SoundT//'U para SoundT1'''U e eAecute.
Menu Relatrios

1 - Por nome
2 - Por cdigo
3 - Por data
4 - Fim

Opo: _
5 - PRMEROS PROGRAMAS /$
cU A(ora a.tere a instruo #e.aYT-'U para #e.aYT5''UM e depois #e.aYT+'''UN
dU EAperi)ente outros 0a.ores para os par)etros.
eU #up.i7ue as tr8s instru1es do pro(ra)a aci)a Tusando o recurso de copiar e co.arU e eAperi)ente
e)itir + sons na 3aiAa de 1''' a +''' X? e entre /''' e 5''' X?.
@oc8 pode contro.ar a e)isso de sonsM no a.to23a.ante do co)putador Te no e) p.acas de so)UM
atra0=s de tr8s instru1es da unit RTB
#ou7dM4reFO2 inicia a e)isso de sons na 3re7F8ncia 9re7 TinteiraUN
No#ou7dB interro)pe a e)isso de sonsN
Dela>MMsUB suspende a eAecuo do pro(ra)a durante aproAi)ada)ente !s )i.isse(undos TinteiroU.
Pr;ti5a .+.+. < Dela> para outra Ci7alidade
A.tere o pro(ra)a Iuadradoo)Z para 7ue antes de ter)inar espere + se(undosM inc.uindo u)a
instruo #e.aY no 3ina..
Espe5iCi5a89o .+.+$ < Para=R7s
9aa u) pro(ra)a 7ue e)ite as seis pri)eiras notas do VParab=ns pra 0oc8V T4 se7F8ncias de
SoundS#e.aYSNoSoundU. Tente as se(uintes notas T3re7F8ncia e) X?Sdurao e) )i.isse(undosUB
r5++M+''sM r5++M+''sM r555M5''sM r5++M/''sM r4*-M/''sM r455M5''s.
Pr;ti5a .+.*0 < Cores
Para )udar as cores de teAto apresentado na te.aM o Turbo Pasca. para #OS o3erece as instru1es
Te@tColor e Te@t(a5Wgrou7dM da unit RT. A)bas espera) co)o par)etro u) nD)ero 7ue
representa u)a corM )as ,: constantes Tno)es 7ue representa) 0a.oresU >: dec.aradas para as cores e
0oc8 pode usar os no)es das cores e) in(.8sB ce..o6M HreenM RedM <.acPM C,iteM etc. Por eAe)p.oM para
escre0er e) 0er)e.,oM sobre 3undo a)are.o T(osto no se discute...UM 0oc8 de0e escre0erB
uses CRT;
begin
TextBackground(Yellow);
TextColor(Red);
Write('Texto em vermelho com fundo amarelo');
end.
-ara colorir todo o #undo da tela, a<uste a cor de #undo com
>e%tbacP$round e comande um ,lr2cr.
PesFuisa .+.*% < No6es das 5ores
@eri3i7ue se ,: na a>uda do Turbo Pasca. u)a .ista de cores e re.acione2as. ]1ica+ rocure as constantes
declaradas na unit ,Q>^
Pr;ti5a .+.*& < Luadrado 5olorido
A.tere o pro(ra)a Iuadradoo)Z para 7ue cada .in,a do 7uadrado se>a de u)a cor di3erenteM sobre u)
3undo ta)b=) di3erente Ttoda a te.aU. #i(ite e teste2o.
Espe5iCi5a89o .+.*' < Te@to 5olorido
9aa u) pro(ra)a 7ue 3a? toda a te.a 3icar a)are.a e depois )ostra u) teAto 7ua.7uer e) pretoM na
posio /' Tco.unaUM 1 T.in,aU. O pro(ra)a espera u)a tec.a antes de ter)inar.
.0 APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
Espe5iCi5a89o .+.*+ < No6e e6 5a7tos
9aa u) pro(ra)a 7ue )ostra seu no)e a.ternada)ente nos 7uatro cantos da te.a.
Pr;ti5a .+.** < I6pri6i7do2 u7it Pri7ter
A instruo Crite pode receber opciona.)ente u) pri)eiro par)etroM c,a)ado ar7ui0o de sadaM do tipo
teAto. A te.a = u) destes ar7ui0os e = assu)ida co)o o ar7ui0o de sadaM caso este no se>a in3or)ado. A
i)pressora ta)b=) = tratada co)o u) ar7ui0o teAtoM e en0ia)os teAto para e.a da )es)a 3or)a 7ue para
a te.aM bastando apenas usar a unit Printer e in3or)ar o ar7ui0o de sada %ST. Por eAe)p.oM para i)pri)ir
seu no)eM escre0a
PROGRAM {...}
uses Printer;
begin
Write(LST, 'Seu nome');
end.
Esco.,a u) pro(ra)a anterior 7ue ten,a i)p.e)entado e 7ue 3aa a.(u) desen,o na te.a e a.tere2o para
7ue i)pri)a o desen,o.
Espe5iCi5a89o .+.*, < EtiFueta
"sando a unit Printer descrita aci)aM i)p.e)ente u) pro(ra)a 7ue )ostra na te.a e ta)b=) i)pri)e
u)a eti7ueta co) seu no)eM endereo e de)ais dados.
$+$-$ 4u78Aes
Na )ate):ticaM 7uando se 7uer indicar o seno de -M1/ radianosM por eAe)p.oM escre0e2se
SenoT-M1/UM sendo -M1/ o par)etro. 2eno = u)a 3unoM e 0oc8 ca.cu.a o resu.tado de u)a eApresso 7ue
a cont=) pri)eira)ente ca.cu.ando o 0a.or do senoM depois trocando a 3uno pe.o resu.tado e depois
continua o c:.cu.o. Por eAe)p.oM na eApresso
A n + A SenoT-M1/U n + A ' n 'M
a 3uno SenoT-M1/U 3oi substituda pe.o seu 0a.or T'U antes 7ue se pudesse prosse(uir o c:.cu.o.
No Turbo Pasca. esto dispon0eis 3un1es 0ariadasM inc.uindo as )ate):ticas. Todas so usadas
de 3or)a se)e.,anteB o no)e da 3unoM e seus par)etrosM no )o)ento da eAecuoM so substitudos
pe.o respecti0o resu.tado.
.+.,.% 4u78Aes 6ate6;ti5as
") pro(ra)a 7ue ca.cu.e o 0a.or da eApresso aci)a 3icaria assi) e) Pasca.B
begin
Writeln( 2*Sin(3.14) );
end.
A c,a)ada da 3uno precede as de)ais opera1esN se u)a 3uno = u) operando de u)a
eApressoM e.a de0e ser ca.cu.ada antes 7ue as de)ais opera1es possa) ser e3etuadas. Obser0e a
se7F8ncia de eAecuo da instruo aci)aB
5 - PRMEROS PROGRAMAS .%
calculado o senoN
e#etuada a multilica("o or 4N
mostrado na tela o resultado.
No caso do senoM co2seno e outras 3un1esM a notao = se)e.,ante O da )ate):ticaN >: certos
operadores da )ate):ticaM co)o o s)bo.o da rai?M so substitudos no Pasca. por 3un1es. Por eAe)p.oM
para ca.cu.ar a rai? 7uadrada de +M 0oc8 pode usar a 3uno #FRt Tde 2!uare QootUB
begin
Writeln('A raiz quadrada de 2 ', SqRt(2) );
end.
=oc tem !ue usar o nome da #un("o reconhecido elo comiladorN tente,
or e%emlo, incluir em um ro$rama chamadas do tio QaizC40D ou
2enoC7D e ve<a o !ue acontece.
o)o par)etros de 3un1es 0oc8 pode usar eApress1es e at= outras 3un1es. No prEAi)o
eAe)p.oM o par)etro da 3uno Sin = u)a eApressoM 7ue cont=) outra eApresso co)binando
)u.tip.icao co) u)a c,a)ada de 3unoB
begin
Writeln( Sin(3.14*2 + SqRt(3) ) );
end.
Neste casoM antes do c:.cu.o da 3uno Sin de0e ser a0a.iada a eApresso dentro dos par8ntesesN
antes 7ue esta possa ser a0a.iadaM de0e ser ca.cu.ada a c,a)ada O 3uno S7Rt.
A tabe.a a se(uir .ista 3un1es )ate):ticas dispon0eis no Turbo Pasca.B
4UN!O DE#CRI!O TIPO DE ENTRADA TIPO DE VA)OR
RETORNADO
AbsTNu)U 0a.or abso.uto Rea.M inteiro )es)o da entrada
ArcTanTNu)U arco tan(ente rea. TradianosU rea.
osTNu)U co2seno rea. TradianosU rea.
EApTNu)U eAponencia. Te
A
U rea. rea.
9racTNu)U parte 3racion:ria rea. rea.
$ntTNu)U parte inteira rea. rea.
%nTNu)U .o(arit)o natura. Tbase eU rea. rea.
RoundTNu)U arredonda)ento ao inteiro
)ais prEAi)o
rea. inteiro
SinTNu)U seno rea. TradianosU rea.
S7rTNu)U 7uadrado rea. Rea.
S7RtTNu)U rai? 7uadrada rea. Rea.
TruncTNu)U eAtrao da parte inteira rea. inteiro
Onde = esperado u) 0a.or rea.M 0oc8 pode usar u) inteiro.
.& APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
E@e6plo .+.*/ < O eletri5ista
.m eletricista recisa comrar #io !ue ir assar, elo telhado, or toda a dia$onal de uma casa de
#ormato retan$ular. ,omo ele n"o tem condi()es de medir a dia$onal com recis"o Cou talvez n"o
!ueira...D, a solu("o alternativa !ue ele encontrou #oi medir os lados da casa, sabendo !ue a dia$onal
ode ser calculada com base nos lados elo >eorema de -it$oras Ca
4
c b
4
_ c
4
D. ,onsiderando !ue a
casa mede 11,7 % G,6 metros, #a(a um ro$rama !ue calcule a !uantidade m'nima necessria de #io a ser
comrada, com recis"o at cent'metros.
A te.a = be) si)p.esM 0a)os )ostrar apenas a.(u)as )ensa(ens in3or)ati0as e o resu.tado. Para
apresentar a 7uantidade e) cent)etrosM precisa)os de + casas deci)aisM e no tota. 4 co.unas basta).
Para e3etuar o c:.cu.o precisa)os e.e0ar ao 7uadrado e eAtrair a rai? 7uadrada. O pro(ra)a 3ica assi)B
PROGRAM CalcComprimentoFio;
begin
Writeln('Clculo de comprimento de fio');
Writeln('para paredes de 11,5 por 6,3 m');
Writeln( 'O comprimento mnimo ', ( SqRt( Sqr(11.5) +
Sqr(6.3) ) ):6:2, ' metros. ' )
end.
Note a orde) de eAecuo das opera1es )ate):ticasM 7uando o pro(ra)a 3or eAecutadoB
pri)eiro S7rT11.5UM depois S7rT4.-UM e) se(uida a so)a e sE depois = ca.cu.ada S7Rt.
E@er55io .+.*. D #i7ta@e de Cu78Aes
Ac,e dois erros de sintaAe no co)ando abaiAoB
Writeln( Sin(3,14*2 + SqRt(3 ) );
E@er55io .+.*$ D Ta7ge7teP
Supon,a 7ue u) co.e(a .,e disse 7ue u) pro3essor tin,a pedido u) pro(ra)a Pasca. no 7ua. precisa0a
ser ca.cu.ada a tan(ente de u) nD)eroM )as 7ue na .in(ua(e) no tin,a 3uno para ca.cu.:2.a. O 7ue
0oc8 su(eriria[
E@er55io .+.,0 D #eFUG75ia de e@e5u89o
Para a instruo Crite.nT SinT-.1/q+ t S7RtT-U U UM nu)ere os co)andos se(undo a se7F8ncia co) 7ue
sero eAecutadas as opera1esB
T U q
T U Sin
T U t
T U S7Rt
T U Crite.n
Espe5iCi5a89o .+.,% D 4u78Aes 6ate6;ti5as
9ornecer o 0a.or retornado pe.as opera1es )ate):ticas abaiAo. #epoisM c,a)ando as 3un1es ade7uadasM
escre0a u) pro(ra)a 7ue .,e per)ita 0eri3icar a correo dos seus c:.cu.osB
Rai? 7uadrada de 14*
1&
+
o2senoT'U
1.45 arredondado para inteiro
5 - PRMEROS PROGRAMAS .'
Espe5iCi5a89o .+.,& D 4u78Aes a7i7:adas
Escre0er u) pro(ra)a 7ue ca.cu.a a rai? de -M arredonda o resu.tado e ca.cu.a a eAponencia. do 0a.or
resu.tante.
E@er55io .+.,' < E@pressAes 5o6 Cu78Aes
on0erta a eApresso abaiAo para Pasca. Tno 3aa c:.cu.os )anuaisUB
( )
( ) 4 cos
- sen
1- . 1
+ -
+ e
Pr;ti5a .+.,+ < 4or6ata7do a sada
A.tere e eAecute o pro(ra)a a.co)pri)ento9io Taci)aU para )ostrar o resu.tadoB
aU uti.i?ando 5 co.unas e 1 casa deci)a.
bU uti.i?ando ' co.unas e 1 casas deci)ais.
PesFuisa .+.,* D Odd
#escubra a 3ina.idade da 3uno Odd e 3aa u) pe7ueno pro(ra)a para test:2.a.
.+.,.& NZ6eros aleatBrios
#escubra o padro das se(uintes se7F8nciasB
1 / * +5 -4 /* ...
' 1 1 + - 5 5 1- +1 -/ 55 ...
1 & * -- 1+ & 5& -& ++ - / 45 ...
Para as duas pri)eiras 0oc8 poder: ac,ar o padroM u)a re.ao entre os nD)eros. A pri)eira
consiste nos 7uadrados de 1 a &M e a se(unda = a s=rie de 9ibonacciM e) 7ue cada ter)o = a so)a dos dois
anteriores. R: para a terceira se7F8ncia no se pode deter)inar 7ue tipo de re(ra os produ?iu.
$nstru1es 7ue produ?a) nD)eros 0ariados se) 7ua.7uer padroM re(ra ou re.ao entre siM os
c,a)ados nD)eros a.eatEriosM so i)portantes para a i)p.e)entao de >o(os ou para (erar (rande
7uantidade de dados para testar pro(ra)as. Por eAe)p.oM isto ser: necess:rio se u) pro(ra)a sorteia u)
nD)ero 7ue de0e ser adi0in,ado pe.o usu:rio. E nin(u=) 0ai 7uerer u) pro(ra)a de bin(o 7ue te) u)a
re(ra para ac,ar os nD)erosW
No Turbo Pasca.M 0oc8 pode (erar nD)eros inteiros a.eatErios atra0=s da 3uno Rando). Antes
de poder usar Rando)M 0oc8 c,a)a Rando)i?e para inicia.i?ar o (erador interno de nD)eros a.eatErios.
Rando) recebe u) par)etro inteiro NM e o nD)ero (erado estar: entre ' e N 2 1. Por eAe)p.oM para
(erar e )ostrar na te.a u) nD)ero a.eatErio entre ' e 1''M e depois outro entre 1 e *M escre0aB
.+ APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
PROGRAM TesteNumAleatorio;
begin
Randomize;
Writeln( Random(101) );
Writeln( 1 + Random(9) );
end.
Pr;ti5a .+.,, < #9o aleatBrios 6es6oP
#i(ite e eAecute o pro(ra)a TesteNu)A.eatorio 1' 0e?es e 0eri3i7ue se os resu.tados te) a.(u)a re.ao
uns co) os outros.
E@er55io .+.,/ < Utilidade de 7Z6eros aleatBrios
#escubra ou in0ente cinco ap.ica1es para nD)eros a.eatErios.
E@er55io .+.,. < NZ6eros aleatBrios e6 Hogo
Para a.(u) >o(o de co)putador 7ue con,eaM identi3i7ue a.(u)as partes e) 7ue 3ora) necess:rios
nD)eros a.eatErios para tornar o >o(o )ais interessante.
Espe5iCi5a89o .+.,$ < < Opera8Aes 5o6 7Z6eros aleatBrios
9aa u) pro(ra)a 7ue )u.tip.ica u) nD)ero a.eatErio de 1 a 1' por outro de 1'' a 1''' e di0ide o
resu.tado por outro de 1 a 1'''M 3or)atando a sada co) - casas deci)ais.
Espe5iCi5a89o .+./0 < #orteio de dados
9aa u) pro(ra)a 7ue sorteia e )ostra na te.a os 0a.ores correspondentes a dois dados.
Espe5iCi5a89o .+./% < Pi7:eiro reCi7ado
E.abore u)a 0erso do pro(ra)a do pin,eiro Tp:(. &1U 7ue troca a cor de 3undo para brancoM co.ore os
(a.,os do pin,eiro de 0erde e o cau.e de outra corM entre cada .in,a espera 1'' )i.isse(undos e e)ite u)
so) di3erente co) 3re7F8ncia crescente e espera u)a tec.a para ter)inar.
$+$.$ Co7sta7tes de5laradas
Pr;ti5a .+./& < Para=R7s 5o6 5o7sta7tes de5laradas
#i(ite e teste o pro(ra)a a se(uir.
5 - PRMEROS PROGRAMAS .*
PROGRAM ParabensComConstantes;
{5oca o incio do Cara8ns usando constantes declaradas para as notas musicais}
uses crt;
const DO1 = 522;
RE = 585;
MI = 655;
FA = 693;
SOL = 777;
LA = 871;
SI = 976;
DO2 = 1034;
begin
Sound(DO1); Delay(200); NoSound;
Sound(DO1); Delay(200); NoSound;
Sound(RE); Delay(800); NoSound;
Sound(DO1); Delay(400); NoSound;
Sound(FA); Delay(400); NoSound;
Sound(MI); Delay(400); NoSound;
end.
Co7sta7tes
O Pasca. nos per)ite de3inir no)es para 0a.oresM de 3or)a a tornar os pro(ra)as )ais 3:ceis de
sere) entendidos e para 3aci.itar certas )odi3ica1es. $sso = 3eito na seo ONST Tde constantesU.
E) u) pro(ra)a Pasca. pode) ser dec.aradas constantes nu)=ricasM constantes para cadeias de
caracteres e 0:rias outras. Iuando o co)pi.ador encontra u) no)e dec.arado na seo de
constantesM e.e si)p.es)ente troca o no)e pe.o respecti0o 0a.or. Se)pre 7ue 0oc8 esti0er repetindo
a.(u) 0a.or e) u) pro(ra)aM pense e) dec.arar u)a constante para e.e. Para 3aci.itar a
identi3icao de u)a constante e) u) pro(ra)aM pode2se adotar padr1esM co)o co)ear cada
constante co) u) VcV. EAe)p.osB
const
MeuNome = 'Fulano';
cVersaoPrograma = '2.1';
cPI = 3.1415;
cTurma = 'A';
Espe5iCi5a89o .+./' < Es5ala 6usi5al
"sando co)o base o pro(ra)a aci)aM 3aa u) pro(ra)a 7ue VtocaV a esca.a de notasM de u) #b at= o
prEAi)oM tendo as notas a )es)a duraoM esco.,ida por 0oc8.
PesFuisa .+./+ < Co7sta7tes predeCi7idas
O Turbo Pasca. o3erece a.(u)as constantes 7ue 0oc8 pode usar se) dec.ara1es. #escubra o 7ue so e os
0a.ores das constantesB
aU P$
bU !aA$nt
Espe5iCi5a89o .+./* < Luadrado de 7o?o
Reescre0er o pro(ra)a Iuadradoo)ZM dec.arando u)a constante para o caractere e uti.i?ando so)ente
essa constante para )ostrar o caractere na te.a.
., APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
$+$/$ Ati?idades suple6e7tares
PesFuisa .+./, < Outras i7stru8Aes da u7it CRT
Procure na A>uda do Turbo Pasca. e descre0a as instru1es da unit RT re.acionadas abaiAo. 9aa u)
pe7ueno pro(ra)a de de)onstrao de cada u)a.
aU .rEo.
bU #e.%ine
cU Cindo6
Pr;ti5a .+.// D I7de7ta89o
A or(ani?ao 0isua. do pro(ra)aM co) .etras )inDscu.as e )aiDscu.asM .in,as e) brancoM u) co)ando
por .in,a e des.oca)entos para a direita TVindenta("oVU 3aci.ita para #9s perceber)os sua estruturaN para o
co)pi.ador nada disto 3a? di3erenaM desde 7ue 0oc8 separe os no)es ade7uada)ente Ta eAceo so os
par)etros tipo teAto de CriteSCrite.nB )aiDscu.as e )inDscu.as so respeitadasU. @oc8 precisa por u)
espao apEs a pa.a0ra PROGRAMM por eAe)p.oM para o co)pi.ador saber 7ue a pa.a0ra ter)inouB o
espao = u) caractere separador. R: depois de u) ponto2e20r(u.a no = preciso u) espaoM >: 7ue =
ta)b=) u) separador. ")a 0e? 7ue ,a>a u) separadorM 7uais7uer espaos adicionais so i(norados.
@eri3i7ue isto editando o pro(ra)a Iuadradoo)Z para 7ue 3i7ue co)o abaiAo Tno 7uebre teAto entre
apEstro3os e) duas .in,asUN depois co)pi.eM eAecute e co)pro0eB
PROGRAM QuadradoComX; {3ostra na tela um quadrado feito com letras 4.
Feito por Fulano de 5al, em //6//677} begin Writeln; Writeln( 'XXXXX' );
Writeln( 'X X' ); Writeln( 'X X' ); Writeln( 'X X' ); Writeln( 'XXXXX' );
end.
Espe5iCi5a89o .+./. < Aprese7ta89o de te@to
") estudante ia participar de u)a 3eira de ci8ncias e seu pro>eto tin,a o te)a V3otossnteseV. E.e
conse(uiu u) notebooP e)prestadoM e 7ueria u) pro(ra)a 7ue .,e per)itisse apresentar u) teAto
di0idido e) partesM cada parte e) u)a te.aM e o pro(ra)a de0eria )udar para a prEAi)a te.a ao to7ue de
u)a tec.a. A te.a inicia. de0e ser a pa.a0ra V9OTOSSLNTESEV escrita co) .etras (randes. 9aa o
pro(ra)a para o estudanteM usando o teAto abaiAoM no 7ua. cada par:(ra3o de0e aparecer e) u)a te.a
di3erente. "se cores para )e.,orar a apresentao.
o)o o estudante no entende )uito de operao de co)putadoresM 0oc8 te) 7ue ta)b=) (erar u)
ar7ui0o eAecut:0e.M copi:2.o para o outro co)putador e inc.uir u) cone para 3:ci. eAecuo sob
Cindo6s.
TeAtoB
"A $ua e os sais minerais absorvidos elas ra'zes sobem atravs dos vasos
lenhosos do caule e che$am Es #olhas.
Nas #olhas, e%iste uma subst@ncia verde, a cloro#ila, !ue absorve a ener$ia
luminosa do sol. Ao mesmo temo, or meio dos est?matos resentes nas #olhas, a
lanta absorve $s carb?nico do ar.
.sando a ener$ia solar, o $s carb?nico e o hidro$nio contido na $ua retirada
do solo, as comlicadas rea()es !u'micas, a lanta roduz a(8cares C$licoseD."
Pr;ti5a .+./$ < Mais 5o6a7dos do de=ugger
Pes7uise nos )enus ou na a>uda os co)andos do debu((er paraB
aU Reiniciar u)a sesso de depurao
bU Encerrar u)a sesso de depurao
cU ApEs posicionar o cursor e) a.(u) ponto do pro(ra)aM eAecut:2.o at= a posio do cursor.
5 - PRMEROS PROGRAMAS ./
Pr;ti5a .+..0 < I6pri6i7do a tela de sada do progra6a
@oc8 pode precisar i)pri)ir a te.a de sada de a.(u) pro(ra)aM para docu)entar traba.,osM por eAe)p.o.
@e>a as a.ternati0as para issoM no Cindo6sB
Tec.e A.t2Print Screen para en0iar a te.a da >ane.a ati0a para a :rea de trans3er8ncia TS,i3t2Print
Screen copia toda a te.aU. Abra u) editor de teAtosM co)o o Cord ou CordPadM ou u) editor de
3i(uras TP,oto EditorM PaintUM co.e a 3i(ura e i)pri)a. No caso do editor de teAtosM a.tere a 3onte
para u)a no2proporciona.M co)o ourierM para preser0ar a 3or)atao ori(ina..
EAecute o pro(ra)aM a partir do Turbo Pasca. ou de seu ar7ui0o eAecut:0e.M e) u)a >ane.a Tse
no esti0erM tec.e A.t2EnterU. "se o recurso de se.eo e cEpia para a :rea de trans3er8nciaM 7ue
dessa 3or)a = 3eita e) )odo teAto. Para isso use os bot1es da barra de 3erra)entasM no a.to da
>ane.a. o.e o teAto se.ecionado e) u) editor Tpode ser o <.oco de Notas ou at= o do TPU e
i)pri)a2o nor)a.)ente.
PesFuisa .+..% < U7its
Procure na a>uda do TP 7uais so as units padro. Para cada u)aM re.acione para 7ue ser0e e d8 eAe)p.os
do respecti0o conteDdo.
PesFuisa .+..& < U7its 7o dis5o
"sando o Cindo6s EAp.orer ou outro uti.it:rioM procure no diretErio TpastaU do Turbo Pasca. ar7ui0os
.tpu e .iste seus no)es.
.$
$, MEM2RIA E ENTRA"A "E "A"OS
@oc8 >: de0e ter obser0adoM pe.os eAerccios dos captu.os anteriores 7ueM co) co)andos
si)p.esM >: se pode 3a?er 0:rias coisas nu) co)putadorM atra0=s de u)a .in(ua(e) de a.to n0e.
co)o o Pasca.. !as para e.aborar pro(ra)as )ais Dteis = necess:rio tirar pro0eito da )e)Eria do
co)putador.
Iuando o usu:rio de u) pro(ra)a di(ita dados do tec.adoM onde so (uardados esses
dados[ E co)o[ Pode2se (uardar dados na )e)Eria a 7ua.7uer )o)ento[ E co)o recuper:2.os[
Iue prob.e)as pode) ocorrer[ ^ preciso con,ecer a 3undo a )e)Eria do co)putador[ Neste
captu.o 0oc8 0er: co)o pode)os tornar os pro(ra)as )uito )ais 3.eA0eisM usando 0ari:0eis.
$,$($ Co6a7dos de 6e6Bria
Pr;ti5a .*.% D Ve7do por Cora
aU #i(ite e co)pi.e o pro(ra)a a se(uir.
PROGRAM EqSegundoGrau;
{Dalcula ra(es da equaao do segundo grau com coeficientes a, 8 e c.
.o trata delta negati'o}
uses CRT;
var a, b, c : integer; {coeficientes}
Raiz1, Raiz2 : real; {ra(es}
Delta : real;
begin
ClrScr;
Writeln('Entre coeficiente a: ');
Readln(a);
Writeln('Entre coeficiente b: ');
Readln(b);
Writeln('Entre coeficiente c: ');
Readln(c);
Delta := Sqr(b) - 4*a*c;
Raiz1 := (-b + SqRt(Delta) )/(2*a);
Raiz2 := (-b - SqRt(Delta) )/(2*a);
Writeln('Primeira raiz ', Raiz1:0:2);
Writeln('Segunda raiz ', Raiz2:0:2);
ReadKey;
end.

bU EAecute o pro(ra)a para cada e7uao do se(undo (rau descrita pe.os con>untos de coe3icientes
T1M 'M 21UM T1M 21M 24U e T1M /M /U.
cU O pro(ra)a no est: preparado para tratar de.tas ne(ati0os. @eri3i7ue o 7ue acontece neste caso
eAecutando2o para os coe3icientes T1M +M 5U.
dU Prepare outras e7ua1es e eAperi)ente sub)et82.as ao pro(ra)a. ")a 3or)a si)p.es = ca.cu.ar
TA 2 R1UTA 2 R+UM onde R1 e R+ so as ra?es.
$0
eU EAecute o pro(ra)a no0a)enteM e 7uando 3or so.icitado o coe3iciente aM di(ite u)a .etra ou a.(o
no nu)=ricoM e 0e>a o 7ue acontece.
Vari;?eis
@ari:0eis ar)a?ena) 0a.oresM e so o )ecanis)o de uso da )e)Eria. @oc8 sE precisa in3or)ar o
no)e de cada u)a e o tipo de dadoN o co)pi.ador cuida do (erencia)ento da )e)Eria. Pode2se
3a?er o se(uinte co) 0ari:0eisB
1eclararB na seo ?ar in3or)e o no)e das 0ari:0eis 7ue o pro(ra)a 0ai precisar e o tipo de dado
7ue cada u)a 0ai ar)a?enar. O no)e de u)a 0ari:0e. de0e se(uir as )es)as re(ras 7ue 0oc8 0iu
para no)es de pro(ra)asB co)ear co) u)a .etraM se(uida de .etrasM d(itos ou barra de sub.in,ado.
No pode)M da )es)a 3or)aM ser usadas pa.a0ras reser0adas co)o =egi7. No Pasca.M toda 0ari:0e.
usada e) u) pro(ra)a de0e ser dec.arada. O)itir a dec.arao pro0oca u) erro de co)pi.aoM co)
a )ensa(e) _unPno6n identi3ier` Tidenti3icador descon,ecidoD.
AtribuirB co) o sina. Bn 0oc8 (uarda u) 0a.or direta)ente na 0ari:0e.. O no)e da 0ari:0e. se)pre
aparece O es7uerdaM e a direita pode ter 7ua.7uer eApresso cu>o resu.tado possa ser ar)a?enado na
0ari:0e..
Qecuerar o 0a.orB onde 3or preciso usar o 0a.or da 0ari:0e.M basta inserir o no)e de.a.
9er u) 0a.or do tec.adoB co) a instruo Read.n pode2se .er a.(o di(itado do tec.adoM sendo o 0a.or
.ido (uardado na 0ari:0e. indicada entre par8nteses.
@ari:0eis ar)a?ena) so)ente u) 0a.or de cada 0e?. A cada atribuio ou .eituraM o 0a.or anterior =
perdido.
E@er55io .*.& < Re5o7:e5e7do a8Aes 5o6 ?ari;?eis
No pro(ra)a23onte aci)aM identi3i7ue a seo de 0ari:0eisM as atribui1esM as recupera1es de 0a.or e as
.eituras.
Le#"o a%ri:ui;es
=oc ode ler atribui()es, di$amos, 9in +c 1, das se$uintes maneiras+
/Atribua 1 a 9in3, /9in recebe 13 , /9in i$ual a 13 Ch lin$ua$ens em
!ue o s'mbolo de atribui("o o /c/D, ou ainda /*a(a 9in i$ual a 13.
Pr;ti5a .*.' < Nereta7do a 6e6Bria
aU @a)os 0er )ais de perto as 0ari:0eis e) ao. EAecute o pro(ra)a usando o debu((er T9&UM at=
7ue a barra 3i7ue sobre o pri)eiro Read.n. Tec.e tr.29&. Aparece u)a >ane.a co) o ttu.o VAdd
Catc,V. #i(ite VaV Tse) as aspasU e c.i7ue e) OP. #e0e aparecer u)a >ane.a e)baiAo c,a)ada
VCatc,esV. 9aa o )es)o para VbV e VcV. @oc8 est: indicando ao debu((er 7ue dese>a
aco)pan,ar os 0a.ores dessas 0ari:0eis. Para (arantir 7ue tanto a >ane.a do 3onte 7uanto a de
0ari:0eis estaro 0is0eisM0oc8 pode c.icar e) Cindo6STi.e.
bU A(ora eAecute o Read.n. #i(ite u) 0a.or para o coe3iciente e tec.e Enter. Obser0e na >ane.a
Catc,es o 0a.or indicado para a 0ari:0e. a. 9aa o )es)o para os de)ais coe3icientes.
cU $nc.ua as 0ari:0eis #e.taM Rai?1 e Rai?+ na >ane.a Catc,es. Tec.e 9& no0a)ente
Ta.ternati0a)ente 0oc8 pode tec.ar $NS 7uando a >ane.a Catc,es esti0er ati0aU en7uanto obser0a
o 7ue )uda no conteDdo de cada 0ari:0e..
dU Na >ane.a Catc,es 0oc8 pode inserir e obser0ar ta)b=) eApress1es. EAperi)ente obser0ar o
0a.or da eApresso #e.ta h O.
6 - MEMRA E ENTRADA DE DADOS $%
Iuando voc vai usar este recurso de e%ecutar uma linha de cada vezB
>iicamente !uando, ao testar um ro$rama, voc achar erros e recisa
de in#orma("o sobre o !ue o ro$rama est #azendo. .se;o tambm ara
arender e #i%ar o #uncionamento de uma instru("o nova.
Pr;ti5a .*.+ D E@plora7do o e@e6plo
EAperi)ente introdu?ir no pro(ra)a E7Se(undoHrau os se(uintes erros Tu) de cada 0e?U e co)pi.arN
indi7ue o erro ocorridoB
aU tire o ?ar
bU tire a 0r(u.a entre duas 0ari:0eis na seo ?ar
cU tire o ponto e 0r(u.a ao 3ina. da .in,a do ?ar
dU ide)M os dois pontos TBU
eU escre0a a pa.a0ra rea. co)o Vria.V ou outra errada
3U retire u)a 0ari:0e. da dec.arao
Mais de Readl7
A instruo Readl7M 7uando encontrada no 3.uAo de eAecuo de u) pro(ra)aM .8 o 7ue 3or di(itado
no tec.ado e o ar)a?ena na 0ari:0e. indicada entre par8nteses. O pro(ra)a = suspenso para 7ue o
usu:rio di(ite. Ao di(itarM o usu:rio pode usar as tec.as <acPspaceM #e.ete e as setas Tco)o instruo
de entrada de dadosM Read.n = )uito .i)itadaN posterior)ente criare)os outra )e.,orU.
A 0ari:0e. usada para a .eitura de0e ser co)pat0e. co) o 0a.or esperado. Se o 0ari:0e. indicada =
rea. e 3or di(itado teAto ou 0a.or nu)=rico in0:.ido Tpor eAe)p.oM +.-.1UM o pro(ra)a ser:
interro)pido e u)a )ensa(e) de erro ser: )ostrada. Se o tipo do dado di(itado 3or inco)pat0e.
co) o da 0ari:0e.M co)o por eAe)p.o .etras 7uando = esperado u) nD)eroM a eAecuo do pro(ra)a
ta)b=) ser: interro)pida.
@oc8 pode c,a)ar Read.n se) 0ari:0eisM 7uando 7uiser por eAe)p.o 3a?er u)a pausa. Neste casoM
no pon,a par8nteses.
Readl7M 7uando usada para .er nD)erosM per)ite 7ue 0:rias 0ari:0eis se>a) .idas de u)a 0e?B
Readln(Var1, Var2, Var3...);
Neste casoM na di(itaoM os 0a.ores de0e) ser separados por espaos ou tabs.
E@er55io .*.* < No6es de ?ari;?eis
$ndicar os no)es de 0ari:0eis in0:.idos no Pasca.M eAp.icando para cada u) por7ue no = 0:.idoB
aU <5+
bU 1/<is
cU Nota\1
dU NotaTiradaPe.oA.unoNa#iscip.ina
eU o%ista
3U Pro(ra)
(U Nota21
,U AsiaA+\%P
iU #ia !es Ano
>U !8s
PU @ar\1
.U @ar
$& APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
Noes "e variveis so ipor%a#%es
1 nomes si$ni#icativos Es variveis Ccomo -laca,arro, Nome,lienteD de
#orma a tornar o ro$rama mais le$'vel e de comreens"o mais rida,
ara voc e ara seu ro#essorO E d nomes estranhos ou codi#icados C-,,
N,, seu nomeD !uando n"o !uiser !ue al$um o entenda...
$,$)$ Tipos de dado
Iuando dec.ara u)a 0ari:0e.M 0oc8 te) 7ue in3or)ar ta)b=) o tipo de dadoM 7ue indica ao
co)pi.ador a nature?a dos 0a.ores 7ue a 0ari:0e. pode conter. Por7ue isto[ @oc8 >: sabe 7ue a )e)Eria
do co)putador no = co)o u) pedao de pape. ou u) 7uadro de (i?M e) 7ue 0oc8 pode escre0er e
re(istrar 0:rios tipos de s)bo.osB nD)erosM .etrasM rabiscos e 7ua.7uer desen,o de 7ue 0oc8 se>a capa?.
E.a = )uito )ais .i)itadaB cada bYte pode ar)a?enar apenas u) nD)ero de ' a +55M e isto = tudo o 7ue
te)os para re(istrar in3or)ao. Se o 7ue te)os a re(istrar so nD)eros de ' a +55M Eti)oM usa)os u)a
0ari:0e. de 1 bYte. !as e se 3or u) nD)ero )aior do 7ue +55[ E se 3or ne(ati0o[ E se ti0er casas
deci)ais[ o)o 3ao para representar u)a .etra[ o)o ar)a?enar u)a 3i(ura[
#e0ido O 0ariedade de tipos de in3or)ao a sere) representadosM e O estrutura .i)itada da
)e)Eria de u) co)putadorM as .in(ua(ens de pro(ra)ao o3erece) 0:rias a.ternati0as para esta
representao. O 7ue todas t8) e) co)u) = a c.assi3icao da in3or)ao e) tipos de dados. #o ponto
de 0ista de u)a .in(ua(e) de pro(ra)aoM u) nD)ero rea. = di3erente de u) nD)ero inteiro. ")
nD)eroM se>a rea. ou inteiroM = di3erente de u)a se7F8ncia de caracteres. #esta 3or)aM u) nD)ero inteiro
= de u) tipo de dadoM u) nD)ero rea. = de outro tipoM assi) co)o u)a se7F8ncia de caracteres 7uais7uer
= de outro tipo distinto. PortantoM u)a 0ari:0e.M a.=) de ter u) no)eM ser: caracteri?ada pe.o tio de
dado 7ue pode conterM 7ue de0e ser in3or)ado 7uando dec.arar)os a 0ari:0e..
#e )aneira (era.M os tipos de dado de u)a .in(ua(e) de pro(ra)ao so 0aria1es dos tipos
inteiroM rea.M .E(ico T0erdadeiro ou 3a.soU e teAto.
Os conceitos relacionados a variveis e tios de dado s"o usados em todas
as lin$ua$ens de ro$rama("oN tudo !ue voc assimilar a!ui ter
alica("o em !ual!uer delas, ainda !ue com nomes di#erentes e e!uenas
varia()es. Em !ual!uer lin$ua$em nova, uma das rimeiras coisas !ue o
ro$ramador #az veri#icar !uais s"o os tios de dado dison'veis.
.*.&.% Tipos de dado do Tur=o Pas5al
@e>a na tabe.a a se(uir os principais tipos de dado no estruturadosM o respecti0o do)nio e a
7uantidade de bYte ocupadas na )e)Eria.
6 - MEMRA E ENTRADA DE DADOS $'
TIPO# DE DADO DO TUR(O PA#CA)
TIPO DE VA)OR TIPO DE DADO
PA#CA)
VA)ORE# PO##[VEI# (XTE#
ND)ero inteiro <Yte '..+55 1
S,ortint 21+5..1+& 1
$nte(er 2-+&45..-+&4& +
Cord '..455-5 +
%on(int 2+.1/&./5-.4/5..+.1/&./5-.4/& /
ND)ero rea. Rea. 2+.*e2-*..1.&e-5 4
TeAto ,ar u) caractere 1
Strin( TeAto 1 a +55
%E(ico <oo.ean 9a.seM True 1
PortantoM se 0oc8 precisa ar)a?enar u) 0a.or nu)=rico co) casas deci)aisM de0e dec.arar u)a
0ari:0e. do tipo rea.. Se o dado a representar = u) nD)ero inteiroM 0oc8 de0e esco.,er entre os cinco tipos
dispon0eisB =>teM i7tegerM EordM s6alli7t e lo7gi7tM cu>as di3erenas so basica)ente a 3aiAa de
nD)eros suportada.
Para ar)a?enar u) Dnico caractere T.etraM d(itoM sina.M caractere de contro.eU no Pasca.M use o
tipo 5:ar. Por eAe)p.oM se 0oc8 7uer re(istrar se a.(u) dado se re3ere a u)a pessoa 3sica ou >urdicaM
re3eridas co)o i9i ou iRiM pode dec.arar u)a 0ari:0e. do tipo c,ar. O )es)o tipo se ap.ica se 7uiser)os
ar)a?enar u) caractere correspondente a u)a tec.aM co)o retornado pe.a 3uno ReaddeY.
R: para representar dados co)o o no)e de u)a pessoaM seu endereo ou u)a 3rase 7ua.7uerM =
preciso dec.arar 0ari:0eis do tipo stri7gM 7ue per)ite dec.arar cadeias de at= +55 caracteres. @oc8 pode
indicar o co)pri)ento dese>ado entre co.c,etesB strin(r-'sM strin(r1''s. Se no indicadoM ser: assu)ido o
):Ai)o. O ta)an,o ):Ai)o de u)a 0ari:0e. stri7g = di3erente do seu ta)an,o din)icoB u)a 0ari:0e.
pode ter u) ):Ai)o de 5' caracteres e nu) deter)inado ponto da eAecuo do pro(ra)a estar
ar)a?enando 1* caracteres.
O critrio ara escolher tios de dado buscar o !ue melhor reresenta a
in#orma("o a ser armazenada, consumindo o m'nimo de memria.
Para distin(uir cadeias de caracteres de outros no)es do pro(ra)aM co)o no)es de 0ari:0eisM
representa)os u)a cadeia entre apEstro3osM co)o e) iTeAtoi. Se no o 3i?er)osM o co)pi.ador tentar:
interpretar o no)e ou se7F8ncia de caracteres co)o identi3icador Tde 0ari:0e.M 3uno ou outro e.e)entoU
ou co)o nD)eroM con3or)e co)ece co) .etra ou d(ito. Assi)M e) u) pro(ra)aM i Idadei representa
u)a cadeia de caracteresM en7uanto Idade representa u)a 0ari:0e.. O caractere apEstro3oM 7uando
necess:rioM = representado dup.icadoM co)o e) 'caixa d''gua'. A eApresso iiii representa u)a cadeia
co) u) Dnico caractere apEstro3o.
R: 0ari:0eis do tipo =oolea7 T.E(icoU pode) assu)ir so)ente dois 0a.oresB True e 9a.se
T0erdadeiro e 3a.soU. Nor)a.)ente so usadas para ar)a?enar resu.tados da a0a.iao de eApress1es
.E(icasM usadas para 0eri3ica1esB _o contador >: atin(iu 1''[`M _o a.uno tirou nota )aior do 7ue 5`[
O tipo de dado de u)a 0ari:0e. deter)ina e .i)ita o con>unto de 0a.ores 7ue e.a pode assu)ir e
as opera1es 7ue pode) ser eAecutadas co) a 0ari:0e.. !as se)pre a eseci#ica("o do pro(ra)a = 7ue
esc.arecer:M e) 0:rias situa1esM 7ua. ser: o tipo de dado )ais ade7uado. Se a especi3icao pede 7ue
0oc8 ca.cu.e 0a.ores inteiros para :reasM usar o tipo rea. pode ser inade7uado.
$+ APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
.ma varivel real ode armazenar um valor inteiro, mas n"o o contrrio.
E@e6plo .*., < Luadrado 5o6 li7:a e 5olu7a aleatBrias
"Mmlementar um ro$rama !ue desenha um !uadrado de lado 7 na tela, #eito com letras X e tendo o
canto suerior es!uerdo em uma linha e uma coluna sorteadas.3
@oc8 >: sabe 7ue pode usar as instru1es HotoZc e Crite para posicionar o 7uadrado na te.a. Sabe
ta)b=) 7ue pode usar a instruo Rando) para sortear a .in,a e a co.una. Os passos seria) os se(uintesB
/2ortear a linha3
/2ortear a coluna3
/1esenhar o !uadrado na linha e na coluna sorteadas3
Para a especi3icao aci)aM 0a)os precisar de duas 0ari:0eisM Os 7uais c,a)are)os %in,a e o.una.
Iuais os tipos de dado das 0ari:0eis %in,a e o.una[ %in,a est: entre 1 e +5M e o.una entre 1 e 5'.
Pode)os esco.,er s,ortint ou bYteM )as dare)os pre3er8ncia a este por7ue os 0a.ores te) nature?a
e)inente)ente positi0a. Note 7ue 0oc8 pode at= esco.,er os tipos inte(erM 6ord ou .on(intM )as estar:
usando )e)Eria desnecessaria)ente. O pro(ra)aB
PROGRAM QuadradoSorteado;
{Eesen#a um quadrado com 4 em lin#a e coluna sorteadas}
uses CRT;
var Lin, Col : byte;
begin
Randomize;
ClrScr;
Lin := 1 + Random(21); {sorteia lin#a de / a %/}
Col := 1 + Random(76); {sorteia coluna de / a BF}
GotoXY(Col, Lin); Writeln( 'XXXXX' );
GotoXY(Col, Lin+1); Writeln( 'X X' );
GotoXY(Col, Lin+2); Writeln( 'X X' );
GotoXY(Col, Lin+3); Writeln( 'X X' );
GotoXY(Col, Lin+4); Writeln( 'XXXXX' );
ReadKey;
end.
E@e6plo .*./ < Luadrado 5o6 5ara5tere lido
Escrever um ro$rama !ue desenha um !uadrado com o canto suerior es!uerdo em uma linha e coluna
lidas, usando um caractere tambm lido. Antes de terminar o ro$rama esera ser teclado Enter.
") pro>etoM na 3or)a de u)a te.a2eAe)p.o de sada do pro(ra)aM pode serB
6 - MEMRA E ENTRADA DE DADOS $*
Este programa desenha um quadrado com um caractere.
Digite o caractere: +
Digite a linha: 10
Digite a coluna: 30
+++++
+ +
+ +
+ +
+++++
Tecle Enter para terminar.
@e>a o pro(ra)a 7ue i)p.e)enta essa especi3icaoB
PROGRAM QuadradoComCaractere;
{Eesen#a um quadrado formado por um caractere lido, a partir de
lin#a e coluna lidas}
uses CRT;
var Lin, Col : byte;
Ch : char;
begin
ClrScr;
Writeln('Este programa desenha um quadrado com um caractere.');
Write('Digite o caractere: '); Readln(Ch);
Write('Digite a linha: '); Readln(Lin);
Write('Digite a coluna: '); Readln(Col);
GotoXY(Col, Lin); Write(Ch, Ch, Ch, Ch, Ch);
GotoXY(Col, Lin + 1); Write(Ch, ' ', Ch);
GotoXY(Col, Lin + 2); Write(Ch, ' ', Ch);
GotoXY(Col, Lin + 3); Write(Ch, ' ', Ch);
GotoXY(Col, Lin + 4); Write(Ch, Ch, Ch, Ch, Ch);
Writeln; Write(Tecle Enter para terminar.');
Readln;
end.
E@er55io .*.. < Odad ed sopit
Nu)ere a se(unda co.una T0ari:0eisU de acordo co) a pri)eira Ttipos de dadoM co) as .etras
e)bara.,adasU.
$ 2 ebYt T U $dade de u)a pessoaM e) anos
$$ 2 a.er T U @a.ores 9a.se ou True
$$$ 2 (rints T U Xabitantes de u) pas
$@ 2 rac, T U A rai? 7uadrada de u) nD)ero
@ 2 noebo.a T U ")a .etra do a.3abeto
@$ 2 (inno.t T U ") teAto 7ua.7uer
$, APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
Pr;ti5a .*.$ < (lo5os
9aa u) dia(ra)a de b.ocos para o pro(ra)a Iuadradoo)aractere.
Pr;ti5a .*.%0 < Co6pati=ilidade de tipos
O 3ato de ,a0er di3erentes tipos de dados te) i)p.ica1es e .i)ita as atribui1es 7ue pode)os co)andar.
Assi)M 0ari:0eis dec.aradas co)o do tipo inte(er so inco)pat0eis co) u) nD)ero rea. ou co) u)a
constante do tipo c,ar ou strin( e assi) por diante.
#i(ite o pro(ra)a de teste abaiAo e 0eri3i7ue 7uais das atribui1es so in0:.idas T3aa u)a de cada 0e?U.
$ndi7ue o cEdi(o de erro de co)pi.ao para esse tipo de erro.
var Numero : integer;
Nome : string[10];
Ch : char;
N : byte;
begin
Numero := 3.1415;
Numero := 'X';
Nome := 1215;
Nome := '1215';
Ch := 'Texto';
Ch := 0;
N := 32000;
end.
E@er55io .*.%% < De5lara89o de ?ari;?eis
Reescre0er as dec.ara1es abaiAoM corri(indo os erros de sintaAeB
aU Var ND)eroM oe3iciente B rea.N
bU ?ar inte(er N1M N+
cU ?ar No)eM E2)ai. B strin(r-''sN
dU ?ar PassouM u$ndica se o a.uno passou na discip.inav
eU VAR A.terou ure(istra se e) a.(u)a passa(e) a.(u) dado 3oi a.teradov B boo.eanN
3U ?aR $ncre)entoM e.sius B rea.N
E@er55io .*.%& D Co6plete
o)p.ete a tabe.a co) o no)e da 0ari:0e. e o tipo de dado )ais ade7uadoB
TIPO "E 3A#OR NOME "A 3ARI3E# TIPO "E "A"O PAS!A#
a) Quantidade de funcionrios QtFunc word
b) Salrio de um funcionrio VrSalario Real
c) Nome de um aluno NomeAluno String[30]
d) Nome de uma disciplina
e) Mdia de notas das disciplinas de um perodo
f) Data de nascimento
g) Placa de um carro
h) rea de um crculo
i) Nome de arquivo do DOS, com extenso e
sem subdiretrios
6 - MEMRA E ENTRADA DE DADOS $/
TIPO "E 3A#OR NOME "A 3ARI3E# TIPO "E "A"O PAS!A#
j) Saldo de uma conta bancria
k) Nmero de habitantes de uma cidade qualquer
l) Tipo de pessoa (valores: 'F' para pessoa fsica
e 'J' para pessoa jurdica)
m) CPF de uma pessoa, sem smbolos
delimitadores (somente os dgitos) e incluindo os
dgitos verificadores
E@er55io .*.%' < Vari;?eis de o=Hetos
$denti3i7ue 0ari:0eis e respecti0os tipos de dado para representar - caractersticas de cada u) dos
se(uintes ob>etosB
aU 3ita de 0deo
bU carteira de identidade
cU sua casa ou aparta)ento
dU .i0ro
eU carro
3U ca.a >eans
(U sapato ou t8nis
,U .:pis
iU p.anta
>U 3o.,a de c,e7ue
E@er55io .*.%+ < Vari;?eis 5odiCi5adas
Ao preenc,er u) cadastro de u) banco ou de u)a .o>aM 0oc8 >: de0e ter preenc,ido ca)pos codi3icadosB
ao in0=s de u)a in3or)aoM 0oc8 de0e escre0er o cEdi(o correspondente. Por eAe)p.oM seAo T)ascu.ino
1M 3e)inino +UM tipo de pessoa T3sica i9iM >urdica iRiU. Esse tipo de codi3icao pode ser )ais ou )enos
3:ci. de .er e entenderN por eAe)p.oM seAo co) 0a.ores i!i ou i9i ou co) nD)eros. Para as in3or)a1es
abaiAo e seus 0a.ores poss0eisM e.abore u)a codi3icao e dec.are u)a 0ari:0e. co) o tipo ade7uado de
dadoB
aU #ati.o(ra3ia TnadaM cati.E(ra3oM de? dedosU
bU Estado ci0i. TcasadoM so.teiroM 0iD0oM des7uitadoM di0orciadoU
cU Tipo de )oradia TprEpriaM a.u(adaM cedidaM ,ipotecadaM outrosU
dU 9u)ante Tsi) ou noU
eU on,eci)entos de in(.8s T3a.aSescre0eM .8M todosU
E@er55io .*.%* D Co6peti89o
9or)e + (rupos de co.e(as. Esco.,a) u) ob>eto co)u) e 0e>a) 7ua. (rupo conse(ue identi3icar )ais
0ari:0eis do ob>eto e) + )inutos.
E@er55io .*.%, < I7stru8Aes 5o6 ?ari;?eis
odi3icar instru1es Pasca. iso.adas para as a1es abaiAo Tpressupon,a 7ue as 0ari:0eis necess:rias 3ora)
dec.aradasU. Si(a o )ode.oB
aU !ostrar na te.a o conteDdo das 0ari:0eis odi(oM No)e e PrecoM separadas por espaos
2olu("oB CriteTodi(oM w wM No)eM w wM PrecoUN
$. APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
bU So)ar 1' O 0ari:0e. N e ar)a?enar o resu.tado na prEpria 0ari:0e. N
cU a.cu.ar o resto da di0iso inteira da 0ari:0e. N por 1- e atribuir o resu.tado O 0ari:0e. Resto
dU a.cu.ar o seno do conteDdo da 0ari:0e. NM eAtrair a parte inteira e )ostrar o resu.tado na te.a
eU Atribuir O 0ari:0e. #e.ta o resu.tado do c:.cu.o b
+
2 /ac.
3U !ostrar na te.a o 0a.or do co2seno da rai? 7uadrada da eAponencia. da 0ari:0e. N
(U %er do tec.ado u)a cadeia de caracteres e ar)a?en:2.o na 0ari:0e. strin( S.
,U %er u) nD)ero para a 0ari:0e. Nu).
iU %er u) caractere para a 0ari:0e. ,.
>U Sortear u) nD)ero 7ue pode ser ' ou 1 e ar)a?enar o resu.tado na 0ari:0e. Sorteio./
E@er55io .*.%/ < E@pressAes arit6Rti5as 5o6 ?ari;?eis
9ornea eApress1es arit)=ticas e) Pasca. 7ue represente) as se(uintes 3Er)u.as Tuse 0ari:0eis co)
no)es apropriadosUB
aU !=dia arit)=tica de - nD)eros
bU So)a dos N pri)eiros nD)eros inteiros r3Er)u.aB N TNt1US+Us
cU @a.or e) (raus e.sius correspondente a u)a te)peratura e) (raus 9a,ren,eit r3Er)u.aB n
5S*T92-+Us.
Pr;ti5a .*.%. < A5:e o erro
O pro(ra)a abaiAo de0eria i)p.e)entar a se(uinte especi3icaoB
"O critrio de notas de uma #aculdade consiste de uma nota de 0 a 10 em cada bimestre, sendo a
rimeira nota eso 4 e a se$unda eso 6. Elabore um ro$rama !ue l as notas bimestrais e calcula a
nota do semestre."
Ocorre 7ue ,: u) erro de .E(ica. #escre0a o erroM corri>a2o e teste o pro(ra)a.
6 - MEMRA E ENTRADA DE DADOS $$
PROGRAM CalcNotaSemestral;
uses CRT;
var Nota1, Nota2 : real;
begin
ClrScr;
Writeln('Clculo da nota final a partir das notas bimestrais, pesos 2 e 3.');
Write('Entre nota do 1o. bimestre: ');
Readln(Nota1);
Write('Entre nota do 2o. bimestre: ');
Readln(Nota2);
Write('Nota final: ',(Nota1*2 + Nota2*3/5):0:1);
Readkey;
end.
$,$*$ Mais do tipo de dado 5:ar
Pr;ti5a .*.%$ < Co7:e5e7do 5:ar
#i(ite e eAecute o pro(ra)a abaiAoM inicia.)ente se) e depois co) o debu((er.
PROGRAM DemoChar;
{demonstrao do tipo de dado char e algumas operaes com variveis desse tipo}
uses CRT;
var Ch1, Ch2 : char;
S : string;
begin
ClrScr;
Write('Digite um valor para o caractere 1: '); Readln(Ch1);
Writeln('Veja o que pode ser feito com variveis do tipo char.');
Writeln('Pressione uma tecla aps conferir um resultado.'); Writeln;
Ch2 := 'x';
Writeln('A varivel Ch2 no foi inicializada. O comando Ch2 := ''x'' atribui');
Writeln('o caractere x a Ch2. Confira, o valor dela agora : ', Ch2);
ReadKey;
Writeln('Transforme o valor da varivel em maiscula.' );
Ch2 := UpCase(Ch2);
Writeln('Aps o comando Ch2 := UpCase(Ch2), essa varivel agora contm: ', Ch2);
ReadKey;;
Write('Concatenao (juno), usando o operador +: Ch1 + Ch2 = ');
Writeln(Ch1 + Ch2); ReadKey;
Write('A mesma operao, usando a funo Concat(Ch1, Ch2): ');
Writeln(Concat(Ch1, Ch2)); ReadKey;
Writeln('Entre com um caractere na leitura a seguir, usando o teclado numrico.');
Writeln('Pressione Alt e tecle 178, solte Alt e tecle Enter.');
Readln(Ch1);
Writeln('Ch1 agora contm: ', Ch1); ReadKey;
Writeln('A instruo FillChar preenche uma string com caracteres.');
Writeln('Vamos preencher a string S com 70 vezes Ch1. O comando FillChar(S, 70, Ch1)');
Writeln('Veja como ficou S (tecle algo):'); ReadKey;
FillChar(S, 70, Ch1); Writeln(S); ReadKey;
end.
Pr;ti5a .*.&0 < Up5ase se6 6aiZs5ulas
9aa u) pe7ueno pro(ra)a de teste e 0e>a o 7ue a 3uno "pcase retorna 7uando recebe caracteres 7ue
no a )aiDscu.a correspondenteM co)o iWi e iyV.
Pr;ti5a .*.&% < )e7do te5las 5o6 Readae>
#i(ite e eAecute o pro(ra)a abaiAoM depois si(a as eAp.ica1es.
%00 APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
PROGRAM MostraTecla;
{demonstra uso de >eadGeH como funo e procedimento}
uses CRT;
var Ch : char;
begin
Writeln('Pressione uma tecla');
Ch := ReadKey;
Writeln('Voc pressionou a tecla ', Ch);
Writeln('Pressione outra tecla para terminar');
ReadKey;
end.
@i)os usando ReaddeY co)o u) procedi)entoM )as e.a = na 0erdade u)a 3unoM 7ue retorna o
caractere correspondente O tec.a pressionada. ")a 0anta(e) de usar ReaddeY para .er u) caractere = 7ue
o usu:rio no precisa tec.ar EnterM co)o no Read.n. Sendo u)a 3unoM pode)os c,a)ar ReaddeY dentro
de u) Crite ou atribuir seu resu.tado a u)a 0ari:0e.. @e>a o eAe)p.oB
O pro(ra)a aci)a 3uncionar: para tec.as de caracteres nor)aisM co)o a.3ab=ticos e nu)=ricos. Para
tec.as de 3uno ou nor)ais a.teradas por u)a tec.a de contro.eM co)o S,i3tM A.t e ontro.M ReaddeY
retornar: ?ero e ser: necess:rio c,a):2.a no0a)ente parar obter u) se(undo cEdi(o. Para tratar essa
situaoM precisa)os de instru1es 7ue 0ere)os no prEAi)o captu.o.
Ar6aQe7a7do 5ara5teres 7a 6e6Bria
Se e) u) bYte de )e)Eria pode)os apenas representar nD)eros de ' a +55M co)o ento representar
.etras e outros caracteresM 7ue constitue) os 0a.ores dos tipos de dado c,ar e strin([
%etras e outros s)bo.os no nu)=ricos so ar)a?enados na )e)Eria ta)b=) na 3or)a de
nD)erosM sendo a correspond8ncia 3eita atra0=s de tabe.as 7ue associa) .etras a cEdi(os nu)=ricos.
Nos co)putadores padro P = usada a tabe.a AS$$ TA)erican Standard ode 3or $n3or)ation
$nterc,an(eUM 7ue 0ai de 1 a +55 T1 bYteM portantoU. Ne.aM a.=) de .etrasM nD)eros e sinais de
pontuaoM eAiste) cEdi(os nu)=ricos para caracteres de contro.e Tpor eAe)p.oM o 1- corresponde
ao ENTER e o +& ao ESAPEU e desen,os de .in,as si)p.es e dup.as Tretas ,ori?ontais e 0erticaisM
cantosU. Para .etrasM ,: cEdi(os distintos para )aiDscu.as e )inDscu.asB o cEdi(o 44 corresponde a
i<iM e o *5 corresponde a ibi. X: u) cEdi(o ta)b=) para o caractere iespaoiM o -+.
Assi)M o nD)ero 44 ar)a?enado nu) bYte de )e)Eria = interpretado de 3or)a di3erenteM con3or)e
o tipo de dado co) 7ue 3oi de3inido a 0ari:0e. a.i ar)a?enada. Se o dado 3orM por eAe)p.oM de u)
tipo nu)=rico 7ue ocupa u) bYteM = o nD)ero 44 )es)o. Se o bYte 3or parte da representao de
u)a cadeia de caracteresM = interpretado co)o o caractere i<i. Para o co)pi.adorM .etras no se
)istura) co) nD)eros. No caso de u) dado do tipo cadeia de caracteresM )es)o se o nD)ero
ar)a?enado 3or 5'M = interpretado co)o o caractere i+iM e no o nD)ero +. Para representar a
se7F8ncia de caracteres i45iM so necess:rios + bYtesB u) para o i4i e outro para o i5i.
@e>a a tabe.a AS$$ no ap8ndice #.
6 - MEMRA E ENTRADA DE DADOS %0%
E@er55io .*.&& < 4a6iliariQa89o 5o6 a ta=ela A#CII
Nu)ere a se(unda co.una de acordo co) a pri)eiraM se(undo a correspond8ncia do caractere AS$$ co)
o respecti0o cEdi(oB
aU z T U /-
bU t T U 55
cU & T U *'
dU Z T U -4
eU f T U 55
3U { T U 1+4
Pr;ti5a .*.&' < O=te7do 5ara5teres A#CII
No editor do Turbo Pasca.M e) u) teAto 7ua.7uerM e usando o tec.ado nu)=ricoM obten,a os caracteres
correspondentes a a.(uns cEdi(os na 3aiAa de 15' a +'' T0e>a co)o no pro(ra)a2tutoria. aci)aU.
$,$+$ Mais do tipo de dado stri7g
Pr;ti5a .*.&+ < Co7:e5e7do stri7gs
#i(ite e eAecute o pro(ra)a abaiAoM inicia.)ente se) e depois co) o debu((er.
PROGRAM DemoStrings;
{demonstrao do tipo de dado string e algumas operaes com variveis desse tipo}
uses CRT;
var S1 : string; {uma cadeia (string) de tamanho mximo 255}
S2 : string[30]; {tamanho mximo 30}
S3 : string[3]; {tamanho mximo 3}
begin
ClrScr;
Write('Digite um valor para a string 1 (at 255 caracteres): ');
Readln(S1);
Write('Digite um valor para a string 2 (at 30 caracteres): ');
Readln(S2);
Writeln('Digite um valor para a string 3 (at 3 caracteres; ');
Write('O que passar disso ser desprezado na leitura: ');
Readln(S3);
Writeln('Veja o que pode ser feito com variveis do tipo string.');
Writeln('Pressione uma tecla aps conferir um resultado.');
Write('Concatenao (juno), usando o operador +: S1 + S2 = ');
Writeln(S1 + S2); ReadKey;
Writeln('A mesma operao, usando a funo Concat: ');
Writeln(Concat(S1, S2)); ReadKey;
Writeln('Para calcular o tamanho atual de uma varivel string, use a funo Length.');
Writeln('Por exemplo, S1 tem atualmente ', Length(S1), ' caracteres.');
Writeln('Para obter um caractere de uma string, use colchetes aps o nome da varivel.');
Writeln('O primeiro caractere de S1 S1[1]: ', S1[1]); ReadKey;
Writeln('O terceiro de S2 S2[3], que ', S2[3]); ReadKey;
Writeln('O ltimo caractere de S2 obtido com S2[ Length(S2) ]: ',
S2[ Length(S2) ]);
ReadKey;
Writeln('Voc pode mudar somente um caractere de uma varivel string,');
Writeln('basta indicar o nmero dele entre colchetes na atribuio.');
S3 [1] := '!';
Writeln('Apos o comando S3[1] := ''!'', S3 ficou assim: ', S3); ReadKey;
Writeln('Para extrair uma subcadeia, use a funo Copy(VarString, PosInicial,
Qtde).');
%0& APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
Write('Copy(S2, 3, 2) obtm, a partir do terceiro, 2 caracteres (se houver): ');
Writeln(Copy(S2, 3, 2)); ReadKey;
Writeln('Procure outras instrues para strings: ');
Writeln('Pos: pesquisa uma subcadeia em uma cadeia');
Writeln('FillChar: preenche uma varivel string com um caractere');
ReadKey;
end.
I#%eiro ou s%ri#!< ; Em al$uns casos ode haver um dilema na
reresenta("o de um dado !ue s contm d'$itos+ como strin$ ou como
inteiroB Esse o caso de um n8mero de tele#one. Outros dados ossuem
d'$itos e sinais mas o armazenamento dos sinais desnecessrio, como em
um ,E- ou um ,-*. Em rinc'io, voc ode alicar a re$ra+ se n"o
ser"o #eitas oera()es matemticas com o dado, use o tio strin$, a menos
!ue tenha um bom motivo ara n"o #az;lo. Nessa !uest"o Ccomo em
vrias outrasD, a e%erincia ser seu melhor ro#essor.
E@er55io .*.&* < RG R i7teiroP
@oc8 representaria u) nD)ero de identidade co)o u) inteiro ou co)o u)a cadeia de caracteres[
EAp.i7ue.
Pr;ti5a .*.&, < Atri=ui89o de te@to
Para atribuir cadeias de caracteres a 0ari:0eis tipo strin(M ou u) caractere a u)a 0ari:0e. tipo c,arM
escre0e)os a cadeia ou o caractere entre apEstro3os. Se o caractere apEstro3o 3a? parte da cadeiaM de0e
aparecer dup.icado. Assi)M 7uando 3ore) eAecutadas as instru1es do pro(ra)aB
var Nome : string[30];
Ch : char;
begin
Nome := 'Fulano de Tal';
Ch := ''''
end.
ser: atribudo O 0ari:0e. No)e o conteDdo i9u.ano de Ta.iM e O 0ari:0e. , u) apEstro3o. #i(ite o
pro(ra)a aci)a e co)pro0eM usando o debu((er.
At !ue tenha sido armazenado um valor ela rimeira vez em uma
varivel, seu conte8do inde#inido, e ode ser !ual!uer coisaN voc !ue
deve cuidar disso.
Pr;ti5a .*.&/ < Ra7ge 5:e5W
Procure no )enu Optio7sVCo6piler u)a opo 7ue ati0aSdesati0a a 0eri3icao de 3aiAa Tran$e
checPin$U. Acesse a a>uda e 0e>a o 7ue si(ni3ica. 9aa u) pe7ueno pro(ra)a 7ue apenas .8 u) 0a.or para
u)a 0ari:0e. do tipo bYte e )ostra seu conteDdo na te.a. o)pi.e inicia.)ente co) a opo de
0eri3icao ati0adaM eAecute o pro(ra)a e di(ite u) 0a.or )aior 7ue +55. #epois desati0e a 0eri3icao de
3aiAa e co)pi.e no0a)enteM eAecutando da )es)a )aneira. #escre0a o 7ue obser0ou de di3erente e os
poss0eis i)pactos e) pro(ra)as.
E@er55io .*.&.
Represente cada descrio co)o u)a Dnica instruo Pasca.B
aU on0erter a 0ari:0e. , para )aiDscu.a e ar)a?enar o resu.tado na prEpria 0ari:0e. ,.
6 - MEMRA E ENTRADA DE DADOS %0'
bU A.terar o D.ti)o caractere da 0ari:0e. strin( ad para ifi.
cU on0erter o D.ti)o caractere da 0ari:0e. ad para )aiDscu.o.
dU EAtrair o caractere da 0ari:0e. No)eM na posio indicada pe.a 0ari:0e. NM e atribuir o resu.tado O
0ari:0e. ,.
Pr;ti5a .*.&$ < Pro=le6a 5o6 Yrite
") estudante de pro(ra)ao esta0a co) o se(uinte prob.e)aB u) Crite.n de0ia )ostrar u)a .in,a de
,3ens co) 5' caracteresM )as e.e no 7ueria 7ue o teAto do pro(ra)a23onte 3osse a.=) da )ar(e) direita
da te.a T3aci.ita a 0isua.i?ao e a descoberta de errosU. Ao tentar 7uebrar a cadeia e) duas .in,asM co)o
abaiAoM o co)pi.ador no per)itiuB
Crite.nTi2222222222222222222222222222222222222222
2222222222222222222222222222222222222222iUN
Pes7uise e teste tr8s so.u1es para o prob.e)aB
aU "sando Crite
bU "sando o operador iti
cU "sando a 3uno 9i..,ar.
$,$,$ Des5o=ri7do ?ari;?eis
@oc8 0ai identi3icar as 0ari:0eis de u) pro(ra)aM e) (era.M ao iniciar a i)p.e)entao do
pro(ra)a23onteM apEs ter pe.o )enos parte do pro>eto. E) (era.M procura)os 0a.ores 7ue )uda) de u)a
eAecuo do pro(ra)a para outra. Por eAe)p.oM u)a e7uao do se(undo (rauM cu>o pro(ra)a >: 0i)osM
te) a 3or)a
aA
+
t bA t cM
7ue representa (enerica)ente todas as e7ua1es dessa orde). O 7ue )uda de u)a para outra[
EAata)ente os coe3icientes aM b e c. PortantoM u) pro(ra)a 7ue reso.0a e7ua1es do se(undo (rau precisa
ter 0ari:0eis para os tr8s coe3icientes Tno )ni)oU.
onsidere a(ora 7ue u) pro(ra)a 7ue in0erte u)a cadeia de caracteres .ida pe.o tec.ado. $sto =M
se o usu:rio entrar co) icadeia a inverteriM o pro(ra)a )ostrar: na te.a a cadeia iretrevni a
aiedaci. Iuais as 0ari:0eis[ Pe.o )enos u)a ser: necess:riaM para ar)a?enar a cadeia di(itada no
tec.ado. #ependendo da i)p.e)entaoM pode ou no ser necess:ria u)a outra 0ari:0e. para ar)a?enar a
cadeia in0ertidaM con3or)e o pro(ra)a )ostre2a direta)ente na te.a ou ar)a?ene2a e) u)a 0ari:0e. para
)ostrar depois.
Se o pro(ra)a si)u.a u) iZi se )o0endo pe.a te.aM da es7uerda para a direita e de ci)a para
baiAoM no so necess:rias 0ari:0eis para ar)a?enar dados 3ornecidos pe.o tec.ado. !as interna)ente o
pro(ra)a se(uida)ente posiciona o Z e) .in,as e co.unas di3erentesM portanto ,a0er: pe.o )enos duas
0ari:0eis.
"se se necess:rio as per(untas abaiAo.
1. O !ue sai, isto , !uais in#orma()es s"o aresentadas elo ro$rama ao usurioB
1.1. O !ue mostrado na telaB
1.4. O !ue imressoB
%0+ APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
1.6. O !ue sai do ro$rama or outros meiosB
4. Iue in#orma()es entram, isto , o !ue #ornecido elo usurioB
6. O !ue calculado elo ro$ramaB
5. Iue in#orma()es s"o constantes ou estveis durante uma e%ecu("o do ro$ramaB
7. Iue in#orma()es odem ser di#erentes em duas e%ecu()es do ro$ramaB
G. Iue in#orma()es intermedirias reciso reresentar ara obter a sa'daB
E@e6plo .*.'0 < Des5o=ri7do ?ari;?eis de e7trada %
Ac,e as 0ari:0eis de entrada para cada especi3icao abaiAoM isto =M 0ari:0eis 7ue de0e) ser dec.aradas
para receber dados 0ia tec.adoB
aU Elabore um ro$rama !ue l trs valores e calcula a mdia $eomtrica dos n8meros lidos
Cdivis"o do roduto ela !uantidade de valoresD.
So.uoB N1M N+ e N-M do tipo rea. Tse 3osse esco.,ido u) tipo inteiro no estaria erradoM >: 7ue a
especi3icao = o)issa 7uanto a istoU.
bU Escrever um ro$rama !ue l um caractere, as iniciais de um nome C6 caracteresD, uma linha e
uma coluna e deois desenha na tela um tri@n$ulo e!Kiltero #ormado com o caractere, tendo
dentro as iniciais lidas. O caractere no ice do tri@n$ulo deve estar na linha e coluna lidas, e a
altura do tri@n$ulo deve ser no m%imo 7 linhas.
So.uoB , Tc,arUM $niciais Tstrin(r-sUM %in e o. TbYteU.
E@e6plo .*.'% < Des5o=ri7do ?ari;?eis de e7trada &
Ac,e as 0ari:0eis de entrada para a especi3icao abaiAoB
/.m salrio tem os se$uintes comonentes+
; valor nominal
; adicional devido a horas e%tras
; valor descontado ara o MN22 C10d do valor a receber, limitado a 170 reaisD.
O valor adicional devido Es horas e%tras calculado dividindo;se o valor nominal or 1:G C44
dias de a horasD, multilicando;se ela !uantidade de horas e ainda com um acrscimo de
70d.
Escrever um ro$rama !ue l os valores necessrios, calcula e mostra na tela os comonentes
do salrio e o salrio l'!uido resultante ara o emre$ado. N"o reciso rever
arredondamentos, mas os valores devem ser mostrados na tela com duas casas decimais.
E%emlos+ ara um salrio de Q` 1.000,00, com 60 horas e%tras, teremos Q` 477,Ga de horas
e%tras ]C1.000[1:GDV60V1,7^, Q` 147,7: de MN22 e um salrio l'!uido de Q` 1.160,11. -ara um
salrio de Q` 4.000,00 e 40 horas e%tras, seriam Q` 650,01 de horas e%tras, Q` 170,00 de
MN22 Ce n"o os 10dD, com um salrio l'!uido de Q` 4.100,01.3
So.uoB O 0a.or no)ina. de0e ser .idoM be) co)o a 7uantidade de ,oras eAtras. Todos os de)ais
0a.ores sero ca.cu.ados pe.o pro(ra)a.
E@er55io .*.'& D A5:e ?ari;?eis 7a espe5iCi5a89o
$denti3i7ue 0ari:0eis para a especi3icao abaiAoB
.ma conta tele#?nica comosta dos se$uintes custos+
assinatura+ Q` 1:,00
6 - MEMRA E ENTRADA DE DADOS %0*
imulsos+ Q` 0,05 or imulso !ue e%ceder a 00
valor de interurbanos
chamadas [ celular+ Q`0,40 or imulso
Elabore um ro$rama !ue l os imulsos e%cedentes, valor de interurbanos e !uantidade de
chamadas ara celular e calcula o valor da conta.
Espe5iCi5a89o .*.'' D Te6po li?re
Reescre0a o pro(ra)a a.cTe)poEstudo Tp:(. &/U de 3or)a 7ue trate 7ua.7uer discip.ina e 7ua.7uer
7uantidade de te)po .i0re. Assi)M o estudante entra co) esses 0a.ores e o pro(ra)a e3etua os c:.cu.os
necess:rios. Teste co) 0a.ores 0ariados.
Espe5iCi5a89o .*.'+ D Co6pri6e7to de Cio
A.tere o pro(ra)a do e.etricista Tp:(. 5+U para 7ue as )edidas se>a) .idas do tec.ado.
Espe5iCi5a89o .*.'* D Nota 6usi5al
E.aborar u) pro(ra)a 7ue .8 u)a 3re7F8ncia Te) Xert?U e u)a durao Te) )i.isse(undosU e e)ite u)
so) na 3re7F8ncia co) a durao.
Espe5iCi5a89o .*.', D EtiFueta
Escre0a u) pro(ra)a 7ue .8 do tec.ado seu no)e co)p.etoM endereoM EP e te.e3oneM .i)pa a te.a e
)ostra M centra.i?adosM seu no)e na pri)eira .in,aM seu endereo na se(undaM e o EP e te.e3one na
terceira.
Espe5iCi5a89o .*.'/ D MRdia arit6Rti5a
Escre0er pro(ra)a 7ue .8 tr8s notas inteiras e ca.cu.a a sua )=dia arit)=tica.
Espe5iCi5a89o .*.'. D Me7u posi5io7ado
$)p.e)ente u) pro(ra)a 7ue )ostra o )enu abaiAo a partir de u)a .in,a .ida do tec.adoB
Menu de Consultas
0 - Fim
1 - Clientes
2 - Produtos
3 - Faturas
4 - Estoque
Opo: _
Espe5iCi5a89o .*.'$ D MRdia po7derada
$)p.e)ente u) pro(ra)a 7ue .8 tr8s 0a.ores e ca.cu.e a )=dia ponderada para pesos 1M + e -M
respecti0a)ente T)u.tip.i7ue cada nota pe.o seu pesoM so)e os produtos e di0ida o resu.tado pe.a so)a
dos pesosU.
%0, APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
Espe5iCi5a89o .*.+0 D Arit6Rti5a =;si5a
$)p.e)ente u) pro(ra)a 7ue .8 dois nD)eros 7uais7uer e in3or)a sua so)aM di3erenaM produto e
7uocienteM 3or)atados co) + casas deci)ais.
Espe5iCi5a89o .*.+% D 4u78Aes 6ate6;ti5as
E.abore u) pro(ra)a 7ue .8 u) nD)ero Tsupon,a 7ue ser: positi0oU e in3or)a seu 7uadradoM rai?M
.o(arit)o e eAponencia.M 3or)atados co) / casas deci)ais
Espe5iCi5a89o .*.+& D )osa7gos
$)p.e)ente u) pro(ra)a 7ue desen,e os .osan(os abaiAo na te.aM sendo 7ue o topo do pri)eiro .osan(o
= co.ocado e) u)a .in,a e u)a co.una .idas do tec.adoM e o topo do se(undo 3ica 15 co.unas O direita do
pri)eiro.
X X
XXX XXX
XXXXX XXXXX
XXXXXXX XXXXXXX
XXXXXXXXX XXXXXXXXX
XXXXXXX XXXXXXX
XXXXX XXXXX
XXX XXX
X X
Espe5iCi5a89o .*.+' D Tri]7gulo 5o6 i7i5iais
Escre0er u) pro(ra)a 7ue .8 u) caractereM as iniciais de u) no)e T- caracteresUM u)a .in,a e u)a
co.una e depois desen,a na te.a u) trin(u.o 3or)ado co) o caractereM tendo dentro as iniciais .idas. O
caractere no :pice do trin(u.o de0e estar na .in,a e co.una .idasM e a a.tura do trin(u.o de0e ser no
):Ai)o 5 .in,as.
Espe5iCi5a89o .*.++ D Co7?ers9o de te6peratura
") cana. de notcias internacionaisM a caboM pre0ia te)peratura ):Ai)a para <ras.ia de 55 (raus
9a,ren,eit. Escre0er u) pro(ra)a 7ue .,e per)ita con0erter esta te)peratura Te 7ua.7uer outraU para
(raus e.siusM sabendo 7ue a re.ao entre e.as = n 5S* T9 2-+U.
Espe5iCi5a89o .*.+* D Despesas de 5asal
") casa. di0ide as despesas do)=sticas )ensa.)ente. #urante o )8s cada u) anota seus (astos e as
contas 7ue pa(aN no 3ina. e.es di0ide) )eio a )eio. O casa. dese>a u) pro(ra)a 7ue 3aci.ite o acertoB
e.es di(itaria) os (astos de cada u)M e o pro(ra)a )ostraria 7ue) de0e a 7ue). Atua.)ente e.es 3a?e)
o acerto )anua.)enteM na 3or)a da se(uinte tabe.aB
ITEM MARIDO E#PO#A TOTA)
#ESPESAS PAHAS 1+''M'' *5'M'' +.15'M''
o PAHO 55M51 //M1* 1''
@A%OR #E@$#O 1'&5M'' 1'&5M'' +15'M''
SA%#O 21+5M'' 1+5M''
PortantoM os sa.dos de0e) ser i(uaisM e 7ue) ti0er o sa.do ne(ati0o de0e pa(ar o 0a.or para o outro. 9aa
u) pro(ra)a 7ue .eia os 0a.ores ade7uados e e3etue os c:.cu.os. O tota. = a so)a das despesas
indi0iduaisN u) percentua. = o (asto indi0idua. di0idido pe.o tota.M )u.tip.icado por 1''N o 0a.or de0ido
6 - MEMRA E ENTRADA DE DADOS %0/
por cada u) = o )es)o e i(ua. O )etade do tota.N 3ina.)enteM cada sa.do corresponde ao 0a.or de0ido
)enos o 0a.or pa(o.
")a te.a para o pro(ra)a pode serM co) os )es)os dados da tabe.a aci)aB
Este programa rateia despesas de casal (50% para cada).
Digite valor das despesas do marido: 1200
Digite valor das despesas da esposa: 950
ITEM MARIDO ESPOSA TOTAL
============== ======= ======= =======
Despesas pagas 1200.00 950.00 2150.00
% pago 55.81 44.19 100
Valor devido 1075.00 1075.00 2150.00
Saldo -125.00 125.00
aU E.abore u) pro(ra)a para a especi3icao descrita.
bU A.tere o pro(ra)a de 3or)a 7ue o )arido ar7ue co) 4'o das despesas e a esposa co) o restante.
cU Supon,a 7ue o casa.M ao in0=s de di0idir )eio a )eio as despesasM 0ai di0idi2.as
proporciona.)ente O renda de cada u). A.tere o pro(ra)a de 3or)a 7ue este .eia ta)b=) a renda
de cada u) e use a proporo das rendas para a di0iso
Espe5iCi5a89o .*.+, D Adi?i7:a
Escre0er u) pro(ra)a 7ue i)p.e)enta u)a brincadeira de _adi0in,ar` u) nD)ero pensado por u)a
pessoa. @e>a eAe)p.o do di:.o(oB
- -ense um n8mero Co outro ensou o :D.
- Aultili!ue or 4 COPD
- 2ome G ao resultado COPD
- 1ivida o resultado or 4 COPD
- Iuanto deuB3 CO outro in#orma 10D.
- =oc ensou o n8mero : COhhhOOOD
r1ica+ roblemas desse tio d"o ori$em a uma e%ress"o aritmtica, e voc ode alterar as oera()es E
vontade, desde !ue a e%ress"o resultante admita uma inversa. Normalmente estruturamos o roblema
de #orma !ue a e%ress"o ermita uma simli#ica("o !ue #acilite os clculos. -ara a se!Kncia do
e%emlo, a e%ress"o Csendo n o n8mero ensado e Q o resultadoD+ CnV4_GD[4 c Q, donde n c CQV4;
GD[4 c Q ; 6. Ou se<a, basta subtrair 6 do resultado #ornecido ela essoa ara "adivinhar" o n8meros.
Espe5iCi5a89o .*.+/ D Co7?ers9o 56Vpol
aU 9aa u) pro(ra)a 7ue )ostra 1' .in,as de u)a tabe.a de con0erso cent)etroSpo.e(adaM a partir
de u) 0a.or .ido e 0ariando de 1' e) 1' cent)etros Tu)a po.e(ada e7ui0a.e a +M5/ cent)etrosU.
bU A.tere o pro(ra)a para 7ue a 0ariao ta)b=) se>a .ida do tec.ado.
%0. APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
Espe5iCi5a89o .*.+. D Notas do proCessor
") pro3essor a0a.ia seus a.unos atra0=s dos se(uintes crit=riosB
1U #uas notas de eAerccios de ' a 1'M se) casas deci)aisM peso 1 e peso +M respecti0a)enteM co) peso
de +'o na nota 3ina..
+U ")a nota de pro0a de ' a 1'M co) u)a casa deci)a. e peso de 5'o na nota 3ina..
E.abore u) pro(ra)a 7ue .8 as notas de u) a.unoM ca.cu.a e )ostra na te.a sua nota 3ina.M 3or)atada co)
u)a cada deci)a. e de0ida)ente ponderada pe.os pesos Tu)a )=dia ponderada = ca.cu.ada so)ando2se
os produtos de cada 0a.or pe.o seu peso e di0idindo2se a so)a resu.tante pe.a so)a dos pesosU. EAe)p.oB
") a.uno tirou 5 e 4 de eAerccios e 5M5 na pro0a. Sua nota de eAerccios = T5q1 t 4q+US- n 5M44&. Sua
nota 3ina. = T5M44&q+ t 5M5q5US1' n &M*.
Espe5iCi5a89o .*.+$ < Muitas 7otas 6usi5ais
E.aborar u) pro(ra)a 7ue .8 u)a 3re7F8ncia Te) Xert?U e u)a durao Te) )i.isse(undosU e e)ite 1'
sons co) a durao .idaM sendo o pri)eiro co) a 3re7F8ncia .ida e os se(uintes 1'o )aiores 7ue o
anterior.
Espe5iCi5a89o .*.*0 D Co7ta teleCI7i5a
")a conta te.e3;nica = co)posta dos se(uintes custosB
0a.or da assinaturaB Rz +1M/'
i)pu.sosB Rz 'M'- por i)pu.so 7ue eAceder a *'
0a.or de interurbanos
c,a)adas pS ce.u.arB Rz'M/' por i)pu.so
E.abore u) pro(ra)a 7ue .8 os i)pu.sos eAcedentesM 0a.or de interurbanos e 7uantidade de c,a)adas
para ce.u.ar e ca.cu.a o 0a.or da conta. #ec.are o 0a.or da assinatura e as tari3as co)o constantes.
Ao de3inir a te.aM i)a(ine 7ue est: 3a?endo u) produto para ser a0a.iado por u) c.ienteM >unta)ente co)
o de concorrentesM para u)a e0entua. co)pra.
$,$-$ De5lara7do seus prBprios tipos de dado
Ne) se)pre os tipos de dado dispon0eis na .in(ua(e) atende) per3eita)ente Os necessidades
do pro(ra)a. ")a caracterstica 7ue distin(ue o Pasca. de outras .in(ua(ens = a possibi.idade 7ue o
pro(ra)ador te) de dec.arar seus prEprios tipos de dado. ")a 0e? 7ue dec.arou o no0o tipoM pode
dec.arar 7uantas 0ari:0eis 7uiser da7ue.e tipo. X: 0:rias possibi.idades para isso no Pasca.N a7uiM
3icare)os restritos a u)a de.asM 7ue consiste e) dec.arar u) no0o tipo co)o u) subcon<unto de u) tipo
dispon0e. na .in(ua(e)B esse = o tipo sub3aiAa Tsubran$eU. A idade de u)a pessoaM por eAe)p.oM = u)
subcon>unto do tipo bYte. As .etras )aiDscu.as so u) subcon>unto do tipo c,ar.
#ec.ara)os u) tipo de dado atra0=s da pa.a0ra reser0ada t>peM nor)a.)ente antes da seo ?arM
e)bora possa 0ir ta)b=) depois. Para o tipo sub3aiAaM in3or)a)os o no)e do tipoM o .i)ite in3erior e o
.i)ite superior T7ue de0e ser )aior ou i(ua. ao .i)ite in3eriorUM separados por dois pontos. Para a idade e
para as .etras )aiDscu.asM pode)os dec.arar tipos da se(uinte 3or)aB
6 - MEMRA E ENTRADA DE DADOS %0$
type
tIdade = 1..120;
tMaiusc = 'A'..'Z';
A(ora pode)os dec.arar 0ari:0eis dos no0os tiposB
var Idade : tIdade;
Ch1, Ch2 : tMaiusc;
")a boa ap.icao para a de3inio de tipos = para cadeias de caracteres. E) u) pro(ra)a tpicoM
costu)a2se dec.arar 0:rias 0ari:0eis de u) )es)o tipoM co)o 0oc8 0er: no captu.o sobre criao de
instru1es. Se 0oc8 dec.arar u) no)e co)o strin(r-'sM por eAe)p.oM se ti0er 7ue )ud:2.o de0e percorrer
todo o pro(ra)a para substituir o ta)an,o onde 7uer 7ue e.e ocorra. A.ternati0a)enteM pode2se dec.arar
u) tipo para o no)eB
Type tNome : string[30];
A(oraM basta )udar a dec.arao do tipo para a.terar todas as dec.ara1es de 0ari:0eis desse tipo.
E@er55io .*.*% D #u=Cai@a
#ec.are tipos de dado sub3aiAa para representarB
aU No)es de .i0ros
bU $dade de pessoasM podendo estar inc.udos persona(ens bb.icos
cU %in,a da te.a e) )odo teAto padro T+5A5'U
dU #ata e) 3or)ato VAAAA!!##V
Pr;ti5a .*.*& < Luadrado#orteado ?&
Reescre0a o pro(ra)a IuadradoSorteadoM dec.arando u) tipo de dado sub3aiAa para a .in,a e outro para
a co.una. Teste.
$,$.$ Co7?ersAes e7tre tipos de dados
!uitas 0e?es precisa)os e3etuar con0ers1es entre tipos de dadosB de inteiro ou rea. para strin( ou
0ice20ersaM u) caractere para o cEdi(o AS$$ correspondente e 0ice20ersa. Por eAe)p.oM para e0itar erros
na entradaM pode)os .er u) nD)ero co)o teAto e depois con0ert82.o para nD)ero para e3etuar opera1es
)ate):ticas.
CBdigos A#CII
Para con0erter u) cEdi(o nu)=rico no respecti0o caractere da tabe.a AS$$M 0oc8 pode usar a
3uno padro ,r ou o s)bo.o y. Os pri)eiros dois co)andos abaiAo 3ornece) a )es)a sadaM ou
se>aM o caractere iRi. O terceiro e)ite u) bip no a.to23a.anteB
Crite.nT ,rT&/U UNeAostra \L\f
Crite.nT y&/ UN eidemf
Crite.nT y& UN eemite bif
A 3uno in0ersa = OrdM 7ue recebe u) caractere e retorna o cEdi(o AS$$ correspondente. Assi)M a
instruo abaiAo )ostrar: na te.a o nD)ero &/.
Crite.nT OrdTiRiU UN
RespondaB o 7ue ser: )ostrado na te.a pe.a instruo abaiAo[
Crite T,rTOrdTiXiUUUN
%%0 APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
E@e6plo .*.*' < De A#CII para 5ara5tere
Escre0a u) pro(ra)a 7ue .8 tr8s nD)eros e )ostra na te.a u)a cadeia 3or)ada pe.a concatenao dos
caracteres AS$$ de cada nD)ero.
")a te.a para o pro(ra)a pode ser assi)B
Entre trs nmeros de 0 a 255: 74 75 76
JKL
_
Precisa)os de tr8s 0ari:0eis inteiras para os nD)eros. o)o os cEdi(os AS$$ 0o de ' a +55M o tipo bYte
= apropriado. Para con0erter cada cEdi(o para o respecti0o caractereM usa)os a 3uno ,rM e para
concaten:2.as usa)os o operador t. O pro(ra)a 3ica assi)B
PROGRAM Concat3CodAscii;
uses CRT;
var N1, N2, N3 : byte;
begin
ClrScr;
Write('Entre trs nmeros de 0 a 255: ');
Readln(N1, N2, N3);
Writeln(Chr(N1) + Chr(N2) + Chr(N3));
end.
E@e6plo .*.*+ < De 5ara5tere para A#CII
E.abore u) pro(ra)a 7ue .8 u) no)e de at= 15 caracteres e )ostra a inicia. e seu cEdi(o AS$$M e a
D.ti)a .etra e seu cEdi(o.
")a te.a resu.tante da eAecuo do pro(ra)a pode serB
Entre um nome: Fulano
Inicial: F, cujo cdigo ASCII 70
Ultima: o, cujo cdigo ASCII 111
Precisa)os de 0ari:0eis para o no)e Tstrin(UM para a .etra inicia. e para a D.ti)a T,arU. O pro(ra)aB
6 - MEMRA E ENTRADA DE DADOS %%%
PROGRAM InicialEUltimaLetra;
uses CRT;
var Nome : string[15];
Inicial, Ultima : char;
begin
ClrScr;
Write('Entre um nome: ');
Readln(Nome);
Inicial := Nome[1];
Writeln('Inicial: ',Inicial, ', cujo cdigo ASCII ',
Ord(Inicial));
Ultima := Nome[Length(Nome)];
Writeln('Ultima: ', Ultima, ', cujo cdigo ASCII ', Ord(Ultima));
ReadKey;
end.
Pr;ti5a .*.** < Oti6iQa7do o uso de ?ari;?eis
A.tere o pro(ra)a $nicia.E".ti)a%etra para 3a?er as )es)as coisas por=) se) as 0ari:0eis $nicia. e
".ti)a. Teste2o para situa1es 0ariadas.
Espe5iCi5a89o .*.*, D I7i5iais
Escre0a u) pro(ra)a 7ue .8 no)e e sobreno)eM e )ostra na te.a as iniciais.
Espe5iCi5a89o .*.*/ D 4i7ais
Reescre0a o pro(ra)a anterior para )ostrar na te.a as .etras 3inais do no)e e sobreno)e Tuse a 3uno
%en(t,U.
Espe5iCi5a89o .*.*. D Co6po7e7tes de data
Escre0er u) pro(ra)a 7ue .8 u)a data no 3or)ato wddS))Saax e )ostra diaM )8s e ano separados.
Espe5iCi5a89o .*.*$ D #orteio da )(V
A %<@ 3e? u) sorteio cu>os bi.,etes contin,a) nD)eros de 4 d(itos. O sorteio 3oi baseado nos dois
pri)eiros pr8)ios da .oteria 3edera.M sendo o nD)ero sorteado 3or)ado pe.os tr8s D.ti)os d(itos do
pri)eiro e do se(undo pr8)io. Por eAe)p.oM se o pri)eiro pr8)io 3osse -/. *.& e o se(undo 5/.0$.M o
nD)ero da %<@ seria 55+.'*5. Escre0a u) pro(ra)a 7ue .8 os dois pr8)ios e retorna o nD)ero sorteado
Tuse a 3uno opYU.
Espe5iCi5a89o .*.,0 D #u=5adeias
Escre0a u) pro(ra)a 7ue .8 u)a cadeia de caracteres de ta)an,o +'M separa2a e) duas e )ostra na te.a
as duas )etades.
$,$/$ Ati?idades suple6e7tares
E@er55io .*.,% < Rele6=ra7do i7stru8Aes de 5ara5teres e 5adeias
Associe cada procedi)ento ou 3uno O sua 3ina.idade. Assina.e co) u) 9 os 7uadrados cu>as instru1es
so 3un1es e por isto pode) ser usados e) eApress1esB
%%& APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
Up5ase

Obter u)a subcadeia
Co75at

Obter o caractere correspondente a u) cEdi(o AS$$


Pos

Obter o cEdi(o AS$$ de u) caractere
)e7gt:

oncatenar u)a ou )ais cadeias
Cop>

Obter o ta)an,o de u)a cadeia
4illC:ar

Pes7uisar u)a subcadeia e) u)a cadeia
C:r

on0erter u) caractere para )aiDscu.a
Ord

Repetir u) caractere
PesFuisa .*.,& < C:a6a7do Cu78Aes 5o6o pro5edi6e7tos
No pro(ra)a !ostraTec.aM a 3uno ReaddeY = c,a)ada co)o 3uno Tdentro do Crite.nU ou co)o
procedi)ento. $sto = per)itido so)ente 7uando u)a certa opo de co)pi.ao est: ati0ada. #escubra no
)enu OptionsSo)pi.er do Turbo Pasca. 7ua. = essa opoM desati0e2aM tente co)pi.ar o pro(ra)a e
descre0a o 7ue ocorreu.
Espe5iCi5a89o .*.,' < A7i6a89o ?erti5al
9aa u) pro(ra)a 7ue desen,a u) VOV a partir de u)a .in,a e co.una .idas do tec.ado e depois 3a? o
se(uinte 1'

0e?esM esperando u)a tec.a antes de cada 0e? Tse)pre na .in,a .idaUB
2 apa(a o VOV da co.una atua. e o )ostra na co.una se(uinte
Espe5iCi5a89o .*.,+ D A7i6a89o :oriQo7tal
E.abore u) pro(ra)a se)e.,ante ao anteriorM )as 0ariando a .in,a.
Espe5iCi5a89o .*.,* D Metades de 5adeia
$)p.e)ente u) pro(ra)a 7ue .8 u)a cadeia de caracteres de ta)an,o at= +55 e )ostra na te.a as )etades
da cadeia. ]1ica+ basear os clculos no tamanho da cadeia^
Espe5iCi5a89o .*.,, D MZsi5a R li7earP
A respeito do pro(ra)a do parab=ns Tp:(. &*UM dese>a2se saber se a )e.odia = preser0ada so)ando2se u)
0a.or constante a cada 3re7F8ncia. 9aa u) pro(ra)a 7ue .8 esse 0a.or Tpor eAe)p.oM 1''U e 3a? soar as
notas so)ando o 0a.or a cada 3re7F8ncia.
PesFuisa .*.,/ < Mais 5o6a7dos do de=ugger
%oca.i?e no seu a)biente de desen0o.0i)ento Pasca. os se(uintes co)andosB
aU EAc.uir u)a 0ari:0e. da >ane.a Catc,es Ttente o boto direito do )ouseU
bU #i0idir a te.a e) duas >ane.asB a do pro(ra)a e a das 0ari:0eis T)enu Yi7doEU
cU !arcar u) ponto de u) pro(ra)a para interrupo da eAecuo TbreaPointU
dU #es)arcar breaPpoint.
6 - MEMRA E ENTRADA DE DADOS %%'
Pr;ti5a .*.,. < Readl7 5o6 =oolea7
9aa u) pe7ueno pro(ra)a de teste e in0esti(ue se u)a 0ari:0e. do tipo boo.ean pode usada e) u)a
instruo Read.n.
PesFuisa .*.,$ < I75
E) atribui1esM ao in0=s de constru1es do tipo Iuant Bn Iuant t 1M 0oc8 pode usar a instruo $nc Tde
incre)entUM 7ue per)ite au)entar o 0a.or de u)a 0ari:0e. inteira. Pes7uise na a>uda co)o us:2.a e 3aa
u) pe7ueno pro(ra)a de de)onstrao.
%%*
$- A#TERNATI3AS E "E!ISO
$)a(ine u) pro(ra)a 7ue ca.cu.a rai? 7uadrada de u) nD)ero 7ua.7uerM .ido do tec.ado. Se o
usu:rio di(itar u) nD)ero ne(ati0oM ocorre u) erro e o pro(ra)a ter)ina. Para 7ue isso no ocorraM =
preciso 7ue o pro(ra)a 0eri3i7ue se o nD)ero = ne(ati0o e so)ente ca.cu.e a rai? se isso no ocorrer. Ou
in0ersa)enteM so)ente ca.cu.ar a rai? se o nD)ero .ido 3or )aior ou i(ua. a ?ero.
Assi) co)o pessoasM pro(ra)as 7ue 3a?e) 0eri3ica1es e to)a) boas decis1es so )ais
produti0os. @e>a neste captu.o co)o os pro(ra)as pode) 3a?er essas 0eri3ica1es eM co) base no
resu.tado destasM eAecutar ou no u) b.oco de instru1es.
$-$($ De5is9o e e@pressAes lBgi5as2 I4
Pr;ti5a .,.% < I4 %
aU #i(ite o pro(ra)a abaiAoM cu>a especi3icao = a se(uinteB
Elaborar um ro$rama !ue l um n8mero !ual!uer e calcula sua raiz !uadrada. O clculo
somente e#etuado se o n8mero #or maior ou i$ual a zero. 2e n"o #or, mostrada uma mensa$em
de erro.
PROGRAM CalculaRaiz;
uses CRT;
var Num : real;
begin
ClrScr;
Writeln('Clculo de raiz quadrada');
Write('Digite o nmero: ');
Readln(Num);
if Num >= 0 then
Write('A raiz de ', Num:0:2, ' ', SqRt(Num):0:2 )
else
Write('Nmero invlido');
Write('Pressione qualquer tecla');
ReadKey;
end.
aU EAecute o pro(ra)a para os nD)eros 'M -M 2+.
bU Repita o passo anteriorM desta 0e? usando o debu((er.
%%,
I4
O co)ando Pasca. 7ue per)ite eAecuo condiciona. de instru1es = o $9..TXEN..E%SEM cu>a
sintaAe =B
iC geApresso .E(icah t:e7
gco)ando 1h
else
gco)ando +h
")a e@press9o lBgi5a constitui u)a co)parao cu>o 0a.or pode ser so)ente @erdadeiro ou 9a.so
TTrue ou 9a.seM para o Turbo Pasca.U. Para a co)parao usa)os os operadoresB
b Ti(ua.U
c T)enor 7ueU
d T)aior 7ueU
cb T)enor ou i(ua.U
db T)aior ou i(ua.U
cd Tdi3erenteU
O co)ando iC 3unciona assi)B se a geApresso .E(icah 3or 0erdadeiraM = eAecutado o co)ando apEs o
t:e7M caso contr:rio TeApresso = 3a.saUM = eAecutado o co)ando apEs o else. @e>a u) eAe)p.o
si)p.esB
if N >= 0 then
Write('N positivo')
else
Write('N negativo');
O co)ando aci)a ser: eAecutado assi)B
2 O 0a.or de N = recuperado da )e)Eria Tsupon,a)os 7ue 3oi 1+1UN
2 A eApresso .E(ica 1+1 hn ' = a0a.iadaM sendo o resu.tado True T0erdadeiraUN
2 o)o a eApresso .E(ica apEs o iC = 0erdadeiraM ser: eAecutado o co)ando 7ue esti0er apEs o t:e7M
no caso = o pri)eiro CriteN
2 O 3.uAo de eAecuo se(ue para o co)ando 7ue esti0er as a D.ti)a instruo do else To co)ando
apEs ou dentro deste = i(noradoU.
2 Iuando a eApresso .E(ica apEs o iC = a0a.iada co)o #alsa Tpor eAe)p.oM 7uando o 0a.or de N 3or
2&&UM ser: eAecutado o 7ue esti0er apEs o elseM e o 7ue esti0er apEs o t:e7 = i$norado.
O co)ando iC deter)ina 7ue ou sero eAecutadas as instru1es apEs o t:e7 ou as apEs o elseM )as
nunca a)bas as possibi.idadesM e) u)a )es)a passa(e) do 3.uAo de eAecuo.
N"o colo!ue onto;e;v'r$ula antes do e$se, voc estar indicando ara o
comilador !ue terminou o comando if, e ele n"o entender a clusula
e$se.
Pr;ti5a .,.& < I4 &
aU #i(ite o pro(ra)a abaiAoM cu>a especi3icao = a se(uinteB
"O critrio de notas de uma #aculdade consiste de uma nota de 0 a 10 em cada bimestre, sendo a
rimeira nota eso 4 e a se$unda eso 6. Elabore um ro$rama !ue l as notas bimestrais e
7 - ALTERNATVAS E DECSO %%/
calcula a nota do semestre. 2e al$uma nota lida estiver #ora da #ai%a vlida, mostrada uma
mensa$em de erro"
PROGRAM CalcNotaSemestral;
uses CRT;
var Nota1, Nota2 : real;
begin
ClrScr;
Writeln('Clculo da nota final a partir das notas bimestrais, pesos 2 e 3.');
Write('Entre nota do 1o. bimestre: ');
Readln(Nota1);
if (Nota1 >=0) and (Nota1 <=10) then
begin
Write('Entre nota do 2o. bimestre: ');
Readln(Nota2);
if (Nota2 >=0) and (Nota2 <=10) then
Write('Nota final: ',((Nota1*2 + Nota2*3)/5):0:1)
else
Write('Nota invlida');
end
else
Write('Nota invlida');
Readkey;
end.
aU EAecute o pro(ra)a para as notas T&M 5UM T11M [UM T5M 1+U.
bU Repita o passo anteriorM desta 0e? usando o debu((er.
=egi7 e e7d
Se ,ou0er )ais de u) co)ando apEs t:e7 ou elseM ser: necess:rio de.i)itar todos e.es co)
=egi7..e7dM 7ue indica) u) co)ando co)postoB
if N >= 0 then
begin
Write('N positivo');
ReadKey;
end
else begin
Write('N negativo');
ReadKey;
end;
Pr;ti5a .,.' < Erros de 5o6pila89o do I4
Re(istre as )ensa(ens de co)pi.ao para as se(uintes situa1es no pro(ra)a a.cNotaSe)estra.B
aU Retire u) t:e7
bU VEs7ueaV de por u) else
cU Pon,a u) ponto2e20r(u.a antes do else
dU Pon,a u) ponto2e20r(u.a apEs o t:e7 Testa situao = pecu.iarB o ponto2e20r(u.a no causa erroM
por7ue no = necess:rio ,a0er u) co)ando apEs t:e7 ou elseM )as este no ser: recon,ecido por
estar se) u) iCU
eU Retire os par8nteses de u)a das eApress1es .E(icas.
%%. APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
E@e6plo .,.+ < C;l5ulo de 5o75eito
.ma universidade atribui conceitos aos alunos com base na nota obtida em cada discilina, se$undo a
tabela abai%o. Escreva um ro$rama !ue l a nota e in#orma o conceito obtido.
NOTA CONCEITO
222222222 2222222222222222
*'..1'' A
&5..5* <
5'..&/
/'../* #
'..-* E
A(ora ,: 0:rias decis1es a sere) to)adasB se no 3or u) conceitoM pode ser o outro e assi) por diante.
@e>a o pro(ra)a e as eAp.ica1es a se(uirB
PROGRAM CalculaConceito;
{ I< uma nota de ! a /!! e calcula o conceito- J, K, D, E ou &}
uses CRT;
var Nota : byte;
Conceito : char;
begin
ClrScr;
Write('Digite a nota:');
Readln(Nota);
if Nota > 100 then
Writeln('Nota invlida')
else
begin
if Nota >= 90 then
Conceito := 'A'
else if Nota >= 75 then
Conceito := 'B'
else if Nota >= 50 then
Conceito := 'C'
else if Nota >= 40 then
Conceito := 'D'
else
Conceito := 'E';
Writeln('O conceito ', Conceito);
end;
Readkey
end.
Note na so.uo aci)aB
; N"o necessrio testar se a nota ne$ativa, < !ue sua varivel do tio bJteN
; >estar a validade da nota antes ermite simli#icar as decis)es se$uintes Co limite suerior de cada
#ai%a n"o veri#icadoD
; *oi declarada uma varivel au%iliar ara o conceito, ara chamar Rriteln somente uma vez. 2e #or
reciso alterar a #orma como o conceito mostrado, isso ser #eito em um comando somente.
; O e$se do rimeiro if recisou do ar :e!i#==e#", < !ue tem dois comandos+ um if e um Rriteln.
7 - ALTERNATVAS E DECSO %%$
Pr;ti5a .,.* < Cal5ulaCo75eito
Teste o pro(ra)a a.cu.aonceito nas se(uintes situa1esB
aU Nota in0:.ida
bU ")a nota no )eio de cada 3aiAa de conceitos
cU ")a nota nos .i)ites de cada 3aiAa.
Co6=i7a89o de e@pressAes lBgi5as
Iuando 3or necess:rio 3a?er u)a ou )ais 0eri3ica1es co)binadasM co)o VN1 n ' e N+ n 'VM VN g '
ou N h *V. pode)os >untar duas ou )ais eApress1es .E(icas atra0=s dos conecti0os .E(icos a7d TeU e
or TouU. Para o operador a7dM u)a eApresso ser: 0erdadeira so)ente 7uando %o"as as eApress1es
7ue a co)p1e) 3ore) a0a.iadas co)o 0erdadeiras. Para o operador orM toda a eApresso = 0erdadeira
7uando qua$quer u)a das eApress1es resu.tar 0erdadeira. E.es pode) ser usados e) eApress1es
.E(icas dos co)andos iCM E:ile e 7ua.7uer outro 7ue conten,a eApress1es desse tipo. As eApress1es
parciais semre t8) de estar entre par8nteses. Por eAe)p.oB
Para saber se u) nD)ero = de u) d(itoB
if (Numero >= 0) and (Numero <= 9) then {...}
No Pasca. 0oc8 n"o pode construir eApress1es .E(icas do tipo ' Nu)ero *M co)o na
!ate):ticaN 0oc8 de0e usar a7d ou or.
Para 0eri3icar se u)a 0ari:0e. caractere cont=) i9i ou iRiB
if (TipoPessoa = 'F') or (TipoPessoa = 'J') then {...}
@eri3icar se u) nD)ero est: entre duas 3aiAasB ' a 1'' ou +'' a -''B
if ((Num>0)and(Num<100))or(Num>200) and (Num<300)) then {...}
") operador )uito interessante e conciso = i7M atra0=s do 7ua. 0oc8 0eri3ica se u) 0a.or ou
resu.tado de eApresso pertence a u) con>untoM de3inido entre co.c,etes e no 7ua. pode) constar
0a.ores ou 3aiAas. @e>a co)o os co)andos aci)a 3ica) )ais si)p.es co) esse operadorB
if TipoPessoa in [ 'F', 'J' ] then ...
if Num in [ 0..100, 200..300 ] then ...
Pr;ti5a .,., D A7d ou OrP
No pro(ra)a a.cNotaSe)estra.M tro7ue o pri)eiro a7d por or. EAecute o pro(ra)a para 0a.ores
in0:.idos e 0e>a o 7ue acontece.
E@er55io .,./ D I7
A.tere o co)ando abaiAo para 7ue aceite ta)b=) as .etras )inDscu.as correspondentesB
if TipoPessoa in [ 'F', 'J' ] then ...
E@er55io .,.. < Ela=ora7do iC
E.abore co)andos iC 7ue 3aa) o se(uinte Tin0ente no)es apropriados de 0ari:0eisUB
aU Se pessoa = )aior de idadeM )ostra )ensa(e) apropriada.
bU Se a.uno passou e) u)a discip.inaM )ostre na te.a VParab=nsWVM senoM V#anouWV.
cU Se a opo di(itada = iAiM i$i ou iEiM )ostra )ensa(e) de iopo 0:.idaiM senoM iopo in0:.idai.
dU Se a te)peratura est: no inter0a.o de ' a 1''M in3or)a iestado .7uidoi.
%&0 APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
E@er55io .,.$ < Re?is9o do I4
Assina.e @ ou 9B
T U X: situa1es e) 7ue a)bos os co)andos apEs o t:e7 e o else so eAecutados e) se7F8ncia.
T U Antes de else se)pre de0e ter u) ponto2e20r(u.a.
T U As eApress1es e) a)bos os .ados dos operadores and e or de0e) estar entre par8nteses.
T U Se ,ou0er so)ente u) co)ando apEs o t:e7M no = necess:rio o par =egi7..e7d.
T U Se ,ou0er )ais de u) co)ando apEs o elseM = necess:rio o par =egi7..e7d.
Pr;ti5a .,.%0 < Co6pare
AbaiAo 3oi repetido o trec,o do pro(ra)a aci)aM sE 7ue se) o desa.in,a)ento das instru1es
TVindentaoVU. Apenas 3i7ue o.,ando para u) e outro durante a.(uns se(undosM co)o 7ue) no 7uer
nada...
if Nota > 100 then
Writeln('Nota invlida')
else
begin
if Nota >= 90 then
Conceito := 'A'
else if Nota >= 75 then
Conceito := 'B'
else if Nota >= 50 then
Conceito := 'C'
else if Nota >= 40 then
Conceito := 'D'
else
Conceito := 'E';
Pr;ti5a .,.%% < Yat5: e6 ?ari;?eis =oolea7as
Para 0ari:0eis boo.eanas ou .E(icasM pode)os atribuir so)ente os 0a.ores 9a.se ou TrueM direta)ente ou
co)o resu.tado da a0a.iao de u)a eApresso .E(ica. #i(ite o pro(ra)a abaiAo e obser0e as 0ari:0eis
atra0=s da >ane.a Catc,es do debu((er.
var Passou, Terminou : boolean;
Nota : byte;
begin
Terminou := False;
Nota := 10;
Passou := Nota > 5;
Passou := Nota - 9 > 5;
Passou := Terminou;
End.
E@er55io .,.%& < Re?is9o de e@pressAes lBgi5as
Sobre eApress1es .E(icasB
aU Para 7ue ser0e)[ Iua. tipo de 0a.or resu.ta de sua a0a.iao[
bU Iuais pode) ser os operandos de eApress1es .E(icas[
cU #escre0a os operadores and e or. #8 eAe)p.os de sua uti.i?ao e) eApress1es .E(icas
co)postas.
dU O 7ue = )e.,or do 7ue a preced8ncia de operadores para estabe.ecer a se7F8ncia de opera1es[
E@er55io .,.%' < E@pressAes lBgi5as i7?;lidas
!ar7ue co) u) Z as eApress1es .E(icas in0:.idas TN = do tipo rea.UB
7 - ALTERNATVAS E DECSO %&%
aU N gn 1'
bU N hg '
cU N n -.1/15
dU N nh 21
eU ' ng N gn *
E@er55io .,.%+ < Ela=ora7do e@pressAes lBgi5as
9ornea eApress1es .E(icas e) PASA%M uti.i?ando 0ari:0eisM constantes e operadores de co)parao
apropriadosM 7ue possa) ser usadas para 0eri3icar as condi1es abaiAo. !ode.oB
$dade de u)a pessoa = a )es)a 7ue a de outra pessoa
RespB $dade1 n $dade+
aU Pessoa = )aior de idade T)ais 7ue 1& anosU
bU A.uno passou e) u)a discip.ina Tnota )ni)a &U.
cU !=dia arit)=tica das notas de - discip.inas = superior a &M5.
dU A opo di(itada = iAiM i$i ou iEi Ta.terarM inc.uirM eAc.uirU
eU ")a te)peratura est: no inter0a.o de ' a 1''
3U ") nD)ero est: nos inter0a.os de ' a 1' ou +' a -'
PesFuisa .,.%* < Operador 7ot
#escubra para 7ue ser0e o operador .E(ico 7ot e 3ornea dois eAe)p.os de sua uti.i?ao.
E@er55io .,.%, D A?alie
o) base na pes7uisa aci)a e supondo 7ue A n TrueM e < n n 9a.seM a0a.ieB
aU A and not < or
bU TA and not U or Tnot A and U
cU A n 9a.se and T or not <U
dU A or < or
eU A and T< or U
3U not A or not <
PesFuisa .,.%/ D Orde6 de e@e5u89o das opera8Aes
E) u)a eApresso .E(ica pode) aparecer di0ersos tipos de operadoresM .E(icos e arit)=ticosN e) 7ue
orde) so eAecutadas as opera1es[ Iuando no ,ou0er par8nteses 7ue deter)ine) u)a se7F8ncia de
eAecuoM o co)pi.ador ap.ica as re(ras de preced8ncia. Pes7uise 7ua. = essa preced8ncia e preenc,a a
tabe.a abaiAoB
%&& APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
2u$est"o+ use arnteses ara de#inir a ordem de e%ecu("o das oera()es
e durma tran!Kilo.
Pr;ti5a .,.%. < EFua89o do segu7do grau
O pro(ra)a abaiAoM e)bora sintatica)ente corretoM no 3unciona correta)ente. orri>a2o e teste2o para
e7ua1es co) de.ta positi0oM ne(ati0o e ?ero. O 7ue acontece 7uando o de.ta = ne(ati0o[ O 7ue pode ser
3eito para e0itar o prob.e)a[ 9aa u)a no0a 0erso do pro(ra)a co) a correo.
PROGRAM EqSegundoGrau;
uses CRT;

var a, b, c : integer;
Delta, Raiz1, Raiz2 : real;

begin
ClrScr;
Writeln('Clculo de razes da equao do segundo grau');
Writeln('Entre coeficientes inteiros a, b e c,');
Writeln('teclando Enter a cada um');
Readln(a); Readln(c); Readln(b);
Delta := b*b - 4*a*c;
Raiz1 := ( b + SqRt(Delta) )/2;
Raiz2 := ( b - SqRt(Delta) )/2;
Writeln('Primeira raiz ', Raiz1:0:2);
Writeln('Segunda raiz ', Raiz2:0:2);
end.
$-$)$ MZltiplas alter7ati?as2 CA#E
Pr;ti5a .,.%$ < Tipo de 5ara5tere
EAecute o pro(ra)a abaiAo co) e se) o debu((erM 3ornecendo co)o entrada u)a .etraM depois u) d(itoM
u) operador arit)=tico e 3ina.)ente u) outro TyM zM etc.U.
PRECEDeNCIA OPERADORE#
1
+
-
/
5
4
7 - ALTERNATVAS E DECSO %&'
PROGRAM TipoCaractere;
{I< um caractere e informa se letra, dgito, operador aritmtico ou nen#um deles}
uses CRT;
var Ch : char;
begin
ClrScr;
GotoXY(10, 8);
Writeln('Entre um caractere qualquer: ');
Readln(Ch);
case Ch of
'A'..'Z', 'a'..'z' : begin
GotoXY(10,10);
Writeln('Letra');
end;
'0'..'9' : begin
GotoXY(10,10);
Writeln('Dgito');
end;
'+', '-', '*', '/' : begin
GotoXY(10,10);
Writeln('Operador');
end;
else begin
GotoXY(10,10);
Writeln('Caractere especial');
end;
end;
Writeln('Pressione qualquer tecla');
ReadKey
end.
Case
onsidere u) trec,o de pro(ra)a 7ue de0e o3erecer u) )enu de op1es na te.a. Se o usu:rio di(itar
1M o pro(ra)a 3a? a.(oN se +M outra coisaM e assi) por diante. o) base na opo do usu:rioM o
pro(ra)a de0e decidir o 7ue 3a?er. !as a(ora no so )era)ente dois ca)in,osN pode) ser -M & ou
de? a.ternati0as.
Para esses casosM ao in0=s de usar o co)ando iCM = )e.,or usar o co)ando 5aseM 7ue te) o se(uinte
3or)atoB
case <expressoL of
<caso /L - Mcomando /L2
Mcaso %L - Mcomando %L;
<caso L : begin
<comando ?L2
Mcomando 0L
end;
...
else
<comando FL
end;
E) cada casoM 0oc8 pode por u)a constante T1M iAiUM 0:rias constantes separadas por 0r(u.as TiAiM
i<iU ou sub3aiAasB iai..i?iM '..1'N #o pode por eApress1es ou 0ari:0eis. Os 0a.ores e) cada caso de0e)
ser co)pat0eis co) o tipo da eApressoM 7ue no pode ser rea. ne) strin(. Se ,ou0er )ais de u)
co)ando e) u) casoM e.e de0e ter o seu prEprio par =egi7..e7d.
%&+ APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
Iuando u) co)ando 5ase = eAecutadoM o 0a.or da e%ress"o = a0a.iado. Se seu 0a.or 3or i(ua. ao
caso 1M = eAecutado o co)ando 1N se i(ua. ao caso +M = eAecutado o co)ando +M etc. Se no ,ou0er
i(ua.dadeM = eAecutado o co)ando apEs o else. Este = opciona..
Se )ais de u) co)ando precisa ser eAecutado e) a.(u) casoM 0oc8 de0e usar o co)ando co)posto
=egi7..e7dM u) para cada caso e ta)b=) u) par para o else.
!D.tip.as instru1es iC pode) 3icar )e.,or codi3icadas atra0=s de u) co)ando 5aseM 7uando o tipo
da eApresso .E(ica per)itir.
E@e6plo .,.&0 < Cal5uladora
A calculadora de 9uciana i#ou, <usto !uando ela recisa #azer vrios clculos. Ela tem um comutador,
mas n"o sabe !ue um dos acessrios do RindoSs uma calculadora. 2endo estudante de -ascal,
9uciana resolveu #azer um ro$rama. A eseci#ica("o !ue bolou rev !ue ro$rama l dois n8meros
inteiros Co !ue atende suas necessidadesD e em se$uida um caractere. 2e este #or \_\, o ro$rama soma os
n8meros, se \g\, subtrai, se \V\, multilica e se \[\, divide. 2e o caractere #or di#erentes desses, mostrada
uma mensa$em de erro. O ro$rama, antes de dividir, critica se o divisor zero e mostra uma
mensa$em, se #or. Mmlemente a eseci#ica("o de 9uciana.
o)o se parece a te.a de sada do pro(ra)a[ @a)os _eAecut:2.o` a.(u)as 0e?es para 0:rias
possibi.idadesB
Entre dois nmeros inteiros:
40 34
Entre operao (+, -, * ou /):
+
40 + 34 = 74
Entre dois nmeros inteiros:
50 45
Entre operao (+, -, * ou /):
X
Erro: operao invlida
Entre dois nmeros inteiros:
32 0
Entre operao (+, -, * ou /):
/
Erro: divisor invlido
O prEAi)o passo = identi3icar as 0ari:0eis. Para a entrada precisa)os de duas 0ari:0eis inteiras para
ar)a?enar os nD)eros e u)a do tipo c,ar para ar)a?enar a operao. Para a sada no precisare)os de
0ari:0eisM >: 7ue pode)os ca.cu.ar e )ostrar o resu.tado direta)ente na te.a. Obser0ando a te.a de sadaM
0eri3ica)os 7ue o pro(ra)a est: estruturado da se(uinte 3or)aB
"Ler nmeros"
"Ler operao"
"Decidir qual operao ser efetuada e mostrar o resultado na tela ou uma mensagem de erro"
@e>a o pro(ra)a a se(uir. o)o eAerccioM eAecute2o )anua.)ente para as entradas usadas no
deta.,a)ento da te.a e 0eri3i7ue se a te.a de sada produ?ida est: correta.
7 - ALTERNATVAS E DECSO %&*
PROGRAM Calc4Operacoes;
{I< dois nmeros reais e uma operao, e efetua a operao indicada}
uses CRT;
var N1, N2 :integer;
Op : char;
begin
ClrScr;
Writeln('Entre dois nmeros inteiros:');
Readln(N1, N2);
Writeln('Entre operao (+, -, * ou /):');
Readln(Op);
case Op of
'+' : Writeln(N1, ' + ', N2, ' = ', N1 + N2);
'-' : Writeln(N1, ' - ', N2, ' = ', N1 - N2);
'*' : Writeln(N1, ' x ', N2, ' = ', N1 * N2);
'/' : if N2 <> 0 then
Writeln(N1, ' / ', N2, ' = ', N1 / N2)
else
Writeln('Erro: divisor invlido')
else
Writeln('Erro: operao invlida');
end;
ReadKey;
end.
Pr;ti5a .,.&% < Cal5Opera5oes
Teste o pro(ra)a a.cOperacoes nas se(uintes situa1esB
aU Adio
bU Subtrao
cU !u.tip.icao
dU #i0isoM di0isor 0:.ido
eU #i0isoM di0isor in0:.ido
Ao ro<etar ro$ramas, reve<a todas as situa()es e alternativas, e ao
testar ro$ramas com comandos de decis"o, teste todos os caminhos
oss'veis do #lu%o de e%ecu("o.
Pr;ti5a .,.&& < Erros de 5o6pila89o do 5ase
@eri3i7ue a )ensa(e) de erro de co)pi.ao nas se(uintes situa1esB
retire o 5ase
retire o oC
retire o , do 5ase , oC
retire u) dois2pontos de a.(u) caso
retire o e7d do case
tro7ue a eApresso apEs o 5ase por u)a 0ari:0e. rea. 7ua.7uer
ide)M 0ari:0e. tipo strin(
%&, APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
E@er55io .,.&' D Tipos de e@pressAes do Case
Iue tipos de eApress1es 0oc8 pode e 7uais no pode inserir co)o op1es TcasosU e) u) co)ando ASE[
Pr;ti5a .,.&+ < CBdigos A#CII
A.tere o pro(ra)a EAe)p.o!enu abaiAo para 7ue a opo 1 se>a .er u) caractere e )ostrar seu cEdi(o
AS$$ T3uno OrdU e a opo + se>a .er u) cEdi(o AS$$ e )ostrar o respecti0o caractere T3uno ,rU.
$)p.e)ente o cEdi(o ade7uado para tratar as op1es e teste o pro(ra)a.
PROGRAM ExemploMenu;
uses CRT;
var Opcao : char;
begin
ClrScr;
Writeln('1 - Ao 1');
Writeln('2 - Ao 2');
Writeln('3 - Fim');
Write('Entre opo: ');
Readln(Opcao);
case Opcao of
'1' : {Jo /}2
'2' : {Jo %}2
else begin
Writeln("Opo invlida");
ReadKey
end
end;
end.
$-$*$ Re5o7:e5e7do de5isAes
o)andos de deciso so necess:rios 7uando ,: a.ternati0as para o 3.uAo de eAecuo. ^ co)o
u)a estradaB se no ,: encru?i.,adas ou tre0osM 0oc8 0ai se(uindo se) precisar decidir nada sobre o ru)o
a to)arM )as se ,: op1esM u)a deciso de0e ser to)ada.
#icas e per(untas para recon,ecer a necessidade de u) co)ando $9 ou ASEM na especi3icaoM
no pro>eto ou na i)p.e)entaoB
D A especi3icao nor)a.)ente cont=) indica1esB Vse o nD)ero 3or in0:.ido...VM Vu) )enu...V.
2 ada entrada de dados cria a.ternati0as. ritic:2.as ou no pode depender da especi3icao.
; & decis"o neste ro$ramaB
; Iue veri#ica()es e restri()es s"o edidas na eseci#ica("o ou necessrias neste ro$ramaB
; Iue valores invlidos odem ser di$itadosB
; Iue tio de ocorrncia ode rovocar um erro em temo de e%ecu("oB
; -osso usar o comando ,A2EB 2e sim, !ual o mais simles de usar, M* ou ,A2EB Iual deles
or$aniza melhor o cdi$oB Iual #ica mais ele$anteB
7 - ALTERNATVAS E DECSO %&/
Espe5iCi5a89o .,.&* < Cal5ulaCo75eito 5o6 5ase
A.tere o pro(ra)a a.cu.aonceitoM deste captu.oM para esco.,er o conceito usando 5aseM ao in0=s de iC.
Espe5iCi5a89o .,.&, D Maior de &
E.aborar pro(ra)a 7ue .8 dois nD)eros 7uais7uer e )ostra na te.a u)a )ensa(e) indicando 7ua. = o
)aiorM ou se so i(uais.
Espe5iCi5a89o .,.&/ D Maior de '
9aa u) pro(ra)a 7ue .8 tr8s nD)eros di3erentes e )ostra na te.a u)a )ensa(e) indicando 7ua. = o
)aior.
Espe5iCi5a89o .,.&. D Di?is9o
Escre0er u) pro(ra)a 7ue .8 dois nD)eros e e3etua u)a di0isoM )as so)ente se o di0isor 3or di3erente
de ?eroN 7uando isto ocorrerM = )ostrada u)a )ensa(e) de erro apropriada.
Espe5iCi5a89o .,.&$ D Categoria de altura
E.aborar pro(ra)a 7ue .8 u)a a.tura e )ostra u)a )ensa(e) con3or)e a 3aiAa de a.turaB
)enos 7ue 1M4' _baiAin,o`
de 1M4' a 1M55 _a.tura nor)a.`
)ais 7ue 1M55 _3a? 3rio a e) ci)a[`
Espe5iCi5a89o .,.'0 D Apro?a89o
E.aborar pro(ra)a 7ue .8 u)a discip.ina e respecti0a nota 3ina.M )D.tip.a de 'M5M e in3or)a o 7ue ocorreu.
Se a nota 3or de 5 a 1'M apro0adoN se / ou /M5M se(unda =poca eM caso contr:rioM repro0ado.
Espe5iCi5a89o .,.'% D Apro?a89o ?&
A.tere o pro(ra)a aci)a para 7ueM se a nota esti0er 3ora da 3aiAa 0:.ida ou se no 3or )D.tip.a de 'M5M se>a
e)itida u)a )ensa(e) de erro.
Espe5iCi5a89o .,.'& D Apro?a89o ?'
A.tere o pro(ra)a aci)a para 7ue .eia ta)b=) a 7uantidade de au.as )inistradas e a 7uantidade de 3a.tas
do a.uno. Se o a.uno no obte0e &5o de 3re7F8nciaM e.e est: repro0adoM independente)ente da nota.
Espe5iCi5a89o .,.'' D Dia da se6a7a
onstrua u) pro(ra)a 7ue .8 u) nD)ero de 1 a & e in3or)a o dia da se)ana correspondenteM sendo
do)in(o o dia de nD)ero 1. Se o nD)ero no corresponder a u) dia da se)anaM = )ostrada u)a
)ensa(e) de erro.
Espe5iCi5a89o .,.'+ D Luadrado ou tri]7gulo
$)p.e)ente u) pro(ra)a co) + op1es T.etra ou nD)eroUB desen,ar u) 7uadrado ou u) trin(u.o na
te.aM e) .in,a e co.una .idas pe.o tec.ado. E.abore o 7uadrado e o trin(u.o co)o ac,ar )e.,or. 9aa o
pro(ra)a )ostrar u)a )ensa(e) de erro se o usu:rio esco.,er u)a opo in0:.ida ou in3or)ar 0a.or
in0:.ido para .in,a ou co.una.
%&. APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
Espe5iCi5a89o .,.'* D Co7ta teleCI7i5a
")a conta te.e3;nica = co)posta dos se(uintes custosB
assinaturaB Rz 1&M*'
0a.or de i)pu.sosB Rz 'M'/ por i)pu.so 7ue eAceder a *'
0a.or de interurbanos
0a.or de c,a)adas pS ce.u.arB Rz'M'* por i)pu.so
E.abore u) pro(ra)a 7ue .8 0a.or de interurbanosM 7uantidade tota. de i)pu.sos nor)ais e para ce.u.arM e
ca.cu.a o 0a.or da conta. %e)bre2se de 7ue o 0a.or dos i)pu.sos sE = cobrado para os i)pu.sos
eAcedentes.
Espe5iCi5a89o .,.', D I6posto
") i)posto = ca.cu.ado co) base na se(uinte tabe.aB
At= 1.+''M'' isento
de 1.+'1M'' a +.5''M'' 1'o
de +.5'1M'' a 5.'''M'' 15o
aci)a de 5.'''M'' +'o.
$)p.e)ente u) pro(ra)a 7ue .eia o 0a.or base e ca.cu.e o i)posto a pa(ar.
Espe5iCi5a89o .,.'/ D MZltipla es5ol:a %
E.aborar u)a 7uesto de )D.tip.a esco.,aM de u)a discip.ina 7ue este>a cursando ou u) te)a de
interesseM co) u) enunciado e cinco a.ternati0asM sendo u)a correta ou incorreta. Escre0er u) pro(ra)a
7ue )ostra a 7uesto na te.aM pede a resposta correta e in3or)a ao usu:rio se este acertou ou errou. Antes
de decidir 7ua. 7uesto usar:M e.abore pe.o )enos tr8s possibi.idades.
Espe5iCi5a89o .,.'. D MZltipla es5ol:a &
Enri7uea o pro(ra)a aci)a da 7uesto de )D.tip.a esco.,aM inc.uindo u)a outra 7uesto de outro te)a.
No incio do pro(ra)aM o3erea ao usu:rio a esco.,a de 7ua. 7uesto 7uer responder.
Espe5iCi5a89o .,.'$ D #al;rio
") sa.:rio te) os se(uintes co)ponentesB
2 0a.or no)ina.
2 adiciona. de0ido a ,oras eAtras
2 0a.or descontado para o $NSS T1'o do 0a.or a receberM .i)itado a 15' reaisU.
O 0a.or adiciona. de0ido Os ,oras eAtras = ca.cu.ado di0idindo2se o 0a.or no)ina. por 1&4 T++ dias de 5
,orasUM )u.tip.icando2se pe.a 7uantidade de ,oras e ainda co) u) acr=sci)o de 5'o.
Escre0er u) pro(ra)a 7ue .8 os 0a.ores necess:riosM ca.cu.a e )ostra na te.a os co)ponentes do sa.:rio e
o sa.:rio .7uido resu.tante para o e)pre(ado. No = preciso pre0er arredonda)entosM )as os 0a.ores
de0e) ser )ostrados na te.a co) duas casas deci)ais.
E%emlosB para u) sa.:rio de Rz 1.'''M''M co) -' ,oras eAtrasM tere)os Rz +55M45 de ,oras eAtras
rT1.'''S1&4Uq-'q1M5sM Rz 1+5M5& de $NSS e u) sa.:rio .7uido de Rz 1.1-'M11. Para u) sa.:rio de Rz
+.'''M'' e +' ,oras eAtrasM seria) Rz -/'M*1 de ,oras eAtrasM Rz 15'M'' de $NSS Te no os 1'oUM co)
u) sa.:rio .7uido de Rz +.1*'M*1.
7 - ALTERNATVAS E DECSO %&$
Espe5iCi5a89o .,.+0 D Adi?i7:e %
9aa u) pro(ra)a 7ue sorteia u) nD)ero de 1 a 5 e pede ao usu:rio 7ue o adi0in,eM .endo do tec.ado o
pa.pite. aso o usu:rio acerte ou noM = )ostrada u)a )ensa(e) apropriada.
Espe5iCi5a89o .,.+% D Adi?i7:e &
!odi3i7ue o pro(ra)a aci)a para 7ue o usu:rio possa tentar no0a)ente se errar na pri)eira 0e?.
Espe5iCi5a89o .,.+& D Nota 6usi5al
E.aborar u) pro(ra)a 7ue .8 u)a 3re7F8ncia e) Xert? e u)a durao e) )i.isse(undos e e)ite u) so)
na 3re7F8ncia co) a durao. %i)ite a 3re7F8ncia at= 5.''' X? e a durao a + se(undos.
$-$+$ Orga7iQa7do o pe7sa6e7to2 ;r?ores de de5is9o
Iuando 0:rias decis1es t8) 7ue ser to)adasM pode ocorrer 7ue no consi(a)os or(ani?ar
)enta.)ente todas e.asN nesses casosM u)a Eti)a 3erra)enta = u)a :r0ore de decisoM descrita no
eAe)p.o abaiAo.
E@e6plo .,.+' < r?ore de de5is9o
.m <o$o consiste em se retirar duas bolas de uma cai%a contendo bolas brancas e retas. 1eendendo
da combina("o de cores das bolas retiradas, o <o$ador ser a$o na se$uinte roor("o+
Prieira >o$a Se!u#"a >o$a Ra%eio
<ranca <ranca '
<ranca Preta +S-
Preta <ranca 1
Preta Preta +
Ou se>aM co) duas bo.as brancas o >o(ador perde tudoM co) u)a branca e u)a preta recebe +S- do 7ue
apostouM co) u) preta e u)a branca recebe seu din,eiro de 0o.ta e co) duas pretas recebe o dobro.
E.aborar u) pro(ra)a 7ue .8 as cores das duas bo.as e ca.cu.a o rateio.
O passo principa. do pro(ra)a =M a partir das cores das duas bo.as T0ari:0eis or1M or+UM dedu?ir o 0a.or
do rateio T0ari:0e. RateioU. #e3ini)os 7ue as cores sero representadas por iPi ou i<iM con3or)e cada bo.a
se>a preta ou brancaM respecti0a)ente. Pode)os escre0er u) iC para cada .in,a da tabe.a aci)aM co)oB
if (Cor1 = 'B') and (Cor2 = 'B') then
Rateio := 0
else if (Cor1 = 'B') and (Cor2 = 'P')
Rateio := 2/3
{...}
odi3icar eApress1es co)p.eAas dessa )aneira pode ser traba.,oso e su>eito a erros. A 3or)a de tratar
(radua.)ente a so.uo = )ontar u)a :r0ore de decisoM na 7ua. or(ani?a)os as 0:rias possibi.idades.
Escre0e)os a pri)eira decisoM co) as op1es Si) e No. #epoisM para a opo Si)M escre0e)os a
prEAi)a deciso e suas op1es Si) e No. Assi) 0a)os deta.,ando cada possibi.idadeM at= 7ue cada
ra)o ten,a u)a ao associadaB
%'0 APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
or1 = branca[
or+ = branca[
or+ = branca[
Si)
No
Si)
Si)
No
No
nada
+S-
1
+
Para con0erter para Pasca.M basta tradu?ir a :r0ore e) co)andos iC..t:e7..elseB cada per(unta
resu.tar: e) u) co)ando iCN a cada isi)i corresponde u) t:e7 e cada inoi estar: associado a u)a
c.:usu.a else. Tere)os o se(uinte trec,o de pro(ra)aB
if Cor1 = 'B' then
if Cor2 = 'B' then
Rateio := 0 {8ranca, 8ranca}
else
Rateio := 2/3 {8ranca, preta}
else
if Cor2 = 'B' then
Rateio := 1 {preta, 8ranca}
else
Rateio := 2; {preta, preta}
E@er55io .,.++ < r?ore para o TipoCara5tere
E.aborar u)a :r0ore de deciso para o a.(orit)o do pro(ra)a TipoaractereM deste captu.o
Espe5iCi5a89o .,.+* D Sogo de =olas
on3or)e a especi3icao do eAe)p.o deste captu.oM i)p.e)ente u) pro(ra)a 7ue .8 as cores das duas
bo.as e ca.cu.a o rateio.
Espe5iCi5a89o .,.+, D Sogo de =olas ?&
A.tere o pro(ra)a anterior para 7ue .eia ta)b=) o 0a.or apostadoM .i)itado a z1''M e in3or)e o 0a.or a
ser recebido pe.o apostador.
Espe5iCi5a89o .,.+/ D Sogo de =olas ?'
!odi3i7ue o pro(ra)a do >o(o de retirada de bo.asM de 3or)a 7ue o >o(ador retire tr8s bo.as. Atribua
0a.ores de rateio para todas as co)bina1es de cores. $)p.e)ente u) pro(ra)a 7ue .8 o 0a.or apostadoM
sorteia as coresM ca.cu.a o rateio obtido pe.o >o(ador e o 0a.or 7ue e.e receber:.
Espe5iCi5a89o .,.+. D Me7or 5adeia
Escre0er u)a 3uno 7ue recebe duas cadeias de caracteres e retorna a )enor e) orde) a.3ab=tica.
$-$,$ Ati?idades suple6e7tares
Espe5iCi5a89o .,.+$ D A7o =isse@to
") ano = bisseAto se 3or di0is0e. por / eAceto os s=cu.osM 7ue so bisseAtos se 3ore) )D.tip.os de /''.
Escre0a u) pro(ra)a 7ue deter)ina se u) ano = bisseAto.
7 - ALTERNATVAS E DECSO %'%
Espe5iCi5a89o .,.*0 < CBdigos este7didos de te5las
@oc8 0iu na p:(ina Tpro(ra)a !ostraTec.aU 7ue a 3uno ReaddeY retornaM para certas tec.asM dois
cEdi(osM sendo o pri)eiro ,rT'UM para o 7ua. no ,: cEdi(o correspondente. 9aa u) pe7ueno pro(ra)a
para )ostrar cEdi(os AS$$ de tec.asB se o pri)eiro cEdi(o 3or di3erente de ?eroM a tec.a .ida = )ostradaM
caso contr:rio o se(undo cEdi(o = .ido e )ostrado. "sando este pro(ra)aM ac,e os cEdi(os estendidos das
7uatro tec.as de direo Tas setasM )uito usadas e) >o(osU.
Espe5iCi5a89o .,.*% D Me789o
")a 3acu.dade atribui )en1es aos a.unos con3or)e a 3aiAa de notas 7ue ten,a atin(idoB
*M' a 1'B SS TsuperiorU
&M' a 5M*B !S T)=dio superiorU
5M ' a 4M*B !! T)=dioU
-M' a /M*B !$ T)=dio in3eriorU
'M1 a +M*B $$ Tin3eriorU
' B SR Tse) rendi)entoU.
9aa u) pro(ra)a 7ue .8 a nota e ca.cu.a a )eno. ]1ica+ como o comando case n"o aceita e%ress)es
reais, a rinc'io voc deve usar ifN mas voc ainda ode usar o case, se multilicar or 10 todos os
n8meros envolvidoss
PesFuisa .,.*& < Operadores apli5ados a stri7gs
$n0esti(ue se operadores hM hnM etc. pode) ser ap.icados a 0ari:0eis e constantes strin(. 9aa u) pe7ueno
pro(ra)a 7ue de)onstre isso.
Espe5iCi5a89o .,.*' D I6posto e6 5as5ata
") i)posto = ca.cu.ado co) base na se(uinte tabe.aB
At= 1.+''M'' isento
de 1.+'1M'' a +.5''M'' 1'o
de +.5'1M'' a 5.'''M'' 15o
aci)a de 5.'''M'' +'o.
$)p.e)ente u) pro(ra)a 7ue .eia o 0a.or base e ca.cu.e o i)posto a pa(ar. A di3erena a(ora = 7ue o
i)posto = ca.cu.ado e) cascataM isto =M de u) sa.:rio de 1'.'''M os pri)eiros 1.+'' esto isentosM a 3aiAa
de 1.+'1 a +5'' pa(a 1'o e assi) por diante.
Pr;ti5a .,.*+ < Pos2 pesFuisa7do e6 5adeias
Se = preciso 0eri3icar se u)a cadeia est: presente e) outraM pode2se usar a 3uno Pos. E.a recebe a
subcadeia a pes7uisar e a cadeia onde ser: pes7uisada a subcadeiaM retornando u) 0a.or do tipo bYte
indicando a pri)eira posio da cadeia Tda es7uerda para a direitaU onde 3oi encontrada a subcadeia ou
?eroM se nada 3oi encontrado. Por eAe)p.oM para testar se a 0ari:0e. No)e possui u) espaoM escre0aB
if Pos(' ', S) > 0 then ...
")a das uti.idades de Pos = e) 0a.ida1es de entradaM co)o no eAe)p.o abaiAo.
Elaborar um trecho de ro$rama ara criticar se o valor da varivel O est correta. Os valores
ermitidos s"o \_\,\ \;\,\ V\ e \[\.
%'& APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
So.uoB
if Pos(Op, '+-/*') = 0 then
Write('Operao invlida')
else
{...}
E.abore u) pro(ra)a para testar o trec,o do eAe)p.o aci)a. O pro(ra)a e3etua as opera1es
)ate):ticas indicadas.
Pr;ti5a .,.** D Cadeias para 7Z6eros2 Val
o)o 0i)osM para o co)pi.ador u) nD)ero = di3erente de u)a cadeia. E0entua.)enteM e) pro(ra)asM
precisa)os con0erter u) 0a.or eApresso co)o u)a cadeia de caracteres e) u) tipo de dado nu)=rico.
Para isso usa)os o procedi)ento ValM 7ue recebe u)a strin( contendo a cadeia 7ue representa o nD)ero
Tco)o i2+--.5/iUM u)a 0ari:0e. inteira ou rea. para receber o nD)ero con0ertido e u)a outra 0ari:0e. do
tipo inte(er para receber u) cEdi(o de erroM co)o e)B
Val(VarString, VarNumerica, PosErro);
Se a strin( passada no 3or u) nD)ero 0:.ido Tco)o i1+M1M-i ou ia+b+iUM a 0ari:0e. PosErro conter: a
posio onde o erro 3oi descobertoM caso contr:rio ser: ?ero.
")a situao Dti. para usar @a. = 7uando se 7uer e0itar 7ue u) pro(ra)a pare 7uando = .ido u) 0a.or
in0:.ido para u)a 0ari:0e. nu)=rica. Neste casoM pode2se .er o 0a.or co)o strin( e con0ert82.o para
nD)ero.
aU #i(ite o pro(ra)a a se(uir.
PROGRAM VerificaData;
{l< uma data no formato ,dd6mm6aaaa, e 'erifica se o dia est) entre / e / e o
m<s est) entre / e /%}
uses CRT;
var Data : string[10];
Dia, Mes : byte;
Erro : integer;
begin
Write('Entre data no formato dd/mm/aaaa: '); Readln(Data);
Val(Copy(Data,1,2), Dia, Erro); {Don'erte dia para numrico}
if Erro = 0 then
begin
Val(Copy(Data,4,2), Mes, Erro); {Don'erte m<s para numrico}
if Erro = 0 then
begin
if (Dia >= 1) and (Dia <= 31) then
{'erifica 'alidade do dia e do m<s}
if (Mes >= 1) and (Mes <= 12) then
Writeln('Data vlida')
else Writeln('Ms invlido')
else Writeln('Dia invlido')
end
else Writeln('Erro no ms')
end
else Writeln('Erro no dia');
end.

bU Teste o pro(ra)a para as se(uintes situa1esB
7 - ALTERNATVAS E DECSO %''
#ata 0:.ida
#ia no nu)=rico
!8s no nu)=rico
#ia in0:.ido
!8s in0:.ido
<arras 3ora de posio
cU A.tere o pro(ra)a para 7ue 0eri3i7ue ta)b=) se ,: barras TSU na terceira e na seAta posi1es.
Espe5iCi5a89o .,.*, D Ate789o
Pes7uise o 7ue 3a? o procedi)ento #e.ete. EAecute )anua.)ente o pro(ra)a abaiAo e in3or)e os 0a.ores
assu)idos pe.as 0ari:0eis SM P e N durante a eAecuo do pro(ra)a. Na tabe.a de 0ari:0eisM t ac,ar u)
0a.or 7uando 3or substitudo por outro. Onde se .8 i***iM tro7ue pe.os tr8s D.ti)os d(itos do seu nD)ero
de )atrcu.a. #epois di(ite o pro(ra)a e 0eri3i7ue se acertou.
PROGRAM PraticaCaracteres;
var S : string;
I, P, N : byte;
C : integer;
begin
S := 'Questao 1';
Insert(' ',S, Length(S)+1);
S := S + '999';
for I := 2 to 5 do S[I] := Upcase(S[I]);
Delete(S, Length(S)- 1, 2);
P := Pos('1', S);
if P > 0 then
begin
Val(Copy(S, P+2, 1), N, C);
if (C = 0) and (N <> 0) then
Delete(S, N, 1);
end;
end.
Pr;ti5a .,.*/ D NZ6eros para 5adeias2 #tr
O procedi)ento Str per)ite con0erter nD)eros inteiros e reais e) cadeias de caracteres Tstrin(sUM
inc.usi0e 3or)atando nD)eros reais da )es)a )aneira 7ue Crite.n. Str recebe dois par)etrosB o
nD)ero ou u)a 0ari:0e. nu)=rica e u)a 0ari:0e. strin( 7ue recebe o 0a.or con0ertido. @e>a os
eAe)p.osB
begin
Str(2, S); {N conter) ,%,1;
Str(2.1, S); {N conter) , %./!!!!!!!!!&;!!,1;
Str(2.1:4:2:, S); {N conter) , %./!,1;
end.
9aa u) pe7ueno pro(ra)a para testar o 3unciona)ento da instruo Str T.eiaSca.cu.eS)ostreU e a.i)ente2
o co) 0a.ores 0ariados.
%'*
$. REPETIO
Todo pro(ra)a rea.)ente Dti. precisa repetir u)a ou )ais instru1es. @e>a neste captu.o as tr8s
op1es do Turbo Pasca. para repetio contro.ada de u) b.oco de co)andos.
O Turbo Pasca. possui tr8s op1es de co)andos de repetioB
E:ile..doB 7uantidade inde3inida de 0e?es.
repeat..u7tilB 7uantidade inde3inida de 0e?esM eAecuta pe.o )enos u)a 0e?.
Cor..doB 7uantidade de3inida de 0e?es.
@ere)os o E:ile pri)eiro. E.e ser0e para todas as situa1esM os outros so )aneiras )e.,ores
para situa1es particu.ares.
$.$($ Y:ile
Pr;ti5a ./.% < Pri6eiro 5o7tato
aU #i(ite o pro(ra)a abaiAoM 7ue = se)e.,ante ao do captu.o anterior acrescido de u) co)ando de
repetio.
PROGRAM CalculaRaiz;
{repetidamente calcula rai( quadrada, terminando quando lido (ero}
uses CRT;
var Num : real;
begin
ClrScr;
Writeln('Clculo de raiz quadrada');
Num := 1;
hile Num <> 0 do
begin
Write('Digite o nmero: ');
Readln(Num);
if Num >= 0 then
Writeln('A raiz de ', Num:0:2, ' ', SqRt(Num):0:2 )
else
Writeln('Nmero invlido');
end;
end.
aU EAecute o pro(ra)a para os nD)eros +M 21 e ' para ter)inar.
bU Repita o passo anteriorM desta 0e? usando o debu((er.
%',
Pr;ti5a ./.& < #egu7do 5o7tato
#i(ite o pro(ra)a abaiAo e eAecute2o se) e co) o debu((erM para a.(u)as entradas. Se necess:rioM 0e>a
a.(u)as eAp.ica1es sobre o a.(orit)o a se(uir.
PROGRAM ObtemPrenome;
{I< um nome completo e mostra na tela o prenome, isto , o primeiro nome.
Jssume que o nome nunca comea com um espao}
uses CRT;
var Nome : string[30];
Ap : byte;
begin
ClrScr;
Writeln('Entre um nome completo:');
Readln(Nome);
Ap := 1;
{procura posio do primeiro espao}
hile (Nome[Ap] <> ' ') and (Ap < Length(Nome)) do
Ap := Ap + 1;
{o8tm su8cadeia do primeiro caractere at
a posio encontrada e mostra9a na tela}
Writeln('O prenome: ', Copy(Nome, 1, Ap - 1));
end.
O pri)eiro no)e = 3or)ado pe.as pri)eiras .etras do no)eM at= o pri)eiro espao. ")a 0ari:0e.
ar)a?enar o no)e .ido. Para .oca.i?ar a posio do pri)eiro espao do no)eM = usando u) apontador
TinteiroU. $niciando e) 1M 0aria)os o apontador at= a posio do pri)eiro espaoM atra0=s de u) co)ando
E:ile. Sabendo onde o espao est:M usa)os a 3uno opY para obter os caracteres do no)e at= o espao
Tse) inc.u2.oU.
Obser0e 7ue o apontador Ap 3oi .i)itado ta)b=) pe.o ta)an,o ):Ai)o do no)eM para o caso e) 7ue
no ,ou0er sobreno)e.
Y:ile
O E:ile Ten7uantoU = o co)ando de contro.e de repetio 7ue ser0e para 7ua.7uer situao. SintaAeB
hile <expresso lgica> do
begin
<comandos>;
end;
O co)ando 3unciona assi)B 7uando no 3.uAo de eAecuo = encontrado u) E:ileM a geApresso
.E(icah = a0a.iadaN se 3or 0erdadeiraM os gco)andosh apEs o do so eAecutados e o 3.uAo retorna
para rea0a.iar a eApresso .E(icaN se 3or 3a.saM = eAecutado o 7ue esti0er apEs o e7d. Ou se>aM
en7uanto a eApresso .E(ica 3or 0erdadeiraM os co)andos internos 0o ser repetidos.
Na eApresso .E(ica 7ue 0e) depois do E:ile pode2se usar os )es)os operadores descritos para o
co)ando iCB nM gM gnM hM hn e ghM a.=) dos conecti0os .E(icos a7d\ or e 7ot e do operador i7.
Pr;ti5a ./.' < E7trada 7o Y:ile
Para 7ue u) co)ando C,i.e se>a eAecutadoM na pri)eira 0e? a eApresso .E(ica de0e ser 0erdadeiraM e =
por isto 7ue no pro(ra)a a.cu.aRai? aci)a 3oi atribudo u) 0a.or di3erente de ?ero. Retire a atribuio
N Bn 1 e 0e>a o 7ue acontece.
8 - REPETO %'/
E@er55io ./.+ < NZ6eros 7a tela
") pro(ra)ador de0e pro(ra)ar o se(uinte trec,o de especi3icaoB
"...mostrar na tela os n8meros inteiros de 1 a 10".
$denti3i7ue 7ua. das op1es abaiAo atende) O especi3icaoB
a) N := 1;
hile N <= 10 do
begin
CriteTNUN
N Bn N t 1
e7dN
a) N := 0;
hile N < 10 do
begin
N := N + 1
Write(N, ' ');
end;
a) N := 1;
hile N < 10 do
begin
Write(N, ' ');
N := N + 1
end;
a) N := 1;
hile N <= 10 do
Write(N, ' ');
Pr;ti5a ./.* < I7sira E:ile
Ao usar o pro(ra)a E7Se(undoHrauM abaiAoM o usu:rio de0e reeAecut:2.o para cada e7uao. $nc.ua u)
co)ando E:ile para 7ue o pro(ra)a 0o.te para no0o c:.cu.o se)pre 7ue a.(u) coe3iciente se>a di3erente
de ?eroM ou se>aM o pro(ra)a ter)ina 7uando todos os 0a.ores .idos 3ore) ?ero. Para issoM 3aa o se(uinteB
aU #eter)ine as instru1es 7ue sero repetidas.
bU #eter)ine a eApresso .E(ica do E:ile. onsidere a pri)eira 7ue ac,ar 7ue =M depois 0oc8 0ai
0eri3ic:2.a.
cU Escre0a o E:ileM o =egi7 e o e7d e 3aa u)a 0eri3icao )anua.. Se ac,ar 7ue est: e) orde)M
teste o pro(ra)a para a.(uns c:.cu.os.
%'. APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
PROGRAM EqSegundoGrau;
uses CRT;

var a, b, c : integer;
Delta, Raiz1, Raiz2 : real;

begin
ClrScr;
Writeln('Clculo de razes da equao do segundo grau');
Writeln('Entre coeficientes inteiros a, b e c,');
Readln(a, b, c);
Delta := b*b - 4*a*c;
Raiz1 := ( -b + SqRt(Delta) )/2*a;
Raiz2 := ( -b - SqRt(Delta) )/2*a;
Writeln('Primeira raiz ', Raiz1:0:2);
Writeln('Segunda raiz ', Raiz2:0:2);
end.
$.$)$ Repeat
Pr;ti5a ./., < Co7:e5e7do o REPEAT
#i(ite o pro(ra)a abaiAo se) e co) o debu((erM obser0ando o retorno do 3.uAo de eAecuo e a sada do
cic.o.
PROGRAM RaizQuadradaComRepeat;
{repetidamente calcula rai( quadrada, terminando quando lido (ero}
uses CRT;
var Num : real;
begin
ClrScr;
Writeln('Clculo de raiz quadrada');
repeat
Write('Digite o nmero: ');
Readln(Num);
if Num > 0 then
Writeln('A raiz de ', Num:0:2, ' ', SqRt(Num):0:2 )
else
Writeln('Nmero invlido');
until ! " #;
end.
Pr;ti5a ././ < Erros de 5o6pila89o do repeat
Erros Os 0e?es di3ceis de descobrir esto re.acionados Os pa.a0ras reser0adas. EAperi)ente co)pi.ar o
pro(ra)a aci)a nas se(uintes situa1esB
aU Escre0a errado o repeat
bU se) o repeat
cU se) o u7til
dU se) a eApresso .E(ica do u7til
eU tro7ue u7til por atR
3U co.o7ue o u7til antes do else
8 - REPETO %'$
Pr;ti5a ./.. < Po7toDeD?rgula e REPEAT
@eri3i7ueB
aU Se 3a? di3erena por u) ponto2e20r(u.a apEs o repeat.
bU Se o ponto2e20r(u.a antes de u7til = opciona..
Repeat
A di3erena do co)ando repeat para o E:ile = 7ue no pri)eiro as instru1es internas sero
eAecutadas pe.o )enos u)a 0e?. O co)ando repeat te) a 3or)a
repeat
<comando /L2
Mcomando %L2
...
until <expresso lOgicaL;
Iuando = encontrado u) co)ando repeatM so eAecutados os co)andos at= o u7til. A eApresso
.E(ica deste = ento a0a.iadaN se 3or #alsaM o 3.uAo de eAecuo retorna para a instruo apEs o
repeatN se 3or verdadeiraM o co)ando de repetio = encerrado e = eAecutada a instruo apEs o
u7tilM se ,ou0er a.(u)a.
Aspectos a destacar no co)ando repeatB
2 as instru1es internas ao co)ando so eAecutadas pe.o )enos u)a 0e?N
2 a deciso de repetir ou parar = to)ada apEs a eAecuo das instru1es dentro do co)andoN
2 o co)ando = encerrado 7uando a eApresso 3or 0erdadeiraN
2 no = preciso inserir o co)ando co)posto be(in..end 7uando ,ou0er )ais de u)a instruo a
repetir.
Pr;ti5a ./.$ < Mais REPEAT
A.tere o pro(ra)a abaiAo para 7ue so)ente ca.cu.e a di0iso se o Nu)ero+ 3or di3erente de ?ero. Teste2o
co) nD)eros 0ariadosM inc.uindo a condio de sada.
PROGRAM Aritmetica;
{repetidamente l< dois nmeros e calcula e mostra na tela sua soma, su8trao,
multiplicao e Ei'isao}
var Numero1, Numero2 : integer;
begin
repeat
Write('Digite o primeiro nmero: '); Readln(Numero1);
Write('Digite o segundo nmero: '); Readln(Numero2);
if numero1 <> 0 then
begin
Writeln (Numero1+Numero2);
Writeln (Numero1-Numero2);
Writeln (Numero1* Numero2);
Writeln (Numero1/Numero2)
end
until Numero1=0
end.
%+0 APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
Pr;ti5a ./.%0 < Mel:ora7do para o usu;rio
No pro(ra)a Arit)=tica aci)aM )es)o 7uando o usu:rio dese>a encerrar o pro(ra)aM = obri(ado a di(itar
u) 0a.or para o se(undo nD)ero. A.tere o pro(ra)a para 7ue e.e no precise 3a?er isto.
$.$*$ 4or
Iuando sabe)os a 7uantidade de repeti1esM se>a u)a constanteM o 0a.or de u)a 0ari:0e. ou u)
0a.or ca.cu.adoM = )ais si)p.es usar o co)ando 9OR. A sintaAe deste co)ando inc.ui u)a 0ari:0e. de
contro.eM 7ue = incre)entada ou decre)entada auto)atica)enteM con3or)e use)os 9OR..TO ou
9OR..#OCNTO.
Pr;ti5a ./.%% < 4OR..TO
#i(ite e eAecute o pro(ra)a abaiAoM inicia.)ente se) o debu((erM depois co) e.e. Ao eAecutar o
co)ando CorM obser0e as 0ari:0eis NM Nu)$ni e Nu)9i) na >ane.a Catc,es. Se necess:rioM con3ira as
eAp.ica1es e) se(uida.
PROGRAM Numerador;
{I< o nmero inicial e o final e mostra na tela os nmeros inteiros do inicial
at o final. Ne o nmero final for menor que o inicial, mostrada uma mensagem
de erro}
uses CRT;
var NumIni, NumFim, N : integer;
begin
ClrScr;
Write('Entre nmeros inicial e final: ');
Readln(NumIni, NumFim);
if NumIni < NumFim then
for N := NumIni to NumFim do
Write(N, ' ')
else
Writeln('O nmero final deve ser maior que o inicial');
end.
Esc.areci)entosB As 0ari:0eis Nu)$ni e Nu)9i) ar)a?ena) os nD)eros 3ornecidos pe.o
tec.ado. A instruo a repetir = i)pri)ir u) nD)ero co) u) espao depois. Precisa)os ta)b=) de u)a
0ari:0e. 7ue 0: de Nu)$ni at= Nu)9i). o)o esta 0ari:0e. 0aria de 1 e) 1M e sabe)os a 7uantidade de
repeti1es TNu)9i) 2 Nu)$ni t 1UM pode)os usar o co)ando Cor.
O pro(ra)a aci)a = eAecutado assi)B
a pri)eira ao eAecutada = a .i)pe?a da te.aN
= )ostrada a )ensa(e) 7ue pede os nD)erosN
os nD)eros so .idos e ar)a?enados nas 0ari:0eis Nu)$ni e Nu)9i)N supon,a 7ue 3ora)
di(itados os 0a.ores 1'' e +''N
co)o o nD)ero inicia. = )enor 7ue o 3ina.M a eApresso do iC = 0erdadeira e o 3.uAo de
eAecuo se(ue para o co)ando apEs o t:e7N
no incio da eAecuo do co)ando CorM = atribudo 1'' O 0ari:0e. NN
e) se(uidaM o 0a.or de N = co)parado co) o conteDdo da 0ari:0e. Nu)9i)M 7ue = +''. o)o
8 - REPETO %+%
= )enorM o 3.uAo de eAecuo se(ue para o co)ando apEs o dof
= )ostrado o 0a.or de NM 7ue = 1''M se(uido do espaoN
a 0ari:0e. de contro.e N = incre)entada de 1 unidade Tauto)atica)enteN no ,: instruo
eAp.cita para issoUM passando a 0a.er 1'1N
no0a)ente = a0a.iado se N gn Nu)9i). o)o N cont=) 1'1 e Nu)9i) cont=) +''M
no0a)ente = eAecutado o CriteN
isto se repete Tincre)entaM )ostraU at= N n +'1N co)o a(ora N = )aior do 7ue o 0a.or 3ina.M o
co)ando apEs o do no = eAecutado e o 3.uAo de eAecuo se(ue para a instruo apEs o 3i)
do co)ando CorM 7ue = o 3i) do pro(ra)a.
4OR
Neste co)ando de repetio esco.,e)os u)a 0ari:0e. de contro.e e in3or)a)os o seu 0a.or inicia. e
seu 0a.or 3ina.. O co)pi.ador se incu)be de atua.i?ar o 0a.or da 0ari:0e. de contro.e Tde 1 e) 1 ou
de 21 e) 21U a cada iteraoM e co)para seu 0a.or co) o 0a.or 3ina. indicado. Tipica)ente este
co)ando ser: usado 7uando souber)os a 7uantidade de itera1es Tconstante ou u)a 0ari:0e.U ou e.a
puder ser ca.cu.ada. A sintaAeB
for <'ari)'elL := M'alor inicial> to {ou donto} <'alor finalL do
begin
<comando /L2
Mcomando %L2
...
end;
A 0ari:0e. do Cor T0ari:0e. de contro.eU de0e ter sido dec.arada e nor)a.)ente = de u) tipo inteiro
T,: outras possibi.idadesM 7ue no nos interessa) a7uiU. No caso de ser usado toM 7uando u)
co)ando Cor = encontrado no 3.uAo de eAecuoB
2 O 0ari:0e. de contro.e = atribudo o resu.tado da eApresso correspondente ao 0a.or inicia.
e seu 0a.or = co)parado co) o resu.tado da a0a.iao da eApresso 7ue indica o 0a.or 3ina.N
2 se o 0a.or inicia. = )enor ou i(ua. ao 0a.or 3ina.M as instru1es apEs o do so eAecutadasM e
automaticamente a 0ari:0e. de contro.e = incre)entada de u)a unidadeM e no0a)ente o 0a.or da
0ari:0e. = co)parado co) o 0a.or 3ina..
2 se o 0a.or inicia. = )aior 7ue o 0a.or 3ina.M nen,u)a instruo apEs o do = eAecutadaM e o 3.uAo
se(ue para a prEAi)a instruo.
2 se ,ou0er sE u) co)ando apEs o doM no = necess:rio o par =egi7..e7d. EAe)p.osB
for GrauCelsius := 0 to 100 do
Write (GrauCelsius, ' ');
for I := Num to Num*4 do
X := X + Y;
for X := -10 to 10 do
begin
Writeln(X);
Writeln
end;
%+& APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
Iuando usado doE7toM as di3erenas soB o 0a.or 3ina. de0e ser )enor 7ue o inicia.M a 0ari:0e. de
contro.e = decrementada de u)a unidadeM e o teste 0eri3ica se o 0a.or da 0ari:0e. = )enor 7ue o
0a.or 3ina..
Pr;ti5a ./.%& < 4OR..DOYNTO
EAecute o pe7ueno pro(ra)a abaiAo e 0eri3i7ue co) o debu((er co)o 3unciona o co)ando 3or co)
do6nto. A te.a produ?ida pe.o pro(ra)a = estaB
10 9 8 7 6 5 4 3 2 1
PROGRAM ContaDe10Ate1;
{3ostra os nmeros inteiros de /! at /}
uses CRT;
var N : byte;
begin
ClrScr;
for N := 10 donto 1 do
Write(N, ' ')
end.
?so "o -OR
Iuando usamos forB Este ser 8til !uando soubermos, no momento da
ro$rama("o, !uantas vezes o trecho ir se reetir, se<a se #or um n8mero
constante de vezes, ou a !uantidade de itera()es estiver dison'vel em uma
varivel, e tambm a varivel de controle varia de 1 unidade de cada vez.
Esse o caso do ro$rama do numerador+ anteciadamente sabemos !ue
a instru("o Rrite ser e%ecutada CNum*im ; NumMni _ 1D vezes e, aesar
de odermos usar !ual!uer um dos comandos de reeti("o, o for mais
aroriado.
O comando for resulta em instru()es mais simles e deve ser usado
semre !ue a !uantidade de itera()es #or conhecida e a varivel de
controle variar de 1 em 1. Neste comando, em outras lin$ua$ens,
ermitido indicar o asso Cvaria("o da varivel de controleD. No -ascal
adr"o o asso ser semre 1 ou ;1N se di#erente, voc dever usar outro
comando de reeti("o.
Pr;ti5a ./.%' < Pree75:e7do a tela
EAecute o pro(ra)a abaiAoM obser0ando os 0a.ores das 0ari:0eis de contro.e dos co)andos Cor. Para
a(i.i?ar a eAecuo e) a.(u) pontoM 0oc8 pode usar o co)ando 9/ do debu((er T(o to cursorUB posicione
o cursor e tec.e 9/ e o debu((er eAecutar: o pro(ra)a at= parar na .in,a do cursor.
8 - REPETO %+'
PROGRAM PreencheTela;
{Creenc#e %? lin#as da tela com um caractere lido, enquanto emite sons com
freqP<ncia crescente de / em /, a partir de /!! e uma durao de %!
milissegundos. .o execute se #ou'er algum dormindo, insuport)'el...}
uses CRT;
const Tempo = 20;
var Ch : char;
Freq : word;
L, C : byte;
begin
ClrScr;
Writeln('Entre um caractere:');
Readln(Ch);
ClrScr;
Freq := 100;
for L := 1 to 24 do
for C := 1 to 80 do
begin
GotoXY(C,L); Write(Ch);
Sound(Freq); Delay(Tempo); NoSound;
Freq := Freq + 1;
end;
ReadKey;
end.
E%lica()esB para este pro(ra)a precisa)os de dois co)andos de repetioM u)a para apontar cada .in,a
e outra para cada co.una. Para cada .in,a percorre)os todas as co.unas. o)o sabe)os 7uantas itera1es
ocorrero T+/A5'UM usa)os dois co)andos Cor. A cada 0e? 7ue )ostra)os u) caractere na te.aM ta)b=)
incre)enta)os a 3re7F8ncia. Note 7ue o co)ando Cor de dentro = eAecutado co)p.eta)ente para cada
iterao do pri)eiro Cor.
Pr;ti5a ./.%+ D #egui7do4or
Para o pro(ra)a abaiAoB
aU EAecut:2.o )anua.)ente e identi3icar o 0a.or da 0ari:0e. Atual apEs a eAecuo. #epoisM di(itarM
testar co) o debu((er e con3erir sua eAecuo.
PROGRAM SeguindoFor;
var Anterior, Atual, Seguinte, I : byte;
begin
Anterior := 1; Atual := 1;
for I := 3 to 5 do
begin
Seguinte := Atual + Anterior;
Anterior := Atual;
Atual := Seguinte
end
end.
aU Reescre0er o pro(ra)a para usar repeat.
bU Reescre0er o pro(ra)a para usar E:ile.
%++ APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
Pr;ti5a ./.%* < Nu6erador 5o6 repeti89o
A.tere o pro(ra)a Nu)erador de 3or)a 7ue 3i7ue repetindo a .eitura e a nu)eraoM sE parando 7uando o
usu:rio entrar co) ?eros.
Pr;ti5a ./.%, < Dese7:o 5o6 5ara5teres
E.aborar u) es7ue)a da te.a de sada para o se(uinte pro(ra)a. #epoisM eAecute2o e con3iraB
PROGRAM CaracteresProgressivos;
uses CRT;
var N, I, J : integer;
Ch : Char;
begin
ClrScr;
Writeln('Entre nmero de linhas: '); Readln(N);
Writeln('Entre caractere: '); Readln(Ch);
I := 1;
hile I <= N do
begin
for J := 1 to I*2 do
Write(Ch);
Writeln; {mo'e cursor para incio da prOxima lin#a}
I := I + 1
end
end.
Pr;ti5a ./.%/ < Mais 5ara5teres
No )es)o pro(ra)aM a.terar a eApresso $q+ por $M pre0er 7ua. ser: o resu.tado e con3ir)arM eAecutando o
pro(ra)a.
Pr;ti5a ./.%. D Co7?erte7do 5adeia para 6aiZs5ulas
$denti3i7ue dentre os (rupos de instru1es abaiAo 7uais e3eti0a)ente con0erte) a cadeia S para
)aiDscu.as Tna prEpria ou e) outra 0ari:0e.U. Teste cada opo no Turbo Pasca..
a) for Ap := 1 to Length(S) do S[Ap] := Upcase(S[Ap]);
a) Smai := '' ;
for Ap := 1 to Length(S) do
Smai := Smai + Upcase(S[Ap]);
a) S := Smai;
for Ap := Length(S) donto 1 do
S[Ap] := Upcase(S[Ap]);
$.$+$ Casos CreFUe7tes e pro=le6as 5o6 5o6a7dos de repeti89o
Pausas 2 Se 0oc8 7uiser 3a?er o pro(ra)a esperar o usu:rio pressionar u)a tec.a antes de
continuarM pode usar a 3uno deYPressed Tda unit RTUM 7ue retorna True se u)a tec.a 3oi acionada e
9a.se caso contr:rio. o) esta 3unoM pode)os escre0er
repeat until KeyPressed;
ou
8 - REPETO %+*
hile not KeyPressed do;
A 3uno deYPressed apenas consu.ta o bu33er do tec.adoN o cEdi(o da tec.a di(itada continua .:.
Se ti0er 7ue .er posterior)ente do tec.ado e no precisar da tec.aM .i)pe o bu33er co) a instruo
ReaddeY.
T)oopsT 2 @oc8 pode obser0ar 7ueM no co)ando aci)aM se nen,u)a tec.a 3or pressionadaM o
co)ando nunca ter)inar:M eAceto se o co)putador 3or des.i(ado ou ,ou0er u)a condio de erro. $sso
se)pre ocorrer: 7uando a condio de ter)inao nunca 3or atin(ida Tdi?e)os 7ue o pro(ra)a _entrou
em loo`U. Obser0e o se(uinte trec,o de pro(ra)aB
X := 1;
repeat
Writeln(X);
X := X + 2
until X = 100;
A 0ari:0e. de contro.e Z ser: se)pre )parN conse7uente)enteM a eApresso .E(ica do u7til
nunca ser: 0erdadeira e o co)ando no ter)inar: nor)a.)ente. $sso pode ocorrer ta)b=) 7uando a
0ari:0e. de contro.e no = a.terada dentro do co)ando de repetioM co)o no caso abaiAoB
X := 1;
hile X <= 100 do
Write (X, ' ');
Outro erro de conse7F8ncias por 0e?es desa(rad:0eis = es7uecer o par =egi7..e7d. Supon,a 7ue o
pro(ra)adorM ao corri(ir o erro aci)aM 3aa assi)B
X := 1;
hile X <= 100 do
Write (X, ' ');
X := X + 1;
O desa0isado pro(ra)adorM i.udido pe.as apar8nciasM ac,a 7ue corri(iu o prob.e)aM )as nada
)udar:B o incre)ento do Z est: 3ora do co)ando de repetio e >a)ais ser: eAecutado.
Este>a atento O condio de ter)inao e semre 0eri3i7ue )anua.)ente o cEdi(o antes de
eAecut:2.o.
2e seu ro$rama entrar em loo, tecle ,trl;breaP ara interromer sua
e%ecu("o.
I6pedi7do e7tradas erradas 2 ")a outra ap.icao de co)andos de repetio = 7uando 0oc8
7uer .er u) 0a.or e sE continuar o pro(ra)a apEs o 0a.or .ido estar correto. Por eAe)p.oM para .er u)
nD)ero na 3aiAa de 1 a 4M 0oc8 pode escre0erB
Repeat
Write('Digite o nmero: ');
Readln(Num)
until (Num >= 1) and (Num <= 6);
Nesse caso = bo) pre0er u)a )ensa(e) de erro para o usu:rioM para e.e no 3icar se) saber o
7ue 3a?er. o)o 0oc8 3aria isso[
(lo5os de 5o7trole D o)andos de repetio so )uito usados para repetir a seo principa. de
u) pro(ra)aM per)itindo o usu:rio usar o pro(ra)a e sE parar 7uando 3or in3or)ada u)a condio de
sada.
%+, APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
No caso )ais si)p.esM >: 0isto a7uiM o pro(ra)a eAecuta apenas u)a ao b:sica. Esse = o caso
do c:.cu.o do 3atoria.M para o 7ua. u)a estrutura de contro.e tpica seriaB
repeat
Readln(Numero);
if Numero > 0 then
begin
{Dalcular fatorial}
{3ostrar fatorial}
end
until Numero = 0;
^ c.aro 7ue u)a estrutura E:ile..do ta)b=) pode ser usada T3aa co)o eAerccioU. R: se o
pro(ra)a i)p.e)enta duas ou )ais a1es distintasM o usu:rio de0e in3or)ar 7ua. 7uer eAecutarM e a
estrutura tpica de contro.e = u) co)ando 5aseB
PROGRAM ExemploMenuIncompleto;
uses CRT;
var Opcao : char;
$egin
ClrScr;
repeat
Writeln('1 - Ao 1');
Writeln('2 - Ao 2');
Writeln('3 - Fim');
Write('Entre opo: ');
Readln(Opcao);
case Opcao of
'1' : {Jo /}2
'2' : {Jo %}2
'3' : {fim}
else begin
Writeln("Opo invlida");
ReadKey
end
end;
until Opcao = '3'
end.
$.$,$ Progra6a7do repeti8Aes
A e.aborao de a.(orit)os contendo repetio de co)andos en0o.0e eAperi8ncia anterior e
respostas certas para per(untas ade7uadas. O Vnor)a.V = 3a?er u)a 0erso inicia. e ir aper3eioando ou
corri(indo. Iuanto )ais eAperi8ncia 0oc8 ti0erM )ais rapida)ente 0ai pro(ra)ar.
@e>a nesta seo a.(u)as per(untas 7ue 0oc8 pode 3a?er se precisarM di0ididas e) dois b.ocos. O
pri)eiro para repeti1es si)p.esM co)o a de )enusM e o se(undo para a.(orit)os. Ne) se)pre ser:
preciso 3a?er todasM use2as 7uando ac,ar necess:rio. $ndependente)ente da 7ua.idade das per(untasM 3a?er
a 0eri3icao )anua. antes da di(itao pode .,e econo)i?ar )uito te)po.
<.oco 1B repeti1es si)p.es
& reeti("oB
Iuais os comandos !ue ser"o reetidosB
Iual a condi("o de termina("o Csa'daDB
<.oco +B a.(orit)os co) repetio.
8 - REPETO %+/
-ode ser usado um comando de reeti("oB
Iuais s"o as variveis necessriasB
Iual o asso intermedirio !ue, reetido, conduz E obten("o do resultado $lobal da
reeti("oB ,omo ode ser descrito em lin$ua$em comumB.
Iuais s"o as variveis !ue se alteram a cada assa$emB Iuais s"o seus valores inicial e
#inalB Iual a instru("o !ue e#etuar cada modi#ica("o Celabore uma tabela com essas
in#orma()esD.
Iuantas vezes ocorrer a reeti("oB
Iual a varivel ou e%ress"o l$ica de controleB Iual o valor inicial da e%ress"o de
controleB =alor #inalB & outras variveis candidatasB
Iual o melhor comando de reeti("o a ser usadoB
A se!Kncia dos comandos !ue s"o reetidos est aroriadaB
-artindo;se das condi()es iniciais e e%ecutando;se a arte reetitiva, o resultado
dese<ado obtidoB
O al$oritmo #uncionou como eseradoB 2e n"o, o !ue deve ser modi#icadoB O !ue est
assando ou #altandoB Iue situa()es odem ocorrer em !ue o al$oritmo #alhariaB
E@e6plo ./.%$ < Teste de 7ota
Responda Os per(untas de repetio para a se(uinte especi3icaoB
Elaborar ro$rama !ue l uma discilina e resectiva nota Cde 0 a 10, com uma casa decimalD, e
in#orma se o aluno assou na discilina, reetindo o ciclo at !ue a nota lida se<a zero. O aluno
assa !uando tira : ou mais.
& reeti("oB
Si). O pro(ra)a de0e processar tantas notas 7uanto o usu:rio 7ueira.
Iuais os comandos !ue ser"o reetidosB
%er a nota e a discip.ina
@eri3icar se o a.uno passou.
!ostrar o resu.tado na te.a.
Iuantas vezes ocorrer a reeti("o ou, se n"o se sabe, !ual a condi("o de termina("oB
Iuantidade inde3inida de 0e?es To usu:rio = 7ue deter)inaU. Ter)ina 7uando a nota .ida
3or ?ero.
#epois de obtidas essas respostasM basta decidir 7ua. o co)ando de repetio a ser usado. Note
7ue 0oc8 poderia ter 3eito u) pro>eto e a partir deste obter as respostas.
E@e6plo ./.&0 < MRdia de idades
.m ro#essor, as obter in#orma()es de uma turma, dese<a saber a mdia de idade. Escrever um
ro$rama !ue l as idades at !ue o idade lida se<a zero, !uando ent"o mostrada a mdia Co zero n"o
considerado ara a mdiaD.
X: repetioB u)a 7uantidade inde3inida de idades de0e) ser .idas. Para poder ca.cu.ar a )=dia te)os
7ue ter a so)a das idades e a 7uantidade de idades. Assi)M as instru1es 7ue sero repetidas so a .eitura
da idadeM a atua.i?ao de u) contador e o c:.cu.o da so)a tota. .ida. A repetio de0e ter)inar 7uando a
idade 3or ?ero.
%+. APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
Runtando tudo issoM a estrutura do pro(ra)a =B
"Atribua um valor qualquer dade, diferente de zero"
enquanto "a idade for diferente de zero" faa
Leia a prxima idade
Se a idade lida for diferente de zero, ento
"ncremente o contador de pessoas"
"some a idade lida ao total da idade"
fim
fim
"Mostre a mdia, que a soma das idades dividida pela quantidade de pessoas".
@e>a o pro(ra)a co)p.etoB
PROGRAM MediaIdades;
uses CRT;
var Idade, Quant, SomaIdade : word;
begin
ClrScr;
Writeln('Clculo de mdia de idades');
Idade := 999;
hile Idade <> 0 do
begin
Write('Digite a idade: '); Readln(Idade);
if Idade <> 0 then
begin
Quant := Quant + 1;
SomaIdade := SomaIdade + Idade;
end;
end;
Writeln('A mdia das idades : ', SomaIdade/Quant:0:2);
ReadKey;
end.
Pr;ti5a ./.&% < MediaIdades
a.cu.e )anua.)ente a )=dia das idades 15 k 1& k +1 k -5 k 15 2 +'. #epois teste o pro(ra)a co) os
)es)os 0a.ores e con3ira.
E@e6plo ./.&& < #Rrie
Escrever ro$rama ara calcular, ara N lido, o valor de 2, dado or+
As e#etuar um clculo, o ro$rama ede novo n8mero, arando !uando N #or zero.
Antes de traba.,ar na repetioM 0a)os 3a?er u) pro>eto. ")a te.a de sada pode ser TapEs 3a?er
c:.cu.os )anuais da s=rieUB
Entre valor de N (inteiro):
3
S(3) = 4.33
1 +
1
...
+
-
1
+ 1 N N
N N N
2 +

+ +

+ =
8 - REPETO %+$
Entre valor de N (inteiro):
5
S(5) = 8.70
Entre valor de N (inteiro):
0
Obser0ando a especi3icao ou a te.aM pode)os identi3icar 7ue ser: necess:rio dec.arar as
0ari:0eis NM o nD)ero inteiro a ser .ido e SM o 0a.or da s=rieM 7ue = rea.. A estrutura (era. do pro(ra)a =B
"Inicialize N com um valor diferente de zero"
enquanto N <> 0 faa
leia N
se N > 0 ento
"Calcule o valor da srie"
"Mostre valor da srie na tela"
fim
fim.
O Dnico passo da se()entao aci)a 7ue no pode ser direta)ente i)p.e)entado e) Pasca. =
Va.cu.e o 0a.or da s=rieV. Este pode ser se()entado in3or)a.)ente e)B
Repita N vezes
"Calcule o valor de um termo da srie"
"Acumule o valor do termo calculado"
fim
A7ui pode)os ap.icar as per(untas su(eridas aci)aM >: sabendo 7ue ,: repetio.
Iuais s"o as variveis necessriasB O 7ue 0aria = a so)a SM o nu)erador Nu)er e o
deno)inador #eno).
Iual o asso intermedirio[ a.cu.ar u) 3atorM Nu)erS#eno)M e so):2.o e) S.
Iuais s"o as variveis !ue se alteram a cada assa$em, seus valores inicial e #inal e instru()es
!ue as modi#icam[ A cada iteraoM )uda) o nu)erador Tde 1 e) 1UM o deno)inador Tde k1 e) k1U e o
prEprio 0a.or de S TNu)erS#eno)U. Representando atra0=s de u)a tabe.aB
Vari;?el Val. I7i5ial Val. 4i7al I7stru89o
Nu)er 1 N Nu)er Bn Nu)er t 1
#eno) N 1 #eno) Bn #eno) k1
S ' S S Bn S t Nu)erS#eno)
Iuantas vezes ocorrer a reeti("o[ Tere)os N itera1esM u)a para cada 3ator da s=rie.
Iual a varivel de controle[ Pode)os usar Nu)erM 7ue 0aria de 1 a N.
Iual o melhor comando de reeti("o[ A 7uantidade de itera1es ou repeti1es ser: NM portanto
pode)os usar o co)ando Cor.
o) base nessas de3ini1esM pode)os co)p.etar o a.(orit)oM representado e) Pasca.B
ALGORITMO CalculaSrie;
Denom := N;
S := 0;
%*0 APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
For Numer := 1 to N do
begin
S := S + Numer/Denom;
Denom := Denom - 1;
end
Antes de co)p.etar o pro(ra)aM 0a)os e3etuar a 0eri3icao )anua. para N n -. !onta)os u)a
tabe.a de 0ari:0eis e eAecuta)os o a.(orit)o instruo a instruoM atua.i?ando a tabe.a a cada a.terao
no 0a.or de u)a 0ari:0e.. Ao 3ina.M a tabe.a 3icar: assi)B
Itera89o N # Nu6er De7o6
incio
-
[ [ [
$nicia.i?ao ' 1 -
1 '.--- + +
+ 1.--- - 1
- /.--- / '
A eAecuo produ?iu o resu.tado pre0isto no pro>eto T3aa o )es)o para N n 5U. @e>a o pro(ra)a
co)p.etoB
PROGRAM CalculaS;
{calcula o 'alor de uma srie matem)tica}
uses CRT;
var N, Numer, Denom : integer;
S : real;
begin
ClrScr;
N := 999;
hile N <> 0 do
begin
Writeln('Entre valor de N:');
Readln(N);
if N > 0 then
begin
S := 0;
Denom := N;
for Numer := 1 to N do
begin
S := S + Numer/Denom;
Denom := Denom - 1;
end;
end;
Writeln('S(', N, ') = ', S:10:2)
end
end.
Note 7ue 0oc8 te) 0:rias a.ternati0as para c,e(ar a u) a.(orit)oB a especi3icaoM o pro>etoM
se()entaoM eAperi8ncia anteriorM tentati0a2e2erro. Por onde 0oc8 passa no i)portaM se c,e(ar a u)
resu.tado correto.
Nunca se es!ue(a+ suas idias s"o seu rincial recurso. N"o as mate
imiedosamenteO
E@er55io ./.&' D Respo7da
Para as especi3ica1es abaiAoM responder Os per(untas de co)andos de repetioB
8 - REPETO %*%
aD Escrever um ro$rama !ue l dois n8meros inteiros, inicial e #inal, e mostra na tela os n8meros
inteiros do inicial at o #inal. ,ritica+ o n8mero #inal deve ser maior do !ue o inicial. O
ro$rama reete isso en!uanto os n8meros lidos #orem di#erentes de zero.
bD Elabore um ro$rama !ue l um n8mero de 1 a 0 e mostra a tabuada de multilica("o do
n8mero. -or e%emlo, ara o 7+
7 % 1 c 7
7 % 4 c 10
...
7 % 10 c 70
Espe5iCi5a89o ./.&+ D C:atea89o
$)p.e)entar u) pro(ra)a 7ue 3ica repetindo a )e.odia do parab=ns Tp:(. &*U at= 7ue u)a tec.a se>a
pressionada. EAecute2o se)pre 7ue 7uiser a)o.ar a.(u=)W
E@er55io ./.&* < 4otoss7tese re?isitada
O pro(ra)a da 3otossntese Tespeci3icado na p:(. 54U 3oi reescritoM de 3or)a 7ue o estudante possa
a0anar ou retroceder as p:(inas atra0=s de seta aci)a e seta abaiAo. O pro(ra)a ter)ina 7uando a0anar
a.=) da D.ti)a p:(ina ou 7uando tec.ado ESAPE. %eia cada per(unta dos co)andos de repetio e
procure as respostas no pro(ra)a abaiAo. 9aa o 7ue 3or necess:rio para c,e(ar Os respostasB eAecutar o
pro(ra)aM 3a?er u) dia(ra)a de b.ocos e o 7ue 0oc8 puder usar.
PROGRAM Fotossintese;
{Jpresentacao de texto so8re fotossintese, com titulo e tres paginas.
Jtencao- nao roda em 5ur8o Cascal for *indoQs}
uses CRT;
const {codigos JNDRR +estendidos, exceto o %B1 das teclas usadas no programa}
ESCAPE = #27;
SetaAcima = #72;
SetaAbaixo = #80;
var
PagAtual : byte;
Tecla : char;
begin
ClrScr;
GotoXY(34,12); Write('F O T O S S I N T E S E');
Readln;
PagAtual := 1;
%*& APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
repeat
ClrScr;
{mostra a pagina atual2 algumas lin#as foram separadas apenas para o
fonte ca8er nas @! colunas da tela e do papel}
%ase PagAtual of
1 : begin
GotoXY(12,12); Write('A agua e os sais minerais absorvidos'
+ ' pelas raizes');
GotoXY(12,13); Write('sobem atraves dos vasos lenhosos do'
+ ' caule e chegam as folhas');
end;
2 : begin
GotoXY(12,12); Write('Nas folhas, existe uma substancia verde,'
+ ' a clorofila,');
GotoXY(12,13); Write('que absorve a energia luminosa do Sol.'
+ ' Ao mesmo tempo,');
GotoXY(12,14); Write('por meio dos estomatos presentes nas'
+ ' folhas, a planta');
GotoXY(12,15); Write('absorve gas carbonico do ar.');
end;
3 : begin
GotoXY(12,12); Write('Usando a energia solar, o gas carbonico'
+ ' e o hidrogenio');
GotoXY(12,13); Write('contido na agua retirada do solo,'
+ ' apos complicadas reacoes');
GotoXY(12,14); Write('quimicas, a planta produz acucares'
+ '(glicose)');
end;
end;
Tecla := ReadKey;
{Jlgumas teclas +de controle1 retornam dois caracteres, sendo o
primeiro S!2 testamos so o segundo. Js setas tem dois}
if Tecla = chr(0) then
Tecla := ReadKey;
%ase Tecla of
SetaAcima :
if PagAtual > 1 then PagAtual := PagAtual - 1;
SetaAbaixo :
if PagAtual < 3 then PagAtual := PagAtual + 1;
end;
until Tecla = ESCAPE;
end.
Espe5iCi5a89o ./.&, D NZ6eros i7teiros %
Escre0er u) pro(ra)a 7ue .8 dois nD)eros inteirosM inicia. e 3ina.M e )ostra na te.a os nD)eros inteiros
do inicia. at= o 3ina.. riticaB o nD)ero 3ina. de0e ser )aior do 7ue o inicia.. O pro(ra)a repete isso
en7uanto os nD)eros .idos 3ore) di3erentes de ?ero.
Espe5iCi5a89o ./.&/ D #o6a de pares
$)p.e)ente u) pro(ra)a 7ue ca.cu.a a so)a dos nD)eros pares co)preendidos entre dois nD)eros
.idos.
Espe5iCi5a89o ./.&. D Apro?a89o
E.aborar pro(ra)a 7ue .8 u)a discip.ina e respecti0a nota Tde ' a 1'M co) u)a casa deci)a.UM e in3or)a
se o a.uno passou na discip.inaM repetindo o cic.o at= 7ue a nota .ida se>a ?ero. O a.uno passa 7uando tira
& ou )ais.
Espe5iCi5a89o ./.&$ D Maior
Escre0er u) pro(ra)a 7ue .8 nD)eros inteiros at= 7ue o nD)ero .ido se>a ?eroM 7uando ento = )ostrado
o )aior nD)ero .ido. ]1ica+ declare uma varivel ara re$istrar o maior lido at um momento,
8 - REPETO %*'
inicializando;a com o menor n8mero oss'vel. >este cada n8mero lido com o maior e tro!ue se #or o
caso^
Espe5iCi5a89o ./.'0 D Maior e 6e7or
A.terar o pro(ra)a anterior para 7ue )ostre ta)b=) o )enor nD)ero .ido.
Espe5iCi5a89o ./.'% < No6e e6 5a7tos
9aa u) pro(ra)a 7ue 3ica )ostrando seu no)e a.ternada)ente nos 7uatro cantos da te.aM at= 7ue u)a
tec.a se>a pressionada.
Espe5iCi5a89o ./.'& D Co7?ers9o de te6peratura %
Escre0er u) pro(ra)a 7ue )ostra u)a tabe.a de (raus e.siusS9a,ren,eit entre duas te)peraturas .idas
do tec.adoM 0ariando 1 (rau de cada 0e?M u)a te)peratura por .in,a.
Espe5iCi5a89o ./.'' D Estatsti5a de 7otas
9aa u) pro(ra)a 7ue .8 u)a 7uantidade 7ua.7uer de notas de ' a 1' Tno per)itir 3ora desta 3aiAaU eM ao
3ina.M )ostra 7uantas notas 3ora) di(itadasM a )=dia e ta)b=) a 7uantidade co) 0a.or abaiAo de 5.
]1ica+ mantenha variveis ara a soma arcial das notas e a !uantidade de notas, atualizadas a cada
leitura. No #inal, divida a rimeira ela se$unda^
Espe5iCi5a89o ./.'+ D RaiQ Fuadrada 5o6 6e7u
9aa u) pro(ra)a 7ue repetida)ente )ostra na te.a duas op1esB V1 2 9i)V e V+ 2 a.cu.ar rai?V e .8 do
tec.ado a opo dese>ada pe.o usu:rio. Se a opo 3or 1M o pro(ra)a ter)ina. Se a opo 3or +M o
pro(ra)a .8 u) nD)ero rea. eM se o nD)ero 3or positi0o ou ?eroM ca.cu.a e )ostra sua rai? 7uadrada co)
duas casas deci)aisM se ne(ati0oM )ostra u)a )ensa(e) de erro. E se a opo 3or in0:.ida Tne) 1 ne)
+UM = )ostrada u)a )ensa(e) apropriada. Iuando a opo no = a de ter)inarM o pro(ra)a 0o.ta para
)ostrar no0a)ente as op1es e .er a opo do usu:rio.
Espe5iCi5a89o ./.'* < Me7u de 5o7ta teleCI7i5a
")a conta te.e3;nica = co)posta dos se(uintes custosB
assinaturaB Rz +'M''
i)pu.sosB Rz 'M'/ por i)pu.so 7ue eAceder a *'
0a.or dos interurbanos
c,a)adas pS ce.u.arB Rz'M+' por i)pu.so
$)p.e)ente u) pro(ra)a co) / op1es principaisB a pri)eira .8 0a.ores de u)a conta T0a.or de
interurbanosM 7uantidade de i)pu.sos nor)ais e para ce.u.arUM e ca.cu.a e )ostra o 0a.or da conta. A
se(unda in3or)a a 7uantidade de contas .idasM o 0a.or tota. e a )=dia do 0a.or das contas. A terceira
)ostra outras + op1es T)enu secund:rioUB )ostrar a>uda para o pro(ra)a To 7ue 3a?M co)o us:2.oU e
)ostrar in3or)a1es do pro(ra)ador e do pro(ra)a Tno)e do ar7ui0o e) discoM 0ersoU. A 7uarta
3ina.i?a o pro(ra)a.
1etalhesB os 0a.ores das assinaturas e preos de i)pu.sos de0ero ser dec.arados co)o constantes. Para o
)enuM co)binar os co)andos repeat e caseM e )ostrar )ensa(e) se 3or indicada u)a opo in0:.ida. No
per)itir 0a.ores ne(ati0os. No )ostrar estatstica se nen,u)a conta ti0er sido in3or)ada.
%*+ APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
Espe5iCi5a89o ./.', D Co75ate7a89o de 5ara5teres
E.abore u) pro(ra)a 7ue .8 u)a 7uantidade 7ua.7uer de nD)eros de -+ a +5/ e )ostra na te.a u)a
cadeia 3or)ada pe.a concatenao dos caracteres AS$$ de cada nD)ero T.e)bre2se da 3uno ,rU. Se
u) dos nD)eros esti0er 3ora de 3aiAaM = )ostrada u)a )ensa(e) de erro e o pro(ra)a espera a correo.
O 3ina. da entrada de nD)eros ocorre 7uando 3or .ido ?ero.
Espe5iCi5a89o ./.'/ D CriptograCia
$)p.e)entar u) pro(ra)a co) duas op1esB na pri)eiraM .er e codi3icar u)a cadeia co) cEdi(os AS$$
de -+ TespaoU a 1++ Ti?iU M da se(uinte )aneiraB ao cEdi(o AS$$ de cada caractere = so)ado 1N os
nD)eros resu.tantes so con0ertidos no0a)ente e) caracteres e concatenadosM sendo a cadeia resu.tante
)ostrada na te.a. A se(unda opo decodi3ica u)a cadeia codi3icada pe.a pri)eira pro(ra)a. EAe)p.oB a
cadeia V3o(oVM codi3icadaM se torna V(p,pV Tesse processo de codi3icao = c,a)ado de Vcripto(ra3iaVU.
Espe5iCi5a89o ./.'. D A7i6a89o :oriQo7tal %
$)p.e)entar u) pro(ra)a 7ue si)u.a u) caractere se )o0endo pe.a te.a ao .on(o de u)a .in,a cu>o
0a.or = .ido do tec.adoM a partir e at= co.unas ta)b=) .idas. O pro(ra)a 0eri3ica se a co.una 3ina.
in3or)ada = )aior do 7ue o 0a.or inicia..
Espe5iCi5a89o ./.'$ D A7i6a89o :oriQo7tal &
A.terar o pro(ra)a anterior para 7ue o )o0i)ento se>a na 0ertica.M isto =M a co.una 3ica 3iAa e a .in,a
0aria.
Espe5iCi5a89o ./.+0 D Ta=uada
E.abore u) pro(ra)a 7ue .8 u) nD)ero de 1 a * e )ostra a tabuada de )u.tip.icao do nD)ero. Por
eAe)p.oM para o 5B
5 A 1 n 5
5 A + n 1'
...
5 A 1' n 5'
ApEs )ostrar u)a tabuadaM o pro(ra)a per(unta se o usu:rio dese>a 0er outra. Se a resposta 3or positi0a
Tpor eAe)p.oM iSiUM e.e 3a? tudo de no0oM caso contr:rio ter)ina.
Espe5iCi5a89o ./.+% D #Rrie 5o7?erge7te
A s=rie ...
5
1
/
1
+
1
+ + + = 2 con0er(e para 1. #e)onstre isso atra0=s de u) pro(ra)a 7ue ca.cu.a o 0a.or
de S para N ter)os. $nc.ua u)a repetio 7ue 3aa o pro(ra)a ca.cu.ar e )ostrar o 0a.or da s=rie para 1M
+M - ...1' ter)os.
Espe5iCi5a89o ./.+& D Lua7tidade de 5ara5teres
E.aborar u) pro(ra)a 7ue .8 u)a cadeia e u) caractere e in3or)a a 7uantidade de ocorr8ncias do
caractere na cadeia Tno di3erenciar )inDscu.asS)aiDscu.asB iai n iAiU. Por eAe)p.oM se a cadeia 3or
V<ANANA nanicaV e o caractere 3or VaVM o pro(ra)a de0e in3or)ar 5.
Espe5iCi5a89o ./.+' D Estatsti5a de Crase %
E.abore u) pro(ra)a 7ue .8 u)a cadeia de at= +55 caracteres e in3or)aB
2 7uantidade de brancos
8 - REPETO %**
2 7uantidade de pa.a0ras
2 7uantidade de ocorr8ncias da .etra iAi
Espe5iCi5a89o ./.++ D Nu6erador
$)p.e)ente u) pro(ra)a 7ue )ostre na te.a os nD)eros inteiros entre dois nD)eros .idos do tec.adoM
or(ani?ados e) .in,as co) 1' nD)erosB
+1 ++ +- +/ +5 +4 +& +5 +* -'
-1 -+ -- -/...
Espe5iCi5a89o ./.+* D Cara5teres progressi?os
Escre0er u) pro(ra)a 7ue produ?a a sada abaiAo na te.aM para N .in,as e usando u) caractere .ido do
tec.ado Tno eAe)p.oM qU. ApEs )ostrar u)a 0e?M o pro(ra)a repete o processoM sE parando 7uando N 3or
?ero.
&
&&
&&&
&&&&
&&&&&
'...(
Espe5iCi5a89o ./.+, D Cara5teres progressi?os ?&
$de) aci)aM para o 3or)ato abaiAo.
&&
&&&&
&&&&&&
&&&&&&&&
'...(
Espe5iCi5a89o ./.+/ D Cara5teres progressi?os ?'
$bide)B
'...(
&&&&&
&&&
&
Espe5iCi5a89o ./.+. D Tudo Hu7to
9aa u) pro(ra)a 7ue >unte os - eAerccios aci)a. E.e repetida)ente o3erece u) )enu co) a opo '
para ter)inar e outras - op1es 1M +M - cada u)a correspondendo a u) tipo de 3i(uraM a.=) de u)a opo
para .er o caractere e a 7uantidade de .in,as. aso a opo indicada pe.o usu:rio se>a in0:.idaM = )ostrada
u)a )ensa(e) apropriada. E) todos os casos eAceto ' o )enu = o3erecido no0a)ente. Note 7ue as
op1es de 1 a - no e3etua) a .eituraM so)ente o desen,oN por istoM inc.ua u)a 0eri3icao para 7ue o
desen,o no se>a 3eito se o caractere ou a 7uantidade de .in,as no ti0ere) sido .idas.
%*, APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
Espe5iCi5a89o ./.+$ D Na?e espa5ial %
<o.ar u) desen,o de u)a Vna0e espacia.V e) )odo teAto. 9a?er u) pro(ra)a 7ue inicia co) a Vna0eV no
centro da te.a e )o0e2a para a es7uerda ou direita se tec.adas as setasM ter)inando se tec.ado ESAPE. A
na0e p:ra se 3or atin(ido a.(u) .i)ite da te.a.
Espe5iCi5a89o ./.*0 D Na?e espa5ial &
A.terar o pro(ra)a aci)a para per)itir o )o0i)ento ta)b=) para ci)a e para baiAo.
Espe5iCi5a89o ./.*% < Me7u ?ariado
Escre0a u) pro(ra)a 7ue repetida)ente 3a? o se(uinteM atra0=s de u) )enuB
aU %er do tec.ado u)a cadeia de caracteres Tdi(a)osM SUM cu>o ta)an,o ):Ai)o = dec.arado co)o
u)a constante.
bU Restaurar o D.ti)o 0a.or .ido para SM se a.(u) >: 3oi .ido Tdec.are u)a 0ari:0e. para ar)a?enar o
0a.or e sa.0e o 0a.or .ido ne.aU.
cU !ostrar o 0a.or atua. de S e seu ta)an,o.
dU Trocar todos os espaos de S por ,3ensM in3or)ando a 7uantidade de substitui1es 3eitas.
So)ente aceitar esta opo se >: ti0er sido .ida a.(u)a cadeia.
eU Ter)inar.
Espe5iCi5a89o ./.*& D Elei89o
Para co)putar o 0encedor de u)a e.eio de0e ser 3eito u) pro(ra)a. X: - candidatosM e os 0otos dos
e.eitores 3ora) codi3icados da se(uinte 3or)aB
1M + ou -B 0otos para os respecti0os candidatos
'B 0oto e) branco
/B 0oto nu.o
5B 3i) da di(itao
Escre0er o pro(ra)aM 7ue de0e 3ornecer o nD)ero do 0encedor da e.eio Tsupon,a 7ue no pode ,a0er
e)patesUM as 7uantidades de 0otos brancos e nu.os e o nD)ero de e.eitores 7ue co)parecera) Os urnas.
Espe5iCi5a89o ./.*' D Dia da se6a7a
As 7uest1es abaiAo se re3ere) O se(uinte especi3icaoB
"Elaborar um ro$rama !ue reetidamente l um n8mero de 1 a : e in#orma o nome do dia da semana
corresondente, sendo domin$o o dia de n8mero 1. A leitura do n8mero tambm reetida en!uanto o
n8mero estiver #ora da #ai%a vlidaN neste caso mostrada uma mensa$em de erro. As mostrar o nome
do dia, o ro$rama er$unta se o usurio dese<a ver outro dia da semanaN se a resosta #or \2\, os
rocedimentos eseci#icados s"o reetidos, caso contrrio o ro$rama termina.
aU E.abore u)a te.a2eAe)p.o para o pro(ra)aM )ostrando co)o a te.a 3icar: 7uando o usu:rio in3or)ar
u) dia in0:.idoM depois u) dia 0:.ido e e) se(uida u)a resposta iSi.
bU E.abore u)a :r0ore de deciso tendo co)o entrada u) nD)ero de 1 a & e co)o resu.tado o
respecti0o no)e do dia da se)ana.
cU Escre0a u) pro(ra)a Turbo Pasca. para a especi3icao descrita.
8 - REPETO %*/
$.$-$ Ati?idades suple6e7tares
E@er55io ./.*+ D Re?is9o dos 5o6a7dos de repeti89o
o)p.ete os espaosB
aU Cor = u) co)ando de repetio apropriado para u)a 7uantidade \\\\\\\\\\\\\\\\\\\ de
repeti1es e co) deciso no \\\\\\\\\\.
bU E:ile = u) co)ando de repetio apropriado para u)a 7uantidade \\\\\\\\\\\\\\\\\ de
repeti1es e co) deciso no \\\\\\\\\\.
cU repeat = u) co)ando de repetio apropriado para u)a 7uantidade \\\\\\\\\\\\\\\\ de
repeti1es e co) deciso no \\\\\\\\\\.
dU E) todos os co)andos de repetio a deciso de parar o co)ando = to)ada co) base na
a0a.iao de u)a \\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\.
E@er55io ./.** D Re?is9o &
A0a.ie as a3ir)a1es abaiAo e depois assina.e a opo corretaB
$ 2 O co)ando repeat ter)ina 7uando a eApresso apEs o u7til = a0a.iada co)o 0erdadeira.
$$ 2 O co)ando E:ile ter)ina 7uando a eApresso .E(ica = a0a.iada co)o 3a.sa.
$$$ 2 E) u) co)ando Cor...toM se a eApresso de incio 3or )aior do 7ue a eApresso de 3i)M as
instru1es apEs o do no sero eAecutadas.
$@ 2 ^ poss0e. 7ue u) co)ando de repetio nunca atin>a a condio de ter)inao.
aU As a3ir)ati0as $ e $$ so 0erdadeiras.
bU As a3ir)ati0as $M $$ e $$$ so 0erdadeiras.
cU So)ente a a3ir)ati0a $$$ = 3a.sa.
dU Todas as a3ir)ati0as so 0erdadeiras.
Pr;ti5a ./.*, < O=te7do o pre7o6e 5o6 Pos
A.tere o pro(ra)a Obte)Preno)eM do incio do captu.oM de 3or)a a usar Pos e) .u(ar do E:ile para
ac,ar a posio do pri)eiro espao.
Espe5iCi5a89o ./.*/ D CBdigo ou 5ara5tere A#CII
$)p.e)ente u) pro(ra)a 7ue )ostra na te.a os caracteres i)pri)0eis da tabe.a AS$$ Tco)ece do -+M
espaoU.
Espe5iCi5a89o ./.*. D Adi?i7:e %
$)p.e)ente u) pro(ra)a 7ue sorteia u) nD)ero de 1 a 1' e d: ao usu:rio - tentati0as de acert:2.o. A
cada tentati0a erradaM o pro(ra)a in3or)a se o nD)ero a adi0in,ar est: abaiAo ou aci)a. "se u)
co)ando de repetio para o contro.e.
Espe5iCi5a89o ./.*$ D Adi?i7:e &
A.tere o pro(ra)a aci)a para 7ue e.e per)ita ao usu:rio tentar at= acertar.
%*. APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
Espe5iCi5a89o ./.,0 < EtiFuetas
9aa u) pro(ra)a 7ue .8 tr8s .in,as de u)a eti7uetaM a 7uantidade ,ori?onta. e a 7uantidade 0ertica. e
i)pri)e a eti7ueta repetindo2a na p:(ina i)pressa se(undo as 7uantidades .idas.
Espe5iCi5a89o ./.,% D )i7:a reta
$)p.e)ente u) pro(ra)a 7ue d8 u)a inc.inao e desen,a na te.aM ponto a pontoM u)a .in,a reta co) a
inc.inao .ida. ")a reta = de3inida pe.a e7uao J c a% _ bM onde a = a inc.inao.
Espe5iCi5a89o ./.,& D Dese7:o
9aa u) pro(ra)a de desen,oM cu>a te.a te) u) cursor 7ue se )o0i)enta co) as setasM deiAando u)
VrastroV Ta.(u) caractereN se 7uiser so3isticarM pon,a u) ,3en se o )o0i)ento 3or na ,ori?onta. e u)a
barraM se na 0ertica.. Se 7uiser so3isticar )ais aindaM use os caracteres de desen,o de retn(u.os da tabe.a
AS$$U.
Espe5iCi5a89o ./.,' D Cai@a auto6;ti5o
") caiAa auto):tico precisa ca.cu.ar 7uais e 7uantas notas de0e) ser entre(ues ao c.iente para e3etuar a
retirada dese>ada. 9aa u) pro(ra)a co) op1es paraB
Receber notas de 1' e 5' Ta 7uantidade inicia. = ?ero para a)basU
%er o 0a.or da retirada e )ostrar a 7uantidade de notas de 1' e de 5' a sere) entre(ues. Se
a.(u)a das 7uantidades no 3or su3icienteM o pro(ra)a cance.a a operaoM co) u)a
)ensa(e) apropriada. ]1ica ara calcular as !uantidades de notas+ use os oeradores "iv e
o"^
Apresentar re.atErio co) as 7uantidades de notas e 0a.or tota. dispon0e.M e 0a.or tota. de retiradas
e3etuadas.
%*$
$/ !RIAO "E INSTRU4ES E MO"U#ARI5AO
As essoas !ue vencem neste mundo s"o a!uelas !ue rocuram as
circunst@ncias de !ue recisam e, !uando n"o as encontram, as criam.
An;ni)o
| )edida e) 7ue nossos pro(ra)as 0o se tornando )aiores e )ais co)p.eAosM a 7uantidade de
deta.,es pode se tornar intrat:0e.M e o risco de ,a0er erros = )aior. A.=) dissoM )uitas 0e?es eAecuta)os
u) )es)o con>unto de instru1es e) dois ou )ais pontos do pro(ra)a. Seria Eti)o se pud=sse)os
pro(ra)ar e) n0e. )ais a.to do 7ue as instru1es das .in(ua(ens de pro(ra)aoM e ta)b=) poder)os
reeAecutar u)a ao se) precisar reescre0er as instru1es 7ue a i)p.e)enta).
Neste captu.o 0ere)os co)o pode)os estruturar )e.,or nossos pro(ra)asM criando no0as
instru1es na 3or)a de procedi)entos e 3un1es reuti.i?:0eis.
$/$($ I7stru8Aes 5riadas pelo progra6ador
Supon,a 7ue 0oc8 con,ece tr8s receitas de co?in,aM sendo 7ue todas usa) u) )es)o )o.,o O
bo.on,esaM e 0oc8 7uer escre0er estas receitas. o)o 0oc8 3ariaB descre0eria as instru1es do )o.,o e)
)eio Os instru1es de cada receita Tou se>aM - 0e?esU[ Ou descre0eria a receita do )o.,o e) separadoM e
ao descre0er as outras receitas 3orneceria u)a instruo do tipo _3aa o )o.,o O bo.on,esa da p:(. +`[
A se(unda a.ternati0a certa)ente = )ais econ;)icaB 0oc8 escre0eria )enos. Outra 0anta(e) =
7ueM 7uando 0oc8 ti0er u)a id=ia bri.,ante para )e.,orar o )o.,oM para re(istr:2.a 0oc8 3ar: a.tera1es
e) apenas u) .u(arM ao in0=s de -. A.=) dissoM u)a pessoa 7ue >: con,ea a receita do )o.,o ne)
precisa ir O p:(ina +M e a descrio da receita 3ica )ais si)p.es.
Esses princpios se ap.ica) O pro(ra)ao. Supon,a 7ue 0oc8 de0e escre0er u) pro(ra)a 7ue
desen,a - 7uadrados na te.aM e) .ocais 0ariados do pro(ra)aM e 0oc8 disp1e de instru1es 7ue desen,a)
um 7uadrado. Seria su3iciente escre0er - 0e?es a se7F8ncia de instru1es 7ue desen,a u) 7uadrado.
Por=) essa redundncia cria a.(uns incon0enientesB
O teste = trip.icadoN
Se a.(u)a a.terao 3or 3eitaM e.a ter: 7ue ser 3eita e) - .u(aresN
Se 3or necess:rio desen,ar o 7uadrado e) outro pro(ra)aM as respecti0as instru1es de0ero
ser redi(itadas e retestadas.
Para e0itar estes incon0enientesM o Pasca. nos per)ite 3a?er o se(uinteB
odi3icar as instru1es 7ue desen,a) o 7uadradoM co)o u) b.oco e) separadoN
Atribuir u) no)e ao b.oco de instru1esN
%,0
EAecutar as instru1es e desen,ando o 7uadrado escre0endo apenas o no)e dado ao b.ocoM no
ponto do pro(ra)a dese>ado.
$/$)$ Tipos e 5ara5tersti5as de i7stru8Aes
Para entender )e.,or a criao de instru1esM = bo) re0isar co)o e.as pode) ser. Por eAe)p.oM
obser0e a instruo abaiAoB
Writeln('Numero = ', 1);
A instruo Crite.n possuiM a.=) de u) #oe Dnico para identi3ic:2.aM u)a fi#a$i"a"e be)
de3inida e espec3icaM 7ue = apresentar dados na te.a.
")a outra caracterstica = 7ue Crite.n precisa receber dados para cu)prir sua 3ina.idadeM os
c,a)ados "a"os "e e#%ra"a. #e0e)os indicar o 7ue 7uere)os 7ue aparea na te.a. Aci)aM os par)etros
iNu)ero n i e 1 so os dados de entrada. !as no ,: in3or)ao a.(u)a 7ue se precise con,ecer
Tinterna)ente ao pro(ra)aU apEs a eAecuo da instruoM ou "a"os "e sa@"a. uidado para no
con3undirB a sada de Crite.n = na te.aM )as essa instruo no retorna 7ua.7uer in3or)ao 7ue 0: ser
usada dentro do prEprio pro(ra)a.
Associadas O instruo Crite.n ,: outras caractersticas no 0is0eis para nEs. Sendo u)a
instruo de a.to n0e.M ta)b=) possui instru1es e) .in(ua(e) de ):7uina 7ue a i)p.e)enta). Essas
instru1es constitue) u) :$oco "e c9"i!oM 7ue rea.i?a) sua 3ina.idade. A.=) dissoM Crite.n de0e possuir
variveis i#%er#asM necess:rias para a.(u) c:.cu.o inter)edi:rioM co)o por eAe)p.oM .in,a e co.una da
te.a.
R: a 3uno SinTZU te) a 3ina.idade de ca.cu.ar o seno de u) nD)ero rea.. Te) co)o dado de
entrada o nD)eroM e co)o sada Tresu.tadoU o seno do nD)ero. Seu b.oco de cEdi(o e suas 0ari:0eis
internas ta)b=) 3ica) escondidas. Obser0e co)o o resu.tado aparece no pro(ra)aB no .u(ar da c,a)ada
da 3uno..
A instruo Crite.n = u) co)ando diretoM i)perati0oM 7ue representa u)a ao a ser eAecutadaB =
c,a)ado pro5edi6e7to. A instruo Sin = u)a Cu789oB retorna u) 0a.or co)o resu.tado de sua
eAecuoM podendo portanto ser usada e) eApress1es. Crite.n e Sin soM respecti0a)enteM procedi)ento2
padro e 3uno2padro do Pasca.M por7ue so prede3inidas na .in(ua(e).
As instru1es 7ue pode)os criar pode) ter a 3or)a de procedi)ento ou de 3uno. Suas
estruturas so be) se)e.,antesM eAceto 7ue para u)a 3uno de0e)os di?er o tipo de 0a.or 7ue e.a
retornar: e e) pe.o )enos u) ponto do seu b.oco de cEdi(o de0e)os atribuir u) 0a.or a ser retornado.
#e 3or)a se)e.,anteM ao criar)os instru1esM estas teroB
uma #inalidade esec'#ica
um nome
um tio Crocedimento ou #un("oD
dados de entrada
dados de sa'da
um bloco de cdi$o
variveis internas
9 - CRAO DE NSTRUES E MODULARZAO %,%
Assi) co)o a eAecuo de u) pro(ra)a consiste e) eAecutar os co)andos contidos no seu
b.oco de cEdi(o principa.M a eAecuo de u)a instruo criada pe.o pro(ra)ador consiste na eAecuo
dos co)andos do seu b.oco de cEdi(o.
")a (rande 0anta(e) de criar u)a no0a instruo = esconder seu b.oco de cEdi(o e suas
0ari:0eis internas do resto do pro(ra)a. ")a 0e? testadaM pode)os us:2.a co)o u)a instruo 7ua.7uer
da .in(ua(e)M con,ecendo apenas seu no)e e seus dados de entrada e sadaM ou se>aM sua inter#ace.
Assi)M e0ita)os a repetio de instru1es eM encapsu.ando os deta.,es de i)p.e)entao de cada u)aM
per)iti)os 7ue possa) ser i)p.e)entadas e testadas u)a de cada 0e?.
E@er55io ...% < Re5o7:e5e7do pro5edi6e7to e Cu78Aes
o) re.ao Os instru1es do Turbo Pasca. abaiAoM )ar7ue co) u) P os procedi)entos e co) u) 9 as
3un1es Tretorna) u) 0a.orUB
T U ReaddeY
T U .rScr
T U Crite.n
T U C,erec
T U Trunc
$/$*$ De5lara7do pro5edi6e7tos
Obser0e o pro(ra)a a se(uir.
PROGRAM QuadradoEmXY_v1;
uses CRT;
var Continua : char;
L, C, I : byte;
begin
repeat
ClrScr;
Write('Digite a linha: '); Readln(L);
Write('Digite a coluna: '); Readln(C);
GotoXY(C, L); Write('XXXXX');
for I := 1 to 3 do
begin
GotoXY(C, L+I);
Write('X X');
end;
GotoXY(C, L+4); Write('XXXXX');
GotoXY(1, L+6);
Write('Deseja ver outro quadrado?');
Continua := Upcase(Readkey)
)ntil Continua = 'N';
end.
Note 7ue no pro(ra)a ocorre 0:rias 0e?es a se7F8ncia HotoZcSCrite. Nestes casosM ao in0=s de
3icar repetindo instru1es 0:rias 0e?esM pode)os dec.arar u)a no0a instruo 7ue 3aa o 7ue 7uere)os.
<asta ento c,a)ar a instruo 7uando necess:rio.
Para o caso HotoZcSCriteM pode)os dec.arar u) procedi)entoM >: 7ue apenas u)a ao =
eAecutada e nen,u) 0a.or = produ?ido. @e>a a estrutura de u) procedi)ento no 7uadro. PROCEDURE
= u)a pa.a0ra reser0ada 7ue indica 7ue 0oc8 est: dec.arando u) procedi)ento.
GotoXY, Write;
GotoXY, Write;
GotoXY, Write;
$$$
%,& APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
@oc8 pode notar 7ueM assi) co)o o pro(ra)a te) u) b.oco de cEdi(oM cada procedi)ento
ta)b=) te) o seu. O pri)eiro = c,a)ado rincial para distin(u2.o dos outros. A dec.arao do
procedi)ento de0e 0ir antes do b.oco de cEdi(o principa..
")a 0e? dec.arado o procedi)entoM para 7ue se>a eAecutado de0e2se cham;lo, isto =M escre0er
seu no)e no ponto ade7uado do pro(ra)aM in3or)ando entre par8nteses os 0a.ores a sere) passados aos
par)etros. Estes pode) ser constantesM 0ari:0eis ou ainda eApress1es. Neste caso a eApresso = a0a.iada
antes da c,a)adaN se)pre c,e(a) 0a.ores constantes ao procedi)ento.
O padro FotoXY[Rrite = u) Eti)o candidato a ser i)p.e)entado por u) procedi)ento. @e>a a
de3inio passo a passoB
*inalidade do rocedimentoB )ostrar u) teAto na te.a e) u)a .in,a e u)a co.una.
Nome do rocedimentoB CriteZc.
1ados necessriosB a co.unaM a .in,a e o teAtoM dec.arados co)o par)etros.
,omandosB HotoZc se(uido de Crite.
@e>a o procedi)ento co)p.eto e sua .oca.i?ao dentro do pro(ra)aB
PROGRAM {...}
uses {...}
PRO%E*)RE WriteXY (Col, Lin : byte; Texto : string);
{mostra texto na tela na coluna e lin#a rece8idas}
begin
GotoXY (Col, Lin);
Write(Texto);
end;
var {...}
begin {8loco de cOdigo principal}
{...}
end.
PRO%E*)RE NomeDoProcedimento(Var1 : tipo1; Var2 : tipo2...);
{descrio da finalidade do procedimento}
var
begin

end;
Aqui voc declara as
variveis locais:
necessrias dentro do
procedimento e que no
so para receber dados
$$$
Aqui voc coloca os
comandos que executam
o que foi especificado
para o procedimento
Aqui voc declara o nome do
procedimento e os
parmetros: variveis que
vo receber dados quando o
procedimento for chamado
$$$
9 - CRAO DE NSTRUES E MODULARZAO %,'
")a 0e? dec.arada a no0a instruoM pode)os substituir todas as c,a)adas a FotoXY[Rrite por
u)a c,a)ada ao procedi)ento RriteXYM sendo 7ue a cada c,a)ada passa)os 0a.ores di3erentes
con3or)e a necessidade. Assi)M ao in0=s de escre0er)os
begin
...
GotoXY(C, L); Write(Texto);
...
end.
escre0e)os
begin
...
WriteXY(C, L, Texto);
...
end.
Na chamada de um rocedimento com ar@metros, estes devem ser
obri(atoria)ente #ornecidos na chamada, na mesma se!Kncia de sua
declara("o, e os ar@metros e#etivos devem ser do mesmo tio ou de um
tio comat'vel com o ar@metro #ormal corresondente.
Ta)b=) 0ari:0eis e eApress1es pode) ser usadas co)o par)etros e3eti0os. Se o ar(u)ento 3or
u)a 0ari:0e.M seu 0a.or = buscado na )e)Eria para ser passadoN se 3or u)a eApressoM esta pri)eiro =
a0a.iada e o 0a.or resu.tante = 7ue = passado ao procedi)ento. Se)pre c,e(ar: ao par)etro u) 0a.orN
por isso esse tipo de par)etro = c,a)ado par)etro or valor.
@ari:0eis .ocais pode) ter o )es)o no)e 7ue 0ari:0eis (.obaisN neste caso estas no estaro
0is0eisM isto =M no pode) ser re3erenciadas no b.oco de cEdi(o do procedi)entoM en7uanto este esti0er
ati0o.
.m rocedimento ode ter tambm se()es tJe e const.
@e>a no eAe)p.o a se(uir u)a se(unda 0erso do pro(ra)a do 7uadradoM )odi3icada para usar a
no0a instruoB
PROGRAM QuadradoEmXY_v2;
{Eesen#a um quadrado usando procedimento}
%,+ APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
uses CRT;
PRO%E*)RE WriteXY (Col, Lin : byte; Texto : string);
{mostra texto na tela na coluna e lin#a rece8idas}
begin
GotoXY (Col, Lin);
Write(Texto);
end;
var L, C, I : byte; {'ari)'eis glo8ais}
Continua : char;
begin {8loco de cOdigo principal}
repeat
ClrScr;
Write('Digite a coluna: '); Readln(C);
Write('Digite a linha: '); Readln(L);
{desen#a o quadrado}
WriteXY(C, L, 'XXXXX'); {c#amada do proced.}
for I := 1 to 3 do
WriteXY(C, L+I, 'X X');
WriteXY(C, L+4,'XXXXX');
WriteXY(1, L+6, 'Deseja ver outro quadrado?');
Continua := Upcase(Readkey)
until Continua = 'N';
end.
Note no pro(ra)a aci)aB
- A dec.arao do procedi)ento 0e) antes de sua c,a)ada.
- O procedi)ento te) u) no)eM e esse no)e = usado para ati0:2.o onde dese>ado.
- Os par)etros so dec.arados da )es)a 3or)a 7ue 0ari:0eis.
- Os par)etros e3eti0os Tpassados na c,a)adaU pode) ser constantesM 0ari:0eis ou
eApress1esM e de0e) estar na mesma ordem e) 7ue 3ora) dec.arados.
- Todo procedi)ento te) seu prEprio b.oco de cEdi(oM 7ue ser: eAecutado 7uando o
procedi)ento 3or c,a)ado.
- CriteZc = independente de dec.ara1es eAternas a e.e prEprio. Se 0oc8 7uiser reuti.i?:2.oM
basta copi:2.o para o outro pro(ra)aM e ne) precisa test:2.o no0a)ente.
Pr;ti5a ...& < Co6o Cu75io7a6 pro5edi6e7tos
1. #i(ite o pro(ra)a IuadradoE)Zc\0+.
+. EAecute2o co) o debu((er at= eAecutar a pri)eira .in,a co) CriteZc. ontinue co) 9& e 0e>a co)o
o 3.uAo de eAecuo des0ia para as instru1es do procedi)ento a cada 0e? 7ue este = c,a)ado.
-. No0a)ente eAecute o pro(ra)a co) o debu((er. "se a.ternada)ente 9& e 95 7uando 3or eAecutada a
c,a)ada do procedi)ento CriteZc. Iua. a di3erena[ "se 95 7uando 0oc8 no 7uiser 7ue o 3.uAo
de eAecuo si(a para dentro do b.oco de cEdi(o do procedi)ento. o) 95 todos os co)andos do
procedi)ento so eAecutados de u)a 0e?.
Pr;ti5a ...' D Passage6 dos ?alores para o pro5edi6e7to
EAecute )ais u)a 0e? o pro(ra)a aci)a co) o debu((erM desta 0e? para obser0ar as 0ari:0eis. $nsira na
>ane.a Catc, as 0ari:0eis %M M o.M %in e TeAto. @: eAecutando o pro(ra)a en7uanto obser0a os seus
0a.ores. Note 7ue o debu((er sE 0ai recon,ecer os par)etros do procedi)ento en7uanto este esti0er
ati0o. Preste ateno e) particu.ar ao 3ato de 7ue os par)etros assu)e) os 0a.ores passados a cada
9 - CRAO DE NSTRUES E MODULARZAO %,*
c,a)ada. Se nesta ,ou0er u)a 0ari:0e. ou eApressoM o 0a.or = buscado ou ca.cu.ado antes da ati0ao do
procedi)ento.
Pr;ti5a ...+ < Erros 7a si7ta@e de pro5edi6e7tos
No pro(ra)a Iuadradoe)Zc\0+M 3a)i.iari?e2se co) a.(uns erros re.acionados a procedi)entosM
introdu?indo os erros abaiAoM u) de cada 0e?M e tentando co)pi.ar Tre(istre o erro e) cada casoUB
aU retire a pa.a0ra PROE#"RE
bU substitua PROE#"RE por PRO
cU retire o par8ntese inicia. do cabea.,o do procedi)ento
dU retire o par8ntese 3ina. do cabea.,o
eU retire u) ponto2e20r(u.a do cabea.,o
3U retire o =egi7 do b.oco de cEdi(o do procedi)ento
(U ide)M para o e7d
,U retire o ponto2e20r(u.a apEs o e7d do procedi)ento.
Pr;ti5a ...* < Go to 5ursor
|s 0e?es 0oc8 7uer testar apenas u) procedi)ento do pro(ra)aN o debu((er 3aci.ita isso. Posicione o
cursor dentro do procedi)ento do pro(ra)a aci)a e tec.e 9/ THo to cursorU. O pro(ra)a ser: eAecutado
de u)a 0e?M at= parar no cursor. @oc8 pode usar este recurso a 7ua.7uer )o)ento e) u) teste co) o
debu((er.
Pr;ti5a ..., < Da e@istG75ia dos par]6etros
EAecute o pro(ra)a IuadradoE)Zc\0+ no debu((erM )onitorando os 0a.ores das 0ari:0eisM e respondaB
aU As 0ari:0eis dos par)etros eAiste) antes da sua ati0ao TVc,a)adaVU[ Iuando co)ea) a ser
recon,ecidos pe.o depurador[
bU $de)M depois da ati0ao[ Por7ue[
Pr;ti5a .../ < Mais erros
"ti.i?ando o )es)o pro(ra)a aci)aM 0eri3i7ue e indi7ue a )ensa(e) de erro ocorrida ao tentar co)pi.:2
.o nas se(uintes situa1es TapEs cada u)aM retorne O sintaAe corretaUB
aU retire de u)a c,a)ada do procedi)ento CriteZc a.(u) par)etro Tpopu.ar)ente Ves7uecer de
passar o par)etroVU.
bU retire da dec.arao do procedi)ento CriteZc a.(u) par)etro.
Espe5iCi5a89o .... < Luadrado 5o6 5rti5a
rie u)a 0erso do pro(ra)a do 7uadrado 7ue i)pea 0a.ores de .in,a e co.una 3ora da 3aiAa 0:.ida e
7ue repita tudoM sE parando 7uando os 0a.ores de .in,a e co.una 3ore) a)bos ?ero.
E@e6plo ...$ < Luadrado 5o6 pro5edi6e7to
Pode)os usar procedi)entos para or(ani?ar )e.,or u) pro(ra)a. Iue ta. u) procedi)ento para
desen,ar o 7uadrado[ Pri)eiroM a 3ina.idadeB desen,ar u) 7uadrado co) Z na te.a e) u)a .in,a e co.una
especi3icadas. #epoisM o no)eB IuadradoZc. #ados necess:riosB a .in,a e a co.una. o) essas
in3or)a1es >: pode)os escre0er o cabea.,oB
PROCEDURE IuadradoZcTZM cB bYteUN
%,, APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
O b.oco de cEdi(o de0e conter as instru1es necess:rias para desen,ar o 7uadradoM 7ue so se)e.,antes
Os usadas aci)a.
EAecute o pro(ra)a abaiAoM >: co) o procedi)ento co)p.etoM usando o debu((er e obser0ando os
0a.ores dos par)etros e da 0ari:0e. .oca..
PROGRAM QuadradoEmXY_v3;
uses CRT;
PRO%E*)RE WriteXY (Col, Lin : byte; Texto : string);
{mostra texto na tela na coluna e lin#a rece8idas}
begin
GotoXY (Col, Lin);
Write(Texto);
end;
PRO%E*)RE QuadradoXY(C, L : byte);
{3ostra quadrado 0x0 feito com 4 em lin#a e coluna da tela}
var I : byte; {varivel local}
begin
WriteXY(C, L, 'XXXXX');
for I := 1 to 3 do
WriteXY(C, L+I, 'X X');
WriteXY(C, L+4,'XXXXX');
end;
var L, C : byte;
Continua : char;
begin
repeat
ClrScr;
Write('Digite a coluna: '); Readln(C);
Write('Digite a linha: '); Readln(L);
QuadradoXY(C, L);
WriteXY(1, L+6, 'Deseja ver outro quadrado?');
Continua := Upcase(Readkey)
until Continua = 'N';
end.
#o=re pro5edi6e7tos2
- @oc8 pode dec.arar 7uantos procedi)entos 7uiserN
- Procedi)entos pode) ter 0ari:0eis internas T.ocaisUM 7ueM co)o os par)etrosM sE eAiste)
en7uanto o procedi)ento est: ati0o. Ta)b=) pode) ter suas prEprias constantes e tJes.
- ") procedi)ento pode c,a)ar outro procedi)entoN
- Procedi)entos pode) ter no)es de par)etros i(uais aos de outros procedi)entos ou a
0ari:0eis (.obaisN
- @e>a co)o o pro(ra)a principa. aci)a 3icou )ais si)p.es e co)o 0oc8 poder: usar o
procedi)ento do 7uadrado e) outro pro(ra)a rapida)enteM se) necessidade de test:2.o
no0a)ente.
Pr;ti5a ...%0 < Luadrado 5o6 FualFuer 5ara5tere
A.tere o procedi)ento IuadradoXY para 7ue desen,e o 7uadrado co) 7ua.7uer caractere. $nc.ua o
caractere co)o u) par)etro tipo c,arM e na c,a)ada passe o iZi. Teste co) pe.o )enos dois caracteres
di3erentes.
9 - CRAO DE NSTRUES E MODULARZAO %,/
Pr;ti5a ...%% < (ri75a7do 5o6 so7s
aU #i(ite o pro(ra)a 2om=ariavelM abaiAo. Teste para 0:rias 3aiAas de duraoB pe7uena T5UM )=dia
T+'M /'U e .on(a T1''M -''U.
PROGRAM SomVariavel;
{&mite sons de /!! a @!!! T(, com durao em milissegundos lida e 'ariao de
/! em /!%}
uses CRT;
var Dur, Freq : word; {durao e freqP<ncia}
begin
ClrScr;
repeat
Write ('Entre durao: ');
Readln(Dur);
Freq := 100;
repeat
Sound(Freq);
Delay(Dur);
NoSound;
{incrementa em /!U a freqP<ncia}
Freq := Trunc(Freq * 1.1)
until Freq > 8000;
until Dur = 0;
end.
bU 9aa u) procedi)ento 7ue e)ite u) so) e) u)a 3re7F8ncia e durao in3or)adas co)o
par)etros. O seu b.oco de cEdi(o de0er: portanto conter as instru1es 2ound[1elaJ[No2ound.
9aa u)a no0a 0erso do pro(ra)a So)@aria0e.M trocando a c,a)ada a essas instru1es pe.a
c,a)ada ao no0o procedi)ento.
cU A(ora crie u) procedi)ento 7ue recebe 3re7F8ncias inicia. e 3ina. e duraoM e e)ita os sons da
)es)a 3or)a 7ue o pro(ra)a 2om=ariavel. Na c,a)adaM passe os )es)os 0a.ores atuaisB 1''M
5''' e a 0ari:0e. da durao. O no0o procedi)ento c,a)a o anterior para e)itir cada so).
dU 9ina.)enteM 3aa o pro(ra)a .er do tec.ado ta)b=) os 0a.ores das 3re7F8ncias e passar as
respecti0as 0ari:0eis co)o par)etros. Acrescente u) $9 para 7ue o procedi)ento principa. no
se>a c,a)ado se a durao .ida 3or ?ero.
$/$+$ Par]6etros por reCerG75ia
Os par)etros 7ue 0i)os aci)a representa) dados de entrada para os procedi)entos. Iua.7uer
7ue se>a o par)etro e3eti0o passado na c,a)ada T0ari:0e.M constante ou eApressoUM o procedi)ento
receber: u) 0a.or na c,a)ada.
^ poss0e.M entretantoM dec.arar)os par)etros 7ue sir0a) tanto para entrada 7uanto para sada de
dados Tresu.tadosU. Para issoM inseri)os na dec.araoM antes do identi3icador do par)etroM a pa.a0ra ?ar.
Se o par)etro = precedido por ?arM di?e)os 7ue e.e = u) par]6etro por reCerG75ia. O ar(u)entoM ou
par)etro e3eti0oM de u) par)etro por re3er8ncia no pode ser u) 0a.orN obri$atoriamente de0er: ser
u)a varive$. No incio da eAecuo do procedi)entoM o 0a.or desta 0ari:0e. = passado para o par)etroN
ao 3ina.M o 0a.or do par)etro = atribudo O 0ari:0e.. #esta 3or)aM te)os u) )ecanis)o e) 7ue o
procedi)ento poder: retornar dados e resu.tados 7ue produ?a interna)ente.
Note a di3erena na dec.arao e na c,a)adaB
%,. APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
PRO%E*)RE NomeProc (Param : byte); {Caram de entrada}
,hamadas oss'veis+
NomeProc(3);
NomeProc(N);
NomeProc(N+5);
PROCEDURE NomeProc (var Param : byte); {Caram de entrada e sada}
,hamada oss'vel Csemre deve ser uma varivelD+
NomeProc(N);
No pro(ra)a a se(uirM o procedi)ento possui tr8s par)etros por 0a.or e dois por re3er8ncia.
@e>a)os co)o = a eAecuo.
Pr;ti5a ...%& < Par]6etros por reCerG75ia
EAecute o pro(ra)a abaiAo co) o debu((erM obser0ando os 0a.ores dos par)etros na >ane.a Catc,es.
Aco)pan,e o 7ue acontece no roteiro a se(uir.
PROGRAM EqSegundoGrau;
var C1, C2, C3 : integer; {coeficientes}
R1, R2 : real; {ra(es}
PRO%E*)RE EqSegGrau(a, b, c : integer; var Raiz1, Raiz2: real );
{Dalcula ra(es da equao do segundo grau
com coeficientes a, 8 e c }
var Delta : real;
begin
Delta := b*b - 4*a*c;
Raiz1 := (-b + SqRt(Delta) )/2*a;
Raiz2 := (-b - SqRt(Delta) )/2*a;
end;
begin
Write('Entre coeficiente inteiro a: '); Readln(C1);
Write('Entre coeficiente inteiro b: '); Readln(C2);
Write('Entre coeficiente inteiro c: '); Readln(C3);
EqSegGrau(C1, C2, C3, R1, R2);
Writeln('Primeira raiz ', R1:0:2);
Writeln('Segunda raiz ', R2:0:2);
end.
^ reser0ada )e)Eria para as 0ari:0eis (.obais 1M +M -M R1 e R+
ApEs os Crite.n e Read.nM = eAecutada a c,a)ada ao procedi)ento E7Se(Hrau. Supon,a 7ue
3ora) .idos do tec.ado os 0a.ores 1M - e + para as 0ari:0eis 1M + e -M respecti0a)ente.
O 3.uAo de eAecuo = des0iado para o procedi)ento E7Se(Hrau
So criadas na )e)Eria 0ari:0eis correspondentes aos par)etros aM bM cM Rai?1 e Rai?+
Os 0a.ores das 0ari:0eis passadas co)o ar(u)entos so recuperados da )e)Eria e atribudos
aos par)etrosM na )es)a se7F8ncia e) 7ue 3ora) 3ornecidos. ApEsM portantoM os 0a.ores das
0ari:0eis seroB
9 - CRAO DE NSTRUES E MODULARZAO %,$
a n 1
b n -
c n +
Rai?1 n [
Rai?+ n [
Note 7ueM co)o as 0ari:0eis R1 e R+ no 3ora) inicia.i?adasM no pode)os ter certe?a
de seu 0a.orM o )es)o ocorrendo co) os par)etros correspondentes Rai?1 e Rai?+M 7ue
recebera) os 0a.ores de R1 e R+.
^ eAecutado o b.oco de cEdi(o do procedi)entoM apEs o 7ue te)osB
Rai?1 n 21
Rai?+ n 2+
O 0a.or do par)etro Rai?1 = atribudo O 0ari:0e. R1M e o 0a.or de Rai?+ = atribudo a R+. $sto
= auto):tico atra0=s de instru1es co.ocadas pe.o co)pi.ador.
As 0ari:0eis dos par)etros so e.i)inadasM .iberando a )e)Eria 7ue usa0a)
O 3.uAo de eAecuo retorna para a instruo 7ue se(ue a c,a)ada ao procedi)entoM
aparecendo na te.a os 0a.ores de R1 e R+M respecti0a)ente 21 e 2+.
o)pareB se in0ert8sse)os na c,a)ada os ar(u)entos R1 e R+M co)o e)
EqSegGrau(C1, C2, C3, R2, R1);
a pri)eira rai? a ser )ostrada na te.a seria 2+.
@oc8 de0e ter percebido 7ueM 7uando o procedi)ento = ati0adoM = estabe.ecida u)a li$a("o da
0ari:0e. 7ue representa o par)etro e3eti0o To da c,a)adaU co) o respecti0o par)etro 3or)a. To
dec.aradoU. Na pr:ticaM = u) )es)o endereo de )e)Eria re3erenciado atra0=s de dois no)es distintosB
u) no)e para o pro(ra)a principa.M outro para o procedi)ento. ada a.terao e3etuada no par)etro
3or)a. pro0ocar: u)a a.terao na 0ari:0e. passada 7ueM ao 3ina. do procedi)entoM ter: o )es)o 0a.or
3ina. 7ue o par)etro 3or)a. correspondente.
E@e6plo ...%' D Tro5a ?ar
Si(a o pro(ra)a abaiAoM 7ue = eAecutado assi)B
ApEs as + pri)eiras instru1esM te)os Z n 1 e c n **. A c,a)ada ao procedi)ento Troca@ar
co) os par)etros Z e c criar: u)a re.ao de @1 para Z e de @+ para c. O procedi)ento Troca@ar
inicia ento co) @1 n 1 e @+ n **. A eAecuo das instru1es do procedi)ento 3a? AuA n 1M @1 n ** e
3ina.)ente @+ n 1. Ao t=r)ino da eAecuo do procedi)entoM as 0ari:0eis Z e c cont=) os 0a.ores de
@1 e @+M respecti0a)ente. Assi)M a instruo Crite.n )ostrar: 7ue Z n ** e c n 1.
Se no ,ou0esse a dec.arao ?ar dos par)etrosM os 0a.ores 3inais de @1 e @+ seria) os
)es)osM por=) Z e c )anteria) os 0a.ores ori(inais.
%/0 APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
PROGRAM Troca;
{&xemplo de parVmetros por refer<ncia}
var X, Y : integer;
PRO%E*)RE TrocaVar (var V1, V2 : integer);
{5roca os 'alores de duas 'ari)'eis}
var Aux : integer;
begin
Aux := V1;
V1 := V2;
V2 := Aux;
end;
begin
X := 1; Y := 99;
TrocaVar (X, Y);
Writeln('X = ', X, 'e Y = ', Y);
end.
Resu6i7do par]6etros
Par)etros por va$or so dec.arados sem a pa.a0ra ?arM e representa) dados de entrada de u)
procedi)ento. Para estes pode) ser usados co)o par)etros e3eti0osB 0ari:0eisM constantes e
eApress1es. O procedi)ento c,a)ado recebe valores. Se o ar(u)ento = u)a 0ari:0e.M recebe o 0a.or
desta no )o)ento da eAecuoN se eApressoM o valor resultante da a0a.iao da eApresso.
Par)etros por refer#cia so precedidos da pa.a0ra ?ar e constitue) dados de entrada e sadaM ou
so)ente de sada. Na c,a)ada so)ente variveis pode) constituir2se nos par)etros e3eti0os
correspondentes. Ao 3ina. da eAecuo do procedi)entoM o par)etro e3eti0o conter: o )es)o 0a.or
7ue o par)etro 3or)a. correspondente.
E@er55io ...%+ < Re?is9o de par]6etros por reCerG75ia
o)p.ete os espaosB
aU Par)etros por re3er8ncia ser0e) tanto para \\\\\\\\\\\\\\\\\ 7uanto para \\\\\\\\\\\\\\
de dados e) u) procedi)ento.
bU Para dec.arar 7ue u) par)etro = por re3er8ncia de0e)os preceder seu no)e co) \\\\\\.
cU O ar(u)ento correspondente a u) par)etro por re3er8ncia de0e necessaria)ente ser u)a
\\\\\\\\\\\\\\\\\\ .
dU Ao 3ina. da eAecuo de u) procedi)entoM o 0a.or de u) par)etro por re3er8ncia = passado para
a \\\\\\\\\\\\\\\ passada co)o ar(u)ento.
Pr;ti5a ...%* D Tro5a
EAecute o pro(ra)a Troca para responderB as 0ari:0eis 7ue recebe) os 0a.ores do procedi)ento
Tpar)etros e3eti0osU so atua.i?adas ao 3ina. de sua eAecuo ou durante esta[ EAp.i7ue.
Pr;ti5a ...%, < Erros e6 par]6etros por reCerG75ia
No pro(ra)a E7Se(undoHrauM respondaB
aU O 7ue ocorrer: se a pa.a0ra ?ar 3or retirada da dec.arao dos par)etros[
bU O 7ue ocorrer: se a orde) dos par)etros Rai?1 e Rai?+ 3or in0ertida TRai?+M Rai?1U[
9 - CRAO DE NSTRUES E MODULARZAO %/%
$/$,$ 4u78Aes de5laradas pelo progra6ador
Assi) co)o procedi)entosM pode)os criar 3un1esM se(undo u)a estrutura si)i.ar. 9un1es
de3inidas pe.o pro(ra)ador so se)e.,antes aos procedi)entos nos se(uintes aspectosB
constituem;se em um bloco de instru()es com um nome !ue as identi#icaN
odem ossuir se("o local de dadosN
odem receber ar@metros or valor ou or re#ernciaN
s"o e%ecutadas somente !uando chamadas.
As di3erenasB
retornam um valor ou resultado, cu<o tio deve ser eseci#icado na declara("o da #un("oN
no bloco de cdi$o da #un("o, devemos atribuir um valor a ser retornadoN
somente odem ser chamadas em e%ress)es.
Pr;ti5a ...%/ < 4u789o
EAecute o pro(ra)a a se(uir e con3ira co)o = eAecutadoB a c,a)ada da 3unoM a atribuio do 0a.or de
retornoM o retorno do 0a.or da 3uno.
PROGRAM CalculaFatorial;
{calcula o fatorial de um nmero lido, usando funo}
var N : byte;
+)!%T,O! Fatorial( Num : byte ) : longint;
{retorna o fatorial para .um L !}
var I : byte;
F : longint;
begin
F := 1;
for I := 2 to Num do
F := F*I
Fatorial := F;
end;
begin
Writeln('Entre um nmero inteiro:');
Readln(N);
Writeln('O fatorial de ', N, ' ', Fatorial(N) );
end.
O pro(ra)a aci)a = eAecutado na se(uinte se7F8nciaB
^ reser0ada )e)Eria para a 0ari:0e. (.oba. NN
So eAecutados o Crite.n e o Read.n. Supon,a 7ue 3oi .ido do tec.ado o 0a.or 5 para NN
^ eAecutada a se(unda instruo Crite.nM )ostrando na te.a _O 3atoria. de 5 = iM e antes 7ue
se>a conc.udaM o 3.uAo de eAecuo = des0iado para a 3uno 9atoria.N
^ criada na )e)Eria u)a 0ari:0e. correspondente ao par)etro NN
Declarao do
tipo de valor a
ser retornado
Atribuio do
valor de retorno
Chamada (o
valor retornado
aparecer aqui)
%/& APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
O 0a.or da 0ari:0e. (.oba. N passada co)o ar(u)ento = recuperado da )e)Eria e atribudo ao
par)etro de )es)o no)eN
^ eAecutado o b.oco de cEdi(o da 3unoM 7ue ca.cu.a 9 n 1+'N
^ deter)inado o 0a.or de retorno da 3uno T1+'UN
As 0ari:0eis .ocais e o par)etro so e.i)inadosM e = .iberada a )e)Eria 7ue usa0a)N
^ retornado o 0a.or 1+' para a instruo Crite.nM 7ue o )ostra na te.a.
A atribui("o do valor de retorno de uma #un("o ode ser #eita mais de
uma vez, e sua ausncia n"o reresenta um erro de sinta%e, mas nesse
caso o valor retornado imrevis'vel.
Pr;ti5a ...%. D Cal5ula4atorial
EAp.ore u) pouco )ais o pro(ra)a a.cu.a9atoria.B
aU EAecute2o de u)a 0e?M ca.cu.ando o 3atoria. de 11.
bU EAecute2o a(ora usando o debu((erM 3a?endo2o )ostrar a eAecuo do b.oco de cEdi(o da 3uno
e )onitorando o 0a.or do par)etro e das 0ari:0eis .ocais.
cU A(ora retire ou co)entari?e a atribuio do 0a.or de retorno da 3uno T9atoria. Bn 9U e reeAecute
o pro(ra)a O 7ue aconteceu[
E@e6plo ...%$ < 4u78Aes
@e>a outros eAe)p.os de 3un1es si)p.es Tapenas as dec.ara1esUB
+)!%T,O! AlunoPassou ( Nota : real) : boolean;
{retorna 5rue se a nota #a8ilita a apro'ao}
begin
AlunoPassou := (Nota >=5)
end;
+)!%T,O! Dia ( Data : string) : byte;
{retorna dia de uma data no formato EE6336JJJJ}
begin
Dia := Copy(Data, 1, 2);
end;
*un()es criadas elo ro$ramador, da mesma #orma !ue as #un()es
adr"o, odem ser chamadas em !ual!uer lu$ar em !ue ossa ocorrer
uma e%ress"o, desde !ue o tio de valor retornado se<a comat'vel com
a e%ress"o. =oc ode chamar uma #un("o inteira em uma e%ress"o
real, mas n"o ode chamar em tal e%ress"o uma #un("o !ue retorne um
valor booleano ou strin$.
>iicamente voc usar #un()es !uando houver um s valor retornado
ela instru("o. 2e houver mais de um, ter !ue criar um rocedimento.
9 - CRAO DE NSTRUES E MODULARZAO %/'
Pr;ti5a ...&0 < Co7?ers9o para 6aiZs5ulas
A 3uno abaiAo recebe u)a cadeia e retorna2a con0ertida para )aiDscu.asB u) apontador 0arre a cadeia
do pri)eiro ao D.ti)o caractereN a cada posio na cadeiaM obte)os o caractereM con0erte)os o caractere
para )aiDscu.a e ar)a?ena)os o resu.tado na prEpria posio do caractere.
+)!%T,O! Maiusc(S : string) : string;
{con'erte uma cadeia de caracteres para maisculas}
var I : byte;
begin
for I := 1 to Length(S) do
S[I] := Upcase(S[I]);
Maiusc := S;
end;
E.abore u) pe7ueno pro(ra)a para testar a 3uno.
Pr;ti5a ...&% < I7?erteCadeia
aU E.aborar u) pro(ra)a co)p.eto e testar a 3uno $n0erteadeiaM abaiAo.
bU A.tere a 3uno para usar o co)ando Cor.
+)!%T,O! InverteCadeia (Cad : string) : string;
var Ap : byte;
CadInv : string;
begin
CadInv := '';
Ap := Length(Cad);
hile Ap > 1 do
begin
CadInv := CadInv + Cad[Ap];
Ap := Ap + 1
end;
InverteCadeia := CadInv;
end;
E@er55io ...&& < Co7?ers9o pro5edi6e7toVCu789o
on0erta os cabea.,os abaiAo e) cabea.,o de 3uno Tse procedi)entoU ou e) cabea.,o de
procedi)ento Tse 3unoUM )antendo os )es)os dados de entrada e sada.
aU PROCEDURE a.cu.a#i(itoP9 TP9 B strin(N ?ar #i(ito B inte(erUN
bU 4UNCTION Pes7uisaT No)e B strin(U B boo.eanN
cU PROCEDURE a.cu.a!edia TN1M N+ B rea.N ?ar !edia B rea.U
dU 4UNCTION $n0ertead T adeia B strin( U B strin(N
E@er55io ...&' < 4atorial estourado
O 7ue 0oc8 ac,a 7ue poderia 3a?er para o caso e) 7ue o 3atoria.M se ca.cu.adoM 0ai estourar a capacidade
do tipo de dado adotado[
%/+ APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
$/$-$ I7depe7dG75ia e reusa=ilidade
A 3or)a 7ue 0oc8 d: Os instru1es 7ue cria a3eta pro3unda)ente o seu rendi)ento co)o
pro(ra)ador. Por eAe)p.oM 0oc8 poderia pro(ra)ar u)a 3uno 7ue ca.cu.a o 3atoria. da 3or)a abaiAoM
dec.arando todas as 0ari:0eis co)o (.obaisB
PROGRAM CalculaFatorial_Dependente;
var N, I : byte;
F : longint;
+)!%T,O! Fatorial: longint;
begin
F := 1;
for I := 2 to N do
F := F*I
Fatorial := F;
end;
begin
{...}
end.
Se 0oc8 7uiser usar essa 3uno e) outro pro(ra)aM ter: 7ue dec.arar as 0ari:0eis $ e 9 7ue a
3uno necessita. $)a(ine 7ue u) pro(ra)a )aior uti.i?e 1'M +' ou )ais 3un1es e procedi)entosM todos
estruturados dessa 3or)a. A.=) de ter 7ue se .e)brar de todas as 0ari:0eis de 7ue todos necessita)M
a.(u)as das 0ari:0eis tero o )es)o no)eM e pode ocorrer 7ue u)a instruo )odi3i7ue u)a 0ari:0e.
7ue est: sendo usada por outra. @oc8 ia 3icar .ouco para ad)inistrar essa co)p.eAidade.
"sando par)etros ade7uados e 0ari:0eis .ocaisM 0oc8 torna as no0as instru1es indeendentesM e
assi) sendoM e.as se torna) i)ediata)ente reutilizveis. A.=) dissoM 0ari:0eis .ocais sE ocupa) )e)Eria
7uando sua instruo est: ati0a. E u)a outra i)ensa 0anta(e) = 7ue 0oc8 pode escre0er e testar as
instru1es e) separado u)a da outra.
Iuando u)a instruo produ? dadosM se be) estruturada e.a no apresenta seus resu.tados na te.aN
si)p.es)ente retorna o 0a.orM o 7ue a torna )ais (en=rica. A parte do pro(ra)a 7ue a c,a)ou = 7ue
decidir: o 7ue 3a?er co) o 0a.or. Se u)a instruo )ostra u) resu.tado na te.aM e 0oc8 precisar i)pri)ir
o 0a.orM ter: 7ue a.ter:2.aM ou escre0er outra instruo. Esse tipo de independ8ncia das instru1es
proporciona reusabi.idade i)ediataM 7ue por sua 0e? incre)enta a produti0idade do pro(ra)ador.
")a caracterstica de instru1es independentes = 7ue pode)os i)p.e)ent:2.a de 3or)a
independente do pro(ra)a 7ue 0ai c,a):2.aB u)a coisa de cada 0e?. A.=) dessa 0anta(e)M = poss0e.
distribuir o traba.,o entre 0:rias pessoasM de3inindo2se apenas o cabea.,o das instru1es e cada pessoa
i)p.e)entando u) subcon>unto das instru1es Tpense nisso ao p.ane>ar traba.,os esco.ares )ais
co)p.eAosWU.
Nu#ca use variveis $lobais em rocedimentos ou #un()es, a menos !ue
os bene#'cios suerem os custos.
Na pr:ticaM 0oc8 ar)a?ena os procedi)entos e 3un1es re.acionados e) u) ar7ui0o separado, e
para co)pi.ar u) pro(ra)a 7ue usa essas instru1es basta indicar ao co)pi.ador e) 7ue ar7ui0o e.as
esto. No Turbo Pasca. esses ar7ui0os se c,a)a) units T0e>a neste captu.oU. Assi) 0oc8 pode ter sua
bib.ioteca de 3un1es )ate):ticasM de instru1es 7ue trata) >ane.as e)o.duradasM instru1es para cadeiasM
etc. Esta reusabilidade a $rande chave da sua rodutividade como ro$ramador.
9 - CRAO DE NSTRUES E MODULARZAO %/*
E@er55io ...&+ D Re?is9o
Sobre instru1es independentesB
aU Iue caractersticas de0e possuir u)a instruo para 7ue se>a independente[
bU Iuais as 0anta(ens de se escre0er instru1es independentes[
E@er55io ...&* < Isto R ZtilP
")a pessoaM ao aprender procedi)entos e 3un1esM )ani3estou a se(uinte opinio ao obser0ar
procedi)entos co) + ou - co)andosB
/Lamais vou usar isso. Assim di$ito muito mais, e muito mais rtico colocar as instru()es na
se!Kncia correta3
Ana.ise a a3ir)ao O .u? das possibi.idades da criao de no0as instru1es. RespondaB sua
a3ir)ao = apropriada e) a.(u) aspectoM ou para a.(uns casos particu.ares[ O 7ue essa pessoa
pode no estar percebendo 7ue poderia .,e ser Dti.[ Rusti3i7ue suas respostas.
Pr;ti5a ...&, D #5ree7C:ar
") Eti)o eAe)p.o de reusabi.idade. O Turbo Pasca. no disp1e de instruo para recuperar o cEdi(o do
caractere 7ue est: e) u)a .in,a e co.una da te.aM isto de0e ser 3eito uti.i?ando2se con,eci)entos be)
)ais pro3undos 7ue os nor)ais para u)a .in(ua(e) de a.to n0e.. A 3uno abaiAo 3a? istoM )as 0oc8 no
precisa con,ecer os deta.,es de 3unciona)ento de.a para us:2.aN basta con,ecer o cabea.,o. 9aa u)
pe7ueno pro(ra)a para test:2.a Tpara uso e) pro(ra)asM pro0a0e.)ente ser: necess:rio u)
)e.,ora)entoB sa.0ar a posio do cursor e restaur:2.a no 3ina. da 3unoU. No se es7uea de inserir u)
co)ando uses para as units #OS e RT.
+)!%T,O! ScreenChar (X, Y : byte) : byte;
{retorna o caractere em posio na tela.
WNJ> units E"N e D>5.
+adaptada de ",Krien /77%, p)g. %7?1
}
var Regs : registers;
begin
GotoXY(X,Y);
FillChar(Regs, SizeOf(Regs),0);
Regs.AH := 8;
Regs.BH := 0; (* pgina de vdeo *)
Intr($10,Regs);
ScreenChar := Regs.AL;
end;
$/$.$ Roteiro para 5riar 7o?as i7stru8Aes
Para criar u)a no0a instruoM 0oc8 pode se(uir a.(uns passos be) de3inidosB
Ide7tiCi5a89o da possi=ilidade D Iuando = 7ue 0oc8 decide 7ue 0ai dec.arar u)a instruo[
Tipica)ente = 7uando 3a? a se()entaoM na 3or)a de dia(ra)a de b.ocos ou re3ina)entosM e estrutura o
pro(ra)a. ") ponto i)portante = estar rocurando u)a operao ou ao 7ue possa ser i)p.e)entada
atra0=s de u)a no0a instruo. ") pouco de eAperi8ncia >: 3a? co) 7ue 0oc8 perceba .o(o essas
possibi.idades.
Des5ri89o da Ci7alidade 2 ^ o 7ue a instruo de0e 3a?er.
%/, APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
E7trada D $denti3icao dos dados necess:rios para a instruo atender O sua 3ina.idade.
#adaVresposta 2 #e3inio dos dados de sada ou da resposta 7ue a instruo de0e produ?ir.
Tipo da i7stru89o 2 A instruo pode u) procedi)ento ou u)a 3uno. Tipica)ente ser: u)a
3uno 7uando ,ou0er apenas u) 0a.or de retornoM e procedi)ento nos de)ais casos.
Ca=e8al:o 2 Esco.,a de u) no)e para identi3icar a instruo e de3inio do cabea.,oM sendo
dec.arados co)o par)etros os dados de entrada e sadaM se ,ou0er.
I6ple6e7ta89o D Escre0a o cEdi(o Pasca. da instruo. Se a instruo corresponde a u)
a.(orit)oM 0oc8 pode ter 7ue desen0o.082.o.
Teste 2 Se outras partes do pro(ra)a esto a0anadas e ,abi.ita) o teste da no0a instruoM teste2
a .: )es)o. Outra possibi.idade = 3a?er u) pe7ueno pro(ra)a para e3etuar o teste. Se o procedi)ento 3oi
be) estruturadoM isso ser: )uito 3:ci.N 0e>a O 3rente as considera1es sobre independ8ncia e reusabi.idade
de instru1es.
E@e6plo ...&/ D Co7ta7do pala?ras
Mmlementar um ro$rama !ue l uma cadeia e in#orma a !uantidade de alavras da cadeia.
,onsidere como searador de alavras o caractere esa(o C!ue ode ser mais de umD e como alavra
uma se!Kncia de caracteres di#erentes de esa(o..
O pro(ra)a ter: a se(uinte estruturaB
"Ler cadeia"
"Calcular quantidade de palavras da cadeia"
"Mostrar quantidade de palavras"
Pode)os criar u)a instruo para a se(unda aoB e.a receber: a cadeia e retornar: a 7uantidade
de pa.a0ras. Se(uindo a se7F8ncia de passos su(erida aci)a para a dec.arao de u)a instruoM te)osB
4i7alidadeB ca.cu.ar a 7uantidade de pa.a0ras de u)a cadeia de caracteres.
E7tradaB u)a cadeia de caracteres
#adaB a 7uantidade de pa.a0ras
Tipo da i7stru89oB ,a0endo u) sE 0a.or retornadoM pode)os dec.arar u)a 3unoM cu>o uso =
)ais pr:tico 7ue o procedi)ento.
Ca=e8al:oB 4UNCTION a.cItPa. Tadeia B strin(U B bYteN
I6ple6e7ta89oB @e>a a se(uir a i)p.e)entao co)p.eta da 3uno e do pro(ra)a. Para ac,ar a
7uantidade de pa.a0ras usa)os u) apontador para cada caractere da cadeia e repetida)ente 3a?e)osB
"ular esa(os at achar uma alavra"
"incrementar o contador de alavras encontradas"
"ular os caracteres da alavra encontrada"
9 - CRAO DE NSTRUES E MODULARZAO %//
E) cada caso = to)ado o cuidado de no ir a.=) do 3ina. da cadeiaM 0eri3icando se o apontador
Ap no u.trapassou seu ta)an,o. @e>a o pro(ra)a a se(uir..
PROGRAM ContaPalavras;
uses CRT;
const Espaco = ' ';
var CadLida : string;
+)!%T,O! CalcQtPal (Cadeia : string) : byte;
{calcula quantidade de pala'ras em uma cadeia}
var Ap, CtPalavras : byte;
begin
CtPalavras := 0;
Ap := 1;
hile Ap < Length(Cadeia) do
begin
{pula os espaos}
hile (Cadeia[Ap] = Espaco) and (Ap <= Length(Cadeia)) do
Ap := Ap + 1;
if Ap <= Length(Cadeia) then
begin
{ac#ou pala'ra}
CtPalavras := CtPalavras + 1;
{pula os caracteres da pala'ra encontrada}
hile (Cadeia[Ap] <> Espaco) and (Ap < Length(Cadeia)) do
Ap := Ap + 1
end
end;
CalcQtPal := CtPalavras
end;
begin
ClrScr;
Writeln('Contador de palavras');
repeat
Write('Digite cadeia de at 255 caracteres: ');
Readln(CadLida);
if CadLida <> '' then
Writeln( CalcQtPal(CadLida), ' palavras.'); Writeln;
until CadLida = ''
end.
Pr;ti5a ...&. D Co7taPala?ras
#i(itar e testar o pro(ra)a ontaPa.a0rasM usando o debu((er. #epoisM e considerando 7ue os espaos so
u) e.e)ento i)portante no a.(orit)o usadoM 0eri3icar os resu.tados para as se(uintes 3rasesB
aU i Espaos no incioi
bU iEspaos no 3ina. i
cU iEspaos no )eioi
dU i s i t u a 1 e s )istas i
%/. APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
E@er55io ...&$ < Pro5edi6e7to ou Cu789oP
Para cada descrio abaiAoM de3inir se de0e ser i)p.e)entada co)o 3uno ou procedi)ento. $denti3icar
par)etros necess:rios e tipo de 0a.or retornadoM se 3unoM e dec.arar o cabea.,o para cada u)a.
9ornecer u) eAe)p.o de c,a)ada de cada procedi)ento ou 3uno dec.arado.
!ode.oB
@eri3ica se a.uno passou e) discip.ina.
4UNCTION A.unoPassouT Nota B rea. U B boo.eanN
,a)adaB iC A.unoPassou T&.5U t:e7 ...
aU a.cu.a )=dia arit)=tica de - nD)eros.
bU a.cu.a u) inteiro e.e0ado a outro inteiro.
cU !ostra na te.a u)a .in,a de teAto.
dU a.cu.a d(ito 0eri3icador de P9.
eU $)pri)e u) cabea.,o co) nD)ero de p:(ina.
Espe5iCi5a89o ...'0 D NZ6eros pares
Escre0er u) procedi)ento 7ue recebe dois nD)eros e )ostra na te.a os nD)eros pares situados entre os
doisM inc.usi0e. Testar co) u) pro(ra)a 7ue .8 os nD)eros inicia. e 3ina. eM se este )aior 7ue o inicia.M
c,a)a o procedi)ento.
Espe5iCi5a89o ...'% D NZ6ero par
aU 9a?er u) procedi)ento 7ue recebe u) nD)ero e retorna @erdadeiro ou 9a.soM por re3er8nciaM
con3or)e o nD)ero se>a par ou no Tuse )odU.
bU E.aborar u)a 3uno para a )es)a 3ina.idade.
Espe5iCi5a89o ...'& D )i7:a ?erti5al %
aU #esen0o.0a u) procedi)ento 7ue recebe u) nD)ero de co.una de te.a e preenc,e a co.una co)
caracteres wOx.
bU A.terar o procedi)ento aci)a para 7ue receba ta)b=) o caractere.
Espe5iCi5a89o ...'' D Ca=e8al:o
E.aborar u) procedi)ento 7ue recebe e i)pri)e u)a .in,a de cabea.,o co) nD)ero de p:(inaM no
3or)ato. A data = obtida do siste)a Tpes7uise 3uno apropriada na a>udaU e o nD)ero de p:(ina = u)
par)etroB
RE%ATbR$O #E %$ENTES E!$SSOB ##S!!SAAAA P]H. ***
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Espe5iCi5a89o ...'+ D Apro?a89o
Escre0er u)a 3uno 7ue recebe u)a nota de ' a 1' e retorna 0erdadeiro ou 3a.so Tou outros 0a.ores
con0encionados co)o ta.U se o a.uno 3oi apro0adoM isto =M se tirou & ou )ais.
Espe5iCi5a89o ...'* D Maior de &
Escre0er u)a 3uno 7ue recebe dois nD)eros 7uais7uer e retorna o )aior.
9 - CRAO DE NSTRUES E MODULARZAO %/$
Espe5iCi5a89o ...', D Maior de '
Escre0er u)a 3uno 7ue recebe - nD)eros e retorna o )aior
Espe5iCi5a89o ...'/ D MRdia de '
#ec.arar u)a 3uno 7ue ca.cu.a a )=dia arit)=tica de - nD)eros
Espe5iCi5a89o ...'. D Maior e 6e7or 5o6 6e7u
9aa duas 3un1esB u)a 7ue recebe dois nD)eros e retorna o )aior e outra 7ue recebe o )es)o )as
retorna o )enor. $)p.e)entar u) pro(ra)a co) u) )enu de / op1esB .er dois nD)erosM testar u)a e
outra 3uno e ter)inar.
Espe5iCi5a89o ...'$ D Me7sage6
Escre0er u) procedi)ento 7ue recebe 0a.ores de .in,a e co.una da te.a e u) teAtoM )ostra o teAto nas
coordenadas recebidas e espera 5 se(undos. ApEsM apa(a a )ensa(e) e ter)ina.
Espe5iCi5a89o ...+0 D Mi7Zs5ulas
E.aborar u)a 3uno 7ue con0erte u)a cadeia de caracteres para )inDscu.as. ]1ica+ some 64 aos
caracteres cu<os cdi$os A2,MM est"o entre G7 e 00, inclusive^.
Espe5iCi5a89o ...+% D (isse@to
") ano = bisseAto se 3or di0is0e. por / eAceto os s=cu.osM 7ue so bisseAtos se 3ore) )D.tip.os de /''.
$)p.e)entar u)a instruo 7ue recebe o nD)ero de u) ano e retorna @erdadeiro se o ano 3or bisseAto ou
9a.so caso contr:rio.
Espe5iCi5a89o ...+& < Crti5a de data
Escre0er u)a 3uno 7ue recebe u)a data no 3or)ato i##S!!SAAAAi TdiaS)8sSanoUM 0eri3ica se as
barras esto na posio corretaM se o dia est: entre 1 e -1 Tinc.usi0eUM se o )8s est: entre 1 e 1+ e retorna
u) 0a.or da se(uinte 3or)aB
'B data correta
1B dia in0:.ido
+B )8s in0:.ido
-B dia e )8s in0:.idos
/B 3or)ato in0:.ido
#epois escre0a u)a 3uno 7ue recebe u) dos nD)eros aci)a e retorna a )ensa(e) correspondente.
Teste as 3un1es e) u) pro(ra)a apropriado.
Espe5iCi5a89o ...+' D #orteio de dados
Escre0a u)a instruo 7ue recebe u) nD)ero de 1 a 4M correspondente ao sorteio de u) dadoM e desen,a
o dado na te.a Te) 7ua.7uer posioUM )ostrando o .ado sorteado. #epoisM 3aa u) pro(ra)a 7ue sorteia 5
dados e os )ostra na te.aM a.in,ados.
Espe5iCi5a89o ...++ D Pala?ra gra7de
E.abore u)a instruo 7ue recebe .in,aM co.una e .etra de A a f e desen,a V(randeV essa .etraM e) .in,a e
co.una da te.a. 9aa outra instruo 7ue recebe u) teAto de at= 1' caracteres e c,a)a a pri)eira para
)ostrar o teAto na te.a e) .etras (randes.
%.0 APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
$/$/$ Reusa=ilidade total2 u7its
Se 0oc8 7uiser reuti.i?ar os procedi)entos RriteXYM 2om ou 7ua.7uer outroM ter: 7ue copiar as
instru1es da dec.arao de u) pro(ra)a para outro e reco)pi.ar. ") >eito )e.,or = co.ocar as no0as
instru1es e) u)a u7it. ")a unit = u) ar7ui0o teAtoM co)o u) pro(ra)a23onteM )as co)ea co) a
pa.a0ra reser0ada u7itM = co)pi.ada e) separado dos pro(ra)as e 7uando = co)pi.ada = (erado u)
ar7ui0o co) cEdi(o ob>eto e eAtenso .TP". ") unit no = eAecut:0e. direta)ente )as pode ser usada
por 7ua.7uer pro(ra)a.
O princpio b:sico de u)a unit = 7ue para 7ue u) pro(ra)a re3erencie u)a instruoM no =
necess:rio eApor as dec.ara1es internas ou o b.oco de cEdi(o da instruoN = preciso so)ente con,ecer o
cabea.,oB o no)e da instruo e o tipo dos par)etros. Por isso u)a unit possui duas se1esB a parte
pDb.ica Ti7terCa5eU e a parte pri0ada Ti6ple6e7tatio7U. Na parte pDb.ica 3ica) so)ente os cabea.,os
das instru1es e na parte pri0ada 3ica) os no)es e b.ocos de cEdi(oM ou se>aM a i)p.e)entao das
instru1es. Iuando usa u)a unitM u) pro(ra)a sE pode re3erenciar as instru1es cu>o cabea.,o 3oi
dec.arado na parte pDb.ica. #e 3atoM pode ,a0er ta)b=) dec.ara1es de tipos de dadoM constantes e
0ari:0eisM e) a)bas as se1es. No0a)ente sE as dec.ara1es pDb.icas pode) ser re3erenciadas no
pro(ra)a 7ue usa a unit.
So pa.a0ras reser0adasM a.=) das >: con,ecidasB u7itM i7terCa5eM i6ple6e7tatio7. No b.oco de
cEdi(o no 3ina. da unit pode) ser inc.udos co)andos TopcionaisU para a inicia.i?ao de 0ari:0eis ou
a.(o 7ue precise ser 3eito para 7ue as instru1es da unit 3uncione) correta)ente.
A estrutura si)p.i3icada de u)a unit = assi)B
)!,T !o-e;
,nterface
PRO%E*)RE Proc1 (parVmetros);
{descrio do procedimento %}
+)!%T,O! Func1 (parVmetros): tipo2
{descrio da funo /}
,-ple-entation
)ses lista de units usadas na implementao2
PRO%E*)RE Proc.;
/ar 'ari)'eis locais2
begin
Domandos do procedimento /
end;
+)!%T,O! +unc.;
var 'ari)'eis locais2
begin
Domandos da funo /
end.
PRO%E*)RE Proc0'parVmetros(;
var 'ari)'eis locais2
begin
Na seo Inter6ace ficam
apenas os cabealhos das
instrues pblicas, isto , que
podem ser chamadas por
programas.
Na seo I7p8e7entation
ficam os nomes das instrues
(no preciso repetir os
parmetros) e o restante da
implementao de cada uma.
Este procedimento no aparece
na Inter6ace; de uso interno da
unit e no pode ser chamado por
programas.
9 - CRAO DE NSTRUES E MODULARZAO %.%
Domandos do procedimento %
end.
begin
{comandos de iniciali(ao da unit}
end.
Tanto na inter3ace 7uanto na i)p.e)entaoM 0oc8 pode dec.arar ta)b=) 0ari:0eisM tipos e
constantes. Se estes 3ore) dec.arados na i7terCa5eM sero 0is0eis para os pro(ra)as. @e>a a se(uir u)a
unit 7ue cont=) u)a Dnica instruoM RriteXY.
unit CRT2;
interface

PRO%E*)RE WriteXY (Col, Lin : byte; Texto : string);
{mostra texto na tela, na coluna e lin#a rece8idas}
i-ple-entation
uses CRT;
PRO%E*)RE WriteXY;
begin
GotoXY (Col, Lin);
Write(Texto);
end;
begin
end.
Pr;ti5a ...+* < CRT&
1. #i(ite a unit RT+ e sa.0e2a co) o no)e de RT+.PAS. o)pi.e a unit co) destino disco. No se
es7uea de con3i(urar o diretErio de eAecut:0eis e units para o seu diretErio de traba.,o
TOptio7sSDire5toriesU. ProntoB a(ora 0oc8 pode usar a instruo RriteXY de 7ua.7uer pro(ra)aM para
isso basta inc.uir a unit RT+ na dec.arao uses. Note 7ue a seo de inicia.i?ao est: 0a?iaN nada =
precisa 3a?er neste caso.
+. A(ora abra o pro(ra)a IuadradoXY, eAc.ua as .in,as do procedi)ento RriteXY T.e)bra do tr.2c[U
e inc.ua na dec.arao uses a unit RT+M apEs u)a 0r(u.a. o)pi.e e teste o pro(ra)a. EAecute
ta)b=) co) o debu((er e 0e>a co)o e.e .,e )ostra o 3onte 7uando a.(u)a instruo da unit =
c,a)ada Tso)ente 7uando esti0er dispon0e.U.
Pr;ti5a ...+, < YriteNX ?&
A.tere o procedi)ento RriteXY para 7ue e.e no a3ete a posio atua. do cursorB antes de )ostrar o teAto
e.e sa.0a a .in,a e a co.unaM e apEs o cursor = retornado para a posio sa.0a. Note 7ue a.ter:2.o no a3eta
e) nada os pro(ra)as 7ue o c,a)a). E para 7ue se bene3icie) da )odi3icaoM esses pro(ra)as tero
apenas 7ue ser reco)pi.ados.
Pr;ti5a ...+/ < #o6
$nc.ua o procedi)ento So) na unit RT+. o)pi.e para disco. A.tere o pro(ra)a 2om=ariavel para usar
a unit e c,a)ar o procedi)ento So).
Comandos colocados
nesta seo sero
executados no incio
de cada programa que
usa a unit.
Parte pDb.icaB
para usar sE =
preciso con,ecer
os cabea.,os.
A7ui 3ica a
i)p.e)entaoM
7ue no precisa
estar acess0e. aos
pro(ra)as.
%.& APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
Pr;ti5a ...+. < I7i5ialiQa89o da u7it
Teste a seo =egi7..e7d2 inc.ua instru1es na unit RT+ para )ostrar seu no)eM esperar + se(undos e
apa(ar o no)e. o)pi.e a unit e reco)pi.e a.(u) pro(ra)a 7ue a use. EAecute e 0e>a o resu.tado.
Pr;ti5a ...+$ < U7it Mat
#i(itar e co)pi.ar a unit !atM a se(uir. Test:2.a atra0=s do pro(ra)a a.cu.a9atoria.M usando o debu((er.
)!,T Mat; {Rnstrues matem)ticas}
interface
PRO%E*)RE EqSegGrau ( a, b, c : integer ; var Raiz1, Raiz2 :real);
{Dalcula ra(es da equao do segundo grau com coeficientes a, 8 e c2
'erso simplificada2 no critica o delta}
+)!%T,O! Fatorial( N : byte ) : longint;
{>etorna o fatorial de um nmero maior do que (ero}
i-ple-entation
PRO%E*)RE EqSegGrau;
var Delta : real;
begin
Delta := b*b - 4*a*c;
Raiz1 := (-b + SqRt(Delta) )/2*a;
Raiz1 := (-b - SqRt(Delta) )/2*a;
end;
+)!%T,O! Fatorial;
var I : byte;
F : longint;
begin
F := 1;
for I := 2 to N do
F := F*I;
Fatorial := F;
end;
begin
end.
9 - CRAO DE NSTRUES E MODULARZAO %.'
PROGRAM CalculaFatorial;
uses CRT, Mat;
var N : byte;
begin
ClrScr;
Writeln('Entre um nmero inteiro:');
Readln(N);
Writeln('O fatorial de ', N, ' ', Fatorial(N) );
end.
Pr;ti5a ...*0 < #u=stitui7do Readl7
A instruo ReadZc TadianteU 3oi i)p.e)entada para substituir Read.n na .eitura de strin(s. E.a recebe
.in,a e co.una da te.a onde de0e ser 3eita a edioM o Vpro)ptV TteAto a ser )ostrado antes do ca)poU e o
ta)an,o ):Ai)o da strin(M e retorna o 0a.or .ido. Se 3or recebido u) 0a.or inicia.M este = )ostrado na te.a
no incio da edio. Seus recursos de edio inc.ue) des.oca)ento do cursor atra0=s das setas O es7uerda
e O direitaM Xo)e Tincio da cadeiaUM End T3i) da cadeiaU e $nsert Ta.terna sobreposio ou insero de
caracteresU. So)ente = per)itida a di(itao de caracteres a.3a2nu)=ricosM e a edio ter)ina 7uando 3or
tec.ado Escape ou Enter.
%.+ APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
unit RXY;
interface
const kEscape = #27; {cOdigos JNDRR correspondentes a teclas}
kEnter = #13;
kSeta_Esq = #75; {cOdigos estendidos de teclas de controle}
kSeta_Dir = #77;
kHome = #71;
kEnd = #79;
kInsert = #82;
PRO%E*)RE ReadXY(X, Y : byte; Prompt : string; var S : string; Tam : byte);
{Ieitura de strings com comandos de edio, em posio da tela}
i-ple-entation
uses CRT;
PRO%E*)RE ReadXY;
var Pos : byte;
Tecla : char;
Insere : boolean; {5rue - insero2 False - so8reposio}
begin
GotoXY (X, Y); Write(Prompt);
X := X + Length(Prompt) + 1;
Pos := 1; Insere := True;
repeat
{mostra 'alor atual}
GotoXY(X,Y); Write(S);
{posiciona cursor no ponto de edicao}
GotoXY(X + Pos - 1, Y);
{le a tecla e processa +caractere ')lido ou de controle1}
Tecla := ReadKey;
case Tecla of
' ','0'..'9','A'..'Z','a'..'z' :
begin
if not Insere then
begin
S[Pos] := Tecla;
if Pos < Tam then Pos := Pos + 1;
end
else if Length(S) < Tam then
begin
Insert(Tecla, S, Pos);
if Pos < Tam then Pos := Pos + 1;
end;
end;
#0 : begin
{trata teclas especiais, que tem dois cOdigos, sendo (ero o primeiro}
Tecla := ReadKey;
case Tecla of
kSeta_Esq : if Pos > 1 then Pos := Pos - 1;
kSeta_Dir : if Pos < Tam then Pos := Pos + 1;
kHome : Pos := 1;
kEnd : Pos := Length(S);
KInsert : ,f Insere then Insere := False
else Insere := True;
end
end;
end
until (Tecla = kEscape) or (Tecla = kEnter);
end;
begin
end.
Para a unit e o procedi)ento ReadZcM 3aa o se(uinteB
9 - CRAO DE NSTRUES E MODULARZAO %.*
aU #i(ite e co)pi.e a unit.
bU 9aa u) pro(ra)a para testar o procedi)ento Tpor eAe)p.oM repetida)ente c,a)a o
procedi)ento e )ostra o 0a.or retornadoU.
Pr;ti5a ...*% < Mel:ora7do ReadNX
9aa e teste as se(uintes a.tera1es no procedi)ento ReadZcB
aU $)p.e)ente o uso das tec.as <acPspace Tde.eta O es7uerda do cursorU e #e.ete Tde.eta o caractere
na posio do cursorU.
bU $)p.e)ente a sada de edio co) a tec.a EscapeN neste casoM a instruo retorna o 0a.or inicia.
recebido Tsa.0e o 0a.or recebido no incio e restaure2o no 3ina.U.
Espe5iCi5a89o ...*& D E@po7e75ia89o real
Escre0er u)a 3uno 7ue ca.cu.a u) nD)ero rea. e.e0ado a outro rea.M usando a 3Er)u.a c
Z
n
eApTAq.nTYUU. ApEs test:2.a T0eri3i7ue se a 3Er)u.a 3a.,a para a.(u)a situaoUM inc.ua2a na unit !atM
aci)a.
Espe5iCi5a89o ...*' < Me7u 6ate6;ti5o
9aa u) pro(ra)a co) op1es deB ter)inarM )ostrar in3or)a1es do pro(ra)ador e do pro(ra)aM
ca.cu.ar 3atoria.M reso.0er e7ua1es do se(undo (rau e potenciao. ,a)e u) procedi)ento para )ostrar
as in3or)a1es. "se a unit !at para os c:.cu.os. Para o 3atoria.M .i)ite o 0a.or do nD)ero de 3or)a a no
estourar a capacidade da 0ari:0e. 7ue recebe o 3atoria.. Para as e7ua1esM no ca.cu.e as ra?es se o de.ta
3or ne(ati0o e )ostre so)ente u)a se o de.ta 3or ?ero. Para criticar o de.taM use u)a 3uno #e.ta
dec.arada na prEpria unit.
Pr;ti5a ...*+ D Mat ?&
A.tere a unit !at para 7ue 7ua.7uer pro(ra)a 7ue a use )ostre a identi3icao da unit e o no)e do
pro(ra)ador por tr8s se(undos e depois .i)pa a te.a Tinc.ua as instru1es para isso no b.oco de cEdi(o no
3ina. da unitU.
PesFuisa ...** < Co6pila89o si6pliCi5ada
#escubra no )enu Co6pile do Turbo Pasca. u)a opo 7ue .,e per)ite co)pi.ar o pro(ra)a e todas as
units usadas por e.e.
PesFuisa ...*, < Direti?as de 5o6pila89o
#escubra na a>uda do Turbo Pasca. o 7ue so direti0as de co)pi.aoM e ac,e u)a direti0a 7ue a3eta o
co)porta)ento de instru1es dec.aradas pe.o pro(ra)ador.
Espe5iCi5a89o ...*/ < #orteio de dados
aU Escre0a u)a unit co) duas instru1es na inter3ace. A pri)eira = u)a 3uno 7ue sorteia e retorna u)
nD)ero de 1 a 4M representando a pontuao de u) dado. Para sortear o 0a.or use a instruo
Rando)M cu>a inicia.i?ao Tinstruo Rando)i?eU de0e ser 3eita na seo de inicia.i?ao da unit.
A se(unda = u) procedi)ento 7ue recebe u)a 7uantidade de pontosM u)a .in,aM u)a co.una e u)
caractere e desen,a u) dado co) a 7uantidade de pontos recebidaM na posio da te.a recebida e
usando o caractere recebidoM usando - .in,as e - co.unas. @oc8 pode assu)ir 7ue eAiste a instruo
CriteZcM na unit RT+. No = necess:rio e)o.durar o dado. Por eAe)p.oM se os pontos 3ore) 5 e o
caractere 3or iqiM a sada seria To iqi no a.to O es7uerda corresponde O .in,a e O co.una recebidasUB
& &
%., APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
&
& &
bU Escre0er u) procedi)ento 7ue .8 e retornaM por re3er8nciaM dois nD)eros de 1 a 4 .idos do tec.ado.
aso u) dos nD)eros este>a 3ora da 3aiAa 0:.idaM o procedi)ento retorna ?ero para a)bos.
cU E.aborar u) procedi)ento 7ue recebe co)o par)etros Tno .eia do tec.adoU dois nD)eros
correspondentes O pontuao de dois dados e 3a? o se(uinteB
Sorteia e ar)a?ena a pontuao de dois dados Tpara isso c,a)e a 3uno da unit dec.arada
aci)aU.
!ostra na te.a a pontuao sorteada de a)bos os dados Tuse o procedi)ento dec.arado
aci)aU.
o)para os pontos sorteados co) os pontos recebidos e )ostra )ensa(e) na te.a
in3or)ando se os dados so i(uais Te) 7ua.7uer orde)UM se a so)a = i(ua. ou se nada disso
ocorreu.
dU $)p.e)entar u) pro(ra)a de sorteio de dadosM 7ue repetida)ente o3erece u) )enu co) as se(uintes
op1esB
Ter)inar.
%eitura do pa.pite do usu:rio para dois dados. "se o procedi)ento dec.arado aci)aM e espere
u)a tec.a apEs a c,a)ada do procedi)ento.
Sortear e 0eri3icar o resu.tado. "se o procedi)ento dec.arado aci)aM )as so)ente se a
.eitura >: 3oi e3etuada. Se noM = )ostrada u)a )ensa(e) apropriada. Espere ta)b=) u)a
tec.a antes de retornar.
$/$0$ Ati?idades suple6e7tares
E@er55io ...*. < Des?a7tage7s de repetir 5Bdigo
itar as des0anta(ens de escre0er trec,os redundantes de instru1es. Iua. = a so.uo[
E@er55io ...*$ <De5lara89o de i7stru8Aes
o)p.ete os espaosB
aU As instru1es 7ue cria)os pode) ser \\\\\\\\\\\\\\\\\\\ ou \\\\\\\\\\\\\\\.
bU Para c,a)ar u)a instruoM precisa)os con,ecer apenas o seu \\\\\\\\\\\\\ e seus dados
de \\\\\\\\\\\\\\\\\ e \\\\\\\\\\\\\\\.
cU Para usar u)a instruoM no precisa)os con,ecer seu \\\\\\\\\\ de \\\\\\\\\\\\ ou suas
0ari:0eis \\\\\\\\\\\\\\.
dU ")a 3uno produ? u) \\\\\\\\\\\\\\\\\M e por isto pode ser usada e) eApress1es.
eU ")a 0anta(e) de se criar instru1es = e0itar \\\\\\\\\\\\\\\\\\\ de trec,os de cEdi(o.
E@er55io ...,0 < Mais re?is9o
Assina.e @ ou 9B
T U ")a instruo dec.arada pe.o pro(ra)ador de0e ter pe.o )enos u) no)e e u) b.oco de
cEdi(o.
9 - CRAO DE NSTRUES E MODULARZAO %./
T U As 0ari:0eis dec.aradas dentro de u) procedi)ento ou 3uno e sE pode) ser usadas
Tre3erenciadasU no respecti0o b.oco de cEdi(oM >: 7ue sE eAiste) 7uando a instruo 3or
eAecutada.
T U O b.oco de cEdi(o de u)a instruo dec.arada = eAecutado 7uando da co)pi.ao.
T U ") procedi)ento dec.arado pode c,a)ar outro.
E@er55io ...,% D 4u78Aes
Assina.e @ ou 9M con3or)e a a3ir)ati0a se>a 0erdadeira ou 3a.saB
T U 9un1es retorna) u) 0a.orM de u) deter)inado tipo de dado.
T U O 0a.or de retorno de u)a 3uno = deter)inado auto)atica)ente pe.o co)pi.ador.
T U A passa(e) de par)etros na c,a)ada de u)a 3uno = opciona..
T U 9un1es pode) ter par)etros por 0a.or ou por re3er8ncia.
T U As 0ari:0eis .ocais de u)a 3uno sE eAiste) en7uanto a 3uno est: sendo eAecutada.
E@er55io ...,& < Re?is9o de par]6etros
o)p.ete os espaosB
aU Par)etros so dec.arados no \\\\\\\\\\\\\\\\\\\ de u) procedi)ento.
bU Par)etros por 0a.or ser0e) para o procedi)ento \\\\\\\\\\\\\ dados.
cU Para dec.arar u) par)etro precisa)os de3inir seu \\\\\\\\\ e seu \\\\\\\\\.
dU Par)etrosM assi) co)o 0ari:0eis .ocaisM sE eAiste) na )e)Eria en7uanto o procedi)ento e)
7ue 3ora) dec.arados esti0er \\\\\\\\\\\\\\\\\\\\.
eU ") par)etro dec.arado c,a)a2se \\\\\\\\\\\\\\\\\\\N o passado na c,a)ada da instruo =
deno)inado \\\\\\\\\\\\\\\\\\\\ ou \\\\\\\\\\\\\\\\\\.
3U O 0a.or inicia. de u) par)etro 3or)a. = 3ornecido na \\\\\\\\\\\\\\\ do procedi)ento.
(U Se u) par)etro e3eti0o Tou ar(u)entoU = u)a \\\\\\\\\\\\\\\M seu 0a.or = recuperado da
)e)Eria antes da c,a)ada do procedi)entoN se 3or u)a eApressoM seu 0a.or = antes
\\\\\\\\\\\\\\\\\\.
PesFuisa ...,' D Dia da se6a7a
#escubra co)oM a partir de u)a data 0:.idaM 0oc8 pode identi3icar o dia da se)ana correspondente
Tdo)in(oM se(undaM etc.U. Escre0a u)a instruo 7ue retorna esse dia.
Espe5iCi5a89o ...,+ < 4u789o para su=stituir 4illC:ar
O 3ato de 9i..,ar ser u) procedi)ento no o torna )uito pr:tico. E.abore u)a 3uno 7ue recebe u)
caractere e u)a 7uantidade e retorna u)a strin( co) a 7uantidade indicada do caractere. o.o7ue a
3uno e) u)a unit.
Espe5iCi5a89o ...,* < Opera8Aes 5o6 5adeia
E.abore u) pro(ra)a 7ue )ostra u) )enu co) as op1es abaiAo. Todos os procedi)entos e 3un1es
de0e) estar e) u)a ou )ais units. Todas as units de0e) )ostrar na te.aM ao inicia.i?arM o seu no)e Tda
unitU e a identi3icao do pro(ra)adorM por + se(undos. Todo teAto de0e ser )ostrado na te.a atra0=s da
3uno CriteZc e) unit. !ostrar )ensa(ens de erro ta)b=) atra0=s de procedi)entoM 7ue e)ite u)
so) 7ua.7uer usando o procedi)ento So).
aU Ter)inar.
%.. APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
bU !ostrar sub)enu co) duas op1esB in3or)a1es do pro(ra)adorM da discip.inaM etc. ou a>uda
para o pro(ra)a. "sar procedi)ento para este sub)enu.
cU %er u)a cadeia 7ua.7uer.
dU $n0erter a cadeiaM 7ue 3icar: co)o .ida de tr:s para a 3rente. "sar 3uno para a in0erso.
eU on0erter a cadeia para )aiDscu.asM usando 3uno
3U on0erter a cadeia para )inDscu.asM usando 3uno.
(U Restaurar o D.ti)o 0a.or .ido para a cadeia.
Espe5iCi5a89o ...,, D 4or6ata89o de data
E.aborar u) procedi)ento 7ue recebe co)o par)etros diaM )8sM anoM u)a .in,a e u)a co.una da te.a e
u)a .etra 7ue corresponde ao 3or)ato de data a ser apresentado. Se o 3or)ato n wAxM )ostra
##S!!SAAN se w<xM )ostra ##.!!.AAAA. Para test:2.oM 3aa u) pro(ra)a 7ue busca a data do
siste)aM eAtrai diaM )8s e ano e c,a)a o procedi)ento.
Espe5iCi5a89o ...,/ D NZ6eros pri6os
") nD)ero = dito ser pri)o 7uando = di0is0e. so)ente por si e pe.a unidade. 9aa u) pro(ra)a 7ue
0eri3icaM atra0=s de u)a 3unoM se u) nD)ero = ou no pri)o. ]1ica+ divida o n8mero N or todos os
n8meros de 4 a N ; 1. 2e o resto da divis"o de N or al$um dos n8meros der zero, ele n"o rimo^
Espe5iCi5a89o ...,. D Pal7dro6os
$)p.e)entar u) pro(ra)a 7ue 0eri3ica se u)a 3rase = pa.ndro)a Ta )es)a se .ida nor)a.)ente ou de
tr:s para a 3renteB VRo)a )e te) a)orVM Vsocorra) )e subi no ;nibus e) !arrocosVU.
Espe5iCi5a89o ...,$ D Custo de e@e5u89o de pro5edi6e7to
Escre0er u) pro(ra)a 7ue ser0e para se )edir o custoM e) te)poM de eAecuo de u) procedi)ento. E.e
trocaM a.(uns )i.,ares de 0e?esM os 0a.ores de duas 0ari:0eisM de duas 3or)asB na pri)eira = usado para
trocar as 0ari:0eis u) procedi)entoM na se(unda se) este. o)putar o te)po (asto para cada 3or)a e
)ostr:2.os na te.a.
Espe5iCi5a89o .../0 D Tri6
$)p.e)entar u)a 3uno 7ue retira os brancos 3inais de u)a cadeia de caracteres Te) certas .in(ua(ens
dispon0e. co) o no)e de VTri)VU.
Espe5iCi5a89o .../% D AHuste de ta6a7:o
$)p.e)entar u)a 3uno 7ue recebe u)a cadeia e u) ta)an,o e retorna a cadeia co) brancos inseridos
no 3i) at= o ta)an,o especi3icado.
Espe5iCi5a89o .../& D 4or6ata89o de li7:a
") pro(ra)ador est: escre0endo u) editor de teAtosM e precisa de u)a 3uno 7ue recebe u)a .in,a de
teAto e u)a .ar(ura de .in,aM e insere espaos de 3or)a a a.in,ar o teAto O .ar(ura recebidaM retornando a
.in,a 3or)atada. $)p.e)ente essa 3uno. ]1ica+ rimeiro calcule a !uantidade de esa(os necessriaN
descubra a !uantidade de intervalos entre alavras e calcule !uantos esa(os ter !ue inserir em cada
intervaloN insira essa !uantidade em cada intervalo, sendo !ue o 8ltimo intervalo receber os esa(os
e%tras restantes. Mnvesti$ue outras ossibilidades de distribui("o^
9 - CRAO DE NSTRUES E MODULARZAO %.$
Espe5iCi5a89o .../' D Sa7ela de 5o7Cir6a89o
$)p.e)entar u)a instruo 7ue )ostra u)a >ane.a de con3ir)ao na te.a co) as op1es VS$!VM VNOV
e VANE%ARVM a(uarda a opo do usu:rio e retorna a opo se.ecionada. O usu:rio se.eciona a opo
co) as setas ou a pri)eira .etra e depois tec.ando Enter.
Espe5iCi5a89o .../+ D PI#VPA#EP
O d(ito 0eri3icador do P$SSPASEP = ca.cu.ado atra0=s da se(uinte re(raB o nD)ero = co)posto por de?
d(itos )ais u) d(ito 0eri3icador. !u.tip.i7ue os nD)erosM da es7uerda para a direitaM respecti0a)ente
por - + * 5 & 4 5 / - +. So)e os resu.tados das )u.tip.ica1esN ca.cu.e o resto da di0iso da so)a
por 11 e subtraia o resu.tado de 11. Se o resu.tado 3or 1' o d(ito = ?eroM caso contr:rio o d(ito = o
prEprio resu.tado.
Por eAe)p.oM para o nD)ero 1&'1+'*'/121M o c:.cu.o seriaB
1A- t &A+ t 'A* t 1A5 t +A& t 'A4 t *A5 t 'A/ t /A- t 1A+ n *5. O resto da di0iso de *5 por 11 = 1'.
o)o 11 2 1' n 1M o d(ito = 1.
Escre0er u)a 3uno 7ue recebe u) nD)ero de P$SSPASEP e retorna o d(ito 0eri3icador. Para test:2.oM
0oc8 pode usar ta)b=) o nD)ero 1'1'541+4*21.
Espe5iCi5a89o .../* D CP4
Os dois d(itos de 0eri3icao do P9 Tconstitudo de * d(itosU so ca.cu.ados atra0=s de u) co)p.icado
a.(orit)oB
Etapa %2 c:.cu.o de #@1
So)a 1B so)a dos produtos de cada d(ito por u) peso de + a 1'M na orde) in0ersa Tdo nono para
o pri)eiroU.
!u.tip.i7ue a so)a 1 por 1' e ca.cu.e o resto da di0iso do resu.tado por 11. Se der 1'M #@1 =
?eroM caso contr:rio o #@1 = o prEprio resto.
Etapa &2 c:.cu.o de #@+
So)a +B so)a dos produtos de cada d(ito por u) peso de - a 11M ta)b=) na orde) in0ersa.
Adicione a So)a + ao dobro do #@1M )u.tip.i7ue por 1' e ca.cu.e o resto da di0iso do resu.tado
por 11. Se der 1'M #@+ = ?eroM caso contr:rio o #@+ = o prEprio resto.
Etapa '2 !u.tip.i7ue #@1 por 1'M so)e co) #@+ e 0oc8 te) o nD)ero de contro.e do P9.
E@e6ploB para o P9 -*5 1-4 1/4M te)osB
Etapa 1B +A4 t -A/ t /A1 t 5A4 t 4A- t &A1 t 5A5 t *A* t 1'A- n +55
+55' )od 11 n 4M portantoM #@1 n 4
Etapa +B -A4 t /A/ t 5A1 t 4A4 t &A- t 5A1 t *A5 t 1'A* t 11A- n +**
T+** t 4A+UA1' )od 11 n -15' )od 11 n 5M portanto #@+ n 5
Etapa -B #@1A1' t #@+ n 4A1' t 5 n 45M 7ue = o nD)ero procurado.
Escre0er u)a 3uno para ca.cu.ar os d(itos de contro.e do P9. Para si)p.i3icarM >: 7ue so duas
so)atEriasM 0oc8 pode escre0er ta)b=) u)a 3uno auAi.iar 7ue recebe o P9 e o peso inicia. e retorna a
so)a.
Espe5iCi5a89o .../, D 4reFUG75ia de 7otas 6usi5ais
Se 0oc8 con,ece a 3re7F8ncia de u)a nota )usica.M pode con,ecer a nota se(uinte Tu) se)ito) aci)aU
)u.tip.icando a7ue.a por
1+
+
. Sabendo 7ue a 3re7F8ncia de u)a das notas %: = //' X?M 3aa o se(uinteB
%$0 APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
aU Escre0a u)a 3uno 7ue recebe u)a nota e retorna a prEAi)aN
bU Escre0a u) pro(ra)a 7ue ca.cu.a as 3re7F8ncias de notas aci)a do %: T%ayM SiM #EM #EyM R=M
R=yM !iM 9:M So.M So.yM %:M %: yM SiM #E. Anote as 3re7F8ncias.
cU E) outro pro(ra)aM dec.are constantes para as 3re7F8ncias das notas Tpor eA.M #OU e escre0a
instru1es 7ue to7ue) o Parab=ns pra 0oc8. ]1ica+ declare uma constante ara a dura("o e use
m8ltilos destaN as rimeiras notas, com a resectiva dura("o, do -arabns #icariam assim+
C1O, 1urD, C1O, 1urD, CQE, 5V1urD, C1O, 4V1urD. >ente 1ur c 100 e 400.^
%$%
$0 #ISTAS NUMERA"AS9 3ETORES E MATRI5ES
E) 0:rias situa1es o pro(ra)ador de0e traba.,ar co) .istas de no)esM nD)eros e 0:rias outras.
Para 3aci.itar a sua 0idaM as .in(ua(ens de pro(ra)ao per)ite) a dec.arao de )uitas 0ari:0eis e)
u)a sE instruoM na 3or)a de u)a .ista co) 0:rios e.e)entosM e para atribuir ou recuperar 0a.ores 0oc8
3a? re3er8ncia a u) e.e)ento de cada 0e?M atra0=s de sua posio na .ista.
Essas .istas so c,a)adas de 0etoresM 7uando de u)a di)ensoM ou )atri?esM 7uando co) duas ou
)ais di)ens1es. @oc8 0er: neste captu.o co)o dec.arar e usar esse tipo de 0ari:0eis e) Pasca..
$0$($ Vetores
onsidere a se(uinte especi3icaoB
"Mmlementar um ro$rama !ue l uma srie de ares #re!Kncia[dura("o at !ue se<a lida uma
#re!Kncia zero. As, o ro$rama "toca" a se!Kncia lida, emitindo sons em cada #re!Kncia, com a
resectiva dura("o."
Para e3etuar a .eituraM 0oc8 0ai precisar de 0ari:0eis para a 3re7F8ncia e a durao. !as onde
(uardar os 0a.ores .idos anterior)ente[ !es)o 7ue 3osse) dec.aradas 0ari:0eis para cada par To 7ue
daria )uito traba.,oUM no se sabe a 7uantidade de pares.
@a)os 0er co)o atender O necessidade da especi3icao aci)a e depois co)o e3etuar a
dec.arao no Pasca.. Para essa especi3icaoM precisa)os de duas .istasM u)a para as 3re7F8ncias e outro
para as dura1es. o)o eAe)p.oM 0a)os usar as seis pri)eiras notas do VParab=ns pra 0oc8VN as .istas
de0e) 3icar assi) Tassu)indo u) ):Ai)o de 1' notas e) u)a _)Dsica`UB
9re7F8ncias TXert?U
//' //' 5'' //' 4'' 54'
1 + - / 5 4 & 5 * 1'
#ura1es T)i.isse(undosU
+'' +'' 5'' /'' /'' 5''
1 + - / 5 4 & 5 * 1'
Para representar as estruturas aci)a e outras se)e.,antesM o Pasca. Te as outras .in(ua(ensU
per)ite) 7ue dec.are)os )uitas 0ari:0eis de u)a 0e?M na 3or)a de u) vetor. ") 0etor consiste e) u)a
.ista nu)erada de 0ari:0eisM Os 7uais 3a?e)os re3er8ncia pe.a no)e do 0etor e a posio dese>ada da .ista.
ada 0ari:0e. co)ponente do 0etor = c,a)ada ele6e7to.
Outros eAe)p.os de prob.e)as 7ue pode) ser so.ucionados atra0=s de .istasB
Ac,ar a nota )=dia de u)a tur)a de 5' a.unos
%$&
Or(ani?ar 5''' nD)eros e) orde) decrescente
Ar)a?enar u)a .ista de +'' pa.a0ras
Ar)a?enar na )e)Eria e ordenar e) orde) crescente u)a .ista de cEdi(os de -''' produtos
$0$)$ De5lara89o de ?etores
No Pasca.M e co)o 7ua.7uer outra 0ari:0e.M para se usar u) 0etor = preciso dec.ar:2.oN sua
dec.arao de0e 3ornecer os se(uintes e.e)entosB
7o6eB o identi3icador do 0etor
li6ite i7CeriorB inteiro 7ue aponta para o )enor posio do 0etor
+
li6ite superiorB inteiro 7ue aponta para a )aior posio do 0etor
tipo de dado de cada e.e)ento.
SintaAe da dec.araoB
var nome 1 array [Limite inferior..limite superior] of tipo;
arra> e oC so pa.a0ras reser0adas. O pri)eiro nD)ero dentro dos co.c,etes indica o nD)ero ou
posio do pri)eiro e.e)ento T.i)ite in3eriorUM e o se(undo T1'U indica o nD)ero do D.ti)o T.i)ite
superiorU. As dec.ara1es aci)aM portantoM cria) dois 0etores co) 1' e.e)entos cada u)M nu)erados de 1
a 1'M sendo 7ue e) cada e.e)ento ou posio pode)os ar)a?enar u) dado do tipo Sord. @e>a 7ue desta
3or)a cria)os 1' 0ari:0eis de u)a sE 0e?M a cada dec.arao.
Pode)os dec.arar os 0etores de 3re7F8ncias e dura1es assi) T.e)brando 7ue 3re7F8ncia e
durao no Turbo Pasca. so do tipo 6ordUB
var vFreq : array [1..10] of word;
vDur : array [1..10] of word;
o)o as duas estruturas so i(uaisM pode)os si)p.i3icar a dec.arao usando t>peB
type tNotas = array [1..10] of word;
var vFreq, vDur : tNotas;
") 0etor = dito ser u) tipo estruturado e homo$neo de dadosM por7ue = co)posto de 0:rias
0ari:0eisM todas de u) )es)o tipo.
O .i)ite in3erior de u) 0etor no precisa ser necessaria)ente 1. @oc8 pode uti.i?ar u) 0a.or
re.acionado ao conteAto dos seus dados. Por eAe)p.oM se 0oc8 7uer ar)a?enar u)a tabe.a de
correspond8ncia de (raus 9a,ren,eitSe.sius na 3aiAa de -+ a +1+M 0oc8 poderia dec.arar u) 0etor assi)B
type vTabFahrCels : array[32..212] of real;
-ara se saber !uantos elementos ossui um vetor, basta calcular+
Iuantidade de e.e)entos n .i)ite superior 2 .i)ite in3erior t 1
+
Na 0erdadeM os .i)ites in3erior e superior pode) ser de outros tipos de dado Tco)o c,ar e boo.eanUN para
nEs = su3iciente assu)ir)os 7ue so nD)eros.
10 - LSTAS NUMERADAS: VETORES E MATRZES %$'
O 0etor aci)a possui +1+ 2 -+ t 1 n 151 e.e)entos. @e>a outros eAe)p.os de dec.arao de
0etoresB
type Palavras : array[1..100] of string[20];
Texto : array[1..5000] of char;
Tela : array[1..25] of string[80];
Notas : array[1..50] of real;
Passou : array[1..50] of boolean;
PrecoProduto : array[1000..9999] of real;
E@er55io .$.% D Vetores
Assina.e @ ou 9B
T U Todos os e.e)entos de u) 0etor Pasca. so do )es)o tipo de dado.
T U O no)e 7ue identi3ica u) 0etor de0e se(uir as re(ras para identi3icadores Pasca..
T U ") 0etor = dito ser ,o)o(8neo por7ue todos os seus e.e)entos so do )es)o tipo de dado.
T U ") 0etor no pode ter .i)ite superior ne(ati0o.
E@er55io .$.& D De5lara89o de ?etores
Escre0a u)a seo ?ar dec.arando 0etores apropriados para representarB
aU 5'' nD)eros a.eatErios na 3aiAa de ' a 1''.
bU Tabe.a de (raus e.siusS9a,ren,eit desde o ponto de 3uso at= o ponto de ebu.io da :(uaM e)
incre)entos unit:rios.
cU A.tura e) cent)etros atin(ida por u)a pessoaM e) cada e todo ani0ers:rio.
dU %in,as de teAto correspondentes a u)a p:(ina.
eU Tabe.a de preos de u) co)ercianteM 7ue codi3icou seus produtos na 3aiAa de 1'' a ***.
3U adeias .idas e >: processadasM e) u) pro(ra)a 7ue )ostra strin(s in0ertidas.
(U Pares de coordenadas TZMcU indicando a se7F8ncia de pontos de u) (r:3ico.
$0$*$ Opera8Aes 5o6 ?etores
Iuando 7uiser)os re3erenciar Tatribuir ou recuperar o 0a.orU de u) e.e)entoM de0e)os in3or)ar
o no)e do 0etor e a posio do e.e)ento dese>ado entre co.c,etes. Se 3or o pri)eiroM escre0e)os
09re7r1s Tpronuncia2se _09re7 de 1`UN o d=ci)o = 09re7r1's. O nD)ero entre co.c,etesM 7ue indica a
posio dese>adaM = c,a)ado subscrito ou ndice.
EAe)p.osB
vFreq[4] := 100; {atri8ui o 'alor /!! ao elemento na posio ? do 'etor 'Freq}
Write(vFreq[4]); {recupera o 'alor do elemento na posio ? no 'etor 'Freq e
mostra9o na tela}
Write(vFreq[Pos]); {recupera o 'alor de Cos, recupera o 'alor do elemento de
'Freq correspondente ao 'alor de Cos e mostra9o na tela}
>enha em mente !ue um elemento de um vetor uma varivel semelhante
Es outras, odendo so#rer atribui("o, ser assado como ar@metro ou
articiar como oerando em e%ress)es, desde !ue voc indi!ue !ual o
elemento.
%$+ APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
Outros eAe)p.os de re3er8ncias 0:.idas a e.e)entos de 0etoresB
vFreq[Pos] := N;
vFreq[Pos] := vFreq[Pos+1];
vFreq[Pos+1] := vFreq[Pos+2];
v[1] := v[ v[2] ];
A #orma de re#erenciar elementos de vetores idntica E maneira de
re#erenciar caracteres esec'#icos de uma strin$N na verdade, strin$s s"o
vetores do tio charO
@e>a)os u) pe7ueno eAe)p.o inicia..
Pr;ti5a .$.' < Vetores
aU #i(ite o pro(ra)a abaiAo.
PROGRAM MaiordeTres;
{l< tr<s nmeros inteiros +diferentes1, calcula e mostra o maior e a respecti'a
ordem em que foi lido}
uses CRT;
type tNumeros = array[1..3] of integer;
var vNum : tNumeros;
PosMaior : byte;
begin
ClrScr;
Writeln('Programa para identificar o maior dentre trs'
+ ' nmeros inteiros diferentes');
Write('Entre o primeiro nmero: '); Readln(vNum[1]);
Write('Entre o segundo nmero: '); Readln(vNum[2]);
Write('Entre o terceiro nmero: '); Readln(vNum[3]);
if (vNum[1] > vNum[2]) and (vNum[1] > vNum[3]) then
PosMaior := 1
else if vNum[2] > vNum[3] then
PosMaior := 2
else
PosMaior := 3;
Writeln('O maior nmero foi ', vNum[PosMaior], ' na posio ',
PosMaior);
ReadKey;
end.
bU EAecute2o co) o debu((er at= o pri)eiro Read.n. Entre na >ane.a Catc,es a eApresso 0Nu)r1sM
para 0er o pri)eiro e.e)ento do 0etor. EAecute o Read.n e obser0e a >ane.a Catc,es. 9aa o
)es)o para os de)ais e.e)entos.
cU Para 0er todo o 0etorM entre na >ane.a Catc,es apenas o no)e de.eM 0Nu).
dU Teste o pro(ra)a para as se(uintes situa1esB
2 )aior = o pri)eiro nD)ero .ido.
2 )aior = o se(undo.
2 )aior = o terceiro.
10 - LSTAS NUMERADAS: VETORES E MATRZES %$*
Pr;ti5a .$.+ < Trei7a7do reCerG75ias a ?etores
#eter)inar )anua.)ente os 0a.ores de Z i)pressos pe.o pro(ra)a abaiAo. #epois test:2.o e co)parar os
resu.tados.
PROGRAM PraticaVetores;
type tVet = array[1..5] of byte;
var V : tVet;
X : real;
I : byte;
begin
V[1] := 2; V[2] := 4; V[3] := 1; V[4] := 3; V[5] := 5;
X := V[1] + V[5]; Writeln(X);
X := V[2] - V[5]; Writeln(X);
X := V[4] * V[1] - X; Writeln(X);
I := 4;
X := V[ V[I] ]; Writeln(X);
X := V[ V[I] - 1] / V[ V[3] ]; Writeln(X);
end.
E@er55io .$.* D Re?is9o
Assina.e @ ou 9B
T U ") e.e)ento de u) 0etor pode participar co)o operando e) eApress1es.
T U Para re3erenciar u) e.e)ento de u) 0etor = necess:rio indicar o no)e do 0etor e o subscrito.
T U Se o subscrito de u) e.e)ento de u) 0etor 3or u)a eApresso arit)=ticaM esta ser: a0a.iada
antes 7ue o 0etor se>a acessado.
T U ") e.e)ento de u) 0etor pode ser usado e) instru1es Read.nM )as so)ente se o tipo de
dado do 0etor 3or nu)=rico.
Pr;ti5a .$., < Erros de 5o6pila89o 5o6 ?etores
Tente co)pi.ar o pro(ra)a aci)a co) as se(uintes )odi3ica1es Tu)a de cada 0e?UB
aU retire a pa.a0ra arra>
bU retire o oC
cU retire o .i)ite in3erior na dec.arao do 0etor
dU ide)M .i)ite superior
eU ide)M retire o ponto2ponto T..U
3U ide)M retire a pa.a0ra inte(er
(U inc.ua u)a re3er8ncia a @r's
,U ide)M @r4s
iU use para o .i)ite superior u) nD)ero rea. Tpor eAe)p.oM arra> r1..5.+sU
Pr;ti5a .$./ < E@e6ploVetor
aU #i(ite o pro(ra)a EAe)p.o@etor. EAecute2o co) o debu((er e abra a >ane.a Catc,M inc.uindo
ne.a _09re7` e _09re7r1s`.
%$, APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
PROGRAM ExemploVetor;
const cMaxNotas = 10;
type tNotas = array [1..cMaxNotas] of word;
var vFreq, vDur : tNotas;

begin
vFreq[1] := 400;
vDur[1] := 200;
Sound(vFreq[1]); {recupera}
Delay(vDur[1]);
NoSound;
end.
bU A.tere o pro(ra)aM inc.uindo atribui1es de 0a.ores 0ariados aos e.e)entos + e - de cada 0etor.
$nc.ua ta)b=) as instru1es para tocar os sons. Teste.
cU A(ora a.tere o pro(ra)a de 3or)a 7ue e.e continue atribuindo os )es)os 0a.ores aos e.e)entos
1M + e - )as eAecute a nota de u)a posio in3or)ada pe.o tec.ado. Se 3or in3or)ado +M por
eAe)p.oM o pro(ra)a 3a? soar a 3re7F8ncia de 09re7r+s co) a durao 0#urr+s.
dU No pro(ra)a aci)aM a re3er8ncia 09re7r11s seria in0:.idaM por7ue o ta)an,o ):Ai)o do 0etor =
1' e a nu)erao = de 1 a 1'. Pe.o )es)o )oti0oM 09re7r's ta)b=) seria in0:.ida. Para con3erir
issoM inc.ua no pro(ra)a EAe)p.o@etor atribui1es para posi1es abaiAo do .i)ite in3erior e
aci)a do .i)ite superior e tente co)pi.ar.
$0$+$ Pro5essa7do todo u6 ?etor
Iuando 0oc8 precisa processar todos os e.e)entos de u) 0etorM e no sabe 7uantos e.e)entos de
u) 0etor sero usadosM de0e ento usar repeat ou E:ile. No trec,o abaiAoM a .eitura de0e parar 7uando
3or di(itado ?eroM )as ta)b=) de0e)os e0itar 7ue o .i)ite do 0etor se>a u.trapassadoB
Pos := 1;
repeat
Readln(vFreq[I]);
Pos := Pos + 1
until (I > MaxNota) or (vFreq[I] := 0)
Se 0oc8 sabe 7ua. = a D.ti)a posioM o co)ando Cor = o idea.. @e>a a.(uns eAe)p.os para o
0etor de 3re7F8nciasM supondo 7ue a posio do D.ti)o e.e)ento = indicada pe.a 0ari:0e. PosB
for I := 1 to Pos do {escol#a um}
vfreq[I] := 0; {para iniciali(ar}
{ou} Write(vFreq[I]); {para mostrar}
{ou} vfreq[I] := 100 + Random[900];{para preenc#er com um nmero
aleatOrio de /!! a /!!!}
De5lara7do o ta6a7:o do ?etor 5o6o u6a 5o7sta7te
No Pasca. o ta)an,o de u) 0etor Te conse7Fente)ente a )e)Eria uti.i?ada para ar)a?en:2.oU =
de3inido e) te)po de co)pi.ao do pro(ra)aM e no pode ser a.terado. Por issoM de0e2se ter
cuidado para de3ini2.o de 3or)a a atender os ob>eti0os do pro(ra)a se) consu)o desnecess:rio de
)e)Eria. ")a 3or)a con0eniente de dec.arar os .i)ites de u) 0etor = de3inindo constantesM co)o
e)B
10 - LSTAS NUMERADAS: VETORES E MATRZES %$/
const MaxDisc = 100; {quantidade m)xima de disciplinas}
var NomesDisc : array[1..MaxDisc] of string[20];
Notas : array[1..MaxDisc] of real;
#essa 3or)a 0oc8 )ant=) a 7uantidade de e.e)entos do 0etor e) u) sE .u(ar do pro(ra)aM e pode
)odi3ic:2.aM para correo ou oti)i?aoM se) ter 7ue procurar cada co)ando 7ue 3aa re3er8ncia ao
ta)an,o.
Os trec,os de pro(ra)a abaiAo uti.i?a) a dec.araoB
const MaxNotas = 10;
var Notas : array [1..MaxNotas] of real;
Por eAe)p.oM para .er 0:rias notas para o 0etorB

for I := 1 to MaxNotas do
begin
Write ('Entre nota ', I, ' ');
Readln(Nota[I]);
end;
Para )ostrar na te.a todos os e.e)entos de u) 0etorM u) e) cada .in,aB
for I := 1 to MaxNotas do
Writeln(Notas[I]);
Para ac,ar a )aior notaB
MaiorNota := 0;
for I := 1 to MaxNotas do
if Notas[I] > MaiorNota then
MaiorNota := Notas[I];
Para preenc,er u) 0etor de 1'' e.e)entos co) inteiros a.eatEriosM na 3aiAa de ' a ***B
Randomize; {iniciali(a gerador de nmeros aleatOrios}
for I := 1 to 100 do
Vet[I] := Random(1000);
Para pes7uisar u)a deter)inada nota Tneste casoM se) o uso do CorUB
Readln(NotaDesejada);
I := 0;
repeat
I := I + 1
until (Notas[I] = NotaDesejada) or (I > MaxNotas);
if I <=MaxNotas then
Writeln('Encontrada na posio ', I)
else
Writeln('Nota no encontrada');
No >urbo -ascal #un()es n"o odem retornar vetores.
E@e6plo .$.. < Cadeias espel:adas
*a(a um ro$rama !ue leia cadeias C!ual!uer !uantidade, limitada a 40D de at 60 caracteres e
mostre;as eselhadas no centro da tela, como no e%emlo+
%$. APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
Primeira ariemirP
Segunda adnugeS
Terceira ariecreT
...
#e3ini)os a estrutura b:sica do pro(ra)a assi)B
"Ler lista de cadeias, lembrando a quantidade digitada"
Para "cada cadeia na lista", faa
"Posicione cursor para mostrar a cadeia normal"
"Mostre cadeia normal"
"Posicione cursor para mostrar a cadeia invertida"
"nverta e mostre cadeia"
fim
A .ista = u) 0etor co) +' e.e)entosM sendo strin( o tipo de dado de cada e.e)ento. ")a 0ari:0e.
ar)a?enar: a 7uantidade de cadeias di(itadasM >: 7ue o 0etor pode no ser co)p.eta)ente preenc,ido.
Precisare)os ta)b=) de u)a 0ari:0e. para a .in,aM >: 7ue cada cadeia ser: )ostrada e) u)a .in,a
di3erente. Para in0erter u)a cadeia usa)os u)a 3uno >: 0ista. Estude os de)ais deta.,es no pro(ra)aB
PROGRAM EspelhaCadeias;
uses CRT;
const MaxQtCad = 20;
type Str39 = string[39];
tVetCad = array[1..MaxQtCad] of str39;
+)!%T,O! InverteCad (Cad : string) : string;
var Ap : byte;
CadInv : string;
begin
CadInv := '';
for Ap := Length(Cad) donto 1 do
CadInv := CadInv + Cad[Ap];
InverteCad := CadInv;
end;

var I, QtCad, Linha : byte;
vCad : tVetCad;
10 - LSTAS NUMERADAS: VETORES E MATRZES %$$
begin
{l< e arma(ena as cadeias}
ClrScr;
Writeln('Mostra cadeias espelhadas na tela'); Writeln;
I := 0;
repeat
I := I + 1;
Write('Cadeia ', I, ' : ');
Readln(vCad[I]);
until (vCad[I] = '') or (I = MaxQtCad);
{Iem8ra a quantidade de cadeias digitadas}
if vCad[I] = '' then QtCad := I - 1 else QtCad := I;
{limpa a tela e mostra as cadeias normais e espel#adas}
ClrScr;
Linha := 1;
for I := 1 to QtCad do
begin
{Cosiciona cursor para mostrar a cadeia normal, de forma
que o ltimo caractere esteXa na coluna 7}
GotoXY(39 - Length(vCad[I]), Linha);
Write(vCad[I]);
{Rn'erte e mostra a cadeia in'ertida a partir da coluna ?/}
GotoXY(41, Linha);
Write(InverteCad(vCad[I]));
Linha := Linha + 1
end;
end.
O pro(ra)a te) duas te.as de sada distintasB a pri)eiraM de di(itao das cadeiasM e a se(undaM
e) 7ue so )ostradas as cadeias espe.,adas. @e>a a se(uir u)a a)ostra da eAecuo.
Mostra cadeias espelhadas na tela
Cadeia 1 : Em terra de cego,
Cadeia 2 : Quem tem um olho
Cadeia 3 : Anda vendo coisas...
Cadeia 4 :
Em terra de cego, ,ogec ed arret mE
Quem tem um olho ohlo mu met meuQ
Anda vendo coisas... ...sasioc odnev adnA
Pr;ti5a .$.$ < Espel:aCadeias
$nc.ua no pro(ra)a Espe.,aadeias u)a repetio para 7ueM apEs )ostrar as cadeias espe.,adasM e.e
per(unte ao usu:rio se dese>a repetir eM se a resposta por positi0aM 0o.te para .er no0a)ente outras cadeias.
Pr;ti5a .$.%0 D Vetores 5o6 5o6a7dos de repeti89o
O pro(ra)a Toca@etor abaiAo i)p.e)enta a especi3icao do incio do teAto. Teste o pro(ra)a usando as
seis notas do Parab=ns Tp:(. &*U
&00 APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
PROGRAM TocaVetor;
{l< ')rias freqP<ncias e duraes para um 'etor
e depois YtocaY as notas na seqP<ncia}
uses CRT;
const cMaxNotas = 10;
type tNotas = array [1..cMaxNotas] of word;
var vFreq, vDur : tNotas;
Pos, I : byte;
begin
ClrScr;
{leitura das notas}
Pos := 0;
repeat
Pos := Pos + 1;
Write('Frequncia ', Pos, ': ');
Readln(vFreq[Pos]);
Write('Duraao ', Pos, ': ');
Readln(vDur[Pos]);
until (vFreq[Pos] = 0) or (vDur[Pos] = 0)
or(Pos > cMaxNotas);
{toca notas no 'etor}
for I := 1 to Pos - 1 do
begin
Sound(vFreq[I]);
Delay(vDur[I]);
NoSound;
end;
end.
Note e) particu.ar no pro(ra)a aci)aB
X: u)a 0ari:0e. TPosU para contro.ar a posio de insero nos 0etores. E.a se)pre aponta para a
prEAi)a posio .i0re.
Na pri)eira parteM a .eitura dos 0a.oresM 3oi usado u) repeatM >: 7ue no se sabe 7uantas notas o
usu:rio ir: entrar. R: na se(unda parteM sendo con,ecida a 7uantidade de pares co)p.etos .idos
TPos k1UM usou2se Cor.
A repetio da .eitura ter)ina se u) dos 0a.ores .idos 3oi ?ero ou se 3oi atin(ido o ta)an,o
):Ai)o do 0etor.
ada 0e? 7ue = 3eita a insero de u) par co)p.eto 3re7F8nciaSduraoM a 0ari:0e. Pos =
incre)entadaM para apontar para a prEAi)a posio do 0etor.
Espe5iCi5a89o .$.%% D MZsi5a aleatBria
9aa u) pro(ra)a co) os )es)os 0etores do pro(ra)a Toca@etor 7ueM ao in0=s de .er os 0a.ores do
tec.adoM e usando u) co)ando 9ORM sorteia as 1' 3re7F8ncias na 3aiAa de -'' a -''' r-'' t
Rando)T+&''Us e as 1' dura1es na 3aiAa de +' a +'' r+' t Rando)T15'Us. A cada eAecuo u)a
_)Dsica` di3erenteW %e)bre2se de c,a)ar a instruo Rando)i?e antes de co)ear o sorteio.
Pr;ti5a .$.%& < Outros ?etores
9aa u) pro(ra)a de teste e tente co)pi.ar as se(uintes dec.ara1es de 0etores. Assina.e as 0:.idasB
10 - LSTAS NUMERADAS: VETORES E MATRZES &0%
a) type tStringGrande = array [1..1000] of char;
b) type tTabFahreneitCelsius = array [32..212] of real;
c) type tGraus = array [-360..360] of real;
d) type tProdutos = array [1000..9999] of string[4];
e) type tSimNao = array [1..20] of boolean;
f) type tTextoLongo = array [-10000000..10000000] of char;
g) type tSubFaixa = array [1..10] of (1..6);
h) type tNota = (0..10)
i) type tNotas = array [1..50] of tNota;
Espe5iCi5a89o .$.%' < MRdia
Escre0er u) pro(ra)a 7ue .eia +' nD)eros inteiros para u) 0etor e ca.cu.e a )=dia dos 0a.ores.
Espe5iCi5a89o .$.%+ < MRdia ?&
A.tere o pro(ra)a anterior para 7ue .eia at +' nD)eros inteiros para u) 0etor e ca.cu.e a )=dia dos
0a.ores Tdec.are u)a 0ari:0e. para contro.ar 7uantos nD)eros 3ora) .idosU.
Espe5iCi5a89o .$.%* < Maior e 6e7or
Escre0er u) pro(ra)a 7ue preenc,a u) 0etor de 1'' e.e)entos co) 0a.ores inteiros a.eatEriosM e
identi3i7ue o )aior e o )enor nD)ero (eradosM e respecti0as posi1es.
Espe5iCi5a89o .$.%, < Ta=ela de te6peratura
$)p.e)entar u) pro(ra)a 7ue )onta u)a tabe.a de (raus e.siusS9a,ren,eit desde o ponto de 3uso at=
o ponto de ebu.io da :(uaM e) incre)entos unit:rios. ApEs so o3erecidas op1es para o usu:rio 0er na
te.a ou i)pri)ir.
Espe5iCi5a89o .$.%/ < PesFuisa 7otas
E.aborar pro(ra)a co) op1es paraB .er 1' notas de ' a 1'M pes7uisar se u)a nota eAiste no 0etor e
)ostrar o conteDdo do 0etor. Na .eituraM re>eitar notas 3ora da 3aiAa 0:.ida.
Espe5iCi5a89o .$.%. < No6e do dia
onstrua u) pro(ra)a 7ue .8 u) nD)ero de 1 a & e in3or)aM usando 0etorM o dia da se)ana
correspondenteM sendo do)in(o o dia de nD)ero 1. Se o nD)ero esti0er 3ora da 3aiAa 0:.idaM = )ostrada
u)a )ensa(e) de erro. #ec.are u)a 3uno 7ue recebe o dia e retorna o no)e do dia.
O >urbo -ascal ermite declarar constantes tiadas, isto , com tio
tambm declarado. Msto 8til ara inicializar vetores !ue contm valores
constantes. -or e%emlo, ara a eseci#ica("o acima+
co#s% 1ias + arraA ]1..:^ of strin$]10^ c C\1omin$o\, \2e$unda\, \>er(a\,
\Iuarta\, \Iuinta\, \2e%ta\, \2bado\12
Espe5iCi5a89o .$.%$ < No6e do 6Gs
Escre0er u)a 3uno 7ue recebe nD)ero do )8s e retorna seu no)e por eAtenso. $nseri2.a e) u) unit
>unta)ente co) a 3uno da especi3icao anterior.
Espe5iCi5a89o .$.&0 < Alu7os e 7otas
$)p.e)ente u) pro(ra)a 7ue .8 u)a .ista de pares no)es de a.unoSnotas. #epois so )ostrados na te.a
os no)es e as notasM >unta)ente co) a 7uantidade de a.unos e a )=dia das notas.
&0& APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
Espe5iCi5a89o .$.&% < Tro5o
$)p.e)ente u) pro(ra)a 7ue reso.0e o prob.e)a do trocoB dado u) 0a.or de u)a 0endaM u) 0a.or pa(o
e u) esto7ue de notas e )oedas Ttodos os poss0eisUM ca.cu.ar o troco e as notas ou )oedas e respecti0as
7uantidades 7ue de0e) ser entre(ues ao c.iente. Procure estruturas de dados 7ue per)ita) so.u1es )ais
si)p.esM co)o por eAe)p.o u) 0etor co) o 0a.or de cada nota ou )oedaM e) orde) decrescente de
0a.or.
Espe5iCi5a89o .$.&& < Pala?ras gra7des
9aa u) pro(ra)a 7ue .8 u)a cadeia de at= 1' caracteres e a )ostra na te.a co) .etras (randes. ada
.etra = 3or)ada por u)a )atri? 5A5M co) a.(u) caractere nas posi1es ade7uadas de 3or)a a co)por o
desen,o de cada .etra Tcada caractere = co)o se 3osse u) piAe. 2 0e>a su(esto abaiAoU. Para separar u)a
.etra da outraM 7uando )ostradas na te.aM 0oc8 pode deiAar e) branco u)a .in,a e u)a co.una de cada
.etraM na prEpria )atri?.
q
q q
q q
q q
q q q q q
q q
q q
Espe5iCi5a89o .$.&' < #e7a
9aa u) pro(ra)a 7ue .8 apostas da senaM os nD)eros sorteados e apresente os resu.tados obtidos pe.o
apostadorB senasM 7uinas e 7uadras.
Espe5iCi5a89o .$.&+ < CodiCi5a89o de pre8o
ertas .o>as usa) Tou pe.o )enos usa0a)U u) siste)a de codi3icao de preos associando os de? d(itos
O pa.a0ra PERNA!<"O. $)p.e)ente u) pro(ra)a 7ue .8 u) preo e )ostra2o codi3icadoM ou .8 u)
cEdi(o e )ostra o preo.
Espe5iCi5a89o .$.&* < Maior e 6e7or
Escre0er u) pro(ra)a co) 7uatro op1es Ti)p.e)entadas atra0=s de instru1es dec.aradasUB preenc,er
u) 0etor de 1' e.e)entos co) 0a.ores inteiros a.eatEriosM )ostrar o conteDdo do 0etorM identi3icar o
)aior e o )enor nD)ero (eradosM e respecti0as posi1es.
$0$,$ Registros
o)o 0i)osM u) e.e)ento de u) 0etor pode ser apenas de u) tipo de dado. E) a.(u)as
situa1esM isto pode ser incon0eniente. Supon,a 7ue u)a especi3icao pede para ar)a?enar no)es de
discip.inas e respecti0as notas. Se) a.(u) outro recursoM precisara)os dec.arar u) 0etor de cadeias para
as discip.inas e outroM de reaisM para as notas.
O Pasca. per)ite u)a so.uo e.e(ante para este incon0enienteM por )eio da dec.arao de 0:rios
dados e) u) Dnico tipo de dadoB o registro. ") re(istro = u) a(re(ado de 0ari:0eisM de tipos de dados
distintosM e) u) Dnico tipo de dadoM 7ue por isto = c,a)ado de estruturado. Pode)os usar re(istros
iso.ada)enteM co)binados co) 0etores e ta)b=) para usar e) ar7ui0os.
") re(istro = dec.arado atra0=s da pa.a0ra reser0ada re5ordM se(uida das dec.ara1es das
0ari:0eis 7ue o co)p1e)M e ter)inando co) e7d. Tipica)ente e3etua2se a dec.arao e) u)a seo
10 - LSTAS NUMERADAS: VETORES E MATRZES &0'
t>peM e)bora e.a possa ocorrer direta)ente na seo de 0ari:0eis. @e>a os eAe)p.os de dec.arao de
re(istros e de 0ari:0eisB
type tData = record
Dia, Mes : byte;
Ano : integer;
end;
tNota = record
NomeDisciplina : string[15];
ValorNota : real;
end;
tCoordenadas = record
X, Y : byte
end;
tPessoa = record
Nome : string[30];
Endereco : string[50];
DataNasc : tData;
Fone : string[10];
E-mail : string[30];
end;
var PosicaoTela : tCoordenadas;
Cliente : tPessoa;
Obser0e na D.ti)a dec.arao da seo t>pe co)o u) re(istro pode ser co)posto de outros
re(istrosB o tipo tPessoa cont=) o ca)po #ataNascM 7ue por sua 0e? = ta)b=) u) re(istroM co)posto dos
ca)pos #iaM !es e Ano.
ReCerG75ias a 5a6pos D Para atribuir a ou recuperar 0a.ores de ca)posM = preciso indicar tudo o
7ue 3or preciso para o co)pi.ador identi3icar o ca)po se) a)bi(FidadeB o no)e da 0ari:0e. e o no)e do
ca)poM separados por u) ponto. Para si)p.i3icar as re3er8ncias a ca)posM pode)os usar a dec.arao
Yit:...doM na 7ua. indica)os o no)e do re(istro 7ue ser: re3erenciado. #entro do escopo do Cit,M
pode)os escre0er so)ente o no)e dos ca)pos.
Para eAe)p.i3icarM pri)eiro dec.ara)os u) re(istro co) no)e de discip.ina e 0a.or da respecti0a
nota. #epois de3ini)os u) 0etor co) capacidade de ar)a?enar at= +' re(istros de notas. 9ina.)enteM
dec.ara)os u) re(istro para ar)a?enar in3or)a1es sobre a.unosM contendo u) no)e e u)a .ista de
notas. Obser0e no b.oco de cEdi(o abaiAo as 0:rias possibi.idades de re3er8ncia a ca)posM inc.uindo
dec.ara1es Cit,.
PROGRAM ExemplosReferenciasACampos;
type tNota = record
NomeDisciplina : string[15];
ValorNota : real;
end;
tVetNotas = array[1..20] of tNota;
tAluno = record
Nome : string[30];
Notas : tVetNotas;
end;
var vAlunos : array[1..50] of tAluno;
&0+ APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
begin
{refer<ncias normais a campos de registros}
vAlunos[1].Nome := 'Adalberto';
vAlunos[1].Notas[1].NomeDisciplina := 'Portugus';
vAlunos[1].Notas[1].ValorNota := 7.5;
vAlunos[1].Notas[2].NomeDisciplina := 'Ingls';
vAlunos[1].Notas[2].ValorNota := 8;
{forma simplificada de refer<ncia a campos usando *it#}
2ith vAlunos[1] do
begin
Nome := 'Adalberto';
Notas[1].NomeDisciplina := 'Portugus';
Notas[1].ValorNota := 7.5;
2ith Notas[2] do
begin
NomeDisciplina := 'Ingls';
ValorNota := 8;
end;
end;
end.
Pode)os ap.icar o recurso de dec.arar re(istros no pro(ra)a 7ue toca )Dsicas. Ao in0=s de
dec.arar dois 0etoresM precisa)os de apenas u)B
type tNota = record
Freq, Dur : word;
end;
tMusica = array [1..10] of tNota;
@e>a no 7uadro co)o 3ica o pro(ra)a Toca@etor usando essas dec.ara1es.
PROGRAM TocaVetor_v2;
uses CRT;
const cMaxNotas = 10;
type tNota = record
Freq, Dur : word;
end;
tMusica = array [1..cMaxNotas] of tNota;
var vMusica : tMusica;
Pos, I : byte;
begin
ClrScr;
Pos := 0;
repeat {leitura das notas}
Pos := Pos + 1;
Write('Frequncia ', Pos, ': '); Readln(vMusica[Pos].Freq);
Write('Durao ', Pos, ': '); Readln(vMusica[Pos].Dur);
until (vMusica[Pos].Freq = 0) or (vMusica[Pos].Dur = 0)
or (Pos > cMaxNotas);
10 - LSTAS NUMERADAS: VETORES E MATRZES &0*
{toca notas no 'etor}
for I := 1 to Pos - 1 do
begin
ith vMusica[I] do
begin
Sound(Freq);
Delay(Dur);
NoSound;
end;
end;
end.
Pr;ti5a .$.&, < To5aVetorg?&
aU #i(ite e teste2o.
bU A.tere o pro(ra)a Toca@etor\0+ para usar Eit: ta)b=) no b.oco de .eitura
E@er55io .$.&/ D De5lara89o de registros
#ec.are re(istros e 0etores para representarB
aU A.tura e) cent)etros e peso e) P( co) u)a casa deci)a.M atin(idos por u)a pessoaM e) cada e
todo ani0ers:rio.
bU Pares de coordenadas TZMcU indicando a se7F8ncia de pontos de u) (r:3ico
cU %ista de ar7ui0osM contendo no)eM eAtensoM ta)an,o e) bYtesM data e ,ora.
dU Sa.:rios recebido e) u) ano por u) 3uncion:rioM inc.uindo 0a.ores bruto e .7uidoM $NSS e $RP9.
Espe5iCi5a89o .$.&. < #o6a e6 ?etor %
Escre0er u) pro(ra)a 7ueM apEs preenc,er dois 0etores co) nD)eros inteiros a.eatEriosM so)a os 0a.ores
dos e.e)entos correspondentes de dois 0etoresM ar)a?enando o resu.tado nu) terceiro 0etor.
Espe5iCi5a89o .$.&$ < #o6a e6 ?etor &
E.abore u) pro(ra)a se)e.,ante ao anteriorM eAceto 7ueM e) apenas u) 0etorM so)a os 0a.ores de dois
ca)pos e ar)a?ena o resu.tado e) u) terceiro ca)po de u) re(istro.
Espe5iCi5a89o .$.'0 < Valida89o de se7:a
$)p.e)entar u) pro(ra)a 7ue .8 u) no)e e u)a sen,a Tentre / e 5 caracteresU e 0eri3ica e o usu:rio est:
autori?ado ou no. Para essa 0eri3icaoM o pro(ra)a )ant=) u)a .ista de no)es e respecti0as sen,as. O
pro(ra)a )ostra )ensa(ens de erro se o no)e ou a sen,a esti0ere) incorretos. So per)itidas at= -
tentati0as.
Espe5iCi5a89o .$.'% < Valida89o de se7:a ?&
9aa u) pro(ra)a se)e.,ante ao anteriorM )as 7ue apresenta u) )enu co) op1es paraB inc.uir no)es e
sen,asM .er e 0a.idar no)e e sen,aM ?erar 0etor de sen,asM ter)inar.
Espe5iCi5a89o .$.'& < MRdia po7derada
Escre0er u) pro(ra)a 7ue ca.cu.a )=dias ponderadas para u)a 7uantidade de 3atores de at= 15. O
pro(ra)a .8 0:rios pares rnD)eroM pesos at= 7ue se>a .ido u) nD)ero ne(ati0o. ^ ca.cu.ada ento a
)=diaM so)ando2se os produtos de cada nD)ero por seu peso e di0idindo2se o resu.tado pe.a so)a dos
pesos.
&0, APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
$0$-$ MatriQes
") pro3essor 7uer 3a?er u) pro(ra)a 7ue ar)a?ene notas de a.unos para cada discip.ina 7ue
.eciona e )ostre a.(u)as in3or)a1es. O 7ue e.e dese>a = u)a tabe.a co) a 3or)aB
Alu7oVDis5ipli7a IPD )P% (a75os de dados
Gil=erto &.5 5 5.5
Patr5ia / /.5 4
#i6o7e 5 1' *.5
Iua. ser: a )e.,or estrutura de dados para ar)a?enar esta tabe.a[ O 7ue o pro3essor precisa = de
u)a eAtenso do conceito de 0etoresM c,a)ada 6atriQ. Ao in0=s de apenas u)a di)ensoM co)o os
0etoresM )atri?es so .istas )u.tidi)ensionaisN no eAe)p.o aci)aM a estrutura ade7uada = u)a )atri? de
duas di)ens1es.
As di3erenas b:sicas entre 0etores e )atri?es soB
Na dec.araoM de0e)os in3or)ar a 3aiAa de subscritos para cada di)ensoB
var Mat := array [1..10, 1..20, 1..5] of byte;
Ao acessar u) e.e)ento de u)a )atri?M de0e)os in3or)ar o subscrito para cada di)ensoB
Mat[1, 11, 2] := 77;
Readln( Mat[9, 7, 1] );
Writeln( Mat[2, 5, 5] );
E@e6plo .$.'' D A5:e a 5areta
Elaborar um ro$rama !ue reenche uma rea da tela C17%17D com caracteres aleatrios e
esconde al$um caractere A2,MM Ccomo o 1, uma caretaD em uma osi("o aleatria, ara o
usurio descobrir onde est. Antes de reencher a tela, monte;a em uma matriz com os cdi$os
A2,MM. .se constantes ara de#inir a rea da tela !ue ser usada e o cdi$o do caractere a
esconder.
Note 7ue para a so.uo no precisa)os estrita)ente usar u)a )atri?M )as 3a?er isso proporciona
3.eAibi.idade de incorporao de no0as caractersticas. @e>a a se(uir o pro(ra)a Ac,eNaTe.aM co)
eAe)p.o de u)a te.a (erada Tos caracteres pode) no ser eAata)ente os )es)osM de0idos a di3erenas
nas p:(inas de cEdi(o do siste)a operaciona.U.
10 - LSTAS NUMERADAS: VETORES E MATRZES &0/
++++_+
-++a___+_+
-_+a-++
+++++_-+
++_-_+++_
_+-a-_+
n+_++_+_
u--+_-
-__+_+__
_+___+
+___+_+
___+_____
____++
+_+__-_++---
n_+_+u___
Ache o !
PROGRAM AcheNaTela;
{&sconde uma careta na tela preenc#ida com caracteres aleatOrios, para
a pessoa desco8rir onde est)}
uses CRT;
const cMaxLin = 15;
cMaxCol = 15;
cCarEscondido = 1;
var vTela : array[1..cMaxLin,1..cMaxCol] of byte;
L, C : byte;
begin
{Creenc#e a matri( com caracteres aleatOrios na faixa JNDRR superior a /%B}
Randomize;
for L := 1 to cMaxLin do
for C := 1 to cMaxCol do
vTela[L,C] := 128 + Random(126);
{Norteia posio e pe a careta}
vTela[1+Random(cMaxLin-1),1+Random(cMaxCol-1)] := cCarEscondido;
{transpe para a tela}
ClrScr;
for L := 1 to cMaxLin do
for C := 1 to cMaxCol do
begin
GotoXY(C,L);
Write(Chr(vTela[L,C]));
end;
GotoXY(1, cMaxLin+2);
Write('Ache o ', chr(cCarEscondido),'!');
ReadKey;
end.
E@e6plo .$.'+ D RiCa
@e>a a(ora u) eAe)p.o de co)o o co)porta)ento de u) 0etor de strin(s = o )es)o de u)a )atri?.
.ma ri#a sorteada com base nos n8meros da 9oteria *ederal da se$uinte maneira+ o rimeiro
rmio #ormado obtendo;se o rimeiro d'$ito de cada rmio. O se$undo obtido atravs dos
&0. APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
se$undos d'$itos, e assim or diante. -or e%emlo, suonha !ue os n8meros da 9oteria *ederal
s"o+
1 ; B7.G0a
4 ; C7.:aa
6 ; D1.415
5 ; E:.a50
7 ; F:.560
Os rmios da ri#a ser"o 5G.06:, 77.1::, etc.
A estrutura do pro(ra)a = si)p.esB .er os nD)eros sorteados na .oteriaM identi3icar os nD)eros pre)iados
na ri3aM )ostrar os nD)eros pre)iados na te.a. PortantoM 0a)os nos concentrar no passo Videnti3icar os
nD)eros pre)iadosV e e.aborar u) a.(orit)o. A esco.,a da estrutura de dados a7ui = a c,a0eB apesar de
os dados sere) nD)erosM represent:2.os co)o strin(s torna )ais 3:ci. a so.uoN tere)os u) 0etor de
strin(s para os pr8)ios da .oteria e outro para a ri3a. E co)o strin(s so u) tipo de 0etorM esta)os
tratando co) u)a )atri? 5A5. O a.(orit)o e7ui0a.e a in0erter u)a )atri?B o 7ue = .in,a 0ira co.una e
0ice20ersa.
PROGRAM CalculaNumerosRifa;
type tPremios = array [1..5] of string[5];
var vLot, vRifa : tPremios;
Premio, Posicao : byte;
PRO%E*)RE CalcNumRifa(var vLoteria, vRif : tPremios);
{ac#a os nmeros premiados na rifa a partir dos nmeros premiados
na rifa}
begin
for Premio := 1 to 5 do
begin
vLoteria[Premio] := '';
for Posicao := 1 to 5 do
vRif[Premio] := vRif[Premio] + vLoteria[Posicao,Premio]
end;
end;
begin
{leitura dos nmeros sorteados na loteria}
+or Premio := 1 to 5 do begin
Write('Numero ', Premio, ': ');
Readln(vLot[Premio]);
end;
CalcNumRifa(vLot, vRifa);
Writeln('Nmeros da rifa:'); {mostra resultados}
+or Premio := 1 to 5 do
Writeln(Premio, ': ',vRifa[Premio]);
end.
E@er55io .$.'* D De5lara89o de 6atriQes
#e3ina e dec.are e) Pasca. estruturas de dados apropriadas para representar
aU ") teAto co) at= 1''' caracteres
bU ") teAto co) at= 1''' .in,as de 5' caracteres cada u)a
10 - LSTAS NUMERADAS: VETORES E MATRZES &0$
cU >o(o2da20e.,a
dU u) tabu.eiro de da)as TcasasM posio e cor da pedraU
eU u) tabu.eiro de bata.,a na0a.
3U u) tabu.eiro de Aadre?
(U todas as posi1es de u)a te.a de co)putador e) )odo teAto padro T+5A5'U
,U as +5 .in,as da te.a
iU O >o(o a)po !inadoM do Cindo6s.
>U u) .abirinto TparedesM .oca.i?ao do tesouro e do )onstroM ou outra coisa 7ue 0oc8 in0entarU.
Espe5iCi5a89o .$.', < A5:eNaTela 5o6 5or
A.tere o pro(ra)a Ac,eNaTe.a para 7ue se>a sorteado e ar)a?enadoM a.=) do cEdi(o AS$$ de cada
caractereM a sua cor. Ao transpor a )atri? para a te.aM a>uste ta)b=) a cor de cada caractere.
Pr;ti5a .$.'/ < Cal5ulaNu6erosRiCa
Teste o pro(ra)a a.cu.aNu)erosRi3a co) os )es)os nD)eros do eAe)p.o.
Espe5iCi5a89o .$.'. < #o6a de 6atriQes
E.abore u) pro(ra)a 7ue .8 duas )atri?es +A+M e3etua sua so)a Te.e)ento a e.e)entoU e) u)a terceira e
)ostra todas as e.as na te.a.
Espe5iCi5a89o .$.'$ < MatriQ i7?ersa
E.abore u) pro(ra)a 7ue preenc,e u)a )atri? 5A5 co) caracteres AS$$ a.eatErios e depois a )ostra na
te.a co) est: e in0ertidaM isto =M as .in,as se torna) co.unas e 0ice20ersa.
$0$.$ Ati?idades suple6e7tares
E@er55io .$.+0 D DiCere78as
#escre0a as di3erenas entre 0etores e )atri?es.
E@er55io ...+% < A5:eNaTela ?&
#escre0a co)o o pro(ra)a Ac,eNaTe.a poderia ser i)p.e)entado se) a dec.arao de u)a )atri?.
Espe5iCi5a89o .$.+& < Luadrado 6;gi5o
") !uadrado m$ico = a7ue.e di0idido e) .in,as e co.unasM co) u) nD)ero e) cada posio e no 7ua.
a so)a das .in,asM co.unas e dia(onais = a )es)a. Por eAe)p.oM 0e>a u) 7uadrado ):(ico de .ado -M co)
nD)eros de 1 a *B
5 - /
1 5 *
4 & +
E.abore u) pro(ra)a 7ue identi3ica e )ostra na te.a todos os 7uadrados ):(icos co) as caractersticas
aci)a. Ana.ise os 7uadrados )ostrados e 0eri3i7ue se ,: a.(u)a di3erena b:sica entre e.es ou se pode)
&%0 APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
ser considerados os )es)o sob a.(u) aspecto. ]1ica+ roduza todas as combina()es oss'veis e
veri#i!ue a soma !uando comletar cada !uadrado. .sar um vetor de 1 a 0 Ca estrutura !ue useiD arece
ser mais simles !ue usar uma matriz 6%6^
Espe5iCi5a89o .$.+' < Pree75:i6e7to de 6atriQ
onsiderando 7ue cada e.e)ento de u)a )atri? bidi)ensiona. = desi(nado por A
i>
ou ATiM>UM dec.are u)a
instruo 7ue preenc,e cada e.e)ento de u)a )atri? !AN co) it>. 9aa u) pro(ra)a de teste 7ue
c,a)a a 3uno para pe.o )enos - co)bina1es de ! e N.
&%%
$(% TRA1A#:O ;INA#
")a das )e.,ores 3or)as de aprender a pro(ra)ar = .idando co) situa1es no0asM para as 7uais
0oc8 ac,a u)a so.uo onde antes pouco sabia. 9a?er u) pro(ra)a )aior = u)a 3or)a de 3a?er istoM ao
)es)o te)po e) 7ue os no0os con,eci)ento so inte(rados. Por istoM 0oc8 de0e 3a?er pe.o )enos u)
dos traba.,os indicados neste captu.o. "se co)o inspirao a i)p.e)entao descrita. E en0ie2)e o
pro(ra)a para 7ue se>a inc.udo co)o de)onstrao nesta aposti.aW
No i)a(ine 7ue u) pro(ra)a = i)p.e)entado .inear)enteM etapa por etapa. ^ )ais pro0:0e.
7ue 0oc8 0: e 0o.te 0:rias 0e?es nas 0:rias 3asesM O )edida e) 7ue a)adurece sua co)preenso da
especi3icao e do resu.tado 3ina..
$(%$($Espe5iCi5a89o
Escrever um ro$rama ara #azer estat'sticas de notas de um aluno. O ro$rama o#erece o()es
de+ entrar com nomes de discilinas e resectivas notas, achar a maior nota, achar a menor nota e
calcular a mdia das notas. Iuando mostra al$um resultado, o ro$rama esera ser teclado al$o ara
o#erecer novamente o menu.
O pri)eiro passo = .er a especi3icao a.(u)as 0e?esM e deiAar 7ue se>a) 3or)adas as pri)eiras
i)press1es. Neste ponto descobri)os )uitas coisas 7ue n"o sabe)os.
$(%$)$ProHeto
O pro(ra)a te) u) )enu inicia.M )encionado na especi3icao. Assi)M a te.a inicia. conter: as
7uatro op1es pre0istas na especi3icao e u)a outra para ter)inar o pro(ra)a. E.a 3ica de3inida co)o
abaiAo. Note 7ue nosso ob>eti0o = i.ustrar as etapas de pro(ra)ao e por isto e0ita)os Ven3eitesVM do tipo
3or)atao de te.a. 9i7ue O 0ontade para e)be.e?ar seus pro(ra)asM se ti0er te)po para isso.
ESTATSTICA DE NOTAS
0 - Fim
1 - Entra valores
2 - Maior nota
3 - Menor nota
4 - Media
Opo: _
Iuando o usu:rio esco.,erM o pro(ra)a 3ar: o 7ue 3or pedido abaiAo do )enu. Por eAe)p.oM a
entrada de 0a.ores pode ocorrer assi)B
&%&
ESTATSTICA DE NOTAS
0 - Fim
1 - Entra valores
2 - Maior nota
3 - Menor nota
4 - Media
Opo: 1
Tecle Enter na disciplina para terminar
Nome da disciplina: Calculo
Nota de Calculo : 8
Nome da disciplina: Pascal
Nota de Pascal : 9.5
Nome da disciplina: TGA
Nota de TGA : 7.5
Nome da disciplina: _
0 - Fim
1 - Entra valores
2 - Maior nota
3 - Menor nota
4 - Media
Opo: 4
Media das notas: 8.33
Assi) 7ue o usu:rio tec.ar Enter no no)e da discip.inaM .i)pa)os a te.a e reapresenta)os o
)enu. Para as de)ais op1es si)p.es)ente = )ostrado o 7ue 3oi pedido e espera2se u)a tec.a antes de
.i)par a te.a e )ostrar no0a)ente o )enu. Ao e.aborar seus pro>etosM reco)endo deta.,ar todo o
pro(ra)a.
$(%$*$Progra6aDCo7te
Pode)os co)ear o pro(ra)a23onte pe.a sua estruturaM representada por u) dia(ra)a de b.ocos.
Podera)os 3a?er re3ina)entos sucessi0osM se 7uis=sse)os. @e>a a se(uirN por 7uest1es de espaoM no
est: representada a opo de c:.cu.o da )enor nota.
Precisa)os de u)a estrutura de dados 7ue (uarde as notasB u) 0etor de notas e discip.inasM
nu)erado de 1 at= a 7uantidade ):Ai)a de notas 7ue se espera. Para 3aci.itar as dec.ara1es e e0entuais
a.tera1esM dec.ara)os a 7uantidade de e.e)entos co)o u)a constante e o tipo do 0etor e) u)a
dec.arao t>pe. ada e.e)ento do 0etor de notas ir: ar)a?enar u)a nota e u)a discip.inaM portanto o
tipo de dado ser: u) re(istro co) u) ca)po rea. e outro strin(. As dec.ara1es seroB
const MaxNotas = 50;

type str15 = string[15];
Notas = record
Disc : str15;
Nota : real;
end;
tvetNotas = array [1..cTamVet] of Notas;
")a 7uesto sur(eB 7uando o usu:rio 3or usar o pro(ra)aM e.e se)pre di(itar: 5' discip.inas[
#i3ici.)ente. Precisa)os ento contro.ar 7uantas discip.inas Te portanto notasU o usu:rio di(itouB u)a
11 - TRABALHO FNAL &%'
0ari:0e.M 7ue c,a)are)os !aAAtua.. Esta 0ari:0e. ser0ir: de re3er8ncia para acessos ao 0etorM ao in0=s
da constante 7ue indica o ta)an,o do 0etor.
A partir do dia(ra)a de b.ocosM identi3ica)os as instru1es 7ue pode)os dec.arar. Para as a1es
de ac,ar a )aior notaM a )enor e a )=diaM co)o cada u)a retorna apenas u) 0a.or inteiro ou rea.M sero
tr8s 3un1es. Para 7ue se>a) independentes das 0ari:0eis (.obaisM os dados de entrada so dec.arados
co)o par)etrosM e a sada = o 0a.or de retorno da 3uno. Pode)os inicia.)ente de3inir so)ente os
cabea.,osB
+)!%T,O! PosMenor (vNotas : tVetNotas; Max : byte ) : byte;
{retorna su8scrito da menor nota}
+)!%T,O! PosMaior (vNotas : tVetNotas; Max : byte ) : byte;
{retorna su8scrito da maior nota}
+)!%T,O! Media (vNotas : tVetNotas; Max : byte ) : real;
{retorna media das notas}
Pode)os escre0er cada u)a con,ecendo apenas o 7ue de0e) 3a?er e as estruturas de dados
esco.,idasN 0e>a a se(uir. No ,: traba.,o si(ni3icati0o re.acionado aos a.(orit)osM todos 3ora) baseados
no conteDdo do captu.o sobre 0etores. !as se 3osse necess:rioM desen0o.0era)os cada u) e) separado
dos de)aisM 3aci.itando bastante o processo.
$ n i c i a . i ? a o
E s t a t s t i c a d e
n o t a s d e a . u n o
< . o c o d e
c o n t r o . e
9 i n a . i ? a o
! e n u
a . c u . a r
) a i o r n o t a
S e . e o
: . c u . o d a
) a i o r n o t a
: . c u . o d a
) = d i a
@ a . i d a o E n t r a d a
! o s t r a r ) a i o r
n o t a
% e i t u r a d a s
n o t a s
a . c u . a r ) = d i a
d e n o t a s
! o s t r a r ) = d i a
&%+ APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
+)!%T,O! PosMenor (vNotas : tVetNotas; Max : byte ) : byte;
{retorna su8scrito da menor nota}
var P, S : byte;
begin
P := 1;
for S := 2 to Max do
if vNotas[S].Nota < vNotas[P].Nota then P := S;
PosMenor := P
end;
+)!%T,O! PosMaior (vNotas : tVetNotas; Max : byte ) : byte;
{retorna su8scrito da maior nota}
var P, S : byte;
begin
P := 1;
for S := 2 to Max do
if vNotas[S].Nota > vNotas[P].Nota then P := S;
PosMaior := P
end;
+)!%T,O! Media (vNotas : tVetNotas; Max : byte ) : real;
{retorna media das notas}
var Soma : real;
S : byte;
begin
Soma := 0;
for S := 1 to Max do Soma := Soma + vNotas[S].Nota;
Media := Soma/Max
end;
.As 0ari:0eis (.obais 7ue precisa) ser dec.aradas so as )es)as 7ue de0e) ser passadas para as
3un1esM )ais o 0etor das discip.inas e a opo. Para estrutura )e.,or o pro(ra)aM decidi)os dec.arar
instru1es ta)b=) para a .eitura da opo e entrada de notasB
2 !ostrar o )enuM .er e retornar a opo T3unoU
2 %er e retornar 0a.ores das notasM discip.inas e a 7uantidade de notas .idas Tprocedi)entoU
Pode)os a(ora )ontar o pro(ra)a >untando as 0:rias partes e.aboradas e) separado e
codi3icando as partes )ais si)p.es 7ue 3a.ta0a)B
11 - TRABALHO FNAL &%*
PROGRAM EstatisticaDeNotas;
uses CRT;
const cTamVet = 20;
type str15 = string[15];
Notas = record
Disc : str15;
Nota : real;
end;
tvetNotas = array[1..cTamVet] of Notas;
var N : tvetNotas;
Opcao, MaxAtual, Pos : byte;
+)!%T,O! Menu : byte;
{mostra menu, l< e retorna opo}
var Op : byte;
begin
Writeln('0 - Fim');
Writeln('1 - Entra valores');
Writeln('2 - Maior nota');
Writeln('3 - Menor nota');
Writeln('4 - Media');
Write('Op: '); Readln(Op);
Menu := Op;
end;
PRO%E*)RE EntraValores( var VNotas : tVetNotas;
var Max : byte );
{I< e retorna disciplinas, notas e quantidade}
var S : byte;
begin
S := 0;
Writeln('Tecle Enter na disciplina para terminar');
Repeat
S := S + 1;
2ith vNotas[S] do
begin
Write('Nome da disciplina: ');
Readln(Disc);
if Disc <> '' then
begin
Write('Nota de ',Disc , ' : ');
Readln(Nota);
end
end;
)ntil (vNotas[S].Disc = '') or (S = cTamVet);
if S < cTamVet then Max := S - 1 else Max := S;
end;
&%, APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
+)!%T,O! PosMenor (vNotas : tVetNotas; Max : byte ) : byte;
{retorna su8scrito da menor nota}
var P, S : byte;
begin
P := 1;
for S := 2 to Max do
if vNotas[S].Nota < vNotas[P].Nota then P := S;
PosMenor := P
end;
+)!%T,O! PosMaior (vNotas : tVetNotas; Max : byte ) : byte;
{retorna su8scrito da maior nota}
var P, S : byte;
begin
P := 1;
for S := 2 to Max do
if vNotas[S].Nota > vNotas[P].Nota then P := S;
PosMaior := P
end;
+)!%T,O! Media (vNotas : tVetNotas; Max : byte ) : real;
{retorna media das notas}
var Soma : real;
S : byte;
begin
Soma := 0;
for S := 1 to Max do Soma := Soma + vNotas[S].Nota;
Media := Soma/Max
end;
{8loco de cOdigo principal}
begin
repeat
ClrScr;
Opcao := Menu;
case Opcao of
0 :;
1 : EntraValores(N, MaxAtual);
2 : begin
Pos := PosMaior(N, MaxAtual);
Write('Maior nota: ', N[Pos].Nota:5:1,
' na disciplina ', N[Pos].Disc);
end;
3 : begin
Pos := PosMenor(N, MaxAtual);
Write('Menor nota: ', N[Pos].Nota:5:1,
' na disciplina ', N[Pos].Disc);
end;
4 : Writeln('A mdia das notas : ', Media(N, MaxAtual):10:2);
else Writeln('Opo invlida.');
end;
ReadKey
until Opcao = 0;
end.
11 - TRABALHO FNAL &%/
")a opo adiciona. para este pro(ra)a seria dec.arar as instru1es re.ati0as a notas e) u)a
unit.
o)o eAerccioM inc.ua op1es no pro(ra)a paraB
aU !ostrar o conteDdo atua. dos 0etores de notas e discip.inas
bU #ada u)a discip.inaM pes7uisar a nota correspondente
cU #ada u)a notaM pes7uisar se e.a eAiste no 0etor de notas e )ostrar a respecti0a discip.ina
$(%$+$Teste
")a 0e? co)pi.ado o pro(ra)aM de0e2se test:2.oM co)parando os resu.tados obtidos co) a
especi3icao. @a)os 082.a outra 0e?B
Escrever um ro$rama ara #azer estat'sticas de notas de um aluno. O ro$rama o#erece o()es
de+ entrar com nomes de discilinas e resectivas notas, achar a maior nota, achar a menor nota e
calcular a mdia das notas. Iuando mostra al$um resultado, o ro$rama esera ser teclado al$o ara
o#erecer novamente o menu.
O pro(ra)a pode ter erros de .E(icaM de contro.e e outros. No )ni)oM o teste de0e responder
3a0ora0e.)ente Os se(uintes per(untasM e.aboradas co) base na especi3icaoM no pro>eto e no pro(ra)a2
3onteB
1D O menu contm as o()es corretasB
4D O ro$rama termina normalmente !uando selecionada a resectiva o("o do menuB
6D >odas as o()es do menu est"o sendo selecionadasB
5D A leitura das notas e#etuada corretamenteB As notas e discilinas est"o sendo
armazenadas corretamente no vetorB
7D A maior nota encontrada e mostrada corretamenteB
GD A menor nota encontrada e mostrada corretamenteB
:D A mdia das notas calculada e mostrada corretamenteB
aD O ro$rama esera uma tecla as mostrar um resultadoB
0D O menu mostrado novamente as um ciclo de sele("oB
o) o te)po e a eAperi8nciaM os pro(ra)adores desen0o.0e) u) V3ee.in(VM u)a sensao de
se(urana ou inse(urana co) re.ao O correo de u) pro(ra)a. Se a.(o ainda o inco)odaM continue
testandoW
$(%$,$IdRias para tra=al:os
Ao esco.,er a.(u)a das id=ias desta seoM certi3i7ue2se de de3inir u)a especi3icao co)p.etaM
ade7uada ao pra?o dispon0e.M e 3a?er o pro>etoM antes da deciso 3ina..
.%0.% < A5:eNaTela
$nc.ua os se(uintes recursos no pro(ra)a Ac,eNaTe.a Tp:(. +'&UB
aU rie u) )enu co) as op1es on3i(urarM Ro(arM Ter)inar. Na opo de con3i(uraoM per)ita ao
usu:rio indicar o (rau de di3icu.dadeM deter)inado pe.a :rea da te.a usadaM e o caractere 7ue de0e ser
escondido.
&%. APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
bU Ao >o(arM o3erea op1es para i)pri)ir o >o(oM para )ostrar onde est: o caractere escondido e para
>o(ar no0a)ente.
.%0.& < 4or5a
$)p.e)entar u) pro(ra)a 7ue >o(ue o >o(o da 3orca. Na te.a = )ostrado o a.3abetoM destacando as .etras
>: tentadas. ") banco de pa.a0ras pode ser i)p.e)entado e) 0etor ou e) ar7ui0osM per)itindo ao
pro(ra)a sortear u)a pa.a0ra. EAtens1esB ar)a?enar ,istErico do >o(adorB no)eM >o(adas (an,as e
perdidasM etc.
.%0.' < Co7trole de se7:as
$)p.e)ente u) pro(ra)a 7ue 3a? u) contro.e de sen,as. @e>a o pro>eto na 3i(ura. Os traos O es7uerda
so os .ocais onde o usu:rio entra co) os co)andos de .in,aM o 7ue i)p.ica e) u) cursor 7ue indi7ue a
e.e onde est: di(itando.
Se 7uiser so3isticar e 3a?er u) pro(ra)a rea.)ente Dti.M 0e>a co)o se .ida co) ar7ui0os no Turbo Pasca.
e (ra0e os dados.
.%0.+ < Sogo da ?el:a
#esen0o.0a u) pro(ra)a 7ue >o(ue o >o(o2da20e.,a. E.e pode ser u) )onitorM 7ue contro.a dois
>o(adoresM ou pode ser inte.i(enteM 7ue >o(a contra u) >o(ador.
.%0.* < Luadrado 6;gi5o
9aa u)a 0ariao do pro(ra)a do 7uadrado ):(icoM na p:(ina +'*. O pro(ra)a pode por eAe)p.o
editar u) 7uadrado e 0eri3icar se est: correto. Se 7uiserM pes7uise )ais sobre o assuntoN 0:rios nD)eros
da re0ista Superinteressante eAp.orara) bastante inD)eros tipos de 7uadrados ):(icos.
ONTRO%E #E SENXAS
"su:rioB 9u.ano Tdi(ite outro para )udarU
%OA% NO!E SENXA
\ Ne6 corP Ti)es 9u.ano 1+-/
\ Ster.in( 9u.ano 1+-/
\ A.ta0ista 9u.ano11 54&5
\ <co do <rasi. S 1+-/54
\ Xot!ai. 9u.ano1& 1+-/
\ Tdi(ite no0aU \\\\\\\\ \\\\\\\
o)andos de .in,a 2 EB eAc.ui AB a.tera
Outros co)andos k $B i)pri)e P("pB aci)a P(#nB abaiAo
ESB sai
11 - TRABALHO FNAL &%$
.%0., < Ro=I
9aa u) pro(ra)a 7ue entende a.(uns co)andos si)p.es do rob;M co)o Ande e @ire. A.(o 7ue
representa o rob; se )o0e na te.a e) resposta aos co)andos.
.%0./ < Pala?ra e6=aral:ada
$)p.e)entar u) pro(ra)a 7ueM a partir de u) banco de pa.a0rasM se.eciona a.eatoria)ente u)a pa.a0raM
e)bara.,a as .etras e d: u) te)po para o usu:rio adi0in,ar a pa.a0ra.
.%0.. < Co6=i7a8Aes de letras
$)p.e)entar u) pro(ra)a 7ue .8 u)a pa.a0ra de / .etras e (era todas as co)bina1es poss0eis das
7uatro .etrasM se) repetio. O pro(ra)a de0e 3ornecer u) )enu para o usu:rioM per)itindoB
2 entrar no0a pa.a0ra
2 (erar co)bina1es
2 )ostrar na te.a T3or)atadas e) co.unasU
2 i)pri)ir Tta)b=) e) co.unasU
2 e.i)inao de pa.a0ras indese>adas Tpor eAe)p.oM 7ue no eAista)U.
.%0.$ < (i7go
E.abore u) pro(ra)a 7ue 3a? sorteios de bin(o. O pro(ra)a de0er: o3erecer op1es de iniciar u) sorteioM
sortear u) nD)ero e apresentar os nD)eros sorteados at= u) deter)inado )o)ento. Note 7ue o
pro(ra)a no poder: repetir u) nD)ero >: sorteado.
.%0.%0 < Dese7:o datilogr;Ci5o
$)p.e)entar u) pro(ra)a 7ue per)ite o uso de toda a te.a para desen,os uti.i?ando caracteres
dispon0eis no tec.ado.
.%0.%% < Pi7gDPo7g
Ta.0e? 0oc8 no con,eaM )as u) dos pri)eiros 0ideo(a)es era u) P,i.co )onocro):ticoM e u) dos
>o(osM c,a)ado de Pin(2Pon(M tin,a duas Vra7uetesV 7ue se )o0ia) na 0ertica. das .aterais da te.a e u)a
Vbo.in,aVM cu>a 0e.ocidade au)enta0a depois de a.(u)as Vra7uetadasV dos >o(adores. ") >o(ador 3a?ia
u) ponto 7uando o ad0ers:rio deiAa0a a bo.in,a passarN 7ue) 3i?esse 15 pontos pri)eiro (an,a0a.
$)p.e)ente esse >o(o. ")a a.ternati0a )ais si)p.es = u)a sE ra7uete co) u) paredo.
.%0.%& < Meteoros2 o Hogo
")a na0e espacia.M e)baiAo na te.aM de0e u.trapassar u) ca)po de )eteoros Tpor eAe)p.oM se e) )odo
teAtoM asteriscosUM des0iando2se O es7uerda ou direita. Se tocar e) a.(u)M e.a eAp.ode. ada V.in,aV de
)eteoros u.trapassada conta u) pontoM e a 0e.ocidade dos )eteoros 0ai au)entandoM di(a)osM a cada 5''
pontos. $)p.e)entar o >o(o. Entre outras coisasM o pro(ra)a de0er: preenc,er a prEAi)a .in,a de
)eteorosM no a.to da te.aM e )o0er esta u)a .in,a para baiAo Tsupondo ainda 7ue a te.a estar: e) )odo
teAtoUM a.=) de 0eri3icar se ,ou0e co.iso. erti3i7ue2se de ter te)po su3iciente para esta i)p.e)entao...
.%0.%' < )ista de 5o6pras
E.abore u) pro(ra)a 7ue )ant=) u)a .ista de produtos e i)pri)e u)a re.ao para contro.e da pessoa
no super)ercadoM por eAe)p.o. $nc.ua u)a opo para e.i)inar itens da .ista a ser i)pressa. Para )ontar
a .ista inicia.M 0oc8 pode pes7uisar na $nternet por u) ser0io de deliverJ.
&&0 APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
.%0.%+ < EtiFuetas para 5:eFues
9aa u) pro(ra)a 7ue preenc,e )ini2eti7uetas para a3iAar e) 3o.,as de c,e7ueM contendo no)eM
endereoM te.e3one e RH. Pro0a0e.)ente 0oc8 ter: 7ue pes7uisar os co)andos de )o0i)entao do carro
da i)pressoraM para obter a>uste 3ino e assi) )anter o posiciona)ento correto.
.%0.%* < Ta=uada
$)p.e)entar u) pro(ra)a para crianas 7ue apEia o aprendi?ado de tabuada. Entre outras coisasM o
pro(ra)a pode propor O criana se7F8ncias de u) )es)o nD)ero ou a.eatErias. Pode ta)b=) )ostrar
nD)eros e) ta)an,o )aior. Se 7uiser so3isticar )es)oM ar)a?ene estatsticas de erros e acertosM e 3aa o
pro(ra)a re3orar os pontos 3racos.
.%0.%, < CBdigo Morse
$)p.e)ente u) tradutor de cEdi(o !orse. Pode ter op1es para so)M i)a(ens ou .ista(ens. #i?e) 7ue sE
a !arin,a ainda usa esse cEdi(oM )as pode ser u) bo) eAerccio...
.%0.%/ < Pro?as V ou 4
E.abore u) pro(ra)a 7ue corri>a pro0as contendo so)ente 7uest1es co) respostas @erdadeiro ou 9a.so.
O pro(ra)a de0e ar)a?enar as respostas corretas para cada 7uesto e at= 5' pro0as co) at= +' 7uest1es.
Iuando so.icitadoM o pro(ra)a ca.cu.a e )ostra as notas para cada a.uno. Opciona.)enteM o usu:rio pode
de3inir u) 3ator de correoM de 3or)a 7ue para cada + ou - 7uest1es erradasM u)a certa se>a anu.ada.
!e.,or i)p.e)entar usando ar7ui0os.
.
&&%
AP<N"I!E A9 PER'UNTAS ;RE=>ENTES
1U o)pi.ei e eAecutei o )eu pro(ra)a no Turbo Pasca. e nada aconteceu. E.e no 3unciona[
>ecle Alt;*7 ara ver a tela de sa'da.
+U Ao co)pi.arM d: a )ensa(e) /N e%ected`.
Est #altando um onto;e;v'r$ula no #inal do comando anterior E osi("o do cursor.
-U !eu pro(ra)a est: e) .oopW
>ente teclar ,trl;breaP ou ,trl;breaP;breaP ara interromer sua e%ecu("o.
/U Estou co) u) prob.e)a de co)pi.ao 7ue no consi(o so.ucionar.
*a(a as rticas. Auitas delas #oram #eitas ara lhe rearar ara esses momentos.
5U O HotoZc no 3uncionou.
aU =oc inverteu o X e o Y.
bU O X ou o Y est"o #ora da #ai%a vlida de linhas e colunas C1 a 47 e 1 a a0, em modo
te%to normalD.
4U Ao co)pi.ar recebo u)a )ensa(e) de 7ue no = poss0e. (ra0ar o ar7ui0o.
2e voc est em uma rede, oss'vel !ue n"o tenha autoriza("o ara a $rava("o.
,on#i$ure em Op%io#s*0irec%ories o diretrio dos e%ecutveis C.e%e e .tuD ara o nome 1O2 da
sua asta na rede ou uma asta na !ual voc ossa $ravar.
&U No estou conse(uindo e.aborar a.(orit)os.
A aostila aresenta vrias #erramentas de ensamento ara esses momentos, use;as.
-rocure tambm di$itar e se$uir ro$ramas mais comle%os, ara alimentar seus neur?nios. E
acima de tudo, n"o #i!ue ansioso, se d mais temo.
Ten0ie sua contribuio para este ap8ndice para 0ir(i.ioQtba.co).brU
&&'
AP<N"I!E 19 PRO!E"IMENTOS E ;UN4ES "O TUR1O
PAS!A#
?
AbaiAo so .istados os principais procedi)entos e 3un1es padro da %in(ua(e) Turbo Pasca.M e suas
3ina.idades. #eta.,es sobre a sintaAeM os par)etros e uso destes procedi)entosS3un1es pode) ser encontrados no
hel do siste)aB di(ite o no)e da instruo e tec.e tr.291. As instru1es assina.adas co) u) asterisco eAiste)
so)ente no Turbo Pasca. para #OS.
Arit6Rti5as
Abs 9unc Retorna o 0a.or abso.uto do ar(u)ento.
ArcTan 9unc Retorna o arco tan(ente do ar(u)ento.
os 9unc Retorna o do ar(u)ento Tar(u)ento = u) n(u.o e) radianosU.
EAp 9unc Retorna o eAponencia. do ar(u)ento.
9rac 9unc Retorna a parte 3racion:ria do ar(u)ento Tar(u)ento = rea.U.
$nt 9unc Retorna a parte inteira do ar(u)ento Tar(u)ento = rea.U.
%n 9unc Retorna o .o(arit)o natura. do ar(u)ento.
Pi 9unc Retorna o 0a.or da constante Pi.
Sin 9unc Retorna o seno do ar(u)ento Tar(u)ento = u) n(u.o e) radianosU.
S7r 9unc Retorna o 7uadrado do ar(u)ento.
S7Rt 9unc Retorna a rai? 7uadrada do ar(u)ento.
Co7?ers9o de Dados
,r 9unc Retorna o caractere da tabe.a AS$$ correspondente a u) nD)ero especi3icado.
Ord 9unc Retorna o nD)ero de orde) na tabe.a AS$$ de u) caractere especi3icado.
Round 9unc Arredonda u) nD)ero rea. para o inteiro )ais prEAi)o.
Trunc 9unc Retorna a parte inteiro de u) nD)ero rea..
Str Proc on0erte u) 0a.or nu)=rico e) u)a cadeia de caracteres.
"pcase 9unc on0erte u) caractere para a !aiDscu.a correspondente.
@a. Proc on0erte u)a cadeira de caracteres e) u) 0a.or nu)=rico.
Ma7ipula89o da tela e te5lado
.rEo. Proc %i)pa os caracteres da posio do cursor at= o 3i) da .in,a.
.rScr Proc %i)pa a te.a e posiciona o cursor no canto superior es7uerdo.
HotoZc Proc Posiciona o cursor na te.a.
deYPressed 9unc Retorna >rue se u)a tec.a 3or acionada ou *alse caso contr:rio.
ReaddeY 9unc %8 u) caractere de u)a tec.a acionada se) eco:2.o na te.a.
TeAt<acP(round Proc #e3ine u)a cor de 3undo do teAto.
TeAto.or Proc #e3ine u)a cor do teAto.
C,ereZ 9unc Retorna a co.una e) 7ue o cursor se encontra.
C,erec 9unc Retorna a .in,a e) 7ue o cursor se encontra.
Cindo6 Proc #e3ine u)a >ane.a de teAto na te.a.
I7stru8Aes apli5;?eis a tipos de dados ordi7ais
#ec Proc #ecre)enta u)a 0ari:0e..
$nc Proc $ncre)enta u)a 0ari:0e..
Odd 9unc Testa se o ar(u)ento = i)par.
Pred 9unc Retorna o predecessor do ar(u)ento.
Succ 9unc Retorna o sucessor do ar(u)ento.
Ma7ipula89o de 5adeias de 5ara5teres
oncat 9unc oncatena u)a se7F8ncia de cadeias.
opY 9unc Retorna u)a subcadeia de u)a cadeia.
#e.ete Proc EAc.ui u)a subcadeia de u)a cadeia.
q
ortesia do Pro3. @icente P. TeiAeira.
&&+
9i..,ar Proc Preenc,e u)a 0ari:0e. co) u)a 7uantidade indicada de u) caractere ou bYte.
$nsert Proc $nsere u)a subcadeia e) u)a cadeia.
%en(t, 9unc Retorna o ta)an,o din)ico T7uantidade de caracteresU de u)a cadeia.
Pos 9unc Retorna a posio de u)a subcadeia e) u)a cadeia.
Ma7ipula89o de ArFui?os
Assi(n Proc Atribui u) no)e eAterno para u)a 0ari:0e. do tipo #ile.
<.ocPRead Proc %8 u) ou )ais re(istro de u) ar7ui0o para u)a 0ari:0e..
<.ocPCrite Proc Escre0e e) u) ar7ui0o u) ou )ais re(istros a partir de u)a 0ari:0e..
,#ir Proc !uda o diretErio corrente.
.ose Proc 9ec,a u) ar7ui0o aberto.
Eo3 9unc Retorna o status de 3i) de ar7ui0o.
Erase Proc E.i)ina u) ar7ui0o.
9i.ePos 9unc Retorna a posio corrente do apontador de ar7ui0o.
9i.eSi?e 9unc Retorna o ta)an,o T7uantidade de re(istrosU de u) ar7ui0o.
Het#ir Proc Retorna o diretErio corrente de u) dri0e especi3icado.
$OResu.t 9unc Retorna o status da D.ti)a operao de $SO e3etuada.
!P#ir Proc ria u) subdiretErio.
Read Proc %8 o re(istro corrente de u) ar7ui0o para u)a 0ari:0e..
Rena)e Proc Reno)eia u) ar7ui0o.
Reset Proc Abre u) ar7ui0o.
Re6rite Proc ria e abre u) ar7ui0o.
R)#ir Proc Re)o0e u) subdiretErio 0a?io.
SeeP Proc !o0e o apontador de u) ar7ui0o para u)a posio especi3icada.
Truncate Proc Trunca o ar7ui0o na posio corrente.
Crite Proc Escre0e o conteDdo de u)a 0ari:0e. e) u) ar7ui0o.
Co7trole de 4lu@o de E@e5u89o
EAit Proc Sai do b.oco de cEdi(o e) eAecuo.
Xa.t Proc Encerra a eAecuo do pro(ra)a.
RunError Proc Encerra a eAecuo do pro(ra)a e (era u) erro de te)po de eAecuo.
Alo5a89o di7]6i5a de 6e6Bria
#ispose Proc %ibera o espao reser0ado para u)a 0ari:0e. din)ica.
9ree!e) Proc %ibera o espao reser0ado para u)a 0ari:0e. din)ica de u) dado ta)an,o.
Het!e) Proc ria u)a 0ari:0e. din)ica de u) dado ta)an,o e p1e seu endereo nu)
ponteiro.
!aAA0ai. 9unc Retorna o ta)an,o do )aior b.oco de )e)Eria cont(ua dispon0e..
!e)A0ai. 9unc Retorna a 7uantidade tota. de )e)Eria dispon0e..
Ne6 Proc ria u)a 0ari:0e. din)ica e p1e seu endereo nu) ponteiro.
Di?ersas
#e.aY 9unc 9a? o processador (astar u)a 7uantidade de )i.isse(undos especi3icada.
Het#ate Proc Retorna a data corrente do Siste)a Operaciona..
HetTi)e Proc Retorna a ,ora corrente do Siste)a Operaciona.
NoSoundq Proc #es.i(a o a.to23a.ante interno do processador.
Rando) 9unc Retorna u) nD)ero a.eatErio entre ' e o ar(u)ento..
Rando)i?e Proc $nicia.i?a o (erador interno co) u) nD)ero a.eatErio Tobtido do re.E(io do
siste)aU.
Soundq Proc %i(a o a.to23a.ante interno co) a 3re7F8ncia Te) X?U passada co)o ar(u)ento.
&&*
AP<N"I!E !9 ;ERRAMENTAS "E PENSAMENTO
"2e voc comreende verdadeiramente !ue e%iste um n8mero in#inito de
ossibilidades em !ual!uer situa("o dada, voc ode encontrar solu()es onde
at a$ora era totalmente imoss'vel encontr;las."
E0a PierraPosM e) O .ai#/o "a Au%o%ra#sforao.
Iue) est: aprendendo nor)a.)ente no est: propria)ente na _?ona de con3orto`M e si) )uito
perto de seus .i)ites. E at= 7ue as no0as ,abi.idades se torne) naturaisM espontneas e 3.uentesM ,: u)a
3ase de transioM na 7ua. pode ,a0er )o)entos e) 7ue no se sabe precisa)ente o 7ue = o )e.,or a
3a?er. #ispor de boas a.ternati0as para esses )o)entos pode ace.erar o aprendi?adoM redu?ir te)pos e
)es)o tornar )ais pra?eroso o aprendi?ado. Este ap8ndice descre0e a.(u)as dessas a.ternati0asM para
0oc8 usar 7uando 3or preciso ou si)p.es)ente para 3a?er a.(o )e.,or.
Pergu7tar
"O olho dorme at !ue a mente o acorde com uma er$unta"
TPro0=rbio :rabeU
")a 3erra)enta )uito poderosa para direcionar a )ente = si)p.es)ente e.aborar per(untas a
respeito do assunto ou ob>eti0o e) 7uesto. Por eAe)p.oM por )eio de per(untas pode)os obri(ar u)a
pessoa a pensar no passado ou no 3uturoM )ais (enerica)ente ou )ais especi3ica)ente. Note co)o posso
a3etar o 7ue 0oc8 est: pensandoB
"O !ue voc comeu ho<e no ca# da manh"B"
"Iual #oi a e%erincia mais a$radvel !ue voc vivenciouB"
"=oc se amaB" ou "Iuanto voc se ama, de 0 a 100"B
"=oc $ostou do 8ltimo #ilme !ue assistiuB" ou "Iual arte do 8ltimo #ilme !ue viu voc mais
$ostouB"
",omo voc oderia melhorar seu rendimento escolarB"
"O !ue voc realmente !uer da vida neste momentoB"
Per(untar = u)a 3or)a de )anter a iniciati0a. Se 0oc8 en0iar u) e2)ai. e 7uiser u)a respostaM
3aa u)a per(unta. Obser0e ta)b=) co)o certos 0endedores )ant=) o contro.e de u)a con0ersa usando
esse recursoW
o)o u) re3oroM co)pare a e3ici8ncia das per(untas a se(uirB
/2er !ue vai dar certoB3 ou /O !ue eu osso #azer ara dar certoB3
/2er !ue eu consi$oB3 ou /Iual o r%imo e!ueno asso !ue osso dar ara conse$uirB3
/2ou caazB3 ou /O !ue osso arender ara #acilitar atin$ir meu ob<etivoB3
/2er !ue eu nunca arendoB3 ou /O !ue < arendi !ue osso alicar neste casoB3
&&,
Na 3a.ta de per(untasM use )eta2per(untas Tper(untas sobre per(untasUB
/Iual a melhor er$unta a ser #eita a$oraB3
/O !ue eu oderia er$untar !ue me tornaria mais ob<etivoB3
/Iue er$unta me conduziria a uma vis"o mais rtica e realistaB3
Apli5a8Aes k Antes de .er u) .i0roM assistir u)a au.a ou iniciar u)a sesso de estudosM per(unteB
o 7ue 7uero co) isto[ Iua. = o )eu ob>eti0o[ Iua. = a )e.,or atitude para aprender )ais rapida)ente[
O 7ue eu >: sei deste assunto[ Iua. = a )e.,or postura T3sicaU para obter )e.,or rendi)ento[
Outros conteAtos de ap.icao de per(untasB ao na)orarM ao descansarM ao traba.,ar e) e7uipe.
Iue ta. per(untar _,omo osso obter ainda mais razer ao...B3 #i0irta2seW
4a8a algo diCere7te
">emos notado este tra(o eculiar aos seres humanos. 2e estes descobrem al$uma coisa !ue
#azem e !ue n"o #unciona, eles a reetem. 2Pinner tinha um $ruo de alunos !ue havia realizado diversas
es!uisas com ratos e labirintos. E al$um, um dia, er$untou;lhes+ "!ual realmente a di#eren(a entre
um rato e um ser humanoB" bom, os comortamentistas, uma vez !ue n"o eram essoas terrivelmente
observadoras, decidiram !ue recisavam e%erimentar ara descobrir. ,onstru'ram um labirinto
enorme em escala ade!uada ara um humano. -e$aram um $ruo controle de ratos e ensinaram;no a
ercorrer um labirinto e!ueno atrs de !uei<o. 1eois e$aram essoas e ensinaram;nas a ercorrer o
labirinto $rande atrs de notas de cinco dlares. &ouve e!uenas varia()es nos dados e g ao n'vel de
robabilidade de 07d ; descobriram al$umas di#eren(as si$ni#icativas no n8mero de tentativas ao
critrio ou al$o arecido. Os humanos conse$uiram arender a ercorrer o labirinto um ouco melhor,
um ou!uinho mais deressa do !ue os ratos.
As estat'sticas realmente interessantes aconteceram !uando #oram e#etuar a arte da e%tin("o.
Qemoveram as notas de cinco dlares e o !uei<o e deois de um certo n8mero de tentativas os ratos
araram de correr elo labirinto... Os humanos contudo n"o araramO.. .Ainda est"o lO... 1e noite, eles
invadem o laboratrio."
TRic,ard <and.er a Ro,n HrinderM VSapos e) prncipesVM p:(. +&U
E) situa1es de i)passe ou u) prob.e)a aparente)ente inso.D0e.M co) u) VbrancoV i)enso na
)enteM o 7ue 3a?er[ As pessoas 7ue so bons reso.0edores de prob.e)as e) co)putadores ne) se)pre
so as )ais inte.i(entes ou criati0asN o 7ue e.es 3a?e) nor)a.)ente = a(ir a.(o di3erenteM !ual!uer coisaM
para 0er se descobre) u)a pista ou in3or)ao 7ue os 3aa a0anar 7ua.7uer )i.)etro. E se o 7ue
tentara) no deu e) nada To 7ue = co)u)UM no0a)ente busca) a.(o di3erente.
Iuando ap.icada O pro(ra)aoM essa a.ternati0a pode si(ni3icarB
<uscar u)a in3or)ao di#erente
$)a(inarM acreditar 7ue ode ser di#erente.
9a?er u)a per(unta di#erente
<uscar u) a.(orit)o di#erente
"sar u)a instruo di#erente
APGN#$E B 9ERRA!ENTAS #E PENSA!ENTO ++&
onsu.tar u)a a>uda di#erente
Ac,ar as di#eren(as entre o esperado e o obtido
Recorrer a u)a pessoa di#erente
Ap.icar u) )=todo di#erente
#e 3atoM >: 3a?e)os isto co) 3re7F8nciaB ao torcer u) para3usoM por eAe)p.oM se a.(o 7ue
3a?e)os no 3uncionaM 3a?e)os a.(o di3erenteB u)a c,a0e de 3enda )aior ou )enorM )ais 3oraM outra
posio da )oM as duas )osM a.(o para co.ocar no para3uso e di)inuir o atrito. Ao diri(ir auto)E0eisM
3a?e)os a>ustes todo o te)po no 0o.ante Te ne) nota)osU.
Iue ta. 3a?er a.(o 7ue 0oc8 nunca 0e? antes[
A a=ordage6 :$i%G
/O ser humano muito melhor aer#ei(oando al$o e%istente do !ue criando al$o do nada3
Pau. T. Card
#a descrio teErica para a eAecuo pr:tica 0:rias coisas pode) )udar. O processo de
desen0o.0er u) pro(ra)a ou a.(orit)o no =M na (rande )aioria das 0e?esM u)a .in,a retaM e) 7ue se
passa de u)a etapa O outra e) se7F8ncia. $sso no ocorre de0ido so)ente a .i)ita1es do pro(ra)adorM
)as basica)ente a causa principa. = a #alta de in#orma()esN nas 3ases iniciais nor)a.)ente no se disp1e
de todas as in3or)a1es necess:rias para e.aborar u) produto co)p.eto. E 7uanto )enos in3or)a1esM
)aior a possibi.idade de sere) to)adas decis1es 7ue depois se re0e.a) inade7uadas. Por eAe)p.oM
descobrir 7ue o pro(ra)a est: estruturado incorreta)ente na etapa de teste nor)a.)ente i)pacta
si(ni3icati0a)ente o pra?o pre0isto de i)p.e)entao. O )es)o ocorre 7uandoM >: no 3ina. da
codi3icaoM se percebe 7ue 3a.ta u)a so.uo i)portante para u) aspecto i)portante ou a.(orit)o.
$)a(ine se isso ocorrer na 0=spera da entre(a de u) traba.,oW Por issoM to i)portante 7uanto u)a boa
descrio das etapas a sere) se(uidasM = dispor de u) bo) roteiro para eAecut:2.as.
E) procedi)entos ou ati0idades eAecutadas e) etapasM 0oc8 pode ap.icar a aborda(e) :$i%G. E.a
consiste e) se 3a?er u)a rida passa(e) inicia. pe.as 0:rias etapasM na 7ua. o ob>eti0o )aior = obter
u)a 0iso (era. e pre.i)inarM inco)p.eta e no tota.)ente 0eri3icada da 7uesto ou prob.e)a. ApEsM 0oc8
3a? u)a se(unda passa(e)M desta 0e? e) direo ao produto 3ina.. <ene3cios desta aborda(e)B
,om uma vis"o do todo, voc identi#ica mais #acilmente as artes cu<os detalhes v"o re!uerer
maior aten("o
=oc tem melhor no("o das conse!Kncias !ue suas decis)es numa etaa v"o rovocar em
etaas osteriores
=oc n"o erde temo tentando #azer um roduto #inal desde o in'cio, sendo !ue talvez n"o
tenha todas as in#orma()es necessrias ara isso.
@oc8 no precisa se .i)itar a duas passa(ensN de 3ato 0oc8 pode 3a?er 7uantas 3ore) necess:rias.
")a situao curiosa pode sur(irM se e) a.(u) )o)ento 0oc8 perceber 7ue o desen0o.0i)ento no est:
a0anandoB 0oc8 pode tanto 0o.tar a u)a etapa anterior 7uanto a0anar a u)a etapa posteriorM para obter
in3or)a1es e a)adurecer o seu produto. Por eAe)p.oB ao produ?ir a pri)eira ou se(unda 0erso do
a.(orit)o ou pro(ra)aM passe .o(o para a 0eri3icao )anua..
-ara atin$ir ob<etivos nem todos os assos recisam ser "corretos".
&&. APRENDENDO A PROGRAMAR NA PRTCA VRGLO V. VLELA
Vo5G 6es6o < i7spira89o para algorit6os
")a das )e.,ores 3ontes de inspirao para e.aborar certos a.(orit)os = seu prEprio c=rebroB
co)o 0oc8 3aria[ Ta.0e? isso no ten,a .,e ocorridoM )as seu c=rebro te) a.(orit)os. Nor)a.)ente no
esta)os conscientes de.esM e ne) precisa)osM )as )uitas 0e?es pode)os ter a.(u) acesso. Por eAe)p.oM
so.etre u)a pa.a0ra 7ua.7uerM di(a)osM V$!AHE!VM en7uanto procura obser0ar coo 3a?. E) (era. o
a.(orit)o usado para isso =B
"-roduza uma ima$em interna da alavra"
"*ocalize a rimeira letra da alavra"
en!uanto "n"o #or o #im da alavra"
"ronuncie a letra #ocalizada"
"*ocalize r%ima letra"
#im
Se no conse(uir perceberM pea a a.(u=) para so.etrar u)a pa.a0ra e obser0e seus o.,os.
Por eAe)p.oM supon,a 7ue 0oc8 de0e e.aborar u) a.(orit)o para ordenar u) con>unto de
nD)eros e) orde) crescente. @oc8 pode pe(ar a.(uns pa.itos de ta)an,o 0ariadoM orden:2.os en7uanto
obser0a o 7ue 3a? e da eAtrair pistas para o a.(orit)o. Pode ser 7ue 0oc8 percorra todos os pa.itos O
procura do )aior e tire2o do con>unto para u) outro. Para os 7ue sobrara)M repete o procedi)entoM at=
7ue no ,a>a )ais pa.itos. Essas a1es so pistas eAce.entes para a e.aborao do a.(orit)o.
onsidere a(ora o prob.e)a de in0erter u)a cadeia de caracteres. Por eAe)p.oM dada a cadeia _A
mente terra`M torn:2.a _arret etnem A`. Pe(ue u)a cadeia 7ua.7uer e in0erta )anua.)ente. o)o
0oc8 3e?[ Pro0a0e.)enteM se(uiu os se(uintes passosB
"Escolha um local ara escrever a cadeia invertida"
"*ocalize o 8ltimo caractere da cadeia"
"Escreva o caractere"
en!uanto "houver caracteres n"o coiados"
"*ocalize na cadeia o r%imo caractere E es!uerda"
"Escreva o caractere #ocalizado E direita do 8ltimo escrito"
#im
O a.(orit)o aci)a >: per)ite obter a.(u)as pistasB u)a 0ari:0e. inteira para apontar cada
caractere da cadeiaM u)a instruo para obter u) caractere apontadoM outra para concatenar caracteres Tno
Pasca.M o tUM as instru1es 7ue sero repetidas.
Note 7ue pes7uisar no prEprio c=rebro ne) se)pre ir: 3ornecer o a.(orit)o co) precisoN o 7ue
busca)os so pontos de partida para id=ias 7ue sero adaptadas Os nossas necessidades.
&&$
AP<N"I!E "9 TA1E#A AS!II
Na tabe.a esto representados os cEdi(os dos caracteres )ais usados Tde -+ a 1+4U. Para ca.cu.ar
cada cEdi(oM so)e o nD)ero da co.una do caractere co) o nD)ero da respecti0a .in,a. Por eAe)p.oM o
cEdi(o da .etra T = 5' t /.
TA(E)A A#CII Mde '& a %&,O
0 % & ' + * , / . $ %0 %% %& %' %+ %*
'& J T h i j k l M O _ ` \ D . V
+. 0 % & ' + * , / . $ 2 f c b d P
,+ m A ( C D E 4 G 3 I S a ) M N O
.0 P L R # T U V Y N X 1 n o p q g
$, r a = 5 d e C g : i H W l 6 7 o
%%& p F r s t u ? E @ > Q ^ s t u
&'%
1I1#IO'RA;IA
9ARRERM XarrY et a.. Al$oritmos Estruturados. Huanabara2doo(anM 1*5*.
\\\\\\\\\\\\\\\\\ -ascal Estruturado. Huanabara2doo(anM 1**5.
9OR<E%%ONEM Andr= %ui? @. a E<ERSP}XERM Xenri 9. 9$ica de -ro$rama("o. !aPronM 1**-.
H"$!ARESM ~n(e.o !. a %AHESM Ne6ton A. . Al$oritmos e Estruturas de 1ados. %TM 1*55.
!c!ENA!$NM Step,en !. a PA%!ERM Ro,n 9. Anlise Essencial de 2istemas. !aPronM 1**1.
!E%ERM $an a !aiaM %ui? Pau.o. -ro$rama("o e 9$ica com >urbo -ascal. a)pusM 1*5*.
!cERSM H.en3ord R. >he Art o# 2o#tSare >estin$. Ro,n Ci.eY a SonsM 1*&*.
Ox<R$ENM Step,en. >urbo -ascal G.0 ,omleto e >otal. !aPronM 1**+.
SXE$#M 9rancis. ,omutadores e -ro$rama("o. !cHra62Xi..M 1*5/.
SX!$TfM Eber Assis a TE%ESM Antonio A. S. -ascal e >cnicas de -ro$rama("o. %TM 1*54.
CE$SdA!PM deit,. >urbo -ascal G.0. %TM 1**+.
C$RTXM NiP.aus. Pro(ra)ao Siste):tica e) Pasca.. a)pusM 1*5&.
&''
@N"I!E REMISSI3O
A
.1.-.A.(orit)o........................+5
eAe)p.o de e.aborao.....1/5
representao......................+*
ArraY.....................................1*+
Atribuio...............................*'
<
<.it?M aborda(e)...................++&
<Yte.........................................*-

ase......................................1+-
,ar............................................
na )e)Eria.......................1''
opera1es............................**
,r........................................1'*
o)ent:rios............................45
o)pi.ao.............................1-
a>uda para erros...................4/
para disco............................4/
o)pi.ador.............................1-
onst.......................................55
constantes...................................
tipadas...............................+'1
onstantes...................................
dec.arao...........................5/
opY.....................................1'1
P9.......................................15*
#
./.-.#ebu((er.........................&1
>ane.a Catc,es....................*'
#ecis1es......................................
recon,ecendo....................1+4
#e.aY.......................................&*
#icas...........................................
deciso..............................1+4
E
Erros...........................................
tipos..................................../&
Especi3icao..........................-/
EApresso .E(ica...................114
EApress1es..................................
arit)=ticas...........................&+
EApress1es .E(icas......................
co)postas.........................11*
9
9erra)entas de pensa)ento.......
3aa di3erente....................++4
per(untas...........................++5
0oc8 e seu c=rebro............++5
9i..,ar...................................**
.&.-.9or..................................1/'
eAp.icao.........................1/1
7uando usar.......................1/+
./.4.9un1es............................5'
caractersticas...................14'
dec.aradas.........................1&1
)ate):ticas........................51
H
HotoZc..................................&&
$
$3 114
$)p.e)entation.....................15'
$)presso....................................
co) Crite...........................5'
da te.a de sada....................5&
pro(ra)a23onte...................54
$nM operador...........................11*
$nc.........................................11-
$ndentao.............................1+'
$nstru1es....................................
tipos..................................14'
$nter3ace................................15'
%
%in(ua(e)..................................
a.to n0e..............................11
de ):7uina..........................1'
orientao...........................1/
Pasca...................................1/
tipos de instru1es..............1+
!
!ate):tica.............................&-
!atri?es................................+'4
!S2#OS.....................................
co)andos b:sicos...............5*
N
NoSound.................................&*
ND)eros a.eatErios.................5-
O
Opera1es...............................-&
Operadores..................................
arit)=ticos........................114
!O#...................................&/
P
Par)etro....................................
por re3er8ncia....................14&
Par)etros............................14'
resu)o..............................1&'
Per(untas..............................++5
P$SSPASEP...........................15*
PosM 3uno...........................1-1
Preced8ncia de operadores.....&/
Procedi)ento..............................
caractersticas...................14'
dec.arao.........................141
deta.,es.............................144
roteiro para dec.arao.....1&5
Pro(ra)a.....................................
co) )enu...........................-*
co)o recuperar...................5*
estrutura............................../'
eAecuo no Turbo Pasca.. .4+
o 7ue =...................................*
pro>eto.................................-&
tipos....................................-5
Pro(ra)a23onte.......................41
co)pi.ao..........................41
0iso (era............................/4
Pro(ra)ao...............................
estrat=(ia (era.....................--
etapas..................................-/
3atores de sucesso...............14
R
Rando)...................................5-
Rando)i?e..............................5-
ReaddeY.....................................
co)o 3uno.....................1''
Read.n...............................*'M *1
ReadZc................................15-
Re(istros...............................+'+
.&.+.Repeat............................1-5
eAp.icao.........................1-*
Repetio....................................
per(untas...........................1/4
prob.e)as.........................1//
Rob;...........................................
e.aborando a.(orit)os........+/
,istEria................................1*
S
SintaAe..............................11M 4-
cores do editor....................4/
So3t6are......................................
7ue 0oc8 precisa.................15
Sound......................................&*
Str.........................................1--
Strin(..........................................
concatenao.....................1'1
obtendo u) caractere........1'1
opera1es..........................1'1
ta)an,o atua.....................1'1
T
Tabe.a AS$$................1''M ++*
.+.4.Teste................................/&
de3inio............................./5
diretri?es............................./*
TeAto.or................................&*
.5.+.Tipos de dado..................*+
dec.arando no0os..............1'5
do Turbo Pasca...................*+
.-.1.Turbo Pasca.....................5-
&'+
a>uda...................................5&
#OS s,e..............................55
editor...................................5/
eAecutando..........................5/
insta.ao............................5-
TYpe......................................1'5
para re(istros....................+'-
para 0etores.......................1*+
"
.5.5."nits..............................15'
estrutura............................15'
inicia.i?ao......................15+
"pcase....................................**
"ses........................................&4
@
@a.........................................1-+
@ari:0eis...........................+*M *'
descobrindo.......................1'-
@etor...........................................
dec.arao.........................1*+
e.e)ento...........................1*1
.*.1.@etores...........................1*1
a.(orit)os.........................1*4
opera1es..........................1*-
C
.&.1.C,i.e.............................1-5
eAp.icao.........................1-4
Cit,......................................+'-
Crite.......................................45
par)etros..........................4*
Posio do cursor................45
Crite.n....................................41

Potrebbero piacerti anche