Sunteți pe pagina 1din 11

ALGORITMOS E ESTRUTURAS DE DADOS

II
Jos de Siqueira
UFMG - ICEx - DCC
1o semestre de 2015

Algoritmos e Estruturas de Dados II

Introduo

Conceitos:
1. Algoritmo.
2. Dados.
3. Estruturas de dados.
4. Programas.
5. Tipos abstratos de dados.
6. Linguagens de programao.
7. Complexidade de algoritmos.

Jos de Siqueira

Algoritmos e Estruturas de Dados II

1- Algoritmo
Origem: al-Khwarizmi (790 850)

Matemtico, gegrafo, historiador e astrnomo de


Bagd.
Introdutor, no ocidente, das invenes indianas:
os algarismos arbicos, inclusive o zero
o sistema numrico posicional
as fraes e a notao de barra para fraes
Seu famoso Tratado: Kitab al-djabr
wa-l-muqabala,
deu origem palavra lgebra (restaurao)

Jos de Siqueira

Algoritmos e Estruturas de Dados II

Definio de Algoritmo
Um conjunto preciso de regras especificando
como resolver um determinado problema
Algoritmos: receita, procedimento, mtodo,
plano, processo, etc.
Exemplos de algoritmos: como somar, multiplicar,
mdc, etc.
Caractersticas de algoritmos:
transformam dados da entrada em dados na
sada.
podem no funcionar para dados especficos na
entrada.
podem ser decompostos em um nmero
elementar de passos sucessivos.
sempre do os mesmos dados na sada para os
mesmos dados da entrada.
devem produzir sada em tempo finito, para
dados de entrada finitos.
podem no produzir sada alguma.

Jos de Siqueira

Algoritmos e Estruturas de Dados II

2- Dados
Abstrao e representao de dados.
Exemplo: nmero e algarismos indo-arbicos ou
romanos.
A representao dos dados facilita a execuo de
algoritmos
Exemplo: O que mais fcil fazer:
9 6 ou IX VI ?
Abstraes de dados: nome completo de uma
pessoa, endereo, nmero de CPF, salrio, notas,
nmero de matrcula, seqncias, conjuntos, listas,
etc.
Tipos de dados: numricos, alfabticos, imagens,
sons, espaos fsicos, compostos, estruturados, etc.
Representaes possveis: inteiros, reais, racionais,
alfabeto latino, pilhas, filas.

Jos de Siqueira

Algoritmos e Estruturas de Dados II

3- Estruturas de Dados
Estrutura: forma, relaes e propriedades.
Armazenagem e organizao de dados em uma
estrutura adequada.
O formato depende dos tipos dos dados, da
representao e do uso.
Exemplos: vetores, matrizes, registros, listas
encadeadas, rvores, etc.
4- Programas
Computador: mquina inorgnica ou orgnica
para executar algoritmos.
Necessidade de programar a execuo do algoritmo.
Recursos limitados: memria e velocidade de
execuo.
Breve histrico do computador e de seu uso.
De algoritmos a programas: refinamentos
sucessivos.
Niklaus Wirth:
Algoritmos + Estruturas de Dados = Programas.

Jos de Siqueira

Algoritmos e Estruturas de Dados II

5- Tipos Abstratos de Dados


1 verso de um algoritmo:
a representao dos dados no fixa.
a

Dados abstratos:
Uma notao precisa para descrev-los.
Operaes que se pode aplicar a eles.
Propriedades das operaes.
6- Linguagens de Programao
Breve histrico das linguagens de programao:
Linguagens de mquinas;
Linguagens de montagem (assembly languages);
fortran, cobol, lisp;
algol, apl, pl1;
pascal, c, prolog;
ada, eiffel;
java, haskell;
Linguagens procedurais (o qu e como)
linguagens declarativas (o qu).

Jos de Siqueira

Algoritmos e Estruturas de Dados II

Evoluo das linguagens:


abstrao da mquina real
maior poder de expresso da linguagem
Prolog e Haskell: programas baseados em
definies indutivas (recurso).
Pascal
Tipos bsicos: integer, real, boolean, char.
Tipos estruturados:
Homogneos
Heterogneos
array, file, set record, tipos enumerados
Tipo apontador: nico com capacidade de definir
tipos recursivos.

Jos de Siqueira

Algoritmos e Estruturas de Dados II

7- Complexidade de algoritmos
Objetivo: comparar tempo de execuo e
tamanho da memria utilizada por diferentes
programas que resolvem o mesmo problema.
O que contar?
Batidas do relgio interno do processador?
Tempo total de execuo?
N de instrues de mquina?
o

Operaes primitivas?
Proposta:
Tempo: o n de operaes e o tempo de cada
operao.
Espao: o n de instrues, o n de dados do
programa, o n de palavras para guardar cada
uma delas e o n de palavras necessrias para
manipular os dados.
o

Jos de Siqueira

Algoritmos e Estruturas de Dados II

Enunciado:
O algoritmo A, implementado pelo programa P ,
no computador C e executado com os dados D
utiliza k segundos de clculo e j bytes de memria.
Necessidade de expressar resultados mais gerais,
que estimem a eficincia intrnseca do mtodo
utilizado por um algoritmo.
Enunciado desejado:
Em toda mquina e qualquer que seja a linguagem
de programao, o algoritmo A1 melhor que o
algoritmo A2 para dados de tamanho grande.
Ou ainda:
O algoritmo A1 timo em nmero de
comparaes para resolver o problema Q.
Operaes fundamentais: uma ou mais operaes
para as quais o algoritmo tem seu tempo de
execuo prporcional ao seu n .
o

Jos de Siqueira

Algoritmos e Estruturas de Dados II

Exemplos de operaes fundamentais


Para a pesquisa de um elemento em uma lista em
memria principal: n de comparaes entre o
elemento e os dados de entrada.
o

Para a pesquisa de um elemento em disco rgido:


n de acessos memria secundria.
o

Para ordenar uma lista de elementos: n de


comparaes entre 2 elementos e n de
deslocamentos de elementos.
o

Para multiplicar 2 matrizes de inteiros: n de


multiplicaes e n de somas.
o

Jos de Siqueira

10

S-ar putea să vă placă și