Sie sind auf Seite 1von 99

UNIVERSIDADE REGIONAL INTEGRADA DO ALTO URUGUAI E DAS

MISSES
CAMPUS FREDERICO WESTPHALEN
DEPARTAMENTO DE ENGENHARIAS E CINCIA DA COMPUTAO
Algoritmo ! Etr"t"r# $! D#$o I
I%&orm'ti(# I
Pro&) E*#%$ro Pr!"
preuss@uri.br
http://www.uri.br/~preuss
+, S!m!tr!-.//.
2
Pl#%o $! !%i%o $# $i(i0li%#1 30-701 Algoritmos e Estrutura de Dados
D!0#rt#m!%to1 03 E!ge!harias e "i#!$ia da "omputa%&o
C#rg# 2or'ri#1 '0 horas (0 )eor./ 30 *rat. Cr3$ito1 0(
EMENTA1
Estudo das +ormas para represe!ta%&o do pe!same!to l,gi$o atra-.s de t.$!i$as de dese!-ol-ime!to de
algoritmos. /eprese!ta%&o e ma!ipula%&o de dados. "o!stru%0es de algoritmos se1ue!$iais2 $o!di$io!ais e
$om estruturas de repeti%&o. 3a!ipula%&o de estruturas de dados homog#!eas e heterog#!eas e utili4a%&o de
sub-roti!as.
O45ETIVOS1
5or!e$er eleme!tos e t.$!i$as 1ue $apa$item o alu!o a $o!struir algoritmos2 atra-.s da ide!ti+i$a%&o dos
passos ou a%0es !e$ess6rios para tra!s+ormar um $o!7u!to de dados de e!trada em i!+orma%0es de resultado2
promo-e!do dessa +orma2 um ambie!te de pr6ti$a da l,gi$a de programa%&o.
RELAO DOS CONTE6DOS1
A7or$#g!m Co%t!8t"#l
- 8o%0es de l,gi$a e $o!$eito de algoritmos.
- 5atores a serem $o!siderados !a $o!stru%&o de algoritmos e import9!$ia da programa%&o estruturada
- 3.todos para $o!stru%&o de algoritmos
- *ri!$ipais +ormas de represe!ta%&o de algoritmos :!arrati-a2 pseudo-$,digo e gr6+i$a;
Ti0o $! I%&orm#9:!
D#$o1
- )ipos primiti-os de dados2 $o!sta!tes < -ari6-eis
- =ari6-eis: uso2 !ome!$latura2 atribui%&o e arma4e!ame!to !a mem,ria
- >peradores matem6ti$os e +u!%0es matem6ti$as
I%tr"9:! 7'i(# o" (om#%$o 7'i(o1
- E!trada2 atribui%&o e sa?da de dados
- @lo$os de programas e uso de portugu#s estruturado
Etr"t"r# $! Co%trol! $o Fl"8o $! E8!("9;o
- Algoritmos se1ue!$iais
- Algoritmos $om sele%&o A Estruturas de $o!trole:
- Des-io $o!di$io!al simples2 $omposto e e!$adeados2 mBltiplas op%0es2 operadores l,gi$os
- Estruturas de repeti%&o:
- utili4a%&o de $o!tadores e a$umuladores
Etr"t"r# $! D#$o Homog<%!#
- 3atri4es de Cma Dime!s&o ou =etores:
- >pera%0es @6si$as $om 3atri4es do )ipo =etor
- 3atri4es $om 3ais de Cma Dime!s&o:
- >pera%0es @6si$as $om 3atri4es de Duas Dime!s0es
Etr"t"r# $! D#$o H!t!rog<%!#
- Estrutura de Cm /egistro
- Atribui%&o2 Deitura e Es$rita de /egistros
- Estrutura de Cm =etor de /egistro
- Atribui%&o2 Deitura e Es$rita de =etor de /egistros
S"7#lgoritmo
- 3e$a!ismo de 5u!$io!ame!to e De+i!i%&o de Eubalgoritmos
- 5u!%0es
- *ro$edime!tos
- =ari6-eis Flobais e Do$ais
- *ar9metros
- 3e$a!ismos de *assagem de *ar9metros
>bs: para suporte aos algoritmos dese!-ol-idos2 ser&o trabalhados 2 $r.ditos sema!ais em um laborat,rio2
utili4a!do uma li!guagem estruturada2 possibilita!do dessa +orma a pr6ti$a da l,gi$a de programa%&o.
4I4LIOGRAFIA 4=SICA >LIVROS TE?TOS@1
5>/@EDD>8E2 A!dr.. ALBgi(# $! Progr#m#9;o C A Co%tr"9;o $! Algoritmo ! Etr"t"r# $!
D#$oA) E&o *aulo: Ed. 3aGro! @ooGs2 1''3.
F>))5/ED2 @Hro! E. Progr#m#9;o !m P#(#l. Disboa: Ed. 3$ Fraw-Iill2 1''J.
3A8KA8>2 Los. Augusto 8. F. M >D=E/A2 LaHr 5igueiredo. Algoritmo1 LBgi(# P#r#
D!!%*ol*im!%to $! Progr#m#9;o. E&o *aulo. Ed. Nri$a2 1''(.
). "orme!2 ". Deiserso! e /. /i-est. I%tro$"(tio% to Algorit2m) 3) *ress/3$Fraw-Iill2 1''0. C.
3a!ber.
4I4LIOGRAFIA COMPLEMENTAR >LIVROS REFERENCIADOS@1
EAD=E))2 Dir$eu Douglas e @arbosa2 D. 3. Algoritmo) E&o *aulo: Ed. 3aGro! @ooGs2 1''O.
I%tro$"(tio% to Algorit2m1 # (r!#ti*! #00ro#(2 . Addiso!-PesleH2 1'OO.
F. @rassard e *. @ratleH. F"%$#m!%t#l o& Algorit2mi() *re!ti$e-Iall2 1''Q.
">DD8E2 Pillia! L. Progr#m#9;o Etr"t"r#$# (om !t"$o $! (#o !m P#(#l. E&o *aulo: Ed. 3$
Fraw-Iill do @rasil2 1'OO.
5A//E/2 IarrH. Progr#m#9;o Etr"t"r#$# $! Com0"t#$or!. /io de La!eiro: Ed. D)"2 1'O'.
F>))5/ED2 @Hro! E. Progr#m#9;o !m P#(#l. Disboa: Ed. 3$ Fraw-Iill2 1''J.
FC3A/REE2 A!gelo de 3oura. Algoritmo ! Etr"t"r# $! D#$o. /io de La!eiro: Ed. D)"2 1'OQ.
S8C)I2 D. E. T2! Art o& Com0"t!r Progr#mmi%g) =ol 3. Eort a!d Eear$him. Addiso! PesleH2 /eadi!g2
3ass.2 1'73
3E"DE/2 a! M 3AA2 Dui4 *aulo. Progr#m#9;o ! LBgi(# (om T"r7o P#(#l. /io de La!eiro: Ed.
"ampus2 1'O'.
>/)I2 A+o!so !6$io. Algoritmo. *orto Alegre. Ed. *allotti2 1'OQ.
EAD@A2 Palter Du?s "aram. T3(%i(# $! Progr#m#9;o1 Um# A7or$#g!m Etr"t"r#. E&o *aulo: Ed.
3aGro! @ooGsl2 1''2.
)E/ADA2 /outo M EE)KE/2 =aldemar P. I%tro$"9;o D Com0"t#9;o ! D Co%tr"9;o $! Algoritmo.
E&o *aulo: Ed. 3aGro! @ooGs2 1''2.
J
SUM=RIO
PARTE I E INTRODUO)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))+
+) A4ORDAGEM CONTE?TUAL)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))).
1.1 ">8"E)> DE ADF>/)3>.............................................................................................................. 2
.) FORMAS DE REPRESENTAO DE ALGORITMOS)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))F
2.1 DEE"/TR> 8A//A)=A.................................................................................................................. J
2.2 5DCU>F/A3A ">8=E8">8AD........................................................................................................ J
2.3 DAF/A3A DE "IA*8.................................................................................................................... Q
2.J *EECD>"VDF>............................................................................................................................... (
PARTE II C TGCNICAS 4=SICAS DE PROGRAMAO))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))H
I) TIPOS DE DADOS)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))J
3.1 )*>E 8)E/>E............................................................................................................................... '
3.2 )*>E /EAE.................................................................................................................................... '
3.3 )*>E "A/A")E/EE......................................................................................................................... '
3.J )*>E DVF">E............................................................................................................................... '
F) VARI=VEIS E CONSTANTES))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))+/
J.1 A/3AKE8A3E8)> DE DAD>E 8A 3E3V/A.................................................................................. 10
J.2 ">8"E)> E C)DDADE DE =A/W=EE.......................................................................................... 10
J.3 DE58TR> DE =A/W=EE E3 ADF>/)3>E................................................................................... 11
J.J ">8"E)> E C)DDADE DE ">8E)A8)EE...................................................................................... 11
J.Q DE58TR> DE ">8E)A8)EE E3 ADF>/)3>E............................................................................... 11
K) E?PRESSES E OPERADORES)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))+.
Q.1 >*E/AD>/EE................................................................................................................................ 12
Q.2 EU*/EEEXEE.................................................................................................................................. 1J
EUE/"Y">E....................................................................................................................................... 1Q
L) INSTRUES PRIMITIVAS)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))+L
(.1 ">3A8D>E DE A)/@CTR>.......................................................................................................... 1(
(.2 ">3A8D>E DE EAYDA DE DAD>E................................................................................................... 17
(.3 ">3A8D>E DE E8)/ADA DE DAD>E............................................................................................. 17
(.J 5C8TXEE 3A)E3W)"AE............................................................................................................... 1O
M) ESTRUTURAS DE CONTROLE DO FLU?O DE E?ECUO))))))))))))))))))))))))))))))))))))))))))))))))))))))./
7.1 ">3A8D>E ">3*>E)>E............................................................................................................... 20
7.2 EE)/C)C/A EEZ[E8"AD.............................................................................................................. 20
7.3 EE)/C)C/AE DE DE"ER>............................................................................................................. 20
7.J EE)/C)C/AE DE /E*E)TR>.......................................................................................................... 2Q
7.Q EE)/C)C/AE DE ">8)/>DE E8"ADEADAE >C A88IADAE............................................................2O
H) ESTRUTURAS DE DADOS HOMOGNEAS )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))).J
O.1 3A)/KEE DE C3A D3E8ER> >C =E)>/EE.................................................................................. 2'
O.2 3A)/KEE ">3 3AE DE C3A D3E8ER>...................................................................................... 33
J) SU4ALGORITMOS))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))IL
'.1 3E"A8E3> DE 5C8">8A3E8)>................................................................................................. 3(
'.2 DE58TR> DE EC@ADF>/)3>E.................................................................................................... 37
'.3 5C8TXEE....................................................................................................................................... 37
'.J */>"ED3E8)>E........................................................................................................................... 3'
'.Q =A/W=EE FD>@AE E D>"AE....................................................................................................... J0
'.( *A/\3E)/>E................................................................................................................................ J0
'.7 3E"A8E3>E DE *AEEAFE3 DE *A/\3E)/>E................................................................................ J1
'.O /E58A3E8)>E EC"EEE=>E.......................................................................................................... J2
PARTE III C LINGUAGEM DE PROGRAMAO))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))FI
+/) INTRODUO))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))FF
++) DADOS))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))FK
11.1 EDE3E8)>E DA D8FCAFE3........................................................................................................ JQ
11.2 )*>E DE DAD>E........................................................................................................................ J(
11.3 ">8E)A8)EE E =A/W=EE.......................................................................................................... Q0
11.J >*E/AD>/EE............................................................................................................................... Q1
+.) ESTRUTURA DO PROGRAMA)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))KF
12.1 DE8)5"ATR> D> */>F/A3A................................................................................................... QJ
12.2 @D>"> DE DE"DA/ATXEE........................................................................................................... QJ
12.3 @D>"> DE ">3A8D>E................................................................................................................ QQ
+I) COMANDOS))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))KL
13.1 ">3A8D>E E3*DEE................................................................................................................... Q(
13.2 EE)/C)C/AE DE ">8)/>DE........................................................................................................ (2
+F) FUNES E PROCEDIMENTOS))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))LH
1J.1 */>"ED3E8)>E......................................................................................................................... (O
1J.2 5C8TXEE..................................................................................................................................... ('
1J.3 *A/\3E)/>E.............................................................................................................................. ('
1J.J /E"C/E=DADE.......................................................................................................................... 72
+K) PROCEDIMENTOS E FUNES DAS UNIDADES PADRO)))))))))))))))))))))))))))))))))))))))))))))))))))))MI
1Q.1 3A8*CDATR> DE E)/8FE E ">8=E/ER>................................................................................... 73
1Q.2 3A8*CDATR> 8C3N/"A........................................................................................................... 73
1Q.3 3A8*CDATR> DE D/E)V/>E.................................................................................................... 7J
1Q.J C8) "/)................................................................................................................................... 7J
1Q.Q 5C8TXEE ">3 >/D8AE............................................................................................................. 7(
1Q.( C8) D>E.................................................................................................................................. 7(
+L) TIPOS ESTRUTURADOS))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))H/
1(.1 =E)>/EE C8D3E8E>8AE E 3CD)D3E8E>8AE :3A)/KEE;..................................................O0
1(.2 EE)/C)C/AE.............................................................................................................................. O1
1(.3 ">8LC8)>E - EE)........................................................................................................................ OJ
+M) 4I4LIOGRAFIA))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))HL
APNDICE A C E?ERCNCIOS))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))HM
(
PARTE I E INTRODUO
1
+) A4ORDAGEM CONTE?TUAL
> uso de algoritmos . 1uase t&o a!tigo 1ua!to a matem6ti$a. "om o passar do tempo2 e!treta!to2 ele +oi
basta!te es1ue$ido pela matem6ti$a. "om o ad-e!to das m61ui!as de $al$ular e mais tarde os $omputadores2 o uso
de algoritmos ressurgiu $om gra!de -igor2 $omo uma +orma de i!di$ar o $ami!ho para a solu%&o dos mais -ariados
problemas.
Algoritmo !&o . a solu%&o do problema2 pois2 se assim +osse2 $ada problema teria um B!i$o algoritmo.
Algoritmo . o $ami!ho para a solu%&o de um problema2 e em geral2 os $ami!hos 1ue le-am a uma solu%&o s&o
muitos.
Ao lo!go dos a!os surgiram muitas +ormas de represe!tar os algoritmos2 algu!s utili4a!do li!guage!s
semelha!tes ]s li!guage!s de programa%&o e outras utili4a!do +ormas gr6+i$as.
> apre!di4ado de algoritmos !&o se $o!segue a !&o ser atra-.s de muitos e<er$?$ios.
Algoritmos no se aprendem:
Copiando algoritmos
Estudando algoritmos
Algoritmos s se aprendem:
Construindo algoritmos
Testando algoritmos
+)+ Co%(!ito $! Algoritmo
A automa%&o . o pro$esso em 1ue uma tare+a dei<a de ser desempe!hada pelo homem e passa a ser
reali4ada por m61ui!as2 se7am estas dispositi-os me$9!i$os :$omo as m61ui!as i!dustriais;2 eletr^!i$os :$omo os
$omputadores;2 ou de !ature4a mista :$omo os rob^s;.
*ara 1ue a automa%&o de uma tare+a se7a bem-su$edida . !e$ess6rio 1ue a m61ui!a 1ue passar6 a reali46-la
se7a $apa4 de desempe!har $ada uma das etapas $o!stitui!tes do pro$esso a ser automati4ado $om e+i$i#!$ia2 de
modo a gara!tir a repetibilidade do mesmo. Assim2 . !e$ess6rio 1ue se7a espe$i+i$ado $om $lare4a e e<atid&o o 1ue
de-e ser reali4ado em $ada uma das +ases do pro$esso a ser automati4ado2 bem $omo a se1_#!$ia em 1ue estas
+ases de-em ser reali4adas.
` espe$i+i$a%&o da se1_#!$ia orde!ada de passos 1ue de-e ser seguida para a reali4a%&o de um tare+a2
gara!ti!do a sua repetibilidade2 d6-se o !ome de #lgoritmo.
Embora esta de+i!i%&o de algoritmo se7a $orreta2 podemos de+i!ir algoritmo2 de ma!eira i!+ormal e
$ompleta $omo:
aAlgoritmo 3 "m (o%O"%to &i%ito $! r!gr#P 7!m $!&i%i$#P 0#r# # ol"9;o $! "m 0ro7l!m# !m "m
t!m0o &i%ito ! (om "m %Qm!ro &i%ito $! 0#o.b
!+ormalme!te2 um algoritmo . 1ual1uer pro$edime!to $omputa$io!al bem de+i!ido 1ue toma algum -alor
ou $o!7u!to de -alores $omo e!trada e produ4 algum -alor ou $o!7u!to de -alores $omo sa?da.
Cm algoritmo de-e sempre possuir pelo me!os um resultado2 !ormalme!te $hamado de #R$#2 e satis+a4er a
propriedade da e+eti-idade2 isto .2 todas as opera%0es espe$i+i$adas !o algoritmo de-em ser su+i$ie!teme!te b6si$as
para 1ue possam ser e<e$utadas de ma!eira e<ata e !um tempo +i!ito.
8a pr6ti$a !&o . importa!te ter-se ape!as um algoritmo2 mas sim2 um bom algoritmo. > mais importa!te
de um algoritmo . a sua (orr!9;o2 isto .2 se ele resol-e realme!te o problema proposto e o +a4 e<atame!te.
*ara se ter um algoritmo2 . !e$ess6rio:
2
1. Zue se te!ha um !Bmero +i!ito de passos
2. Zue $ada passo este7a pre$isame!te de+i!ido2 sem poss?-eis ambig_idades
3. Zue e<istam 4ero ou mais e!tradas tomadas de $o!7u!tos bem de+i!idos
J. Zue e<istam uma ou mais sa?das
Q. Zue e<ista uma $o!di%&o de +im sempre ati!gida para 1uais1uer e!tradas e !um tempo +i!ito.
*ara 1ue um $omputador possa desempe!har uma tare+a . !e$ess6rio 1ue esta se7a detalhada passo a passo2
!uma +orma $ompree!s?-el pela m61ui!a2 utili4a!do a1uilo 1ue se $hama de 0rogr#m#. 8este se!tido2 um
programa de $omputador !ada mais . 1ue um algoritmo es$rito !uma +orma $ompree!s?-el pelo $omputador.
3
.) FORMAS DE REPRESENTAO DE ALGORITMOS
E<istem di-ersas +ormas de represe!ta%&o de algoritmos2 mas !&o h6 um $o!se!so $om rela%&o ] melhor
delas.
Algumas +ormas de represe!ta%&o de algoritmos tratam dos problemas ape!as em !?-el l,gi$o2 abstrai!do-
se de detalhes de impleme!ta%&o muitas -e4es rela$io!ados $om alguma li!guagem de programa%&o espe$?+i$a. *or
outro lado2 e<istem +ormas de represe!ta%&o de algoritmos 1ue possuem uma maior ri1ue4a de detalhes e muitas
-e4es a$abam por obs$ures$er a id.ia pri!$ipal2 o algoritmo2 di+i$ulta!do seu e!te!dime!to.
De!tre as +ormas de represe!ta%&o de algoritmos mais $o!he$idas2 sobressaltam:
a D!(ri9;o N#rr#ti*#
o Fl"8ogr#m# Co%*!%(io%#l
o Di#gr#m# $! C2#0i%
o P!"$o(B$igo2 tamb.m $o!he$ido $omo Li%g"#g!m Etr"t"r#$# ou Port"gol.
.)+ D!(ri9;o N#rr#ti*#
8esta +orma de represe!ta%&o os algoritmos s&o e<pressos diretame!te em li%g"#g!m %#t"r#l. "omo por
e<emplo2 t#m-se os algoritmos segui!tes:
A )ro$a de um p!eu +urado:
A A+rou<ar ligeirame!te as por$as
A Euspe!der o $arro
A /etirar as por$as e o p!eu
A "olo$ar o p!eu reser-a
A Apertar as por$as
A Abai<ar o $arro
A Dar o aperto +i!al !as por$as
A "6l$ulo da m.dia de um alu!o:
A >bter as !otas da primeira e da segu!da pro-a
A "al$ular a m.dia aritm.ti$a e!tre as duas
A Ee a m.dia +or maior ou igual a 72 o alu!o +oi apro-ado2 se!&o ele +oi repro-ado
Esta represe!ta%&o . pou$o usada !a pr6ti$a por1ue o uso de li!guagem !atural muitas -e4es d6
oportu!idade a m6s i!terpreta%0es2 ambig_idades e impre$is0es.
*or e<emplo2 a i!stru%&o aa+rou<ar ligeirame!te as por$asb !o algoritmo da tro$a de p!eus est6 su7eita a
i!terpreta%0es di+ere!tes por pessoas disti!tas. Cma i!stru%&o mais pre$isa seria: aa+rou<ar a por$a2 gira!do-a de
30c !o se!tido a!ti-hor6riob.
.). Fl"8ogr#m# Co%*!%(io%#l
N uma represe!ta%&o gr6+i$a de algoritmos o!de +ormas geom.tri$as di+ere!tes impli$am a%0es :i!stru%0es2
$oma!dos; disti!tos. )al propriedade +a$ilita o e!te!dime!to das id.ias $o!tidas !os algoritmos.
8ota-se 1ue os +lu<ogramas $o!-e!$io!ais preo$upam-se $om detalhes de !?-el +?si$o da impleme!ta%&o do
algoritmo. *or e<emplo2 +iguras geom.tri$as di+ere!tes s&o adotadas para represe!tar opera%0es de sa?da de dados
reali4adas em dispositi-os disti!tos2 $omo uma u!idade de arma4e!ame!to de dados ou um mo!itor de -?deo. A
+igura 2.1 mostra as pri!$ipais +ormas geom.tri$as usadas em +lu<ogramas.
De modo geral2 o +lu<ograma se resume a um B!i$o s?mbolo i!i$ial2 por o!de a e<e$u%&o do algoritmo
$ome%a2 e um ou mais s?mbolos +i!ais2 1ue s&o po!tos o!de a e<e$u%&o do algoritmo se e!$erra. *arti!do do
s?mbolo i!i$ial2 h6 sempre um B!i$o $ami!ho orie!tado a ser seguido2 represe!ta!do a e<ist#!$ia de uma B!i$a
se1_#!$ia de e<e$u%&o das i!stru%0es. sto pode ser melhor -isuali4ado pelo +ato de 1ue2 apesar de -6rios $ami!hos
poderem $o!-ergir para uma mesma +igura do diagrama2 h6 sempre um B!i$o $ami!ho sai!do desta. E<$e%0es a
J
esta regra s&o os s?mbolos +i!ais2 dos 1uais !&o h6 !e!hum +lu<o sai!do2 e os s?mbolos de de$is&o2 de o!de pode
ha-er mais de um $ami!ho de sa?da :!ormalme!te dois $ami!hos;2 represe!ta!do uma bi+ur$a%&o !o +lu<o.
A +igura 2.2 mostra a represe!ta%&o do algoritmo de $6l$ulo da m.dia de um alu!o sob a +orma de um
+lu<ograma.
.)I Di#gr#m# $! C2#0i%
> diagrama +oi $riado por 8ed "hapi! a partir de trabalhos de 8assi-Eh!eiderma!2 os 1uais resol-eram
substituir o +lu<ograma tradi$io!al por um diagrama 1ue aprese!ta uma -is&o hier6r1ui$a e estruturada da l,gi$a
do programa. A gra!de -a!tagem de usar este tipo de diagrama . a represe!ta%&o das estruturas 1ue tem um po!to
de e!trada e um po!to de sa?da e s&o $ompostas pelas estruturas b6si$as de $o!trole de se1_#!$ia2 sele%&o e
reparti%&o. E!1ua!to . di+?$il mostrar o embutime!to e a re$ursi-idade $om o +lu<ograma tradi$io!al2 tor!a-se mais
Q
d !?$io e +i!al do +lu<ograma
d >pera%&o de e!trada de dados
d >pera%&o de sa?da de dados
d >pera%0es de atribui%&o e $hamada ou
retor!o de subalgoritmo
d De$is&o
Fig"r# .)+ *ri!$ipais +ormas geom.tri$as usadas em +lu<ogramas
!?$io
812 82
3.dia
:81e82;/2
3.dia
fd7
aApro-adob
a/epro-adob 5im
Fig"r# .). E<emplo de um +lu<ograma $o!-e!$io!al
simples mostr6-lo $om o diagrama de "hapi!2 bem $omo $odi+i$6-lo +uturame!te !a $o!-ers&o de $,digo portugu#s
estruturado ou pseudo$,digos. A +igura 2.3 aprese!ta um e<emplo do tipo de diagrama de "hapi! para o algoritmo
de $6l$ulo da m.dia de um alu!o.
.)F P!"$o(B$igo
Esta +orma de represe!ta%&o de algoritmos2 tamb.m $o!he$ida $omo portugu#s estruturado ou portugol2 .
basta!te ri$a em detalhes e2 por assemelhar-se basta!te ] +orma em 1ue os programas s&o es$ritos2 e!$o!tra muita
a$eita%&o2 se!do porta!to a +orma de represe!ta%&o de algoritmos 1ue ser6 adotada !esta dis$ipli!a.
8a -erdade2 esta represe!ta%&o . su+i$ie!teme!te geral para permitir 1ue a tradu%&o de um algoritmo !ela
represe!tado para uma li!guagem de programa%&o espe$?+i$a se7a prati$ame!te direta.
.)F)+ R!0r!!%t#9;o $! Um Algoritmo %# Form# $! P!"$o(B$igo
A represe!ta%&o de um algoritmo !a +orma de pseudo$,digo . a segui!te:
Algoritmo <nome_do_algoritmo>
<declarao_de_variveis>
<subalgoritmos>
Incio
<corpo_do_algoritmo>
Fim.
o!de:
Algoritmo . uma pala-ra 1ue i!di$a o i!?$io da de+i!i%&o de um algoritmo em +orma de pseudo$,digo.
Snome_do_algoritmof . um !ome simb,li$o dado ao algoritmo $om a +i!alidade de disti!gu?-lo dos
demais.
Sdeclarao_de_variveisT $o!siste em uma por%&o op$io!al o!de s&o de$laradas as -ari6-eis globais
usadas !o algoritmo pri!$ipal e2 e-e!tualme!te2 !os subalgoritmos.
SsubalgoritmosT $o!siste de uma por%&o op$io!al do pseudo$,digo o!de s&o de+i!idos os subalgoritmos.
I%R(io ! Fim s&o respe$ti-ame!te as pala-ras 1ue delimitam o i!?$io e o t.rmi!o do $o!7u!to de i!stru%0es
do $orpo do algoritmo.
"omo e<emplo2 abai<o . mostrado a represe!ta%&o do algoritmo de $6l$ulo da m.dia de um alu!o !a +orma
de um pseudo$,digo.
Algoritmo Mdia
Var N1, N2, Mdia
(
Deia 812 82
!?$io
3.dia :81e82;/2
Eim 8&o
3.dia fd 7
Es$re-a
a/epro-adob
Es$re-a
aApro-adob
5im
Fig"r# .)I Diagrama de "hapi! para o algoritmo do $6l$ulo da m.dia de um alu!o
Incio
Leia N1, N2
Mdia := (N1+N2)/2
Se Mdia >= 7 Ento
Escreva Aprovado
Seno
Escreva Reprovado
Fim.
7
PARTE II C TGCNICAS 4=SICAS DE PROGRAMAO
O
I) TIPOS DE DADOS
)odo o trabalho reali4ado por um $omputador . baseado !a ma!ipula%&o das i!+orma%0es $o!tidas em sua
mem,ria. Estas i!+orma%0es podem ser $lassi+i$adas em dois tipos:
A As i%tr"9:!2 1ue $oma!dam o +u!$io!ame!to da m61ui!a e determi!am a ma!eira $omo de-em ser
tratados os dados.
A >s $#$o propriame!te ditos2 1ue $orrespo!dem ] por%&o das i!+orma%0es a serem pro$essadas pelo
$omputador.
A $lassi+i$a%&o aprese!tada a seguir !&o se apli$a a !e!huma li!guagem de programa%&o espe$?+i$ag pelo
$o!tr6rio2 ela si!teti4a os padr0es utili4ados !a maioria das li!guage!s.
I)+ Ti0o I%t!iro
E&o $ara$teri4ados $omo tipos i!teiros2 os dados !um.ri$os positi-os ou !egati-os. E<$lui!do-se destes
1ual1uer !Bmero +ra$io!6rio. "omo e<emplo deste tipo de dado2 tem-se os -alores: 3Q2 02 -Q(2 102J e!tre outros.
I). Ti0o R!#i
E&o $ara$teri4ados $omo tipos reais2 os dados !um.ri$os positi-os e !egati-os e !Bmeros +ra$io!6rios.
"omo e<emplo deste tipo de dado2 tem-se os -alores: 3Q2 02 -Q(2 1.22 -JQ.'O7 e!tre outros.
I)I Ti0o C#r#(t!r!
E&o $ara$teri4ados $omo tipos $ara$teres2 as se1_#!$ias $o!te!do letras2 !Bmeros e s?mbolos espe$iais.
Cma se1_#!$ia de $ara$teres de-e ser i!di$ada e!tre aspas :ab;. Este tipo de dado tamb.m . $o!he$ido $omo
al+a!um.ri$o2 stri!g2 literal ou $adeia. "omo e<emplo deste tipo de dado2 tem-se os -alores: a*rograma%&ob2 a/ua
Al+a2 Q2 Apto 1b2 a5o!e Q7J-''OOb2 a0J3O7-030b2 a b2 a7b e!tre outros.
I)F Ti0o LBgi(o
E&o $ara$teri4ados $omo tipos l,gi$os os dados $om -alor *!r$#$!iro e &#lo2 se!do 1ue este tipo de dado
poder6 represe!tar ape!as um dos dois -alores. Ele . $hamado por algu!s de ti0o 7ool!#%o2 de-ido ] $o!tribui%&o
do +il,so+o e matem6ti$o i!gl#s Feorge @oole !a 6rea da l,gi$a matem6ti$a.
'
F) VARI=VEIS E CONSTANTES
F)+ Arm#U!%#m!%to $! D#$o %# M!mBri#
*ara arma4e!ar os dados !a mem,ria2 imagi!e 1ue a mem,ria de um $omputador . um gra!de ar1ui-o $om
-6rias ga-etas2 o!de $ada ga-eta pode arma4e!ar ape!as um B!i$o -alor :se7a ele !um.ri$o2 $ara$tere ou l,gi$o;.
Ee . um gra!de ar1ui-o $om -6rias ga-etas2 . !e$ess6rio ide!ti+i$ar $om um !ome a ga-eta 1ue se prete!de utili4ar.
Desta +orma o -alor arma4e!ado pode ser utili4ado a 1ual1uer mome!to.
F). Co%(!ito ! Utili$#$! $! V#ri'*!i
)#m-se $omo de+i!i%&o de -ari6-el tudo a1uilo 1ue . su7eito a -aria%0es2 1ue . i!$erto2 i!st6-el ou
i!$o!sta!te. E 1ua!do se +ala de $omputadores2 temos 1ue ter em me!te 1ue o -olume de i!+orma%0es a serem
tratadas . gra!de e di-ersi+i$ado. Desta +orma2 os dados a serem pro$essados ser&o basta!te -ari6-eis.
"omo -isto a!teriorme!te2 i!+orma%0es $orrespo!de!tes a di-ersos tipos de dados s&o arma4e!adas !as
mem,rias dos $omputadores. *ara a$essar i!di-idualme!te $ada uma destas i!+orma%0es2 em pri!$?pio2 seria
!e$ess6rio saber o tipo de dado desta i!+orma%&o :ou se7a2 o !Bmero de bHtes de mem,ria por ela o$upados; e a
posi%&o i!i$ial deste $o!7u!to de bHtes !a mem,ria.
*er$ebe-se 1ue esta sistem6ti$a de a$esso a i!+orma%0es !a mem,ria . basta!te ileg?-el e di+?$il de se
trabalhar. *ara $o!tor!ar esta situa%&o $riou-se o $o!$eito de *#ri'*!l2 1ue . uma e!tidade desti!ada a guardar
uma i!+orma%&o.
@asi$ame!te2 uma -ari6-el possui tr#s atributos: um %om!2 um ti0o $! $#$o asso$iado ] mesma e a
i%&orm#9;o por ela guardada.
)oda -ari6-el possui um %om! 1ue tem a +u!%&o de di+ere!$i6-la das demais. "ada li!guagem de
programa%&o estabele$e suas pr,prias regras de +orma%&o de !omes de -ari6-eis.
Adotaremos para os algoritmos2 as segui!tes regras:
um !ome de -ari6-el de-e !e$essariame!te $ome%ar $om uma letrag
um !ome de -ari6-el !&o de-e $o!ter !e!hum s?mbolo espe$ial2 e<$eto a subli!ha : h ; e !e!hum espa%o
em bra!$og
um !ome de -ari6-el !&o poder6 ser uma pala-ra reser-ada a uma i!stru%&o de programa.
E<emplos de !omes de -ari6-eis:
Eal6rio A $orreto
1A8> A errado :!&o $ome%ou uma letra;
A8>1 A $orreto
a $asa A errado :$o!t.m o $ara$tere bra!$o;
EAD/I>/A A errado :$o!t.m o $ara$tere a/b;
EADhI>/A A $orreto
hDEE">8)> A errado :!&o $ome%ou $om uma letra;
>b-iame!te . i!teressa!te adotar !omes de -ari6-eis rela$io!ados ]s +u!%0es 1ue ser&o e<er$idas pela
mesmas de!tro de um programa.
>utro atributo $ara$ter?sti$o de uma -ari6-el . o ti0o $! $#$o 1ue ela pode arma4e!ar. Este atributo de+i!e
a !ature4a das i!+orma%0es $o!tidas !a -ari6-el. *or Bltimo h6 o atributo i%&orm#9;o2 1ue !ada mais . do 1ue a
i!+orma%&o Btil $o!tida !a -ari6-el.
Cma -e4 de+i!idos2 os atributos %om! e ti0o $! $#$o de uma -ari6-el %;o podem ser alterados e assim
perma!e$em dura!te toda a sua e<ist#!$ia2 desde 1ue o programa 1ue a utili4a !&o se7a modi+i$ado. *or outro lado2
o atributo i%&orm#9;o est6 $o!sta!teme!te su7eito a muda!%as de a$ordo $om o +lu<o de e<e$u%&o do programa.
Em resumo2 o $o!$eito de -ari6-el +oi $riado para +a$ilitar a -ida dos programadores2 permiti!do a$essar
i!+orma%0es !a mem,ria dos $omputadores por meio de um !ome2 em -e4 do e!dere%o de uma $.lula de mem,ria.
10
F)I D!&i%i9;o $! V#ri'*!i !m Algoritmo
)odas as -ari6-eis utili4adas em algoritmos de-em ser de+i!idas a!tes de serem utili4adas. sto se +a4
!e$ess6rio para permitir 1ue o $ompilador reser-e um espa%o !a mem,ria para as mesmas.
3esmo 1ue algumas li!guage!s de programa%&o :$omo @AE" e 5>/)/A8; dispe!sam esta de+i!i%&o2
uma -e4 1ue o espa%o !a mem,ria . reser-ado ] medida 1ue !o-as -ari6-eis s&o e!$o!tradas !o de$orrer do
programa2 !os algoritmos usaremos a de+i!i%&o de -ari6-eis por assemelhar-se $om as pri!$ipais li!guage!s de
programa%&o $omo *as$al e ".
8os algoritmos2 todas as -ari6-eis utili4adas ser&o de+i!idas !o i!?$io do mesmo2 por meio de um $oma!do
de uma das segui!tes +ormas:
VAR inome_da_varivelf : itipo_da_varivelf
ou
VAR ilista_de_variveisf : itipo_das_variveisf
a pala-ra-$ha-e VAR de-er6 estar prese!te sempre e ser6 utili4ada um B!i$a -e4 !a de+i!i%&o de um
$o!7u!to de uma ou mais -ari6-eisg
!uma mesma li!ha poder&o ser de+i!idas uma ou mais -ari6-eis do mesmo tipog *ara tal2 de-e-se
separar os !omes das mesmas por -?rgulasg
-ari6-eis de tipos di+ere!tes de-em ser de$laradas em li!has di+ere!tes.
E<emplos de de+i!i%&o de -ari6-eis:
VAR !ome: $ara$terj30k
idade: i!teiro
sal6rio: real
temh+ilhos: l,gi$o
8o e<emplo a$ima +oram de$laradas 1uatro -ari6-eis:
a -ari6-el %om!2 $apa4 de arma4e!ar dados $ara$tere de $omprime!to 3Q :3Q $ara$teres;g
a -ari6-el i$#$!2 $apa4 de arma4e!ar um !Bmero i!teirog
a -ari6-el #l'rio2 $apa4 de arma4e!ar um !Bmero realg
a -ari6-el t!mV&il2o2 $apa4 de arma4e!ar uma i!+orma%&o l,gi$a.
F)F Co%(!ito ! Utili$#$! $! Co%t#%t!
)#m-se $omo de+i!i%&o de $o!sta!te tudo a1uilo 1ue . +i<o ou est6-el. E<istir&o -6rios mome!tos em 1ue
este $o!$eito de-er6 estar em uso2 1ua!do dese!-ol-ermos programas.
N $omum de+i!irmos uma $o!sta!te !o i!?$io do programa2 e a utili4armos !o de$orrer do programa2 para
+a$ilitar o e!te!dime!to2 a programa%&o ou e!t&o para poupar tempo !o $aso de ter 1ue alterar o seu -alor2 de modo
1ue altera!do uma B!i$a -e4 a de$lara%&o da $o!sta!te2 todos os $oma!dos e e<press0es 1ue a utili4am s&o
automati$ame!te atuali4ados.
F)K D!&i%i9;o $! Co%t#%t! !m Algoritmo
8os algoritmos2 todas as $o!sta!te utili4adas ser&o de+i!idas !o i!?$io do mesmo2 por meio de um $oma!do
da segui!te +orma:
CONST inome_da_constantef d ivalorf
E<emplo de de+i!i%&o de $o!sta!tes:
CONST pi d 3.1J1Q'
!omehdahempresa d aE!<uga Felo EAb
11
K) E?PRESSES E OPERADORES
K)+ O0!r#$or!
O0!r#$or! s&o eleme!tos +u!dame!tais 1ue atuam sobre o0!r#%$o e produ4em um determi!ado
resultado. *or e<emplo2 a e<press&o I W . rela$io!a dois opera!dos :os !Bmeros 3 e 2; por meio do operador :e;
1ue represe!ta a opera%&o de adi%&o.
De a$ordo $om o !Bmero de opera!dos sobre os 1uais os operadores atuam2 os Bltimos podem ser
$lassi+i$ados em:
7i%'rio2 1ua!do atuam sobre dois opera!dos. Esta opera%&o . $hamada di6di$a. E<.: os operadores das
opera%0es aritm.ti$as b6si$as :soma2 subtra%&o2 multipli$a%&o e di-is&o;.
"%'rio2 1ua!do atuam sobre um B!i$o opera!do. Esta opera%&o . $hamada mo!6di$a. E<.: o si!al de
:-; !a +re!te de um !Bmero2 $u7a +u!%&o . i!-erter seu si!al.
>utra $lassi+i$a%&o dos operadores . +eita $o!sidera!do-se o tipo de dado de seus opera!dos e do -alor
resulta!te de sua a-alia%&o. Eegu!do esta $lassi+i$a%&o2 os opera!dos di-idem-se em #ritm3ti(o2 lBgi(o e lit!r#i.
Esta di-is&o est6 diretame!te rela$io!ada $om o tipo de e<press&o o!de apare$em os operadores.
Cm $aso espe$ial . o dos operadores r!l#(io%#i2 1ue permitem $omparar pares de opera!dos de tipos de
dados iguais2 resulta!do sempre !um -alor l,gi$o.
K)+)+ O0!r#$or! $! Atri7"i9;o
Cm operador de atribui%&o ser-e para atribuir um -alor a uma -ari6-el.
Em Algoritmo usamos o operador de atribui%&o:
:=
A si!ta<e de um $oma!do de atribui%&o .:
NomedaVarivel := expresso
A e<press&o lo$ali4ada !o lado direito do si!al de igual . a-aliada e arma4e!ado o -alor resulta!te !a
-ari6-el ] es1uerda. > !ome da -ari6-el apare$e sempre so4i!ho2 !o lado es1uerdo do si!al de igual deste $oma!do.
K)+). O0!r#$or! Aritm3ti(o
>s operadores aritm.ti$os se rela$io!am ]s opera%0es aritm.ti$as b6si$as2 $o!+orme a tabela abai<o:
O0!r#$or Ti0o O0!r#9;o Priori$#$!
e @i!6rio Adi%&o J
- @i!6rio Eubtra%&o J
l @i!6rio 3ultipli$a%&o 3
/ @i!6rio Di-is&o 3
3>D @i!6rio /esto da Di-is&o 3
D= @i!6rio Di-is&o !teira 3
ll @i!6rio E<po!e!$ia%&o 2
e C!6rio 3a!ute!%&o do Ei!al 1
- C!6rio !-ers&o do Ei!al 1
12
A prioridade e!tre operadores de+i!e a ordem em 1ue os mesmos de-em ser a-aliados de!tro de uma mesma
e<press&o.
K)+)I O0!r#$or! R!l#(io%#i
>s operadores rela$io!ais s&o operadores bi!6rios 1ue de-ol-em os -alores l,gi$os -erdadeiro e +also.
O0!r#$or Com0#r#9;o
f maior 1ue
i me!or 1ue
fd maior ou igual
id me!or ou igual
d igual
if di+ere!te
Estes -alores s&o some!te usados 1ua!do se dese7a e+etuar $ompara%0es. "ompara%0es s, podem ser +eitas
e!tre ob7etos de mesma !ature4a2 isto . -ari6-eis do mesmo tipo de dado. > resultado de uma $ompara%&o . sempre
um -alor l,gi$o
*or e<emplo2 digamos 1ue a -ari6-el i!teira escolha $o!te!ha o -alor 7. A primeira das e<press0es a seguir
+or!e$e um -alor +also2 e a segu!da um -alor -erdadeiro:
escolha <= 5
escolha > 5
"om -alores stri!g2 os operadores rela$io!ais $omparam os -alores AE" dos $ara$teres $orrespo!de!tes
em $ada stri!g. Cma stri!g . dita mme!or 1uem outra se os $ara$teres $orrespo!de!tes ti-erem os !Bmeros de
$,digos AE" me!ores. *or e<emplo2 todas as e<press0es a seguir s&o -erdadeiras:
aalgoritmob f aADF>/)3>b
aA@"b i aE5Fb
a*as$alb i a*as$al $ompilerb
>bser-e 1ue as letras mi!Bs$ulas t#m $,digos AE" maiores do 1ue os das letras maiBs$ulas. >bser-e
tamb.m 1ue o $omprime!to da stri!g se tor!a o +ator determi!a!te !a $ompara%&o de duas stri!gs2 1ua!do os
$ara$teres e<iste!tes !a stri!g me!or s&o os mesmos 1ue os $ara$teres $orrespo!de!tes !a stri!g maior. 8este $aso2
a stri!g maior . dita amaior 1ueb a me!or.
K)+)F O0!r#$or! LBgi(o
>s operadores l,gi$os ou boolea!os s&o usados para $ombi!ar e<press0es rela$io!ais. )amb.m de-ol-em
$omo resultado -alores l,gi$os -erdadeiro ou +also.
O0!r#$or Ti0o O0!r#9;o Priori$#$!
>C @i!6rio Dis7u!%&o 3
E @i!6rio "o!7u!%&o 2
8R> C!6rio 8ega%&o 1
Cma e<press&o rela$io!al ou l,gi$a retor!ar6 &#lo para o -alor l,gi$o &#lo e *!r$#$!iro para o -alor
l,gi$o *!r$#$!.
5or!e$e!do dois -alores ou e<press0es l,gi$as2 represe!tadas por expresso1 e expresso2, podemos
des$re-er as 1uatro opera%0es l,gi$as a seguir:
13
expresso1 E expresso2 -erdadeiro some!te se ambas2 expresso1 e expresso2, +orem -erdadeiras. Ee
uma +or +alsa2 ou se ambas +orem +alsas2 a opera%&o E tamb.m ser6 +alsa.
expresso1 O expresso2 . -erdadeiro se ta!to a expresso1 $omo a expresso2 +orem -erdadeiras. As
opera%0es >C s, resultam em -alores +alsos se ambas2 expresso1 e expresso2, +orem +alsas.
8R> expresso1 a-alia -erdadeiro se expresso1 +or +alsag de modo $o!tr6rio2 a e<press&o 8R> resultar6
em +also2 se expresso1 +or -erdadeira.
K)+)K O0!r#$or! Lit!r#i
>s operadores 1ue atuam sobre $ara$teres -ariam muito de uma li!guagem para outra. > operador mais
$omum e mais usado . o operador 1ue +a4 a $o!$ate!a%&o de stri!gs: toma-se duas stri!gs e a$res$e!ta-se
:$o!$ate!a-se; a segu!da ao +i!al da primeira.
> operador 1ue +a4 esta opera%&o .: W
*or e<emplo2 a $o!$ate!a%&o das stri!gs aADF>b e a/)3>b . represe!tada por:
aADF>b e b/)3>b
e o resultado de sua a-alia%&o .: aADF>/)3>b
K). E80r!:!
> $o!$eito de e<press&o em termos $omputa$io!ais est6 i!timame!te ligado ao $o!$eito de e<press&o ou
+,rmula matem6ti$a2 o!de um $o!7u!to de -ari6-eis e $o!sta!tes !um.ri$as rela$io!am-se por meio de operadores
aritm.ti$os $ompo!do uma +,rmula 1ue2 uma -e4 a-aliada2 resulta !um -alor.
K).)+ E80r!:! Aritm3ti(#
E<press0es aritm.ti$as s&o a1uelas $u7o resultado da a-alia%&o . do tipo !um.ri$o2 se7a ele i!teiro ou real.
Eome!te o uso de operadores aritm.ti$os2 -ari6-eis !um.ri$as e par#!teses . permitido em e<press0es deste tipo
K).). E80r!:! LBgi(#
E<press0es l,gi$as s&o a1uelas $u7o resultado da a-alia%&o . um -alor l,gi$o -erdadeiro ou +also.
8estas e<press0es s&o usados os operadores rela$io!ais e os operadores l,gi$os2 pode!do ai!da serem
$ombi!ados $om e<press0es aritm.ti$as.
Zua!do +orem $ombi!adas duas ou mais e<press0es 1ue utili4em operadores rela$io!ais e l,gi$os2 os
mesmos de-em utili4ar os par#!teses para i!di$ar a ordem de pre$ed#!$ia.
K).)I E80r!:! Lit!r#i
E<press0es literais s&o a1uelas $u7o resultado da a-alia%&o . um -alor literal :$ara$tere;. 8este tipo de
e<press0es s, . usado o operador de literais :e;.
K).)F A*#li#9;o $! E80r!:!
E<press0es 1ue aprese!tam ape!as um B!i$o operador podem ser a-aliadas diretame!te. 8o e!ta!to2 ]
medida 1ue as mesmas -&o tor!a!do-se mais $omple<as $om o apare$ime!to de mais de um opera!do !a mesma
e<press&o2 . !e$ess6ria a a-alia%&o da mesma passo a passo2 toma!do um operador por -e4. A se1_#!$ia destes
passos . de+i!ida de a$ordo $om o +ormato geral da e<press&o2 $o!sidera!do-se a prioridade :pre$ed#!$ia; de
a-alia%&o de seus operadores e a e<ist#!$ia ou !&o de par#!teses !a mesma.
As segui!tes regras s&o esse!$iais para a $orreta a-alia%&o de e<press0es:
1. De-e-se obser-ar a prioridade dos operadores2 $o!+orme mostrado !as tabelas de operadores:
operadores de maior prioridade de-em ser a-aliados primeiro. Ee hou-er empate $om rela%&o ]
pre$ed#!$ia2 e!t&o a a-alia%&o se +a4 da es1uerda para a direita.
2. >s par#!teses usado em e<press0es tem o poder de aroubarb prioridade dos demais operadores2
+or%a!do a a-alia%&o da sube<press&o em seu i!terior.
1J
3. E!tre os 1uatro grupos de operadores e<iste!tes2 a saber2 aritm.ti$o2 l,gi$o2 literal e rela$io!al2 h6 uma
$erta prioridade de a-alia%&o: os aritm.ti$os e literais de-em ser a-aliados primeirog a seguir2 s&o
a-aliadas as sube<press0es $om operadores rela$io!ais e2 por Bltimo os operadores l,gi$os s&o
a-aliados.
E8!r(R(io
1. Dados as -ari6-eis e opera%0es:
v1 := 32
v2 := 5 + v1
v1 := v2 * 2
"omo +a4er para segurar e mostrar o -alor i!i$ial da -ari6-el -1 !o +i!al das opera%0esn
2. "omo +a4er para passar o -alor de uma -ari6-el para outra e -i$e--ersan
3. Zuais as opera%0es !e$ess6rias para i!ter$ambiar os -alores de 3 -ari6-eis #2 7 e ( de modo 1ue # +i1ue $om o
-alor de 7g 7 +i1ue $om o -alor de ( e ( +i1ue $om o -alor de #n
J. Ee ? possui o -alor 1Q e +oram e<e$utadas as segui!tes i!stru%0es:
X := X + 3
X := X - 6
X := X / 2
X := 3 * X
Zual ser6 o -alor arma4e!ado em ?n
1Q
L) INSTRUES PRIMITIVAS
"omo o pr,prio !ome di42 i%tr"9:! 0rimiti*# s&o os $oma!dos b6si$os 1ue e+etuam tare+as esse!$iais
para a opera%&o dos $omputadores2 $omo e!trada e sa?da de dados :$omu!i$a%&o $om o usu6rio e $om dispositi-os
peri+.ri$os;2 e mo-ime!ta%&o dos mesmos !a mem,ria. Estes tipos de i!stru%&o est&o prese!tes !a absoluta maioria
das li!guage!s de programa%&o.
A!tes de passar ] des$ri%&o das i!stru%0es primiti-a2 . !e$ess6ria a de+i!i%&o de algu!s termos 1ue ser&o
utili4ados:
$i0oiti*o $! !%tr#$# . o meio pelo 1ual as i!+orma%0es :mais espe$i+i$ame!te os dados; s&o
tra!s+eridos pelo usu6rio ou pelos !?-eis se$u!d6rios de mem,ria ao $omputador. >s e<emplos mais
$omu!s s&o o te$lado2 o mouse2 leitora ,ti$a2 leitora de $,digo de barras2 as +itas e dis$os mag!.ti$os.
$i0oiti*o $! #R$# . o meio pelo 1ual as i!+orma%0es :geralme!te os resultados da e<e$u%&o de um
programa; s&o tra!s+eridos pelo $omputador ao usu6rio ou aos !?-eis se$u!d6rios de mem,ria. >s
e<emplos mais $omu!s s&o o mo!itor de -?deo2 impressora2 +itas e dis$os mag!.ti$os.
i%t#8! . a +orma $omo os $oma!dos de-em ser es$ritos2 a +im de 1ue possam ser e!te!didos pelo
tradutor de programas. A -iola%&o das regras si!t6ti$as . $o!siderada um erro su7eito ] pe!a do !&o
re$o!he$ime!to por parte do tradutor
!mX%ti(# . o sig!i+i$ado2 ou se7a2 o $o!7u!to de a%0es 1ue ser&o e<er$idas pelo $omputador dura!te a
e<e$u%&o do re+erido $oma!do.
Da1ui em dia!te2 todos os $oma!do !o-os ser&o aprese!tados por meio de sua si!ta<e e sua sem9!ti$a2 isto
.2 a +orma $omo de-em ser es$ritos e a:s; a%&o:0es; 1ue e<e$utam.
L)+ Com#%$o $! Atri7"i9;o
> (om#%$o $! #tri7"i9;o ou simplesme!te #tri7"i9;o2 . a pri!$ipal ma!eira de arma4e!ar uma
i!+orma%&o !uma -ari6-el. Eua si!ta<e .:
Snome_da_varivelT 1Y SexpressoT
E<: 8ome :d aLe!o-e-ab
pre$o :d 1Q.OQ
1ua!t :d Q
total : pre$o l 1ua!t
imposto :d total l 17 / 100
> modo de +u!$io!ame!to :sem9!ti$a; de uma atribui%&o $o!siste:
1; !a a-alia%&o da e<press&o
2; !o arma4e!ame!to do -alor resulta!te !a -ari6-el 1ue apare$e ] es1uerda do $oma!do.
A seguir temos um e<emplo de um algoritmo utili4a!do o $oma!do de atribui%&o:
Algoritmo exemplo_comando_de_atriuio
Var preo_unit, preo_tot : real
quant : inteiro
Incio
preco_unit := 5.0
quant := 10
preo_tot := preo_unit * quant
Fim.
1(
L). Com#%$o $! S#R$# $! D#$o
>s (om#%$o $! #R$# $! $#$o s&o o meio pelo 1ual i!+orma%0es $o!tidas !a mem,ria dos $omputadores
s&o $olo$adas !os dispositi-os de sa?da2 para 1ue os usu6rios possam apre$i6-las.
I6 1uatro si!ta<es poss?-eis para esta i!stru%&o:
ESCREVA SvarivelT
E<: ESCREVA U
ESCREVA Slista_de_variveisT
E<: ESCREVA !ome2 e!dere$o2 $idade
ESCREVA SliteralT
E<: ESCREVA aAlgoritmo . o m6<imoob
ESCREVA SliteralTP SvarivelTP ))) PSliteralTP S*#ri'*!lT
E<: ESCREVA a3eu !ome .:b2 !ome2 ae meu e!dere%o .:b2 e!dere$o
Da1ui por dia!te2 ESCREVA ser6 $o!siderada uma pala-ra reser-ada e !&o mais poder6 ser utili4ada
$omo !ome de -ari6-el2 de modo 1ue toda a -e4 1ue +or e!$o!trada em algoritmos2 ser6 ide!ti+i$ada $omo um
$oma!do de sa?da de dados.
Cma lista_de_variveis . um $o!7u!to de !omes de -ari6-eis separados por -?rgulas. Cm literal .
simplesme!te um dado do tipo literal :stri!g ou $adeia de $ara$teres; delimitado por aspas.
A sem9!ti$a da i!stru%&o primiti-a de sa?da de dados . muito simples: os argume!tos do $oma!do s&o
e!-iados para o dispositi-o de sa?da. 8o $aso de uma lista de -ari6-eis2 o $o!teBdo de $ada uma delas . pes1uisado
!a mem,ria e e!-iado para o dispositi-o de sa?da. 8o $aso de argume!tos do tipo literal ou stri!g2 estes s&o
e!-iados diretame!te ao re+erido dispositi-o.
I6 ai!da a possibilidade de se misturar !omes de -ari6-eis $om literais !a lista de um mesmo $oma!do. >
e+eito obtido . basta!te Btil e i!teressa!te: a lista . lida da es1uerda para a direita e $ada eleme!to da mesma .
tratado separadame!teg se um !ome de -ari6-el +or e!$o!trado2 e!t&o a i!+orma%&o da mesma . $olo$ada !o
dispositi-o de sa?dag !o $aso de um literal2 o mesmo . es$rito diretame!te !o dispositi-o de sa?da.
A seguir temos um e<emplo de um algoritmo utili4a!do o $oma!do de sa?da de dados:
Algoritmo exemplo_comando_de_sada_de_dados
Var preo_unit, preo_tot : real
quant : inteiro
Incio
preco_unit := 5.0
quant := 10
preo_tot := preo_unit * quant
Escreva preo_tot
Fim.
L)I Com#%$o $! E%tr#$# $! D#$o
>s (om#%$o $! !%tr#$# $! $#$o s&o o meio pelo 1ual as i!+orma%0es dos usu6rios s&o tra!s+eridas para
a mem,ria dos $omputadores2 para 1ue possam ser usadas !os programas.
I6 duas si!ta<es poss?-eis para esta i!stru%&o:
LEIA SvarivelT
E<: LEIA U
LEIA Slista_de_variveisT
E<: LEIA !ome2 e!dere$o2 $idade
Da mesma +orma 1ue E(r!*#2 da1ui por dia!te L!i# ser6 tratada $omo uma pala-ra-reser-ada e !&o mais
poder6 ser usada $omo !ome -ari6-el em algoritmos. A lit#V$!V*#ri'*!i . um $o!7u!to de um ou mais !omes de
-ari6-eis separados por -?rgulas.
17
A sem9!ti$a da i!stru%&o de e!trada :ou leitura; de dados .2 de $erta +orma2 i!-ersa ] da i!stru%&o de
es$rita: os dados s&o +or!e$idos ao $omputador por meio de um dispositi-o de e!trada e arma4e!ados !as posi%0es
de mem,ria das -ari6-eis $u7os !omes apare$em !a lit#V$!V*#ri'*!i.
A seguir temos um e<emplo de um algoritmo utili4a!do o $oma!do de e!trada de dados:
Algoritmo exemplo_comando_de_entrada_de_dados
Var preo_unit, preo_tot : real
quant : inteiro
Incio
Leia preco_unit, quant
preo_tot := preo_unit * quant
Escreva preo_tot
Fim.
Cma preo$upa%&o $o!sta!te de um bom programador de-e ser a de $o!$eber um programa aamigo do
usu6riob. Esta preo$upa%&o . tradu4ida !o pla!e7ame!to de uma i%t!r&#(! (om o ""'rio :meio pelo 1ual um
programa e o usu6rio a$o!-ersamb; basta!te amig6-el. Em termos pr6ti$os2 isto se resume ] apli$a%&o de duas
regras b6si$as:
toda -e4 1ue um programa esti-er espera!do 1ue o usu6rio +or!e%a a ele um determi!ado dado
:opera%&o de leitura;2 ele de-e a!tes e!-iar uma me!sagem di4e!do ao usu6rio o 1ue ele de-e digitar2
por meio de uma i!stru%&o de sa?da de dadosg
a!tes de e!-iar 1ual1uer resultado ao usu6rio2 um programa de-e es$re-er uma me!sagem e<pli$a!do o
sig!i+i$ado do mesmo.
Estas medidas tor!am o di6logo e!tre o usu6rio e o programador muito mais +6$il.
A seguir temos um e<emplo do algoritmo a!terior2 utili4a!do as regras de $o!stru%&o de uma i!ter+a$e
amig6-el:
Algoritmo exemplo_interface_amigavel
Var preo_unit, preo_tot : real
quant : inteiro
Incio
Escreva Digite o preo unitrio:
Leia preco_unit
Escreva Digite a quantidade:
Leia quant
preo_tot := preo_unit * quant
Escreva Preo total: , preo_tot
Fim.
L)F F"%9:! M#t!m'ti(#
A4S :<; /etor!a o -alor absoluto de uma e<press&o
ARCTAN :<; /etor!a o ar$o de ta!ge!te do argume!to utili4ado
COS :r; /etor!a o -alor do $o-se!o
E?P :r; /etor!a o -alor e<po!e!$ial
FRAC :r; /etor!a a parte +ra$io!6ria
LN :r; /etor!a o logaritmo !atural
PI /etor!a o -alor de *
SIN :r; /etor!a o -alor do se!o
SZR :r; /etor!a o par9metro ele-ado ao 1uadrado.
SZRT :r; /etor!a a rai4 1uadrada
1O
8em todas as +u!%0es 1ue !e$essitamos est&o pro!tas e ]s -e4es . !e$ess6rio utili4ar uma +,rmula
e1ui-ale!te:
[
?
Y E?P > LN > [ @ \ ? @
!
"
Y E?P > LN > [ @ \ > + - ? @@
LOG :<; Y LN > U @ - LN > +/ @

1'
M) ESTRUTURAS DE CONTROLE DO FLU?O DE E?ECUO
At. o mome!to os algoritmos estudados utili4am ape!as i!stru%0es primiti-as de atribui%&o2 e de e!trada e
sa?da de dados. Zual1uer $o!7u!to de dados +or!e$ido a um algoritmo destes ser6 submetido ao mesmo $o!7u!to de
i!stru%0es2 e<e$utadas sempre !a mesma se1_#!$ia.
8o e!ta!to2 !a pr6ti$a muitas -e4es . !e$ess6rio e<e$utar a%0es di-ersas em +u!%&o dos dados +or!e$idos
ao algoritmo. Em outras pala-ras2 depe!de!do do $o!7u!to de dados de e!trada do algoritmo2 de-e-se e<e$utar um
$o!7u!to di+ere!te de i!stru%0es. Al.m disso2 pode ser !e$ess6rio e<e$utar um mesmo $o!7u!to de i!stru%0es um
!Bmero repetido de -e4es. Em resumo . !e$ess6rio $o!trolar o +lu<o de e<e$u%&o das i!stru%0es :a se1_#!$ia em
1ue as i!stru%0es s&o e<e$utadas !um algoritmo; em +u!%&o dos dados +or!e$idos $omo e!trada do mesmo.
De a$ordo $om o modo $omo o $o!trole do +lu<o de i!stru%0es de um algoritmo . +eito2 as estruturas
b6si$as de $o!trole s&o $lassi+i$adas em:
Estruturas se1_e!$iais
Estruturas de de$is&o
Estruturas de repeti%&o
M)+ Com#%$o Com0oto
Cm (om#%$o (om0oto . um $o!7u!to de 4ero ou mais $oma!dos :ou i!stru%0es; simples2 $omo
atribui%0es e i!stru%0es primiti-as de e!trada ou sa?da de dados2 ou alguma das $o!stru%0es aprese!tadas !este
$ap?tulo.
Este $o!$eito . basta!te simples e ser6 Btil e $o!-e!ie!te !os ite!s segui!tes2 !a de+i!i%&o das estruturas
b6si$as de $o!trole de e<e$u%&o.
M). Etr"t"r# S!]^!%(i#l
8a estrutura se1_e!$ial os $oma!dos de um algoritmo s&o e<e$utados !uma se1_#!$ia pr.-estabele$ida.
"ada $oma!do . e<e$utado some!te ap,s o t.rmi!o do $oma!do a!terior.
Cma estrutura se1_e!$ial . delimitada pelas pala-ras-reser-adas I%R(io e Fim e $o!t.m basi$ame!te
$oma!dos de atribui%&o2 $oma!dos de e!trada e $oma!dos de sa?da. >s algoritmos do $ap?tulo a!terior s&o
algoritmos 1ue utili4am uma B!i$a estrutura se1_e!$ial.
Cm algoritmo purame!te se1_e!$ial . a1uele $u7a e<e$u%&o . e+etuada em ordem as$e!de!te dos !Bmeros
1ue ide!ti+i$am $ada passo. A passagem de um passo ao segui!te . !atural e autom6ti$a2 e $ada passo . e<e$utado
uma B!i$a -e4.
M)I Etr"t"r# $! D!(i;o
8este tipo de estrutura o +lu<o de i!stru%0es a ser seguido . es$olhido em +u!%&o do resultado da a-alia%&o
de uma ou mais $o!di%0es. Cma (o%$i9;o . uma e<press&o l,gi$a.
A $lassi+i$a%&o das estruturas de de$is&o . +eita de a$ordo $om o !Bmero de $o!di%0es 1ue de-em ser
testadas para 1ue se de$ida 1ual o $ami!ho a ser seguido. Eegu!do esta $lassi+i$a%&o2 t#m-se 3 tipos de estruturas
de de$is&o:
Estrutura de De$is&o Eimples :#e $$$ ento;
Estrutura de De$is&o "omposta :#e $$$ ento $$$ seno;
Estrutura de De$is&o 3Bltipla do )ipo Es$olha :Escolha $$$ Caso $$$ #eno;
>s algoritmos purame!te se1_e!$iais podem ser usados !a solu%&o de um gra!de !Bmero de problemas2
por.m e<istem problemas 1ue e<igem o uso de alter!ati-as de a$ordo $om as e!tradas do mesmo.
20
8estes algoritmos2 as situa%0es s&o resol-idas atra-.s de passos $u7a e<e$u%&o . subordi!ada a uma
$o!di%&o. Assim2 o algoritmo $o!ter6 passos 1ue s&o e<e$utados some!te se determi!adas $o!di%0es +orem
obser-adas.
Cm algoritmo em 1ue se tem a e<e$u%&o de determi!ados passos subordi!ada a uma $o!di%&o .
de!omi!ado #lgoritmo (om !l!9;o.
M)I)+ Etr"t"r# $! D!(i;o Sim0l! > Se ... ento @
8esta estrutura uma B!i$a $o!di%&o :e<press&o l,gi$a; . a-aliada. Depe!de!do do resultado desta
a-alia%&o2 um $oma!do ou $o!7u!to de $oma!dos ser&o e<e$utados :se a a-alia%&o +or -erdadeira; ou !&o ser&o
e<e$utados :se a a-alia%&o +or +alsa;.
I6 duas si!ta<es poss?-eis para a estrutura de de$is&o simples:
SE ScondioT ENTO Scomando_nicoT
E<: SE U f 10 ENTO Es$re-a aU . maior 1ue 10b
SE ScondioT ENTO
INNCIO
Scomando_compostoT
FIM
E<: SE U f 10 ENTO
INNCIO
$o!t :d $o!t e 1
soma :d soma e <
Es$re-a aU . maior 1ue 10b
FIM
A sem9!ti$a desta $o!stru%&o . a segui!te: a $o!di%&o . a-aliada:
A Ee o resultado +or -erdadeiro2 e!t&o o comando_nico ou o $o!7u!to de $oma!dos :comando_composto;
delimitados pelas pala-ras-reser-adas in!cio e "im ser&o e<e$utados. Ao t.rmi!o de sua e<e$u%&o o +lu<o do
algoritmo prossegue pela i!stru%&o segui!te ] $o!stru%&o2 ou se7a2 o primeiro $oma!do ap,s o comando_nico ou
a pala-ra-reser-ada "im.
A 8o $aso da $o!di%&o ser +alsa2 o +lu<o do algoritmo prossegue pela i!stru%&o segui!te ] $o!stru%&o2 ou
se7a2 o primeiro $oma!do ap,s o comando_nico ou a pala-ra-reser-ada "im2 sem e<e$utar o comando_nico ou
o $o!7u!to de $oma!dos :comando_composto; e!tre as pala-ras-reser-adas in!cio e "im.
E<emplo de algoritmo 1ue l# um !Bmero e es$re-e se o mesmo . maior 1ue 10:
Algoritmo exemplo_estrutura_de_deciso_simples
Var X : inteiro
Incio
Leia X
Se X > 10 Ento Escreva X maior que 10
Fim.
M)I). Etr"t"r# $! D!(i;o Com0ot# > Se ... ento ... seno @
8esta estrutura uma B!i$a $o!di%&o :e<press&o l,gi$a; . a-aliada. Ee o resultado desta a-alia%&o +or
-erdadeiro2 um $oma!do ou $o!7u!to de $oma!dos ser&o e<e$utados. "aso $o!tr6rio2 ou se7a2 1ua!do o resultado
da a-alia%&o +or +also2 um outro $oma!do ou um outro $o!7u!to de $oma!dos ser&o e<e$utados.
I6 duas si!ta<es poss?-eis para a estrutura de de$is&o $omposta:
SE ScondioT ENTO Scomando_nico_1T
SENO Scomando_nico_2T
E<: SE U f 100 ENTO Es$re-a aU . maior 1ue 100b
SENO Es$re-a aU !&o . maior 1ue 100b
SE ScondioT ENTO
INNCIO
21
Scomando_composto_1T
FIM
SENO
INNCIO
Scomando_composto_2T
FIM
E<: SE U f 100 ENTO
INNCIO
$o!tha :d $o!tha e 1
somaha :d somaha e <
Es$re-a aU . maior 1ue 100b
FIM
SENO
INNCIO
$o!thb :d $o!thb e 1
somahb :d somahb e <
Es$re-a aU !&o . maior 1ue 100b
FIM
A sem9!ti$a desta $o!stru%&o . a segui!te: a $o!di%&o . a-aliada:
A Ee o resultado +or -erdadeiro2 e!t&o o comando_nico_1 ou o $o!7u!to de $oma!dos
:comando_composto_1; delimitados pelas pala-ras-reser-adas in!cio e "im ser&o e<e$utados. Ao t.rmi!o de sua
e<e$u%&o o +lu<o do algoritmo prossegue pela i!stru%&o segui!te ] $o!stru%&o2 ou se7a2 o primeiro $oma!do ap,s o
comando_nico_2 ou a pala-ra-reser-ada "im do comando_composto_2.
A 8os $asos em 1ue a $o!di%&o . a-aliada $omo +alsa2 o comando_nico_2 ou o $o!7u!to de $oma!dos
:comando_composto_2; delimitados pelas pala-ras-reser-adas in!cio e "im ser&o e<e$utados. Ao t.rmi!o de sua
e<e$u%&o o +lu<o do algoritmo prossegue pela i!stru%&o segui!te ] $o!stru%&o2 ou se7a2 o primeiro $oma!do ap,s o
comando_nico_2 ou a pala-ra-reser-ada "im do comando_composto_2.
E<emplo de algoritmo 1ue l# um !Bmero e es$re-e se o mesmo . ou !&o maior 1ue 100:
Algoritmo exemplo_estrutura_de_deciso_composta
Var X : inteiro
Incio
Leia X
Se X > 100 Ento Escreva X maior que 100
Seno Escreva X no maior que 100
Fim.
8os algoritmos2 a $orreta +ormula%&o de $o!di%0es2 isto .2 e<press0es l,gi$as2 . de +u!dame!tal
import9!$ia2 -isto 1ue as estruturas de sele%&o s&o baseadas !elas. As di-ersas +ormula%0es das $o!di%0es podem
le-ar a algoritmos disti!tos. "o!sidera!do o problema:
%&ado um par de valores x, #, 'ue representam as coordenadas de um ponto no plano, determinar o
'uadrante ao 'ual pertence o ponto, ou se est so(re um dos ei"os cartesianos$)
A solu%&o do problema $o!siste em determi!ar todas as $ombi!a%0es de x e # para as $lasses de -alores
positi-os2 !egati-os e !ulos.
>s algoritmos podem ser baseados em estruturas $o!$ate!adas uma em se1_#!$ia a outra ou em estruturas
a!i!hadas uma de!tro da outra2 de a$ordo $om a +ormula%&o da $o!di%&o.
> algoritmo a seguir utili4a estruturas $o!$ate!adas.
Algoritmo estruturas_concatenadas
Var x, y : inteiro
Incio
Ler x, y
Se x=0 e y=0 Ento Escrever Ponto na origem
Se x=0 e y<>0 Ento Escrever Ponto sobre o eixo y
Se x<>0 e y=0 Ento Escrever Ponto sobre o eixo x
22
Se x>0 e y>0 Ento Escrever Ponto no quandrante 1
Se x<0 e y>0 Ento Escrever Ponto no quandrante 2
Se x<0 e y<0 Ento Escrever Ponto no quandrante 3
Se x>0 e y<0 Ento Escrever Ponto no quandrante 4
Fim.
> algoritmo a seguir utili4a estruturas a!i!hadas ou e!$adeadas.
Algoritmo estruturas_aninhadas
Var x, y : inteiro
Incio
Ler x, y
Se x<>0
Ento Se y=0
Ento Escrever Ponto sobre o eixo x
Seno Se x>0
Ento Se y>0
Ento Escrever Ponto no quandrante 1
Seno Escrever Ponto no quandrante 4
Seno Se y>0
Ento Escrever Ponto no quandrante 2
Seno Escrever Ponto no quandrante 3
Seno Se y=0
Ento Escrever Ponto na origem
Seno Escrever Ponto sobre o eixo y
Fim.
As estruturas $o!$ate!adas tem a -a!tagem de tor!ar o algoritmo mais leg?-el2 +a$ilita!do a $orre%&o do
mesmo em $aso de erros. As estruturas a!i!hadas ou e!$adeadas tem a -a!tagem de tor!ar o algoritmo mais r6pido
pois s&o e+etuados me!os testes e me!os $ompara%0es2 o 1ue resulta !um me!or !Bmero de passos para $hegar ao
+i!al do mesmo.
8ormalme!te se usa estruturas $o!$ate!adas !os algoritmos de-ido ] +a$ilidade de e!te!dime!to das
mesmas e estruturas a!i!hadas ou e!$adeadas some!te !os $asos em 1ue seu uso . +u!dame!tal.
23
M)I)I Etr"t"r# $! D!(i;o MQlti0l# $o Ti0o E(ol2# > $scol%a ... caso ... seno @
Este tipo de estrutura . uma ge!erali4a%&o da $o!stru%&o S!2 o!de some!te uma $o!di%&o era a-aliada e
dois $ami!hos podiam ser seguidos. 8a estrutura de de$is&o do tipo E(ol2# pode ha-er uma ou mais $o!di%0es a
serem testadas e um $oma!do di+ere!te asso$iado a $ada uma destas.
A si!ta<e da $o!stru%&o de E(ol2# .:
ESCOLHA
CASO Scondio_1T
Scomando_composto_1T
CASO Scondio_2T
Scomando_composto_2T
)))
CASO Scondio_nT
Scomando_composto_nT
SENO
Scomando_composto_sT
FIM
Eeu +u!$io!ame!to . o segui!te: ao e!trar-se !uma $o!stru%&o do tipo E(ol2#2 a condio_1 . testada: se
+or -erdadeira2 o comando_composto_1 . e<e$utado e ap,s seu t.rmi!o2 o +lu<o de e<e$u%&o prossegue pela
primeira i!stru%&o ap,s o +i!al da $o!stru%&o :"im;g se a condio_1 +or +alsa2 a condio_2 . testada: se esta +or
-erdadeira2 o comando_composto_2 . e<e$utado e ao seu t.rmi!o2 a e<e$u%&o prossegue !ormalme!te pela
i!stru%&o segui!te ao +i!al da $o!stru%&o :"im;. > mesmo ra$io$?!io . este!dido a todas as $o!di%0es da $o!stru%&o.
8o $aso em 1ue todas as $o!di%0es s&o a-aliadas $omo +alsas2 o comando_composto_s :$orrespo!de!te ao S!%;o
da $o!stru%&o; . e<e$utado.
Cm $aso parti$ular desta $o!stru%&o . a1uele em 1ue o comando_composto_s !&o $o!t.m !e!huma
i!stru%&o. sto o$orre !as situa%0es 1ue !&o se dese7a e+etuar !e!huma a%&o 1ua!do todas as $o!di%0es s&o +alsas.
Assim2 pode-se dispe!sar o uso do S!%;o !a $o!stru%&o E(ol2#.
Cm e<emplo de apli$a%&o desta $o!stru%&o . o algoritmo para rea7ustar o sal6rio de a$ordo $om a +u!%&o.
Ee +or t.$!i$o2 aume!tar o sal6rio Q0p2 se +or gere!te2 aume!tar 30p e se +or outro $argo2 aume!tar 20p.
Algoritmo exemplo_estrutura_do_tipo_escolha
Var salrio, salrio_reaj : real
prof: caracter[20]
Incio
Leia salrio, prof
Escolha
Caso prof = Tcnico
salrio_reaj := 1.5 * salrio
Caso prof = Gerente
salrio_reaj := 1.3 * salrio
Seno
salrio_reaj := 1.2 * salrio
Fim
Escreva Salrio Reajustado = , salrio_reaj
Fim.
2J
M)F Etr"t"r# $! R!0!ti9;o
E&o muito $omu!s as situa%0es em 1ue se dese7a repetir um determi!ado tre$ho de um programa um $erto
!Bmero de -e4es. *or e<emplo2 pode-se $itar o $aso de um algoritmo 1ue $al$ula a soma dos !Bmeros impares e!tre
Q00 e 1000 ou e!t&o um algoritmo 1ue es$re-e os !Bmeros maiores 1ue 0 e!1ua!to a sua soma !&o ultrapasse
1000.
As estruturas de repeti%&o s&o muitas -e4es $hamadas de L#9o ou tamb.m de Loo0.
A $lassi+i$a%&o das estruturas de repeti%&o . +eito de a$ordo $om o $o!he$ime!to pr.-io do !Bmero de
-e4es 1ue o $o!7u!to de $oma!dos ser6 e<e$utado. Assim os L#9o se di-idem em:
L#9o Co%t#$o2 1ua!do se $o!he$e pre-iame!te 1ua!tas -e4es o $oma!do $omposto !o i!terior da
$o!stru%&o ser6 e<e$utadog
L#9o Co%$i(io%#i2 1ua!do !&o se $o!he$e de a!tem&o o !Bmero de -e4es 1ue o $o!7u!to de
$oma!dos !o i!terior do la%o ser6 repetido2 pelo +ato do mesmo estar amarrado a uma $o!di%&o su7eita ]
modi+i$a%&o pelas i!stru%0es do i!terior do la%o.
)odo algoritmo 1ue possui um ou mais de seus passos repetidos um determi!ado !Bmero de -e4es
de!omi!a-se #lgoritmo (om r!0!ti9;o.
"om a utili4a%&o de estruturas de repeti%&o para a elabora%&o de algoritmos2 tor!a-se !e$ess6rio o uso de
dois tipos de -ari6-eis para a resolu%&o de di-ersos tipos de problemas: *#ri'*!i (o%t#$or# e *#ri'*!i
#("m"l#$or#.
Cma *#ri'*!l (o%t#$or# . uma -ari6-el 1ue re$ebe um -alor i!i$ial2 geralme!te 0 :4ero; a!tes do i!?$io de
uma estrutura de repeti%&o2 e . i!$reme!tada !o i!terior da estrutura de um -alor $o!sta!te2 geralme!te 12 $o!+orme
o e<emplo abai<o:
...
cont := 0
<estrutura_de_repetio>
...
cont := cont + 1
...
<fim_da_estrutura_de_repetio>
...
Cma *#ri'*!l #("m"l#$or# . uma -ari6-el 1ue re$ebe um -alor i!i$ial2 geralme!te 0 :4ero; a!tes do i!?$io
de uma estrutura de repeti%&o2 e . i!$reme!tada !o i!terior da estrutura de um -alor -ari6-el2 geralme!te a -ari6-el
usada !a estrutura de $o!trole2 $o!+orme o e<emplo abai<o:
...
soma := 0
<estrutura_de_repetio_com_varivel_x>
...
soma := soma + x
...
<fim_da_estrutura_de_repetio>
...
2Q
M)F)+ L#9o Co%t#$o & 'ara ... "aa (
>s la%os $o!tados s&o Bteis 1ua!do se $o!he$e pre-iame!te o !Bmero e<ato de -e4es 1ue se dese7a e<e$utar
um determi!ado $o!7u!to de $oma!dos. E!t&o2 este tipo de la%o !ada mais . 1ue uma estrutura dotada de
me$a!ismos para $o!tar o !Bmero de -e4es 1ue o $orpo do la%o :ou se7a2 o $oma!do $omposto em seu i!terior; .
e<e$utado.
I6 duas si!ta<es poss?-eis usadas em algoritmos para os la%os $o!tados:
PARA SvarivelT DE Sin!cioT ATG S"inalT FAA Scomando_nicoT
E<.: PARA i DE 1 ATG 10 FAA ESCREVER i2 a < 7 d b2 i l 7
PARA SvarivelT DE Sin!cioT ATG S"inalT FAA
INNCIO
Scomando_compostoT
FIM
E<.: soma :d 0
PARA i DE 1 ATG 10 FAA
INNCIO
soma :d soma e i
ESCREVER i2 a < 7 d b2 i l 7
ESCREVER aEoma a$umulada d b2 soma
FIM
A sem9!ti$a do la%o $o!tado . a segui!te: !o i!?$io da e<e$u%&o da $o!stru%&o o -alor in!cio . atribu?do ]
-ari6-el var. A seguir2 o -alor da -ari6-el var . $omparado $om o -alor "inal. Ee var +or maior 1ue "inal2 e!t&o o
$oma!do $omposto !&o . e<e$utado e a e<e$u%&o do algoritmo prossegue pelo primeiro $oma!do segui!te ao
comando_nico ou ] pala-ra-reser-ada "im 1ue delimita o +i!al da $o!stru%&o. *or outro lado2 se o -alor de var
+or me!or ou igual a "inal2 e!t&o o $oma!do $omposto !o i!terior da $o!stru%&o . e<e$utado e2 ao +i!al do mesmo a
-ari6-el var . i!$reme!tada em 1 u!idade. 5eito isso2 retor!a-se ] $ompara%&o e!tre var e "inal e repete-se o
pro$esso at. 1ue var te!ha um -alor maior 1ue "inal2 1ua!do o la%o . +i!ali4ado e a e<e$u%&o do algoritmo
prossegue pela i!stru%&o imediatame!te segui!te ] $o!stru%&o.
E<iste uma $o!di%&o espe$ial em 1ue a $o!tagem de-e ser de +orma de$res$e!te2 o!de o -alor a -ari6-el .
de$reme!tado em uma u!idade. A si!ta<e deste la%o . a segui!te:
PARA SvarivelT DE Sin!cioT ATG S"inalT PASSO C+ FAA
INNCIO
Scomando_compostoT
FIM
E<emplo de um algoritmo 1ue es$re-e a tabuada de um !Bmero espe$?+i$o:
Algoritmo tabuada
Var i, tab, num : inteiro
Incio
Escrever Tabuada:
Ler tab
Escrever At que nmero:
Ler num
Para i de 1 At num Faa
Incio
Escrever i, x , tab, = , i * tab
Fim
Fim.
2(
M)F). L#9o Co%$i(io%#i
L#9o (o%$i(io%#i s&o a1ueles $u7o $o!7u!to de $oma!dos em seu i!terior . e<e$utado at. 1ue uma
determi!ada $o!di%&o se7a satis+eita. Ao $o!tr6rio do 1ue a$o!te$e !os la%os $o!tados2 !os la%os $o!di$io!ais !&o
se sabe de a!tem&o 1ua!tas -e4es o $orpo do la%o ser6 e<e$utado.
As $o!stru%0es 1ue impleme!tam la%os $o!di$io!ais mais $omu!s !as li!guage!s de programa%&o
moder!as s&o:
E%]"#%to - la%o $o!di$io!al $om teste !o i!?$io
R!0it# - la%o $o!di$io!al $om teste !o +i!al
8os la%os $o!di$io!ais a -ari6-el 1ue . testada2 ta!to !o i!?$io 1ua!to !o +i!al do la%o2 de-er sempre estar
asso$iada a um $oma!do 1ue a atuali4e !o i!terior do la%o. "aso isso !&o o$orra2 o programa +i$ar6 repeti!do
i!de+i!idame!te este la%o2 gera!do uma situa%&o $o!he$ida $omo ala%o i!+i!itob.
M)F).)+ L#9o Co%$i(io%#i (om T!t! %o I%R(io & $n)uanto ... "aa (
"ara$teri4a-se por uma estrutura 1ue e+etua um teste l,gi$o !o i!?$io de um la%o2 -eri+i$a!do se . permitido
ou !&o e<e$utar o $o!7u!to de $oma!dos !o i!terior do la%o.
A si!ta<e . mostrada a seguir:
ENZUANTO ScondioT FAA
INNCIO
Scomando_compostoT
FIM
Eua sem9!ti$a . a segui!te: ao i!?$io da $o!stru%&o E%]"#%to a $o!di%&o . testada. Ee seu resultado +or
+also2 e!t&o o $oma!do $omposto !o seu i!terior !&o . e<e$utado e a e<e$u%&o prossegue !ormalme!te pela
i!stru%&o segui!te ] pala-ra-reser-ada "im 1ue ide!ti+i$a o +i!al da $o!stru%&o.
Ee a $o!di%&o +or -erdadeira o $oma!do $omposto . e<e$utado e ao seu t.rmi!o retor!a-se ao teste da
$o!di%&o. Assim2 o pro$esso a$ima ser6 repetido !%]"#%to a $o!di%&o testada +or -erdadeira. Zua!do esta +or
+alsa2 o +lu<o de e<e$u%&o prossegue !ormalme!te pela i!stru%&o segui!te ] pala-ra-reser-ada "im 1ue ide!ti+i$a o
+i!al da $o!stru%&o.
Cma -e4 de!tro do $orpo do la%o2 a e<e$u%&o some!te aba!do!ar6 o mesmo 1ua!do a $o!di%&o +or +alsa. >
usu6rio deste tipo de $o!stru%&o de-e estar ate!to ] !e$essidade de 1ue em algum mome!to a $o!di%&o de-er6 ser
a-aliada $omo +alsa. "aso $o!tr6rio2 o programa perma!e$er6 i!de+i!idame!te !o i!terior do la%o :la%o i!+i!ito;.
8este tipo de la%o $o!di$io!al a -ari6-el a ser testada de-e possuir um -alor asso$iado a!tes da $o!stru%&o
do la%o.
> algoritmo 1ue es$re-e os !Bmeros maiores 1ue 0 e!1ua!to a sua soma !&o ultrapasse 1000 . um e<emplo
deste tipo de la%o:
Algoritmo exemplo_enquanto
Var soma, num : inteiro
Incio
soma := 0
num := 1
En!"anto soma < 1000 Faa
Incio
Escreva num
num := num + 1
soma := soma + num
Fim
Fim.
27
M)F).). L#9o Co%$i(io%#i (om T!t! %o Fi%#l & *epita ... at+ )ue (
"ara$teri4a-se por uma estrutura 1ue e+etua um teste l,gi$o !o +i!al de um la%o2 -eri+i$a!do se . permitido
ou !&o e<e$utar !o-ame!te o $o!7u!to de $oma!dos !o i!terior do mesmo.
A si!ta<e . mostrada a seguir:
REPITA
Scomando_compostoT
ATG ZUE ScondioT
Eeu +u!$io!ame!to . basta!te pare$ido ao da $o!stru%&o E%]"#%to. > $oma!do . e<e$utado uma -e4. A
seguir2 a $o!di%&o . testada: se ela +or +alsa2 o $oma!do $omposto . e<e$utado !o-ame!te e este pro$esso . repetido
at. 1ue a $o!di%&o se7a -erdadeira2 1ua!do e!t&o a e<e$u%&o prossegue pelo $oma!do imediatame!te segui!te ao
+i!al da $o!stru%&o.
Esta $o!stru%&o di+ere da $o!stru%&o E%]"#%to pelo +ato de o $oma!do $omposto ser e<e$utado "m# ou
mais -e4es :pelo me!os uma -e4;2 ao passo 1ue !a $o!stru%&o E%]"#%to o $oma!do $omposto . e<e$utado U!ro ou
mais -e4es :possi-elme!te !e!huma;. sto a$o!te$e por1ue !a $o!stru%&o R!0it# o teste . +eito !o +i!al da
$o!stru%&o2 ao $o!tr6rio do 1ue a$o!te$e !a $o!stru%&o E%]"#%to2 o!de o teste da $o!di%&o . e+etuado !o i!?$io da
mesma.
A $o!stru%&o R!0it# tamb.m di+ere da $o!stru%&o E%]"#%to !o 1ue se re+ere ] i!i$iali4a%&o da -ari6-el2
-isto 1ue !a $o!stru%&o R!0it# a -ari6-el pode ser i!i$iali4ada ou lida de!tro do la%o.
> algoritmo 1ue l# um !Bmero !&o determi!ado de -e4es um -alor do te$lado e es$re-e o -alor e o seu
1uadrado2 at. 1ue se7a digitado um -alor par2 . um e<emplo desta estrutura:
Algoritmo exemplo_repita
Var num : inteiro
Incio
#e$ita
Ler num
Escrever num, - , num * num
At !"e num mod 2 = 0
Fim.
M)K Etr"t"r# $! Co%trol! E%(#$!#$# o" A%i%2#$#
Cm a!i!hame!to ou e!$adeame!to . o +ato de se ter 1ual1uer um dos tipos de $o!stru%&o aprese!tados
a!teriorme!te de!tro do $o!7u!to de $oma!dos :$oma!do $omposto; de uma outra $o!stru%&o.
Em 1ual1uer tipo de a!i!hame!to . !e$ess6rio 1ue a $o!stru%&o i!ter!a este7a $ompletame!te embutida !a
$o!stru%&o e<ter!a.
A +igura 7.1 a seguir ilustra a!i!hame!tos -6lidos e i!-6lidos.
2O
Fig"r# M)+ E<emplos de a!i!hame!tos :a; -6lidos e :(; i!-6lidos
:(; :a;
H) ESTRUTURAS DE DADOS HOMOGNEAS
As estruturas de dados homog#!eas permitem agrupar di-ersas i!+orma%0es de!tro de uma mesma -ari6-el.
Este agrupame!to o$orrer6 obede$e!do sempre ao mesmo tipo de dado2 e . por esta ra4&o 1ue estas estruturas s&o
$hamadas homog#!eas.
A utili4a%&o deste tipo de estrutura de dados re$ebe di-ersos !omes2 $omo: -ari6-eis i!de<adas2 -ari6-eis
$ompostas2 -ari6-eis subs$ritas2 arra!7os2 -etores2 matri4es2 tabelas em mem,ria ou arra*s. >s !omes mais usados
e 1ue utili4aremos para estruturas homog#!eas s&o: matri4es :ge!.ri$o; e -etores :matri4 de uma li!ha e -6rias
$olu!as;.
H)+ M#triU! $! Um# Dim!%;o o" V!tor!
Este tipo de estrutura em parti$ular . tamb.m de!omi!ado por pro+issio!ais da 6rea $omo matri4es
u!idime!sio!ais. Eua utili4a%&o mais $omum est6 -i!$ulada ] $ria%&o de tabelas. "ara$teri4a-se por ser de+i!ida
uma B!i$a -ari6-el -i!$ulada dime!sio!ada $om um determi!ado tama!ho. A dime!s&o de uma matri4 . $o!stitu?da
por $o!sta!tes i!teiras e positi-as. >s !omes dados ]s matri4es seguem as mesmas regras de !omes utili4ados para
i!di$ar as -ari6-eis simples.
A si!ta<e do $oma!do de de+i!i%&o de -etores . a segui!te:
Var
Snome_da_varivelT 1 MATRI_ ` Scoluna_inicialT )) Scoluna_"inalT a DE Stipo_de_dadoT
E<.: VAR
3 : MATRI_ j1 .. 10k DE INTEIRO
H)+)+ O0!r#9:! 4'i(# (om M#triU! $o Ti0o V!tor
Do mesmo modo 1ue a$o!te$e $om -ari6-eis simples2 tamb.m . poss?-el operar $om -ari6-eis i!de<adas
:matri4es;. "o!tudo !&o . poss?-el operar diretame!te $om o $o!7u!to $ompleto2 mas $om $ada um de seus
$ompo!e!tes isoladame!te.
> a$esso i!di-idual a $ada $ompo!e!te de um -etor . reali4ado pela espe$i+i$a%&o de sua posi%&o !a
mesma por meio do seu ?!di$e. 8o e<emplo a!terior +oi de+i!ida uma -ari6-el M $apa4 de arma4e!ar 10 !Bmero
i!teiros. *ara a$essar um eleme!to deste -etor de-e-se +or!e$er o !ome do mesmo e o ?!di$e do $ompo!e!te
dese7ado do -etor :um !Bmero de 1 a 102 !este $aso;.
*or e<emplo2 M`+a i!di$a o primeiro eleme!to do -etor2 M`.a i!di$a o segu!do eleme!to do -etor e M`+/a
i!di$a o Bltimo eleme!to do -etor.
*orta!to2 !&o . poss?-el operar diretame!te sobre -etores $omo um todo2 mas ape!as sobre seus
$ompo!e!tes2 um por -e4. *or e<emplo2 para somar dois -etores . !e$ess6rio somar $ada um de seus $ompo!e!tes
dois a dois. Da mesma +orma as opera%0es de atribui%&o2 leitura e es$rita de -etores de-em ser +eitas eleme!to a
eleme!to.
H)+)+)+ Atri7"i9;o $! Um# M#triU $o Ti0o V!tor
8o $ap?tulo sobre as i!stru%0es primiti-as2 o $oma!do de atribui%&o +oi de+i!ido $omo:
Snome_da_varivelT 1Y SexpressoT
8o $aso de -etores :-ari6-eis i!de<adas;2 al.m do !ome da -ari6-el de-e-se !e$essariame!te +or!e$er
tamb.m o ?!di$e do $ompo!e!te do -etor o!de ser6 arma4e!ado o resultado da a-alia%&o da e<press&o.
E<.: 3j1k 1Y 1Q
3j2k 1Y 1Q0
3jQk 1Y 10
3j10k 1Y 3Q
2'
H)+)+). L!it"r# $! D#$o $! Um# M#triU $o Ti0o V!tor
A leitura de um -etor . +eita passo a passo2 um de seus $ompo!e!tes por -e42 usa!do a mesma si!ta<e da
i!stru%&o primiti-a da e!trada de dados2 o!de al.m do !ome da -ari6-el2 de-e ser e<pli$itada a posi%&o do
$ompo!e!te lido:
LEIA Snome_da_varivelT ` S!ndiceT a
Cma obser-a%&o importa!te a ser +eita . a utili4a%&o da $o!stru%&o P#r# a +im de e+etuar a opera%&o de
leitura repetidas -e4es2 em $ada uma delas le!do um determi!ado $ompo!e!te do -etor. De +ato esta $o!stru%&o .
muito $omum 1ua!do se opera $om -etores2 de-ido ] !e$essidade de se reali4ar uma mesma opera%&o $om os
di-ersos $ompo!e!tes dos mesmos. 8a -erdade2 s&o raras as situa%0es 1ue se dese7a operar isoladame!te $om um
B!i$o $ompo!e!te do -etor.
> algoritmo a seguir e<empli+i$a a opera%&o de leitura de um -etor:
Algoritmo exemplo_leitura_de_vetor
Var
numeros : matriz[1..10] de inteiro
i : inteiro
Incio
Para i de 1 at 10 %aa
Incio
Leia numeros[i]
Fim
Fim.
H)+)+)I E(rit# $! D#$o $! Um# M#triU $o Ti0o V!tor
A es$rita de um -etor obede$e ] mesma si!ta<e da i!stru%&o primiti-a de sa?da de dados e tamb.m -ale
lembrar 1ue2 al.m do !ome do -etor2 de-e-se tamb.m espe$i+i$ar por meio do ?!di$e o $ompo!e!te a ser es$rito:
ESCREVA Snome_da_varivelT ` S!ndiceT a
> algoritmo a seguir e<empli+i$a a opera%&o de leitura e es$rita de um -etor2 utili4a!do a $o!stru%&o P#r#:
Algoritmo exemplo_escrita_de_vetor
Var
numeros : matriz[1..10] de inteiro
i : inteiro
Incio
Para i de 1 at 10 %aa
Incio
Leia numeros[i]
Fim
Para i de 1 at 10 %aa
Incio
Escreva numeros[i]
Fim
Fim.
Cm e<emplo mais i!teressa!te . mostrado a seguir2 o!de um -etor de de4 !Bmeros . lido e guardado !o
-etor %"m!ro. *aralelame!te2 a soma destes !Bmeros . $al$ulada e ma!tida !a -ari6-el om#2 1ue posteriorme!te
. es$rita.
Algoritmo exemplo_escrita_de_vetor_com_soma
Var
numeros : matriz[1..10] de inteiro
i : inteiro
soma : inteiro
Incio
soma := 0
Para i de 1 at 10 %aa
Incio
30
Leia numeros[i]
soma := soma + numeros[i]
Fim
Para i de 1 at 10 %aa
Incio
Escreva numeros[i]
Fim
Escrever Soma = , soma
Fim.
H)+). E8!m0lo $! A0li(#9;o $! V!tor!
> espe$tro de apli$a%&o de -etores em algoritmos . muito e<te!so2 mas !ormalme!te os -etores s&o usados
em duas tare+as muito importa!tes !o pro$essame!to de dados: 0!]"i# e (l#i&i(#9;o.
A 0!]"i# $o!siste !a -eri+i$a%&o da e<ist#!$ia de um -alor de!tro de um -etor. )ro$a!do em miBdos2
pes1uisar um -etor $o!siste em pro$urar de!tre seus $ompo!e!tes um determi!ado -alor.
A (l#i&i(#9;o de um -etor $o!siste em arra!7ar seus $ompo!e!tes !uma determi!ada ordem2 segu!do um
$rit.rio espe$?+i$o. *or e<emplo2 este $rit.rio pode ser a ordem al+ab.ti$a de um -etor de dados $ara$ter2 ou e!t&o a
ordem $res$e!te ou de$res$e!te para um -etor de dados !um.ri$os. I6 -6rios m.todos de $lassi+i$a%&o2 mas o mais
$o!he$ido . o m3to$o $# 7ol2# de $lassi+i$a%&o :4"77l! Sort;.
H)+).)+ O M3to$o $# 4ol2# $! Cl#i&i(#9;o
Este m.todo !&o . o mais e+i$ie!te2 mas . um dos mais populares de-ido ] sua simpli$idade.
A +iloso+ia b6si$a deste m.todo $o!siste em a-arrerb o -etor2 $ompara!do os eleme!tos -i4i!hos e!tre si.
"aso este7am +ora de ordem2 os mesmos tro$am de posi%&o e!tre si. *ro$ede-se assim at. o +i!al do -etor. 8a
primeira a-arredurab -eri+i$a-se 1ue o Bltimo eleme!to do -etor 76 est6 !o seu de-ido lugar :!o $aso de orde!a%&o
$res$e!te2 ele . o maior de todos;. A segu!da a-arredurab . a!6loga ] primeira e -ai at. o pe!Bltimo eleme!to. Este
pro$esso . repetido at. 1ue se7a +eito um !Bmero de -arreduras igual ao !Bmero de eleme!tos a serem orde!ados
me!os um. Ao +i!al do pro$esso o -etor est6 $lassi+i$ado segu!do o $rit.rio es$olhido.
> e<emplo a seguir ilustra o algoritmo bubble sort para orde!ar Q0 !Bmero i!teiros em ordem $res$e!te:
Algoritmo Bubble_Sort
Var
numeros : matriz [1..50] de inteiros
aux, i, j: inteiro
Incio
Para i de 1 at 50 %aa
Incio
Ler numeros[i]
Fim
j := 50
En!"anto j > 1 %aa
Incio
Para i de 1 at j-1 %aa
Incio
Se numeros[i] > numeros[i+1] Ento
Incio
aux := numeros[i];
numeros[i] := numeros[j];
numeros[j] := aux;
Fim
Fim
j:=j-1;
Fim
Escreva &vetor ordenado:
Para i de 1 at 50 %aa
Incio
31
Escrever numeros[i]
Fim
Fim.
Cma outra -aria%&o deste algoritmo2 $om as mesmas $ara$ter?sti$as utili4a duas $o!stru%0es P#r#2 +a4e!do
a $ompara%&o i!i$ia!do do primeiro eleme!to at. o pe!Bltimo2 $ompara!do $om o imediatame!te segui!te at. o
Bltimo eleme!to:
Algoritmo Variao_do_Bubble_Sort
Var
numeros : matriz [1..50] de inteiros
aux, i, j: inteiro
Incio
Para i de 1 at 50 %aa
Incio
Ler numeros[i]
Fim
Para i de 1 at 49 %aa
Incio
Para j de i + 1 at 50 %aa
Incio
Se numeros[i] > numeros[j] Ento
Incio
aux := numeros[i];
numeros[i] := numeros[j];
numeros[j] := aux;
Fim
Fim
Fim
Escreva &vetor ordenado:
Para i de 1 at 50 %aa
Incio
Escrever numeros[i]
Fim
Fim.
*odemos obser-ar tamb.m 1ue para orde!ar o -etor em ordem de$res$e!te basta i!-erter o si!al de
$ompara%&o !o teste da $o!di%&o l,gi$a S! %"m!ro`ia T %"m!ro`Oa2 para:
S! !umerosjik i !umerosj7k
32
H). M#triU! (om M#i $! Um# Dim!%;o
Este tipo de estrutura tamb.m tem sua pri!$ipal utili4a%&o -i!$ulada ] $ria%&o de tabelas. "ara$teri4a-se
por ser de+i!ida uma B!i$a -ari6-el -i!$ulada dime!sio!ada $om um determi!ado tama!ho. A dime!s&o de uma
matri4 . $o!stitu?da por $o!sta!tes i!teiras e positi-as. >s !omes dados ]s matri4es seguem as mesmas regras de
!omes utili4ados para i!di$ar as -ari6-eis simples.
A si!ta<e do $oma!do de de+i!i%&o de matri4es de duas dime!s0es . a segui!te:
Var
Snome_da_varivelT 1 MATRI_ `Slin%a_inicialT )) Slin%a_"inalT 2 Scoluna_inicialT ))
Scoluna_"inalT a DE Stipo_de_dadoT
E<.: VAR
3 : MATRI_ j1 .. Q 2 1 .. 10k DE INTEIRO
)amb.m . poss?-el de+i!ir matri4es $om -6rias dime!s0es2 por e<emplo:
E<.: VAR
N : MATRI_ j1 .. Jk DE INTEIRO
O : MATRI_ j1 .. Q0 2 1 .. Jk DE INTEIRO
P : MATRI_ j1 .. Q2 1 .. Q0 2 1 .. Jk DE INTEIRO
Z : MATRI_ j1 .. 3 2 1 .. Q2 1 .. Q0 2 1 .. Jk DE INTEIRO
R : MATRI_ j1 .. 2 2 1 .. 3 2 1 .. Q2 1 .. Q0 2 1 .. Jk DE INTEIRO
S : MATRI_ j1 .. 2 2 1 .. 2 2 1 .. 3 2 1 .. Q2 1 .. Q0 2 1 .. Jk DE INTEIRO
A utilidade de matri4es desta +orma . muito gra!de. 8o e<emplo a$ima2 $ada matri4 pode ser utili4ada para
arma4e!ar uma 1ua!tidade maior de i!+orma%0es:
a matri4 N pode ser utili4ada para arma4e!ar J !otas de um alu!o
a matri4 O pode ser utili4ada para arma4e!ar J !otas de Q0 alu!os.
a matri4 P pode ser utili4ada para arma4e!ar J !otas de Q0 alu!os de Q dis$ipli!as.
a matri4 Z pode ser utili4ada para arma4e!ar J !otas de Q0 alu!os de Q dis$ipli!as2 de 3 turmas.
a matri4 R pode ser utili4ada para arma4e!ar J !otas de Q0 alu!os de Q dis$ipli!as2 de 3 turmas2 de 2
$ol.gios.
a matri4 S pode ser utili4ada para arma4e!ar J !otas de Q0 alu!os de Q dis$ipli!as2 de 3 turmas2 de 2
$ol.gios2 de 2 $idades
H).)+ O0!r#9:! 4'i(# (om M#triU! $! D"# Dim!%:!
Do mesmo modo 1ue a$o!te$e $om os -etores2 !&o . poss?-el operar diretame!te $om o $o!7u!to $ompleto2
mas $om $ada um de seus $ompo!e!tes isoladame!te.
> a$esso i!di-idual a $ada $ompo!e!te de uma matri4 . reali4ado pela espe$i+i$a%&o de sua posi%&o !a
mesma por meio do seu ?!di$e. 8o e<emplo a!terior +oi de+i!ida uma -ari6-el M $apa4 de arma4e!ar 10 !Bmero
i!teiros em $ada uma das Q li!has. *ara a$essar um eleme!to desta matri4 de-e-se +or!e$er o !ome da mesma e o
?!di$e da li!ha e da $olu!a do $ompo!e!te dese7ado da matri4 :um !Bmero de 1 a Q para a li!ha e um !Bmero de 1 a
10 para a $olu!a2 !este $aso;.
*or e<emplo2 M`+P+a i!di$a o primeiro eleme!to da primeira li!ha da matri42 M`+P.a i!di$a o segu!do
eleme!to da primeira li!ha da matri42 M`+P+/a i!di$a o Bltimo eleme!to da primeira li!ha da matri4 e M`KP+/a
i!di$a o Bltimo eleme!to da Bltima li!ha da matri4
Da mesma +orma $omo -etores2 !&o . poss?-el operar diretame!te sobre matri4es $omo um todo2 mas
ape!as sobre seus $ompo!e!tes2 um por -e4. *or e<emplo2 para somar duas matri4es . !e$ess6rio somar $ada um
de seus $ompo!e!tes dois a dois. Da mesma +orma as opera%0es de atribui%&o2 leitura e es$rita de matri4es de-em
ser +eitas eleme!to a eleme!to.
33
H).)+)+ Atri7"i9;o $! Um# M#triU $! D"# Dim!%:!
8a atribui%&o de matri4es2 da mesma +orma 1ue !os -etores2 al.m do !ome da -ari6-el de-e-se
!e$essariame!te +or!e$er tamb.m o ?!di$e do $ompo!e!te da matri4 o!de ser6 arma4e!ado o resultado da a-alia%&o
da e<press&o. > ?!di$e re+ere!te ao eleme!to . $omposto por ta!tas i!+orma%0es 1ua!to o !Bmero de dime!s0es da
matri4. 8o $aso de ter duas dime!s0es2 o primeiro !Bmero se re+ere ] li!ha e o segu!do !Bmero se re+ere ] $olu!a
da matri4 em 1ue se e!$o!tra a i!+orma%&o
E<.: 3j121k 1Y 1Q
3j1210k 1Y 10
3j32Qk 1Y 20
3jQ210k 1Y 3Q
H).)+). L!it"r# $! D#$o $! Um# M#triU $! D"# Dim!%:!
A leitura de uma matri4 . +eita passo a passo2 um de seus $ompo!e!tes por -e42 usa!do a mesma si!ta<e da
i!stru%&o primiti-a da e!trada de dados2 o!de al.m do !ome da -ari6-el2 de-e ser e<pli$itada a posi%&o do
$ompo!e!te lido:
LEIA Snome_da_varivelT ` S!ndice_1TP ))) P S !ndice_nT a
Cma obser-a%&o importa!te a ser +eita . a utili4a%&o de $o!stru%0es P#r# a!i!hadas ou e!$adeada a +im de
e+etuar a opera%&o de leitura repetidas -e4es2 em $ada uma delas le!do um determi!ado $ompo!e!te da matri4. Esta
$o!stru%&o . muito $omum 1ua!do se opera $om matri4es2 de-ido ] !e$essidade de se reali4ar uma mesma
opera%&o $om os di-ersos $ompo!e!tes das mesmas.
> algoritmo a seguir e<empli+i$a a opera%&o de leitura de uma matri4:
Algoritmo exemplo_leitura_de_matriz
Var
numeros : matriz[1..5, 1..10] de inteiro
i, j : inteiro
Incio
Para i de 1 at 5 %aa
Incio
Para j de 1 at 10 %aa
Incio
Leia numeros[i,j]
Fim
Fim
Fim.
H).)+)I E(rit# $! D#$o $! Um# M#triU $! D"# Dim!%:!
A es$rita de uma matri4 obede$e ] mesma si!ta<e da i!stru%&o primiti-a de sa?da de dados e tamb.m -ale
lembrar 1ue2 da mesma +orma 1ue $om -etores2 al.m do !ome da matri42 de-e-se tamb.m espe$i+i$ar por meio do
?!di$e o $ompo!e!te a ser es$rito:
ESCREVA Snome_da_varivelT ` S!ndice_1T P ))) P S!ndice_nT a
> algoritmo a seguir e<empli+i$a a opera%&o de leitura e es$rita de uma matri42 utili4a!do as $o!stru%0es
P#r# a!i!hadas ou e!$adeadas:
Algoritmo exemplo_escrita_de_matriz
Var
numeros : matriz[1..5,1..10] de inteiro
i, j : inteiro
Incio
Para i de 1 at 5 %aa
Incio
Para i de 1 at 10 %aa
Incio
Leia numeros[i,j]
Fim
Fim
3J
Para i de 1 at 5 %aa
Incio
Para j de 1 at 10 %aa
Incio
Escreva numeros[i,j]
Fim
Fim
Fim.
Cm e<emplo mais i!teressa!te . mostrado a seguir2 o!de uma matri4 de Q li!has por 10 $olu!as . lida e
guardada !a matri4 %"m!ro. A seguir . e+etuada e es$rita a soma dos eleme!tos da 2q li!ha e tamb.m a soma dos
eleme!tos da 3q $olu!a
Algoritmo exemplo_escrita_de_matriz_com_soma
Var
numeros : matriz[1..5,1..10] de inteiro
i, j : inteiro
somal2, somac3 : inteiro
Incio
Para i de 1 at 5 %aa
Incio
Para i de 1 at 10 %aa
Incio
Leia numeros[i,j]
Fim
Fim
Para i de 1 at 5 %aa
Incio
Para i de 1 at 10 %aa
Incio
Escreva numeros[i,j]
Fim
Fim
somal2 := 0
somac3 := 0
Para j de 1 at 10 %aa
Incio
somal2 := somal2 + numeros[2,j]
Fim
Para i de 1 at 5 %aa
Incio
somac3 := somac3 + numeros[i,3]
Fim
Escrever Soma Linha 2 = , somal2
Escrever Soma Coluna 3 = , somac3
Fim.
3Q
J) SU4ALGORITMOS
A $omple<idade dos algoritmos est6 i!timame!te ligada ] da apli$a%&o a 1ue se desti!am. Em geral2
problemas $ompli$ados e<igem algoritmos e<te!sos para sua solu%&o.
Eempre . poss?-el di-idir problemas gra!des e $ompli$ados em problemas me!ores e de solu%&o mais
simples. Assim2 pode-se solu$io!ar $ada um destes pe1ue!os problemas separadame!te2 $ria!do algoritmos para tal
:subalgoritmos;. *osteriorme!te2 pela 7ustaposi%&o destes subalgoritmos elabora-se aautomati$ame!teb um
algoritmo mais $omple<o e 1ue solu$io!a o problema origi!al. Esta metodologia de trabalho . $o!he$ida $omo
M3to$o $! R!&i%#m!%to S"(!i*o2 $u7o estudo . assu!to de $ursos a-a!%ados sobre t.$!i$as de programa%&o.
Cm "7#lgoritmo . um !ome dado a um tre$ho de um algoritmo mais $omple<o e 1ue2 em geral2 e!$erra
em si pr,prio um peda%o da solu%&o de um problema maior A o algoritmo a 1ue ele est6 subordi!ado. Este $o!$eito
. esse!$ial !uma $i#!$ia basta!te re$e!te: a E!ge!haria de Eo+tware.
Em resumo2 os subalgoritmos s&o importa!tes !a:
subdi-is&o de algoritmos $omple<os2 +a$ilita!do o seu e!te!dime!tog
estrutura%&o de algoritmos2 +a$ilita!do pri!$ipalme!te a dete$%&o de erros e a do$ume!ta%&o de
sistemasg e
modulari4a%&o de sistemas2 1ue +a$ilita a ma!ute!%&o de so+twares e a reutili4a%&o de subalgoritmos 76
impleme!tados.
A id.ia da reutili4a%&o de so+tware tem sido adotada por muitos grupos de dese!-ol-ime!to de sistemas de
$omputador2 de-ido ] e$o!omia de tempo e trabalho 1ue propor$io!am. Eeu pri!$?pio . o segui!te: um $o!7u!to de
algoritmos desti!ado a solu$io!ar uma s.rie de tare+as basta!te $orri1ueiras . dese!-ol-ido e -ai se!do aume!tado
$om o passar do tempo2 $om o a$r.s$imo de !o-os algoritmos. A este $o!7u!to d6-se o !ome de 7i7liot!(#. 8o
dese!-ol-ime!to de !o-os sistemas2 pro$ura-se ao m6<imo basear sua $o!$ep%&o em subalgoritmos 76 e<iste!tes !a
bibliote$a2 de modo 1ue a 1ua!tidade de so+tware realme!te !o-o 1ue de-e ser dese!-ol-ido . mi!imi4ada.
3uitas -e4es os subalgoritmos podem ser Bteis para e!$errar em si uma $erta se1_#!$ia de $oma!dos 1ue .
repetida -6rias -e4es !um algoritmo. 8estes $asos2 os subalgoritmos propor$io!am uma dimi!ui%&o do tama!ho de
algoritmos maiores. A!tigame!te2 esta propriedade era tida $omo a pri!$ipal utilidade dos subalgoritmos.
J)+ M!(#%imo $! F"%(io%#m!%to
Cm algoritmo $ompleto . di-idido !um #lgoritmo 0ri%(i0#l e di-ersos "7#lgoritmo :ta!tos 1ua!tos
+orem !e$ess6rios e/ou $o!-e!ie!tes;. > #lgoritmo 0ri%(i0#l . a1uele por o!de a e<e$u%&o do algoritmo sempre se
i!i$ia. Este pode e-e!tualme!te i!-o$ar os demais subalgoritmos.
> $orpo do algoritmo pri!$ipal . sempre o Bltimo tre$ho do pseudo$,digo de um algoritmo. As de+i!i%0es
dos subalgoritmos est&o sempre $olo$adas !o tre$ho ap,s a de+i!i%&o das -ari6-eis globais e a!tes do $orpo do
algoritmo pri!$ipal:
ALGORITMO Snome do algoritmoT
V#r Sde"inio das variveis globaisT
Sde"ini,es dos subalgoritmosT
I%i(io
Scorpo do algoritmo principalT
Fim)
Dura!te a e<e$u%&o do algoritmo pri!$ipal2 1ua!do se e!$o!tra um $oma!do de i!-o$a%&o de um
subalgoritmo2 a e<e$u%&o do mesmo . i!terrompida. A seguir2 passa-se ] e<e$u%&o dos $oma!dos do $orpo do
subalgoritmo. Ao seu t.rmi!o2 retoma-se a e<e$u%&o do algoritmo 1ue o $hamou :!o $aso2 o algoritmo pri!$ipal; !o
po!to o!de +oi i!terrompida :$oma!do de $hamada do subalgoritmo; e prossegue-se pela i!stru%&o imediatame!te
segui!te.
8ote2 tamb.m2 1ue . poss?-el 1ue um subalgoritmo $hame outro atra-.s do mesmo me$a!ismo.
3(
J). D!&i%i9;o $! S"7#lgoritmo
A de+i!i%&o de um subalgoritmo $o!sta de:
um (#7!9#l2o2 o!de est&o de+i!idos o %om! e o ti0o do subalgoritmo2 bem $omo os seus 0#rXm!tro e
*#ri'*!i lo(#ig
um (or0o2 o!de se e!$o!tram as i!stru%0es :$oma!dos; do subalgoritmo.
> %om! de um subalgoritmo . o !ome simb,li$o pelo 1ual ele . $hamado por outro algoritmo.
> (or0o do subalgoritmo $o!t.m as i!stru%0es 1ue s&o e<e$utadas $ada -e4 1ue ele . i!-o$ado.
V#ri'*!i lo(#i s&o a1uelas de+i!idas de!tro do pr,prio subalgoritmo e s, podem ser utili4adas pelo
mesmo.
P#rXm!tro s&o $a!ais por o!de os dados s&o tra!s+eridos pelo algoritmo $hamador a um subalgoritmo2 e
-i$e--ersa. *ara 1ue possa i!i$iar a e<e$u%&o das i!stru%0es em seu $orpo2 um subalgoritmo ]s -e4es pre$isa
re$eber dados do algoritmo 1ue o $hamou e2 ao termi!ar sua tare+a2 o subalgoritmo de-e +or!e$er ao algoritmo
$hamador os resultados da mesma. Esta $omu!i$a%&o bidire$io!al pode ser +eita de dois modos 1ue ser&o estudados
mais ] +re!te: por meio de *#ri'*!i glo7#i ou por meio da 0##g!m $! 0#rXm!tro.
> ti0o de um subalgoritmo . de+i!ido em +u!%&o do !Bmero de -alores 1ue o subalgoritmo retor!a ao
algoritmo 1ue o $hamou. Eegu!do esta $lassi+i$a%&o2 os algoritmos podem ser de dois tipos:
&"%9:!2 1ue retor!am um2 e some!te um2 -alor ao algoritmo $hamadorg
0ro(!$im!%to2 1ue retor!am 4ero :!e!hum; ou mais -alores ao algoritmo $hamador.
8a realidade2 a tare+a desempe!hada por um subalgoritmo do tipo &"%9;o pode per+eitame!te ser +eita por
outro do tipo 0ro(!$im!%to :o primeiro . um $aso parti$ular deste;. Esta di+ere!$ia%&o . +eita por ra40es
hist,ri$as2 ou2 e!t&o2 pelo gra!de !Bmero de subalgoritmos 1ue se e!$ai<am !a $ategoria de &"%9:!.
J)I F"%9:!
> $o!$eito de F"%9;o . origi!6rio da id.ia de +u!%&o matem6ti$a :por e<emplo2 rai4 1uadrada2 se!o2
$osse!o2 ta!ge!te2 logaritmo2 e!tre outras;2 o!de um -alor . $al$ulado a partir de outro:s; +or!e$ido:s; ] +u!%&o.
A si!ta<e da de+i!i%&o de uma +u!%&o . dada a seguir:
FUNO SnomeT > Spar-metrosT @ Stipo_de_dadoT
VAR Svariveis locaisT
INNCIO
Scomando compostoT
FIM
)emos 1ue:
SnomeT . o !ome simb,li$o pelo 1ual a +u!%&o . i!-o$ada por outros algoritmosg
Spar-metrosT s&o os par9metros da +u!%&og
Stipo de dadoT . o tipo de dado da i!+orma%&o retor!ado pela +u!%&o ao algoritmo $hamadorg
Svariveis locaisT $o!siste !a de+i!i%&o das -ari6-eis lo$ais ] +u!%&o. Eua +orma . a!6loga ] da
de+i!i%&o de -ari6-eis !um algoritmog
Scomando compostoT . o $o!7u!to de i!stru%0es do $orpo da +u!%&o.
De!tro de um algoritmo2 o $oma!do de i!-o$a%&o de um subalgoritmo do tipo +u!%&o sempre apare$e
de!tro de uma e<press&o do mesmo tipo 1ue o do -alor retor!ado pela +u!%&o.
A i!-o$a%&o de uma +u!%&o . +eita pelo simples apare$ime!to do !ome da mesma2 seguido pelos
respe$ti-os par9metros e!tre par#!teses2 de!tro de uma e<press&o. A +u!%&o . e<e$utada e2 ao seu t.rmi!o2 o tre$ho
do $oma!do 1ue a i!-o$ou . substitu?do pelo -alor retor!ado pela mesma de!tro da e<press&o em 1ue se e!$o!tra2 e
a a-alia%&o desta prossegue !ormalme!te.
37
De!tro de uma +u!%&o2 e some!te !este $aso2 o $oma!do R!tor%! SexpressoT . usado para retor!ar o
-alor $al$ulado pela mesma. Ao e!$o!trar este $oma!do2 a e<press&o e!tre par#!teses . a-aliada2 a e<e$u%&o da
+u!%&o . termi!ada !este po!to e o -alor da e<press&o . retor!ado ao algoritmo $hamador. =ale lembrar 1ue uma
e<press&o pode ser uma simples $o!sta!te2 uma -ari6-el ou uma $ombi!a%&o das duas por meio de operadores.
Esta e<press&o de-e ser do mesmo tipo 1ue o -alor retor!ado pela +u!%&o.
> algoritmo a seguir . um e<emplo do emprego de +u!%&o para $al$ular o -alor de um !Bmero ele-ado ao
1uadrado.
Algoritmo Exemplo_de_funo
Var X, Y : real
F"no Quad(w : real) : real
Var Z : real
Inicio
Z := w * w
#etorne Z
Fim
Incio
Escreva "Digite um nmero
Leia X
Y := Quad(X)
Escreva X, " elevado ao quadrado = ", Y
Fim.
Do e<emplo a!terior . importa!te !otar 1ue:
A a +u!%&o ZUAD toma P $omo par9metro do tipo real2 retor!a um -alor do tipo real e possui K $omo uma
-ari6-el lo$al realg
A o $oma!do de i!-o$a%&o da +u!%&o ZUAD apare$e !o meio de uma e<press&o2 !o $oma!do de atribui%&o
de!tro do algoritmo pri!$ipal.
3O
J)F Pro(!$im!%to
Cm pro$edime!to . um subalgoritmo 1ue retor!a 4ero :!e!hum; ou mais -alores ao :sub;algoritmo
$hamador. Estes -alores s&o sempre retor!ados por meio dos par9metros ou de -ari6-eis globais2 mas !u!$a
e<pli$itame!te2 $omo !o $aso de +u!%0es. *orta!to2 a $hamada de um pro$edime!to !u!$a surge !o meio de
e<press0es2 $omo !o $aso de +u!%0es. *elo $o!tr6rio2 a $hamada de pro$edime!tos s, . +eita em $oma!dos isolados
de!tro de um algoritmo2 $omo as i!stru%0es de e!trada :Deia; e sa?da :Es$re-a; de dados.
A si!ta<e da de+i!i%&o de um pro$edime!to .:
PROCEDIMENTO SnomeT > Spar-metrosT @
V#r Svariveis locaisT
I%i(io
Scomando compostoT
Fim)
)emos 1ue:
SnomeT . o !ome simb,li$o pelo 1ual o pro$edime!to . i!-o$ado por outros algoritmosg
Spar-metrosT s&o os par9metros do pro$edime!tog
Svariveis locaisT s&o as de+i!i%0es das -ari6-eis lo$ais ao pro$edime!to. Eua +orma . a!6loga ] da
de+i!i%&o de -ari6-eis !um algoritmog
Scomando compostoT . o $o!7u!to de i!stru%0es do $orpo do pro$edime!to2 1ue . e<e$utado toda -e4
1ue o mesmo . i!-o$ado.
> e<emplo a seguir . um e<emplo simples2 o!de um pro$edime!to . usado para es$re-er o -alor das
$ompo!e!tes de um -etor.
Algoritmo Exemplo_procedimento
Var vet : matriz[1..10] de real
Procedimento ESC_VETOR()
Var i : inteiro
Inicio
Para i de 1 at 10 %aa
Incio
Escreva vet[i]
Fim
Fim
Procedimento LER_VETOR()
Var i : inteiro
Inicio
Para i de 1 at 10 %aa
Incio
Leia vet[i]
Fim
Fim
Inicio
LER_VETOR()
ESC_VETOR()
Fim.
8o e<emplo . $o!-e!ie!te obser-ar:
A a +orma de de+i!i%&o dos pro$edime!tos DE/h=E)>/: ; e EE"h=E)>/: ;2 1ue !&o possuem !e!hum
par9metro2 e usam a -ari6-el lo$al i para a-arrerb os $ompo!e!tes do -etor2 le!do e es$re-e!do um -alor por -e4g e
3'
A a +orma de i!-o$a%&o dos pro$edime!tos2 por meio do seu !ome2 seguido de seus e-e!tuais par9metros
:!o $aso2 !e!hum;2 !um $oma!do isolado de!tro do algoritmo pri!$ipal.
J)K V#ri'*!i Glo7#i ! Lo(#i
V#ri'*!i glo7#i s&o a1uelas de$laradas !o i!?$io de um algoritmo. Estas -ari6-eis s&o *iR*!i :isto .2
podem ser usadas; !o algoritmo pri!$ipal e por todos os demais subalgoritmos.
V#ri'*!i lo(#i s&o a1uelas de+i!idas de!tro de um subalgoritmo e2 porta!to2 some!te *iR*!i :utili46-eis;
de!tro do mesmo. >utros subalgoritmos2 ou mesmo o algoritmo pri!$ipal2 !&o podem utili46-las.
8o e<emplo a seguir s&o apli$ados estes $o!$eitos.
Algoritmo Exemplo_variveis_locais_e_globais
Var X : real
I : inteiro
F"no FUNC() : real
Var X : matriz[1..5] de inteiro
Y : caracter[10]
Inicio
...
Fim
Procedimento PROC
Var Y : 1gico
Inicio
...
X := 4 * X
I := I + 1
...
Fim
Incio
...
X := 3.5
...
Fim.
N importa!te !otar !o e<emplo a!terior 1ue:
as -ari6-eis ? e I s&o globais e -is?-eis a todos os subalgoritmos2 ] e<$e%&o da +u!%&o FUNC2 1ue
rede+i!e a -ari6-el ? lo$alme!teg
as -ari6-eis ? e [ lo$ais ao pro$edime!to FUNC !&o s&o -is?-eis ao algoritmo pri!$ipal ou ao
pro$edime!to PROC. A rede+i!i%&o lo$al do !ome simb,li$o ? $omo uma matri4jQk de i!teiro sobrep0e
:some!te de!tro da +u!%&o FUNC; a de+i!i%&o global de ? $omo uma -ari6-el do tipo realg
a -ari6-el [ de!tro do pro$edime!to PROC2 1ue . di+ere!te da1uela de+i!ida de!tro da +u!%&o FUNC2
. i!-is?-el +ora deste pro$edime!tog
a i!stru%&o ? 1Y H)K !o algoritmo pri!$ipal2 bem $omo as i!stru%0es ? 1Y F \ ? e I 1Y I W + de!tro do
pro$edime!to PROC2 atuam sobre as -ari6-eis globais ? e I.
J)L P#rXm!tro
*ar9metros s&o $a!ais pelos 1uais se estabele$e uma $omu!i$a%&o bidire$io!al e!tre um subalgoritmo e o
algoritmo $hamador :o algoritmo pri!$ipal ou outro subalgoritmo;. Dados s&o passados pelo algoritmo $hamador
ao subalgoritmo2 ou retor!ados por este ao primeiro por meio de par9metros.
J0
*ar9metros +ormais s&o os !omes simb,li$os i!trodu4idos !o $abe%alho de subalgoritmos2 usados !a
de+i!i%&o dos par9metros do mesmo. De!tro de um subalgoritmo trabalha-se $om estes !omes da mesma +orma
$omo se trabalha $om -ari6-eis lo$ais ou globais.
F"no Mdia(X, Y : real) : real
Inicio
#etorne (X + Y) / 2
Fim
8o e<emplo a!terior2 ? e [ s&o par9metros +ormais da +u!%&o M3$i#.
*ar9metros reais s&o a1ueles 1ue substituem os par9metros +ormais 1ua!do da $hamada de um
subalgoritmo. *or e<emplo2 o tre$ho segui!te de um algoritmo i!-o$a a +u!%&o 3.dia $om os par9metros reais O e
7 substitui!do os par9metros +ormais U e r.
Z := Mdia(8, 7)
Assim2 os par9metros +ormais s&o Bteis some!te !a de+i!i%&o :+ormali4a%&o; do subalgoritmo2 ao passo 1ue
os par9metros reais substituem-!os a $ada i!-o$a%&o do subalgoritmo. 8ote 1ue os par9metros reais podem ser
di+ere!tes a $ada i!-o$a%&o de um subalgoritmo.
J)M M!(#%imo $! P##g!m $! P#rXm!tro
"omo +oi -isto a!teriorme!te2 os par9metros reais substituem os +ormais !o ato da i!-o$a%&o de um
subalgoritmo. Esta substitui%&o . de!omi!ada passagem de par9metros e pode se dar segu!do dois me$a!ismos
disti!tos: passagem por -alor :ou por $,pia; ou passagem por re+er#!$ia.
J)M)+ P##g!m $! P#rXm!tro 0or V#lor
8a passagem de par9metros por -alor :ou por $,pia; o par9metro real . $al$ulado e uma $,pia de seu -alor
. +or!e$ida ao par9metro +ormal2 !o ato da i!-o$a%&o do subalgoritmo. A e<e$u%&o do subalgoritmo prossegue
!ormalme!te e todas as modi+i$a%0es +eitas !o par9metro +ormal !&o a+etam o par9metro real2 pois trabalha-se
ape!as $om uma $,pia do mesmo.
Algoritmo Exemplo_parametro_por_valor
Var X : inteiro
Procedimento PROC(Y : inteiro)
Incio
Y := Y + 1
Escreva "Durante Y = , Y
Fim
Incio
X := 1
Escreva "Antes X = , X
PROC(X)
Escreva "Depois X = ", X
Fim.
> algoritmo a!terior +or!e$e o segui!te resultado:
A!tes U d 1
Dura!te r d 2
Depois U d 1
sto $erti+i$a 1ue o pro$edime!to !&o alterou o -alor do par9metro real U dura!te sua e<e$u%&o.
Este tipo de a%&o . poss?-el por1ue2 !este me$a!ismo de passagem de par9metros2 . +eita uma reser-a de
espa%o em mem,ria para os par9metros +ormais2 para 1ue !eles se7a arma4e!ada uma $,pia dos par9metros reais.
J1
J)M). P##g!m $! P#rXm!tro 0or R!&!r<%(i#
8este me$a!ismo de passagem de par9metros !&o . +eita uma reser-a de espa%o em mem,ria para os
par9metros +ormais. Zua!do um subalgoritmo $om par9metros passados por re+er#!$ia . $hamado2 o espa%o de
mem,ria o$upado pelos par9metros reais . $ompartilhado pelos par9metros +ormais $orrespo!de!tes. Assim2 as
e-e!tuais modi+i$a%0es +eitas !os par9metros +ormais tamb.m a+etam os par9metros reais $orrespo!de!tes.
Cm mesmo subalgoritmo pode utili4ar di+ere!tes me$a!ismos de passagem de par9metros2 para par9metros
disti!tos. *ara di+ere!$iar u!s dos outros2 $o!-e!$io!ou-se $olo$ar o pre+i<o VAR a!tes da de+i!i%&o dos
par9metros +ormais passados por re+er#!$ia. Ee por e<emplo um pro$edime!to tem o segui!te $abe%alho:
Procedimento PROC( X, Y : inteiro; Var Z : real; J: real)
E!t&o:
? e [ s&o par9metros +ormais do tipo i!teiro e s&o passados por -alorg
_ . um par9metro +ormal do tipo real passado por re+er#!$iag
5 . um par9metro +ormal do tipo real passado por -alor.
> e<emplo do item a!terior2 alterado para 1ue o par9metro [ do pro$edime!to se7a passado por re+er#!$ia2
tor!a-se:
Algoritmo Exemplo_parametro_por_referencia
Var X : inteiro
Procedimento PROC(Y : inteiro)
Incio
Y := Y + 1
Escreva "Durante Y = , Y
Fim
Incio
X := 1
Escreva "Antes X = , X
PROC(X)
Escreva "Depois X = ", X
Fim.
> resultado do algoritmo modi+i$ado .:
A!tes U d 1
Dura!te r d 2
Depois U d 2
"omo podemos obser-ar2 depois de $hamar o pro$edime!to $om o par9metro por re+er#!$ia o -alor origi!al
da -ari6-el +oi alterado.
J)H R!&i%#m!%to S"(!i*o
De a$ordo $om o modelo $as$ata2 o $i$lo de -ida de um so+tware $o!sta das segui!tes +ases: A!6lise de
re1uisitos2 Ar1uitetura geral2 *ro7eto detalhado2 *rograma%&o2 !tegra%&o e testes2 e ma!ute!%&o.
> M3to$o $! R!&i%#m!%to S"(!i*o para a elabora%&o de algoritmos dita 1ue um dado problema de-e
ser subdi-idido em problemas me!ores repetidame!te2 at. 1ue se7a poss?-el e!$o!trar um algoritmo :subalgoritmo
ou $oma!do $omposto; para resol-er $ada um destes subproblemas. Assim2 o algoritmo para resol-er o problema
origi!al ser6 $omposto pela $omposi%&o destes algoritmos.
> m.todo aprese!tado pode ser subdi-idido !a +ase de A%'li! To0CDob%2 1ue pro$ura resol-er o
problema a !?-el de subalgoritmos e $oma!dos $ompostos2 e !a +ase de Progr#m#9;o Etr"t"r#$#2 1ue detalha os
subalgoritmos e $oma!dos $ompostos at. o !?-el das i!stru%0es primiti-as e $o!stru%0es de $o!trole de +lu<o.
*or +im2 o uso do m.todo . -a!ta7oso de-ido ao seu est?mulo ] modulari4a%&o de sistemas2 1ue propor$io!a
a $ria%&o de programas $laros2 +6$eis de e!te!der e2 porta!to2 de ma!ute!%&o mais barata.
J2
PARTE III C LINGUAGEM DE PROGRAMAO
J3
+/) INTRODUO
> *as$al . uma li!guagem de programa%&o de alto !?-el e de +i!s ge!.ri$os2 deri-ada do Algol-(0. As suas
i!stru%0es s&o +ormadas por e<press0es do tipo alg.bri$o e por algumas pala-ras i!glesas2 tais $omo @EF82 E8D2
/EAD2 P/)E2 5 )IE82 /E*EA)2 PIDE2 D>2 et$. 8este aspe$to o *as$al assemelha-se a muitas outras
li!guage!s de alto !?-el. "o!tudo2 o *as$al $o!t.m ai!da algu!s aspe$tos B!i$os2 1ue +oram espe$i+i$ame!te
$o!$ebidos para estimular o uso de uma 0rogr#m#9;o !tr"t"r#$# - um m.todo orde!ado e dis$ipli!ado2 do 1ual
resultam programas $laros2 e+i$ie!tes e sem erros.
A desig!a%&o de *as$al +oi atribu?da em home!agem ao brilha!te $ie!tista e matem6ti$o +ra!$#s2 @laise
*as$al :1(23-1((2;2 1ue de!tre outros +eitos se desta$a a i!-e!%&o da primeira $al$uladora me$9!i$a.
A li!guagem *as$al +oi origi!alme!te dese!-ol-ida !o i!?$io dos a!os 70 por 8i$Glaus Pirth2 !a
C!i-ersidade ).$!i$a de Kuri1ue2 Eu?%a. > ob7eti-o origi!al +oi o de dese!-ol-er uma li!guagem dis$ipli!ada de
alto !?-el para e!si!ar programa%&o estruturada. Esta li!guagem dese!-ol-ida por Pirth . $o!he$ida $omo *as$al
*adr&o. 8os Estados C!idos2 +oi de+i!ido $o!7u!tame!te um padr&o o+i$ial para a li!guagem2 pelo Ameri$a!
8atio!al Eta!darts !stitute :A8E; e pelo !stitute o+ Ele$tri$al a!d Ele$tro!i$s E!gi!eers :EEE;. Este padr&o
o+i$ial . $o!he$ido $omo A8E *as$al. Em 1'O3 a @orla!d !ter!atio!al $ome%ou a $omer$iali4ar um $ompilador
*as$al relati-ame!te barato2 desig!ado por Tur(o +ascal2 para ser usado em $omputadores pessoais.
JJ
++) DADOS
++)+ El!m!%to $# Li%g"#g!m
8ormalme!te uma li!guagem de programa%&o possui dois tipos de eleme!tos: os eleme!tos de+i!idos pela
li!guagem e os eleme!tos de+i!idos pelo pr,prio usu6rio:
++)+)+ El!m!%to $!&i%i$o 0!l# li%g"#g!m1
++)+)+)+ L!tr# >#l&#%"m3ri(#@1
A at. K
a at. 4
++)+)+). DRgito >%"m3ri(o@1
0 at. '
++)+)+)I SRm7olo E0!(i#i
)odas as li!guage!s possuem s?mbolos espe$iais 1ue s&o di+ere!tes em $ada li!guagem2 mas 1ue tem a
mesma +i!alidade:
SRm7olo Sig%i&i(#$o
+ adio
- subtrao
* multiplicao
/ diviso
= comparao: igualdade
> comparao: maior que
< comparao: menor que
>= comparao: maior ou igual
<= comparao: menor ou igual
<> comparao: diferente
:= atribuio
( par!nteses
" ou (* in#cio de coment$rio
% ou * final de coment$rio
& separador
' demarcador de strings ou caracteres
++)+)+)F P#l#*r# R!!r*#$# o" P#l#*r# C2#*!
*ala-ras /eser-adas s&o s?mbolos 1ue possuem sig!i+i$ado de+i!ido !a li!guagem2 !&o pode!do ser
rede+i!idos ou usado $omo !ome de ide!ti+i$ador.
(bsolute and arra) begin
case const div do
do*nto else end e+ternal
file for for*ard function
goto if implementation in
inline interface interrupt label
JQ
mod nil not of
or pac,ed procedure program
record repeat set s-l
s-r string t-en to
t)pe unit until uses
var *-ile *it- +or
A li!guagem *as$al tem ai!da algu!s ide!ti+i$adores prede+i!idos pela li!guagem $o!he$idos $omo
I$!%ti&i(#$or! P#$r;o. *odem ser $o!sta!tes2 tipos2 -ari6-eis ou subprogramas :pro$edime!tos ou +u!%0es; e
podem ser es$ritos ta!to em mi!Bs$ulo $omo em maiBs$ulo:
abs arqtan boolean c-ar c-r cos
eof eoln e+p false input integer
ln ma+int odd ord output pred
read readln real reset re*rite run
sin sqr sqrt str succ te+t
true trunc *rite *riteln
++)+)+)K D!limit#$or!
>s eleme!tos da li!guagem :ide!ti+i$adores2 !Bmeros e s?mbolos espe$iais; de-em ser separados por pelo
me!os um dos segui!tes delimitadores: bra!$o2 +i!al de li!ha ou $ome!t6rio.
++)+). El!m!%to $!&i%i$o 0!lo U"'rio
++)+).)+ I$!%ti&i(#$or!
Cm ide!ti+i$ador . um s?mbolo de+i!ido pelo usu6rio 1ue pode ser um r,tulo :label;2 uma $o!sta!te2 um
tipo2 uma -ari6-el2 um !ome de programa ou subprograma :pro$edime!to ou +u!%&o;.
>s ide!ti+i$adores !ormalme!te de-em $ome%ar $om um $ara$tere al+ab.ti$o e !&o pode $o!ter espa%os em
bra!$o.
> !Bmero m6<imo de $ara$teres 1ue podem +ormar o ide!ti+i$ador -aria de $ompilador para $ompilador.
8o *AE"AD padr&o some!te os O primeiros $ara$teres s&o -6lidosg !o )C/@> *AE"AD pode-se usar
ide!ti+i$adores de at. 127 $ara$teres se!do todos sig!i+i$ati-os e !&o h6 disti!%&o e!tre maiBs$ulas e mi!Bs$ulas.
++)+).). Com!%t'rio
>s $ome!t6rios !&o tem +u!%&o !e!huma para o $ompilador e ser-e ape!as para aume!tar a legibilidade e
$lare4a do programa.
Cm $ome!t6rio . i!i$iado por c ou >\ e . e!$errado por d ou \@.
++)+).)I E%$!%t#9;o
A e!de!ta%&o tamb.m !&o tem !e!huma +u!%&o para o $ompilador e ser-e para tor!ar a listagem do
programa mais $lara da!do hierar1uia e estrutura ao programa.
++). Ti0o $! D#$o
Cm )ipo de Dado de+i!e o $o!7u!to de -alores 1ue uma -ari6-el pode assumir e as opera%0es 1ue podem
ser +eitas sobre ela.
)oda -ari6-el em um programa de-e ser asso$iada a um e some!te um tipo de dado. Esta asso$ia%&o . +eita
1ua!do a -ari6-el . de$larada !a parte de de$lara%&o de -ari6-eis do programa.
Cma -e4 de$larada uma -ari6-el de 1ual1uer tipo2 poderemos utili4ar um comando de atri(ui,o, tamb.m
$hamado de operador de atri(ui,o2 para arma4e!ar um -alor !a -ari6-el.
J(
++).)+ Ti0o 0r!$!&i%i$o 0!l# li%g"#g!m
>s programas em *as$al podem trabalhar $om dados e<pressos $omo -alores literais :tal $omo a
stri!g s-ual'uer Coisat ou o !Bmero Q; ou $omo -alores represe!tados simboli$ame!te por ide!ti+i$adores
:tais $omo as $o!sta!tes e -ari6-eis;.
Eem $o!siderar $omo o -alor do dado est6 e<presso2 -o$# de-e tomar $uidado para disti!guir os
di-ersos tipos de dados 1ue o )urbo *as$al re$o!he$e. A mistura de tipos de dados de modo !&o
apropriado resulta em erros em tempo de $ompila%&o.
> )urbo *as$al tem di-ersas $ategorias de tipos de dados padr&o2 dos 1uais os mais $omume!te
usados s&o:
)ipos !um.ri$os i!teiros
)ipos de !Bmeros reais
)ipos de $ara$tere e stri!g
)ipo @oolea!o
tipo intervalo de representao tamanho
s-ortint -./0 a ./1 . b)te
b)te 2 a /33 . b)te
integer -4/5160 a 4/5161 / b)tes (. palavra
*ord 2 a 635343 / b)tes (. palavra
longint -/5.7157045670 a /5.7157045671 7 b)tes (/ palavras
real /58 + .2
948
a .51 + .2
40
6 b)tes (4 palavras
single * .53 + .2
973
a 457 + .2
40
7 b)tes (/ palavras
double * 352 + .2
94/7
a .51 + .2
420
0 b)tes (7 palavras
e+tended * .58 + .2
9783.
a .5. + .2
784/
.2 b)tes (3 palavras
comp * -85/ + .2
.0
a 85/ + .2
.0
0 b)tes (7 palavras
c-ar os caracteres da tabela (:;<< . b)te
boolean =>?@ ou A(B:@ . b)te
string tipo estruturado composto por
um conCunto de elementos tipo
c-ar
quantidade de caracteres + . b)te
l os tipos assi!alados some!te podem ser utili4ados em m61ui!as $om $o-pro$essador matem6ti$o :O0O72
O02O72 O03O72 O0JO7; ou $om $hip pro$essador O0JO( DU ou superior.
*or e$o!omia2 $o!-e!i#!$ia2 e+i$i#!$ia e pre$is&o2 o )urbo *as$al +or!e$e uma ampla -ariedade de
tipos i!teiros e de !Bmeros reais. De-emos ter uma espe$ial ate!%&o para de$idir 1ual . o tipo apropriado
para uma determi!ada apli$a%&o. Algumas -e4es2 a -alidade dos resultados !Bmeri$os de um programa
depe!de da es$olha $orreta dos tipos de dados !um.ri$os. Em geral2 de-emos a!alisar $uidadosame!te as
$ara$teristi$as dos tipos de dados 1ue de$idiremos usar.
++).)+)+ Ti0o I%t!iro
> )urbo *as$al o+ere$e $i!$o tipos i!teiros: 8)EFE/2 P>/D2 D>8F8)2 EI>/)8) e
@r)E. Este tipos +or!e$em +ai<as amplas de -alores de !Bmeros i!teiros. Zua!to mais ampla a +ai<a2
maior a mem,ria !e$ess6ria para os -alores de um determi!ado tipo: os -alores em D>8F8) !e$essitam
de 1uatro bHtesg -alores em 8)EFE/ e P>/D !e$essitam de dois bHtes2 e os -alores em EI>/)8) e
@r)E !e$essitam de um bHte $ada. Cm i!teiro !&o possui parte de$imal2 e . sempre per+eitame!te pre$iso
de!tro da sua +ai<a. A1ui est&o as +ai<as dos $i!$o tipos i!teiros:
J7
++).)+). Ti0o $! NQm!ro R!#i
Cm !Bmero real pode $o!ter d?gitos ta!to a!tes $omo depois do po!to de$imal2 e pode estar su7eito
aos limites da pre$is&o limitada. Este tipo tamb.m . $o!he$ido $omo ponto .lutuante, pois o )urbo *as$al
arma4e!a os !Bmeros reais em duas partes disti!tas: os d?gitos sig!i+i$ati-os :algumas -e4es $hamados de
mantissa/ e o e<poe!te2 1ue i!di$a a posi%&o $orreta do po!to de$imal.
Ee o e1uipame!to !&o possuir um $o-pro$essador aritm.ti$o e +or um mi$ro $om pro$essador JO(
E< ou i!+erior s, estar6 dispo!?-el o tipo /EAD. "aso $o!tr6rio e se a op%&o 0umeric processing esti-er
a7ustada para O0<O72 e<istir&o 1uatro tipos !um.ri$os adi$io!ais: ">3* e tr#s tipos reais -E8FDE2
D>C@DE e EU)E8DED - 1ue o+ere$em uma -ariedade de +ai<as e pre$is0es para as apli$a%0es em
!Bmeros reais. "om a op%&o Emulatio! !o seu estado de+ault >! :ligada;2 o )urbo *as$al emula as
opera%Qes do O0O7 se o $hip !&o esti-er prese!te !o seu sistema. Ee a op%&o Emulatio! esti-er >++
:desligada;2 uma apli$a%&o em !Bmero real !&o ser6 e<e$utada sem o $hip de $o-pro$essame!to !um.ri$o.
++).)+)I C#r#(t!r! ! Stri%g
Cm $ara$tere . uma letra2 d?gito2 po!tua%&o2 ou outro eleme!to do $o!7u!to de $ara$teres do @3
*". 8a mem,ria do $omputador2 $ada $ara$tere . realme!te arma4e!ado $omo um $,digo de um B!i$o
bHte i!teiro2 de > a 2QQ. Este $,digo de+i!ido $omo AE" :Ameri$a! Eta!dard "ode +or !+ormatio!
!ter$ha!ge;2 de+i!e o $o!7u!to de $ara$teres dispo!?-eis2 pro-ide!$ia!do um e1ui-ale!te !um.ri$o para
$ada um dos 2Q( $ara$teres.
A maior parte da primeira metade de $,digo AE" - !Bmeros de > a 127 - . usada $omo padr&o
por todos os $omputadores pessoais. Ela +or!e$e os $,digos para as letras maiBs$ulas de A a K :(Q a '0;g
as letras mi!Bs$ulas de a a 4 :'7 a122;g os d?gitos de > a ':JO a Q7;g os si!ais de po!tua%&o2 $ara$teres de
$o!trole e assim por dia!te. A segu!da metade do $,digo AE"2 12O a 2QQ2 +or!e$e $ara$teres !&o-padr&o
1ue s&o +re1_e!teme!te impleme!tados de modo di+ere!te por di+ere!tes mar$as de $omputadores. 8o @3
*" e $ompat?-eis2 esses $,digos +or!e$em uma -ariedade de $ara$teres Bteis2 i!$lui!do letras de l?!guas
estra!geirasg s?mbolos t.$!i$os2 matem6ti$os e $ie!t?+i$osg e um $o!7u!to de $ara$teres gr6+i$os 1ue podem
ser $ombi!ados para $riar molduras2 padr0es2 image!s e sombreados para a tela !o modo te<to.
> ide!ti+i$ador padr&o "IA/ de+i!e !o )urbo *as$al as -ari6-eis do tipo $ara$tere. *or e<emplo2
a de$lara%&o =A/2 a seguir2 de+i!e uma -ari6-el "IA/ $hamada opcao_menu:
VAR
o0(#oVm!%"1 CHARe
Esta -ari6-el pode arma4e!ar e<atame!te um $ara$tere por -e4.
Cma string . uma se1_#!$ia de $ara$teres. > $omprime!to de uma stri!g . igual ao !Bmero de
$ara$teres 1ue ela $o!t.m. 8o )urbo *as$al2 o $omprime!to m6<imo de uma stri!g . de 2QQ $ara$teresg o
me!or $omprime!to de stri!g poss?-el . de 0 $ara$teres. Cma stri!g 1ue !&o possua $ara$teres . $hamada
de null ou va1ia$
A pala-ra reser-ada E)/8F de+i!e uma -ari6-el stri!g. *or e<emplo2 o $oma!do =A/2 a seguir2
de+i!e uma stri!g $hamada nome_cliente:
VAR
%om!V(li!%t!1 STRINGe
> $omprime!to m6<imo de uma -ari6-el de$larada simplesme!te $omo E)/8F . de 2QQ
$ara$teres. E!treta!to2 -o$# pode espe$i+i$ar um $omprime!to m6<imo me!or para uma -ari6-el stri!g2
usa!do a segui!te !ota%&o:
V.*
Nome_da_Varivel: S/*0N123omprimento4ximo5 6
JO
*or e<emplo2 a de$lara%&o a seguir de+i!e uma stri!g $u7o o $omprime!to m6<imo . de O
$ara$teres:
VAR
data: STRING`Hae
De-emos sempre lembrar 1ue o $omprime!to real da stri!g arma4e!ada !uma -ari6-el do tipo
E)/8F . din2mico, ou se7a2 a stri!g pode ter 1ual1uer $omprime!to at. o m6<imo espe$i+i$ado. A +u!%&o
embutida DE8F)I +or!e$e o $omprime!to di!9mi$o atual de uma -ari6-el stri!g.
5i!alme!te2 -o$# pode utili4ar a !ota%&o a seguir para a$essar um B!i$o $ara$tere de uma posi%&o
espe$i+i$ada de!tro de uma -ari6-el stri!g:
Nome_da_Varivel 2 'osio do 3aractere 5
*or e<emplo2 a e<press&o:
data275
+or!e$e o 1ui!to $ara$tere da stri!g arma4e!ada !a -ari6-el data$
Cma -ari6-el do tipo $har tem seu -alor $orrespo!de!te !a tabela AE" :Ameri$a! Eta!dart "ode +or
!+ormatio! !ter$ha!ge; atra-.s da +u!%&o:
or$> " @
*ara tra!s+ormar o -alor da tabela AE" !o seu $ara$ter $orrespo!de!te2 usa-se a +u!%&o:
(2r> " @
ou o -alor $orrespo!de!te pre$edido do si!al f.
fLK ou (2r>LK@ $orrespo!de ao A.
++).)+)F V#lor! 4ool!#%o
Cm -alor @oolea!o pode ser ta!to )/CE :-erdadeiro; $omo 5ADEE :+also;. :>s -alores
@oolea!os s&o assim $hamados em home!agem ao matem6ti$o !gl#s do s.$ulo de4e!o-e Feorge @oole2
tamb.m $o!he$ido $omo valor lgico;.
> )urbo *as$al +or!e$e um $o!7u!to de opera%0es l,gi$as e rela$io!ais2 1ue produ4em e<press0es
1ue resultam em -alores de )/CE ou 5ADEE.
> ide!ti+i$ador padr&o @>>DEA8 de+i!e uma -ari6-el deste tipo2 $omo !este e<emplo:
VAR
Trabalho_Entregue: BOOLEAN;
J'
++).). Ti0o $!&i%i$o 0!lo ""'rio
>s tipos de+i!idos pelo usu6rio s&o a1ueles 1ue usam um grupo de tipos prede+i!idos ou um subgrupo de
algum tipo. Este tipo . $hamado de tipo e!umerado de dados e represe!ta uma es$olha de!tre um pe1ue!o !Bmero
de alter!ati-as.
++).).)+ Ti0o !%"m!r#$o $i(r!to
Em *as$al temos o $oma!do T[PE para de+i!ir o tipo de dados 1ue 1ueremos:
T[PE t0$i# Y >!g"%$#P t!r9#P ]"#rt#P ]"i%t#P !8t#P '7#$oP $omi%go@e
VAR $i#!m1 t0$i#e
)))
$i#!m1Y !g"%$#e
i& >$i#!m Y t!r9#@ t2!% )))
++).).). Ti0o !%"m!r#$o (o%tR%"o
> tipo e!umerado $o!t?!uo pode ser de+i!ido $omo um i!ter-alo de um tipo e!umerado dis$reto 76 de+i!ido
ou de um tipo padr&o.
T[PE t0$i# Y >!g"%$#P t!r9#P ]"#rt#P ]"i%t#P !8t#P '7#$oP $omi%go@e
T[PE t0&im!m Y '7#$o))$omi%goe
T[PE t0$i#"til Y !g"%$#))!8t#e
VAR &im!m1 t0&im!me
)))
&im!m1Y '7#$oe
i& >&im!m Y $omi%go@ t2!% )))
++)I Co%t#%t! ! V#ri'*!i
++)I)+ Co%t#%t!
"o!sta!tes s&o -alores de$larados !o i!?$io do programa e 1ue !&o se alteram !a e<e$u%&o do programa.
3uitas -e4es . $o!-e!ie!te asso$iar um dado simples2 tal $omo um -alor !um.ri$o ou uma $adeia a um
ide!ti+i$ador !o i!?$io do programa2 propor$io!a!do assim um !ome ao eleme!to de i!+orma%&o. > ide!ti+i$ador .
desig!ado de $o!sta!te se o eleme!to da i!+orma%&o !&o se altera em !e!huma parte do programa.
Cma $o!sta!te de-e sempre ser de+i!ida a!tes de apare$er !uma i!stru%&o de *as$al. Esta de+i!i%&o tem
duas +i!alidades A estabele$e 1ue o ide!ti+i$ador . uma $o!sta!te e asso$ia um eleme!to de i!+orma%&o ] $o!sta!te.
> tipo da $o!sta!te ser6 impli$itame!te determi!ado pelo eleme!to de i!+orma%&o.
E<:
CONST
nome = `Enxuga Gelo SA.';
tempo = 200;
++)I). V#ri'*!i
Cm ide!ti+i$ador $u7o -alor pode ser alterado dura!te a e<e$u%&o do programa . de!omi!ado varivel.
Q0
)odas as -ari6-eis de-em ser de$laradas :de+i!idas; a!tes de serem usadas. As -ari6-eis de-em ser
de$laradas !o i!?$io de $ada +u!%&o2 pro$edime!to ou i!?$io do programa. 8&o podem o$orrer de$lara%0es de
-ari6-eis ap,s a primeira se!te!%a e<e$ut6-el de uma roti!a.
Cma de$lara%&o de -ari6-el $o!siste do !ome da -ari6-el seguido do !ome do tipo.
As -ari6-eis podem ser globais ou lo$ais.
=ari6-eis globais s&o de$laradas +ora de 1ual1uer +u!%&o2 -alem em 1ual1uer po!to do programa2 s&o
i!i$iali4adas $om 4ero automati$ame!te e uma B!i$a -e42 s&o arma4e!adas !a mem,ria.
=ari6-eis lo$ais s&o de$laradas de!tro das +u!%0es2 e<istem ape!as e!1ua!to a +u!%&o !a 1ual +oi de$larada
est6 ati-a. De!tro de +u!%0es -ari6-eis lo$ais $om mesmo !ome de -ari6-eis globais tem pre+er#!$ia2 !&o s&o
i!i$iali4adas automati$ame!te2 ou se7a2 de-e-se i!+ormar um -alor i!i$ial2 s&o alo$adas !a pilha :msta$Gm;.
>s par9metros das +u!%0es s&o tratados $omo se +ossem -ari6-eis lo$ais2 s&o i!i$iali4ados $om o -alor
passado !a $hamada2 s&o de$larados !a lista de par9metros2 s&o passados por -alor2 some!te tipos es$alares de
dados podem ser par9metros.
=A/ nome3, nome4, $$$ , nomen : tipo g
E<:
Var
nome: string[50];
salario: real;
filhos: integer;
sexo: char;
++)F O0!r#$or!
++)F)+ O0!r#$or! #ritm3ti(o
+ soma
9 subtrao
* multiplicao
/ diviso
D<E diviso truncada
FGD resto da diviso
>s operadores aritm.ti$os s&o utili4ados para $ompor e<press0es2 1ue podem ser +ormadas por !Bmeros2
$o!sta!tes2 -ari6-eis2 et$.
++)F). O0!r#$or! $! #tri7"i9;o
Cm operador de atribui%&o ser-e para atribuir um -alor a uma -ari6-el.
Em *as$al temos o operador de atribui%&o:
1Y
A si!ta<e de um $oma!do de atribui%&o .:
NomedaVarivel := expresso6
*ara e<e$utar este $oma!do2 o *as$al a-alia a e<press&o lo$ali4ada !o lado direito do si!al de igual
e arma4e!a o -alor resulta!te !a -ari6-el ] es1uerda. > !ome da -ari6-el apare$e sempre so4i!ho2 !o lado
es1uerdo do si!al de igual deste $oma!do.
++)F)I O0!r#$or! r!l#(io%#i
>s operadores rela$io!ais s&o operadores bi!6rios 1ue de-ol-em os -alores l,gi$os -erdadeiro e +also.
Q1
> maior que
< menor que
>= maior ou igual
<= menor ou igual
= igual
<> diferente
*odemos usar estas opera%0es $om dois -alores do mesmo tipo. *or e<emplo2 digamos 1ue a -ari6-el
i!teira escolha $o!te!ha o -alor 7. A primeira das e<press0es a seguir +or!e$e um -alor +also2 e a segu!da um -alor
-erdadeiro:
escol-a <= 3
escol-a > 3
"om -alores stri!g2 os operadores rela$io!ais $omparam os -alores AE" dos $ara$teres $orrespo!de!tes
em $ada stri!g. Cma stri!g . dita mme!or 1uem outra se os $ara$teres $orrespo!de!tes ti-erem os !Bmeros de
$,digos AE" me!ores. *or e<emplo2 todas as e<press0es a seguir s&o -erdadeiras:
HturboH > H=?>IGH
H(I;H < H@AJH
u*as$als i s*as$al $ompilers
>bser-e 1ue as letras mi!Bs$ulas t#m $,digos AE" maiores do 1ue os das letras maiBs$ulas. >bser-e
tamb.m 1ue o $omprime!to da stri!g se tor!a o +ator determi!a!te !a $ompara%&o de duas stri!gs2 1ua!do os
$ara$teres e<iste!tes !a stri!g me!or s&o os mesmos 1ue os $ara$teres $orrespo!de!tes !a stri!g maior. 8este $aso2
a stri!g maior . dita mmaior 1uem a me!or.
> )urbo *as$al !os +or!e$e alguma liberdade !a $ompara%&o de -alores 1ue !&o pre$isam ser
!e$essariame!te do mesmo tipo. *odemos $omparar !Bmeros i!teiros $om reais !a mesma e<press&o. )amb.m
podemos $omparar -alores do tipo "IA/ e E)/8F.
++)F)F O0!r#$or! lBgi(o
>s operadores l,gi$os ou boolea!os s&o usados para $ombi!ar e<press0es rela$io!ais. )amb.m de-ol-em
$omo resultado -alores l,gi$os -erdadeiro ou +also.
and e
or ou
not no
+or ou e+clusivo
s-l s-ift K esquerda a n#vel de bits
s-r s-ift K direita a n#vel de bits
Cma e<press&o rela$io!al ou l,gi$a retor!ar6 &#l! para o -alor l,gi$o &#lo e tr"! para o -alor l,gi$o
*!r$#$!.
5or!e$e!do dois -alores ou e<press0es l,gi$as2 represe!tadas por expresso1 e expresso2, podemos
des$re-er as 1uatro opera%,es l,gi$as a seguir:
expresso1 A8D expresso2 -erdadeiro some!te se ambas2 expresso1 e expresso2, +orem
-erdadeiras. Ee uma +or +alsa2 ou se ambas +orem +alsas2 a opera%&o A8D tamb.m ser6 +alsa.
expresso1 >/ expresso2 . -erdadeiro se ta!to a expresso1 $omo a expresso2 +orem -erdadeiras. As
opera%0es >/ s, resultam em -alores +alsos se ambas2 expresso1 e expresso2, +orem +alsas.
expresso1 U>/ expresso2 . -erdadeiro some!te se a expresso1 e a ex0r!;o. ti-erem -alores
opostos. Ee a expresso1 e a !80r!;o. ti-erem o mesm!o -alor - ambas -erdadeiras ou ambas +alsas - a
opera%&o U>/ +or!e$e um -alor +also.
Q2
8>) expresso1 a-alia -erdadeiro se expresso1 +or +alsag de modo $o!tr6rio2 a e<press&o 8>) resultar6
em +also2 se expresso1 +or -erdadeira.
8&o podemos $o!+u!dir estas opera%0es l,gi$as $om as opera%0es de bit a bit do )urbo *as$al. As seis
opera%0es de bit a bit e<e$utam $ompara%0es a !?-el de bit2 trabaha!do sobre opera!dos do tipo 8)EFE/2 ao
$o!tr6rio2 as opera%0es l,gi$as sempre trabalham sobre -alores de tipos @oolea!os. Zuatro das opera%0es de bit a
bit t#m os mesmos !omes 1ue as opera%0es l,gi$as: 8>)2 A8D2 >/2 U>/. As outras duas s&o EID e EI/.
++)F)K O0!r#$or! o7r! tri%g
Concatena,o . uma opera%&o de stri!g 1ue $ombi!a duas stri!gs. > s?mbolo para $o!$ate!a%&o .
o si!al de mais :e;2 $omo !os $oma!dos de atribuia%&o a seguir2 da pro$edure Time#tring
TimeString := hourStr+ '.' + minuteStr + ' ' + ampm
Este e<emplo2 em parti$ular2 $ombi!a $i!$o stri!gs: tr#s -ari6-eis stri!g e dois -alores literais de
stri!g. > resultado se tor!a o -alor de retor!o da +u!%&o Time#tring
> )urbo *as$al tamb.m possui uma +u!%&o embutida2 $hamada ">8"A)2 1ue +or!e$e uma
+orma alter!ati-a para $o!$ate!a%0es. ">8"A) toma uma s.rie de stri!gs $omo a sua lista de
argume!tos2 e retoma $om a $o!$ate!a%&o de todas as stri!gsg por e<emplo2 o $oma!do a seguir .
e1ui-ale!te ao do e<emplo de Time#tring
Exemplos
program exemplo_concat;
uses crt;
var
S1, S2, S3: string;
begin
S1 := `Turbo Pascal ';
S2 := ` timo!';
S3 := Concat(S1, S2);
TimeString := CONCAT (hourStr, '.', minuteStr, ' ',ampm) ;
writeln(TimeString, S3);
end.
Al.m de ">8"A)2 o )urbo *as$al possui uma Btil bibliote$a de pro$edures e +u!%0es embutidas
1ue e<e$utam di-ersas opera%0es de stri!gs 1ue ser&o -istas !o item (.1:
++)F)L O0!r#$or! o7r! (o%O"%to
8o *as$al e<iste o operador IN 1ue a-alia -erdadeiro se um opera!do perte!$er a um $o!7u!to.
Exemplo
PROGRAM exemplo_in;
USES crt;
VAR opcao: char;
BEGIN
CLRSCR;
WRITELN('Escolha o seu time: [G] Grmio [I] Inter');
REPEAT
opcao:=READKEY;
UNTIL opcao IN ['G','g','I','i'];
WRITELN('A opo escolhida foi ', opcao);
END.
Q3
+.) ESTRUTURA DO PROGRAMA
8ormalme!te um programa *as$al possui tr#s partes disti!tas: de!ti+i$a%&o do programa2 @lo$o de
de$lara%0es e @lo$o de $oma!dos.
+.)+ I$!%ti&i(#9;o $o 0rogr#m#
A ide!ti+i$a%&o ou $abe%alho do programa em *as$al d6 um !ome ao programa. N a primeira li!ha do
programa.
PROGRAM Si$!%ti&i(#9;oTe
+.). 4lo(o $! D!(l#r#9:!
)odo ide!ti+i$ador de+i!ido pelo usu6rio em um programa de-e ser de$larado a!tes de ser re+ere!$iado
:usado;2 $aso $o!tr6rio o $ompilador a$usar6 um erro !a +ase de $ompila%&o por des$o!he$er o ide!ti+i$ador.
> @lo$o de De$lara%0es de+i!e todos os ide!ti+i$adores utili4ados pelo @lo$o de "oma!dos2 se!do todos
op$io!ais. Zua!do o @lo$o de Delara%0es e<istir sempre estar6 a!tes do @lo$o de "oma!dos.
Em *as$al o @lo$o de De$lara%0es . +ormado por $i!$o partes:
+.).)+ P#rt! $! D!(l#r#9:! $! RBt"lo1
/,tulos :labels; e<istem para possibilitar o uso do $oma!do de des-io i!$o!di$io!al F>)>. Este $oma!do
$oma!do gera a desestrutura%&o do programa e !&o . a$o!selhado seu uso.
LA4EL Srot"lo+TP ))) P Srot"lonTe
+.).). P#rt! $! D!(l#r#9:! $! Co%t#%t!1
De+i!e os ide!ti+i$adores 1ue ter&o -alores $o!sta!tes dura!te toda a e<e$u%&o do programa2 pode!do ser
!Bmeros2 se1_#!$ias de $ara$teres :stri!gs; ou mesmo outras $o!sta!tes.
A de$lara%&o de $o!sta!tes i!i$ia pela pala-ra reser-ada ">8E)2 seguida po uma se1_#!$ia de:
ide!ti+i$ador2 um si!al de igual2 o -alor da $o!sta!te e um po!to e -?rgula:
CONST Si$!%ti&i(#$orT Y S*#lorT
+.).)I P#rt! $! D!(l#r#9:! $! Ti0o1
Eer-e para o programadore $riar seus pr,prios tipos de dados.
A de$lara%&o dos tipos . i!i$iadas pela pala-ra reser-ada )r*E2 seguida de um ou mais ide!ti+i$adores
separados por -?rgula2 um si!al de igual2 um tipo e um po!to e -?rgula:
T[PE Sti0oi$!%t+T P ))) P Sti0oi$!%tnT Y Sti0oT e
+.).)F P#rt! $! D!(l#r#9:! $! V#ri'*!i1
Zua!do de$laramos uma -ari6-el temos 1ue de+i!ir2 al.m do !ome2 seu tipo. > tipo espe$i+i$a os -alores
1ue poder&o ser atribu?dos a esta -ari6-el. > tipo pode ser algum dos tipos prede+i!idos pela li!guagem ou um tipo
de+i!ido pelo usu6rio.
A de$lara%&o das -ari6-eis . i!i$iada pela pala-ra reser-ada =A/2 seguida de um ou mais ide!ti+i$adores2
separados por -?rgula2 um tipo um po!to e -?rgula:
QJ
VAR S i$!%t+T P ))) P Si$!%tnT 1 Sti0oT e
+.).)K P#rt! $! D!(l#r#9:! $! S"70rogr#m#1
8esta parte s&o de$larados e impleme!tados os subprogramas :+u!%0es e pro$edime!tos; e de-em estar
de$larados e impleme!tados a!tes da sua $hamada em 1ual1uer parte do programa pri!$ipal ou de subprogramas.
+.)I 4lo(o $! Com#%$o
> @lo$o de "oma!dos . a Bltima parte 1ue $omp0e um programa em *as$al e espe$i+i$a as a%0es a serem
e<e$utadas sobre os ob7etos de+i!idos !o @lo$o de De$lara%0es.
> @lo$o de "oma!dos . tamb.m $o!he$ido $omo programa pri!$ipal e . i!i$iado pela pala-ra reser-ada
@EF8 seguida de por uma se1_#!$ia de $oma!dos e +i!ali4ada pela pala-ra reser-ada E8D seguida um po!to.
QQ
+I) COMANDOS
+I)+ Com#%$o Sim0l!
>s $oma!dos simples ou !&o estruturados2 $ara$teri4am-se por !&o possu?rem outros $oma!dos
rela$io!ados.
+I)+)+ Com#%$o $! E%tr#$# ! S#R$#
"omo as outras li!guage!s de programa%&o de mi$ro$omputadores2 o )urbo *as$al possui uma treme!da
$apa$idade de programa%&o interativa$ Cm programa i!terati-o pega i!+orma%0es das e!tradas do usu6rio para o
$omputador2 e depois respo!de apropriadame!te ]s e!tradas2 $olo$a!do i!+orma%0es !a tela ou e!-ia!do para a
impressora.
A li!guagem *as$al tem de+i!ido os $oma!dos de e!trada e sa?da !a pr,pria li!guagem.
+I)+)+)+ R!#$ ! R!#$l%
8a sua +orma mais simples2 a pro$edure embutida /EADD8 a$eita um -alor de e!trada a partir do te$lado:
READLN &NomedaVarivel(
Este $oma!do espera 1ue o usu6rio e!tre $om o dado2 e depois arma4e!a a resposta do usu6rio !a -ari6-el
espe$i+i$ada. A e!trada do usu6rio de-e se $orrespo!der $om o tipo de dado da -ari6-el ide!ti+i$ada !o $oma!do
/EADD8. Zua!do o usu6rio termi!ar de digitar o -alor de e!trada e pressio!ar a te$la E!ter2 o -alor ser6
arma4e!ado !a -ari6-el2 e a tare+a do $oma!do /EADD8 se $ompleta.
8um programa i!terati-o2 um $oma!do /EADD8 . !ormalme!te usado pre$edido por um $oma!do
P/)E ou P/)ED82 1ue $olo$a !a tela uma me!sagem apropriada. A me!sagem geralme!te i!+orma ao usu6rio
o tipo de i!+orma%&o 1ue o programa espera $omo e!trada. *or e<emplo:
WRITE ('Nome do usurio: ');
READLN (Nome);
Esta se1_#!$ia $olo$a uma me!sagem !a tela e espera 1ue o usu6rio e!tre $om o !ome do usu6rio.
/EADD8 tamb.m lhe permite a$eitar mais de um -alor de e!trada por -e4. *odemos i!$luir uma lista de
-ari6-eis $omo argume!to do $oma!do /EADD8:
*$.89N &NomedaVarivel1: Nomeda Varivel2: NomedaVarivel;:...(
Esta +orma do $oma!do /EADD8 !&o .2 geralme!te2 muito Btil para e!tradas pelo te$lado. Cm programa
e<er$e um $o!trole mais $uidadoso e harmo!ioso sobre o pro$esso de e!trada2 se $ada -alor de e!trada +or tomado
e a$eito por $oma!dos /EADD8 i!di-iduais.
> $oma!do /EAD l# um -alor de dado de uma li!ha de e!trada e ma!t.m a posi%&o do $ursor ou po!teiro
de ar1ui-o2 de modo 1ue um $oma!do /EAD ou /EADD8 subse1ue!te possa ler dados adi$io!ais da mesma li!ha.
Este $oma!do .2 geralme!te2 mais importa!te em programas de ma!ipula%&o de ar1ui-os do 1ue em programas 1ue
l#em dados do te$lado.
A pro$edure /EADD8 pro-o$a problemas i!oportu!os em algu!s programas i!terati-os. > problema
surge 1ua!do um programa espera por um -alor !um.ri$o e o usu6rio e!tra i!ad-ertidame!te $om uma se1ii#!$ia
de $ara$teres 1ue o )urbo *as$al !&o pode ler $omo um !Bmero. Zua!do isto a$o!te$e2 a e<e$u%&o do programa
termi!a $om um erro em tempo de e<e$u%&o.
A pre-e!%&o $o!tra este tipo de erro de e!trada . uma i!teressa!te tare+a de programa%&o.
13.1.1.1.1 AE 5C8TXEE E>D8 e E>5
Q(
> *as$al possui duas +u!%0es padr&o2 !ol% e !o&2 1ue s&o muito Bteis 1ua!do se l#em dados. A primeira
delas2 !ol%2 de-ol-e o -alor boolea!o true se uma desig!a%&o de +im de li!ha +or dete$tada !a li!ha 1ue $ome%ou a
ser lida. De outro modo de-ol-e um -alor .alse.
> -alor de !ol% . automati$ame!te passado para .alse todas as -e4es 1ue uma !o-a li!ha de e!trada de
dados +or $ome%ada2 i!+orma!do 1ue a !o-a li!ha !&o este7a -a4ia2 isto .2 gara!ti!do 1ue a !o-a li!ha te!ha pelo
me!os um dado;. Deste modo2 esta +u!%&o permite-!os ler um !Bmero 1ual1uer de dados de 1ual1uer li!ha2 le!do
dados da mesma li!ha at. 1ue !ol% se tor!e um -alor -erdadeiro :true;. *odemos e!t&o repetir este pro$edime!to
para a li!ha segui!te de dados2 e assim su$essi-ame!te.
A +u!%&o !o& . usada para dete$tar o +im dum ar1ui-o de dados em dis$o. Esta +u!%&o de-ol-e o -alor
boolea!o true 1ua!do a desig!a%&o de +im de ar1ui-o +or dete$tadag $aso $o!tr6rio de-ol-e o -alor .alse.
+I)+)+). Writ! ! Writ!l%
8a sua +orma mais simples2 o $oma!do P/)ED8 e<ibe uma li!ha de i!+orma%&o !a tela. A pro$edure
P/)E tamb.m e!-ia dados para a tela2 mas ma!t.m a posi%&o +i!al do $ursor2 permiti!do 1ue um $oma!do
P/)E ou P/)ED8 subse1_e!te possa e<ibir i!+orma%0es adi$io!ais !a mesma li!ha da tela.
P/)E e P/)ED82 tomam uma lista de argume!tos de dados !a +orma de $o!sta!tes2 -ari6-eis2 ou
e<press0es2 separados por -?rgulas. "o!sidere este e<emplo:
Exemplo
PROGRAM ExemploWrite
USES Crt
VAR
itens, Precounit: INTEGER;
BEGIN
itens:= 200;
Precounit:=35;
WRITE ('O preo de ',itens);
WRITELN (' unidades ',itens * Precounit);
END.
Este programa e<ibe uma li!ha $om 1uatro -alores de dados !a tela: um -alor literal stri!g2 o -alor de uma
-ari6-el !um.ri$a2 um segu!do -alor stri!g e o resultado de uma e<press6o aritm.ti$a. A tela de sa?da resulta!te .:
O preo de 200 unidades 7000
>bser-e 1ue2 !este e<emplo2 os $oma!dos P/)E e P/)ED8 e<ibem todos os 1uatro -alores de dados
!uma B!i$a li!ha de sa?da - as duas $o!sta!tes stri!g2 o -alor arma4e!ado !a -ari6-el itens e o resultado da
e<press&o itens5 +recounit$
> dispositi-o de+ault de sa?da para os $oma!dos P/)E e P/)ED8 . a tela. Zua!do 1ueremos e!-iar a
sa?da para algum outro dispositi-o2 de-emos espe$i+i$ar um !ome de ar1ui-o $omo primeiro argume!to do
$oma!do P/)E ou P/)ED8. *or e<emplo2 a u!idade */8)E/ de+i!e um ar1ui-o $hamado DE) e asso$ia
este ar1ui-o ao dispositi-o D*)1 do D>E. *orta!to2 podemos utili4ar DE) para e!-iar dados para impressora a
partir dos $oma!dos P/)E e P/)ED8. *ara +a4er isso2 de-emos i!$luir o $oma!do CEEE2 a seguir2 !o topo do
programa:
USES PRINTERe
Zua!do espe$i+i$amos subse1ue!teme!te DE) $omo primeiro argume!to de uma $hamada ] pro$edure
P/)E ou P/)ED82 a sa?da ser6 e!-iada para a impressora2 ao i!-.s da tela:
Exemplo
Program ExemploPrinter;
USES CRT, PRINTER;
VAR
itens, Precounit: INTEGER;
BEGIN
itens:= 200;
Q7
Precounit:=35;
WRITE (LST,'O preo de ',itens);
WRITELN (LST,' unidades ',itens * Precounit);
END.
Este e<emplo imprime a li!ha de i!+orma%&o sobre o pre%o das u!idades.
*ara produ4ir uma li!ha de saida em bra!$o !a tela2 i!$lua o $oma!do P/)ED8 so4i!ho2 sem uma lista
de -alores de dados. *or e<emplo2 esta se1u#!$ia resulta em duas li!has de saida2 $om uma li!ha em bra!$o e!tre
elas:
WRITELN ('Comando 1');
WRITELN;
WRITELN ('Comando 2');
> $oma!do P/)ED8 suporta !ota%0es espe$iais de +ormato para o $o!trole da e<ibi%&o de dados
!um.ri$os. *odemos espe$i+i$ar a largura da saida e o !Bmero de $asas de$imais:
WRITELN &valor : largura : 3asas8ecimais(
8esta !ota%&o2 largura e Casas&ecimais s&o -alores i!teiros literais. 8o e<emplo a seguir2 o $oma!do
P/)ED8 7usti+i$a ] direita um -alor !um.ri$o de!tro de um $ampo de saida de de4 espa%os e e<ibe duas $asas
de$imais:
Exemplo
PROGRAM ExemploCasasDecimaisEmNumerosReais;
USES Crt;
Var ValorDeSaida: REAL;
BEGIN
ValorDeSaida:=18.766;
WRITELN (ValorDeSaida: 10:2);
END.
> -alor de saida deste programa . 1O.77. >bser-e 1ue a segu!da $asa de$imal +oi arredo!dada. *ara
saidas i!teiras2 -o$# pode omitir o espe$i+i$ador Casas&ecimais$ > )urbo *as$al !&o possui !e!hum $oma!do
e1ui-ale!te ao $oma!do */8) CE8F do @AE" :o 1ual produ4 saidas +ormatadas em d,lares e $e!ta-os;g
e!treta!to2 -o$# pode es$re-er +a$ilme!te a sua pr,pria +u!%&o 1ue simule este $oma!do.
Ee dese7armos i!$luir um $ara$tere ap,stro+o $omo parte do -alor stri!g de saida2 de-emos i!$luir uma
se1_#!$ia de dois ap,stro+os !o argume!to stri!g $orrespo!de!te. *or e<emplo2 o $oma!do P/)ED8:
WRITELN ('Pascal''s input and output procedures.')
sto resulta !a e<ibi%&o da li!ha a seguir:
Pascal's in$"t and o"t$"t $roced"res.
+I)+)+)I R!#$g!h
> $oma!do /EADSEr l# um $ara$ter do te$lado e asso$ia a uma -ari6-el do tipo $har:
varivel_c%ar 1Y r!#$g!he
+I)+). Com#%$o $! D!*io I%(o%$i(io%#l
+I)+).)+ GOTO
Este "oma!do de des-io i!$o!di$io!al altera a se1_#!$ia !ormal de e<e$u%&o em um blo$o de $oma!dos2
tra!s+eri!do o pro$essame!to para um po!to !o programa +o!te mar$ado $om o r,tulo espe$i+i$ado !o $oma!do
F>)>.
Exemplo
QO
Program exemplo_label;
uses crt;
label ini, fim, gre, int;
var opcao: char;
begin
ini:
clrscr;
writeln('Escolha o seu time: [G] Gremio [I] Inter');
opcao:=readkey;
if upcase(opcao)='G' then goto gre;
if upcase(opcao)='I' then goto int;
goto ini;
gre:
writeln('Ok, Gremista!');
goto fim;
int:
writeln('Muito bem, Colorado!');
goto fim;
fim:
readkey;
end.
De-emos e-itar sempre 1ue poss?-el o uso de $oma!dos desse tipo.
+I)+).). E?IT
Este pro$edime!to +a4 $om 1ue o programa termi!e o blo$o 1ue est6 se!do e<e$utado. Ee esse blo$o +or o
programa pri!$ipal2 E<it o +a4 termi!ar. Ee o blo$o $orre!te . a!i!hado2 E<it +a4 $om 1ue o pr,<imo blo$o mais
e<ter!o $o!ti!ue !a i!stru%&o imediatame!te ap,s a 1ue passou o $o!trole ao blo$o a!i!hado. Ee o blo$o $orre!te .
uma pro$edure ou +u!%&o2 E<it pro-o$a a $hamada do blo$o para $o!ti!uar !a i!stru%&o ap,s o po!to em 1ue ele
+oi $hamado.
Eua si!ta<e .:
E?ITe
+I)+).)I 4REAi
Este pro$edime!to +a4 $om 1ue o programa termi!e o blo$o 1ue est6 se!do e<e$utado. Eome!te pode ser
usado !o i!terior de la%os &or2 b2il! ou r!0!#t..
Eua si!ta<e .:
4REAi
+I)+).)F CONTINUE
Este pro$edime!to +a4 $om 1ue o pro$essame!to de uma itera%&o !um loop &or2 b2il! ou r!0!#t se7a
i!terrompido e $o!ti!ue $om a pr,<ima itera%&o.
Eua si!ta<e .:
CONTINUE
Exemplo:
program exemplos;
uses crt;
var
i: integer;
begin
Q'
clrscr;
writeln('testando o break');
for i:= 1 to 10 do
begin
if i=5 then break;
writeln(i);
end;
readkey;
writeln('testando o continue');
for i:= 1 to 10 do
begin
if i=5 then continue;
writeln(i);
end;
readkey;
writeln('testando o exit');
for i:= 1 to 10 do
begin
if i=5 then exit;
writeln(i);
end;
writeln('Esta frase nao sera exibida!');
readkey;
end.
+I)+).)K RUNERROR
Este pro$edime!to $ausa o t.rmi!o do programa !o lo$al o!de esti-er se!do e<e$utado2 gera!do um erro de
e<e$u%&o $om o mesmo -alor passado $omo par9metro. "aso o par9metro se7a omitido2 o -alor de erro de e<e$u%&o
ser6 4ero.
Eua si!ta<e .:
R"%!rror >2<valor=5: bHte@e
+I)+).)L HALT
Este pro$edime!to $ausa o t.rmi!o do programa !o lo$al o!de esti-er se!do e<e$utado2 gera!do um erro de
e<e$u%&o $om o mesmo -alor passado $omo par9metro. "aso o par9metro se7a omitido2 o -alor de erro de e<e$u%&o
ser6 4ero.
> -alor do erro pode ser tratado em ar1ui-os de lote do D>E :@at$h; .@A) $om a op%&o E//>/DE=ED.
Eua si!ta<e .:
H#lt> 2<valor=5: word@e
+I)+)I O"tro (om#%$o im0l!
+I)+)I)+ Clr(r
Este pro$edime!to limpa a tela e $olo$a o $ursor !o $a!to superior es1uerdo da tela. N a $o!tra%&o das
pala-ras "Dea/ E"/ee!.
+I)+)I). Goto?[
Este pro$edime!to permite posi$io!ar o $ursor em um po!to 1ual1uer da tela2 re+ere!$iado pelos ei<os U e
r :$olu!a e li!ha;2 a!tes de um $oma!do de e!trada ou sa?da.
Eua si!ta<e .:
Goto?[ ><coluna=: <lin%a=1 bHte@
(0
+I)+)I)I D!l#h
Este pro$edime!to permite +a4er uma pausa programada por um determi!ado i!ter-alo de tempo2 a!tes de
ser e<e$utado o pr,<imo $oma!do.
Eua si!ta<e .:
D!l#h > <milissegundos=: bHte@
+I)+)I)F CHR
Esta +u!%&o retor!a o $ara$tere AE" $orrespo!de!te ao -alor do par9metro passado.
Eua si!ta<e .:
CHR><n=: bHte@:$hare
+I)+)I)K ORD
Esta +u!%&o retor!a a posi%&o ordi!al do par9metro passado.
Eua si!ta<e .:
ORD><x=@: lo!gi!tg
+I)+)I)L U0(#!
Esta +u!%&o retor!a o $ara$tere $o!tido !o par9metro em maiBs$ulo.
Eua si!ta<e .:
U0(#!><c%=:$har@: $hare
Exemplo
program exemplos;
uses crt;
var x: char;
begin
clrscr;
writeln('Digite uma letra minuscula: ');
x:=readkey;
writeln('A letra digitada : ',x);
writeln('O seu valor na tabela ASCII : ', ord(x));
writeln('A letra maiuscula : ',upcase(x));
writeln('O seu valor na tabela ASCII : ', ord(upcase(x)));
writeln('O caracter 65 da tabela ASCII : ',chr(65));
writeln('O caracter 75 da tabela ASCII : ',#75);
readkey;
end.
(1
+I). Etr"t"r# $! Co%trol!
+I).)+ S!]^<%(i#
Ee1_#!$ia +i!ita de i!stru%0es s&o agrupame!tos de $oma!dos2 o!de $ada $oma!do . e<e$utado um ap,s o
outro e sem des-ios. Em *as$al a se1_#!$ia . delimitada pelas pala-ras reser-adas @EF8 !o i!?$io e E8D !o
+i!al e seus $oma!do s&o separados pelo delimitador agb :po!to e -?rgula;.
+I).). Com#%$o (o%$i(io%#i
+I).).)+ IF
> $oma!do i& . usado para e<e$utar um segme!to de $,digo $o!di$io!alme!te.
IF condio THEN
6 comandos 'ue ser&o e<e$utados se a $o!di%&o +or )/CEv
ELSE
6 comandos 'ue ser&o e<e$utados se a $o!di%&o +or 5ADEEv
Dura!te uma e<e$u%&o2 o *as$al $ome%a por a-aliar a $o!di%&o da $l6usula 5. Esta $o!di%&o de-e resultar
!um -alor do tipo @oolea!o2 embora possa tomar uma -ariedade de +ormas - ela pode ser uma e<press&o de
1ual1uer $ombi!a%&o de operadores l,gi$os ou rela$io!ais2 ou simplesme!te uma -ari6-el @>>DEA8.
Ee a $o!di%&o +or )/CE2 o $oma!do ou $oma!dos lo$ali4ados e!tre o 5 e EDEE s&o e<e$utados e a
e<e$u%&o pula a $l6usula EDEE. Alter!ati-ame!te2 se a e<press&o +or 5ADEE2 a e<e$u%&o . des-iada diretame!te
para o $oma!do ou $oma!dos lo$ali4ados ap,s a $l6usula EDEE.
>bser-e a estrutura deste $oma!do 5. Ambas as $l6usulas2 5 e EDEE2 s&o seguidas de blo$os
@EF8/E8D2 1ue delimitam grupos de $oma!dos. > +ormato geral desta estrutura .:
IF condio THEN
4EGIN
6comandos da clusula 5v
END
ELSE
4EGIN
6comandos da clusula EDEEv
ENDe
De-emos tomar $uidado para !&o es1ue$er dos mar$adores @EF8 e E8D !os $oma!dos $ompostos de
-6rias estruturas 5. Al.m disso2 !&o de-emos $olo$ar um po!to-e--irgula e!tre o E8D e o EDEE !uma estrutura
5. > *as$al i!terpretar6 essa mar$a%&o i!$orreta $omo o +im do $oma!do 5 e a $l6usula EDEE2 a seguir2 resultar6
!um erro em tempo de $ompila%&o.
De-a!do em $o!ta 1ue a $l6usula EDEE . op$io!al2 a +orma mais simples da estrutura 5 . a segui!te:
IF condio THEN
6comando ou comandos e"ecutados se :i+; a $o!di%&o .or )/CE 7verdadeira/8
8este $aso2 o programa e<e$uta o $oma!do ou $oma!dos lo$ali4ados ap,s a $l6usula 5 some!te se a
$o!di%&o +or -erdadeira. Ee ela +or +alsa2 o $oma!do 5 !&o ter6 !e!huma a%&o.
(2
As estruturas 5 podem estar a!i!hadas. Em outras pala-ras2 toda uma estrutura de de$is&o2 $ompleta $om
as $l6usulas 5 e EDEE2 pode apare$er de!tro de uma $l6usula 5 ou EDEE de uma outra estrutura. > a!i!hame!to
de estruturas 5 pode resultar em se1_#!$ias de de$is&o $omple<as e poderosas.
+I).).). Com#%$o $! S!l!9;o mQlti0l#1 CASE
Zua!do se dese7a testar uma -ari6-el ou uma e<press&o em rela%&o a di-ersos -alores usamos o $oma!do
de sele%&o mBltipla.
"omo a estrutura 52 o $oma!do "AEE di-ide uma se1u#!$ia de possi-eis a%0es em se%0es de $,digo
i!di-iduais. *ara a e<e$u%&o de um determi!ado $oma!do "AEE2 some!te uma dessas se%0es ser6 sele$io!ada para
e<e$u%&o. A sele%&o est6 baseada !uma s.rie de testes de $ompara%&o2 se!do todos e<e$utados sobre um -alor
dese7ado.
A +orma geral da estrutura "AEE . a segui!te:
CASE seleo OF
Valorde3aso1:
6comando ou comandos e"ecutados se a
sele%&o se corresponder com =alorde"aso1 v
Valorde3aso2:
6comando ou comandos e"ecutados se a sele%&o se corresponder com =alorde"aso2 v
. . .
ELSE
6comando ou comandos e"ecutados se nenhum dos casos anteriores produ1ir uma
correspond9ncia v
ENDe
A estrutura de de$is&o "AEE $o!siste !os segui!tes eleme!tos:
A Cma $l6usula "AEE >52 1ue +or!e$e a e<press&o de sele,o dese7ada
A Cma se1_#!$ia de :aloresdeCaso a ser $omparada $om a sele%&o2 $ada 1ual seguida de um ou mais
$oma!dos2 1ue ser&o e<e$utados se a sele%&o se $orrespo!der $om o :alordeCaso
A Cm $oma!do EDEE op$io!al2 1ue +or!e$e um $oma!do ou grupo de $oma!dos a serem e<e$utados
some!te se !&o ti-er o$orrido !e!huma $orrespo!d#!$ia $om os :aloresdeCaso a!teriores
A Cm mar$ador E8D2 1ue ide!ti+i$a o +im da estrutura "AEE.
*ara e<e$utar a de$is&o e<pressa !essa estrutura2 o *as$al $ome%a por a-aliar a e<press&o de sele%&o !a
$l6usula "AEE >5. Esse -alor de-e perte!$er a um tipo ordi!al 1ue te!ha uma +ai<a e!tre -32.7(O e 32.7(7. At.
a1ui2 estudamos $i!$o tipos de dados 1ue $orrespo!dem a este $rit.rio: "IA/2 @>>DEA82 @r)E2 EI>/)8) e
8)EFE/.
A sele%&o se tor!a o al-o das $ompara%,es $om todos os :aloresdeCaso subse1_e!tes. 8uma e<e$u%&o2 o
*as$al a-alia $ada $ompara%&2 sele$io!a o primeiro :alordeCaso 'ue se $orrespo!de $om a sele%&o e e<e$uta o
$oma!do ou $oma!dos lo$ali4ados e!tre esse :alordeCaso e o pr,<imo. 8&o ser6 e<e$utado mais !e!hum outro
$oma!do.
Ee !e!huma das $ompara%0es $om os :aloresdeCaso produ4ir uma $orrespo!d#!$ia $om a sele%&o2 ser6
e<e$utada a $l6usula EDEE. EDEE . uma $l6usula op$io!al !o $oma!do "AEEg se EDEE !&o esti-er prese!te2 e se
!e!hum :alordeCaso +or sele$io!ado2 o $oma!do "AEE !&o resultar6 em !e!huma a%&o.
> -alor de sele%&o !a $l6usula "AEE >5 pode apare$er $omo uma -ari6-el ou e<press&o2 desde 1ue o
resultado +i!al se7a um -alor ordi!al.
Exemplo
Program ExemploCase;
Uses Crt;
Var Ch: char;
(3
begin
Ch := readkey;
case Ch of
'A'..'Z', 'a'..'z': WriteLn('Letra');
'0'..'9': WriteLn('Dgito');
'+', '-', '*', '/': WriteLn('Operador');
#13: Writeln(`Enter');
#27: Writeln(`Esc');
` ': Writeln(`Espao');
else
WriteLn('Caractere Especial');
end;
end.
+I).)I Com#%$o $! R!0!ti9;o
>s $oma!dos de repeti%&o s&o $ara$teri4ados por permitir 1ue uma se1_#!$ia de $oma!dos se7a e<e$utada
um !Bmero repetido de -e4es.
+I).)I)+ For
> loop 5>/ .2 tal-e42 a estrutura de repeti%&o mais +amiliar e $omume!te usada. e . utili4ado para
e<e$utar uma se1_#!$ia de $oma!dos repetidame!te e $om um !Bmero $o!he$ido de -e4es.
A represe!ta%&o geral da si!ta<e da estrutra .:
FOR Varde3ontrole := Valorlnicial TO Valor>inal DO comando6
Ee o blo$o do loop possui $oma!dos mBltiplos2 o +ormato geral ser6 o segui!te:
FOR Varde3ontrole := Valorlnicial TO Valor>inal DO
4EGIN
7comandos e"ecutados para cada itera,o do loopv
ENDe
> $oma!do 5>/ ide!ti+i$a uma -ari6-el de $o!trole 7:ardeControle/ para o loop2 e i!di$a a +ai<a de
-alores 7:alorlnicial )> jat.k :alor;inal/ 1ue a -ari6-el re$eber6 e o :alorlnicial e o :alor;inal de-em ser
$ompat?-eis $om esse tipo. A1ui est6 um esbo%o da e<e$u%&o do loop:
1. 8o i!?$io da e<e$u%&o2 a -ari6-el de $o!trole re$ebe o -alor do :alorlnicial, e a primeira itera%&o .
e<e$utada.
2. A!tes de $ada itera%&o subse1_e!te2 a -ari6-el de $o!trole re$ebe o pr,<imo -alor da +ai<a de
:alorlnicial $$ :alor;inal$
3. > loop termi!a ap,s a itera%&o $orrespo!de!te ao :alor;inal$
8um loop 5>/ 1ue use a $l6usula )>2 o -alor ordi!al do :alorlnicial de-e ser me!or 1ue o -alor ordi!al
do :alor;inal, $aso $o!tr6rio o loop !&o ter6 a%&o !e!huma. Alter!ati-ame!te2 podemos usar a pala-ra reser-ada
D>P8)> para pro7etar um loop 5>/ 1ue se7a de$reme!tado de!tro de uma +ai<a ordi!al:
FOR Varde3ontrole := Valorlnicial DOWNTO Valor>inal DO (om#%$oe
8este $aso2 o -alor de :alorlnicial de-e ser maior 1ue o de :alor;inal$ A!tes de $ada itera%&o
subse1_e!te2 a -ari6-el de $o!trole re$ebe o pr,<imo -alor mais bai<o da +ai<a.
A -ari6-el de $o!trole do loop 5>/ possui um status espe$ial. 8e!hum $oma!do de!tro do loop de-e
te!tar modi+i$ar o -alor dessa -ari6-elg se +i4er isso2 estar6 i!ter+eri!do $om o pro$esso !ormal de $o!tagem 1ue o
*as$al dirige automati$ame!te dura!te a repeti%&o2 pode!do $ausar resultados impre-is?-eis. E!treta!to2 um
$oma!do 1ue este7a de!tro do loop pode acessar o -alor da -ari6-el de $o!tagem para 1ual1uer prop,sito.
8&o de-emos utili4ar uma de$lara%&o de -ari6-el global para de+i!ir a -ari6-el de $o!trole. "ada -ari6-el
de $o!trole !um determi!ado programa de-e ser de$larada de!tro da roti!a 1ue realme!te $o!t.m o loop. Esta
pr6ti$a e-ita 1ual1uer possibilidade de i!ter+er#!$ia e!tre di+ere!tes -ari6-eis de $o!trole de+i!idas !um
determi!ado programa. Embora a -ari6-el de $o!trole de um loop 5>/ perte!%a tipi$ame!te a um dos tipos
(J
i!teiros2 o *as$al he permite realme!te utili4ar outros tipos ordi!ais para $o!trolar o loop2 i!$lui!do o tipo "IA/
e o e!umerado.
Exemplo:
Program ExemploFor;
Uses Crt;
Var i, j: integer;
begin
for i:= 1 to 10 do
begin
writeln(`Tabuada do ',i);
for j:= 1 to 10 do
begin
writeln(i, ` x ', j , ` = ', i*j);
end;
end;
end.
+I).)I). W2il! ! R!0!#t U%til
Di+ere!teme!te do loop 5>/2 os loops PIDE e /E*EA) C8)D depe!dem de uma $o!di%&o e<pressa
para determi!ar a dura%&o do pro$esso de repeti%&o. E<istem tamb.m algumas di+ere!%as importa!tes e!tre estes
dois tipos de loops:
8um loop PIDE2 $olo$amos a $o!di%&o !o i!?$io do loop2 e as itera%0es $o!ti!uam !%]"#%to # (o%$i9;o
!O# TRUE >*!r$#$!ir#@. )e!do em -ista 1ue a $o!di%&o . a-aliada sempre a!tes de $ada itera%&o2 um loop
PIDE resulta em !e!huma itera%&o se a $o!di%&o +or 5ADEE :+alsa; logo !o pri!$ipio.
8um loop /E*EA) C8)D2 a $o!di%&o -ai para o +im do loop2 e o pro$esso de repeti%&o $o!ti!ua #t3 ]"!
# (o%$i9;o ! tor%! TRUE >*!r$#$!ir#@. )e!do em -ista 1ue a $o!di%&o . a-aliada ap,s $ada itera%&o2 um loop
/E*EA) C8)D sempre e<e$uta pelo me!os uma itera%&o.
Esta -ariedade de es$olhas !os permite e<pressar os loops !uma +orma 1ue se adapte a uma apli$a%&o em
parti$ular.
A si!ta<e do loop PIDE .:
WHILE condio DO comando6
Ee o blo$o do loop possuir $oma!dos mBltiplos2 a +orma geral . a segui!te:
WHILE condio DO
4EGIN
6comandos 'ue sero e"ecutados uma ve1 em cada itera,o do loopv
ENDe
A condi,o . uma e<press&o 1ue o )urbo *as$al pode a-aliar $omo )/CE :-erdadeira; ou 5ADEE :+alsa;.
A repeti%&o $o!ti!ua e!1ua!to a $o!di%&o +or )/CE. 8ormalme!te2 em algum po!to2 a a%&o de!tro do loop altera a
$o!di%&o para 5ADEE e o loop termi!a.
A Estrutura do Doop /E*EA) C8)D .:
REPEAT
6comandos 'ue sero e"ecutados uma ve1
a $ada itera%&o do loopv
UNTIL condio
(Q
Esta estrutura de loop sempre reali4a uma itera%&o a!tes da $o!di%&o ser a-aliada pela primeira -e42 e
$o!ti!ua as suas itera%0es at. 1ue a $o!di%&o se tome )/CEg a repeti%&o termi!a 1ua!do a $o!di%&o se tor!ar
)/CE. >s $oma!dos mBltiplos de!tro de um loop /E*EA) C8)D !&o !e$essitam de mar$adores @EF8 e E8D.
As pala-ras reser-adas /E*EA) e C8)D ser-em $omo delimitadores para os $oma!dos de!tro do loop.
Algu!s programadores s&o $autelosos !o uso dg estruturas de loop 1ue e<e$utam automati$ame!te a
primeira itera%&o a!tes de a-aliar a $o!di%&o de $o!trole. Esses programadores podem pre+erir utili4ar os loops
PIDE2 ao i!-.s dos loops /E*EA) C8)D2 !a maioria dos programas de repeti%&o. 5ora isso2 o /E*EA)
C8)D . -a!ta7oso2 desde 1ue reser-emos o seu uso para situa%0es !as 1uais sempre dese7emos 1ue se7a e<e$utada
pelo me!os uma itera%&o.
Exemplo
Program ExemploWhile
uses crt;
Var op: char;
procedure imprimir;
begin
...
end;
procedure excluir;
begin
...
end;
Begin
op := 0;
while op <> `9' do
begin
clrscr;
write(`1 - Imprimir');
write(`2 - Excluir');
write(`9 - Sair');
case op of
`1': imprimir;
`2': excluir;
end;
end;
end.
Program ExemploRepeat
uses crt;
Var op: char;
procedure imprimir;
begin
...
end;
procedure excluir;
begin
...
end;
Begin
repeat
clrscr;
write(`1 - Imprimir');
write(`2 - Excluir');
((
write(`9 - Sair');
case op of
`1': imprimir;
`2': excluir;
end;
until op = `9'
end.
(7
+F) FUNES E PROCEDIMENTOS
*ara +a$ilitar a $o!stru%&o de gra!des programas2 utili4a-se o m.todo de modulari4a%&o2 1ue $o!siste !a
di-is&o do programa em pe1ue!as etapas2 1ue s&o os m,dulos ou subprogramas.
> primeiro m,dulo ou subprograma2 por o!de $ome%a a e<e$u%&o do programa re$ebe o !ome de programa
pri!$ipal2 e as outras s&o os subprogramas2 1ue s&o e<e$utados sempre 1ue o$orre uma $hamada dos mesmos2
atra-.s da espe$i+i$a%&o dos seus !omes.
A di-is&o de um programa em subprogramas . parti$ularme!te -a!ta7osa 1ua!do uma mesma se1_#!$ia de
$oma!dos de-e ser repetida -6rias -e4es !o programa2 o 1ue permite a $o!+e$%&o de um B!i$o subprograma2 1ue
pode ser +re1_e!teme!te soli$itado e e<e$utado para -alores di+ere!tes de seus par9metros.
>utra import9!$ia da modulari4a%&o . 1ue ela permite 1ue di+ere!tes programadores trabalhem
simulta!eame!te !a solu%&o de um mesmo problema2 atra-.s da $odi+i$a%&o separada dos di+ere!tes m,dulos.
8a li!guagem *as$al temos dois tipos de subprogramas: pro$edime!tos e +u!%0es.
+F)+ Pro(!$im!%to
Cm pro$edime!to :*/>"EDC/E; . um tipo de subprograma 1ue se assemelha em muito $om um
programa em *as$al. *ossui um $abe%alho de ide!ti+i$a%&o $om o !ome do pro$edime!to2 uma lista op$io!al de
par9metros de $omu!i$a%&o2 um blo$o de de$lara%0es e um blo$o de $oma!dos.
Cm pro$edime!to . !a realidade um programa $om -ida pr,pria2 $om suas -ari6-eis lo$ais2 mas 1ue2 para
ser pro$essado2 tem 1ue ser soli$itado pelo programa pri!$ipal ou por outro pro$edime!to.
Cm pro$edime!to pode a$essar todas as -ari6-eis globais2 desde 1ue !&o este7a rede+i!idas de!tro do
pro$edime!to. Ee uma -ari6-el +or rede+i!ida2 . $riada uma !o-a -ari6-el lo$al2 sem ter !e!huma rela%&o $om a
-ari6-el global :1ue dei<a de ser -is?-el de!tro do subprograma;.
>s pro$edime!tos de-em ser de$larados a!tes de serem $hamadas2 por.m em algu!s $asos2 temos a
!e$essidade de de$larar uma roti!a ap,s sua $hamada e !esse $aso2 de-emos utili4ar a de$lara%&o FORWARD.
Exemplo:
program tic_tac;
uses crt;
var o : integer;
procedure tic(VAR m: integer); FORWARD;
procedure tac(VAR n: integer);
begin
writeln('Tac');
n:= n - 1;
if n > 0 then tic(n);
end;
procedure tic;
begin
writeln(' Tic');
tac(m);
end;
begin
clrscr;
o:= 10;
tac(o);
readkey;
end.
(O
+F). F"%9:!
Em *as$al as +u!%0es podem ser -istas $omo um pro$edime!to 1ue retor!a um B!i$o -alor.
Cma +u!%&o :5C8")>8; de-ol-e ao programa 1ue a ati-ou ape!as um -alor2 $al$ulado por ela mesma e
alo$ado !a -ari6-el 1ue de+i!e o !ome da 5C8")>8.
*ara tra!s+erir o $o!trole para uma 5C8")>8 !&o basta me!$io!ar seu !ome2 $omo !o $aso de
*/>"EDC/EE. Eua soli$ita%&o . $ara$teri4ada por um $oma!do de atribui%&o de -alor.
Em uma +u!$tio! de-e-se de$larar seu tipo2 1ue $oi!$ide $om o tipo de -alor por ela $al$ulado :i!teger2
real2 $har2 bHte2 boolea! ou stri!g;.
Exemplo:
PROGRAM FUNCAO;
USES CRT;
VAR pr, imp: REAL;
FUNCTION calc_imposto(preco: REAL):REAL;
BEGIN
calc_imposto = preco * 0.17;
END;
BEGIN
READLN(pr);
imp = calc_imposto(pr);
WRITELN('Preo: ',pr,' Imposto: ',imp);
END.
+F)I P#rXm!tro
*ar9metros s&o todas as -ari6-eis ou -alores passados para um subprograma. )amb.m s&o $hamados de
argume!tos.
+F)I)+ P##g!m $! 0#rXm!tro
Zua!do a -ari6-el 1ue se 1uer trabalhar !&o . -is?-el de!tro do subprograma ela de-e ser passada $omo
par9metro.
I6 duas +ormas de se passar uma ou mais -ari6-eis: por -alor ou por re+er#!$ia.
+F)I)+)+ P##g!m $! 0#rXm!tro 0or *#lor
Zua!do uma -ari6-el . passada por -alor para um prodedime!to2 seu -alor origi!al !&o . alterado pelo
subprograma.
De$lara%&o:
$roced"re <nome>(<variveis>)<tipo>*+
Exemplo
Program PorValor;
Uses CRT;
var a, b, c: real;
procedure aumento(x, y, z: real);
begin
x:= x * 1.1;
y:= y * 1.2;
z:= z * 1.3;
('
writeln('No procedimento: ');
writeln(x:0:2);
writeln(y:0:2);
writeln(z:0:2);
end;
begin
a:= 100;
b:= 200;
c:= 300;
aumento(a, b, c);
writeln('No programa principal: ');
writeln(a:0:2);
writeln(b:0:2);
writeln(c:0:2);
readkey;
end.
+F)I)+). P##g!m $! 0#rXm!tro 0or r!&!r<%(i#
Zua!do uma -ari6-el . passada por re+er#!$ia para um prodedime!to2 seu -alor origi!al . alterado !a
e<e$u%&o do subprograma.
De$lara%&o:
$roced"re <nome>(var <variveis>)<tipo>*+
>bser-e 1ue o 1ue $ara$teri4a uma passagem de par9metro por re+er#!$ia . a de$lara%&o das -ari6-eis
re$ebidas $omo argume!to do tipo VAR.
Exemplo
Program PorReferencia;
Uses CRT;
var a, b, c: real;
procedure aumento(var x, y, z: real);
begin
x:= x * 1.1;
y:= y * 1.2;
z:= z * 1.3;
writeln('No procedimento: ');
writeln(x:0:2);
writeln(y:0:2);
writeln(z:0:2);
end;
begin
a:= 100;
b:= 200;
c:= 300;
aumento(a, b, c);
writeln('No programa principal: ');
writeln(a:0:2);
writeln(b:0:2);
writeln(c:0:2);
readkey;
end.
*ode-se ai!da mes$lar os argume!tos2 $om di-ersos tipos e +ormas de passagem dos mesmos.
Exemplo
70
Program DiversosParametros;
Uses CRT;
var a, b, c: real;
nome: string;
procedure aumento(var x: real; y: real; var z: real; nomelocal: string);
begin
x:= x * 1.1;
y:= y * 1.2;
z:= z * 1.3;
writeln(nomelocal);
writeln(x:0:2);
writeln(y:0:2);
writeln(z:0:2);
end;
begin
clrscr;
a:= 100;
b:= 200;
c:= 300;
nome:='No procedimento:';
aumento(a, b, c, nome);
nome:='No programa principal:';
writeln(nome);
writeln(a:0:2);
writeln(b:0:2);
writeln(c:0:2);
readkey;
end.
+F)I). Arg"m!%to 0##$o # 0rogr#m#
8omalme!te as li!guage!s de programa%&o permitem 1ue o programa re$eba par9metros passados !a li!ha
de $oma!do !o mome!to da sua ati-a%&o. Assim2 1ua!do usamos o $oma!do &orm#t #1 ou (#% #1 passamos o
argume!to #1 para o programa.
>s argume!tos passados aos programas em *as$al s&o -eri+i$ados atra-.s de dois $oma!dos :-ari6-eis 1ue
est&o arma4e!ados os par9me!tros;:
*A/A3">C8): arma4e!a o !Bmero de argume!tos passados !a li!ha de $oma!do.
*aram$ou!t igual a 4ero i!di$a 1ue !&o h6 argume!tos !a li!ha de $oma!do.
*A/A3E)/: arma4e!a as stri!gs de argume!tos da li!ha de $oma!do. *aramEtr:1; . o
primeiro argume!to.
Exemplo:
program parametros;
uses crt;
var I: integer;
begin
if ParamCount = 0 then
begin
Writeln('Este programa no tem argumentos!');
exit;
end;
for I := 1 to ParamCount do
Writeln('O ',I,' parmetro : ',ParamStr(I));
end.
71
+F)F R!("ri*i$#$!
Cm subprograma re$ursi-o . a1uele 1ue $hama a si pr,prio. *ode ser e<e$utado -6rias -e4es para -alores
di+ere!tes de seus par9metros.
A re$orr#!$ia ou re$ursi-idade pode ser +a$ilme!te $ompree!dida 1ua!do !a pr6ti$a surge a !e$essidade de
se de+i!ir alguma $oisa em +u!%&o dela mesma.
Eabe-se2 por e<emplo2 1ue o +atorial de um !Bmero 8 pode ser obtido multipli$a!do-o pelo +atorial de seu
prede$essor 8 - 12 ou se7a2 para 8 positi-o tem-se 1ue:
5A):8; d 8 l 5A):8 - 1;.
Esse e outros tipos de re$orr#!$ia s&o tratados i!ter!ame!te pela m61ui!a atra-.s do uso de pilhas. Assim
se!do2 $ada -e4 1ue o subprograma $hama a si pr,prio2 mais i!+orma%0es s&o $olo$adas !a pilha. > retor!o se
-eri+i$a pelo pro$esso i!-erso2 1ua!do os resultados $al$ulados -&o se!do retirados da pilha.
E<emplo de um programa re$ursi-o 1ue $al$ula o +atorial de um !Bmero:
PROGRAM RECURSIVO;
uses CRT;
var
num: integer;
function fatorial(n: integer): longint;
begin
if n=0 then fatorial:=1
else fatorial := n * fatorial(n-1);
end;
begin
write('Numero: ');
readln(num);
writeln('Fatorial de ',num,': ',fatorial(num));
readln;
end.
72
+K) PROCEDIMENTOS E FUNES DAS UNIDADES PADRO
+K)+ M#%i0"l#9;o $! Stri%g ! Co%*!r;o
Length (s : :tring : <nteger&
retor!a a 1ua!tidade de $ara$teres $o!tidos em uma stri!g
Concat (s.L Ms/ 55 snN : :tring : :tring&
retor!a uma stri!g 1ue . a u!i&o de todas as stri!gs passadas $omo par9metro
Delete (E(> s : :tring & indiceL contador : <nteger &
retira um ou mais $ara$teres de uma determi!ada stri!g
Copy (s : :tring & indiceL contador : <nteger : :tring &
retor!a uma substri!g de uma stri!g passada $omo par9metro
Insert (fonte : :tring & E(> destino : :tring &
!sere uma substri!g em uma posi%&o preestabele$ida.
Pos (pesq : :tring & obCeto : :tring : b)te&
retor!a a posi%&o 1ue uma substri!g o$upa de!tro de uma stri!g passada $omo par9metro.
Val (fonte : :tring & Ear destinoL Ear erro : <nteger &
"o!-erte uma stri!g para -alor !um.ri$o e retor!a o $,digo de erro.
Str (valor M:taman-o M:decimaisNN& E(> destino : :tring &
"o!-erte uma -ari6-el !um.ri$a em stri!g.
+K). M#%i0"l#9;o N"m3ri(#
ABS (+ : =ipo&
/etor!a o -alor absoluto de uma e<press&o
ARCA! (+ : >eal : >eal &
/etor!a o ar$o de ta!ge!te do argume!to utili4ado
C"S (r : >eal : >eal &
/etor!a o -alor do $o-se!o de um argume!to passado $omo par9metro.
D#C (E(> + M& n N: Bongint
De$reme!ta uma -ari6-el !um.ri$a i!teira em uma ou mais u!idades
#$P (r : >eal : >eal &
/etor!a o -alor e<po!e!$ial
%RAC (r : >eal : >eal &
/etor!a a parte +ra$io!6ria
&I ( r : b)te&
/etor!a a parte alta de uma $o!sta!te !um.ri$a
I!C (E(> + M& n N: Bongint
!$reme!ta uma -ari6-el !um.ri$a i!teira em uma ou mais u!idades
I! (r : >eal : >eal &
/etor!a o -alor i!teiro de uma -ari6-el do tipo real
L! (r : >eal : >eal &
/etor!a o logaritmo !atural
L" ( r : b)te&
/etor!a a parte bai<a de uma $o!sta!te !um.ri$a
73
PI : >eal &
/etor!a o -alor de *
"DD (n : Bongint : Ioolean&
/etor!a um -alor -erdadeiro se o argume!to +or par
RA!D"' (n : Oord : (inteiro ou real
/etor!a um !Bmero aleat,rio 1ue pode -ariar de 0 a 12 ou por um limite passado $omo par9metro.
RA!D"'I(# &
*ermite gerar uma !o-a seme!te para gera%&o de !Bmeros aleat,rios.
R")!D (r : >eal : Bongint &
/etor!a um !Bmero real $o!-ertido em i!teiro e arredo!dado.
SI! (r : >eal : >eal &
/etor!a o -alor do se!o
S*R ( r : (numPrico : numPrico&
/etor!a o par9metro ele-ado ao 1uadrado.
S*R (r : >eal : >eal &
/etor!a a rai4 1uadrada
S+AP ( i : (qualquerQinteiro : (o mesmo tipo do parRmetro
!-erte o -alor em sua ordem
R)!C (r : >eal : Bongint&
/etor!a um -alor i!teiro tru!$ado !as $asas de$imais
8em todas as +u!%0es 1ue !e$essitamos est&o pro!tas e ]s -e4es . !e$ess6rio utili4ar uma +,rmula
e1ui-ale!te:
[
?
Y E?P > LN > [ @ \ ? @
Y E?P > LN > [ @ \ > + - ? @@
LOG :<; Y LN > U @ - LN > +/ @
+K)I M#%i0"l#9;o $! Dir!tBrio
',DIR (s : :tring
"ria um subdiret,rio
-#DIR (drive : b)te& E(> s : :tring &
/etor!a o diret,rio $orre!te da u!idade passada $omo par9metro:
2 - ?nidade corrente
. - ?nidade (
/ - ?nidade I
4 - ?nidade ;
C&DIR (s : :tring
3uda o subdiret,rio $orre!te para o espe$i+i$ado
R'DIR ( s : :tring
/emo-e um subdiret,rio
+K)F U%it CRT
ASSI-!CR (E(> arq : =@S=&
Asso$ia um ar1ui-o do tipo te<to $om a $o!sole para a sa?da.
,#.PR#SS#D : Ioolean&
/etor!a -erdadeiro se +or pressio!ada uma te$la
7J
+I!D"+ (+.L ).L +/L )/ : I)te&
De+i!e uma 6rea de trabalho !o -?deo
CLR#"L &
Dimpa todos os $ara$teres da li!ha2 a partir da posi%&o do $ursor
+&#R#$ : b)te &
/etor!a a $oorde!ada U do $ursor
+&#R#. : b)te &
/etor!a a $oorde!ada r do $ursor
D#LLI!# &
Elimi!a a li!ha em 1ue est6 o $ursor
I!SLI!# &
!sere uma li!ha o!de est6 o $ursor
#$C"L"R (cor : I)te
Eele$io!a a $or de te<to:
2 - IB(;T - U>@=G 0 - D(>TJ>(V - ;<WX( @:;?>G
. - IB?@- (X?B 8 - B<JY=IB?@ - (X?B ;B(>G
/ - J>@@W -E@>D@ .2 - B<JY=J>@@W - E@>D@ ;B(>G
4 - ;V(W - ;<(WG .. - B<JY=;V(W - ;<(WG ;B(>G
7 - >@D -E@>F@BYG ./ - B<JY=>@D - E@>F@BYG ;B(>G
3 - F(J@W=( - F(J@W=( .4 - B<JY=F(J@W=( - F(J@W=( ;B(>G
6 - I>GOW - F(>>GF .7 - V@BBGO - (F(>@BG
1 - B<JY=J>(V - ;<WX( ;B(>G .3 - OY<=@ - I>(W;G
De-e-se somar 12O ao !Bmero da $or para o te<to +i$ar pis$a!te :@D8S;.
#$BAC,-R")!D (cor : I)te
Eele$io!a a $or de +u!do:
2 - U>@=G
. - (X?B
/ - E@>D@
4 - ;<(WG
7 - E@>F@BYG
3 - F(J@W=(
6 - F(>>GF
1 - ;<WX( ;B(>G
&I-&VID#" &
Eele$io!a a $or de te<to para alta i!te!sidade
L"+VID#" &
Eele$io!a a $or de te<to para bai<a i!te!sidade
!"R'VID#" &
/etor!a a $or de te<to ao !ormal
#$'"D# (modo
Eele$io!a o modo de te<to:
2 - 72+/3 (daptador colorido - Iranco/Ureto
. - 72+/3 (daptador colorido - ;olorido
/ - 02+/3 (daptador colorido - Iranco/Ureto
4 - 02+/3 (daptador colorido - ;olorido (default
1 - 02+/3 (daptador monocrom$tico em Iranco/Ureto
/36 - Uara @J(/EJ( 74 ou 32 lin-as
S")!D (-Z : Oord&
7Q
Dispara o alto-+ala!te i!ter!o a uma +re1_#!$ia espe$i+i$ada.
5re1_#!$ia em Iert4 das !otas:
D[\ >]\ A^\ :GB\ B^\
342 383 121 187 08.
322 36. 642 661 178 07. 877
D[ >] F< A^ :GB B^ :<
D[\ >]\ A^\ :GB\ B^\
.238 ..08 .7.7 .301 .10/
.222 ..// ./62 .443 .780 .60/ .000
D[ >] F< A^ :GB B^ :<
!"S")!D &
Desati-a a gera%&o de som $ausada pelo pro$edime!to E>C8D.
+K)K F"%9:! (om Or$i%#i
PR#D (vari$vel
/etor!a o prede$essor do argume!to passado
S)CC (vari$vel
/etor!a o su$essor do argume!to passado
+K)L U%it DOS
D"SV#RSI"! : Oord &
/eto!a a -ers&o do sistema. A parte bai<a retor!a a -ers&o e a parte bai<a a atuali4a%&o
DIS,%R## (drive : I)te : Bongint&
/etor!a o !Bmero de bHtes li-res !o dri-e.
DIS,SI(# (drive : I)te : Bongint &
/etor!a o total de bHtes da u!idade de dis$o
#!VC")! : <nteger &
/etor!a o !Bmero de stri!gs $o!tidas !o ambie!te D>E
#!VSR (indice : <nteger : :tring &
/etor!a a stri!g do ambie!te D>E $orrespo!de!te ao ?!di$e.
-##!V (ambiente : :tring : :tring &
/etor!a o $o!teBdo da stri!g passada $omo par9metro relati-a ao ambie!te D>E.
#$#C (camin-oL lin-adecomando : :tring &
E<e$uta um $oma!do passado $omo par9metro. De-e ser usado em $o!7u!to $om EPA*=E")>/E.
Exemplo
Program ExecutaProgrDos;
{$M $4000,0,0 } { 16K stack, no heap }
uses Dos;
var
ProgramName, CmdLine: string;
begin
Write('Programa para executar: ');
7(
ReadLn(ProgramName);
Write('Argumento a ser passado para ',ProgramName, ': ');
ReadLn(CmdLine);
WriteLn('Executando...');
SwapVectors;
Exec(ProgramName, CmdLine);
SwapVectors;
WriteLn('...voltando da Execu|,o');
if DosError <> 0 then { Error? }
WriteLn('DOS error #', DosError)
else
WriteLn('Exec com sucesso. ',
'Codigo de Saida do Processo de execuo = ',
DosExitCode);
end.
D"S#$IC"D# : Oord &
/etor!a o $,digo de sa?da de um pro$esso
%#$PA!D ( pat-: U(=Y:=> : U(=Y:=>&
/etor!a uma stri!g $o!te!do o !ome de programa passado $omo par9metro em sua totalidade.
%S#ARC& ( pat-: U(=Y:=>& lista : :tring : U(=Y:=>&
*ro$ura um determi!ado ar1ui-o em uma lista de diret,rios
%SPLI (pat-: U(=Y:=>& E(> dir: D<>:=>& E(> nome: W(F@:=>& E(> e+t: @S=:=>&
E<plode o !ome do ar1ui-o passa!do $omo par9metro2 em tr#s partes o diret,rio2 o !ome do ar1ui-o e
a e<te!s&o.
%I!D%IRS (camin-o : :tring & atributo : Oord & E(> s : :@(>;Y>@;&
*ro$ura um determi!ado ar1ui-o2 espe$i+i$a!do seu !ome e seu atributo
%I!D!#$ (E(> s : :@(>;Y>@;&
De-ol-e a pr,<ima e!trada2 ap,s 58D5/E).
-#CBR#A, (E(> brea, : Ioolean&
/etor!a o estado da $he$agem de ")/D-@/EAS.
S#CBR#A, (brea, : Ioolean&
Altera o estado da $he$agem de ")/D-@/EAS.
-#V#RI%. (E(> v: Ioolean&
/etor!a o estado do +lag de -eri+i$a%&o do Eistema >pera$io!al
S#V#RI%. (v : Ioolean&
Altera o estado do +lag de -eri+i$a%&o do Eistema >pera$io!al
-#DA# (E(> anoL mesL diaL diaQsemana : Oord &
/etor!a a data $orre!te do sistema opera$io!al
S#DA# (anoL mesL dia : Oord &
Altera a data do sistema opera$io!al
-#I'# (E(> -oraL minL segL cen : Oord &
/etor!a a hora do sistema opera$io!al
S#I'# (-oraL minL segL cen : Oord &
Altera a hora do sistema opera$io!al
PAC,I'# (E(> data : D(=@=<F@& E(> ftime : Bongint &
"ompa$ta data e hora em J bHtes. A hora e a data de-er&o estar em um registro DA)E)3E
prede+i!ido !a C!it D>E:
D(=@=<F@ = record
)earL mont-L da)L -ourL minL sec : Oord &
@WD&
77
)!PAC,I'# (ftime : Bongint & E(> data :D(=@=<F@&
Des$ompa$ta um -alor de J bHtes para o registro DA)E)3E.
-#%I'# (E(> arquivoL E(> d- : Bongint &
/etor!a a hora e a data da Bltima atuali4a%&o de um ar1ui-o.
S#%I'# (E(> arquivoL E(> d- : Bongint &
Estabele$e uma !o-a data e hora de Bltima gra-a%&o em um ar1ui-o.
-#%AR (arquivo& E(> atrib : Oord &
/etor!a o atributo de um determi!ado ar1ui-o:
>@(DGWBV = _2.& (somente leitura
Y<DD@W = _2/& (escondido
:V:A<B@ = _27& (arquivo de sistema
EGB?F@<D = _20& (nome de volume
D<>@;=G>V = _.2& (diret`rio
(>a?<E@ = _/2& (arquivo
(WVA<B@ = _4A& (sem definio
S#%AR (E(> arquivo& atrib : Oord &
Estabele$e um !o-o atributo para um ar1ui-o
-#I!V#C (nuint : I)te & E(> vetor : pointer&
/etor!a o e!dere%o de mem,ria de um -etor de i!terrup%&o espe$?+i$o
S#I!V#C (nuint : I)te & E(> vetor : pointer&
Determi!a um !o-o e!dere%o de mem,ria de um -etor de i!terrup%&o espe$?+i$o
S+APV#C"RS &
*ermite 1ue se7am sal-os todos os -etores de i!terrup%&o do sistema.
I!R (intnro : I)te & E(> reg : >@J<:=@>:&
*ermite e<e$utar uma i!terrup%&o do sistema opera$io!al. De-e-se passar $omo par9metro o !Bmero
da i!terrup%&o e um registro dos registradores2 prede+i!ido !a C!id D>E:
>@J<:=@>: = >@;G>D
case integer of
2: ((SL ISL ;SL DSL IUL :<L D<L D:L @:L AB(J: : Oord &
.: ((BL (YL IBL IYL ;BL ;YL DBL DY : I)te &
@WD&
'SD"S (E(> reg : >@J<:=@>:&
E<e$uta uma $hamada !a i!terrup%&o 21I do sistema opera$io!al.
,##P (saida : Oord &
)ermi!a um programa e ma!t.m reside!te !a mem,ria.
Exemplo de um programa que causa um click cada vez que uma tecla
pressionada:
Program ExemploKeep;
{$M $800,0,0 } { 2K stack, no heap }
uses Crt, Dos;
var
KbdIntVec : Procedure;
{$F+}
procedure Keyclick; interrupt;
begin
if Port[$60] < $80 then
begin
Sound(5000);
Delay(1);
Nosound;
end;
inline ($9C);
7O
KbdIntVec;
end;
{$F-}
begin
GetIntVec($9,@KbdIntVec);
SetIntVec($9,Addr(Keyclick));
Keep(0);
end.
7'
+L) TIPOS ESTRUTURADOS
>s tipos estruturados di+erem do tipo simples pelo +ato de poderem agregar mais de um $ompo!e!te
:i!+orma%&o;. "ada $ompo!e!te de um tipo estruturado pode ser uma -ari6-el de um tipo simples ou estruturado.
A li!guagem *as$al agrupa os tipos estruturados de a$ordo $om os tipos de $ompo!e!tes 1ue podem
agregar: os )ipos Estruturados Iomog#!eos2 1ue s, podem agregar $ompo!e!tes do mesmo tipo e os Ieterog#!eos2
1ue podem agregar tipos di+ere!tes.
"omo )ipos Iomog#!etos2 o *as$al !os o+ere$e os V!tor! :A//Ar;2 os Ar]"i*o :5DE; e o Co%O"%to
:EE);.
"omo )ipo Ieterog#!eo o *as$al !os o+ere$e o R!gitro :/E">/D;.
+L)+ V!tor! U%i$im!%io%#i ! M"lti$im!%io%#i >M#triU!@
A pala-ra ARRA[ de+i!e a $o!stru%&o de matri4es e a de+i!i%&o de matri4es tal-e4 se7a uma das estruturas
de dados mais $o!he$idas. Estas podem ter um !Bmero +i<o de eleme!tos de+i!idos por uma +ai<a de ?!di$es e esta
+ai<a pode ter mais de um !?-el.
Zua!do a +ai<a possui um B!i$o !?-el :li!ha;2 $ostumamos $hamar de -etor e 1ua!do possui mais de um
!?-el ou li!ha2 $hamamos de matri4. Cm -etor . uma matri4 de uma B!i$a li!ha.
Cma matri4 possui 1uatro propriedades b6si$as:
a; >s ite!s de dados i!di-iduais !a matri4 s&o $hamados de eleme!tos.
b; )odos os eleme!tos de-em ser do mesmo tipo de dados.
$; )odos os eleme!tos s&o arma4e!ados $o!tiguame!te !a mem,ria do $omputador2 e em li!guagem " o
?!di$e do prime!to eleme!to sempre ser6 4ero.
d; > !ome da matri4 . um -alor $o!sta!te 1ue represe!ta o e!dere%o do primeiro eleme!to !a matri4.
"omo todos os eleme!tos s&o do mesmo tama!ho2 !&o podemos de+i!ir matri4es usa!do uma mistura de
tipos de dados2 pois a lo$ali4a%&o de um eleme!to . +eita $om base !o e!dere%o do primeiro eleme!to mais o
deslo$ame!to propor$io!al ao ?!di$e.
As matri4es podem ser "%i$im!%io%#i 1ua!do o a$esso a um de seus eleme!tos . +eito atra-.s de um
B!i$o ?!di$e2 tamb.m $o!he$ida $omo vetores em *as$al2 ou m"lti$im!%io%#i 1ua!do possuem mais 1ue uma
dime!s&o2 se!do !e$ess6rio mais de um ?!di$e para a$essar um de seus eleme!tos.
Cma matri4 u!idime!sio!al ou -etor em *as$al . de+i!ido $om o uso da pala-ra reser-ada #rr#h2 seguida
de seus limites i!+erior e superior e!tre $ol$hetes2 da pala-ra reser-ada o& e do tipo de $ompo!e!te do -etor.
S%om!V!torT 1 ARRA[ `SlimVi%&T )) SlimV"0Ta o& STi0oCom0o%!%t!T
E<:
Alunos: Array[1..40] of integer;
Cma matri4 multidime!sio!al pode ser $omparada a uma tabela de duas ou mais dime!s0es2 se!do
!e$ess6rios ta!tos ?!di$es 1ua!tas +orem as dime!s0es.
Cma matri4 multidime!sio!al em *as$al . de+i!ida tamb.m $om o uso da pala-ra reser-ada #rr#h2 seguida
de seus limites i!+erior e superior para $ada dime!s&o2 separada por -?rgulas2 e!tre $ol$hetes2 da pala-ra reser-ada
o& e do tipo de $ompo!e!te do -etor.
S%om!V!torT 1 ARRA[ `SlimVi%&T )) SlimV"0TPSlimVi%&T )) SlimV"0TP SlimVi%&T )) SlimV"0Ta o&
STi0oCom0o%!%t!T
E<:
Notas: Array[1..40,1..3] of integer;
O0
Cma matri4 pode ser de$larada e i!i$iali4ada de$lara!do-se !o blo$o de $o!sta!tes:
const
num1: array [1..5] of integer = (2,4,6,8,10);
num2: array [1..2,1..5] of integer =
((10,20,30,40,50),(15,25,35,45,55));
>bser-e 1ue !&o se pode usar uma -ari6-el !a de+i!i%&o da matri4 para dime!sio!ar o seu tama!ho2 pois o
$ompilador pre$isa alo$ar a mem,ria !e$ess6ria !o mome!to da $ompila%&o.
Exemplo:
Program Arrays;
Uses CRT;
Var
Vetor: array[1..10] of integer;
Matriz: array[1..5,1..10] of integer;
i, j:integer;
begin
clrscr;
Writeln('Lendo Valores do Vetor: ');
for i:= 1 to 10 do
begin
write('Elemento ',i,': ');
readln(Vetor[i]);
end;
Writeln('Lendo Valores da Matriz: ');
for i:= 1 to 5 do
begin
for j:= 1 to 10 do
begin
write('Elemento [', i, ',' , j, ']: ');
readln(Matriz[i,j]);
end;
end;
Writeln('Escrevendo Valores do Vetor: ');
for i:= 1 to 10 do
begin
writeln('Elemento ',i,': ',Vetor[i]);
end;
Writeln('Escrevendo Valores da Matriz: ');
for i:= 1 to 5 do
begin
for j:= 1 to 10 do
begin
writeln('Elemento [', i, ',' , j, ']: ',Matriz[i,j]);
end;
end;
readln;
end.
+L). Etr"t"r#
A de$lara%&o /E">/D permite-!os de+i!ir um registro:
Si$!%ti&i(#$orT Y RECORD
S(#m0o+T 1 ti0oe
S(#m0o.T 1 ti0oe
O1
) ) )
S(#m0o%T 1 ti0oe
ENDe
/EFE)/> . um grupo de i!+orma%0es relati-as a uma mesma e!tidade. Estas i!+orma%0es podem ter
$ara$ter?sti$as di+ere!tes2 $omo em um /.F.2 o!de temos di-ersos $ampos $om !ome2 !ome do pai2 !ome da m&e2
!Bmero do registro2 et$.
> registro tem uma parti$ularidade em rela%&o a uma matri42 e!1ua!to em uma matri4 podemos ter -6rios
eleme!tos de um B!i$o tipo2 !o registro podemos ter eleme!tos $om tipos di+ere!tes. A de+i!i%&o de um registro !o
)urbo *as$al s, pode ser +eita !a 6rea de tipos :)r*E; e assim se!do2 1ua!do de+i!imos um registro2 !a -erdade2
estamos $ria!do um tipo !o-o. *ara podermos utili4ar este tipo2 temos 1ue de$lar6-lo !a 6rea de -ari6-eis :=A/;2
76 a ma!ipula%&o dos $ampos de um ar1ui-o de-e ser +eita atra-.s da re+er#!$ia do !ome do registro e o !ome do
$ampo u!idos por um po!to :);.
Exemplos :
TYPE
registro = RECORD
nome : STRING[30];
ende : STRING[25];
fone : STRING[8];
idade : BYTE;
END;
tela = RECORD
atributo : BYTE;
caracter : CHAR;
END;
*odemos ai!da ter uma estrutura de registro seleti-o :
Exemplo:
Program ExemploRegistroSeletivo;
uses crt;
type
Classe = (Num, Str);
uniao = record
Nome: string[30];
case campo: Classe of
Num: (N: real);
Str: (S: string);
end;
var
un: uniao;
op: char;
begin
clrscr;
write('Nome: ');
readln(un.nome);
writeln('O que voce quer armazenar: [N] Numero - [S] - String?');
op:=readkey;
if upcase(op)='N' then
begin
write('Digite um numero: ');
readln(un.N);
writeln(un.nome);
O2
writeln(un.N:0:6);
end
else
begin
write('Digite uma string: ');
readln(un.S);
writeln(un.nome);
writeln(un.S);
end;
readkey;
end.
8este tipo de registro2 temos a possibilidade de -ariar a estrutura. depe!de!do da $o!di%&o e!$o!trada !o
de$orrer do programa para um $ampo-si!al pre-iame!te de$larado $omo tipo es$alar2 esta estrutura de sele%&o .
$hamada de u!i&o dis$rimi!ada2 $abe!do desta +orma ao programador ma!ter -6lida.
E<emplo de re+er#!$ia de um $ampo do registro :
PROGRAM teste_reg;
TYPE
registro = RECORD
nome :STRING[30];
ende :STRING[25];
fone :STRING[8];
idade :BYTE;
END;

VAR
reg : registro;
BEGIN
reg.nome := `Roberto';
reg.ende := `Rua Annima, 0';
reg.fone := `999-9999';
reg.idade:= 30;
writeln(`Nome: ', reg.nome);
writeln(`Endereo: ', reg.ende);
writeln(`Fone: ', reg.fone);
writeln(`Idade: ', reg.idade);
write(`Nome: ');
readln(reg.nome);
write(`Endereo: '
readln(reg.ende);
write(`Fone: '
readln(reg.fone);
write(`Idade: '
readln(reg.idade);
writeln(`Nome: ', reg.nome);
writeln(`Endereo: ', reg.ende);
writeln(`Fone: ', reg.fone);
writeln(`Idade: ', reg.idade);
END.
*ode-se tamb.m arma4e!ar os registros em mem,ria2 atra-.s do uso de -etores ou matri4es de estrutras.
Exemplo:
Program ExemploRegistroSeletivo;
uses crt;
type
O3
cadastro = record
codigo: integer;
nome: string[30];
rg: string[15];
end;
var
cad: Array [1..10] of cadastro;
i: integer;
begin
clrscr;
for i:= 1 to 10 do
begin
write('Codigo: ');
readln(cad[i].codigo);
write('Nome: ');
readln(cad[i].nome);
write('RG: ');
readln(cad[i].rg);
end;
clrscr;
for i:= 1 to 10 do
begin
writeln(cad[i].codigo, ' - ', cad[i].nome, ' - ', cad[i].rg);
end;
readkey;
end.
+L)I Co%O"%to C S!t
SET OF permite a de+i!i%&o de tipos $o!7u!tos2 1ue podem ser re+ere!$iados e ma!ipulados $omo
1ual1uer opera%&o de $o!7u!to dispo!i-el em matem6ti$a :
Si$!%ti&i(#$orT Y SET OF Sti0oTe
TYPE
carac = SET OF CHAR;
digitos = SET OF 0..9;
vogal = SET OF ('A','E','I','O','U','a','e','i','o','u');
a ma!ipula%&o dos $o!7u!tos depe!de da de$lara%&o deste tipo !a 6rea de -ari6-eis:
VAR
car : carac;
dig : digitos;
vog : vogal;
a $o!stru%&o de um $o!7u!to . +eita a partir de um $o!strutor uju uku e o $o!teBdo :
j12 32 72 112 13k w$o!7u!to dos !umeros i!teiros 12327211213v
juAu .. uKu2 uau .. u4uk w$o!7u!to das letras de uAu a uKu mi!Bs$ulas e maiBs$ulas v
j k w$o!7u!to -a4iov
OJ
As opera%0es $om $o!7u!tos s&o similares ]s opera%0es de $o!7u!tos em matem6ti$a.
Atribui%&o de -alores para $o!7u!tos: 1Y
car := ['s','S','n','N'];
*ermite a u!i&o e!tre $o!7u!tos: W
dig := [1,2,3,4,5] + [2,4,6,8,10];
{resulta [1,2,3,4,5,6,8,10]}
Di+ere!%a e!tre $o!7u!tos: C
vog := ['a','u'] - ['a','e','i','o']; {resulta ['u']}
!terse$%&o e!tre $o!7u!tos: \
car := ['s','S','n','N'] * ['s','S'];
{resulta nos elementos comuns entre ambos ['s','S']}
E ai!da rela%&o e!tre $o!7u!tos:
/
if conj1 = conj2
{verdadeiro se todos elementos forem idnticos}
01
if conj1 <> conj2
{verdadeiro se pelo menos um elemento pertencer a ambos os conjuntos}
0/
if conj1 <= conj2
{verdadeiro se todos elementos de conj1 estiverem contidos em conj2}
1/
if conj1 >= conj2
{verdadeiro se todos elementos de conj2 estiverem contidos em conj1}
I!
if conj1 IN conj2
{verdadeiro se conj1 for um elemento de conj2}
OQ
+M) 4I4LIOGRAFIA
">/3E82 )homas I. M DEEE/E>82 "harles E. M /=EE)2 /o!ald D. I%tro$"(tio% to Algorit2m.
8ew rorG. 3$Fraw-Iill2 1''0.
5A//E/2 IarrH et alli Algoritmo Etr"t"r#$o. /io de La!eiro. Editora Fua!abara Sooga! E.A2 1'O'.
2Q2p.
F>))5/ED2 @Hro! E. Progr#m#9;o !m P#(#l. Disboa. 3$Fraw Iill2 1''J. Q(7p.
3A8KA8>2 Los. Augusto 8. F. M >D=E/A2 LaHr 5igueiredo. Algoritmo1 LBgi(# P#r#
D!!%*ol*im!%to $! Progr#m#9;o. E&o *aulo. Nri$a2 1''(. 270p.
3E"DE/2 a! M 3AA2 Dui4 *aulo. Progr#m#9;o ! LBgi(# (om T"r7o P#(#l. /io de La!eiro2
"ampus2 1'O'. 223p.
>/)I2 A+o!so !6$io. Algoritmo. *orto Alegre. Editora *allotti2 1'OQ. 130p.
EAD@A2 Palter Du?s "aram. T3(%i(# $! Progr#m#9;o1 Um# A7or$#g!m Etr"t"r#. E&o *aulo.
3aGro!2 3$Fraw-Iill2 1''2. 1J1p.
F>))5/ED2 @Hro! E. Progr#m#9;o !m P#(#l. Disboa. 3$Fraw Iill2 1''J. Q(7p.
F/DD>2 3aria ".lia Arruda. T"r7o P#(#l K)/ ! K)K. /io de La!eiro2 D)" - Di-ros ).$!i$os e
"ie!t?+i$os2 1''0. 3'(p.
IE/FE/)2 Douglas. Domi%#%$o o T"r7o P#(#l K. /io de La!eiro. Editora "i#!$ia 3oder!a2 1'O'.
QQ0p.
3E"DE/2 a! M 3AA2 Dui4 *aulo. Progr#m#9;o ! LBgi(# (om T"r7o P#(#l. /io de La!eiro2
"ampus2 1'O'. 223p.
>EE/2 Da!. A0r!%$# !m .+ $i# D!l02i .. /io de La!eiro. "ampus2 1''7. OJ0p.
*AD3E/2 E$ott D. G"i# $o Progr#m#$or T"r7o P#(#l &or Wi%$ob. /io de La!eiro2 Ed. "i#!$ia
3oder!a Dtda2 1''2. J70p.
/8ADD2 /oberto. T"r7o P#(#l1 *!r;o K)K. E&o *aulo. Nri$a2 1''0. J11p.
/8ADD2 /oberto2 T"r7o P#(#l M)/1 (om#%$o ! &"%9:!. E&o *aulo2 Nri$a2 1''3. Q2Qp.
O(
APNDICE A C E?ERCNCIOS
1. Es$re-a um algoritmo/programa em *as$al para ler2 $al$ular e es$re-er a m.dia aritm.ti$a e!tre dois !Bmeros.
2. Es$re-a um algoritmo/programa em *as$al para ler um !Bmero positi-o 1ual1uer2 $al$ular e es$re-er o
1uadrado e a rai4 1uadrada do mesmo.
3. Es$re-er um algoritmo/programa em *as$al 1ue leia 3 -alores: a2 b2 $ e $al$ule e es$re-a a m.dia aritm.ti$a2
harm^!i$a e geom.tri$a $orrespo!de!te.
"al$ular a m.dia aritm.ti$a pela +,rmula: a + b + c
3
"al$ular a m.dia harm^!i$a pela +,rmula: 3____
1 + 1 + 1
a b c
"al$ular a m.dia geom.tri$a pela +,rmula:
J. Es$re-er um algoritmo/programa em *as$al 1ue l# o !Bmero de um +u!$io!6rio2 seu !Bmero de horas
trabalhadas2 o -alor 1ue re$ebe por hora2 e o !Bmero de +ilhos $om idade me!or do 1ue 1J a!os e $al$ula o
sal6rio deste +u!$io!6rio.
Q. Es$re-er um algoritmo/programa em *as$al 1ue l# o !Bmero de um -e!dedor2 o seu sal6rio-+i<o2 o tota1 de
-e!das por ele e+etuadas e o per$e!tual 1ue ga!ha sobre o total de -e!das. "al$ular o sal6rio tota1 do
-e!dedor. Es$re-er !Bmero do -e!dedor e o sal6rio total.
(. Es$re-er um algoritmo/programa em *as$al 1ue l# 3 -alores a2 b2 $ 1ue s&o lados de um tri9!gulo e $al$ule a
6rea deste tri9!gulo.

o!de s d semi-per?metro
7. Cma re-e!dedora de $arros usados paga a seus +u!$io!6rios -e!dedores2 um sal6rio +i<o por m#s2 mais uma
$omiss&o tamb.m +i<a para $ada $arro -e!dido e mais Qp do -alor das -e!das por ele e+etuadas. Es$re-er um
algoritmo/programa em *as$al 1ue l# o !Bmero do -e!dedor2 o !Bmero de $arros por ele -e!didos2 o -alor
tota1 de suas -e!das2 o sal6rio +i<o e o -alor 1ue re$ebe por $arro -e!dido e $al$ula o sal6rio me!sal do
-e!dedor2 es$re-e!do-o 7u!tame!te $om o seu !Bmero de ide!ti+i$a%&o.
O. Es$re-er um algoritmo/programa em *as$al 1ue l# 3 -alores a2 b2 $2 e es$re-a os 3 -alores em ordem $res$e!te.
'. Es$re-er um algoritmo/programa em *as$al 1ue l# um $o!7u!to de J -alores i2 a2 b2 $2 o!de i . um -alor i!teiro
e positi-o e a2 b2 $2 s&o 1uais1uer -alores reais e os es$re-a. A seguir:
Ee i d 1 es$re-er os 3 -alores a2 b2 $ em ordem $res$e!te.
Ee i d 2 es$re-er os 3 -alores a2 b2 $ em ordem de$res$e!te.
Ee i d 3 es$re-er os 3 -alores de +orma 1ue o maior -alor e!tre a2 b2 $ +i$a e!tre os outros 2.
10.Es$re-er um algoritmo/programa em *as$al 1ue l# o !Bmero de um -e!dedor de uma empresa2 seu sal6rio +i<o e
o total de -e!das por ele e+etuadas.
"ada -e!dedor re$ebe um sal6rio +i<o2 mais uma $omiss&o propor$io!al ]s -e!das por ele e+etuadas.
A $omiss&o . de 3p sobre o total de -e!das at. x 1.000200 e Qp sobre o 1ue ultrapassa este -alor.
Es$re-er o !Bmero do -e!dedor2 o total de suas -e!das2 seu sal6rio +i<o e seu sal6rio total.
11.Es$re-er um algoritmo/programa em *as$al 1ue l# 3 $omprime!tos de lados a2 b2 $ e os orde!a em ordem
de$res$e!te2 de modo 1ue o a represe!te o maior dos 3 lados lidos.
Determi!e2 a seguir2 o tipo de tri9!gulo 1ue estes 3 lados +ormam2 $om base !os segui!tes $asos es$re-e!do
sempre os -alores lidos e uma me!sagem ade1uada:
Ee a f b e $ !&o +ormam tri9!gulo algum.
Ee a
2
d b
2
e $
2
+ormam um tri9!gulo ret9!gulo.
Ee a
2
f b
2
e $
2
+ormam um tri9!gulo obtus9!gulo.
Ee a
2
i b
2
e $
2
+ormam um tri9!gulo a$ut9!gulo.
O7
Ee +orem todos iguais +ormam um tri9!gulo e1uil6tero.
Ee a d b ou b d $ ou a d $ e!t&o +ormam um tri9!gulo is,s$eles
12.Es$re-er um algoritmo/programa em *as$al 1ue l# a hora de i!?$io de um 7ogo e a hora do +i!al do 7ogo
:$o!sidera!do ape!as horas i!teiras; e $al$ula a dura%&o do 7ogo em horas2 sabe!do-se 1ue o tempo m6<imo
de dura%&o do 7ogo . de 2J horas e 1ue o 7ogo pode i!i$iar em um dia e termi!ar !o dia segui!te.
13.Es$re-er um algoritmo/programa em *as$al 1ue l# o !Bmero de um +u!$io!6rio2 o !Bmero de horas por ele
trabalhadas2 o -alor 1ue re$ebe por hora2 o !Bmero de +ilhos $om idade i!+erior a 1J a!os2 a idade2 o tempo de
ser-i%o do +u!$io!6rio e o -alor do sal6rio +am?lia por +ilho.
"al$ular o sal6rio bruto2 o des$o!to do 8EE :O2Qp do sal6rio bruto; e o sal6rio +am?lia.
"al$ular o / :mposto de /e!da; $omo segue:
Ee Eal6rio @ruto f 1.Q00200 e!t&o / d 1Qp do E@
Ee Eal6rio @ruto f Q00200 e E@ id 1.Q00200 e!t&o / d Op do E@
Ee sal6rio @ruto id Q00200 e!t&o / d 0
"al$ular o adi$io!al $o!+orme espe$i+i$ado:
Ee idade superior a J0 a!os AD" d 2p do E@
Ee tempo de ser-i%o superior a 1Q a!os AD" d 3.Qp do E@
Ee tempo de ser-i%o i 1Q a!os mas superior a Q a!os e idade maior do 1ue 30 a!os e!t&o AD" d 12Qp do
E@.
"al$ular o sal6rio l?1uido. Es$re-er o !Bmero do +u!$io!6rio2 sal6rio bruta2 total dos des$o!tos2 adi$io!al e
sal6rio l?1uido.
1J.Es$re-er um algoritmo/programa em *as$al 1ue l# o !Bmero de ide!ti+i$a%&o e as 3 !otas obtidas por um alu!o
!as 3 -eri+i$a%0es e a m.dia dos e<er$?$ios 1ue +a4em parte da a-alia%&o.
*ara $ada alu!o2 $al$ular a m.dia de apro-eitame!to2 usa!do a +,rmula:
3A d 8l e 82 < 2 e 83 < 3 e 3E
7
A atribui%&o de $o!$eitos obede$e ] tabela abai<o:
3.dia de Apro-eitame!to "o!$eito
fd '.0 A
fd 7.Q e i '.0 @
fd (.0 e i 7.Q "
fd J.0 e i (.0 D
i J.0 E
> algoritmo/programa em *as$al de-e es$re-er o !Bmero do alu!o2 suas !otas2 a m.dia dos e<er$?$ios2 a
m.dia de apro-eitame!to2 o $o!$eito $orrespo!de!te e a me!sagem: mA*/>=AD>m se o $o!$eito +or A2 @2 ou
" e m/E*/>=AD>m se $o!$eito +or D ou E.
1Q.A empresa E!<uga Felo EA de$idiu $o!$eder um aume!to de sal6rios a seus +u!$io!6rios de a$ordo $om a
tabela abai<o:
S#l'rio At"#l N%$i(! D! A"m!%to
0 - J00200 1Qp
J00201 - 700200 12p
700201 - 1.000200 10p
1.000201 - 1.O00200 7p
1.O00201 - 2.Q00200 Jp
a$ima de 2.Q00200 sem aume!to
Es$re-er um algoritmo/programa em *as$al 1ue l#2 para $ada +u!$io!6rio2 o seu !Bmero e o seu sal6rio atual e
es$re-e o !umero do +u!$io!6rio2 seu sal6rio atua12 o per$e!tual de seu aume!to e o -alor do sal6rio $orrigido.
1(.Es$re-er um algoritmo/programa em *as$al 1ue l# a hora de i!?$io de um 7ogo e a hora de t.rmi!o do 7ogo2
ambas subdi-ididas em 2 -alores disti!tos2 a saber: horas e mi!utos.
"al$ular e es$re-er a dura%&o do 7ogo2 tamb.m em horas e mi!utos2 $o!sidera!do 1ue o tempo m6<imo de
dura%&o de um 7ogo . de 2J horas e 1ue o 7ogo pode i!i$iar em um dia e termi!ar !o dia segui!te.
17.Es$re-er um algoritmo/programa em *as$al 1ue l# Q -alores para a2 um de $ada -e42 e $o!ta 1ua!tos destes
-alores s&o !egati-os2 es$re-e!do esta i!+orma%&o.
OO
1O.Es$re-er um algoritmo/programa em *as$al 1ue es$re-e os !Bmeros pares e!tre 100 e 200.
1'.Es$re-er um algoritmo/programa em *as$al 1ue es$re-e a soma dos !Bmeros e!tre 0 e 100.
20.Es$re-er um algoritmo/programa em *as$al 1ue es$re-e a soma dos !Bmeros pares e!tre 0 e 100.
21.Es$re-er um algoritmo/programa em *as$al 1ue es$re-e a soma dos !Bmeros mBltiplos de 7 e!tre 100 e 200.
22.Es$re-er um algoritmo/programa em *as$al 1ue es$re-e a soma dos !Bmeros 1ue !&o s&o mBltiplos de 13 e!tre
100 e 200.
23.Es$re-er um algoritmo/programa em *as$al 1ue l# 20 -alores2 um de $ada -e42 e $o!ta 1ua!tos deles est&o em
$ada um dos i!ter-alos j02 2Qk2 :2Q2 Q0k2 :Q02 7Qk2 :7Q2 100k2 es$re-e!do esta i!+orma%&o
2J.Es$re-er um algoritmo/programa em *as$al semelha!te ao a!terior 1ue $al$ula as m.dias aritm.ti$as de $ada
i!ter-alo e as es$re-e2 7u!tame!te $om o !Bmero de -alores de $ada i!ter-alo.
2Q.Es$re-er um algoritmo/programa em *as$al 1ue l# um !Bmero e $al$ula e es$re-e 1ua!tos di-isores ele possui.
2(.Es$re-er um algoritmo/programa em *as$al 1ue l# um !Bmero e $al$ula e es$re-e o seu +atorial.
27.Es$re-er um algoritmo/programa em *as$al 1ue l# um !Bmero e es$re-a se ele m+ primom ou mno + primom
2O.Es$re-er um algoritmo/programa em *as$al 1ue es$re-e os !Bmeros mBltiplos de 7 e!tre 100 e 2002 bem $omo a
soma destes !Bmeros.
2'.Es$re-er um algoritmo/programa em *as$al 1ue l# um !Bmero !&o $o!he$ido de -alores2 um de $ada -e42 e
$o!ta 1ua!tos deles est&o em $ada um dos i!ter-alos j02 Q0k2 :Q02 100k2 :1002200k. > programa de-e e!$errar
1ua!do +or i!+ormado um -alor +ora dos i!ter-alos.
30.Es$re-er um algoritmo/programa em *as$al 1ue l# um !Bmero !&o determi!ado de -alores para m2 todos
i!teiros e positi-os2 um de $ada -e4.
Ee m +or par2 -eri+i$ar 1ua!tos di-isores possui e es$re-er esta i!+orma%&o.
Ee m +or ?mpar e me!or do 1ue 12 $al$ular e es$re-er o +atorial de m.
Ee m +or ?mpar e maior ou igua1 a 12 $al$ular e es$re-er a soma dos i!teiros de l at. m.
31.Es$re-er um algoritmo/programa em *as$al 1ue l# um !Bmero !&o determi!ados de -alores #2 todos i!teiros e
positi-os2 um de $ada -e42 e $al$ule e es$re-a a m.dia aritm.ti$a dos -alores lidos2 a 1ua!tidade de -alores
pares2 a 1ua!tidade de -alores impares2 a per$e!tagem de -alores pares e a per$e!tagem de -alores ?mpares.
32.Es$re-er um algoritmo/programa em *as$al 1ue es$re-e os !Bmeros primos e!tre 100 e 2002 bem $omo a soma
destes !Bmeros.
33.Es$re-er um algoritmo/programa em *as$al 1ue l# Q $o!7u!tos de J -alores #2 72 (2 $2 um $o!7u!to por -e4 e os
es$re-e assim $omo +oram lidos. Em seguida2 orde!e-os em ordem de$res$e!te e es$re-a-os !o-ame!te.
3J.Es$re-er um algoritmo/programa em *as$al 1ue l# 10 -alores para %2 um de $ada -e42 todos i!teiros e positi-os2
e para $ada % lido2 es$re-a a tabuada de 1 at. % de %.
1 < ! d !
2 < ! d 2!
...
! < ! d !
2
3Q.Es$re-er um algoritmo/programa em *as$al 1ue l# Q pares de -alores #2 72 todos i!teiros e positi-os2 um par de
$ada -e42 e $om # i 72 e es$re-e os i!teiros pares de # at. 72 i!$lui!do o # e 7 se +orem pares.
3(.A s.rie de 5ibo!a$$i tem $omo dados os 2 primeiros termos da s.rie 1ue s&o respe$ti-ame!te 0 e 1. A partir
deles2 os demais termos s&o $o!stru?dos pela segui!te regra:
t
n
< t
n=3
> t
n=4
Es$re-er um algoritmo/programa em *as$al 1ue gera os 10 primeiros termos da E.rie de 5ibo!a$$i e $al$ula e
es$re-e a soma destes termos.
37.Es$re-er um algoritmo/programa em *as$al 1ue l# um !Bmero !&o determi!ado de $o!7u!tos de -alores2 $ada
um +ormado pelo !Bmero de um alu!o e suas 3 !otas. "al$ular2 para $ada alu!o2 a m.dia po!derada $om
pesos respe$ti-os de J para a maior !ota e 3 paras as outras duas. Es$re-er o !Bmero do alu!o2 suas 3 !otas2
a m.dia $al$ulada e uma me!sagem maprovadom se !ota fd Q ou mreprovadom para !ota i Q.
3O.Es$re-er um algoritmo/programa em *as$al 1ue l#2 para $ada -e!dedor de uma empresa2 o seu !Bmero de
ide!ti+i$a%&o2 seu sal6rio +i<o e o total de -e!das em reais por ele e+etuadas. "ada -e!dedor re$ebe um sal6rio
O'
+i<o e uma $omiss&o propor$io!al ]s -e!das por ele e+etuadas. A $omiss&o . de 3p sobre o total de -e!das at.
x 1.000200 e Qp sobre o 1ue ultrapassa este -alor. Es$re-er2 para $ada -e!dedor2 o seu !Bmero de
ide!ti+i$a%&o2 o tota1 de suas -e!das2 seu sal6rio +i<o e seu sal6rio total.
3'.Es$re-er um algoritmo/programa em *as$al 1ue l# Q $o!7u!tos de 2 -alores2 o primeiro represe!ta!do o !Bmero
de um alu!o e o segu!do represe!ta!do a sua altura em $e!t?metros. E!$o!trar o alu!o mais alto e o mais
bai<o e es$re-er seus !Bmeros2 suas alturas e uma me!sagem di4e!do se . o mais alto ou o mais bai<o.
J0.Es$re-er um algoritmo/programa em *as$al 1ue gera e es$re-e os Q primeiros !Bmeros per+eitos. Cm !Bmero
per+eito . a1uele 1ue . igual a soma dos seus di-isores. :E<.: ( d l e 2 e 3g 2O d 1 e 2 e J e 7 e 1J et$.;.
J1.Es$re-er um algoritmo/programa em *as$al 1ue l# Q0 -alores2 um de $ada -e42 e e!$o!tra e es$re-e o maior
deles.
J2.Es$re-er um algoritmo/programa em *as$al 1ue gera os !Bmeros de 1000 a 1''' e es$re-e a1ueles 1ue
di-ididos por 11 d&o um resto igual a Q.
J3.Es$re-er um algoritmo/programa em *as$al 1ue l# um -alor 8 e $al$ula e es$re-e os 20 primeiros termos da
s.rie:
1 e 1/<
2
e 1/<
3
e 1/<
J
e ...
JJ.Es$re-er um algoritmo/programa em *as$al 1ue $al$ula e es$re-e o produto dos !Bmeros primos e!tre '2 e
1J7O.
JQ.Es$re-er um algoritmo/programa em *as$al 1ue l# 82 i!teiro e positi-o e $al$ula e es$re-e o termo de ordem 8
da su$ess&o abai<o:
ordem: 1 2 3 J Q ( 7 O ...
su$ess&o: A1 0 Q ( 11 12 17 1O ...
J(.Eupo!do 1ue a popula%&o de um pa?s A se7a da ordem de '0.000.000 de habita!tes $om uma ta<a a!ual de
$res$ime!to de 321p e 1ue a popula%&o de um pa?s @ se7a de 200.000.000 de habita!tes $om uma ta<a a!ua1
de $res$ime!to de 12Qp2 es$re-er um algoritmo/programa em *as$al 1ue $al$ula 1ua!tos a!os ser&o
!e$ess6rios para 1ue a popula%&o do pa?s A ultrapasse a do pa?s @2 ma!tidas as ta<as atuais de $res$ime!to.
J7.Es$re-er um algoritmo/programa em *as$al 1ue l# um -etor =j(k e o es$re-e. "o!te2 a seguir 1ua!tos -alores de
= s&o !egati-os e es$re-a esta i!+orma%&o.
JO.Es$re-er um algoritmo/programa em *as$al 1ue l# um -etor U:100; e o es$re-e. Eubstitua2 a seguir2 todos os
-alores !ulos de U por 1 e es$re-a !o-ame!te o -etor <
J'.Es$re-er um algoritmo/programa em *as$al 1ue l# um -etor "jQ0k e o es$re-e. E!$o!tre2 a seguir2 o maior
eleme!to de " e o es$re-a.
Q0.Es$re-er um algoritmo/programa em *as$al 1ue l# um -etor 8jO0k e o es$re-e. E!$o!tre2 a seguir2 o me!or
eleme!to e a sua posi%&o !o -etor 8 e es$re-a: ao menor elemento de n + = ?2 32 ae a sua posio + = b2 *.
Q1.Es$re-er um a1goritmo 1ue l# um -etor Aj1Qk e o es$re-e. >rde!e2 a seguir os eleme!tos de A em ordem
$res$e!te e es$re-a !o-ame!te A.
Q2.Es$re-er um algoritmo/programa em *as$al 1ue l# um -etor 8j20k e o es$re-e. )ro1ue2 a seguir2 o 1c eleme!to
$om o Bltimo2 o 2c $om o pe!Bltimo2 et$.2 at. o 10c $om o 11c e es$re-a o -etor 8 assim modi+i$ado.
Q3.Es$re-er um algoritmo/programa em *as$al 1ue l# um -etor S:20; e o es$re-e. )ro1ue2 a seguir2 os eleme!tos
de ordem ?mpar $om os de ordem par imediatame!te segui!tes e es$re-a o -etor G modi+i$ado.
QJ.Es$re-er um algoritmo/programa em *as$al 1ue l# um -etor 8j20k e o es$re-e. )ro1ue2 a seguir2 o 1c eleme!to
$om 11c2 o 2c $om o 12c2 et$.2 at. o 10c $om o 20c e es$re-a o -etor assim modi+i$ado.
QQ.Es$re-er um algoritmo/programa em *as$al 1ue l# um -etor Fj20k :gabarito; e a seguir l# um !Bmero !&o
determi!ado de !Bmeros de alu!os e -etores /j20k :resposta;2 um !Bmero e um -etor / de $ada -e4. >
!Bmero represe!ta o !Bmero de um alu!o e o -etor / represe!ta o $o!7u!to de respostas da1uele alu!o. *ara
$ada alu!o $al$ular o !c de a$ertos e $a1$ular a !ota.
nota d !Bmero de a$ertos l 0.Q
Es$re-er o !c do alu!o2 sua !ota e a me!sagem maprovadom se ti-er !ota maior ou igual a Q ou mreprovadom se
a !ota +or me!or do 1ue Q.
Q(.Es$re-er um algoritmo/programa em *as$al 1ue l# 2 -etores Sj10k e 8j10k e os es$re-e. "rie2 a seguir2 um
-etor 3 1ue se7a a di+ere!%a e!tre S e 8 :3 d S - 8; e es$re-a o -etor 3.
'0
Q7.Es$re-er um algoritmo/programa em *as$al 1ue l# um -etor Fj13k 1ue . o Fabarito de um teste da loteria
esporti-a2 $o!te!do os -alores 1 :$olu!a 1;2 2:$olu!a 2;2 e 3:$olu!a do meio;. Der2 a seguir2 para $ada
apostador2 o !c de seu $art&o e um -etor /esposta /j13k. =eri+i$ar para $ada apostador o !c de a$ertos e
es$re-er o !c do apostador e seu !Bmero de a$ertos. Ee ti-er 13 a$ertos2 a$res$e!tar a me!sagem:
mgan%ador: parab+ns@m.
QO.Es$re-er um algoritmo/programa em *as$al 1ue l#2 um -etor =j20k e o es$re-e. "ompa$te2 a seguir2 o -etor r2
retira!do dele todos os -alores !ulos ou !egati-os e es$re-a o -etor $ompa$tado.
Q'.Es$re-er um algoritmo/programa em *as$al 1ue l# um -etor =:20; e o es$re-e. /etire2 a seguir2 os eleme!tos em
dupli$ata2 $ompa$ta!do o -etor r2 e es$re-e!do o -etor $ompa$tado.
(0.Es$re-a um algoritmo/programa em *as$al 1ue l# um $o!7u!to de 30 -alores e os $olo$a em 2 -etores $o!+orme
+orem pares ou impares. > tama!ho dos -etores . de Q posi%0es. Ee algum -etor esti-er $heio2 es$re-e-lo.
)ermi!ada a leitura es$re-er o $o!teBdo dos 2 -etores. "ada -etor pode ser pree!$hido ta!tas -e4es 1ua!tas
+or !e$ess6rio.
(1.Es$re-er um algoritmo/programa em *as$al 1ue l# o 1c termo e a ra4&o de uma progress&o aritm.ti$a e gera os
-i!te termos segui!tes desta progress&o2 arma4e!a!do-os em 2 -etores de 10 eleme!tos $ada2 !o 1c os termos
de ordem ?mpar de gera%&o e !o 2c os de ordem par de gera%&o. Es$re-a a seguir os 2 -etores de +orma 1ue os
termos apare%am !a ordem em 1ue +oram gerados.
(2.Es$re-er um algoritmo/programa em *as$al 1ue gera os 10 primeiros !Bmeros primos a$ima de 100 e os
arma4e!a em um -etor U:10; es$re-e!do2 !o +i!al2 o -etor U.
(3.Es$re-a um algoritmo/programa em *as$al 1ue l# uma matri4 3:Q2Q; e $al$ula as somas:
a; da li!ha J de 3
b; da $olu!a 2 de 3
$; da diago!al pri!$ipal
d; da diago!al se$u!d6ria
e; de todos os eleme!tos da matri4
Es$re-a estas somas e a matri4.
'1
1. Es$re-er um algoritmo/programa em *as$al 1ue l# uma matri4 3:(2(; e $al$ula as somas das partes
ha$huriadas.
Es$re-er a matri4 3 e as somas $al$uladas
2. Es$re-er um algoritmo/programa em *as$al 1ue l# uma matri4 3:10210; e a es$re-e. )ro1ue2 a seguir:
A a li!ha 2 $om a li!ha O.
A a $olu!a J $om a $olu!a 10
A a diago!al pri!$ipal $om a se$u!d6ria
A a li!ha Q $om a $olu!a 10
Es$re-a a matri4 assim modi+i$ada.
3. Es$re-er um algoritmo/programa em *as$al 1ue l# uma matri4 3:(2(; e um -alor A e multipli$a a matri4 3
pelo -alor A e $olo$a os -alores da matri4 multipli$ados por A em um -etor de =:3(; e es$re-e !o +i!al o
-etor =.
J. Es$re-er um algoritmo/programa em *as$al 1ue l# uma matri4 3:Q2Q; e $ria 2 -etores ED:Q;2 E":Q; 1ue
$o!te!ham respe$ti-ame!te as somas das li!has e das $olu!as de 3. Es$re-er a matri4 e os -etores $riados.
Q. Es$re-er um algoritmo/programa em *as$al 1ue l# uma matri4 A:12213; e di-ida todos os 13 eleme!tos de $ada
uma das 12 li!has de A pelo -alor do maior eleme!to em m,dulo da1uela li!ha. Es$re-er a matri4 A lida e a
matri4 A modi+i$ada.
(. Es$re-er um algoritmo/programa em *as$al 1ue l# uma matri4 A:O2O; sem eleme!tos dupli$ados e a es$re-e.
Der2 a seguir2 um !c !&o determi!ado de -alores 8 e -eri+i1ue para $ada 8 lido se o -alor de 8 est6 ou !&o !a
matri4 A. Ee esti-er2 e!$errar a pes1uisa es$re-e!do o -alor e a me!sagem: m>oi encontrado na posio:m2
$aso $o!tr6rio es$re-er o -alor e a me!sagem: aA valor no est na matriB .b.
7. 8a teoria de Eistemas de+i!e-se $omo eleme!to m?!ima< de uma matri42 o me!or eleme!to da li!ha em 1ue se
e!$o!tra o maior eleme!to da matri4. Es$re-er um algoritmo/programa em *as$al 1ue l# uma matri4 A:10210;
e determi!a o eleme!to m?!ima< desta matri42 es$re-e!do a matri4 A e a posi%&o do eleme!to m?!ima<.
O. Es$re-er um algoritmo/programa em *as$al 1ue l# uma matri4 8:1Q2Q; e a es$re-e. =eri+i1ue2 a seguir2 1uais os
eleme!tos de 3 1ue est&o repetidos e 1ua!tas -e4es $ada um deles est6 repetido. Es$re-er $ada eleme!to
repetido $om uma me!sagem di4e!do a 1ua!tidade de -e4es 1ue apare$e 3.
'. Es$re-er um subalgoritmo/programa em *as$al )/>"A :<2 H2 42 p; 1ue tro$a e!tre si os $o!teBdos de:
A < e H2 se p d 1
A H e 42 se p d 2
A < e 42 se p d 3.
10.Es$re-er um algoritmo/programa em *as$al 1ue l# um -etor r:30; e o es$re-e. "o!te a seguir2 1ua!tos -alores
iguais a A est&o !este -etor e es$re-a esta i!+orma%&o. "rie a seguir um -etor U $o!te!do todos os eleme!tos
de = di+ere!tes de A e es$re-a este -etor $ompa$tado de =. Ctili4e subalgoritmo/subprograma para ler e
es$re-er -etores2 bem $omo2 para $o!tar o !Bmero de -alores A e para $riar o -etor U.
11.Cma matri4 1uadrada . dita sim.tri$a se para todo i e 72 o eleme!to :i2 7; . sempre igual ao eleme!to :72i;.
Es$re-er um subalgoritmo/subprograma 1ue -eri+i$a se uma matri4 . ou !&o sim.tri$a.
12.Dogo ap,s o surgime!to dos $omputadores2 os mesmos +oram usados pri!$ipalme!te para $6l$ulos $ie!t?+i$os.
"omo seu apare$ime!to se deu em ple!o per?odo de guerras2 um dos primeiros $6l$ulos +oi o da tra7et,ria de
pro7.teis.
Ee um pro7.til . atirado $om uma -elo$idade i!i$ial =:m/s; a um 9!gulo de i!$li!a%&o ):radia!os;2 sua
posi%&o !o pla!o -erti$a1 <2 72 !o tempo t:segu!dos; . $al$ulado pelas +,rmulas:
< d := $os );t
7 d := se! );t - 1/2 gt
2
o!de 0 i ) i /2
g d '2O m/s
2
'2
Es$re-er um subalgoritmo/subprograma 1ue re$ebe ) e r e lista as $oorde!adas <2 7 em i!ter-alos de 0.1s
para um tiro parti$ular2 termi!a!do 1ua!do o pro7.ti1 ati!gir o solo.
13.Es$re-er um subalgoritmo/subprograma em *as$al 1ue re$ebe um -etor 1ue pode ter eleme!tos em dupli$ata e
altera o -etor re$ebido2 substitui!do os eleme!tos repetidos por 02 retor!a!do o -etor modi+i$ado e o !Bmero
de modi+i$a%0es +eitas.
>bs.: Eubstituir por 0 s, a segu!da o$orr#!$ia dos -alores repetidos.
1J.Es$re-er um algoritmo/programa em *as$al 1ue l# 2 -etores < e H e $hama um subalgoritmo/subprograma em
*as$al para $al$ular o produto de U por r.
1Q.Cm 1uadrado m6gi$o de ordem ! :se!do ! um !Bmero impar; . um arra!7o de !Bmeros de 1 a ! em uma matri4
1uadrada de tal modo 1ue a soma de $ada li!ha2 $olu!a e diago!al . a mesma.
15 8 1 24 17
16 14 7 5 23
22 20 13 6 4
3 21 19 12 10
9 2 25 18 11
A +igura mostra um 1uadrado m6gi$o de ordem Q. A regra para ger6-lo . relati-ame!te +6$il de obser-ar: "ome$e $om o 1 !o meio
da primeira li!ha2 e!t&o siga para $ima e para a es1uerda diago!alme!te :1ua!do sair do 1uadrado supo!ha 1ue os lados superior e
i!+erior est&o u!idos ou 1ue os lados da direita e da es1uerda est&o u!idos2 $o!+orme +or o $aso; em $ada 1uadrado 1ue passar
$olo1ue o -alor do 1uadrado a!terior mais 1 :um;2 1ua!do ati!gir um 1uadrado 76 o$upado2 des%a um 1uadrado e $o!ti!ue
segui!do a diago!al at. ter pree!$hido todos os 1uadrados.
Es$re-er um programa em *as$al 1ue l# Q !Bmeros impares2 um de $ada -e42 e gere e es$re-a para o !Bmero lido2 o seu 1uadrado
m6gi$o.
E<perime!te usar o depurador:
A te$la i5Of permite 1ue -o$# e<e$ute o programa passo a passog
Digita!do i")/Dfei53f . e<ibido o status da pilha do sistemag Digita!do i")/Dfei5Jf obt.m-se uma
7a!ela o!de . poss?-el $o!sultar o -alor das -ari6-eisg
Digita!do iAD)fei5Qf -o$# tem a$esso ] mtela realm do seu programa -
/e+a%a algu!s e<er$?$ios2 se poss?-el utili4a!do uma +u!%&o para $ada um dos ?te!s soli$itados - Cse -ari6-eis
lo$ais em $ada uma das +u!%0es - Digite-o2 teste-o e e<e$ute-o.
E<e$ute os programas passo a passo2 por.m2 utili4a!do a 7a!ela de mwat$hm para obser-ar o -alor das -ari6-eis:
ati-e a 7a!ela de bwat$hm $om a op%&o mwat$hm do me!u mP8D>Pu2 i!sira -ari6-eis !a 7a!ela $om a te$la
ii!sfg remo-a -ari6-eis da 7a!ela $om a te$la idelfg
*ro$ure obser-ar o es$opo das -ari6-eis a medida 1ue -o$# per$orre as +u!%0es - *ara +a4er o depurador
me!trarb !as +u!%0es use a te$la i57f ao i!-.s de i5Of.
'3

Das könnte Ihnen auch gefallen