Anda di halaman 1dari 37

FACECA

SISTEMA DE INFORMAO
Prof. Edson Loureno da
Aparecida
Apostila de Algoritmo Estruturado
INTRODUO
A automatizao de tarefas um aspecto marcante da sociedade moderna. O
aperfeioamento tecnolgico alcanado, com respeito a isto, teve como elementos fundamentais a
anlise e a obteno de descries da execuo de tarefas em termos de aes simples o suficiente,
tal ue pudessem ser automatizadas por uma muina especialmente desenvolvida para este fim,
O !O"#$%A&O'.
(m ci)ncia da computao *ouve um processo de desenvolvimento simult+neo e interativo
de muinas ,*ard-are. e dos elementos ue gerenciam a execuo automtica ,soft-are. de uma
dada tarefa. ( essa descrio da execuo de uma tarefa, como considerada acima, c*amada
algoritmo.
O ob/etivo dessa matria a 0gica de #rogramao dando uma base terica e prtica,
suficientemente boa, para ue, o aluno domine os algoritmos e este/a *abilitado a aprender uma
linguagem de programao. 1er mostrado tambm um grupo de algoritmos clssicos para tarefas
cotidianas, tais como 2 ordenao e pesuisa.
DEFINIO DE ALGORITMO
3O conceito central da programao e da !i)ncia da !omputao o conceito de
algoritmos, isto , programar basicamente construir algoritmos.3
4 a descrio, de forma lgica, dos passos a serem executados no cumprimento de
determinada tarefa.
3O algoritmo pode ser usado como uma ferramenta genrica para representar a soluo de
tarefas independente do dese/o de automatiz5las, mas em geral est associado ao
processamento eletr6nico de dados, onde representa o rascun*o para programas
,1oft-are..3
31erve como modelo para programas, pois sua linguagem intermediria 7 linguagem
*umana e 7s linguagens de programao, sendo ento, uma boa ferramenta na validao da
lgica de tarefas a serem automatizadas.3
3$m algoritmo uma receita para um processo computacional e consiste de uma srie de
operaes primitivas, interconectadas devidamente, sobre um con/unto de ob/etos. Os
ob/etos manipulados por essas receitas so as variveis.3
O algoritmo pode ter vrios n8veis de abstraes de acordo com a necessidade de
representar ou encapsular detal*es inerentes 7s linguagens de programao. (x2
!ertamente um algoritmo feito com o ob/etivo de servir como modelo para uma
linguagem de 999 gerao diferente dauele para uma linguagem de 9: gerao. "as isso
no impede ue a ferramenta em si possa ser usada em ambos o caso.
!omo ualuer modelo, um algoritmo uma abstrao da realidade. A abstrao o
processo de identificar as propriedades relevantes do fen6meno ue esta sendo modelado.
$sando o modelo abstrato, podemos nos centrar unicamente nas propriedades relevantes
para ns, dependendo da finalidade da abstrao, e ignorar as irrelevantes.
4 a forma pela ual descrevemos solues de problemas do nosso mundo, afim de, serem
implementadas utilizando os recursos do mundo computacional. !omo este possu8
severas limitaes em relao ao nosso mundo, exige ue, se/am impostas algumas regras
bsicas na forma de solucionar os problemas, para ue, possamos utilizar os recursos de
hardware e software dispon8veis. #ois, os algoritmos, apesar de servirem para representar
a soluo de ualuer problema, no caso do #rocessamento de &ados, eles devem seguir
as regras bsicas de programao para ue se/am compat8veis com as linguagens de
programao.
;
Apostila de Algoritmo Estruturado
ATENO
Algoritmo no a soluo de um problema, pois, se assim fosse, cada problema teria um
<nico algoritmo. Algoritmo um camin*o para a soluo de um problema, e em geral, os
camin*os ue levam a uma soluo so muitas.
O aprendizado de algoritmos no se consegue a no ser atravs de muitos exerc8cios.
Algoritmos no se aprende2
5 !opiando Algoritmos
5 (studando Algoritmos
Algoritmos s se aprendem2
5 !onstruindo Algoritmos
5 %estando Algoritmos
Fases de um Algoritmos
=uando temos um problema e vamos utilizar um computador para resolv)5lo
inevitavelmente temos ue passar pelas seguintes etapas2
a. &efinir o problema.
b. 'ealizar um estudo da situao atual e verificar uais a,s. forma,s. de resolver o
problema.
c. %erminada a fase de estudo, utilizar uma linguagem de programao para escrever o
programa ue dever a princ8pio, resolver o problema.
d. Analisar /unto aos usurios se o problema foi resolvido. 1e a soluo no foi
encontrada, dever ser retornado para a fase de estudo para descobrir onde est a fal*a.
1. Co!eitos
Algoritmo
4 uma se>)ncia finita de aes ue descrevem como um problema pode ser resolvido.
Instruo
1o frases ue indicam as aes a serem executadas. 1o compostas de um verbo no
imperativo?infinitivo mais um complemento.
(x. @ata,bater. duas claras em neve
0igue os faris
Abra a porta
Programa
Aes de um algoritmo obedecendo 7 sintaxe de uma linguagem de programao.
A
Apostila de Algoritmo Estruturado
". Como Costruir um algoritmo
2.1 Anlise Preliminar
(ntenda o problema, identifiue os dados e os resultados.
2.2 Soluo
&esenvolver algoritmo para resolver o problema
2.3 Teste de ualidade !"omputador #apon$s%Teste de mesa&
9deal testar todas as combinaes poss8veis
2.' Alterao
'esultado do algoritmo no satisfatrio, altere5o e submeta a um novo teste.
2.( Produto )inal
Algoritmo conclu8do e testado.
#. De!om$osi%&o 'To$(Do)*
&ividir o problema em problemas menores.
(xemplo.
B. %roue o pneu furado.
B. #egue o material necessrio ,9nicio.
;.%roue o pneu furado ,"eio.
A.Cuarde o material ,Dim.
B. Abra o porta5malas
;. 'etire o macaco, o estepe e a c*ave em cruz e o sinalizador
A. !oloue o sinalizador atrs do carro
E. Afrouxe as porcas do pneu furado
F. !oloue o macaco na posio correta
G. 0evante o carro
H. 'etire as porcas
I. 'etire o pneu
J. !oloue o estepe
BK. !oloue as porcas
BB. &esa o carro
B;. 'etire o macaco
E
&etal*amento
#eueno
$m pouco mais
de &etal*es
Operaes
&etal*adas
Apostila de Algoritmo Estruturado
BA. Aperte as porcas do pneu trocado
BE. Cuarde o macaco, o pneu furado , o sinalizador e a c*ave em cruz.
BF. Dec*e o porta5malas
*+s. Algumas instrues poderiam ser dividas mais uma vez.
+. Dese,ol,imeto Estruturado
1o tcnicas ue permitem sistematizar e a/udar o desenvolvimento de algoritmos para a
resoluo de grandes e complexos problemas de computadores.
'.1 *+,eti-os destas t.cnicas
Dacilitar o desenvolvimento do algoritmos
Dacilitar o seu entendimento pelos *umanos
Antecipar a comprovao de sua correo
Dacilitar a sua manuteno e modificao
#ermitir ue o seu desenvolvimento possa ser empreendido simultaneamente por uma euipe de
pessoas
-. Forma de re$reseta%&o
(.1 /escrio 0arrati-a
(x. !lculo da mdia de um aluno2
L Obter as notas da primeira e da segunda prova
L !alcular a mdia aritmtica entre as duas
L 1e a mdia for maior ou igual a H, o aluno foi aprovado, seno ele foi reprovado
(.2 )lu1ograma
'epresentao grfica de algoritmos, ou se/a, das instrues e?ou mdulos do processamento,
con*ecido tambm como diagrama de bloco, atravs de formas geomtricas, facilitando a
compreenso da lgica utilizada pelo profissional. (xistem atualmente vrios padres para definir
as formas geomtricas a serem utilizadas para as diversas instrues ,passos. a serem seguidos
pelo sistema.
Abaixo, ve/a alguns s8mbolos ue so utilizados no fluxograma2
F
Apostila de Algoritmo Estruturado
:amos a seguir, exibir um fluxograma ue teria o ob/etivo de calcular o valor dirio de um salrio
m8nimo.
1eguindo uma lgica simples, ter8amos ue dividir o valor do salrio m8nimo ,ue sabemos ser
euivalente a 'M ;KK,KK. e dividir este total por AK ,n<mero de dias de um m)s..
Observe como ficaria este fluxograma2
G
Apostila de Algoritmo Estruturado
A principio marcamos o inicio do fluxogramaN
(m seguida, armazenamos em uma posio de memria ,varivel., o valor de ;EK,KK. (sta
posio de memria teve a denominao de OsalariominimoPN
(m seguida, armazenamos em uma posio de memria denominada OmediaP o valor da
varivel OsalariominimoP dividido por AKN
(m seguida, enviamos ao perifrico de sa8da ,impressora., o conte<do da varivel OmediaP
euivalente 7 'M I,KK.
(m seguida, finalizamos o fluxo.
Observe ue da forma ue o mesmo foi exposto, existe um procedimento lgico para o calculo
proposto, bem como, poderemos repetir este procedimento por uantas vezes necessrios, ue o
resultado sempre ser correto e preciso.
H
9nicio
1alario"inimo
Q
;EK,KK
"edia
Q
1alario"inimo?AK
"edia
Dim
Apostila de Algoritmo Estruturado
(.2 Pseudoc2digo3 tam+.m conhecido como 4inguagem 5struturada ou Portugol .
A representao de um algoritmo na forma de pseudocdigo a seguinte2
Algoritmo RomeS&oSAlgoritmo
-ari-eis
&eclarao das variveis
Procedimentos
&eclarao dos procedimentos
)un6es
&eclarao das funes
In7cio
!orpo do Algoritmo
)im
(xemplo.
Algoritmo "dia
8ari-eis
real RB, R;, "dia
In7cio
4er RB, R;
"dia Q ,RBTR;.?;
Se "dia UQ H 5nto
5scre-er OAprovadoP
Seno
5scre-er O'eprovadoP
)im.
.. Ti$os de $ro!essameto
9.1 Processamento Se:encial
As instrues do algoritmo so executadas uma aps a outra, sem ue *a/a desvio na se>)ncia
das instrues, sendo cada instruo executada uma <nica vez.
(x. Obter a mdia aritmtica das uatro notas
B. 9nicio
;. 1ome as duas primeiras notas
A. 1ome a terceira nota com o resultado da instruo ;
E. 1ome a =uarta nota com o resultado da instruo A
F. &ivida resultado da instruo E por E
I
Apostila de Algoritmo Estruturado
G. Dim
1e as uatro notas so BK,F,I,B
B. 9nicio
;. BKTF Q BF
A. BFTI Q;A
E. ;ATB Q;E
F. ;E ? EQG
G.Dim
9.2. Processamento "ondicional
$m con/unto de instrues ,pode ser apenas uma instruo. executado ou no dependendo de
uma condio. 1e a condio ue estiver sendo testada tiver resposta afirmativa, o con/unto de
instrues executado.
(x. Obter a mdia aritmtica das uatro notas. 1e a mdia for maior ou igual a sete, o aluno est
aprovado, caso contrrio, est reprovado.
B. 9nicio
;. 1ome as duas primeiras notas
A. 1ome a terceira nota com o resultado da instruo ;
E. 1ome a =uarta nota com o resultado da instruo A
F. &ivida resultado da instruo E por E
G. 1e o resultado da instruo F for maior ou igual a H
H. Aprove o aluno
I. 1e o resultado da instruo F for menor ue H
J. 'eprove o aluno
BK.Dim
1e as uatro notas so BK,F,I,B
B. 9nicio
;. BKTF Q BF
A. BFTI Q;A
E. ;ATB Q;E
F. ;E ? EQG
G. 'esposta negativa
H. 'esposta afirmativa resultado V H
ento aluno reprovado
J
Apostila de Algoritmo Estruturado
G. Dim
Rote ue a instruo G foi executada. !omo a resposta foi negativa ,a mdia foi inferior a sete., o
aluno foi reprovado no sendo executada a instruo sete.
9.3 Processamento com repetio
!on/unto de instrues ,pode ser apenas uma. ue executado um determinado n<mero de vezes.
1endo determinado uma condio de parada.
(x. Obter a mdia aritmtica das uatro notas de todos os alunos da sala.
B. 9nicio
;. #ara cada aluno da sala
A. 1ome as duas primeiras notas
E. 1ome a terceira nota com o resultado da instruo A
F. 1ome a =uarta nota com o resultado da instruo E
G. &ivida o resultado da instruo F por E
H. Dim
1e existem dois alunos na sala e suas notas so2 BK, F, I, B e E, G, H, A
A. BKTF Q BF
E. BFTI Q;A
F. ;ATB Q;E
G. ;E?E Q G
A. ETG Q BK
E. BKTHQBH
F. BHTAQ;K
G. ;K?E Q F
A identao ,deslocamento para a direita. de uma instruo, significa ue tais instrues esto
subordinadas a instruo anterior.
BK
Apostila de Algoritmo Estruturado
/. Ti$os de dados
Os dados so representados pelas informaes a serem processadas por um computador. (stas
informaes esto caracterizadas por uatro tipos de dados2 inteiros3 reais3 caracteres e l2gicos.
;.1 Tipo Inteiro
&ados numricos positivos ou negativos, excluindo5se ualuer n<mero fracionrio.
(x. AF, K, 5FG
;.2 Tipo <eal
&ados numricos positivos, negativos e n<meros fracionrios.
(x. B.;,5EF.IJH
;.3 Tipo "aractere
1o tipos caracteres, as se>)ncias contendo letras, n<meros e s8mbolos especiais. $ma se>)ncia
de caracteres deve ser indicada entre aspas. 1endo tambm con*ecido como2 alfanumrico, string,
literal ou cadeia.
(x. O#'OC'A"AWXOP, O'ua Alfa, F; apto BP, OHP, O;EJ5EEFFP
;.' Tipo 42gicos
1o tipos lgicos ou booleanos, os dados com valores verdadeiro e falso, sendo ue este tipo
poder representar um dos dois valores.
0. 1ari2,eis 'ideti3i!adores*
- O nome de uma varivel utilizado para sua identificao e posterior uso dentro de um
programa,
- sendo assim, necessrio estabelecer algumas regras de utilizao das mesmas.
- O nome de uma varivel pode conter um ou mais caracteresN
- O primeiro caracter do nome de uma varivel deve ser sempre uma letraN
- Ro pode possuir espaos em brancoN
- Ro pode ser uma palavra reserva a uma instruo de programaN
BB
Apostila de Algoritmo Estruturado
- Ro podero ser utilizados outros caracteres ue no se/am letras e n<meros.
- Os nomes escol*idos devem explicitar seu conte<do.
(x. RO"($1$A'9O, DOR(B, Y, &(0%A;F, ZE,
De!lara%&o de ,ari2,eis
#ara ue os programas manipulem valores, estes devem ser armazenados em variveis e para isso,
devemos declar5las de acordo com a sintaxe2
Tipo NomeVarivel
(x.2 :A'9A:(91
'(A0 1al"es, 9nss
!A'A!%(' Rome
Resta definio, deveremos seguir as regras seguintes2
:A'9A:(91 a palavra c*ave, ue dever ser utilizada uma <nica vez na definio das
variveis e antes do uso das mesmasN
:ariveis de tipos diferentes, devero ser declaradas em lin*as diferentesN
(m uma mesma lin*a, uando uisermos definir variveis de mesmo tipo, deveremos usar o
s8mbolo de v8rgula ,,. para separar as mesmas.
4. Costates
%udo auilo ue fixo ou estvel
(x. o valor do [5 A.BEBFJ
15. O$era%6es 72si!as8
1=.1 51press6es
Ra lgica de programao uma expresso tem o mesmo ob/etivo?conceito do termo expresso da
matemtica comum, ou se/a, um con/unto de variveis e constantes ue se relacionam por meio de
operadores aritmticos. (ste con/unto de expresso e operadores aritmticos ,soma por exemplo.,
formam uma frmula ue, aps solucionada fornecem um resultado em espec8fico.
Observe o grfico a seguir2
B;
Apostila de Algoritmo Estruturado
Reste caso, a frmula para se calcular a rea de um ret+ngulo igual ao produto de sua altura por
sua base, poderemos ento montar a frmula como se segue2
A'(A Q altura \ base
Observe ue no exemplo acima, utilizamos tr)s variveis2 altura, base e rea, sendo ue o
resultado final armazenado na varivel A'(A, ou se/a, local de memria onde ser armazenado
o resultado da avaliao da expresso e o operador o sinal de ]\^ ue em linguagem de
computador representa a multiplicao.
_ ue falamos em operadores, vamos ser um pouco mais claros neste tpico. Os operadores so
elementos ativos ue tem influ)ncia sobre os operandos e atravs de sua ao resultam um
determinado valor. Ro exemplo acima, os operandos seriam as variveis OalturaP e ObaseP e o
operador de multiplicao o O\P.
(m lgica de programao, os operadores podem ser classificados em dois grupos2
@inrios 2 uando trabal*am sobre os operandos em uma expresso. Os mais con*ecidos so
os s8mbolos T 5 \ ?, ue representam a soma, subtrao, multiplicao e diviso
respectivamente.
$nrios 2 uando tem influ)ncia sobre um <nico operando, indicando por exemplo ue este se
trata de um n<mero negativo e no vem acompan*ado um um outro operando, exemplo2 ao
representar o n<mero uatro negativo, podemos utilizar , 5E .. 9sso no uer dizer ue
ueremos subtrair o uatro de um outro valor.
Assim como classificamos os operadores, podemos tambm classificar as expresses uanto ao
seu tipo, conforme mostra a lista a seguir2
(xpresso aritmtica 5 uando o resultado de sua avaliao for um n<mero, podendo este ser
positivo ou negativo assim como inteiro ou realN
(xpresso lgica 5 uando o resultado de sua avaliao for um valor lgico, ou se/a,
verdadeiro ,.%.. ou falso ,.D..N
(xpresso literal 5 uando o resultado de sua avaliao for um valor literal.
!ada uma das expresses vistas acima, possuem seus operadores em espec8fico. A seguir, vamos
mostrar uma tabela contendo esses operadores2
BA
Apostila de Algoritmo Estruturado
Ra soluo da grande maioria dos problemas necessrio ue as variveis ten*am seus valores
consultados ou alterados e, para isto, devemos definir um con/unto de *P5<A/*<5S, sendo
eles2
*P5<A/*< /5 AT<I>?I@A*B
NomeDaVariavel Q :alor ou (xpresso Atribu8da.
*P5<A/*<5S A<ITCDTI"*SB
T Q Adio =uociente Q =uociente da diviso de inteiros
E Q "ultiplicao 'esto ,a,b. Q 'esto da diviso de inteiros
F Q 1ubtrao ou inversor do sinal. (Y#,a,b. Q (xponenciao a
b ,`.
% Q &iviso
)?0@G5S P<ICITI8ASB 1(R,x.N !O1,x.N %C,x.N A@1,x.N 9R%,x.N 'aiz,x.N #9, .N
*P5<A/*<5S <54A"I*0AISB
1o utilizados para relacionar variveis ou expresses, resultando num valor lgico
,:erdadeiro ou Dalso., sendo eles2
Q 5 igual
5 diferente ,VU.
< 5 menor > 5 maior
5 menor ou igual 5 maior ou igual
*P5<A/*<5S 4HII"*SB
1o utilizados para avaliar expresses lgicas, sendo eles2
.5. 5 e lgico ou con/uno.
.*u. 5 ou lgico ou dis/uno.
0o 5 negao.
P<I*<I/A/5 /5 *P5<A/*<5SB
&urante a execuo de uma expresso ue envolve vrios operadores, necessrio a exist)ncia de
prioridades, caso contrrio poderemos obter valores ue no representam o resultado esperado.
A maioria das linguagens de programao utiliza as seguintes prioridades de operadores 2
1J 5 (fetuar operaes embutidas em par)nteses 3mais internos3
2J 5 (fetuar Dunes
3J 5 (fetuar multiplicao e?ou diviso
'J 5 (fetuar adio e?ou subtrao
(J 5 Operadores 'elacionais
9J 5 Operadores 0gicos
BE
Apostila de Algoritmo Estruturado
*>S2 O programador tem plena liberdade para incluir novas variveis, operadores ou funes
para adaptar o algoritmo as suas necessidades, lembrando sempre, de ue, estes devem ser
compat8veis com a linguagem de programao a ser utilizada.
!om base no ue colocamos, fazemos as perguntas a seguir2
Ra expresso A\@5!, ual ser a seu)ncia de execuoa
Ra expresso ,A\@.5!, ual ser a seu)ncia de execuoa
Ra expresso A\,@5!., ual ser a seu)ncia de execuoa
Ra expresso , A\,@5!\,&?(..., ual ser a seu)ncia de execuoa
A lgica para se montar uma expresso ponto determinante na uesto do resultado ser ou no
verdadeiro, ou se/a, de ser o resultado esperado.
11. 9rimeiras istru%6es
Aps dominarmos os assuntos anteriormente tratados, passaremos a estudar as instrues
primitivas, ou se/a, comandos bsicos ue executam tarefas consideradas essenciais para a
execuo de ualuer programa de computador. $m exemplo deste tipo de instruo so auelas
responsveis pela comunicao do operador com o computador por meio do teclado ,entrada de
dados. ou ainda a impresso de um relatrio ,sa8da de dados Osem contar com a parte esttica do
relatrio, alin*amento de colunas, etc.....
%oda linguagem de programao tem por obrigao possuir instrues primitivas, pois sem estas,
no existiria comunicao com perifricos.
Antes de mais nada, voc) saberia diferenciar perifricos de entrada e de sa8da de dadosa A
resposta simples, perifricos de entrada so aueles responsveis pela passagem de dados do
mundo externo para a memria do computador, como por exemplo o teclado, unidade de !&5
'O", etc... _ os perifricos de sa8da recebem os dados do computador para um outro
euipamento externo, como por exemplo o monitor de v8deo, impressora, -inc*ester, etc...
%oda instruo, primitiva ou no possui uma sintaxe, ou se/a, uma regra ue dever ser seguida
para a construo de seu cdigo, e caso esta no se/a obedecida, o seu programa pode
simplesmente no funcionar.
&evemos saber tambm ue o con/unto de aes ue sero realizadas pelo computador aps a
execuo de um determinado comando con*ecida como sem+ntica.
COMANDO: DE ENTRADA E :A;DA 8
Ro algoritmo preciso representar a troca de informaes ue ocorrer entre o mundo da
muina e o nosso mundo, para isso, devemos utilizar comandos de entrada e sa8da, sendo ue, a
n8vel de algoritmo esses comandos representam apenas a entrada e a sa8da da informao,
independe do dispositivo utilizado ,teclado, discos, impressora, monitor,...., mas, sabemos ue nas
linguagens de programao essa independ)ncia no existe, ou se/a, nas linguagens de
programao temos comandos espec8ficos para cada tipo de unidade de (ntrada?1a8da.
BF
Apostila de Algoritmo Estruturado
"omando de 5ntrada de /ados
4er ,varivelSB, varivelS;,....
"omando de Sa7da de /ados
5scre-er ,expressoSB, expressoS;,....
"omando de Posicionamento na tela
Posicionar ,expressoSB, expressoS;,....
Onde expressoSB , determinar ual lin*a do v8deo e expressoS; a coluna. 1endo de B
at ;E para lin*a e de B at IK para coluna.
Algoritmo media
8A<IA85IS
<5A4 uilometragem3litros3media
Inicio
5S"<585< K5ntre com a uilometragem inicial e a Luantidade de litros gastosM
45< uilometragem
45< litros
Cedia N uilometragem%litros
5S"<585< media
)im.
Observe ue no pseudocdigo, uando ueremos enviar uma expresso como sa8da, a mesma
colocada dentro de aspas, porm uando ueremos enviar o conte<do de uma varivel, esta dever
estar fora de aspas.
COMANDO: DE CONTROLE DE FLU<O8
#ara representar a soluo de um problema devemos escrever o con/unto de passos a serem
seguidos, sendo ue, a maioria dos problemas exigem uma din+mica na sua soluo, impondo
assim ue os algoritmos executem con/unto de instrues de acordo com as poss8veis situaes
encontradas no problema original. ( de acordo com a Programao 5struturada os mecanismos
utilizados para esse controle so 2 Seu$ncia, Seleo e <epetio.
S5L?O0"IA B usada para executar comandos passo a passo, sabendo ue todos eles
sero executados na ordem de escrita, sem nen*um desvio. $ma seu)ncia pode possuir
um ou vrios comandos, os uais devem ser delimitados pelos identificadores In7cio e
)im.
Inicio
!omandoSB
...
!omandoSn
)im
BG
Apostila de Algoritmo Estruturado
S545@A* B usada para tomar decises, ou se/a desviar a execuo do algoritmo de
acordo com uma condio, podendo ser simples ou composta.
Simples "omposta
Se ,(xpresso 0gica. 5nto
1eu)nciaSB
)imPse
Se ,(xpresso 0gica. 5nto
1eu)nciaSB
Seno
1eu)nciaS;
)imPse
9magine a seguinte situao 2 em uma empresa, ser solicitado o salrio de um determinado
funcionrio, para se calcular seu novo salrio, sendo ue, se este tiver um salrio superior a 'M
AKK,KK, o rea/uste ser de Fb, caso contrrio o rea/uste ser de Ib.
Observe ue teremos ue testar o valor do salrio, para saber o 8ndice a ser aplicado.
:amos criar ento um pseudocdigo com este ob/etivo2
Algoritmo testaPsalario
8aria-eis
<eal Salario
<eal SalarioPfinal
Inicio
4er salario
Se salario QN 3==
ento
SalarioPfinalN!salarioE13=R&
seno
SalarioPfinalN!salarioE13=(&
)imPse
5scre-er KSalarioPfinalM
)im.
Observe ue, durante a execuo do pseudocdigo, aps obtermos, atravs de uma instruo de
entrada de dados, o valor do salrio do funcionrio, efetuamos um teste O1eP, ue possui duas
condies, uma verdadeira e uma falsa. As instrues ue sero executadas no caso de um teste
verdadeiro, devem estar abaixo da clusula O(ntoP, / as instrues ue sero executadas no caso
de um teste falso, devem estar abaixo da clusula OsenoP. A instruo ODimSseP, termina o bloco
de testes. Observe a sintaxe de uma estrutura de deciso a seguir2
Se QtesteS
5nto
4ista de comandos a serem e1ecutados caso testeN-erdadeiro
Seno
4ista de comandos a serem e1ecutados caso testeNfalso.
)imPse
(m fluxograma, uma estrutura de deciso representada pelo s8mbolo2
BH
Apostila de Algoritmo Estruturado
Os s8mbolos ue estiverem na direo de O%rueP sero executados caso o teste se/a verdadeiro. _
os s8mbolos ue estiverem na direo de OfalseP sero executados caso o teste ten*a um resultado
falso.
BI
Apostila de Algoritmo Estruturado
Observe o trec*o do pseudocdigo acima, representado no fluxograma2
(xistem casos em ue no basta ter apenas as OdireesP verdadeiro e falso para tomar uma
determinada deciso, e sim, uma srie de testes sobre um mesmo bloco. (ste tipo de estrutura
c*amada de estrutura de deciso do tipo O(1!O0cAP.
BJ
Apostila de Algoritmo Estruturado
Observe a seguir a sintaxe da estrutura de deciso do tipo escol*a em pseudocdigo2
)aca "aso
"aso Qcondio 1S
4ista de instru6es caso condio 1 N -erdadeira
"aso Qcondio 2S
4ista de instru6es caso condio 2 N -erdadeira
"aso Qcondio 3S
4ista de instru6es caso condio 3 N -erdadeira
*utro caso
4ista de instru6es caso todas condi6es N falsa
)imP"aso
Ro fluxograma, o s8mbolo ue representa cada uma das condies acima, o mesmo ue o
s8mbolo ue representa a estrutura de deciso. :e/a a sintaxe da estrutura de deciso de escol*a no
fluxograma2
:amos imaginar um exemplo parecido, de rea/uste de salrio, porm teremos as seguintes
situaes para rea/uste2
1alrios inferiores a 'M EKK,KK Q rea/uste de Jb
1alrios iguais a 'M EKK,KK e inferiores a 'M IKK,KK Q rea/uste de Hb
1alrios iguais a 'M IKK,KK e inferiores a 'M BKKK,KK Q rea/uste de Fb
Dora das faixas supra citadas Q rea/uste de Ab
;K
Apostila de Algoritmo Estruturado
:e/a o pseudocdigo do exemplo citado2
Algoritmo testaPsalario2
8aria-eis
<eal Salrio 3 SalarioPfinal
Inicio
4er salario
)aca caso
"aso salario Q '==
SalarioPfinalN!salarioE1.=T&
"aso salario SN '== .e. salarioQR==
SalarioPfinalN!salarioE1.=;&
"aso salarioSNR== .e. salarioQ1===
SalarioPfinalN!salarioE1.=(&
*utro caso
SalarioPfinalN!salarioE1.=3&
5scre-er SalarioPfinal
)im.
Observe ue, temos aui uma novidade, ou se/a, em uma <nica condio, estamos na verdade
realizando dois testes, isto porue usamos o operador lgico OAR&P O.e.P, ou se/a, se salrio
menor ou igual a EKK e salrio menor ue IKK faa isso... assim sucessivamente.
=uando usamos o operador lgico O.e.P, os testes, neste caso dois, ue formam o caso, devem ser
verdadeiros. O outro operador lgico O.ou.P, retorna verdadeiro caso um dos testes ue formam o
con/unto satisfaa a uma determinada condio.
!omo exerc8cio, crie o fluxograma do pseudocdigo visto acima. A seguir iremos estudar as
estruturas de repetio e desenvolver mais exemplos sobre o ue estudamos neste mdulo.
;B
Apostila de Algoritmo Estruturado
E:TRUTURA: DE RE9ETIO
:amos falar um pouco sobre as estruturas de repetio, ou se/a, uma parte do cdigo ue dever
ser executada x vezes.
(m linguagem de programao, as estruturas de repetio so con*ecidas como laos ,loops..
%rabal*amos basicamente com dois tipos de estruturas de repetio2
B. 0oops contados 2 5U uando se tem, de forma prvia, o n<mero de vezes ue uma determinada
seu)ncia de comandos ser executada.
;. 0oops condicionais 2 5U aueles ue no possuem um n<mero pr5determinado de vezes ue a
estrutura de comandos ser executada, porm este n<mero estar vinculado a uma determinada
condio.
(m pseudocdigo, utilizamos a seguinte sintaxe para loops contados2
Para Q-aria-elS N Q-alor inicialS at. Q-alor finalS Passo QnumeroS
Qseuencia de comandosS
Pro1imo
Onde2
A varivel auela ue ir receber a contagem. Os valores iniciais e finais representam onde
comea e termina a contagem da repetio. O n<mero de #asso ,incremento. estipula a forma da
contagem, como por exemplo, incrementos de B em B, ; em ; .... e aps , a seu)ncia de
comandos ue ser executada durante o loop.
Ro fluxograma, utilizamos a seguinte sintaxe para representar loops contados2
A lgica de trabal*o do lao contado apresentada a seguir2
B. Ro inicio da leitura do cdigo?fluxo, o valor inicial atribu8do 7 varivelN
;. O valor da varivel comparado ao valor finalN
;;
Apostila de Algoritmo Estruturado
A. 1e o valor da varivel for maior ue o valor final, a seu)ncia de comandos ue faz parte do
lao no executado e o controle do processo passa para a prxima lin*a aps o final do lao ,
#'OY9"O . ou para o s8mbolo ao lado ,no caso de fluxograma.N
E. 1e o valor da varivel for menor ou igual ao do valor final, a seu)ncia de comandos
executada e, ao final do <ltimo comando, o valor do incremento adicionado a varivel e
retorna5se 7 comparao entre varivel e valorSfinal, repetindo todo o processo anterior.
:ale lembrar ue o incremento no de declarao obrigatria, e, caso no se/a declarado,
assume automaticamente o valor B.
_ os loops condicionais so aueles cu/o con/unto de comandos em seu interior executado at
ue uma determinada condio se/a satisfeita.
O pseudocdigo mais comum utilizado neste sentido o apresentado a seguir2
)aa 5nuanto QcondioS
Qseu$ncia de comandosS
)imPenuanto
A sintaxe de execuo deste 2
B. Ro inicio da execuo do enuanto, a condio testadaN
;. 1e o resultado do teste for verdadeiro, a seu)ncia de comandos executada e ao trmino
desta, retorna5se ao teste da condioN
A. 1endo a condio falsa, o controle da aplicao passa para a prxima lin*a aps o
DimSenuanto.
Ro fluxograma, poderemos representar este tipo de operao da forma ue segue2
(m resumo, neste tipo de operao, a execuo somente abandonar o lao uando a condio for
falsa.
;A
Apostila de Algoritmo Estruturado
:e/a um exemplo a seguir, utilizando5se de pseudocdigo, onde iremos apresentar a soma de uma
contagem de n<meros de B 7 F2
Algoritmo soma
8aria-eis
'eal 1oma ?? Acumulador
9nteiro !ontador ?? !ontador
Inicio
1oma Q K
5scre-erOA soma dos n<meros de B 7 BK igual aP
Para contador Q B at. BK
1oma Q soma T contador
Pro1imo
5scre-er soma
)im.
Ro exerc8cio acima, teremos como resultado a expresso 2
A soma dos nmeros de 1 10 igual a 55
&esen*e o fluxograma do pseudocdigo acima descrito.
ANIN=AMENTO:
:amos falar sobre anin*amentos, ou se/a, ter um con/unto de comandos de uma outra construo
dentro de um ualuer um dos tipos de construes apresentadas at este momento, para isso,
teremos ue ter a construo interna embutida dentro da construo externa.
O con/unto de comandos um con/unto de comandos simples, podem ser inclusive de instrues
primitivas.
#or exemplo, temos uma determinada situao2
:amos testar a regio na ual um determinado cliente tem o seu domic8lio e, dentro do estado na
ual este cliente reside nauela regio, teremos uma tarifa de postagem diferenciada.
Ra verdade, teremos testes dentro de testes e cada um com um determinado procedimento.
;E
Apostila de Algoritmo Estruturado
:amos passar ento para os exerc8cios propostos.
51erc7cio ==1 B
(screva um pseudocdigo ue ir receber a entrada de dois n<meros e ir retornar como sa8da a
entrada ,n<mero. de maior valor.
51erc7cio ==2 B
(screva um pseudocdigo na ual o usurio ir ter a oportunidade de entrar com F n<meros e o
sistema ir gerar como resultado a soma dos F n<meros entrados pelo usurio.
51erc7cio ==3 B
$ma empresa ir oferecer um rea/uste salarial, cu/o percentual ser decidido atravs das seguintes
situaes2
Duncionrios do sexo masculino com tempo de casa superior ou igual a BK anos tero direito a
um rea/uste de FbN
Duncionrios do sexo masculino com tempo de casa inferior a BK anos tero direito a um
rea/uste de AbN
Duncionrios do sexo feminino com tempo de casa superior ou igual a I anos tero direito a
um rea/uste de FbN
Duncionrios do sexo feminino com tempo de casa inferior a I anos tero direito a um rea/uste
de AbN
Duncionrios em ualuer uma das situaes acima, porm com mais de um dependente ter
ainda um rea/uste de ;b sobre o salrio rea/ustado anteriormente.
51erc7cio ==' B
(screva um fluxograma na ual o usurio dar a entrada de BK n<meros e ao final o sistema ir
exibir o maior n<mero entrado.

;F
Apostila de Algoritmo Estruturado
E:TRUTURA DE DADO: COM9O:TA:
O tema deste mdulo ser o das variveis indexadas. !om uso freuente na programao
convencional, varivel indexada um con/unto de variveis do mesmo tipo, referenciadas pelo
mesmo nome e ue armazenam valores distintos.
A sua distino se d pela diviso da varivel, possuindo esta uma posio de armazenamento
dentro de seu con/unto, e esta realizada por meio de 8ndices, da8 o nome indexada. (xistem dois
tipos de variveis indexadas2
:etor 2 uando a varivel indexada possui um <nico 8ndiceN
"atrix 2 uando a varivel indexada
O n<mero de 8ndices dentro de uma varivel denominado dimenso.
#ara se definir uma varivel indexada, utilizamos a seguinte sintaxe2
8aria-eis
"atriz %ipo RomeSvarivel Udimenso13dimenso2...V
...
...
:e/a a seguir alguns exemplos de definio de variveis indexadas2
CatriW "aracter 0ome U ( V
Ro exemplo acima, criamos na verdade cinco variveis nomes, porm elas esto divididas da
seguinte forma2
RomedBe , Romed;e, RomedAe, RomedEe, RomedFe
1endo ue cada uma das dimenses, poder armazenar um valor diferenciado.
CatriW <eal SalarioU(V
A varivel 1alario do tipo 'eal, e possui F dimenses, assim como a varivel Rome.
Os exemplos acima so do tipo :etor, abaixo veremos uma varivel indexada do tipo matriz2
;G
Apostila de Algoritmo Estruturado
CatriW Inteiro "odigoProdutoU331=V
Ro exemplo anterior, teremos a varivel !odigo#roduto, dividida nas seguintes dimenses2
!odigo#rodutodB,Be !odigo#rodutod;,Be !odigo#rodutodA,Be
!odigo#rodutodB,;e !odigo#rodutod;,;e !odigo#rodutodA,;e
!odigo#rodutodB,Ae !odigo#rodutod;,Ae !odigo#rodutodA,Ae
!odigo#rodutodB,Ee !odigo#rodutod;,Ee !odigo#rodutodA,Ee
!odigo#rodutodB,Fe !odigo#rodutod;,Fe !odigo#rodutodA,Fe
!odigo#rodutodB,Ge !odigo#rodutod;,Ge !odigo#rodutodA,Ge
!odigo#rodutodB,He !odigo#rodutod;,He !odigo#rodutodA,He
!odigo#rodutodB,Ie !odigo#rodutod;,Ie !odigo#rodutodA,Ie
!odigo#rodutodB,Je !odigo#rodutod;,Je !odigo#rodutodA,Je
!odigo#rodutodB,BKe !odigo#rodutod;,BKe !odigo#rodutodA,BKe
:amos comparar as variveis indexadas a um @loco de uma uadra residencial. O bloco <nico,
porm est dividido em diversos apartamentos , dimenses . e em cada apartamento reside um
morador diferente , valor armazenado ..
=uando estamos trabal*ando com variveis indexadas, temos ue obrigatoriamente especificar o
indice da varivel na ual ueremos trabal*ar. Ros exemplos acima, no poder8amos nos referir
apenas a varivel RO"(, mas sim a RO"(dxe, onde o OxP seria uma dimenso vlida, neste caso
de B 7 F.
:amos exibir um exemplo onde iremos preenc*er os valores para a varivel nome em suas
diversas dimenses e em seguida listar os mesmos2
Algoritmo Romes
8aria-eis
CatriW "aracter RomeU(V
Inteiro !onta , 0ista
Inicio
Para conta N B at. F
4er Romedcontae
Pro1imo
Para lista Q B at. F
5scre-er nomedlistae
Pro1imo
)im.
51erc7cio ==1 B (screva um pseudocdigo ue ir 0er e armazenar em varivel indexada BK
n<meros e aps o final da leitura, ir exibir a soma dos BK n<meros armazenados nas dez
dimenses da varivel indexada.
51erc7cio ==2 B (screva um pseudocdigo ue ir ler e armazenar em varivel indexada FK
n<meros e aps o final de leitura, ir apresentar o n<mero da dimenso e o valor armazenado da
dimenso de varivel indexada ue conter o maior valor lido.
;H
Apostila de Algoritmo Estruturado
=uando trabal*amos com variveis indexadas, poderemos entre outros criar O8ndicesP, ou se/a,
ordenar os vetores para ue eles se/am apresentados em uma determinada ordem. (ste
procedimento, tambm con*ecido, em sua forma mais simples como O@ol*a de !lassificaoP.
1ua lgica consiste na leitura de todos os elementos de um vetor, comparando5se os valores de
seus elementos vizin*os, e neste momento empregada a seguinte seu)ncia2
B. 1ero realizadas uma varredura a menos do total de elementos do vetorN
;. Ra primeira varredura, verificamos ue o elemento do vetor / se encontra em seu devido
lugarN
A. Ra segunda varredura, o procedimento anlogo 7 primeira varredura e vai at o <ltimo
elementoN
E. Ao final do procedimento, o vetor estar classificado segundo o critrio escol*ido.
:amos 7 prtica, no exemplo a seguir, iremos realizar a leitura de F n<meros e em seguida
classifica5los em ordem crescente2
Algoritmo classificao
8aria-eis
CatriW Inteiro numeroU(=V
Inteiro A3>
<eal Au1
Inicio
Para A N 1 at. (=
4er numeroUAV
Pro1imo
>N(=
)aa 5nuanto > S 1
Para A N 1 at. ! >F1 &
Se numeroUAV S numeroUAX1Y
5nto
Au1NnumeroUAV
numeroUAVNnumeroUAX1V
numeroUAX1VNAu1
)imPse
Pro1imo
>N>F1
)imPenuanto
5scre-er KA+ai1o3 a listagem ordenada dos nZmeros entradosM
Para A de 1 at. (=
5scre-er numeroUAV
Pro1imo
)im.
;I
Apostila de Algoritmo Estruturado
$m outro processo ue poder ser utilizado em programao, a pesuisa seu)ncial, ou se/a,
sero verificados todos os componentes de um vetor, para verificar se nestes esto armazenados
um determinado valor. (xemplo2
9remos efetuar a leitura de BKK nomes, em seguida, ser solicitado um nome ualuer e, iremos
verificar se, dentre os BKK nomes entrados, existe o nome na ual foi solicitada a pesuisa. :e/a
este algoritmo a seguir2
Algoritmo pesuisa
8aria-eis
CatriW caracter nomeU1==V
"aracter pesuisado
Inteiro contador
42gico encontrado
Inicio
Para contador N 1 at. 1== f
4er nomeUcontadorV
Pro1imo
4er pesuisado
5scre-er KAguarde ... pesuisando no +anco de dadosM
contadorN1
encontradoN)A4S*
)aa 5nuanto contadorQ1=1 .5. 0A* encontrado
Se nomeUcontadorVNpesuisado
5nto
5ncontradoN85</A/5I<*
Seno
"ontadorNcontadorX1
)imPse
)imPenuanto
Se encontrado
5nto
5scre-a K* -alor est contido no +anco de dadosM
Seno
5scre-a K* -alor no e1iste no +anco de dadosM
)imPse
)im.
MODULARI>ANDO ALGORITMO:
(m determinadas situaes, devido 7 complexidade de alguns algoritmos, necessria a diviso
do mesmo em diversas partes, para ue assim, o sistema ten*a uma operao precisa. (ssa diviso
de tarefas denominada de O1ubalgoritmosP. Os subalgoritmos nada mais so do ue rotinas ue
possuem uma funo especifica.
;J
Apostila de Algoritmo Estruturado
A modularizao consiste num mtodo para facilitar a construo de grandes programas,
atravs de sua diviso em peuenas etapas, ue so 2 mdulos, rotinas, sub5rotinas ou sub5
programas. #ermitindo o reaproveitamento de cdigo, / ue podemos utilizar um mdulo uantas
vezes for necessrio, eliminando assim a necessidade de escrever o mesmo cdigo em situaes
repetitivas.
:amos imaginar a seguinte situao2
(m um sistema comercial, em vrias etapas temos ue verificar se o n<mero do !#D do cliente foi
digitado de forma correta. 9maginando ue tal situao se repete por AI vezes no sistema.
%er8amos ue escrever AI vezes o mesmo trec*o de cdigoa Ro, para isso ter8amos uma rotina
OsubalgoritmoP ue teria esta funo. (ste subalgoritmo teria um nome e, sempre ue fosse
necessria a verificao do !#D, bastaria invocar Oc*amarP este subalgoritmo.
&e um modo geral, os subalgoritmos so importantes devido aos seguintes aspectos2
(struturao de algoritmos, facilitando assim a deteco de erros. 9magine se a rotina de
verificao do !#D do cliente tiver um erro lgico. (m uma primeira *iptese, ter8amos
ue corrigir a mesma em AI pontos diferentes do sistema, porm utilizando subalgoritmo,
ter8amos apenas ue realizar uma correo em um ponto do sistemaN
"odularizao de sistemas, ue /ustamente utilizada para a reutilizao de rotinas
OsubalgoritmosP em vrios pontos do algoritmo principalN
1ubdiviso de algoritmos extensos, facilitando assim a sua compreenso.
O esuema de um algoritmo e seus subalgoritmos pode ser observado a seguir2
Algoritmo ,nome do algoritmo.
8aria-eis
&efinio das variveis globais
Vdefinio dos subalgoritmosU
Inicio
Vestrutura do algoritmo principalU
)im.
=uando o sistema est executando o algoritmo principal e, invocado algum subalgoritmo
,atravs de um nome dado ao mesmo., a execuo deste interrompida e, o sistema passa a
executar os comandos constantes do subalgoritmo. Ao final desta execuo, o sistema retorna
automaticamente para o algoritmo principal a partir do ponto onde foi realizada a c*amada do
subalgoritmo.
$m subalgoritmo composto por2
"a+ealho B onde definido o nome do subalgoritmo e as variveis ue sero utilizadas
pelo mesmoN
"orpo B onde so especificadas as instrues do subalgoritmo.
Os subalgoritmos podem ser de dois tipos2
DunesN
#rocedimentos.
AK
Apostila de Algoritmo Estruturado
O subalgoritmo tipo funo auele na ual um valor calculado com base em outros valores,
normalmente passados pelo algoritmo principal.
O subalgoritmo tipo procedimento auele ue retorna zero ou mais valores ao algoritmo ue o
invocou, sendo ue, ao contrrio das funes, esses valores no so expl8citos, ou se/a, a c*amada
de procedimentos nunca realizada ao meio de expresses s realizada em comandos isolados
dentro do algoritmo, como instrues de entrada e sa8da de dados.
:e/a a seguir um algoritmo e seu subalgoritmo para se calcular a raiz uadrada de um
determinado n<mero2
,#or causa da didtica de variveis globais e locais, vamos manter uma estrutura um pouco
diferente do ue temos mostrado at agora, vamos nos aproximar uma pouco da estrutura do
#A1!A0.
Algoritmo 'aizSuadrada
8ar numB, num; 2 real
)uno 'aiz,numero2real& B real
8ar calc 2 real
Inicio
!alc Q 1=',numero.
<etorne !alc
)im
Inicio
5scre-a KRumero para 'aiz =uadradaP
4eia numB
Rum; Q 'aiz,numB.
5scre-a K'aiz uadrada igual a2P, num;
)im
!om certeza, teria sido mais fcil executar o calculo de raiz uadrada diretamente no algoritmo
principal, porm o fizemos assim para ue voc) ten*a uma idia de como funciona um
subalgoritmo, ou se/a, a passagem de valores de uma rotina principal, para uma rotina secundria
e o retorno do valor resultante deste processamento.

Ro mdulo passado nos refer8amos aos subalgoritmos. Aui vamos falar um pouco sobre
variveis globais e locais.
!omo o prprio nome diz, uma varivel global pode ser utilizada em ualuer parte do algoritmo
ou em seus subalgoritmos, ou se/a, elas so vis8veis em todo o procedimento ue engloba o
AB
Apostila de Algoritmo Estruturado
processamento. Ao contrrio, as variveis locais so definidas exclusivamente dentro de um
subalgoritmo e sua vida se restringe ao uso dentro do prprio subalgoritmo onde foi declarada.
9magine a seguinte situao2
5 $m OavioP foi fabricado pela (mbraer, porm este poder voar em ualuer parte do
mundo. (ste avio poderia ser comparado a uma varivel global.
5 O OelevadorP do edif8cio OA@!P, foi implantado nauele edif8cio e sua vida, ou se/a, sua
utilidade est apenas nauele edif8cio. (ste elevador poderia ser comparado a uma varivel
local.
:e/a o algoritmo utilizado no mdulo anterior2
Algoritmo 'aizSuadrada
8ar numB, num; 2 real
)uno 'aiz,numero2real& B real
8ar calc 2 real
Inicio
!alc Q 1=',numero.
<etorne !alc
)im
Inicio
5scre-a KRumero para 'aiz =uadradaP
4eia numB
Rum; Q 'aiz,numB.
5scre-a K'aiz uadrada igual a2P, num;
)im
Observe ue as variveis R$"B e R$"; utilizadas no processo, foram declaradas no inicio do
algoritmo principal, ou se/a, estas so variveis globais. _ a varivel !A0!, definida dentro da
funo 'A9Z uma varivel local, ou se/a, opervel apenas dentro dauela funo.
#elo ue observamos at este ponto, um subalgoritmo um nome dado a um determinado trec*o
do algoritmo principal, ue, na maioria das vezes, responsvel pela execuo de uma <nica
tarefa dentro do contexto do sistema. (studamos ue existem dois tipos de subalgoritmos2
B. Dunes 2 ue retornam um <nico valor para o algoritmo ue a invocouN
;. #rocedimentos 2 ue retornam mais de um valor ou nen*um valor ao algoritmo ue o
invocou.
Ras funes e procedimentos, temos as variveis globais, definidas no inicio de um algoritmo e
ue podem ser utilizadas por todos os subalgoritmos assim como pelo algoritmo principal e as
A;
Apostila de Algoritmo Estruturado
variveis locais, ue so definidas dentro de um subalgoritmo e s podem ser utilizadas dentro
deste.
#ara completar o nosso uebra5cebeas, temos tambm o ue c*amados de par+metros, ou se/a, as
portas pelas uais se realiza a comunicao bidirecional entre o algoritmo principal e seus
subalgoritmos e vice e versa. #ossu8mos dois tipos de par+metros2
B. Par[metros formais 2 so aueles ue, de forma automtica substituem par+metros
determinados por Onomes simblicosP por valores passados durante a execuo do
processo. :e/a o exemplo a seguir2
)uno 'aiz,numero2real& B real
8ar calc 2 real
Inicio
!alc Q 1=',numero.
<etorne !alc
)im
Ra verdade, o par+metro formal On<meroP ser substitu8do por um par+metro real, ou se/a, um
valor numrico para o calculo da raiz uadrada de um determinado n<mero.
;. Par[metros reais B uando no temos par+metros formais e sim valores pr estabelecidos
ue no sero alterados durante o processamento.
Atravs desta lgica, devemos saber ue, durante o processamento dos dados, uando so
substitu8dos par+metros formais por valores reais, os par+metros reais so calculados e os
par+metros formais recebem uma cpia dos valores resultantes do processamento. 1eguindo esta
lgica, iremos entender ue, os par+metros formais no afetam os par+metros reais.
AA
Apostila de Algoritmo Estruturado
ALGOR;TMO: DE 9E:?UI:A
A capacidade de armazenar informaes foi um passo decisivo na evoluo da ci)ncia da
computao e para o n8vel generalizado de utilizao do computador. !om isso, a capacidade de
cuperar informaes, para posterior processamento, assume papel de suma import+ncia na
utilizao cotidiana do computador, existindo para isto in<meros exemplos, como2 recuperao de
dados de dados de transaes bancrias de um cliente atravs de um n<mero de conta, no cadastro
de cliente?operaes de um banco. #ortanto, algor8tmos de pesuisa devem ser pro/etados de
forma a garantir a confiabilidade e efici)ncia exigidas pela import+ncia das aplicaes existentes.
A pesuisa de dados pode ser efetuada tanto em unidades de memria secundrias ,disco
r8gido, disuetes, fita., uanto na memria principal do computador.
P5SL?ISA S5L?50"IA4
O mtodo mais simples de determinar a presena, ou no, de um elemento numa
se>)ncia, percorr)5la a partir do seu in8cio, efetuando comparaes, at ue o elemento se/a
encontrado ou o fim da se>)ncia se/a alcanado. (ste mtodo c*amado de pesuisa se>encial.
&ados 2
vetor de n elementos ,n con*ecido.
elemento a ser pesuisado no vetor
'esultado2
1e o elemento existe, mostra5se a sua posio ou o total de ocorr)ncias deste no vetor.
1e o elemento no existe, mostra5se uma mensagem de fal*a.
As consideraes ue podem ser feitas sobre os dados de entrada ,vetor., so do tipo2 o
vetor esta ou no ordenadoN o elemento ocorre uma <nica vez ,pesuisa <nica. ou repetidas vezes
no vetor ,pesuisa <nica.. 9sso acarreta os seguintes tipos de pesuisa2
a. &esordenada fnica
b. &esordenao "<ltipla
c. Ordenada fnica
d. Ordenada "<ltipla
Pesuisa >inria
O mtodo de pesuisa se>encial fcil de escrever e razoavelmente eficientes para
se>)ncias com poucos elementos. (ntretanto, para se>)ncias de taman*o considervel, ue
ocorrem na maioria das aplicaes existentes, a utilizao do mtodo torna5se invivel. $ma
estratgia interessante e eficiente utilizada no mtodo de pesuisa binria.
&escrio Ceral do "todo2
&efinir intervalo inicial ,i, f. de busca
&eterminar a posio mdia do intervalo,m Q ,iTf. &9: ;.
!omparar o elemento da posio mdia ,vdme. com o elemento (2
!aso se/am iguais ento terminou as pesuisa
AE
Apostila de Algoritmo Estruturado
!aso contrrio definir o novo intervalo de busca
Aplicar sucessivamente o passo anterior at encontrar ( ou no existir mais o intervalo de
busca
1o aspectos fundamentais do mtodo2
vetor de entrada tem ue estar ordenado
intervalo de busca inicial ,i,f. Q ,B,n.
intervalo de busca, considerado a cada iterao, definido do seguinte modo2
,i,m5B., se ,( V vdme.
,mTB,f., se ,( U vdme.
tendo a metade do taman*o do intervalo original
O teste de repetio ,i VQ f. e Ro Ac*ou
&ados 2
vetor de n elementos ,n con*ecido.
elemento a ser pesuisado no vetor
'esultado
1e o elemento existe, mostra5se a sua posio ou o total de ocorr)ncias deste no vetor.
1e o elemento no existe, mostra5se uma mensagem de fal*a
ALGOR;TMO: DE ORDENAO
Os problemas de ordenao so comuns tanto em aplicaes comerciais uanto cient8ficas.
(ntretanto, raro so os problemas ue se resumem 7 pura ordenao de se>)ncias de elementos.
Rormalmente, os problemas de ordenao so inseridos em problemas de pesuisa, intercalao e
atualizao. 9sto torna ainda mais importante o pro/eto e a construo de algoritmos eficientes e
confiveis para tratar o problema.
O nosso ob/etivo analisar os seguintes tipos de ordenao 2
a. 1election 1ort
b. @ubble 1ort
c. 9nsertion 1ort
a. 1election 1ort
(ste mtodo um dos mais simples e intuitivos dentre os mtodos existentes. 1ua
estratgia bsica selecionar o menor elemento da se>)ncia considerada e coloc5lo no in8cio da
se>)ncia. Assim, dada uma se>)ncia de taman*o n, vrias iteraes so efetuadas, sendo ue a
cada vez ue esta estratgia aplicada, uma nova se>)ncia gerada pela eliminao do menor
elemento da se>)ncia original.
#rocedure 1election1ort , var vet 2 vetorN n 2 integer.N
AF
Apostila de Algoritmo Estruturado
gordenado crescenteh
var
i, /, pmin 2 integerN
begin
for i B to ,n5B. do
begin
pmin iN
for / ,iTB. to n do
if vetd/e V vetdpmine
t*en pmin /N
trocar ,vetdie, vetdpmine . N
endN
endN
b. @ubble 1ort
A estratgia utilizada pelo @ubble1ort consiste de comparaes e trocas entre elementos
consecutivos da se>)ncia, a fim de 3empurrar3 o maior elemento para a <ltima posio. Assim,
vrias iteraes so efetuadas e, para cada se>)ncia considerada, a aplicao da estratgia gera
uma nova se>)ncia pela eliminao do maior elemento da se>)ncia original.
Alm disto, uma varivel de controle ,lgica. utilizada para registrar a ocorr)ncia ou no
de troca entre elementos da se>)ncia. =uando nen*uma troca efetuada, tem5se ue a se>)ncia
considerada / estava ordenada. (sta particularidade determina, em alguns casos, um n<mero
menor de comparaes ue o mtodo 1election1ort.
#rocedure @ubble1ort , var vet 2 vetor N n integer. N
gordem crescenteh
var
i, limite 2 integerN
trocou 2 booleanN
begin
limite nN
repeat
trocou falseN
for i B to ,limite 5 B. do
begin
if vetdie U vet diTBe t*en
begin
trocar,vetdie, vetdiTBe.N
trocou trueN
endN
endN
limite limite 5 B
until not trocou
endN
c. 9nsertion 1ort
(ste mtodo baseia5se no seguinte processo de insero controlada2
!om o primeiro elemento da se>)ncia forma5se uma se>)ncia de taman*o B, ordenada.
AG
Apostila de Algoritmo Estruturado
!ada elemento restante da se>)ncia original inserido na se>)ncia, de modo ue esta
permanea ordenada. 9sto feito atravs de uma pesuisa na se>)ncia ordenada ue
determina a posio ue o novo elemento dever ser inserido.
=uando um elemento inserido a frente de outro, estes devero ser deslocados de uma
posio.
RECUR:I1IDADE
'ecurso um mtodo geral para resolver problemas reduzindo5os a problemas mais
simples do mesmo tipo. A estrutura geral de uma soluo recursiva de um problema assim 2
'esolva de forma recursiva um problema.
1e o problema trivial, faa o obvio ,resolva5o.
1implifiue o problema
'esolva de forma recursiva ,um problema mais simples.
!ombine ,na medida do poss8vel. a soluo do,os. problemas mais simples em uma
soluo do problema original
$m subprograma recursivo c*ama a si prprio constantemente, cada vez em uma situao
mais simples, at c*egar ao caso trivial, uando pra. &evemos lembrar ue recursividade deve
ser utilizada na soluo de problemas ue ten*am a natureza recursiva.
(xemplos 2
a. 1omatrio de inteiros 5 1e n QBN 1omatrio Q B. !aso contrrio 1omatrio Q n T
1omatrio,n5B.
b. Datorial 5 1e nQK ou nQB N Datorial Q B. !aso contrrio Datorial Q n\Datorial,n5B.
c. "&! 5 1e b divide a, ento o "&! b. !aso contrrio, "&!,a,b. Q "&!,b,a mod b.
d. R5simo termo da srie de Dinonacci . B e ; Q B e n5simo Q ,n5B.T,n5;.
e. %orre de *anoi
7i@liogra3ia
INTRODO AO DESEN!OL!IMENTO DE AL"ORITMOS
#ILSON SIL!A PINTO
AL"ORITMOS
$OSE A"STO MAN%ANO & $A'R FI"EIREDO OLI!EIRA
AL"ORITMOS E ESTRTRAS DE DADOS
NI(LAS #IRT)
AL"ORITMOS E ESTRTRAS DE DADOS
AN"ELO DE MORA "IMARAES & NE#TON A C LA"ES
AL"ORITMOS ESTRTRADOS
) FARREL & C " *EC(ER & E C FARIA e MATOS+ ) F
PRO$ETO DE AL"ORITMOS
NI!IO %I!IANI
AH

Anda mungkin juga menyukai