Você está na página 1de 88

Universidade Catlica de Pelotas Escola de Informtica

Linguagem Pascal
por Paulo Roberto Gome s Luzzardi

Reviso: Junho, 1996

Bibliografia CARROLL, David W. - Programao em TURBO PASCAL !Gra"-#ill

RA AL!O, Lu!iano $ PRA"E#, Rubens - %urbo Pas!al, Carto de Referncia$ Livros %&!ni!os e 'ient()i!os *ditora +.,.

Conte%do Programtico
&' Introd()o * Ling(agem Pascal 1.1 #ist-ri!o 1.. /b0etivos 1.1 'ara!ter(sti!as de um +istema em uma Lin2ua2em 3deal +' Ambiente "(rbo Pascal ..1 4ile ... *dit ..1 Run ..5 'ompile ..6 /ptions ..6 Debu2 ..7 8rea9:"at!h ..; 'omo usar o D*8<G ,' Estr(t(ra de (m Programa Pascal 1.1 3denti)i!adores 1.. 'oment=rios 1.1 *strutura Geral 1.5 De)ini>?o de %ipos @%ApeB -' "i.os de dados 5.1 Integer 5.. Real 5.1 Byte 5.5 C ar 5.6 Boolean 5.6 String 5.7 Array 5.; !ord 5.9 S ortInt 5.1C LongInt /' O.eradores 6.1 /peradores ,ritm&ti!os 6.1.1 'om Reais 6.1.. 'om 3nteiros 6.1.1 #ierarDuia dos /peradores 6.. /peradores Rela!ionais 6.1 /peradores L-2i!os
.

6.1.1 "ot 6.1.. And 6.1.1 Or 6.5 /perador de 3n!lus?o @InB 6.6 Pro!edimentos *spe!iais 6.6.1 Inc 6.6.. #ec 0' 1(n)2es Padr2es 6.1 A$s 6.. ArcTan 6.1 Cos 6.5 Sin 6.6 %&' 6.6 (rac 6.7 Int 6.; S)r 6.9 S)rt 6.1C Ln 6.11 C r 6.1. Ord 6.11 Round 6.15 Trunc 6.16 Pi 6.16 Random 3' Comandos 7.1 %ipos de 'omandos 7.1.1 +eDEFn!ia 7.1.. +ele>?o 7.1.1 Repeti>?o 7.1.5 ,tribui>?o 7.. 'omando +3 PL*+ e '/ P/+%/ 7.1 'omando If ... T en ... %lse 7.5 'omando Case ... Of ... %lse ... %nd 7.6 'omando (or ... #o 7.6 'omando ! ile ... #o 7.7 'omando Re'eat ... Until 7.; 'omando *alt 7.9 'omando %&it 4' Entrada e #a5da
1

;.1 *ntrada pelo %e!lado ;.. +a(da no G(deo ;.1 +a(da na 3mpressora 6' Controle do 75deo 9.1 ClrScr 9.. +oto,9.1 Clr%ol 9.5 #elLine &8' Comandos Es.eciais 1C.1 #elay 1C.. Te&tBac.+round 1C.1 Te&tColor 1C.5 !indo/ 1C.6 Sound e "oSound 1C.6 ! ere, e ! ere1C.7 Te&t0ode &&' 7etores e atri9es

11.1 Getores 11.. atrizes 11.1 +ort @/rdena>?oB &+' ani.(la)o de :#trings: 1..1 C r 1... Ord 1..1 Concat 1..5 Co'y 1..6 #elete 1..6 Insert 1..7 Leng t 1..; Pos 1..9 Str 1..1C U'cCse 1..11 1al 1..1. (illC ar &,' Proced(res e 1(nctions 11.1 Gari=veis Lo!ais e Globais 11.. ParHmetros 11.1 Passa2em de ParHmetro por Galor 11.5 Passa2em de ParHmetro por Re)erFn!ia
5

11.6 (unction 11.6 Procedure &-' Ar;(ivos 15.1 Pro!edimentos 15.1.1 Assign 15.1.. Close 15.1.1 %rase 15.1.5 Read 15.1.6 !rite 15.1.6 Re"ame 15.1.7 Reset 15.1.; Re!rite 15.1.9 See. 15.. 4un>Ies 15...1 %of 15.... (ilePos 15...1 (ileSi2e 15...5 Si2eOf 15.1 'omo De)inir um Re2istro @RecordB &/' <rficos 16.1 Pla!as Gr=)i!as 16.1.1 'G, 16.1.. *G, 16.1.1 GG, 16.. 'oordenadas de %ela 16...1 'G, 16.... *G, 16...1 GG, 16.1 Dete!>?o e 3ni!ializa>?o da %ela Gr=)i!a 16.5 PutPi&el @PontosB 16.6 Line @LinhasB 16.6 Rectangle @RetHn2ulosB 16.7 Circle @'(r!ulosB 16.; Arc @,r!osB 16.9 #ra/Poly @Pol(2onosB 16.1C SetColor e SetB.Color @'or de 4rente e 'or de 4undoB 16.11 OutTe&t,- e SetTe&tStyle @%eJtosB
6

16.1. Preen!himento @PinturaB 16.1..1 RetHn2ulos @BarB 16.1... Pol(2onos @(illPoly e (lood(illB 16.11 ,tiva>?o de Janelas 16.11.1 Janela ,tiva 16.11.. Limpar Janela ,tiva 16.11.1 +alvar e Re!uperar Janelas Gr=)i!as &0' Cria)o de Unidades =:Units:> 16.1 'omo 'riar um <nidade 16.. *Jemplo de 'ria>?o de uma <nidade 16.1 *Jemplo de Pro2rama Due usa uma <nidade &3' emria de 75deo

&4' Passagem de Par?metros .ela Lin@a de Comandos do #istema O.eracional &6' Ponteiros 19.1 %ipos de ,lo!a>?o de em-ria

19.1.1 ,lo!a>?o *st=ti!a 19.1.. ,lo!a>?o DinHmi!a 19.. ,!esso Direto a em-ria 19.1 ,!esso Direto a em-ria de G(deo 19.5 Listas *n!adeadas 19.6 4ilas e Pilhas 19.6 Listas Duplamente *n!adeadas +8' Interr(.)2es

&' Introd()o * Ling(agem Pascal &'& !istrico


Desenvolvido em 197C pelo Pro). "ic.laus !irt +ui>a.Lome em homena2em M Blaise Pascal @+&!. NG33B. no %e!hni!al <niversitA - KuriDue -

&'+ ObAetivos
aB *nsino da Pro2rama>?o, pois & uma lin2ua2em did=ti!aO bB Pro2rama>?o *struturada.

&', Caracter5sticas do #istema em (ma Ling(agem Ideal


aB Produzir pro2ramas-ob0eto !ompa!tos e e)i!ientesO bB <sar uma lin2ua2em de alto n(vel, de )=!il entendimentoO !B Permitir ao pro2ramador )azer altera>Ies e visualizar os resultados rapidamente dB Produzir pro2ramas port=teis para serem rodados em DualDuer outro !omputador.

+' Ambiente "(rbo Pascal /'/


Line1'ol3srtd%ab4,P/*.+< AltP 1&-Last help 1,-Pi!9 10-+"ap 13:14-Prev:neJt error 41-#elp6Kom+"it!h7%ra;9Cnu
7

0aneldsitF!@bu2B

0aneldms2obit

esa2:Wt!h

0aneldi>?o

*dit

1ileEdtRunCompPr0!OsBb2a9:"h

+'& 1ile @,rDuivoB Q,L%RQ4R


Permite !arre2ar arDuivo, salvar arDuivo, listar diret-rio, !riar novos )ontes, renomear arDuivos, sa(da tempor=ria ao +istema /pera!ional e sa(da de)initiva ao sistema opera!ional.

Load @'arre2arB Q41R


S eJibida uma !aiJa de di=lo2o soli!itando o nome do arDuivo a ser !arre2ado, se )or pressionado a te!la T*L%*RU & eJibida outra !aiJa de dial-2o !ontendo os nomes de todos os arDuivos VW.pasV !ontidos no dis!o. / pro2ramador sele!iona um arDuivo @seta direita, esDuerda, a!ima ou abaiJoB e pressiona T*L%*RU lo2o ap-s, o arDuivo & !arre2ado do #isco para o %ditor.

PicC @Pe2arBQ,L%RQ41R
S eJibida uma lista !om os nomes dos Xltimos arDuivos Due )oram !arre2ados. / pro2ramador pode sele!ionar um deles @seta a!ima ou abaiJoB e ent?o !arre2=-lo do #isco para o %ditor. /s nomes dos arDuivos )i!am armazenados em um arDuivo !hamado VTURBO3PC4V.

DeE @LovoB
Permite ao pro2ramador editar um Vno5oV arDuivo. *ste arDuivo possui o nome de V"O"A0%3PASV, este nome deve ser renomeado Duando o arDuivo )or salvo no dis!o @4.B.

#ave @+alvarB Q4.R


+alva o !onteXdo do *ditor no Dis!o. +e o arDuivo n?o tiver nome @V "O"A0%3PASVB, pode ent?o, ser renomeado. %odo arDuivo deve ter um nome Due n?o se0a V"O"A0%3PASV.

Frite to @*s!rever 'omoB


*s!reve @2ravaB o !onteXdo do editor num outro arDuivo indi!ado pelo usu=rio @!onserva o anti2o no disco e o novo no editorB.

BirectorG @Diret-rioB
*Jibe o diret-rio do dis!o !orrente, de a!ordo !om uma m=s!ara espe!i)i!ada, permite ainda, Due um arDuivo se0a !arre2ado.

C@ange dir @ udar Diret-rioB Os #@ell @+a(da %empor=ria ao +istema /pera!ionalB


;

Permite mudar o subdiret-rio @dri5e67'at B !orrente.

+a(da tempor=ria do %urbo Pas!al para o +istema /pera!ional. Para retornar ao ,mbiente di2ita-se %&it.

H(it @+airB Q,L%RQNR


+a(da de)initiva do ,mbiente %urbo Pas!al. Golta o !ontrole ao +istema /pera!ional.

+'+ Edit @*ditarB Q,L%RQ*R


Permite a !ria>?o ou edi>?o de pro2ramas. Para sair do editor pressiona-se a te!la 41C ou ,L% mais a letra maiXs!ula da op>?o do menu prin!ipal.

+', R(n @'orrer, *Je!utarB Q,L%RQRR R(n @*Je!utaB Q'%RLRQ49R


'ompila o pro2rama, lin.a as unidades e eJe!uta o pro2rama.

Program reset @Reseta Pro2ramaB Q'%RLRQ4.R


%ermina a eJe!u>?o de um pro2rama Due )oi eJe!utado !om o V #e$ugV. Desmar!a a linha atual do V#e$ugV.

<o to c(rsor @G= para 'ursorB Q45R


4or>a o V#e$ugV eJe!utar todas as linhas at& a posi>?o do !ursor, ou se0a, pula as instru>Ies intermedi=rias.

"race into @%ra>a DentroB Q47R


4or>a o V#e$ugV a eJe!utar linha a linha entrando obri2atoriamente dentro das V'rocedureV e VfunctionV.

#te. over @Passa +sobreB Q4;R


4or>a o V#e$ugV a eJe!utar linha a linha sem entrar nas V'rocedureV e VfunctionV.

User screen @%ela do <su=rioB Q,L%RQ46R


*Jibe a tela de eJe!u>?o do pro2rama.

+'- Com.ile @'ompilarB Q,L%RQ'R


9

Com.ile @'ompilarB Q,L%RQ49R


'ompila o pro2rama )onte e lin.a as unidades.

aCe @4azerB Q49R


'ompila o arDuivo prim=rio @VPrimary (ileP VB ou o arDuivo presente no editorO e todos os arDuivos Due dependem deste, in!lusive as unidades @VunitVB Due )oram alteradas.

B(ild @'onstruirB
Re!ompila todos os arDuivos rela!ionados ao arDuivo prim=rio @VPrimary (ileVB.

Bestination @Destina>?oB Q emorA ou Dis9R


*spe!i)i!a o destino do pro2rama eJe!ut=vel. +e V0emoryV o eJe!ut=vel & tempor=rio, se V#is.V o arDuivo eJe!ut=vel & armazenado em dis!o @!omo 3%,%B.

1ind error @,!har *rroB


Lo!aliza um erro de eJe!u>?o VRunTime %rrorV @*rro em %empo de *Je!u>?oB.

PrimarG file @,rDuivo Prin!ipalB


<sado para de)inir o arDuivo prin!ipal, usado pelo V0a.eV e VBuildV.

<et info @ ostra 3n)orma>IesB


*Jibe uma 0anela !ontendo in)orma>Ies do arDuivo )onte.

+'/ O.tions @/p>IesB Q,L%RQ/R

1C

Com.iler @'ompiladorB
Permite a inser>?o de diretivas de !ompila>?o sem es!rev&-las no pro2rama-)onte. Range c@ecCing @/L ou /44BP +e li2ada, veri)i!a se os VarrayV e VstringV est?o dentro das )aiJas de)inidas pelo pro2ramador. #tacC c@ecCing @/L ou /44BP +e li2ada, o !ompilador veri)i!a se h= espa>o na pilha para as vari=veis lo!ais, antes das !hamadas das V'rocedureV e VfunctionV. IIO c@ecCing @/L ou /44BP +e li2ada, veri)i!a se h= erros de entrada e sa(da. *m /44 pode-se testar erros de entrada e sa(da atrav&s da )un>?o IoResult. 1orce for calls @/L ou /44BP +e li2ada, o !ompilador 2era !hamadas "ear para V'rocedureV e VfunctionV Due estiverem sendo !ompiladas. OverlaGs alloEed @/L ou /44BP Permite a 2era>?o de !-di2o V O5erLayV para uma unidade @V3O1LVB. Align data @Word ou 8AteBP *m V!ordV todos os dados maiores Due VByteV s?o tratados !omo tipo V!ordV. 7arJstring c@ecCing @+tri!t ou RelaJedBP +e VStrictV @ri2orosaB veri)i!a o tamanho das VstringV passadas !omo parHmetro, se VRela&edV @moderadaB n?o veri)i!a. Boolean eval(ation @+hort !ir!uit ou 'ompleteBP +e VS ort circuitV os testes de uma eJpress?o booleana s?o mais r=pidos, se Vcom'leteV todas as !ondi>Ies s?o testadas. D(meric .rocessing @+o)t"are ou ;C;7-;C.;7BP 'om 898:;89<8: & permitido o uso dos tiposP Single, #ou$le, %&tended ou Com'. +e VSoft/areV permite somente o uso dos tipos !omuns do %urbo. Em(lation @/L ou /44BP *mula @simulaB um !opro!essador aritm&ti!o, se ele n?o eJistir. Beb(g information @/L ou /44BP Gera um arDuivo de in)orma>Ies de depura>?o de um arDuivo Due est= sendo !ompilado. Local sGmbols @/L ou /44BP Gera in)orma>Ies sobre s(mbolos lo!ais @nomes e tipos de todas as vari=veis e !onstantes lo!ais de um s(mboloB. Conditional definesP De)ine s(mbolos Due podem ser re)eren!iados em diretivas de !ompila>?o !ondi!ionais no arDuivo )onte. emorG #i9es @+ta!9 size, Lo" heap limit ou #i2h heap limitBP Permite !on)i2urar o mapa de mem-ria de um arDuivo de !-di2o resultante, ou se0a, o tamanho da mem-ria. #tacC si9eP Permite espe!i)i!ar o tamanho do se2mento da pilha em bAtes. LoE @ea. limitP Permite espe!i)i!ar o limite in)erior da pilha. !ig@ @ea. limitP Permite espe!i)i!ar o limite superior da pilha.
11

LinCer
Permite espe!i)i!ar di)erentes modalidades de 2era>?o do mapa do Vlin.erV e o destino do Vlin. $ufferV. a. file @/44, +e2ments, Publi!s ou DetailedBP O11P ,rDuivo VW. ,PV n?o & 2erado. #egmentsP 3n!lui in)orma>Ies do se2mento de mem-ria no arDuivo =30AP. P(blicsP 3n!lui in)orma>Ies sobre s(mbolos, 'rocedure:function no arDuivo =30AP. BetailedP 3n)orma>Ies mais detalhadas do Due as anteriores. LinC b(ffer @ emorA ou Dis9BP De)ine o destino do VLin. $ufferV. emorG: ais r=pido, mas n?o a!eita pro2ramas 2randesO BisC: ais lento, mas a!eita pro2ramas maiores.

Environment @,mbienteB
Permite !on)i2urar o ambiente de trabalho. Config a(to save @/L ou /44BP +e li2ado, atualiza o arDuivo de !on)i2ura>?o @VTURBO3TPVB Duando o pro2ramador sai do %urbo Pas!al. Edit a(to save @/L ou /44BP +alva automati!amente o arDuivo )onte Duando o arDuivo )or eJe!utado @VRunVB ou Duando da sa(da para o +istema /pera!ional @V>uitV ou VOs s ellVB. BacC(. files @/L ou /44BP Gera arDuivo V=3BA4V Duando o arDuivo )onte )or salvo. "ab si9e ;P *spe!i)i!a o tamanho da tabula>?o horizontal do editor @ ta$B @. at& 16 bran!osB. Koom EindoEs @/L ou /44BP se li2ada, as 0anelas %dit, !atc eJpandidas. ou OutPut est?o

#creen si9e @.6 line displaA ou 51:6C line displaABP Permite sele!ionar o nXmero de linhas na telaP .6 pla!a 'G,, 51 pla!a *G, e 6C pla!a GG,.

Birectories @Diret-rioB
Permite espe!i)i!ar dri5e67'at para diret-rios dos arDuivos usados e 2erados pelo turbo. "(rbo BirectorGP Diret-rio dos arDuivos do %urbo Pas!al @ dri5e67'at B, normalmenteP 'PYL3LGY%P. ELE M "PU BiretorG: Diret-rio dos arDuivos V=3%,%V @eJe!ut=veisB e V=3TPUV @unidadesB.
1.

Incl(de Biretories: *spe!i)i!a o diret-rio dos arDuivos utilizados pela diretiva de in!lus?o de )ontes Z[3\. Unit Biretories: *spe!i)i!a o diret-rio dos arDuivos )ontes de unidades @V =3PASV das unidadesB. ObAect Birectories: *spe!i)i!a o diret-rio dos arDuivos ob0etos V=3OB?V. PicC 1ile Dame: *spe!i)i!a o drive, !aminho e nome do arDuivo de sele>?o VW.P']V. C(rrent PicC 1ileP 3ndi!a o drive, !aminho e nome do arDuivo de sele>?o !orrente.

Parameters @ParHmetrosB
Permite a espe!i)i!a>?o de parHmetros para Due o pro2rama possa ser !ompilado na mem-ria.

#ave o.tions @+alva /p>IesB


+alva o arDuivo de !on)i2ura>?o V=3TPV @default VTURBO3TPVB.

Retrieve o.tions @Re!uperar /p>IesB


'arre2a o arDuivo de !on)i2ura>?o V=3TPV @default VTURBO3TPVB.

+'0 Beb(g @Depura>?oB Q,L%RQDR


Eval(ate Q'%RLRQ45RP *Jibe uma 0anela de avalia>?o !om trFs op>IesP @*valuate, Result e Le" nameB Eval(ateP Permite identi)i!ar uma eJpress?o ou uma vari=vel a ser submetida ao Debu2. Res(ltP S eJibido o resultado da avalia>?o da eJpress?o ou vari=vel sele!ionada a!ima. DeE name: Permite atribuir um novo valor. Call stacC Q'%RLRQ41RP Durante a depura>?o, permite !hamar uma 0anela !om a pilha Due !ont&m uma lista de V'rocedureV e VfunctionV Due mostram a posi>?o atual, mostrando tamb&m, os parHmetros de !ada !hamada. 1ind .roced(reP Posi!iona o !ursor no in(!io de uma V'rocedureV ou VfunctionV. Integrated deb(gging @/L ou /44BP +e li2ado, a!iona o de$ugger, VBrea.PointsV @pontos de paradaB podem ser !olo!ados. #tandalone deb(gging @/L ou /44BP +e li2ado !om VCom'ile@#estinationV em V#is.V, as in)orma>Ies do V#e$uggerV s?o aneJadas ao arDuivo V=3%,%V para uso !om o VTur$o #e$uggerA.
11

Bis.laG sEa..ing @Lone, +mart ou ,l"aAsBP Permite estabele!er modos de visualiza>?o de VOutPutV de tela durante a depura>?o do pro2rama. Done: L?o mostra a tela de sa(da do pro2rama. #mart: ostra os e)eitos da tela somente Duando houver um !omando de sa(da. AlEaGs: ostra sempre a tela resultante. Refres@ dis.laGP Retorna para a tela do ambiente.

+'3 BreaCIEatc@ Q,L%RQ8R


+e a op>?o VIntegrated de$uggingV do menu V#e$ugV estiver em VOnV pode-se adi!ionar, deletar, editar, remover todos os V/atc esV ou !olo!ar, retirar ou pro!urar VBrea.PointsV. Add Eatc@ Q'%RLRQ47RP Permite Due a vari=vel sob o !ursor se0a eJibida na 0anela de assistFn!ia Duando o Vde$ugV )or eJe!utado Belete Eatc@P Permite Due uma vari=vel da 0anela de assistFn!ia se0a deletada. Edit Eatc@P Permite Due uma vari=vel da 0anela de assistFn!ia se0a editada @alteradaB. Remove all Eatc@esP Remove todas as vari=veis da 0anela de assistFn!ia. "oggle breaC.oint Q'%RLRQ4;RP Permite Due VBrea.PointsV @pontos de paradaB se0am !olo!ados ou retirados. Clear all breaC.ointsP Permite Due todos os VBrea.PointsV se0am removidos. 7ieE neNt breaC.ointP Permite visualizar o pr-Jimo VBrea.PointV.

15

+'4 Como (sar o BEBU<


Passo &: %er as duas 0anelas na telaP Banela de edio e Banela de assistncia Q46RO Passo+: ar!ar um VBrea.PointV @ponto de paradaB Q'%RLRQ4;R ou op>?o VToggle $rea.'ointV do menu VBrea.@/atc VO Passo ,: Rodar o pro2rama VRunV ou Q'%RLRQ49R, o pro2rama & eJe!utado at& a linha anterior ao VBrea.PointVO Observa)o: Para visualizar o resultado obtido na tela de eJe!u>?o Q,L%RQ46R ou a op>?o V User screenV do menu VRunVO Passo -: Para sele!ionar as vari=veis Due se dese0a assistir, posi!iona-se o !ursor em !ima da vari=vel e Q'%RLRQ47R ou a op>?o VAdd /atc V do menu VBrea.@/atc V, ap-s apare!er uma 0anela !om a vari=vel no seu interior @podendo-se alterar ou mudar a vari=velB pressiona-se QR*%<RLRO Passo /: Para visualizar a eJe!u>?o do pro2rama linha & linha pressiona-se Q4;R @op>?o V Ste' o5erV do menu VRunVB ou Q47R @op>?o VTrace intoV do menu VRunVBP O14P: eJe!uta o pro2rama linha & linha sem entrar nas V'rocedureV e VfunctionVO O13P: eJe!uta o pro2rama linha & linha entrando tamb&m nas V'rocedureV e VfunctionVO Passo 0: Pode-se ainda V#elete /atc V @deletar vari=velB, V%dit /atc V @editar vari=velB ou VRemo5e all /atc esV @remover todas as vari=veisB no menu VBrea. @ /atc V. Passo 3: Pode-se ainda desviar a eJe!u>?o do Vde$ugV para a linha Due est= o !ursor Q45R ou a op>?o V+oto cursorV do menu VRunVO Passo 4: Para en!errar a eJe!u>?o do Vde$ugV Q'%RLRQ4.R ou a op>?o VProgram resetV do menu VRunV, deve-se ainda desmar!ar todos os V$rea.'ointsV atrav&s da op>?o VClear all $rea'ointsV do menu VBrea.@/atc V.

16

,' Estr(t(ra de (m Programa Pascal ,'& Identificadores


+?o os nomes !riados pelo pro2ramador paraP - nomes de 'onstantes @ConstBO - nomes de Gari=veis @1arBO - nomes de %ipos @Ty'eBO - nomes de Pro!edimentos @ProcedureBO - nomes de 4un>Ies @(unctionBO - nomes de <nidades @UnitBO - nomes de Pro2ramas @ProgramB. RegrasP - %odo identi)i!ador deve !ome>ar !om uma letra ou subs!rito @^BO - L?o pode !onter espa>osO - /s !ara!teres v=lidos s?o letras, d(2itos, subs!ritoO - Pode !onter DualDuer Duantidade de !ara!teres, mas somente os primeiros 0, s?o si2ni)i!ativos.

,'+ Comentrios
/ pro2ramador pode, dentro do seu pro2rama, )azer !oment=rios sem Due o !-di2o se0a !ompilado, isto pode ser )eito de duas maneirasP =Q aDui !ome>a o pro2rama Q> ou R aDui !ome>a o pro2rama S

,', Estr(t(ra <eral


=Q JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ Dome do .rograma Q> Program nome^do^pro2ramaO @W op!ional WB

=Q JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ Unidades Q> Uses 'rt,Printer,GraphO :: unidades

=Q JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ Beclara)2es Q> Const J _ 1CCO P3 _ 1.1516O <P _ `7.O L*4% _ `76O

Zte!la a!ima\ Zte!la esDuerda\


16

R3G#% _ `77O D/WL _ `;CO PG<P _ `71Oa PGDL _ `;1O *L%*R _ `11O *+' _ `.7O 8,']+P,'* _ `;O Ty'e Lome _ StringQ;CRO 1ar ,,8P IntegerO 'P RealO LP LomeO

Zte!la direita\ Zte!la abaiJo\ Zte!la pa2ina a!ima\ Zte!la pa2ina abaiJo\ Zte!la R*%<RL ou *L%*R\ Zte!la *+'\ Zte!la 8,']+P,'*\

=Q JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ Befini)2es Q> Procedure nome^do^pro!edimento@parHmetrosBO Begin !omandosO %ndO (unction nome^da^)un>?o@parHmetrosBP %3P/ D, 4<Lb,/O Begin !omandosO %ndO =Q JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ Programa Princi.al Q> Begin !omandosO %nd.

,'- Befini)o de "i.os ="G.e>


*m Pas!al o pro2ramador pode de)inir seus pr-prios tipos de dados. <ses 'rtO Ty'e %3P/^D,%, _ Re!ord anoP 3nte2erO mesP 1..1.O diaP 1..11O *ndO %3P/^L/ *P +trin2Q;CRO Gar DataP %3P/^D,%,O LomeP %3P/^L/ *O

17

8e2in 'lr+!rO Data.ano P_ 1996O Data.mes P_ 1.O Data.dia P_ 19O Lome P_ ^<'PelcO

-' "i.os de Bados -'& J Integer: @. bAtesB


Gar 'ontador,,!umuladorP IntegerO 8e2in 'ontador P_ 1CCCO ,!umulador P_ -1.CCCO 4aiJaP Q-1.76; M 1.767R

-'+ J Real: @6 bAtesB

4aiJaP Q1.C*-1; M 1.C*d1;R

Gar Pi,3n)la!ao,Juros,Lota,+alarioP RealO 8e2in Pi P_ 1.1516O 3n)la!ao P_ 11.6O Juros P_ .6.7O Lota P_ 6.99O +alario P_ ;7667.99O

-', J BGte: @1 bAteB

4aiJaP QC M .66R

Gar Dia, es,3dade,Lumero^de^DentesP ByteO 8e2in Dia P_ 11O es P_ 1.O 3dade P_ 11O Lumero^de^Dentes P_ 1.O

-'- J C@ar: @1 bAteB

4aiJaP QC M .66R !ara!teres

Gar +eJo,/p!ao,Letra,/pera!aoP C arO 8e2in +eJo P_ c4cO /p!ao P_ c1cO Letra P_ cacO /pera!ao P_ cdcO 'ara!ter P_ `66O Z Letra , \ Letra P_ '#R@66BO Z Letra 8 \
1;

-'/ J Boolean: @1 bAteB


Gar 8e2in 'ontinua P_ 4,L+*O Repeat ReadLn@NBO ReadLn@eBO 3) N _ e then 'ontinua P_ %R<*O <ntil 'ontinuaO 'ontinuaP BooleanO N,eP 3nte2er

4aiJaP Q%rue ou 4alseR

-'0 J #tringOnP: @nd1 bAtesB


Gar LomeP StringQ5CRO 8e2in 'lr+!rO Lome P_ c%urbo Pas!al 6.6cO Write@cLomeP c,LomeBO

-'3 J ArraGOfaiNaP Of "i.o:


Gar LomeP ArrayQ1..1CR o) +trin2Q;CRO LotaP ArrayQ1..1CR o) RealO LetraP ArrayQ1..5CR o) 'harO 3P 8AteO 'lr+!rO 4or 3 P_ 1 to 1C do 8e2in Write@cLomeP cBO Readln@LomeQ3RBO Write@cLotaP cBO Readln@LotaQ3RBO *ndO 4or 3 P_ 1 to 5C do 8e2in Write@cLetraP cBO LetraQ3R P_ Read]eAO *ndO

8e2in

-'4 J Ford: @. bAtesB

@C M 66616B

Gar Lumero^de^,lunos^'atoli!a,Lumero^de^4un!ionariosP !ordO

19

-'6 J #@ortInt: @1 bAteB -'&8 J LongInt: @5 bAtesB /' O.eradores

@-1.; M 1.7B @-.1575;165; M .1575;1657B

/'& J O.eradores AritmTticos /'&'& J Com REAI#


d W : ,di>?o +ubtra>?o ultipli!a>?o Divis?o

/'&'+ J Com ID"EIRO#


d W : Div od <ses 'rtO Gar N,eP 3nte2erO DivisaoP RealO Resto,fuo!ienteP 3nte2erO 'lr+!rO N P_ 7O e P_ .O Divisao P_ N : eO Resto P_ N 0od eO fuo!iente P_ N #i5 eO ,di>?o +ubtra>?o ultipli!a>?o Divis?o !om res(ltado real Resultado inteiro da divis?o Resto da divis?o

8e2in

Z Divisao _ 1,6 \ Z Resto _ 1 \ Z fuo!iente _ 1 \

7 1

. 1

/'&', !IERARHUIA =PrecedUncia>


.C

1. ParFntesesP @B .. /perador un=rioP -@valorB 1. 4un>Ies 5. /perador Lot 6. W : Div od ,nd 6. d - /r Nor 7. _ TU U T U_ T_ @/peradores Rela!ionaisB

/'+ J O.eradores Relacionais


_ TU U_ T_ T U 32ual Di)erente aior ou i2ual enor ou i2ual enor aior

/', J O.eradores Lgicos /','& J Dot =nega)o>P


DO" Dot A 7 1 1 7

/','+ J And =e>P


Condi)o A ADB 7 Condi)o B 1 7 7 1 1 1 1

/',', J Or =o(>P

.1

Condi)o A OR 7 Condi)o B 1 7 7 7 1 7 1

/','- J Lor =o( eNcl(sivo>P


Condi)o A LOR 7 Condi)o B 1 7 1
7

1 7 1

/'- O.erador de Incl(so @3nB


/perador Due testa a in!lus?o de uma vari=vel em uma lista de !onstantes.

ENem.lo =&>:
Repeat 'h P_ Read]eAO <ntil 'h In Qc+c,csc,cLc,cncRO @W verdadeiro Duando 'h & i2ual aP c+c,csc,cLc,cnc WB V ig(al a: Repeat 'h P_ Read]eAO <ntil @'h _ c+cB /r @'h _ cscB /r @'h _ cLcB /r @'h _ cncBO @W verdadeiro Duando 'h & i2ual aP c+c,csc,cLc,cnc WB

ENem.lo =+>:
Repeat ReadLn@NBO <ntil N In Q1,.,1,5,6RO @W verdadeiro Duando N & i2ual aP 1,.,1,5,6 WB V ig(al a:
..

@W ou N 3n Q1..6RO WB

Repeat ReadLn@NBO <ntil @N_1B or @N_.B /r @N_1B /r @N_5B /r @N_6BO @W verdadeiro Duando N & i2ual aP 1,.,1,5,6 WB

/'/ Procedimentos Es.eciais /'/'& Inc


Pro!edimento Due permite o in!remento de uma vari=vel inteira. odo de UsarP Inc@vari=vel,passoBO Inc@iBO Inc@i,6BO @W i P_ i d 1 WB @W i P_ i d 6 WB

/'/'+ Bec
Pro!edimento Due permite o de!remento de uma vari=vel inteira. odo de UsarP #ec@vari=vel,passoBO #ec@iBO #ec@i,6BO @W i P_ i - 1 WB @W i P_ i - 6 WB

0' 1(n)2es Padr2es


0'& J EN.=N>: 4un>?o eJponen!ial eJ 0'+ J Abs=N>: Galor absoluto @valor sempre positivoB. 0', J Arc"an=valor>: 4un>?o ar!o tan2ente @resultado em radianosB. 0'- J Cos=ang>: 4un>?o !osseno @Hn2ulo em radianosB. 0'/ J #in=ang>: 4un>?o seno @Hn2ulo em radianosB. 0'0 J 1rac=N>: Retorna a parte )ra!ion=ria. 0'3 J Int=N>: Retorna a parte inteira. 0'4 J #;r=N>: Retorna J elevado a se2unda potFn!ia. 0'6 J #;rt=N>: Retorna a raiz Duadrada de J. 0'&8 J Ln=N>: Lo2aritmo Latural. 0'&& J C@r=N>: %rans)orma ordinal em !ara!ter. 0'&+ J Ord=N>: %rans)orma !ara!ter em ordinal. 0'&, J Ro(nd=N>: 'onverte real em inteiro arredondando. 0'&- J "r(nc=N>: 'onverte real em inteiro sem arredondar. 0'&/ J Pi: Galor Pi _ 1.15169.6616;9791.1;6. 0'&0 J Random@vBP Gera um nXmero aleat-rio de zero at& @v-1B.

3' Comandos
.1

3'& "i.os de Comandos 3'&'& #e;WUncia


S um tipo de !omando Due no )luJo l-2i!o do pro2rama & eJe!utado e o !ontrole passa para o pr-Jimo !omando. %&em'lo6 Gar LomeP +trin2O 8e2in 'lr+!rO Write@cLomeP cBO Readln@LomeBO

3'&'+ #ele)o @If e CaseB


S um tipo de !omando Due no )luJo de eJe!u>?o do pro2rama permite Due, atrav&s de !ondi>Ies, desvios se0am )eitos, ou se0a, al2uns !omandos s?o eJe!utados e outros n?o. %&em'lo6 If numero _ C T en WriteLn@cKerocB %lse If numero U C T en WriteLn@cPositivocB %lse WriteLn@cLe2ativocBO

3'&', Re.eti)o @(or, ! ile e Re'eatB


S um tipo de !omando Due no )luJo de eJe!u>?o do pro2rama, permite Due outros !omandos se0am repetidos at& Due uma !ondi>?o se0a satis)eita ou enDuanto uma !ondi>?o & satis)eita. Por eJemploP %&em'lo6 i P_ 1O Re'eat @W repete at& Due uma te!la se0a pressionada WB WriteLn@ci _ c,iBO 3n!@iBO @W in!@iB & i2ual a i P_ id1 WB Until ]eAPressedO

3'&'- Atrib(i)o
.5

S um tipo de !omando Due permite Due uma eJpress?o @eDua>?oB se0a resolvida e o seu valor atribu(do @i2ualado a uma vari=velB. %&em'lo6 i 6C 1O J 6C J d 1O J1 6C @- b d sDrt@sDr@bB - 5 W a W !BB : @. W aBO

3'+ J Comando #I PLE# e CO PO#"O:


#im.les: fuando h= apenas um !omando li2ado a outro. 4or i P_ 1 to 1CC do WriteLn@iBO Com.osto: fuando mais de um !omando est= li2ado a outro, usar-se os delimitadores Begin$ EndO 4or i P_ 1 to 1CC do Begin WriteLn@ci _ c,iBO !h P_ Read]eAO %ndX

3', J Comando If ''' "@en ''' Else @'omando de +ele>?oB


odo de (sar: If !ondi>?o T en !omandoO +e a !ondi>?o & verdadeira ent?o o !omando & eJe!utado, sen?o & eJe!utado o pr-Jimo !omando. ou If !ondi>?o T en !omando 1 %lse !omando .O +e a !ondi>?o & verdadeira o !omando 1 & eJe!utado sen?o & eJe!utado o !omando .. 'omando, !omando 1 e !omando . podem ser simples ou !ompostos.

3'- J Comando Case ''' Of ''' Else ''' End @'omando de +ele>?oB
.6

odo de (sar: Case vari=vel O1 !onstante 1P !omando 1O !onstante .P !omando .O . . . . !onstante nP !omando nO EndX +e a vari=vel & i2ual a al2uma !onstante o !omando !orrespondente & eJe!utado, se nenhuma !onstante )or en!ontrada o !omando ser= terminado. ou Case vari=vel Of !onstante 1P !omando 1O !onstante .P !omando .O . . . . . . !onstante nP !omando nO Else !omandosO EndX +e a vari=vel )or i2ual a al2uma !onstante, o !omando !orrespondente & eJe!utado, se nenhuma !onstante )or en!ontrada os !omandos ap-s o %lse s?o eJe!utados, lo2o ap-s o !omando Case & terminado. Observa)o: , vari=vel n?o pode ser Array, String e Real. Case letra Of cac..czcP WriteLn@c inXs!ulascBO c,c..cKcP WriteLn@c aiXs!ulascBO cCc..c1cP WriteLn@cLXmerocBO Else WriteLn@c'ara!ter *spe!ialcBO EndO Case di2ito Of cCcP WriteLn@cKerocBO c1cP WriteLn@c<mcBO c.cP WriteLn@cDoiscBO P
.6

c9cP WriteLn@cLovecBO Else WriteLn@c*RR/P L?o & um LXmerocBO EndO

3'/ Comando 1or ''' Bo @'omando de Repeti>?oB


odo de (sar: 1or Gari=vel^de^'ontrole :Y Galor^3ni!ial ="o> Galor^4inal Bo !omandoO , vari=vel de !ontrole n?o deve ser alterada no !orpo do !omando, pode-se ter !omando simples ou !omando !omposto, a vari=vel de !ontrole no deve ser real, array ou string. To6 'omando de repeti>?o !res!ente #o/nTo6 'omando de repeti>?o de!res!ente (or i P_ C To .66 #o 8e2in WriteLn@c'-di2oP c,i,c- 'ara!ter ,+'33Pc,C r@iBBO !h P_ Read]eAO *ndO (or i P_ 1 To n-1 #o (or 0 P_ id1 To n #o 8e2in WriteLn@ci_c,i,c g 0_c,0BO !h P_ Read]eAO *ndO

3'0 Comando F@ile ''Bo @'omando de Repeti>?oB


odo de Usar: ! ile !ondi>?o #o !omandosO *nDuanto a !ondi>?o & verdadeira os !omandos s?o repetidos. Pode-se usar !omando simples ou !omando !omposto. %&em'lo6 i P_ 1O ! ile i T_ 1C #o 8e2in WriteLn@ci _ c,iBO i P_ id1O
.7

*ndO

3'3 Comando Re.eat ''' Until @'omando de Repeti>?oB


odo de Usar: Re'eat !omandosO Until !ondi>?oO /s !omandos s?o repetidos, at& Due a !ondi>?o se torne verdadeira, enDuanto a !ondi>?o & )alsa os !omandos s?o repetidos. %&em'lo6 i P_ 1O Re'eat WriteLn@ci _ c,iBO i P_ id1O Until i U_ 1CO i P_ CO Re'eat WriteLn@ci _ c,iBO i P_ id1O Until ]eAPressedO

Z Repete at& i ser i2ual a 1C \

Z Repete at& Due uma te!la se0a pressionada \

3'4 O Procedimetro !alt


4or>a o t&rmino do pro2rama @aborta o pro2ramaB, retornando ao sistema opera!ional, se o pro2rama )or eJe!ut=vel ou ao ambiente do %urbo Pas!al, se o pro2rama )or um arDuivo )onte. odo de Usar: *alt @JP WordBO ou *altO

3'6 O Procedimento ENit


4or>a a sa(da de um la>o, passando a eJe!u>?o para a pr-Jima instru>?o. Repeat P 3) ]eAPressed then %&itO P <ntil 4alseO
.;

4' Entrada e #a5da 4'& Entrada .elo "eclado


ReadLnP Pro!edimento Due permite entrada de dados via te!lado. , vari=vel & pode ser de DualDuer tipo. ReadLn=N>X Read4eyP 4un>?o Due permite a entrada de um !ara!ter sem pressionar a te!la T*L%*RU. , vari=vel deve ser do tipo C ar e & ne!ess=rio usar a unidade CrtO. <ses 'rtO Gar %e!laP 'harO 8e2in 'lr+!rO Write@cDi2ite uma %*'L,P cBO %e!la P_ Read4eyO WriteLn@cGo!F di2itouP c,%e!laBO *nd.

4'+ #a5da no 75deo


Pro!edimento Due permite es!rita no v(deoP !rite@JBX ou !riteLn@JBX ou !riteLnX @W 3mprime J e !ursor )i!a ao lado WB @W 3mprime J e !ursor vai para pr-Jima linha WB @W DeiJa uma linha em bran!o na tela WB

4', #a5da na Im.ressora


S ne!ess=rio usar a unidade Printer. <ses 'rt, PrinterO 8e2in 'lr+!rO WriteLn@LstBO Write@Lst,cJ _ cBO WriteLn@Lst,JBO *nd. Observa)oP

@W Pula uma linha na impressora WB

.9

WriteLn@lst,`1.BO WriteLn@lst,`16BO

@W +alta uma p=2ina na impressora WB @W 'omprime os !ara!teres na impressora WB

6' Controle do 75deo e "eclado: 6'& Clr#cr @'lear +!reenB


Pro!edimento Due permite limpar a tela, o !ursor permane!e no !anto superior esDuerdo. S obri2at-rio o uso da unidade Crt. , tela & limpa !om a !or de )undo !orrente. <ses CrtO 8e2in ClrScrO

6'+ <otoLZ=col(na$lin@a> @G= para posi>?o N,eB


Pro!edimento Due permite o posi!ionamento do !ursor em DualDuer posi>?o da tela. S obri2at-rio o uso da unidade Crt. &-8o(4Clnas48 &

+/Lin@as "ela

+/ <ses 'rtO 8e2in 'lr+!rO +oto,-@1C,1.BO Write@c%urbo Pas!alcBO +oto,-@15,11BO Write@c6.6cBO

6', ClrEol @'lear *nd /) LineB


Pro!edimento Due permite Due uma linha se0a apa2ada desde a posi>?o do !ursor at& o )inal da linha. S obri2at-rio o uso da <nidade Crt. <ses 'rtO
1C

Gar LP 8AteO 8e2in %eJt8a!9Ground@W#3%*BO 'lr+!rO %eJt'olor@8L,']BO 4or L P_ 1 to .5 do 8e2in GotoNe@5C,LBO Clr%olO *ndO *nd.

Z ,ltera a !or de )undo\ Z ,ltera a !or do %eJto \

6'- BelLine @Delete LineB


Pro!edimento Due permite Due uma linha se0a apa2ada. S obri2at-rio o uso da <nidade Crt. <ses 'rtO Gar LP 8AteO 8e2in %eJt8a!9Ground@W#3%*BO 'lr+!rO %eJt'olor@8L,']BO 4or L P_ 1 to .5 do 8e2in GotoNe@5C,LBO #elLineO *ndO *nd.

Z ,ltera a !or de )undo\ Z ,ltera a !or do %eJto \

&8 Comandos Es.eciais @<nidade 'rtB &8'& BelaG @,trasoB


Pro!edimento Due permite uma parada tempor=rio da eJe!u>?o por parte do !omputador. odo de Usar: #elay@JBO Z J em milise2undos \

&8'+ "eNtBacC<ro(nd @'or de 4undoB


Pro!edimento Due permite mudan>a na !or de )undo do v(deo. odo de Usar: Te&tBac.+round@!orBX Z !orP nXmero ou nome \
11

D%mero C 1 . 1 5 6 6 7

Dome 8la!9 8lue Green 'Aan Red a2enta 8ro"n Li2htGraA

Cor preto azul verde azul !laro vermelho rosa marrom !inza

&8', "eNtColor @'or de 4renteB


Pro!edimento Due permite mudan>a na !or de teJto do v(deo. odo de Usar: Te&tColor@!orBO D%mero C 1 . 1 5 6 6 7 ; 9 1C 11 1. 11 15 16 Dome 8la!9 8lue Green 'Aan Red a2enta 8ro"n Li2htGraA Dar9GraA Li2ht8lue Li2htGreen Li2ht'Aan Li2htRed Li2ht a2enta eello" White Z !orP nXmero ou nome \ Cor preto azul verde azul !laro vermelho rosa marrom !inza !inza brilhante azul brilhante verde brilhante azul !laro brilhante vermelho brilhante rosa brilhante amarelo bran!o

O$ser5aoP Pis!ante @Blin. & !or a 1.;B

&8'- FindoE @JanelaB


Pro!edimento Due permite de)inir a 0anela de teJto ativa, ou se0a, parte do v(deo ativo onde as es!ritas s?o )eitas. Lormalmente a 0anela ativa & toda tela, ou se0aP !indo/@1,1,;C,.6BO

1.

@Ni,eiB

@N),e)B
odo de Usar: !indo/@Ni,ei,N),e)BO Observa)oP ,p-s setar uma 0anela ativa a posi>?o @1,1B passa ser o !anto superior esDuerdo.

&8'/ #o(nd e Do#o(nd @+om e +em +omB


Sound: Pro!edimento Due ati5a o auto-)alante do !omputador. odo de Usar: Sound@notaP WordBO <ses 'rtO 8e2in Sound@..CBO DelaA@.CCBO "oSoundO *nd.

@W ativa o auto-)alante !om a nota ..C WB @W per(odo de dura>?o do som WB @W desativa o auto-)alante WB

"oSound: Pro!edimento Due desati5a o auto-)alante do !omputador. odo de Usar: "oSoundO

&8'0 F@ereL e F@ereZ @Lo!aliza>?o do 'ursorB


4un>Ies Due indi!am a posi>?o !orrente do !ursor QJ @!olunaB e A @linhaBR. <ses 'rtO Gar 'oluna,LinhaP 8AteO 8e2in 'oluna P_ ! ere,O Linha P_ ! ere-O
11

WriteLn@c'olunaP c,'olunaBO WriteLn@cLinha P c,LinhaBO *nd.

&8'3 "eNt ode @ odo do %eJtoB


Pro!edimento Due de)ine o tipo de modo teJto, !olorido ou preto e bran!o e 5C ou ;C !olunas. C48 - 'olorido !om ;C !olunas C-8 - 'olorido !om 5C !olunas BF48 - Preto e 8ran!o !om ;C !olunas BF-8 J Preto e 8ran!o !om 5C !olunas

&&' 7etores e

atri9es

Getores e matrizes s?o vari=veis Due possuem v=rios elementos de mesmo tipo, !ada elemento possui um ou mais (ndi!es Due os re)eren!iam e os di)eren!iam. <ma !ara!ter(sti!a importante & Due todos os valores permane!em na mem-ria ao mesmo tempo. /s elementos s?o alo!ados !om !onti2Eidade )(si!a, ou se0a, um ao lado do outro.

&&'& 7etores
S um tipo parti!ular de matriz onde !ada elemento possui s- um (ndi!e @unidimensionalB. / pro2rama eJemplo abaiJo, permite a entrada de nomes e idades, lo2o ap-s imprime todos os nomes e idades !ontidos na mem-ria. Pro2ram GetorO <ses 'rtO 'onst f<,L% _ .66O Gar LomeP ,rraAQ1..f<,L%R o) +trin2Q5CRO 3dadeP ,rraAQ1..f<,L%R o) 8AteO 3,LP 8AteO 'hP 'harO 8e2in 'lr+!rO 3 P_ 1O Repeat Write@cLomeP cBO ReadLn@LomeQiRBO @W entrada de um nome WB Write@c3dadeP cBO ReadLn@3dadeQiRBO @W entrada de uma idade WB 3n!@3BO Write@c'ontinua Q+Rim ou QLR?o h cBO Repeat 'h P_ Read]eAO <ntil 'h 3L Qc+c,csc,cLc,cncRO
15

<ntil @'h 3L QcLc,cncRB /r @3 U f<,L%BO L P_ 3 - 1O @W nXmero de elementos WB 4or 3 P_ 1 %o n Do 8e2in WriteLn@cLomeP c,LomeQiRBO WriteLn@c3dadeP c,3dadeQiRBO 'h P_ Read]eAO *ndO *nd.

&&'+

atri9

S um tipo de dado Due permite Due uma vari=vel !ontenha v=rios elementos de mesmo tipo. 'ada elemento possui dois ou mais (ndi!es @bidimensional, tridimensional, et!B Due o di)eren!ia dos outros elementos. / pro2rama abaiJo, !al!ula a soma de duas matrizesP ' _ , d 8. Pro2ram vetorO <ses 'rtO 'onst f<,L% _ 1CO Gar ,,8,'P ,rraAQ1..f<,L%,1..f<,L%R o) RealO 'ol,Lin,J, ,LP 8AteO 'hP 'harO 8e2in 'lr+!rO Write@c3n)orme a /RD* da ,%R3K @ JLBP cBO Repeat Write@cLXmero de Linhas @ BP cBO Readln@ BO <ntil @ U_ 1B ,nd @ T_ f<,L%BO Repeat Write@cLXmero de 'olunas @LBP cBO Readln@LBO <ntil @L U_ 1B ,nd @L T_ f<,L%BO 4or Lin P_ 1 %o Do 4or 'ol P_ 1 %o L Do 8e2in Write@c,Qc,Lin,c,c,'ol,cR _ cBO Readln@aQLin,'olRBO Write@c8Qc,Lin,c,c,'ol,cR _ cBO Readln@bQLin,'olRBO *ndO 4or Lin P_ 1 %o Do 4or 'ol P_ 1 %o L Do 8e2in 'QLin,'olR P_ ,QLin,'olRd8QLin,'olRO Write@c'Qc,Lin,c,c,'ol,cR _ c,'QLin,'olRBO 'h P_ Read]eAO
16

*ndO *nd.

&&', #ort =Ordena)o>


&todo de !lassi)i!a>?o de dados. Para eJempli)i!ar melhor as vari=veis do tipo vetor, abaiJo & dado dois tipos de SortP Pro2ram SortO <ses 'rtO 'onst f<,L% _ .66O %Ape %3P/ _ +trin2Q5CRO Gar LomeP ,rraAQC..f<,L%R o) %3P/O %empP %3P/O 3,J,LP 8AteO 'hP 'harO 8e2in 'lr+!rO 3 P_ CO Repeat Write@cLomeP cBO Readln@LomeQiRBO @W *ntrada de um nome WB 3n!@3BO Write@c'ontinua Q+Rim ou QLR?o h cBO Repeat 'h P_ Read]eAO <ntil 'h 3L Qc+c,csc,cLc,cnRO <ntil @'h 3L QcLc,cncRB /r @3 U f<,L%BO L P_ 3 - 1O @W LXmero de *lementos WB 4or 3 P_ 1 to L do 4or J P_ 3d1 to L do 3) LomeQ3R U LomeQJR then 8e2in %emp P_ LomeQiRO LomeQiR P_ LomeQ0RO LomeQ0R P_ %empO *ndO WriteLn@cLomes /RD*L,D/+cBO 4or 3 P_ C to L do 8e2in WriteLn@cLomeP c,LomeQiRBO 'h P_ Read]eAO *ndO *nd. Pro2ram Bu$leDSortO <ses 'rtO 'onst f<,L% _ .66O @W &todo da 8olha - 8uble +ortWB

16

%Ape %3P/ _ +trin2Q5CRO Gar LomeP ,rraAQC..f<,L%R o) %3P/O %empP %3P/O 3,L,]P 8AteO 'hP 'harO /rdenadoP 8//L*,LO 8e2in 'lr+!rO 3 P_ CO Repeat Write@cLomeP cBO Readln@LomeQiRBO @W *ntrada de um Lome WB 3n!@3BO Write@c'ontinua Q+Rim ou QLR?o h cBO Repeat 'h P_ Read]eAO <ntil 'h 3L Qc+c,csc,cLc,cncRO <ntil @'h 3L QcLc,cncRB /r @3 U f<,L%BO L P_ 3 - 1O @W LXmero de *lementos WB ] P_ L - 1O Repeat /rdenado P_ %R<*O 4or 3 P_ C to ] do 3) LomeQ3R U LomeQ3d1R then 8e2in %emp P_ LomeQiRO LomeQ3R P_ LomeQ3d1RO LomeQ3d1R P_ %empO /rdenado P_ 4,L+*O *ndO ] P_ ] - 1O <ntil /rdenadoO WriteLn@cLomes /RD*L,D/+cBO 4or 3 P_ C to L do 8e2in WriteLn@cLomeP c,LomeQiRBO 'h P_ Read]eAO *ndO *nd.

&+'

ani.(la)o de #tring
4un>?o Due retorna o !ara!ter !orrespondente ao !-di2o da tabela ,+'33.

&+'& C r
odo de <sarP C r@!-di2oP 8AteBP 'harO
17

<ses 'rtO Gar 'odi2oP 8AteO 'ara!terP 'harO 8e2in 'lr+!rO Repeat Write@c'-di2oP cBO Readln@'odi2oBO 'ara!ter P_ C r@'odi2oBO WriteLn@c'-di2o Pc,'odi2o,c 'ara!ter ,+'33P c,'ara!terBO <ntil 'odi2o _ CO *nd.

&+'+ Ord
4un>?o Due retorna o !-di2o ,+'33 !orrespondente ao !ara!ter da tabela ,+'33. odo de <sarP Ord@!ara!terP 'harBP 8AteO <ses 'rtO Gar 'odi2oP 8AteO 'ara!terP 'harO 8e2in Repeat 'lr+!rO Write@c'ara!terP cBO 'ara!ter P_ Read]eAO 'odi2o P_ Ord@'ara!terBO WriteLn@c'ara!ter Pc,'ara!ter,c '-di2o ,+'33P c,'odi2oBO <ntil 'ara!ter _ `11O @W `11 & o !-di2o da te!la T*L%*RU WB *nd.

&+', Concat
4un>?o Due retorna as strin2s s1,s.,... sn !on!atenadas, ou se0a, unidas. odo de <sarP Concat@s1,s.,... snP +trin2QRBP +trin2QRO <ses 'rtO Gar +1,+.,+1P +trin2Q7RO +rP +trin2Q.1RO 8e2in 'lr+!rO +1 P_ c%urbo cO +. P_ cPas!al cO +1 P_ c6.6cO +r P_ Concat@+1,+.,+1BO WriteLn@+1BO
1;

WriteLn@+.BO WriteLn@+1BO WriteLn@+rBO Repeat <ntil ]eAPressedO *nd.

@W +r P_ c%urbo Pas!al 6.6c WB

&+'- Co'y
4un>?o Due retorna uma s(bstring a partir de outra string. odo de <sarP Co'y@sP +trin2QR, in(!io, tamanhoP 8AteBP +trin2QRO <ses 'rtO Gar GelhaP +trin2Q16RO LovaP +trin2Q1CRO 8e2in 'lr+!rO Gelha P_ c 3'R/'/ P<%,D/RcO Lova P_ Co'y@velha,6,1CBO WriteLn@GelhaBO WriteLn@LovaBO Repeat <ntil ]eAPressedO *nd.

@W Lova P_ c'/ P<%,D/Rc WB

&+'/ #elete
Pro!edimento Due remove !ara!teres de uma string. odo de <sarP #elete@sP +trin2QR,in(!io,tamanhoP 8AteBO <ses 'rtO Gar GelhaP +trin2Q16RO 8e2in 'lr+!rO Gelha P_ c 3'R/'/ P<%,D/RcO #elete@Gelha,6,1CBO WriteLn@GelhaBO @W Gelha P_ c 3'R/c WB Repeat <ntil ]eAPressedO *nd.

&+'0 Insert
Pro!edimento Due insere s1 em s. na posi>?o dese0ada 2erando uma nova string. odo de <sarP Insert@s1,s.P +trin2QR,posi>?oP 8AteBO <ses 'rtO
19

Gar 8e2in

+1P +trin2Q.RO +.P +trin2Q17RO 'lr+!rO +1 P_ c*+cO +. P_ c 3'R/'/ P<%,D/RcO Insert@+1,+.,16BO WriteLn@+1BO WriteLn@+.BO @W +. P_ c 3'R/'/ P<%,D/R*+c WB Repeat <ntil ]eAPressedO

*nd.

&+'3 Lengt
4un>?o Due retorna o nXmero de !ara!teres de uma string odo de <sarP Lengt @sP +trin2QRBP 8AteO <ses 'rtO Gar LomeP +trin2Q5CRO 8e2in 'lr+!rO Write@cDi2ite seu LomeP cBO Readln@LomeBO Write@Lome,c seu Lome temP c,Lengt =DomeB,c !ara!terescBO Repeat <ntil ]eAPressedO *nd.

&+'4 Pos
4un>?o Due retorna a posi>?o de s1 em s. @C se n?o en!ontrarB. odo de <sarP Pos@s1,s.P +trin2QRBP 8AteO <ses 'rtO Gar +1P +trin2Q6RO +.P +trin2Q16RO Posi!aoP 3nte2erO 8e2in 'lr+!rO +1 P_ c'/ P<%cO +. P_ c 3'R/'/ P<%,D/RcO Posi!ao P_ Pos@+1,+.BO 3) Posi!aoTUC then Write@c+trin2 *n!ontrada na Posi>?oP c,Posi!aoB *lse Write@c+trin2 n?o en!ontradacBO Repeat <ntil ]eAPresssedO
5C

*nd.

&+'6 Str
Pro!edimento Due !onverte um valor nXmeri!o @Real ou DualDuer tipo de inteiroB em String. / tamanho do nXmero & dado pelo tamanho da String, sendo Due um bAte & deiJado para o sinal. odo de <sarP Str@valorP 3nte2er ou Real, sP +trin2QRBO <ses 'rtO Gar LP RealO +P +trin2Q7RO 8e2in 'lr+!rO L P_ 1.15161617O Str@L,+BO WriteLn@c+trin2P c,+BO Repeat <ntil ]eAPressedO *nd.

@W + P_ c1.1516c WB

&+'&8 U'Case
4un>?o Due retorna o !ara!ter !onvertido em letra maiXs!ula. odo de <sarP U'Case@!hP 'harBP 'harO <ses 'rtO Gar 'hP 'harO 8e2in 'lr+!rO Repeat Write@cDi2ite uma %e!laP cBO 'h P_ Read]eAO WriteLn@U'Case@'hBBO <ntil U'Case@'hB _ c4cO *nd. <ses 'rtO Gar 'hP 'harO 8e2in 'lr+!rO Repeat Write@c'on)irma Q+Rim ou QLR?o hcBO 'h P_ U'Case@Read]eABO <ntil 'h 3n Qc+c,cLcRO *nd.

51

&+'&& 1al
Pro!edimento Due !onverte uma string em valor nXmeri!o @Real ou DualDuer tipo de inteiroB, se a string possuir letras, a vari=vel erro retorna a posi>?o da letra @pois n?o & nXmeri!aB, sen?o retorna zero. odo de <sarP 1al@sP +trin2QR, valorP Real ou 3nte2er, erroP 3nte2erBO <ses 'rtO Gar +P +trin2Q1CRO GalorP 3nte2erO *rroP 3nte2erO 8e2in 'lr+!rO Repeat Write@cDi2ite al2uma !oisa Q4im para 4inalizarRP cBO Readln@+BO 7al@+,Galor,*rroBO 3) *rro_C then 8e2in WriteLn@c+* *RR/cBO WriteLn@cLXmeroP c,GalorBO *nd *lse WriteLn@c*RR/P c,*rroBO <ntil @+ _ c43 cB or @+ _ c)imcBO *nd.

&+'&+ (illC ar
Pro!edimento Due ini!ializa uma vari=vel string !om !ara!teres repetitivos. odo de <sarP(illC ar@vari=velP fualDuer^tipoO DuantidadeP WordO !onstanteBO <ses 'rtO Gar LinhaP +trin2Q;CRO *spa!osP +trin2Q5CRO 8e2in (illC ar@Linha,;C,c-cBO LinhaQCR P_ `;CO (illC ar@*spa!os,5C,`1.BO *spa!osQCR P_ `5CO

@W indi!ar o nXmero de !ara!teres WB

&,' Procedimentos =Procedure> e 1(n)2es =(unction> &,'& 7ariveis Locais e <lobais


5.

7arivel Local
%odas as vari=veis de)inidas dentro de uma )un>?o @VfunctionVB ou pro!edimento @V'rocedureVB s?o !hamadas lo!ais, s- podem ser re)eren!iadas dentro do m-dulo Due a de)iniu.

7arivel <lobal
%odas as vari=veis de)inidas )ora de todas as )un>Ies s?o !hamadas 2lobais e podem ser re)eren!iadas em DualDuer parte do pro2rama in!lusive dentro das )un>Ies e pro!edimentos. Observa)2esP aB%odas as vari=veis usadas no pro2rama prin!ipal s?o 2lobais e devem, obri2atoiamente ser de)inidas no V1arV. bB,s vari=veis lo!ais tem prioridade sobre as vari=veis 2lobais. !B%amb&m eJistem !onstantes @VConstVB, tipos @VTy'eVB, pro!edimentos @VProcedureVB e )un>Ies @V(unctionVB lo!ais. dB%odos os parHmetros s?o lo!ais, por esta raz?o, n?o ne!essitam ter o mesmo nome das vari=veis de !hamada. Pro2ram *JemploO <ses 'rtO Gar 8ase,*Jpoente,ResultadoP RealO %e!laP 'harO Pro!edure "ROCA@Gar J,APRealBO @W 1ar passa2em por re)erFn!ia WB Gar tempP RealO 8e2in temp P_ JO J P_ AO A P_ tempO *ndO 4un!tion ELE7A @b,eP RealBP RealO Gar potP RealO 8e2in pot P_ eJp@lo2@bBWeBO ELE7A P_ potO @W +a(da da 4un>?o WB *ndO 8e2in Repeat 'lr+!rO WriteLn@c8aseP cBO Readln@8aseBO WriteLn@c*JpoenteP cBO Readln@*JpoenteBO Resultado P_ ELE7A@8ase,*JpoenteBO WriteLn@cResultadoP c,ResultadoP7P.BO "ROCA@8ase,*JpoenteBO @W 'hamada do Pro!edimento WB
51

Resultado P_ ELE7A@8ase,*JpoenteBO WriteLn@cResultadoP c,ResultadoP7P.BO WriteLn@c'ontinua Q+Rim QLR?o h cO Repeat %e!la P_ Read]eAO <ntil %e!la 3L Qc+c,csc,cLc,cncRO <ntil %e!la 3L QcLc,cncRO *nd. 7ariveis <lobaisP 8ase, *Jpoente, Resultado e %e!la. 7ariveis LocaisP - Pro!edure %R/',P J, A e temp. - 4untion *L*G,P b, e, pot.

@W 'hamada da 4un>?o WB

&,'+ Par?metros
+?o todas as vari=veis Due num pro!edimento @V ProcedureVB ou 4un>?o @V(unctionVB est?o entre parFnteses. *Jistem parHmetros de entrada e sa(da @s?o os mesmos, a di)eren>a & se s?o alterados ou n?oB. C@amadaP %R/',@Gar J,AP RealBO @W Pro!edimento WB

*ntrada e +a(da

J A %R/',

&,', Passagem de Par?metros .or 7alor


fuando os parHmetros passados para as )un>Ies @V(unctionVB ou pro!edimentos @VProcedureVB no alteram os valores das vari=veis de !hamada, isto & !hamado passa2em de parHmetro por 7alor. Lo eJemplo abaiJo, V$V e VeV s?o passados por valor, lo2o n?o alteram as vari=veis do pro2rama prin!ipal. 4un!tion *L*G, @b,eP RealBP RealO Gar potP RealO 8e2in pot P_ eJp@lo2@bBWeBO *L*G, P_ potO *ndO

&,'- Passagem de Par?metros .or ReferUncia


fuando os parHmetros passados para as )un>Ies @V(unctionVB ou pro!edimentos @VProcedureVB alteram os valores das vari=veis de !hamada, isto & !hamado passa2em de parHmetro
55

por ReferUncia. Lo eJemplo abaiJo, V&V e VyV s?o passados por re)erFn!ia, lo2o alteram as vari=veis do pro2rama prin!ipal. Pro!edure %R/',@7ar J,APRealBO Gar tempP RealO 8e2in temp P_ JO J P_ AO A P_ tempO *ndO

&,'/ (unction @4un>IesB


-dulo desenvolvido pelo pro2ramador. Permite a !ria>?o de uma )un>?o pr-pria. Pode ter v=rios parHmetros de entrada @'assagem 'or 5alorB e ou sa(da @'assagem 'or refernciaB, mas apenas um retorno de sa(da. / retorno & dado pelo nome da )un>?o, assim, pode-se !onsiderar Due uma )un>?o nada mais & do Due uma vari=vel. (unction nome^da^)un>?o @parHmetrosP tipoBP tipo^do^resultadoO %Ape 'onst Gar vari=velP tipo^do^resultadoO 8e2in !omandosO nome^da^)un>?o P_ vari=velO @W Retorno da 4un>?o WB *ndO

*ntradJ eA4un>?oResltadr +a(d

&,'0 Procedure @Pro!edimentoB


-dulo desenvolvido pelo pro2ramador. Permite a !ria>?o de um !omando pr-prio. Pode ter v=rios parHmetros de entrada e v=rios de sa(da. /s parHmetros podem ser alterados ou n?o. Permite passa2em de parHmetros por 5alor ou por referncia. Procedure nome^do^pro!edimento @parHmetrosP tipoBO %Ape 'onst Gar 8e2in !omandosO *ndO

56

*ntrada e +a(da

J A z

Pro!edimento

Ti'o A: / pro!edimento a!ima possui parHmetros de entrada e sa(da. & e y passa2em por 5alor 2 passa2em por referncia J A z

*ntrada

Pro!edimento

Ti'o BP / pro!edimento a!ima somente possui parHmetros de entrada &, y e 2 passa2em por 5alor

a +a(da b Pro!edimento

Ti'o CP / pro!edimento a!ima possui somente parHmetros de sa(da a e $ passa2em por referncia O$ser5aoP /s parHmetros de sa(da podem ser usados !omo parHmetros de entrada.

Pro!edimento

Ti'o #P / pro!edimento a!ima n?o possui parHmetros. %&em'losP

56

Pro2ram 'omandosO @W Pro!edimento Ti'o B WB <ses 'rtO Gar ,,8,'P RealO %e!laP 'harO Pro!edure BA#CARA @a,b,!P RealBO Gar delta,J1,J.,r,iP RealO 8e2in delta P_ sDr@bB-5WaW!O @W '=l!ulo do Determinante WB 3) delta U_ C then @W Ra(zes R*,3+ WB 8e2in J1 P_ @-bdsDrt@deltaBB:@.WaBO J. P_ @-b-sDrt@deltaBB:@.WaBO WriteLn@cJ1 _ c,J1P7P.BO WriteLn@cJ. _ c,J.P7P.BO Repeat <ntil ]eAPressedO *nd *lse @W Ra(zes '/ PL*N,+ WB 8e2in r P_ -b:@.WaBO i P_ sDrt@abs@deltaBB:@.WaBO WriteLn@cJ1 _ c,rP7P.,c d c,iP7P.,c 0cBO WriteLn@cJ. _ c,rP7P.,c - c,iP7P.,c 0cBO Repeat <ntil ]eAPressedO *ndO *ndO 8e2in Repeat 'lr+!rO WriteLn@c'al!ula Ra(zescBO WriteLnO WriteLn@cfual o valor de ,P cBO Readln@,BO WriteLn@cfual o valor de 8P cBO Readln@8BO WriteLn@cfual o valor de 'P cBO Readln@'BO BASCARA@,,8,'BO Write@c'ontinua Q+Rim ou QLR?o h cBO Repeat %e!la P_ <p'ase@Read]eABO <ntil %e!la 3L Qc+c,cLcRO <ntil %e!la _ cLcO *nd. Pro2ram 'omandosO <ses 'rtO Gar ,,8,'P RealO Delta,R,3P RealO N1,N.P RealO @W Pro!edimento Ti'o A WB

57

%e!laP 'harO Pro!edure BA#CARA @a,b,!P RealOG,R delta,r,iP RealBO Gar delta,J1,J.,r,iP RealO 8e2in delta P_ sDr@bB-5WaW!O @W Determinante WB r P_ -b:@.WaBO @W Parte Real WB i P_ sDrt@abs@deltaBB:@.WaBO @W Parte ima2inaria WB *ndO 8e2in Repeat 'lr+!rO WriteLn@c'al!ula RaizescBO WriteLnO WriteLn@cfual o valor de ,P cBO Readln@,BO WriteLn@cfual o valor de 8P cBO Readln@8BO WriteLn@cfual o valor de 'P cBO Readln@'BO BA#CARA@,,8,',Delta,R,3BO 3) Delta U_ C then @W Raizes R*,3+ WB 8e2in N1 P_ rdiO N. P_ r-iO WriteLn@cJ1 _ c,N1P7P.BO WriteLn@cJ. _ c,N.P7P.BO Repeat <ntil ]eAPressedO *nd *lse @W Raizes '/ PL*N,+ WB 8e2in WriteLn@cJ1 _ c,RP7P.,c d c,3P7P.,c 0cBO WriteLn@cJ. _ c,RP7P.,c - c,3P7P.,c 0cBO Repeat <ntil ]eAPressedO *ndO Write@c'ontinua Q+Rim ou QLR?o h cBO Repeat %e!la P_ <p'ase@Read]eABO <ntil %e!la 3L Qc+c,cLcRO <ntil %e!la _ cLcO *nd.

&-' Ar;(ivos

5;

a Ponteiro C 1 . 1 P
a b,!,d e,),2,h

d e ) 2 h

3denti)i!a>?o do Re2istro 'ampos Re2istros

aB <m arDuivo & )ormado por registrosO bB 'ada re2istro & )ormado de cam.osO !B / arDuivo possui um nome @; !ara!teres para o nome mais 1 !ara!teres para a eJtens?oB, este nome & !hamado de nome e&terno @D/+BO dB 'ada re2istro possui um (ndi!e interno e o arDuivo possui um ponteiro Due indi!a a posi>?o atual do arDuivoO eB fuando o arDuivo & aberto @VResetVB ou !riado @VRe!riteVB o ponteiro aponta para o re2istro K*R/O )B , !ada leitura ou 2rava>?o o ponteiro aponta para o pr-Jimo re2istro @ Acesso se;WencialBO 2B Pode-se ainda, apontar para DualDuer re2istro @ Acesso Rand[micoB atrav&s do pro!edimento See..

"i.os de Ar;(ivos: "eNto


%ipo de ,rDuivo )ormado de !ara!teres or2anizados em linhas. Lo )inal de !ada linha eJistem dois !ara!teres de !ontrole L4 @`1CB d 'R @`11B. Como Befinir: Gar ,rDuivoP %eJtO Re2P 'harO @W ou ,rDuivoP (ile Of C@arO WB @W Re2 & a vari=vel Due representa o re2istro WB

Binrio
%ipo de ,rDuivo usado para armazenar tipos de dados di)erentes. %Ape Registro _ Re!ord LomeP +trin2Q1CRO 3dadeP 8AteO +al=rioP RealO
59

*ndO Gar ,rDuivoP (ile Of RegistroO Re2P Re2istroO

&-'& Procedimentos &-'&'& Assign


Pro!edimento Due asso!ia o nome eNterno do arDuivo @D3+'/B ao nome interno do arDuivo dentro do pro2rama @(ile OfB. odo de <sarP Assign@,rDP 4ile /) ..., nome^arDuivoP +trin2QRBO %&em'loP ,rDuivo Gen&ri!o Gar 8e2in 'lr+!rO Write@c3n)orme o Lome do ,rDuivoP cBO Readln@Lome^arDuivoBO Assign@,rD,Lome^arDuivoBO ou %&em'loP ,rDuivo *spe!()i!o Gar 8e2in 'lr+!rO Assign@,rD,c8PY43L*+Y,G*LD,.D,%cBO @W #ri5e67Pat 7"ome WB ,rDP (ile Of 3nte2erO Re2P 3nte2erO ,rDP (ile Of 8AteO Re2P 8AteO Lome^arDuivoP +trin2Q15RO

&-'&'+ Close
Pro!edimento Due permite fec ar um arDuivo. odo de <sarP Close@,rDP 4ile /) '''BO

&-'&', %rase
Pro!edimento Due permite deletar um arDuivo no dis!o. odo de <sarP %rase@driveP ,rDP 4ile /) '''BO

6C

&-'&'- Read
Pro!edimento Due permite ler !ampos ou re2istros do arDuivo !ontido no dis!o. odo de <sarP Read@,rDP 4ile /) ..., re2istro ou !ampoBO

&-'&'/ !rite
Pro!edimento Due permite gra5ar !ampos ou re2istros no arDuivo !ontido no dis!o. odo de <sarP !rite@,rDP 4ile /) ..., re2istro ou !ampoBO

&-'&'0 Re"ame
Pro!edimento Due permite renomear o arDuivo no dis!o. odo de <sarPRe"ame@driveP,rDP 4ile /) ''', novo^nome^para^o^arDuivoBO

61

&-'&'3 Reset
Pro!edimento Due permite a$rir de um arDuivo. odo de <sarP Reset@,rDP 4ile /) '''BO La abertura de um arDuivo, deve ser veri)i!ado sua eJistFn!ia, pois se o arDuivo n?o eJistir haver= um erro em tempo de eJe!u>?o @Run Time %rrorB, e o pro2rama ser= abortado, para Due isto n?o a!onte>a & )eito o se2uinteP Pro2ram *JemploO <ses 'rtO Gar ,rDP (ile Of 3nte2erO Re2O 3nte2erO Lome^arDuivoP +trin2Q15RO 8e2in 'lr+!rO Write@cLome do ,rDuivoP cBO ReadLn@Lome^arDuivoBO ,ssi2n@,rD,Lome^arDuivoBO R\IJS Reset@,rDB R\I]SO O$ser5aoP Z[3-\ e Z[3d\ s?o diretivas de !ompila>?o Due )or>am o !ompilador a n?o abortar se houver um erro em tempo de eJe!u>?o @ RunTime %rrorB, )azendo ainda !om Due a vari=vel pr&de)inida VIoResult: retorne !om a in)orma>?o se houve erro ou n?o da se2uinte maneiraP IoResult _ C IoResult TU C ,rDuivo *N3+%* ArDuivo Li/ *N3+%*

3) IoResult _ C %hen WriteLn@c,rDuivo *N3+%*cB *lse WriteLn@c*RR/P ,rDuivo Li/ *N3+%*cB

&-'&'4 Re!rite
Pro!edimento Due permite criar um arDuivo em dis!o, se o arDuivo n?o eJiste, & !riado, se eJiste & apa2ado, e o ponteiro do arDuivo & posi!ionado no re2istro zero. odo de <sarP Re!rite@,rDP 4ile /) '''BO

&-'&'6 See.
Pro!edimento Due permite 'osicionar o ponteiro do arDuivo no re2istro espe!i)i!ado @Acesso Rand[micoB. odo de <sarP See.@,rDP 4ile /) ..., nXmero^do^re2istroBO
6.

&-'+ 1(n)2es &-'+'& %O( @*nd /) 4ileB


4un>?o Due retorna TRU% se o ponteiro do arDuivo !he2ou ao fim do ar)ui5o, (ALS% enDuanto n?o )or )im de arDuivo. odo de <sarP %O(@,rDP 4ile /) '''BP 8ooleanO

&-'+'+ (ilePos
4un>?o Due retorna a 'osio do re2istro !orrente, ou se0a, a posi>?o do ponteiro no arDuivo @o primeiro re2istro & KeroB. odo de <sarP (ilePos@,rDP 4ile /) ...BP 3nte2erO

&-'+', (ileSi2e
4un>?o Due retorna o nEmero de registros do arDuivo, VzeroV se n?o eJistir nenhum re2istro. odo de <sarP (ileSi2e@,rDP 4ile /) '''BP 3nte2erO

&-'+'- Si2eOf
4un>?o Due retorna o nEmero de $ytes o!upado por uma vari=vel. odo de <sarP Si2eOf@tipo ou vari=velBP WordO

&-', Como Befinir (m Registro


<ses 'rtO %Ape RE<I#"RO _ Record LomeP +trin2Q5CRO 3dadeP 8AteO 4oneP +trin2Q1.RO EndO Gar ,rDP (ile Of RE<I#"ROO @W De)ini>?o do ,rDuivo 3nterno WB Re2P RE<I#"ROO @W De)ini>?o do Re2istro WB Lome^do^arDuivoP +trin2Q15RO 'hP 'harO 8e2in 'lr+!rO Write@cLome do ,rDuivoP cBO ReadLn@Lome^do^arDuivoBO
61

,ssi2n@,rD,Lome^do^arDuivoBO Z[3-\ Reset@,rDB Z[3d\O 3) 3oResult TU C %hen 8e2in ReWrite@,rDBO Repeat Write@cLomeP cBO ReadLn@Re2.nomeBO Write@c3dadeP cBO ReadLn@Re2.idadeBO Write@c4oneP cBO ReadLn@Re2.idadeBO Write@,rD,Re2BO @W Grava um Re2istro no Dis!o WB Write@c'ontinua Q+Rim ou QLR?o h cBO Repeat 'h P_ <p'ase@Read]eABO <ntil 'h 3L Qc+c,cLcRO <ntil 'h _cLcO *nd *lse WriteLn@c*RR/P ,rDuivo *N3+%*cB 'lose@,rDBO *nd.

&/' <rficos &/'& Placas <rficas &/'&'& C<A


Resol()oP 65CJ.CC alta resolu>?o @. !oresB 1.CJ.CC baiJa resolu>?o @5 !oresB

Observa)oP Palette & um !on0unto de !ores dispon(veis, sendo Due na pla!a 'G, possui 16 !ores.

&/'&'+ E<A
Resol()oP 65CJ16C alta resolu>?o @16!ores, . p=2s. 2r=)i!asB 65CJ.CC baiJa resolu>?o @16 !ores, 5 p=2s. 2r=)i!asB

&/'&', 7<A
Resol()oP 65CJ5;C alta resolu>?o @16 !ores, 1 p=2inaB 65CJ16C m&dia resolu>?o @16 !ores, . p=2inas. 2r=)i!asB 65CJ.CC baiJa resolu>?o @16 !ores, 5 p=2inas. 2r=)i!asB
65

&/'+ Coordenadas de "ela &/'+'& C<A


J A C M 619 ou 119 C M 199

&/'+'+ E<A
J A C M 619 ou 119 C M 199 ou 159

&/'+', 7<A
J A C M 619 ou 119 C M 199, 159 ou 579

&/', Betec)o e Iniciali9a)o da "ela <rfica


Para sair do modo teJto e ini!ializar o modo Gr=)i!o, o pro2ramador deve de)inir duas vari=veisP Placa e odo @podem ter DualDuer nomeB. PlacaP S a vari=vel respons=vel pelo tipo de pla!a a ser usada. Pode assumir os se2uintes tiposP D%mero C 1 . 1 5 6 6 7 ; 9 1C Dome D*%*'% 'G, 'G, *G, *G,65 *G, /L/ 38 ;615 #*R' /L/ ,%%5CC GG, P'1.7C

odoP S respons=vel pelo modo da pla!a @alta, m&dia ou baiJa resolu>?oBP 'G,'C 'G,'1 'G,'. 'G,'1 'G,#i *G,Lo @1.C J .CCB 5 !ores, 1 p=2ina 2r=)i!a @1.C J .CCB 5 !ores, 1 p=2ina 2r=)i!a @1.C J .CCB 5 !ores, 1 p=2ina 2r=)i!a @1.C J .CCB 5 !ores, 1 p=2ina 2r=)i!a @65C J .CCB sem !or, 1 p=2ina 2r=)i!a @65C J .CCB 16 !ores, 5 p=2inas 2r=)i!as
66

*G,#i GG,Lo GG, ed GG,#i

@65C J 16CB 16 !ores, . p=2inas 2r=)i!as @65C J .CCB 16 !ores, 5 p=2inas 2r=)i!as @65C J 16CB 16 !ores, . p=2inas 2r=)i!as @65C J 5;CB 16 !ores, 1 p=2inas 2r=)i!as

Pro2ram Dete!ta^Pla!aO <ses 'rt, +ra' O Gar Pla!a, odoP 3nte2erO 8e2in Pla!a P_ BE"EC"O Init+ra' @Pla!a, odo,ccBO @W Pro!ura ,rDuivos 8G3 no Diret-rio 'orrente WB 3) +ra' Result TU +rO. then WriteLn@c*RR/P 3ni!ializa>?o Gr=)i!acBO ou Pro2ram +eta^Pla!a^GG,O <ses 'rt, +ra' O Gar Pla!a, odoP 3nte2erO 8e2in Pla!a P_ 7<AO @W Pla!a GG, WB odo P_ 7<A!IO @W odo 65C J 5;C, 16 !ores WB Init+ra' @Pla!a, odo,cDPYY%PYY8G3cBO @W Path dos ,rDuivos W.8G3 WB 3) <ra.@Res(lt TU +rO. then WriteLn@c*RR/ 4,%,LP 3ni!ializa>?o Gr=)i!acBO

&/'- P(tPiNel =Pontos>


P(tPiNelP Pro!edimento Due permite plotar um .iNel @ponto B na tela 2r=)i!a. odo de <sarP PutPi&el@J,AP 3nte2erO 'or^PiJelP WordBO Pro2ram PontosO <ses 'rt,GraphO Gar Pla!a, odoP 3nte2erO N,eP 3nte2erO 'orP 8AteO 8e2in Pla!a P_ GG,O odo P_ GG,#3O 3nitGraph@Pla!a, odo,ccBO @W Pro!ura arDuivos W.8G3 no diret-rio !orente WB RandomizeO Repeat N P_ Random@65CBO e P_ Random@5;CBO 'or P_ Random@16BO PutPi&el@N,e,'orBO <ntil ]eAPressedO
66

'loseGraphO *nd.

&/'/ Line =Lin@as>


LineP Pro!edimento Due permite plotar uma lin a atrav&s de dois pontos, Pi @Ni,eiB e P) @N),e)B. odo de <sarP Line@Ni,ei,N),e)P 3nte2erBO Pro2ram RetasO <ses 'rt,GraphO Gar Pla!a, odoP 3nte2erO Ni,ei,N),e)P 3nte2erO 'orP 8AteO 8e2in Pla!a P_ GG,O odo P_ GG,#3O 3nitGraph@Pla!a, odo,ccBO RandomizeO Repeat Ni P_ Random@65CBO ei P_ Random@5;CBO N) P_ Random@65CBO e) P_ Random@5;CBO 'or P_ Random@16BO +et'olor@'orBO Line@Ni,ei,N),e)BO <ntil ]eAPressedO 'loseGraphO *nd.

&/'0 Rectangle =Ret?ng(los>


RectangleP Pro!edimento Due permite plotar um ret?ng(lo na tela 2r=)i!a atrav&s de dois pontos, Pi @Ni,eiB e P) @N),e)B, estes dois pontos representam a dia2onal do retHn2ulo. odo de <sarP Rectangle@Ni,ei,N),e)P 3nte2erBO Pro2ram Retan2ulosO <ses 'rt,GraphO Gar Pla!a, odoP 3nte2erO Ni,ei,N),e)P 3nte2erO 'orP 8AteO 8e2in Pla!a P_ GG,O odo P_ GG,#3O 3nitGraph@Pla!a, odo,ccBO Repeat
67

Ni P_ Random@65CBO ei P_ Random@5;CBO N) P_ Random@65CBO e) P_ Random@5;CBO 'or P_ Random@16BO +et'olor@'orBO Rectangle@Ni,ei,N),e)BO <ntil ]eAPressedO 'loseGraphO *nd.

&/'3 Circle =C5rc(los>


CircleP Pro!edimento Due permite plotar um c5rc(lo na tela 2r=)i!a, atrav&s de um ponto !entral @N!,e!B e um Raio. odo de <sarP Circle@N!,e!P 3nte2erO RaioP WordBO Pro2ram 'ir!ulosO <ses 'rt,GraphO Gar Pla!a, odoP 3nte2erO N!,e!P 3nte2erO 'or,RaioP WordO 8e2in Pla!a P_ GG,O odo P_ GG,#3O 3nitGraph@Pla!a, odo,ccBO Repeat N! P_ Random@65CBO e! P_ Random@5;CBO 'or P_ Random@16BO Raio P_ Random@1CCBO +et'olor@'orBO Circle@N!,e!,RaioBO <ntil ]eAPressedO 'loseGraphO *nd.

6;

&/'4 Arc =Arcos>


ArcP Pro!edimento Due permite plotar um arco na tela 2r=)i!a, atrav&s de um ponto !entral @N!,e!B, um Raio e dois Hn2ulos @3ni!ial e 4inalB. odo de <sarPArc@N!,e!P 3nte2erO ,n2^3ni!, ,n2^4imP WordO RaioPWordBO Pro2ram ,r!osO <ses 'rt,GraphO Gar Pla!a, odoP 3nte2erO N!,e!P 3nte2erO ,n2^3ni!,,n2^4imP WordO Raio,'orP WordO 8e2in Pla!a P_ GG,O odo P_ GG,#3O 3nitGraph@Pla!a, odo,ccBO Repeat N! P_ Random@65CBO e! P_ Random@5;CBO ,n2^3ni! P_ Random@16CBO ,n2^4im P_ Random@16CBO 'or P_ Random@16BO Raio P_ Random@1CCBO +et'olor@'orBO Arc@N!,e!,,n2^3ni!,,n2^4im,RaioBO <ntil ]eAPressedO 'loseGraphO *nd.

&/'6 BraEPolG =Pol5gonos>


BraEPolGP Pro!edimento Due permite plotar um .ol5gono na tela 2r=)i!a, atrav&s de n pontos @P1,P.,...PnB. Pro!edimentoP #ra/Poly@LXmero^de^PontosP WordO Getor^de^pontosBO Pro2ram 8one!oO <ses 'rt, GraphO 'onst RostoP ,rraAQ1..9,1...R o) 3nte2er _ @@1C9,159B,@.C9,159B,@.69,1.5B,@.69, 75B, @.C9, 19B,@1C9, 19B,@ 69, 75B,@ 69,1.5B,@1C9,159BBO Gar Pla!a, odoP 3nte2erO 8e2in Pla!a P_ GG,O odo P_ GG,#3O 3nitGraph@Pla!a, odo,ccBO @W ------------------------------------ rosto WB #ra/Poly@9,RostoBO
69

@W ------------------------------------ olho esDuerdo WB 'ir!le@1C9,75,7BO @W ------------------------------------ olho direito WB 'ir!le@.C9,75,7BO @W ------------------------------------ nariz WB 'ir!le@169,99,16BO @W ------------------------------------ bo!a WB Re!tan2le@1C9,1.C,.C9,1.;BO @W ------------------------------------ orelha esDuerda WB ,r!@69,99,9C,.7C,.CBO @W ------------------------------------ orelha direita WB ,r!@.69,99,.7C,9C,.CBO @W ------------------------------------ !abelos WB ,r!@119,19,C,1C6,.CBO ,r!@179,19,76,1;C,.CBO Repeat <ntil ]eAPressedO 'loseGraphO *nd.

&/'&8 Cores =#etColor e #etBCColor>


#etColorP Pro!edimento Due permite a mudan>a da cor de frente @ForeGroundB. odo de <sarP SetColor@nXmero ou nome^!orP WordBO #etBCColorP Pro!edimento Due permite mudan>a da cor de f(ndo @BackGroundB. odo de <sarP SetB4Color@nXmero ou nome^!orP WordBO <etColorP 4un>?o Due retorna a cor de frente !orrente3 odo de <sarP +etColorP WordO <etBCColorP 4un>?o Due retorna a cor de f(ndo !orrente. odo de <sarP +etB4ColorP WordO

&/'&& O(t"eNtLZ e #et"eNt#tGle ="eNtosB


#et"eNt#tGleP odi)i!a o ti.o de caracter @4onteB, dire)o e o taman@o do teJto. odo de <sarP SetTe&tStyle@)onte, dire>?o, tamanhoP FordBO D%mero C 1 . 1ontes De)ault4ont %ripleJ4ont +mall4ont Bire)2es #orizDir GertDir
6C

"aman@os C 1 .

1 5

+ans+eri)4ont Gothi!4ont

P 1C

O(t"eNtLZP Permite Due um teNto seAa escrito na tela 2r=)i!a na posi>?o P @J,AB. odo de <sarP OutTe&t,-@N,eP 3nte2erO %eJtoP +trin2QRBO Pro2ram %eJtoO <ses 'rtO GraphO Gar Pla!a, odoP 3nte2erO 8e2in Pla!a P_ GG,O odo P_ GG,#3O 3nitGraph@Pla!a, odo,ccBO +et89'olor@'AanBO 8ar@C,C,619,579BO +et'olor@8lueBO SetTe&tStyle@Gothi!4ont,#orizDir,6BO OutTe&t,-@1CC,1CC,c%urbo Pas!al G6.6cBO Repeat <ntil ]eAPressedO *nd.

&/'&+ Preenc@imento @pinturaB &/'&+'& Ret?ng(los


BarP <sado para pintar um retHn2ulo. ,ntes, deve-se de)inir o estilo de preen!himento, usando Set(illStyle. odo de <sarP Bar@Ni,ei,N),e)P WordBO #et1ill#tGleP <sado para es!olher o estilo de preen!himento. odo de <sarP Set(illStyle@estiloP 8AteO !orP 8AteBO D%mero C 1 . 1 5 6 6 7 ; 9 1C Estilos *mptA4ill +olid4ill Line4ill L%+lash4ill +lash4ill 8]+lash4ill L%8]+lash4ill #at!h4ill Nhat!h4ill 3nterLeave4ill WideDot4ill @Preen!he !om a !or de )undoB

61

11 1.

'loseDot4ill <ser4ill

Pro2ram *+%3L/+O <ses 'rt, GraphO Gar Pla!a, odoP 3nte2erO *stiloP 8AteO 'orP 8AteO 8e2in Pla!a P_ GG,O odo P_ GG,#3O 3nitGraph@Pla!a, odo,ccBO 4or *stilo P_ 1 to 1. do 8e2in 'or P_ 1 d Random@16BO Set(illStyle@*stilo,aBO Bar@C,C,1CC,1CCBO ReadLnO *ndO 'loseGraphO *nd.

&/'&+'+ Pol5gonos
aB 1illPolGP S usado para pintar um pol(2ono, usando o estilo de)inido pelo pro!edimento Set(illStyle. *ste pro!edimento preen!he DualDuer pol(2ono )e!hado, se o pol(2ono estiver aberto este pro!edimento preen!he at& en!ontrar um ob0eto )e!hado. odo de <sarP (illPoly@*stiloP 8AteO 'orP 8AteBO Pro2ram Preen!he^Pol(2onoO <ses 'rt, GraphO 'onst /b0etoP ,rraAQ1..6,1...R o) 3nte2er _ @@169,CB,@C,6CB,@169,199B,@119,6CB,@169,CBBO Gar Pla!a, odoP 3nte2erO *stiloP 8AteO 8e2in Pla!a P_ GG,O odo P_ GG,#3O 3nitGraph@Pla!a, odo,ccBO #ra/Poly@6,ob0etoBO @W Plota Pol(2ono GazadoWB Repeat <ntil ]eAPressedO 4or *stilo P_ C to 1. do 8e2in +et4ill+tAle@*stilo,e*LL/WBO @W De)ine *stilo e 'or WB (illPoly@6,/b0etoBO @W Pinta Pol(2ono WB ReadLnO *ndO 'loseGraphO
6.

*nd. bB 1lood1illP S usado para preen!her um pol(2ono, usando o estilo de)inido pelo pro!edimento Set(illStyle. / preen!himento parte de um ponto !entral P! @N!,e!B do ob0eto e preen!he ao redor deste ponto at& en!ontrar uma borda !om a !or espe!i)i!ada @)un>?o re!ursivaB. odo de <sarP (lood(ill@N!,e!P 3nte2erO 'or^da^8ordaP WordBO Pro2ram Rosa^dos^GentosO <ses 'rt, GraphO 'onst Pontos _ 17O RosaP ,rraAQ1..pontos,1...R o) 3nte2er _ @@169,CB,@1;9,59B,@.79,.5B,@.19,7.B,@119,99B, @.19,1.1B,@.79,171B,@1;9,159B,@169,199B,@1C9,159B, @19,171B, @79,1.1B, @C,99B,@79,7.B,@19,.5B,@1C9,59B,@169,CBBO Gar 8e2in Pla!a P_ GG,O odo P_ GG,#3O 3nitGraph@Pla!a, odo,ccBO +et'olor@e*LL/WBO #ra/Poly@Pontos,RosaBO 'ir!le@169,99,.CBO +et4ill+tAle@+/L3D^43LL,8L<*BO (lood(ill@1C,99,e*LL/WBO ReadLnO 'loseGraphO *nd. Pla!a, odoP 3nte2erO *stiloP 8AteO

@W 'or da borda WB @W 3mprime Rosa dos Gentos WB @W 3mprime '(r!ulo WB @W De)ine *stilo e 'or de Preen!himento WB @W Preen!he a partir do ponto 1C,99 WB

&/'&, Ativa)o de ^anelas <rficas &/'&,'& ^anela Ativa


Set1ie/PortP Pro!edimento de)ine uma 0anela ativa

61

@C,CB @Ji,AiB

@J),A)B @NmaJ,emaJB odo de <sarP Set1ie/Port@Ni,ei,N),e)P 3nte2erO Re!ortaP 8ooleanBO Pi @Ni,eiBP Ponto 3ni!ial P) @N),e)BP Ponto 4inal Re!ortaP %R<* ou 4,L+* @Gari=vel Due indi!a se haver= re!orte na 0anela ou n?oB. Pro2ram Janela^,tiva^!om^Re!orteO <ses 'rt,GraphO 'onst *L%*R _ `11O *+' _ `.7O <P _ `7.O D/WL _ `;CO L*4% _ `76O R3G#% _ `77O Gar Pla!a, odoP 3nte2erO N,eP 3nte2erO %e!laP 'harO 8e2in Pla!a P_ GG,O odo P_ GG,#3O 3nitGraph@Pla!a, odo,ccBO +et4ill+tAle@+/L3D^43LL,GR**LBO 8ar@C,C,619,579BO Set1ie/Port@19,19,1CC,1;C,%R<*BO @W %este o pro2rama usando 4,L+* WB +et'olor@R*DBO Clear1ie/PortO @W Limpa Janela ,tiva WB N P_ 119O e P_ .19O Repeat +et'olor@R*DBO Re!tan2le@N,e,Nd1C,ed1CBO %e!la P_ Read]eAO +et'olor@8L,']BO Re!tan2le@N,e,Nd1C,ed1CBO 'ase %e!la /) <PP De!@e,6BO
65

D/WLP 3n!@e,6BO L*4%P De!@N,6BO R3G#%P 3n!@N,6BO *ndO <ntil %e!la 3L Q*L%*R,*+'RO *nd.

&/'&,'+ Lim.ar ^anela Ativa


Clear1ie/PortP Pro!edimento Due limpa, !om a !or de )undo, a 0anela ativada pelo pro!edimento Set1ie/Port, se nenhuma 0anela )or ativada, por )alta @defaultB, a 0anela ativa & toda a tela. odo de <sarP Clear1ie/PortO

&/'&,', #alvar e Rec(.erar ^anelas <rficas


+etImage e PutImageP fuando & ne!ess=rio !olo!ar 0anelas sobrepostas na tela, deve-se antes de eJibir a 0anela, salvar o lo!al onde a 0anela ser= eJibida. Para salvar e re!uperar @respe!tivamenteB 0anelas s?o usados os se2uintes pro!edimentosP odo de <sarP +etImage@Ni,ei,N),e)P WordO Gar PP PointerBO odo de <sarP PutImage@Ni,eiP WordO PP PointerO odoP WordBO D%mero C 1 . 1 5 odos 'opAPut NorPut /rPut ,ndPut LotPut 1(n)o Z ov \ Z N/r \ Z /r \ ou LormalPut Z ,nd \ Z Lot \

Para de)inir o ponteiro, Due ir= !onter os .iNels da tela, & ne!ess=rio saber a ;(antidade de bGtes @por>?o de mem-riaB para salvar a 0anela 2r=)i!a, isto & )eito da se2uinte maneiraP ImageSi2eP Retorna o n%mero de bGtes ne!ess=rios para !onter a 0anela de)inida pelos pontos Pi @Ni,eiB e P) @N),e)B. odo de <sarP ImageSi2e@Ni,ei,N),e)P WordBP WordO +et0emP Pro!edimento Due )az aloca)o din?nica de memria para o ponteiro ', o Dual o!upar= n bAtes na mem-ria. odo de <sarP +et0em@Gar PP PointerO LXmero^8AtesP WordBO (ree0emP Pro!edimento Due libera a rea de mem-ria o!upada pelo ponteiro '. odo de <sarP (ree0em@PP PointerO LXmero^8AtesP WordBO
66

Pro2ram JanelasO <ses 'rt,GraphO %Ape %3P/ _ +trin2Q.CRO Gar Pla!a, odoP 3nte2erO PP ,rraAQ1..6R o) PointerO 'orP 8AteO Lum^8AtesP ,rraAQ1..6R o) WordO Pro!edure oldura@Ji,Ai,J),A)PWordO !or^)rente,!or^)undoP8AteBO 8e2in +et'olor@!or^)undoBO +et4ill+tAle@+olid4ill,!or^)undoBO 8ar@Ji,Ai,J),A)BO +et'olor@!or^)renteBO Re!tan2le@Ji,Ai,J),A)BO Re!tan2le@Jid.,Aid.,J)-.,A)-.BO *ndO Pro!edure +alva^Janela@0anela,Ji,Ai,J),A)P WordBO 8e2in Lum^8AtesQ0anelaR P_ ImageSi2e@Ji,Ai,J),A)BO +et0em@pQ0anelaR,Lum^8AtesQ0anelaRBO +etImage@Ji,Ai,J),A),PQ0anelaRjBO *ndO Pro!edure Restaura^Janela@0anela,Ji,Ai,J),A)P WordBO 8e2in +et4ill+tAle@C,8L,']BO 8ar@Ji,Ai,J),A)BO PutImage@Ji,Ai,PQ0anelaRj,LormalPutBO (ree0em@pQ0anelaR,Lum^8AtesQ0anelaRBO *ndO 8e2in Pla!a P_ GG,O odo P_ GG,#3O 3nitGraph@Pla!a, odo,ccBO +et4ill+tAle@+/L3D^43LL,8L,']BO 8ar@C,C,619,579BO +alva^Janela@1,1C,1C,1CC,6CBO oldura@1C,1C,1CC,6C,C,1BO ReadLnO +alva^Janela@.,1C,1C,11C,;CBO oldura@1C,1C,11C,;C,1,.BO ReadLn +alva^Janela@1,6C,6C,16C,1CCBO oldura@6C,6C,16C,1CC,.,1BO ReadLnOO Restaura^Janela@1,6C,6C,16C,1CCBO
66

ReadLnO Restaura^Janela@.,1C,1C,11C,;CBO ReadLnO Restaura^Janela@1,1C,1C,1CC,6CBO ReadLnO 'loseGraphO *nd.

&0' Cria)o de Unidades @UnitsB


<ma unidade & um !on0unto de pro!edimentos e )un>Ies, Due podem ser usados por DualDuer pro2rama.

&0'& Como Criar (ma Unidade


/ pro2ramador pode de)inir suas pr-prias unidades Units. Por eJemploP <ses 'rt,GraphO Due s?o unidades do V%urbo Pas!al 6.6V. , de)ini>?o de uma unidade & )eita da se2uinte maneiraP Unit nome^da^unidadeO Interface <ses 'onst %Ape Gar Pro!edure Pro!edure ... 4un!tion 4un!tion Im'lementation Pro!edure 'onst %Ape Gar 8e2in !omandosO *ndO 4un!tion 'onst %Ape Gar 8e2in !omandosO
67

@W 'abe>alho de todos os

-dulos WB

*ndO %nd' Observa)o: <ma unidade & um pro2rama 4onte Pas!al sem .rograma .rinci.al. Possui eJtens?o Vnome.P,+V e ap-s !ompilada, Vnome.%P<V. , vanta2em de uma unidade de)inida pelo pro2ramador & Due permite Due as V'rocedureV e VfunctionV se0am usadas em DualDuer pro2rama.

&0'+ ENem.lo de Cria)o de (ma Unidade:


Unit LuzzardiO Interface <ses 'rtO %Ape %3P/ _ +trin2O 4un!tion Pot@J,AP RealBP RealO Pro!edure %ro!a@G,R J,AP RealBO Pro!edure 3mprime^+trin2@!,lP 8AteO sP +trin2BO Pro!edure oldura^+imples@Ji,Ai,J),A)P 8AteBO Pro!edure 3mprime^'har@!,lP 8AteO !hP 'harBO Pro!edure oldura^Dupla@Ji,Ai,J),A)P 8AteBO Pro!edure Limpa^,rea@Ji,Ai,J),A)P 8AteO !orP 8AteBO Pro!edure *ntrada@!,l,tP 8AteO G,R nomeP %3P/O mensa2emP %3P/BO Im'lementation @W ----------------------------------- Pot WB 4un!tion Pot@J,AP RealBP RealO 8e2in Pot P_ *Jp@Ln@JBWABO *ndO @W ---------------------------------- %ro!a WB Pro!edure %ro!a@G,R J,AP RealBO Gar tempP RealO 8e2in temp P_ JO J P_ AO A P_ tempO *ndO @W ---------------------------------- 3mprime^+trin2 WB Pro!edure 3mprime^+trin2@!,lP 8AteO sP +trin2BO
6;

8e2in GotoNe@!,lBO Write@sBO *ndO @W ---------------------------------- 3mprime^'har WB Pro!edure 3mprime^'har@!,lP 8AteO !hP 'harBO 8e2in GotoNe@!,lBO Write@!hBO *ndO @W ---------------------------------oldura^Dupla WB

Pro!edure oldura^Dupla @Ji,Ai,J),A)P 8AteBO Gar !,lP 8AteO 8e2in 4or ! P_ Ji to J) do 8e2in 3mprime^'har@!,Ai,`.C6BO 3mprime^'har@!,A),`.C6BO *ndO 4or l P_ Ai to A) do 8e2in 3mprime^'har@Ji,l,`1;6BO 3mprime^'har@J),l,`1;6BO *ndO 3mprime^'har@Ji,Ai,`.C1BO 3mprime^'har@J),Ai,`1;7BO 3mprime^'har@J),A),`1;;BO 3mprime^'har@Ji,A),`.CCBO *ndO @W -----------------------------------oldura^+imples WB

Pro!edure oldura^+imples @Ji,Ai,J),A)P 8AteBO Gar !,lP 8AteO 8e2in 4or ! P_ Ji to J) do 8e2in 3mprime^'har@!,Ai,`196BO 3mprime^'har@!,A),`196BO *ndO 4or l P_ Ai to A) do 8e2in 3mprime^'har@Ji,l,`179BO 3mprime^'har@J),l,`179BO *ndO
69

3mprime^'har@Ji,Ai,`.1;BO 3mprime^'har@J),Ai,`191BO 3mprime^'har@J),A),`.17BO 3mprime^'har@Ji,A),`19.BO *ndO @W -------------------------------- Limpa^,rea WB Pro!edure Limpa^,rea@Ji,Ai,J),A)P 8AteO !orP 8AteBO 8e2in %eJt'olor@!orBO Windo"@Ji,Ai,J),A)BO 'lr+!rO Windo"@1,1,;C,.6BO *ndO @W --------------------------- *ntrada WB Pro!edure *ntrada@!,l,tP 8AteO Gar nomeP %3P/O mensa2emP %3P/BO Gar !hP 'harO tam,!ol,iP 8AteO 8e2in nome P_ ccO GotoJA@!,lBO Write@mensa2em,nomeBO tam P_ Len2th@mensa2emBO !ol P_ !dtamO GotoJA@!ol,lBO i P_ 1O Repeat Repeat !h P_ Read]eAO <ntil !h 3L Q`66,`9C,`97,`1..,`11,`;,`76,`.7,`1.RO 3) !h 3L Q`;,`76R %hen 8e2in 3) i U_ . %hen 8e2in Delete@nome,len2th@nomeB,1BO !ol P_ !ol-1O 3mprime^'har@!ol,l,c cBO GotoJA@!ol,lBO i P_ i-1O *ndO *nd *lse 3) @!h TU `11B and @!h TU `.7B %hen 8e2in 3mprime^'har@!ol,l,!hBO !ol P_ !old1O
7C

nome P_ nomed!hO i P_ id1O *ndO <ntil @!h 3n Q`11, `.7,RB /r @i U_ tBO *ndO %nd.

&0', ENem.lo de Programa ;(e (sa a Unidade Criada:


<ses 'rt, Lu22ardiO Gar LomeP %3P/O 3P 8AteO 8e2in Limpa^,rea@1,1,;C,.6,W#3%*BO oldura^+imples@6,1,16,..BO oldura^Dupla@56,1,76,..BO *ntrada@6,6,.C,Lome,cLomeP cBO 3mprime^+trin2@6C,6,LomeBO GotoNe@6C,7BO 4or 3 P_ 1 to Len2th@LomeB do 8e2in 3mprime^'har@59d3,7,LomeQ3RBO ReadLnO *ndO ReadLnO *nd. Observa)o: Para eJe!utar o pro2rama e, obri2ar Due a unidade se0a !ompilada novamente, deve-se !ompilar !om a op>?o B(ild do menu Com.ile.

&3'

emria de 75deo

*m Pas!al, pode-se es!rever direto na mem-ria de v(deo sem ser atrav&s do !omando Frite ou F@iteLn, isto & )eito endere>ando um vetor de 5CCC bAtes a partir do endere>o \B488:8888 Due & o in(!io da tela de teJto @endere>o na pla!a de v(deoB, isto & )eito da se2uinte maneiraP a primeira posi>?o da tela & pQCR, a se2unda & pQ.R, pois pQ1R e o atributo de !or do primeiro !ara!ter. Para !al!ular a posi>?o no vetor unidimensional atrav&s da !oluna e linha & o se2uinteP

71

;C!olunas 1. ;C 1C.5 . .6linhas

.6

Locali9a)o na

emria de 75deo

posi>?o P_ 16C W @linha - 1B d . W @!oluna - 1BO

Atrib(to de CORP @1 8AteB


7 6 6 5 1 . 1 C

4undo

4rente

PP 'ara!ter Pis!ante @8it 7B 1(ndoP 'or do 4undo @8itsP 6,6,5B IP 3ntensidade da 'or @8it 1B 1renteP 'or de 4rente @8itsP .,1,CB Pro2ram <ses 'rtO Gar GideoP ,rraAQC..1999R o) 'har ,bsolute [8;CCPCCCCO ',LP 8AteO 'hP 'harO emoria^GideoO

@W ------------------------ 3mprime WB Pro!edure 3mprime^'ara!ter@!,lP 8AteO !ara!terP 'harBO Gar posi!aoP WordO 8e2in posi!ao P_ 16C W @l - 1B d . W @! - 1BO
7.

GideoQposi!aoR P_ !ara!terO *ndO 8e2in Repeat 4or L P_ 1 %o .5 Do 4or ' P_ 1 %o ;C Do 8e2in GotoNe@',LBO Write@c,cBO *ndO 'h P_ Read]eAO 4or L P_ 1 %o .5 Do 4or ' P_ 1 %o ;C Do 3mprime^'ara!ter@',L,c8cBO <ntil ]eAPressedO *nd.

@W 3mprime na

em-ria WB

&4' Passagem de Par?metros .ela Lin@a de Comandos do #istema O.eracional


ObAetivoP Desenvolver pro2ramas Due intera2em !om o +istema /pera!ional, atrav&s de parHmetros.

7ariveis PrTJBefinidas
ParamCountP ,rmazena o nXmero de parHmetros da linha de !omandos ParamStrFnGP ,rmazena a lista de strin2s da linha de !omandos OndeP n & o (ndi!e da strin2 @C at& ParamCountB 'PYUIn5erte P*L/%,+ +,%/L*P 'PY^ OndeP Param'ount _ 1 Param+tr@CB _ c,PY3LG*R%*.*N*c Param+tr@1B _ cP*L/%,+c ObAetivo do ProgramaP Re!ebe uma strin2 DualDuer pela linha de !omandos do +istema /pera!ional e a inverte. <ses 'rtO Gar 3,LP 8AteO +P +trin2O 8e2in
71

'lr+!rO 3) ParamCount TU 1 %hen WriteLn@c+intaJeP 3LG*R%* TpalavraUcB *lse 8e2in + P_ ParamStr@1BO L P_ Len2th@+BO 4or 3 P_ L Do"n%o 1 Do Write@+Q3RBO *ndO *nd. ,PYUlista L3+%,.P,+ OndeP Param'ount _ 1 Param+tr@CB _ c,PYL3+%,.*N*c Param+tr@1B _ cL3+%,.P,+c ObAetivo do ProgramaP Re!ebe o nome de um arDuivo teJto, abre o arDuivo e lista o !onteXdo na tela, numerando as linhas e parando Duando a tela est= !heia. <ses 'rtO Gar ,rDP 4ile /) 'harO Re2P 'harO LP 8AteO LinhaP WordO L^'arP Lon23ntO 'lr+!rO 3) ParamCount TU 1 %hen WriteLn@c+intaJeP L3+%, Tnome^do^arDuivoUcB *lse 8e2in ,ssi2n@,rD,ParamStr@1BBO Z[3-\ Reset@,rDB Z[3d\O 3) 3oResult TU C %hen WriteLn@c*RR/P ,rDuivo L?o *JistecB *lse 8e2in Linha P_ 1O L P_ 1O Read@,rD,Re2BO Write@LinhaP1,cP cBO While Lot@*o)@,rDBB Do 8e2in Write@Re2BO 3) Re2 _ `11 %hen 8e2in
75

8e2in

3n!@LBO Write@LinhaP1,cP cBO 3n!@LinhaBO 3) L _ .1 %hen 8e2in WriteLnO WriteLnO Write@c,rDuivoP c,ParamStr@1BBO Write@c - %e!le T*L%*RUcBO ReadLnO 'lr+!rO *ndO *ndO Read@,rD,Re2BO *ndO 'lose@,rDBO *ndO *ndO *ndO *nd. 'PYU'rocura <L3G*R+3D,D* * <L3G*R+3D,D* possui . letras * 'PYU^ OndeP Param'ount _ . Param+tr@CB _ c,PYPR/'<R,.*N*c Param+tr@1B _ c<L3G*R+3D,D*c Param+tr@.B _ c*c ObAetivo do ProgramaP Re!ebe uma palavra e uma letra e veri)i!a Duantas vezes a letra est= presente dentro da palavra <ses 'rtO Gar +,+auJP +trin2O LetraP 'harO 3,L,%P 8AteO 8e2in 'lr+!rO 3) ParamCount TU . %hen WriteLn@c+intaJeP PR/'<R, TPalavraU TLetraUcB *lse 8e2in + P_ ParamStr@1BO +auJ P_ ParamStr@.BO Letra P_ +auJQ1RO L P_ Len2th@+BO % P_ CO 4or 3 P_ 1 %o L Do
76

3) +QiR _ Letra %hen 3n!@%BO WriteLn@+,c possui c,%,c letras c,LetraBO *ndO *nd.

&6' Ponteiros @Gari=vel Due ,pontaB &6'& "i.os de Aloca)o de &6'&'& J Aloca)o Esttica de emria emria

%ipo de alo!a>?o de mem-ria onde !ada varivel global possui um nXmero definido de bAtes alo!ados @reservadosB na mem-ria, n?o podendo ser aumentado ou diminu(do durante todo o pro2rama. ENem.loP Gar JP 8AteO AP 3nte2erO @W 1 bAte alo!ado na mem-ria WB @W . bAtes alo!ados na mem-ria WB

&6'&'+ J Aloca)o Bin?mica de

emria

%ipo de alo!a>?o onde !ada vari=vel possui um nXmero indefinido de bAtes alo!ados na mem-ria, podendo ser alo!ado ou desalo!ado a DualDuer momento !om DualDuer tamanho. Para isto, & ne!ess=rio usar uma vari=vel do tipo Ponteiro. ,s vari=veis lo!ais s?o alo!adas dinami!amente. Observa)oP <m ponteiro & uma vari=vel Due o!upa 5 bAtes Befini)oP Gar nome^do^ponteiroP jtipo^baseO ENem.loP Gar pP HIntegerO Aloca)oP *spa>o reservado na mem-ria R, @W p aponta para um inteiro Q. 8AtesR WB

Alocar (m Ponteiro
"e/@pBO Pro!edimento Due aloca mem-ria do tamanho do tipo^baseO ENem.lo: "e/@pBO 3) p _ "il %hen WriteLn@c*RR/P 4alta de *lse
76

em-riacB

WriteLn@c/9, Ponteiro ,lo!adocBO "il6 Palavra reservada Due representa ponteiro nulo, ou se0a, ponteiro n?o aponta para nada. Besaloca)oP Libera>?o de espa>o alo!ado na mem-ria

Besalocar o Ponteiro
#is'ose@pBO Pro!edimento Due desaloca a mem-ria alo!ada pelo pro!edimento "e/@pBO

Alocar (ma _rea


+et0em@p,nXmero^de^bAtesBO Pro!edimento Due aloca uma =rea !om VnV bAtes ENem.lo: <ses 'rtO Gar PP j3nte2erO LP 8AteO Lum^8AtesP WordO 8e2in 'lr+!rO Write@VLXmero de *lementosP cBO ReadLn@LBO Lum^8Ates P_ L W +ize/)@3nte2erBO @W 'al!ula o LXmero de 8Ates WB +et0em@P,Lum^8AtesBO 3) P _ Lil %hen WriteLn@c*RR/P 4alta de em-riacB *lse WriteLn@c/9, Ponteiro ,lo!adocBO

Besalocar (ma _rea


(ree0em@p,nXmero^de^bAtesBO Pro!edimento Due desaloca uma =rea !om n bAtes

Befini)2es
p pj kn 'ont&m o endere)o de mem-ria apontada pelo ponteiro 'ont&m o conte%do do ponteiro 'ont&m o endere>o da vari=vel n
77

<ses 'rtO Gar LP 3nte2erO PP j3nte2erO 8e2in 'lr+!rO L P_ 66O P P_ `DO WriteLn@c'onteXdoP c,PHBO *nd.

@W Ponteiro aponta para a vari=vel n WB

em-riaR, 18Ate kn1C 1C kp1C. 1C 1C5 1C6 endr>o!tX


Endere)oP Q+e2mentoP/))+etR

6@n.bAtesB

1Cp@5bAtesB

1(n)2es
aB 0emA5ailP Retorna o nXmero de bAtes dispon(vel na mem-ria bB 0a&A5ailP Retorna o nXmero de bAtes do maior blo!o dispon(vel na mem-ria ENem.loP <ses 'rtO Gar LivreP Lon23ntO 8lo!oP Lon23ntO 8e2in 'lr+!rO Livre P_ 0emA5ail Div 1C.5O WriteLn@Livre,c ] 8Ates Livres na emoriacBO 8lo!o P_ 0a&A5ail Div 1C.5O WriteLn@8lo!o,c ] 8Ates do aior 8lo!o LivrecBO
7;

ReadLnO *nd.

&6'+ Acesso Bireto a


7arivel PrT JBefinida 0emQ+e2mentoP/))+etR

emria

Para a!essar diretamente a mem-ria usa-se a vari=vel pr&-de)inida 0em. 'om esta vari=vel, pode-se listar ou modi)i!ar uma posi>?o de mem-ria. Endere)o do 75deoP [8;CCPCCCC +e2mento /))+et [8;CC [CCCC

ObAetivo do ProgramaP Possui dois pro!edimentos, um para preen!her a tela !om !ara!teres aleat-rios e outro para limpar a tela @preen!her !om espa>osB sem !rite. <ses 'rtO Pro!edure Limpa^%elaO Gar +e2mento,/))+etP Lon23ntO 8e2in +e2mento P_ [8;CCO /))+et P_ [CCCCO Repeat 0emQ+e2mentoP/))+etR P_ 1.O 3n!@/))+et,.BO <ntil /))+et _ 5CCCO *ndO Pro!edure +u0a^%elaO Gar +e2mento,/))+etP Lon23ntO LetraP 8AteO 8e2in +e2mento P_ [8;CCO /))+et P_ [CCCCO Repeat Letra P_ Random@.66BO 0emQ+e2mentoP/))+etR P_ LetraO 3n!@/))+et,.BO <ntil /))+et _ 5CCCO *ndO 8e2in Repeat Limpa^%elaO +u0a^%elaO
79

@W 1. - *spa>o WB

<ntil ]eAPressedO *nd.

&6', Acesso Bireto a


<ses 'rtO Gar

emria de 75deoP

GideoP ,rraAQC..1999R /) 'har ,bsolute [8;CCPCCCCO ',LP 8AteO LetraP 8AteO

Pro!edure 3mprime@!,l,LetraP 8AteBO Gar posi!aoP 3nte2erO 8e2in posi>?o P_ 16C W @l - 1B d @! - 1B W .O GideoQposi>?oR P_ 'hr@LetraBO *ndO 8e2in Repeat 'lr+!rO 4or L P_ 1 %o .5 Do 4or ' P_ 1 %o ;C Do 8e2in Letra P_ Random@.66BO 3mprime@',L,LetraBO *ndO <ntil ]eAPressedO *nd.

&6'- Listas Encadeadas


Permitem alo!a>?o indeterminada de elementos. %em por !ara!ter(sti!a um elo de li2a>?o entre um elemento e outro. Possui um !eader @!abe>aB Due indi!a o primeiro elemento da lista.

#eader ! ! 1 b b . a a 1 L3L

;C

,s listas s?o per!orridas seDEen!ialmente, apenas numa dire>?o, ou se0a, do primeiro ao Xltimo elemento. , in)orma>?o do nXmero de elementos da lista & obtida somente !om a varredura de toda a lista. Para resolver estes dois problemas pode-se usar um des!ritor da se2uinte maneiraP

D*+'R3%/R Primeiro n lltimo

&6'/ 1ilas e Pil@as


,s listas podem ser 1ilas ou Pil@asP 1ilaP 43)/ @1irst Input 1irst OutputB, ou se0a, o primeiro elemento a entrar na )ila & o primeiro elemento a sair da )ila. Pil@aP L3)/ @Last Input 1irst OutputB, ou se0a, o Xltimo elemento a entrar na pilha & o primeiro a sair. E - *ntrada de Dados # - +a(da de Dados

* *:+ 1 Pilha . 1 1 . 1 +
Pil@aP %ntradaP 1,.,1 SaIdaP 1,.,1 1ilaP %ntradaP 1,.,1 SaIdaP 1,.,1

4ila

Im.lementa)o de (ma Pil@a


ObAetivo do ProgramaP 3nserir nXmeros inteiros em uma pilha. fuando o nXmero )or i2ual M zero @CB, todos os nXmeros da pilha s?o listados. Pro2ram PilhaO <ses 'rtO
;1

%Ape P/L%*3R/ _ j*L* *L%/O *L* *L%/ _ Re!ord dadoP 3nte2erO eloP P/L%*3R/O *ndO Gar P,#eaderP P/L%*3R/O LP 3nte2erO 8e2in #eader P_ LilO Repeat 'lr+!rO Write@cLXmeroP cBO ReadLn@LBO 3) L TU C %hen 8e2in Le"@PBO 3) P _ Lil %hen WriteLn@c*RR/P 4alta de *lse 8e2in Pj.elo P_ #eaderO Pj.dado P_ LO #eader P_ PO *ndO *ndO <ntil @L _ CB or @P _ LilBO P P_ #eaderO While Pj.elo TU Lil Do 8e2in WriteLn@cGalorP c,Pj.dadoBO P P_ Pj.eloO *ndO WriteLn@cGalorP c,Pj.dadoBO ReadLnO *nd.

em-riacB

Im.lementa)o de (ma 1ila


ObAetivo do ProgramaP 3nserir nXmeros inteiros em uma )ila. fuando o nXmero )or i2ual M zero @CB, todos os nXmeros da )ila s?o listados. Pro2ram 4ilaO <ses 'rtO %Ape P/L%*3R/ _ j*L* *L%/O *L* *L%/ _ Re!ord dadoP 3nte2erO eloP P/L%*3R/O *ndO
;.

Gar 8e2in

P,f,#eaderP P/L%*3R/O LP 3nte2erO 'lr+!rO Write@cLXmeroP cBO ReadLn@LBO Le"@PBO #eader P_ PO Pj.elo P_ LilO Pj.dado P_ LO Repeat 'lr+!rO Write@cLXmeroP cBO ReadLn@LBO 3) L TU C %hen 8e2in f P_ PO Le"@PBO 3) P _ Lil %hen WriteLn@c*RR/P 4alta de *lse 8e2in fj.elo P_ PO Pj.dado P_ LO Pj.elo P_ LilO *ndO *ndO <ntil L _ CO P P_ #eaderO While Pj.elo TU Lil Do 8e2in WriteLn@cGalorP c,Pj.dadoBO P P_ Pj.eloO *ndO WriteLn@cGalorP c,Pj.dadoBO ReadLnO

em-riacB

*nd.

&6'0 Lista B(.lamente Encadeada


Possui um elo para o elemento anterior e um elo para o elemento posterior. Possui uma vanta2em sobre a lista en!adeada, pois pode ser per!orrida em duas dire>Ies. ObAetivo do ProgramaP 3nserir nXmeros inteiros em uma lista duplamente en!adeada. , inser>?o pode ser pela es;(erda ou a direita. , eJibi>?o dos elementos da lista pode ser )eita pela es;(erda ou direita. Pro2ram Lista^Duplamente^*n!adeadaO
;1

<ses 'rtO %Ape P/L%*3R/ _ j*L* *L%/O *L* *L%/ _ Re!ord anteriorP P/L%*3R/O dadoP 3nte2erO posteriorP P/L%*3R/O *ndO D*+'R3%/R _ Re!ord primeiroP P/L%*3R/O nP WordO ultimoP P/L%*3R/O *ndO Gar PP P/L%*3R/O DP D*+'R3%/RO LP 3nte2erO /pP 'harO

Pro!edure 3ni!ializa^Des!ritorO 8e2in D.primeiro P_ LilO D.n P_ CO D.ultimo P_ LilO *ndO Pro!edure 3nsere^*sDuerda@nP 3nte2erBO Gar DP P/L%*3R/O 8e2in Le"@PBO 3) P _ Lil %hen WriteLn@c*RR/P 4alta de em-riacB *lse 8e2in 3) D.n _ C %hen 8e2in Pj.anterior P_ LilO Pj.dado P_ LO Pj.posterior P_ LilO D.primeiro P_ PO D.n P_ 1O D.ultimo P_ PO *nd *lse 8e2in D P_ D.primeiroO Pj.anterior P_ LilO Pj.dado P_ nO
;5

Pj.posterior P_ DO Dj.anterior P_ PO D.primeiro P_ PO D.n P_ D.n d 1O *ndO *ndO *ndO Pro!edure 3nsere^Direita@nP 3nte2erBO Gar DP P/L%*3R/O 8e2in Le"@PBO 3) P _ Lil %hen WriteLn@c*RR/P 4alta de em-riacB *lse 8e2in 3) D.n _ C %hen 8e2in Pj.anterior P_ LilO Pj.dado P_ nO Pj.posterior P_ LilO D.primeiro P_ PO D.n P_ 1O D.ultimo P_ PO *nd *lse 8e2in D P_ D.ultimoO Pj.anterior P_ DO Pj.dado P_ nO Pj.posterior P_ LilO Dj.posterior P_ PO D.ultimo P_ PO D.n P_ D.n d 1O *ndO *ndO *ndO Pro!edure *Jibir^Lista^DireitaO 8e2in P P_ D.ultimoO While Pj.anterior TU Lil Do 8e2in WriteLn@cGalorP c,Pj.dadoBO P P_ Pj.anteriorO *ndO WriteLn@cGalorP c,Pj.dadoBO *ndO
;6

Pro!edure *Jibir^Lista^*sDuerdaO 8e2in P P_ D.primeiroO While Pj.posterior TU Lil Do 8e2in WriteLn@cGalorP c,Pj.dadoBO P P_ Pj.posteriorO *ndO WriteLn@cGalorP c,Pj.dadoBO *ndO 8e2in 3ni!ializa^Des!ritorO Repeat 'lr+!rO Write@cLXmeroP cBO ReadLn@LBO 3) L TU C %hen 8e2in Write@cQ*RsDuerda ou QDRireita hcBO Repeat /p P_ <p'ase@Read]eABO <ntil /p 3L Qc*c,cDcRO 'ase op /) c*cP 3nsere^*sDuerda@LBO cDcP 3nsere^Direita@LBO *ndO *ndO <ntil L _ CO 'lr+!rO Repeat Write@cListarP Q*RsDuerda, QDRireita ou Q4RimhcBO Repeat /p P_ <p'ase@Read]eABO <ntil /p 3L Qc*c,cDc,c4cRO WriteLn@/pBO 'ase /p /) c*cP *Jibir^Lista^*sDuerdaO cDcP *Jibir^Lista^DireitaO *ndO <ntil /p _ c4cO *nd.

+8' Interr(.)2es
;6

/ i!ro!omputador P' @Personal 'omputerB possui um !ir!uito inte2rado respons=vel por interromper o pro!essamento do i!ropro!essador @;C;6B !hamado PIC 4+/6 @Pro2rammable Interrupt ControllerB, possuindo .66 tipos de interrup>Ies di)erentes. ,s interrup>Ies podem ser de hardware ou software. Por eJemplo CtrlJBrea. & uma interrup>?o de hardware @te!ladoB.

Procedimento de Interr(.)o
Intr@nXmero^da^interrup>?oP 8AteO Gar re2sP Re2istersBO

Registers
%ipo de dado pr&-de)inido do Pas!al Due permite manipular diretamente os re2istradores do ;C;6. Aten)oP Para usar este pro!edimento & ne!ess=rioO <ses #osO ObAetivo do ProgramaP %estar se a impressora @38 @Desli2adaB <ses 'rt, #osO 4un!tion %esta^3mpressoraP 8ooleanO Gar re2sP Re2istersO statusP 8ooleanO 8e2in re2s.ah P_ [C.O re2s.dJ P_ [CCO Intr@[17,re2sBO 3) re2s.ah _ 155 %hen status P_ %R<* *lse status P_ 4,L+*O %esta^3mpressora P_ statusO *ndO 8e2in 'lr+!rO Repeat 3) %esta^3mpressora %hen WriteLn@c3mpressora /n-LinecB *lse WriteLn@c3mpressora /))-LinecBO <ntil ]eAPressedO *nd. ObAetivo do ProgramaP Posi!ionar o !ursor na tela em DualDuer posi>?o c @!olunaB e l @linhaB.
;7

.19CB est= OnJLine @Li2adaB ou OffJLine

<ses 'rt, #osO 'onst %* P/ _ 1CCO Gar ',lP 8AteO Pro!edure 'ursor@!ol,linP 8AteBO Gar re2sP Re2istersO 8e2in re2s.ah P_ [C.O re2s.bh P_ CO re2s.dh P_ linO re2s.dl P_ !olO Intr@[1C,re2sBO *ndO 8e2in 'lr+!rO 4or L P_ 1 %o .5 Do 4or ' P_ 1 %o ;C Do 8e2in 'ursor@',LBO Write@c _/-cBO DelaA@%* P/BO *ndO *nd.

@W LXmero da P=2ina WB

@W 'ontrola a Gelo!idade WB

;;

Você também pode gostar