45
ESTRUTURA DE DADOS I AULA I PROF. ME. HÉLIO ESPERIDIÃO

ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

ESTRUTURA DE DADOS IAULA IPROF. ME. HÉLIO ESPERIDIÃO

Page 2: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

O que é um dado?Dado pode ser definido como a matéria-prima originalmente obtida de uma ou mais fontes (etapa de coleta).

Page 3: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

o que é a informaçãoA Informação é o resultado do processamento.

Isto é, o dado processado ou "acabado”.

Page 4: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

Obtendo a informação

Dados Processamento Informação

Page 5: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

Exemplo de Processamento

14/02/2019 5

Área S do

circuloBase,Altura

2

.abs =

Modelo

Matemático

Implementação (Padrão de bits/rotinas)

Page 6: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

Processamento de Dados:O esquema.

ProcessamentoEntrada Saída

Dispositivode Entrada

Dispositivode Saída

Memória

CPU

Page 7: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

Definindo Abstração

14/02/2019 7

Page 8: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

AbstraçãoQuando a matéria-prima usada num processo é abstrata, isto é, apresenta-se sob a forma de valores, quantidades ou símbolos, então falamos em processamento de dados. Quando o processamento é realizado por um computador, entrada refere-se aos dados colhidos do mundo real externo ao computador, e processo refere-se a uma série finita de operações que são realizadas a partir destes dados, a fim de transformá-los em alguma informação desejada (saída).

Page 9: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

ImportanteNem todo tipo de dado abstrato pode ser implementado em toda sua generalidade.

Observe o conjunto Z

Z = {...,-3,-2,-1,0,1,2,3,...}

O conjunto Z deve ser finito.

14/02/2019 9

Page 10: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

Conceito de Estrutura de DadosUma estrutura de dados é um modo de armazenar os dados no computador para que os dadossejam usados com eficiência.

Normalmente devem ser escolhidas cuidadosamente; Uma estrutura de dados bemdesenvolvida permite que uma variedade de operações críticas sejam implementadas por umalinguagem de programação com os tipos de dados e referências e as operações advindas dosmesmos.

Page 11: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

Objetivo da Estrutura de

Dados

Teórico: Identificar e desenvolver modelos matemáticos, determinando que classes de problemas podem ser resolvidos como uso deles;

Prático: Criar representações concretas dos objetos e desenvolver rotinas capazes de atuar sobre estas representações, de acordo com modelo considerado.

Page 12: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

REPRESENTAÇÃO DE DADOS

✓ O matemático inglês George Boole (1815-1864) publicou em 1854 os princípios da lógica booleana.

✓ Segundo Boole tudo poderia ser representado utilizando apenas os números 0 e 1.

010000111010101011110110101010110101010110101010101101

George Boole

Page 13: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

Bit

ü Simplificação de “dígito binário”(BInary digiT em inglês)

ü É a menor unidade de informação que pode ser armazenada ou transmitida.

ü Um bit pode assumir somente 2 valores, por exemplo: 0 ou 1, verdadeiro ou falso.

Page 14: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

Byte

✓ Um byte nada tem de especial, é apenas um

número binário de oito algarismos

0 1 0 1 0 1 1 1

Page 15: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

Bytes

✓ 1 Byte é representado por uma cadeia de 8 bits

1 byte = 8 bits1024 bytes = 1 K byte

1.048.576 bytes = 1 Mega byte

Page 16: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

Noção de tamanho

Bit 20 0 ou 1

Byte 23 8 bits

Kilo 1 Kbyte 210 1024 Bytes

Mega 1 Mbyte 220 1 024 kB

Giga 1 Gbyte 230 1 024 MB

Tera 1 Tbyte 240 1 024 GB

peta 1 Pbyte 250 1 024 TB

Exa 1 Ebyte 260 1 024 PB

Zetta 1 Zbyte 270 1 024 EB

Yotta 1 Ybyte 280 1 024 ZB

Page 17: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

Decimais para Binários

7 2

31 2

11

= 111

Quantos Bits são Necessários para representar o numero 7?

Page 18: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

Binários para Decimais

2 2 2012

+ +1 x 1 x 1 x

4 + 2 + 1 =7

= 7

Número binário: 111

Page 19: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

Tipos de dadosTipo descrição Bits

byte Inteiro sem sinal 8 0 a 255

sbyte inteiro com sinal com sinal

8 -128 a 127

int inteiro com sinal com sinal

32 -2,147,483,648 to 2,147,483,647

uint Inteiro sem sinal 32 0 a 4294967295

short inteiro com sinal com sinal

16 -32.768 a 32.767

long inteiro com sinal com sinal

64 -922337203685477508 to 922337203685477507

ulong Inteiro sem sinal 64 0 a 18446744073709551615

Page 20: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

Importância da escolha correta do tipo de dadosEconomia de memória.

Economia de processador.

Economia de Disco.

Qual o resultado da economia?

Page 21: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

Conceito de Ponteiros

Um ponteiro é uma variável que representa a localização de um item de dados na memória ou seja ele aponta para um endereço de memória na qual existe um dado para ser processado. Os ponteiros são usados para otimizar e aumentar performance de memória em uma aplicação.

14/02/2019 21

Page 22: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

Armazenamento da informação na memória RAM

14/02/2019 22

RAM0012F588

num = 80

x = 123.89

0012F580 Variável inteira (int)

Variável dupla precisão (double)

Ponteiro

*p

*j

Page 23: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

Aplicações da Estrutura de Dados

Desenvolvimento de Banco de dados;

Software GIS (Sistema Geográfico de informções);

Geradores automáticos de programas;

Software de reconhecimento de padrões;

Sistemas de Computação Gráfica;

Sistema de IA (Inteligência Artificial);

Criação de Compiladores;

Expressões Regulares;

Processamento de Imagens Digitais

14/02/2019 23

Page 24: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

É uma sequência de operações bem definidas que, quando executadas por um computador, sempre termina num determinado período de tempo, produzindo uma solução ou indicando que a solução não pode ser obtida.

◼ Procedimento passo a passo para obtenção de um fim

Algoritmo

Page 25: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

Complexidade de Algoritmos

A Complexidade de um Algoritmo consiste na quantidade de “trabalho”necessária para a sua execução.

Page 26: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

Complexidade de Algoritmos

Um algoritmo serve para resolver um

determinado problema.

Todos os problemas têm sempre uma entrada de dados

(N)

O tamanho desse N afeta diretamente o tempo de resposta de um algoritmo

Page 27: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

A complexidade de um algoritmo pode ser dividido em:◦ Complexidade Espacial: Quantidade de recursos utilizados para resolver

o problema;

◦ Complexidade Temporal: Quantidade de Tempo utilizado.

Em ambos os casos, a complexidade é medida de acordo com o tamanho dos dados de entrada (N)

Complexidade de Algoritmos

Page 28: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

Operações primitivas

De modo geral, são as computações básicas realizadas por um algoritmo:

◦ Atribuição de valor para uma variável

◦ Comparação entre valores

◦ Cálculo aritmético

◦ Chamada de função

Sua definição exata não é importante.

Apesar de serem obviamente diferentes, são contabilizadas como tempo unitário

28

Page 29: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

Complexidade EspacialQ UA N TO S R EC URS O S D E M E M Ó R I A S ÃO N EC ES S Á R I OS PA R A E X EC U TA R O P R O GR A MA A BA I XO :

29

Page 30: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

Complexidade EspacialDouble: 64 bits

◦ 6*64bits = 384 bits

Int: 32 bits◦ 1*32bits = 32bits

Total de Recursos:◦ 416bits

◦ 52Bytes.

30

Page 31: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

Complexidade de Algoritmos

Existem três escalas de complexidade:◦ Melhor Caso

◦ Pior Caso

Nas três escalas, a função f(N) retorna a complexidade de um algoritmo com entrada de N elementos

Page 32: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

Complexidade de Algoritmos – Melhor Caso

Definido pela letra grega Ω (Ômega)

É o menor tempo de execução em uma entrada de tamanho N

É pouco usado, por ter aplicação em poucos casos.

Ex.:

◦ Se tivermos uma lista de N números e quisermos encontrar algum deles assume-se que a complexidade no melhor caso é f(N) = Ω (1), pois assume-se que o número estaria logo na cabeça da lista.

Page 33: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

Melhor casoEncontrar o número 35

• Se tivermos uma lista de N números e quisermos encontrar algum deles assume-se que a complexidade no melhor caso é f(N) = Ω (1), pois assume-se que o número estaria logo na cabeça da lista.

33

35 23 20 10 22 10 15 22 1 3

Page 34: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

Complexidade de Algoritmos

–Pior Caso

Será o caso utilizado durante esse curso

Representado pela letra grega O (O maiúsculo. Trata-se da letra grega ômicron maiúscula)

É o método mais fácil de se obter. Baseia-se no maior tempo de execução sobre todas as entradas de tamanho N

Ex.:

◦ Se tivermos uma lista de N números e quisermos encontrar algum deles, assume-se que a complexidade no pior caso é O (N), pois assume-se que o número estaria, no pior caso, no final da lista. Outros casos adiante

Page 35: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

Complexidade de Algoritmos –

Pior Caso• Se tivermos uma lista de N números e quisermos encontrar algum deles, assume-se que a complexidade

no pior caso é O (N), pois assume-se que o número estaria, no pior caso, no final da lista.

35 23 20 10 22 10 15 22 1 3

Page 36: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

Complexidade de Algoritmos

Mas como saber qual é a complexidade de um determinado algoritmo implementado?

Para resolver esse problema, dividiu-se os algoritmos em “Classes de Problemas”, de acordo com o parâmetro que afeta o algoritmo de forma mais significativa

Page 37: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

Classes de Algoritmos

São elas:

1. Complexidade Constante

2. Complexidade Linear

3. Complexidade Quadrática

4. Complexidade Cúbica

5. Complexidade Exponencial

Page 38: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

Complexidade Constante

São os algoritmos de complexidade O(1)

Independe do tamanho N de entradas

É o único em que as instruções dos algoritmos são executadas num tamanho fixo de vezes

Ex.:int RetornaPrimeiro(List: t){

return t[0];

}

Page 39: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

Complexidade Linear

São os algoritmos de complexidade O(N)

Uma operação é realizada em cada elemento de entrada, ex.: pesquisa de elementos em uma lista

Procedure Busca(Lista, x)

i:=0;

while Lista.Elemento[i] <> x do

if i >= Lista.MaxTam then

pos := -1

else

pos := i;

i := i+1;

End;

Retorna i

Page 40: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

Complexidade Quadrática

São os algoritmos de complexidade O(N²)

Itens são processados aos pares, geralmente com um loop dentro do outro

Ex.:

Procedure SomaMatriz(Mat1, Mat2);

Var i, j: integer, MatRes;

Begin

for i:=1 to n do

for j:=1 to n do

MatRes[i,j] := Mat1[i, j] + Mat2[i,j];

Page 41: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

Complexidade Cúbica

São os algoritmos de complexidade O(N³)

Itens são processados três a três, geralmente com um loop dentro do outros dois

Ex.:Procedure SomaElementos_Vetor_Indices_Matriz

(mat: Matriz, vet: Vetor);

Var i, j: integer;

Begin

for i:=1 to n do

for j:=1 to n do

for k:=1 to n do

mat[i, j] := mat[i, j] + vet[k];

Page 42: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

Complexidade Exponencial

São os algoritmos de complexidade O(2N)

Utilização de “Força Bruta” para resolvê-los (abordagem simples para resolver um determinado problema, geralmente baseada diretamente no enunciado do problema e nas definições dos conceitos envolvidos)

Geralmente não são úteis sob o ponto de vista prático

Page 43: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

◼Bubble sort

Métodos simples de Ordenação de dados

Page 44: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

Bubble sortO bubble sort, ou ordenação por flutuação (literalmente "por bolha"), é um algoritmo simples.

A ideia é percorrer o vetor diversas vezes até que ele esteja ordenado, a cada passagem o maior elemento é deslocado (flutua) para o final do vetor

44

Page 45: ESTRUTURA DE DADOS I AULA I · 2019-02-14 · Uma estrutura de dados é um modo de armazenar os dados no computador para que os dados sejam usados com eficiência. Normalmente devem

Bubble sortEssa movimentação lembra a forma como as bolhas em um tanque de água procuram seu próprio nível, e disso vem o nome do algoritmo.

45