Escolar Documentos
Profissional Documentos
Cultura Documentos
Turbo Pascal
Turbo Pascal
Linguagem Pascal
por Paulo Roberto Gome s Luzzardi
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
&'+ ObAetivos
aB *nsino da Pro2rama>?o, pois & uma lin2ua2em did=ti!aO bB Pro2rama>?o *struturada.
0aneldsitF!@bu2B
0aneldms2obit
esa2:Wt!h
0aneldi>?o
*dit
1ileEdtRunCompPr0!OsBb2a9:"h
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.
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.
+a(da tempor=ria do %urbo Pas!al para o +istema /pera!ional. Para retornar ao ,mbiente di2ita-se %&it.
B(ild @'onstruirB
Re!ompila todos os arDuivos rela!ionados ao arDuivo prim=rio @VPrimary (ileVB.
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.
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.
15
16
,'+ 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
=Q JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ Beclara)2es Q> Const J _ 1CCO P3 _ 1.1516O <P _ `7.O L*4% _ `76O
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.
17
8e2in 'lr+!rO Data.ano P_ 1996O Data.mes P_ 1.O Data.dia P_ 19O Lome P_ ^<'PelcO
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
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
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;
8e2in
@C M 66616B
19
8e2in
7 1
. 1
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 Or =o(>P
.1
Condi)o A OR 7 Condi)o B 1 7 7 7 1 7 1
1 7 1
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
/'/'+ 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
3' Comandos
.1
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 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
*ndO
.9
WriteLn@lst,`1.BO WriteLn@lst,`16BO
+/Lin@as "ela
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.
D%mero C 1 . 1 5 6 6 7
Cor preto azul verde azul !laro vermelho rosa marrom !inza
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.
@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
&&' 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.
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;
&+'- 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.
&+'/ #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
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/',
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
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
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
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..
Binrio
%ipo de ,rDuivo usado para armazenar tipos de dados di)erentes. %Ape Registro _ Re!ord LomeP +trin2Q1CRO 3dadeP 8AteO +al=rioP RealO
59
&-'&'+ 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+%*
&-'&'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.
&-'+'+ (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
,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.
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
&/'+'+ 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
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
@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
'loseGraphO *nd.
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.
6;
@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.
"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.
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
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.
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
@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.
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.
&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
.6
Locali9a)o na
emria de 75deo
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
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
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
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.
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.
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
emria de 75deoP
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.
#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
* *:+ 1 Pilha . 1 1 . 1 +
Pil@aP %ntradaP 1,.,1 SaIdaP 1,.,1 1ilaP %ntradaP 1,.,1 SaIdaP 1,.,1
4ila
%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
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.
<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
<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
;;