Documente Academic
Documente Profesional
Documente Cultură
II
Jos de Siqueira
UFMG - ICEx - DCC
1o semestre de 2015
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
1- Algoritmo
Origem: al-Khwarizmi (790 850)
Jos de Siqueira
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
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
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
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
Jos de Siqueira
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
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
Jos de Siqueira
10