You are on page 1of 12

Algoritmo Estruturado

Autor:
Frano Giovani Mognon
Frano G. Mognon out/2005
UNIVERSIDADE DE PASSO FUNDO

Apostila de

Algoritmo Estruturado

LABORATRIO DE TERMO-FLUDOS

FACULDADE DE ENGENHARIA E ARQUITETURA

Acadmico: Frano Giovani Mognon

2
Frano G. Mognon out/2005

INTRODUO ................................................................................................................................4
DEFINIO DE ALGORITMO ..................................................................................................4
LINGUAGEM DE DESCRIO DE ALGORITMO (LDA) .........................................................4
Estrutura um Algoritmo ................................................................................................................5
Identificadores...................................................................................................................................5
Variveis: ......................................................................................................................................5
Declarao de variveis.................................................................................................................5
Operaes Bsicas:............................................................................................................................5
OPERADOR DE ATRIBUIO: ................................................................................................5
OPERADORES ARITMTICOS:................................................................................................6
OPERADORES RELACIONAIS:....................................................................................................6
OPERADORES LGICOS: .............................................................................................................6
PRIORIDADE DE OPERADORES:............................................................................................6
COMANDOS DE ENTRADA E SADA :.......................................................................................6
COMANDOS DE CONTROLE DE FLUXO: .................................................................................7
SEQUNCIA ....................................................................................................................7
SELEO.........................................................................................................................7
REPETIO.....................................................................................................................7
TIPOS DE DADOS...........................................................................................................................7
VETOR .....................................................................................................................................8
MATRIZ ...................................................................................................................................8
REGISTRO ...............................................................................................................................8
MODULARIZAO .......................................................................................................................8
Procedimentos ...........................................................................................................................8
Referncia .................................................................................................................................8
Funes .........................................................................................................................................9
ALGORTMOS DE PESQUISA ......................................................................................................9
PESQUISA SEQUENCIAL..........................................................................................................9
Pesquisa Binria ..........................................................................................................................10
ALGORTMOS DE ORDENAO ..............................................................................................10
RECURSIVIDADE.....................................................................................................................12
Bibliografia .....................................................................................................................................12

3
Frano G. Mognon out/2005
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 que pudessem ser
automatizadas por uma mquina especialmente desenvolvida para este fim, O COMPUTADOR.
Em cincia da computao houve um processo de desenvolvimento simultneo e interativo de
mquinas (hardware) e dos elementos que gerenciam a execuo automtica (software) de uma dada
tarefa. E essa descrio da execuo de uma tarefa, como considerada acima, chamada algoritmo.
O objetivo desse curso a Lgica de Programao dando uma base terica e prtica,
suficientemente boa, para que, o aluno domine os algoritmos e esteja habilitado a aprender uma
linguagem de programao. Ser mostrado tambm um grupo de algoritmos clssicos para tarefas
cotidianas, tais como : ordenao e pesquisa.

DEFINIO DE ALGORITMO
"O conceito central da programao e da Cincia da Computao o conceito de algoritmos, isto
, programar basicamente construir algoritmos."
a descrio, de forma lgica, dos passos a serem executados no cumprimento de determinada
tarefa.
"O algoritmo pode ser usado como uma ferramenta genrica para representar a soluo de
tarefas independente do desejo de automatiz-las, mas em geral est associado ao
processamento eletrnico de dados, onde representa o rascunho para programas (Software)."
"Serve como modelo para programas, pois sua linguagem intermediria linguagem humana e
s linguagens de programao, sendo ento, uma boa ferramenta na validao da lgica de
tarefas a serem automatizadas."
"Um algoritmo uma receita para um processo computacional e consiste de uma srie de
operaes primitivas, interconectadas devidamente, sobre um conjunto de objetos. Os objetos
manipulados por essas receitas so as variveis."
O algoritmo pode ter vrios nveis de abstraes de acordo com a necessidade de representar ou
encapsular detalhes inerentes s linguagens de programao. Ex: Certamente um algoritmo feito
com o objetivo de servir como modelo para uma linguagem de III gerao diferente daquele
para uma linguagem de IV gerao. Mas isso no impede que a ferramenta em si possa ser
usada em ambos o caso.
Como qualquer modelo, um algoritmo uma abstrao da realidade. A abstrao o processo de
identificar as propriedades relevantes do fenmeno que esta sendo modelado. Usando o modelo
abstrato, podemos nos centrar unicamente nas propriedades relevantes para ns, dependendo da
finalidade da abstrao, e ignorar as irrelevantes.
a forma pela qual descrevemos solues de problemas do nosso mundo, afim de, serem
implementadas utilizando os recursos do mundo computacional. Como este possu severas
limitaes em relao ao nosso mundo, exige que, sejam impostas algumas regras bsicas na
forma de solucionar os problemas, para que, possamos utilizar os recursos de hardware e
software disponveis. Pois, os algoritmos, apesar de servirem para representar a soluo de
qualquer problema, no caso do Processamento de Dados, eles devem seguir as regras bsicas
de programao para que sejam compatveis com as linguagens de programao.

LINGUAGEM DE DESCRIO DE ALGORITMO (LDA)


Para escrevermos algoritmos preciso uma linguagem clara e que no deixe margem a
ambiguidades, para isto, devemos definir uma sintaxe e uma semntica, de forma a permitir uma nica
interpretao das instrues num algoritmo.

4
Frano G. Mognon out/2005
Estrutura um Algoritmo
Algoritmo Nome_Do_Algoritmo
variveis
Declarao das variveis
Procedimentos
Declarao dos procedimentos
Funes
Declarao das funes
Incio
Corpo do Algoritmo
Fim

Identificadores
Representam os nomes escolhidos para rotular as variveis, procedimentos e funes, normalmente,
obedecem as seguintes regras :
O primeiro caracter deve ser uma letra
Os nomes devem ser formados por caracteres pertencentes ao seguinte conjunto:
{a,b,c,..z,A,B,C,...Z,0,1,2,...,9,_}
Os nomes escolhidos devem explicitar seu contedo.

Variveis:
Unidades bsicas de armazenamento das informaes a nvel de linguagens de programao. Os tipos de
dados e variveis utilizados dependem da finalidade dos algoritmos, mas, podemos definir alguns, pelo
fato de serem largamente utilizados e implementados na maioria das linguagens, sendo estes:

INTEIRO : qualquer nmero inteiro, negativo, nulo ou positivo.


REAL : qualquer nmero real, negativo, nulo ou positivo.
CARACTER : qualquer conjunto de caracteres alfanumricos.
LGICO : tipo especial de varivel que armazena apenas os valores V e F, onde V representa VERDADE
e F FALSO

Declarao de variveis
Para que os programas manipulem valores, estes devem ser armazenados em variveis e para isso,
devemos declar-las de acordo com a sintaxe:
NomeVarivel,... : tipo

Operaes Bsicas:
Na soluo da grande maioria dos problemas necessrio que as variveis tenham seus valores
consultados ou alterados e, para isto, devemos definir um conjunto de OPERADORES, sendo eles:

OPERADOR DE ATRIBUIO:
NomeDaVariavel Valor ou Expresso Atribuda.

5
Frano G. Mognon out/2005

OPERADORES ARITMTICOS:

+ = Adio Quociente = Quociente da diviso de inteiros


* = Multiplicao Resto = Resto da diviso de inteiros
b
- = Subtrao ou inversor do sinal. EXP(a,b) = Exponenciao a
/ = Diviso

FUNES PRIMITIVAS:
SEN(x); COS(x); TG(x); ABS(x); INT(x); Raiz(x); PI( );

OPERADORES RELACIONAIS:
So utilizados para relacionar variveis ou expresses, resultando num valor lgico (Verdadeiro ou
Falso), sendo eles:

= - igual - diferente
- menor - maior
- menor ou igual - maior ou igual

OPERADORES LGICOS:
So utilizados para avaliar expresses lgicas, sendo eles:

e - e lgico ou conjuno.
ou - ou lgico ou disjuno.
no - negao.

PRIORIDADE DE OPERADORES:
Durante a execuo de uma expresso que envolve vrios operadores, necessrio a existncia de
prioridades, caso contrrio poderemos obter valores que no representam o resultado esperado.
A maioria das linguagens de programao utiliza as seguintes prioridades de operadores :

1 - Efetuar operaes embutidas em parnteses "mais internos"


2 - Efetuar Funes
3 - Efetuar multiplicao e/ou diviso
4 - Efetuar adio e/ou subtrao
5 - Operadores Relacionais
6 - Operadores Lgicos

OBS: O programador tem plena liberdade para incluir novas variveis, operadores ou funes para
adaptar o algoritmo as suas necessidades, lembrando sempre, de que, estes devem ser compatveis com
a linguagem de programao a ser utilizada.

COMANDOS DE ENTRADA E SADA :


No algoritmo preciso representar a troca de informaes que ocorrer entre o mundo da
mquina e o nosso mundo, para isso, devemos utilizar comandos de entrada e sada, sendo que, a nvel
de algoritmo esses comandos representam apenas a entrada e a sada da informao, independe do
dispositivo utilizado (teclado, discos, impressora, monitor,...), mas, sabemos que nas linguagens de

6
Frano G. Mognon out/2005
programao essa independncia no existe, ou seja, nas linguagens de programao temos comandos
especficos para cada tipo de unidade de Entrada/Sada.

Comando de Entrada de Dados


Leia(varivel_1, varivel_2,...)
Comando de Sada de Dados
Imprima(expresso_1, expresso_2,...)

COMANDOS DE CONTROLE DE FLUXO:


Para representar a soluo de um problema devemos escrever o conjunto de passos a serem seguidos,
sendo que, a maioria dos problemas exigem uma dinmica na sua soluo, impondo assim que os
algoritmos executem conjunto de instrues de acordo com as possveis situaes encontradas no
problema original. E de acordo com a Programao Estruturada os mecanismos utilizados para esse
controle so: Sequncia, Seleo e Repetio.

SEQUNCIA: usada para executar comandos passo a passo, sabendo que todos eles sero
executados na ordem de escrita, sem nenhum desvio. Uma sequncia pode possuir um ou vrios
comandos, os quais devem ser delimitados pelos identificadores Incio e Fim.

Inicio
Comando_1
...
Comando_n
Fim

SELEO: usada para tomar decises, ou seja desviar a execuo do algoritmo de acordo
com uma condio, podendo ser simples ou composta.

Simples Composta
Se (Expresso Lgica) Se (Expresso Lgica)
Ento Sequncia_1 Ento Sequncia_1
Seno Sequncia_2

REPETIO: Serve para efetuar um conjunto de aes repetidas vezes. Existem trs tipos
bsicos de repeties, sendo elas.

Enquanto (Expresso Lgica) faa O comando Enquanto analisa a Expresso Lgica e enquanto
Sequncia o seu resultado for, o valor lgico, Verdade a Sequncia
executada.
Para varivel valor_inicial at O comando Para incrementa, a varivel, a partir do
valor_final faa valor_inicial de uma unidade, at que, esta atinja o valor_final.
Sequncia E para cada incremento a Sequncia executada..
Repita O comando Repita executa a Sequncia at que o valor
Sequncia retornado pela Expresso Lgica seja Verdadeiro
At (Expresso Lgica)

TIPOS DE DADOS

7
Frano G. Mognon out/2005
Estruturas formadas por um conjunto de variveis, permitindo modelar de forma mais natural os
dados.

VETOR: estrutura formada por um conjunto unidimensional de dados de mesmo tipo (homogneo) e
possuindo nmero fixo de elementos (Esttico). Na declarao dos vetores devemos informar o seu
nome, seu tipo (inteiro, real, caracter, ...), e seu tamanho (nmero de elementos). Cada elemento do vetor
identificado por um ndice (unidimensional), o qual indica a sua posio no vetor.

Declarao :
NomeDoVetor : vetor[n de elementos] de Tipo do Vetor
Referncia :
NomeDoVetor[ndice]

MATRIZ: estrutura semelhante ao vetor, sendo que, pode possuir n dimenses. Desta forma para fazer
referncia aos elementos de uma matriz, precisaremos de tantos ndices quanto for suas dimenses.

Declarao :
NomeDaMatriz : matriz[dimenses] de Tipo da Matriz
Referncia :
NomeDaMatriz[ndices]

REGISTRO: estrutura formada por um conjunto de variveis, que podem possuir tipos diferentes
(Heterogneo), agrupadas em uma s unidade.

Declarao :
NomeDoRegistro : Registro
Declarao de Variveis
FimRegistro
Refernca :
NomeDoRegistro.NomeDaVarivel
Obs: Podemos ainda definir um vetor formado por registros.

MODULARIZAO
A modularizao consiste num mtodo para facilitar a construo de grandes programas, atravs
de sua diviso em pequenas etapas, que so : mdulos, rotinas, sub-rotinas ou sub-programas.
Permitindo o reaproveitamento de cdigo, j que podemos utilizar um mdulo quantas vezes for
necessrio, eliminando assim a necessidade de escrever o mesmo cdigo em situaes repetitivas.

Procedimentos - Um procedimento um bloco de cdigo precedido de um cabealho que contm o


Nome do procedimento e seus parmetros. Com isto, podemos fazer referncia ao bloco de cdigo de
qualquer ponto do algoritmo atravs do seu nome e passando os seus parmetros.

Declarao :
Procedimento NomeDoProcedimento [(parmetros)]
Variveis
Inicio
Comandos;
Fim;

Onde, parmetros representam as variveis que devem ser passadas ao procedimento. Os


parmetros podem ser de : ENTRADA (passado por valor) ou de ENTRADA/SADA (passado por
referncia). Os parmetros de ENTRADA no podem ser alterados pelo procedimento, para que isso seja
possvel o parmetro deve ser de ENTRADA/SADA Para indicar que um parmetro de
ENTRADA/SADA devemos colocar a palavra VAR antes da sua declarao.

Referncia :
NomeDoProcedimento(variveis)

8
Frano G. Mognon out/2005

OBS: As variveis passadas aos procedimentos so associadas aos parmetros do procedimento de


acordo com a ordem das variveis e da lista de parmetros.

Funes - Uma funo semelhante a um procedimento, sendo que esta deve retornar,
obrigatoriamente, um valor em seu nome, desta forma, necessrio declarar, no cabealho da funo,
qual o seu tipo.

Declarao :
Funo NomeDaFuno [(parmetros)] : tipo_da_funo
Variveis
Inicio
Comandos
NomeDaFuno (expresso de retorno)
Fim;
Referncia :
NomeDaFuno(parmetro)

ALGORTMOS DE PESQUISA
A capacidade de armazenar informaes foi um passo decisivo na evoluo da cincia da
computao e para o nvel generalizado de utilizao do computador. Com isso, a capacidade de cuperar
informaes, para posterior processamento, assume papel de suma importncia na utilizao cotidiana do
computador, existindo para isto inmeros exemplos, como: recuperao de dados de dados de transaes
bancrias de um cliente atravs de um nmero de conta, no cadastro de cliente/operaes de um banco.
Portanto, algortmos de pesquisa devem ser projetados de forma a garantir a confiabilidade e eficincia
exigidas pela importncia das aplicaes existentes.
A pesquisa de dados pode ser efetuada tanto em unidades de memria secundrias (disco rgido,
disquetes, fita), quanto na memria principal do computador.

PESQUISA SEQUENCIAL
O mtodo mais simples de determinar a presena, ou no, de um elemento numa seqncia,
percorr-la a partir do seu incio, efetuando comparaes, at que o elemento seja encontrado ou o fim da
seqncia seja alcanado. Este mtodo chamado de pesquisa seqencial.

Dados :

vetor de n elementos (n conhecido)


elemento a ser pesquisado no vetor

Resultado:

Se o elemento existe, mostra-se a sua posio ou o total de ocorrncias deste no vetor.


Se o elemento no existe, mostra-se uma mensagem de falha.

As consideraes que podem ser feitas sobre os dados de entrada (vetor), so do tipo: o vetor
esta ou no ordenado; o elemento ocorre uma nica vez (pesquisa nica) ou repetidas vezes no vetor
(pesquisa nica). Isso acarreta os seguintes tipos de pesquisa:

a. Desordenada nica

9
Frano G. Mognon out/2005
b. Desordenao Mltipla
c. Ordenada nica
d. Ordenada Mltipla

Pesquisa Binria
O mtodo de pesquisa seqencial fcil de escrever e razoavelmente eficientes para
seqncias com poucos elementos. Entretanto, para seqncias de tamanho considervel, que ocorrem
na maioria das aplicaes existentes, a utilizao do mtodo torna-se invivel. Uma estratgia
interessante e eficiente utilizada no mtodo de pesquisa binria.

Descrio Geral do Mtodo:

Definir intervalo inicial (i, f) de busca


Determinar a posio mdia do intervalo(m = (i+f) DIV 2)
Comparar o elemento da posio mdia (v[m]) com o elemento E:
Caso sejam iguais ento terminou as pesquisa
Caso contrrio definir o novo intervalo de busca
Aplicar sucessivamente o passo anterior at encontrar E ou no existir mais o intervalo de busca

So aspectos fundamentais do mtodo:

vetor de entrada tem que estar ordenado


intervalo de busca inicial (i,f) = (1,n)
intervalo de busca, considerado a cada iterao, definido do seguinte modo:
(i,m-1), se (E < v[m])
(m+1,f), se (E > v[m])
tendo a metade do tamanho do intervalo original
O teste de repetio (i <= f) e No Achou

Dados :

vetor de n elementos (n conhecido)


elemento a ser pesquisado no vetor

Resultado

Se o elemento existe, mostra-se a sua posio ou o total de ocorrncias deste no vetor.


Se o elemento no existe, mostra-se uma mensagem de falha

ALGORTMOS DE ORDENAO
Os problemas de ordenao so comuns tanto em aplicaes comerciais quanto cientficas.
Entretanto, raro so os problemas que se resumem pura ordenao de seqncias de elementos.
Normalmente, os problemas de ordenao so inseridos em problemas de pesquisa, intercalao e
atualizao. Isto torna ainda mais importante o projeto e a construo de algoritmos eficientes e confiveis
para tratar o problema.

O nosso objetivo analisar os seguintes tipos de ordenao :

a. Selection Sort
b. Bubble Sort
c. Insertion Sort

10
Frano G. Mognon out/2005
a. Selection Sort
Este mtodo um dos mais simples e intuitivos dentre os mtodos existentes. Sua estratgia
bsica selecionar o menor elemento da seqncia considerada e coloc-lo no incio da seqncia.
Assim, dada uma seqncia de tamanho n, vrias iteraes so efetuadas, sendo que a cada vez que
esta estratgia aplicada, uma nova seqncia gerada pela eliminao do menor elemento da
seqncia original.

Procedure SelectionSort ( var vet : vetor; n : integer);


{ordenado crescente}
var
i, j, pmin : integer;
begin
for i 1 to (n-1) do
begin
pmin i;
for j (i+1) to n do
if vet[j] < vet[pmin]
then pmin j;
trocar (vet[i], vet[pmin] ) ;
end;
end;

b. Bubble Sort
A estratgia utilizada pelo BubbleSort consiste de comparaes e trocas entre elementos
consecutivos da seqncia, a fim de "empurrar" o maior elemento para a ltima posio. Assim, vrias
iteraes so efetuadas e, para cada seqncia considerada, a aplicao da estratgia gera uma nova
seqncia pela eliminao do maior elemento da seqncia original.
Alm disto, uma varivel de controle (lgica) utilizada para registrar a ocorrncia ou no de troca
entre elementos da seqncia. Quando nenhuma troca efetuada, tem-se que a seqncia considerada
j estava ordenada. Esta particularidade determina, em alguns casos, um nmero menor de comparaes
que o mtodo SelectionSort.

Procedure BubbleSort ( var vet : vetor ; n integer) ;


{ordem crescente}
var
i, limite : integer;
trocou : boolean;
begin
limite n;
repeat
trocou false;
for i 1 to (limite - 1) do
begin
if vet[i] > vet [i+1] then
begin
trocar(vet[i], vet[i+1]);
trocou true;
end;
end;
limite limite - 1
until not trocou
end;

11
Frano G. Mognon out/2005
c. Insertion Sort
Este mtodo baseia-se no seguinte processo de insero controlada:

Com o primeiro elemento da seqncia forma-se uma seqncia de tamanho 1, ordenada.


Cada elemento restante da seqncia original inserido na seqncia, de modo que esta permanea
ordenada. Isto feito atravs de uma pesquisa na seqncia ordenada que determina a posio que
o novo elemento dever ser inserido.
Quando um elemento inserido a frente de outro, estes devero ser deslocados de uma posio.

RECURSIVIDADE
Recurso um mtodo geral para resolver problemas reduzindo-os a problemas mais simples do
mesmo tipo. A estrutura geral de uma soluo recursiva de um problema assim :
Resolva de forma recursiva um problema.

Se o problema trivial, faa o obvio (resolva-o)


Simplifique o problema
Resolva de forma recursiva (um problema mais simples)
Combine (na medida do possvel) a soluo do(os) problemas mais simples em uma soluo do
problema original

Um subprograma recursivo chama a si prprio constantemente, cada vez em uma situao mais
simples, at chegar ao caso trivial, quando pra. Devemos lembrar que recursividade deve ser utilizada na
soluo de problemas que tenham a natureza recursiva.

Bibliografia
INTRODUO AO DESENVOLVIMENTO DE ALGORITMOS
WILSON SILVA PINTO

ALGORITMOS
JOSE AUGUSTO MANZANO - JAYR FIGUEIREDO OLIVEIRA

ALGORITMOS E ESTRUTURAS DE DADOS


NIKLAUS WIRTH

ALGORITMOS E ESTRUTURAS DE DADOS


ANGELO DE MOURA GUIMARAES - NEWTON A C LAGES

ALGORITMOS ESTRUTURADOS
H FARREL - C G BECKER - E C FARIA e MATOS, H F

12

You might also like