Você está na página 1de 39

Algoritmos e

Estrutura de Dados I

Lucas Cancela
Algoritmos: Um algoritmo é,
formalmente, uma sequência finita de
passos que levam à execução de uma
tarefa. Podemos pensar em algoritmo
como uma receita, uma sequência de
instruções que dão cabo de uma meta
específica.
Informalmente: Sequência de atividades
que levam à solução de um problema!

Lucas Cancela
O uso de algoritmos é quase tão antigo
quanto a matemática. Com o passar do
tempo, entretanto, ele foi bastante
esquecido pela matemática. Com o
advento das máquinas de calcular e
mais tarde os computadores, o uso de
algoritmos ressurgiu com grande vigor,
como uma forma de indicar o caminho
para a solução dos mais variados
problemas.
Lucas Cancela
Ciência das Leis do
Pensamento ou do Raciocínio

ARISTÓTELES
384 – 322 A.C.

Lógica Aristotélica - Pensar de forma estruturada. Lógica.


lógica como a ciência de julgar corretamente, que possibilita
alcançar raciocínios corretos e formalmente válidos.
SILOGISMOS!!
Lucas Cancela
Lógica de Programação - A lógica de
programação é a linguagem usada para criar um
programa de computador. A lógica de
programação é essencial para desenvolver
programas e sistemas informáticos, pois ela
defina o encadeamento lógico para esse
desenvolvimento. Os passos para esse
desenvolvimento são conhecidos como
algoritmo, que consiste em uma sequência lógica
de instruções para que a função seja executada.

Lucas Cancela
Algoritmos estão no dia-a-dia: Um algoritmo não
representa, necessariamente, um programa de
computador, e sim os passos
necessários para realizar uma tarefa.
O conceito de algoritmo é frequentemente
ilustrado pelo exemplo de uma receita,
embora muitos algoritmos sejam mais
complexos. Eles podem repetir passos (fazer
iterações) ou necessitar de decisões (tais como
comparações ou lógica) até que a tarefa se já
completada.

Lucas Cancela
Algoritmo não é a solução do
problema, pois, se assim fosse, cada
problema teria um único algoritmo.
Algoritmo é o caminho para a solução
de um problema, e em geral, os
caminhos que levam a uma solução
são muitos.
Aprendizado somente através de
construção e testes.

Lucas Cancela
A automação é o processo em que uma
tarefa deixa de ser desempenhada pelo
homem e passa a ser realizada por
máquinas, sejam estas dispositivos
mecânicos (como as máquinas
industriais), eletrônicos (como os
computadores), ou de natureza mista
(como os robôs).

Lucas Cancela
Para que a automação de uma tarefa
seja bem-sucedida é necessário que a
máquina que passará a realizá-la seja
capaz de desempenhar cada uma das
etapas constituintes do processo a
ser automatizado com eficiência, de
modo a garantir a repetibilidade do
mesmo.

Lucas Cancela
Assim, é necessário que seja
especificado com clareza e exatidão o
que deve ser realizado em cada uma
das fases do processo a ser
automatizado, bem como a sequência
em que estas fases devem ser
realizadas.

Lucas Cancela
À especificação da sequência ordenada
de passos que deve ser seguida para a
realização de uma tarefa, garantindo a
sua repetibilidade, dá-se o nome de
algoritmo.

Lucas Cancela
FORMAS DE REPRESENTAÇÃO DE
ALGORITMOS

• a Descrição Narrativa
• o Fluxograma Convencional
• o Pseudocódigo

Lucas Cancela
Descrição Narrativa
Cálculo da média de um aluno:
– Obter as notas da primeira e da segunda
prova
– Calcular a média aritmética entre as duas
– Se a média for maior ou igual a 7, o aluno
foi aprovado, senão ele foi reprovado

Lucas Cancela
Descrição Narrativa
Problemas: uso de linguagem natural muitas
vezes dá oportunidade a más interpretações,
ambiguidades e imprecisões.

Qual a vantagem?
Não há a necessidade de aprender nenhum novo
conceito.
Qual a desvantagem?
Em virtude da ambigüidade presente na
linguagem natural a descrição narrativa é
passível de mais de uma interpretação.
Fluxograma Convencional

É uma representação gráfica de


algoritmos onde formas geométricas
diferentes implicam ações (instruções,
comandos) distintos. Tal propriedade
facilita o entendimento das ideias.
contidas nos algoritmos.

Lucas Cancela
Pseudocódigo
Esta forma de representação de
algoritmos, também conhecida como
português estruturado ou portugol, é
bastante rica em detalhes e, por
assemelhar-se bastante à forma em
que os programas são escritos,
encontra muita aceitação, sendo
portanto a forma de representação de
algoritmos que será adotada nesta
disciplina. Lucas Cancela
Pseudocódigo
Maneira intermediária entre a linguagem natural e uma
linguagem de programação de representar um
algoritmo.
Utiliza um conjunto restrito de palavras-chave, em geral
na língua nativa do programador, que tem equivalentes
nas linguagens de programação.
Não requer todo a rigidez sintática necessária numa
linguagem de programação, permitindo que o aluno se
detenha na lógica do algoritmos e não no formalismo da
sua representação.
Normalmente, são versões ultra reduzidas de
linguagens de alto nível do tipo Pascal ou C.
Lucas Cancela
Pseudocódigo
Na verdade, esta representação é
suficientemente geral para permitir
que a tradução de um algoritmo nela
representado para uma linguagem de
programação específica seja
praticamente direta.

Lucas Cancela
Pseudocódigo - EXEMPLO
var
x,y : real //variáveis

inicio
// Seção de Comandos
Escreval ("DIGITE UM NÚMERO")
LEIA (x)
Escreval ("DIGITE OUTRO NÚMERO")
LEIA (y)
SE (x > y) ENTAO
ESCREVA ("x é maior do que y")
SENAO
SE (y > x) ENTAO
ESCREVA ("y é maior do que x")
SENAO
SE (x = y) ENTAO
escreval ("x e y são iguais")
FIMSE
FIMSE
FIMSE
fimalgoritmo

Lucas Cancela
Pseudocódigo
Como exemplo, a seguir é mostrado a
representação do algoritmo de cálculo da média
de um aluno na forma de um pseudocódigo.
Algoritmo Média
Var
N1, N2, Média
Início
Leia N1, N2
Média := (N1+N2)/2
Se Média >= 7 Então
Escreva “Aprovado”
Senão
Escreva “Reprovado”
Fim. Lucas Cancela
Estrutura de Dados: é o nome dado a
organização de dados e algoritmos de
forma coerente e racional de modo a
otimizar o seu uso.
Informalmente: De acordo com o modo
como um conjunto de dados são
organizados e como as operações que
são efetuadas sobre estes dados pode-se
solucionar de forma simples problemas
extremamente complexos.
Lucas Cancela
Propriedades do Algoritmo

Possui um estado inicial


Possui sequencia lógica
Contém ações claras e precisas
Possui dados de entrada
Produz estado final previsível
Deve ser eficaz
PROGRAMA: Codificação de um
algoritmo em linguagem de programação
Existem diversos modelos de
estruturas de dados, e novos modelos
são criados constantemente pois
acompanham também a evolução dos
algoritmos e das linguagens de
programação. Iremos abordar as
estruturas clássicas, as quais podem
ser utilizadas com sucesso na maioria
dos casos.
Lucas Cancela
Estruturas de dados clássicas:

I. Lista.
II. Pilha.
III. Fila.
IV. Arvores.

Lucas Cancela
É um dos temas fundamentais da
ciência da computação, utilizado nas
mais variadas áreas e para as mais
variadas finalidades. No entanto para
começarmos a entender o conceito
devemos, antes entender o conceito
de algoritmos, pois algoritmos
manipulam dados.

Lucas Cancela
Estruturas de dados nada mais são do
que regras transformadas em
algoritmos que manipulam
informações. Bem, esta manipulação
deve ser feita de forma correta e
eficiente, sem contar que
frequentemente necessitamos
comparar algoritmos que manipulam a
mesma ou semelhantes estruturas.
Lucas Cancela
Dados quando estão organizados de uma forma
coerente representam uma estrutura de dados.
Escolher uma estrutura de dados ideal pode
tornar-se um problema difícil para uma
determinada solução. As pesquisas e estudos das
estruturas de dados estão em constante
desenvolvimento, apesar disso, existem
estruturas que têm se mostrado padrão, ou seja,
são clássicas.
Estruturas de dados possuem características
básica, no entanto finalidades bastante diversas.

Lucas Cancela
Até aqui apresentamos as técnicas
básicas para construção de algoritmos.
Contudo, o estudo geral da disciplina
de Algoritmos e Estruturas de Dados“
envolve algoritmos que trabalham
dados organizados em memoria de
maneira mais sofisticadas do que as
simples variáveis básicas que foram
estudadas ate o momento.
Lucas Cancela
E algo mais ou menos parecido como manter um
guarda-roupas organizado no lugar
de um monte de coisas atiradas no meio do
quarto de qualquer jeito.

A organização de dados em memoria permite a


construção de algoritmos sofisticados e
eficientes.

Lucas Cancela
Por exemplo, se frequentemente
enfrentamos o problema de
descobrir os números de telefones de
nossos conhecidos, é conveniente dispor
de uma relação de números, organizada em
uma agenda. Se a organização for feita por
ordem alfabética, a agenda de fato
ajuda. Se, porém, organizássemos nossa
agenda pela ordem de altura das pessoas,
com raras exceções, a agenda se tornaria
difícil de manusear.
Lucas Cancela
As estruturas de dados tem larga
aplicação na computação em geral.
Sistemas Operacionais e aplicativos as
utilizam para varias atividades
importantíssimas, como
gerenciamento de memoria, execução
de processos, armazenamento e
gerenciamento de dados no disco, etc.

Lucas Cancela
As estruturas de dados definem a
organização, métodos de acesso e
opções de processamento para a
informação manipulada pelo
programa. A definição da organização
interna de uma estrutura de dados e
tarefa do projetista da estrutura
Portanto, não faltam motivos para um estudante
da área ou qualquer desenvolvedor/
programador saberem a fundo e com fluência
sobre o assunto.
Lucas Cancela
As estruturas de dados são formas de
distribuir e relacionar os dados
disponíveis, de modo a tornar mais
eficientes os algoritmos que
manipulam esses dados.

Lucas Cancela
Problema:
Manipular um conjunto de fichas de um
fichário.
Solução:
Organizar as fichas em ordem alfabética
Operações possíveis
Inserir ou retirar um ficha, procurar uma
ficha, etc.
Estrutura de Dados Correspondente
LISTA – sequência de elementos dispostos
em ordem.
Lucas Cancela
Problema
Organizar as pessoas que querem ser atendidas num
guichê.
Solução
Colocar as pessoas em fila.
Operações possíveis
À medida que uma pessoa é atendida no guichê, outra
entra no final da fila... Não é permitido “furar” a fila, ou
seja, entrar uma pessoa entre outras que já estão
presentes.
Estrutura de Dados Correspondente
FILA – sequência de elementos dispostos em ordem
com uma regra para a entrada e saída dos elementos (o
primeiro que chega também é o primeiro que sai da
estrutura).
Lucas Cancela
Problema
Organizar um conjunto de pratos que estão
sendo lavados, um a um, em um restaurante.
Solução
Colocar os pratos empilhados.
Operações possíveis
Colocar um prato limpo no alto da pilha, retirar
um prato do alto da pilha, etc...
Estrutura de Dados Correspondente
PILHA – sequência de elementos dispostos em
ordem, mas com uma regra para entrada e saída
dos elementos (o último que chega é o primeiro
que sai da estrutura.).
Lucas Cancela
Problema
Conseguir um modo de visualizar o conjunto de pessoas
que trabalham em uma empresa, tendo em conta sua
função.
Solução
Construir um organograma da empresa.
Operações possíveis
Inserir ou retirar certas funções, localizar uma pessoa,
etc...
Estrutura de Dados Correspondente
ÁRVORE – estrutura de dados que caracteriza uma
relação de hierarquia entre os elementos (uma pessoa
não pode pertencer a dois departamentos diferentes,
cada diretoria tem os seus próprios departamentos,
etc.).
Lucas Cancela
Quando o programador cria um
algoritmo para solucionar um problema,
ele também cria uma estrutura de dados
que é manipulada pelo algoritmo.
A escolha de uma determinada estrutura
pode afetar substancialmente a
quantidade de área de armazenamento
requerida para o processamento bem
como o tempo deste processamento.
Lucas Cancela
É, portanto, de grande importância o
estudo de diferentes estruturas que
possam ser utilizadas eventualmente na
resolução de um problema, de forma
a simplificar a sua implementação
prática.

Lucas Cancela

Você também pode gostar