1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos,...

77
1 Estrutura de Dados e Algoritmos (www.ic.uff.br/~boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas Tabelas Hash Árvores (binárias, AVL, B, etc) Heap: lista de prioridades

Transcript of 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos,...

Page 1: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

1

Estrutura de Dados e Algoritmos(www.ic.uff.br/~boeres/ed.html)

Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas Tabelas Hash Árvores (binárias, AVL, B, etc) Heap: lista de prioridades

Page 2: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

2

Estrutura de Dados e Algoritmos(www.ic.uff.br/~boeres/ed.html)

Bibliografia: J. Szwarcfiter e L. Markeson, Estrutura de Dados e

Algoritmos , Editora LTC. Cormen, Leiserson and Rivest, Introduction to

Algorithms , MIT Press.

Page 3: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

3

Introdução Implementação de uma Aplicação

representa uma abstração da realidade

consiste de um conjunto selecionado de dados relacionados com o problema a ser resolvido

deste conjunto, é possível a obtenção dos resultados esperados

Page 4: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

4

Introdução Cadastro de Pessoal de uma Empresa

Modelo Abstrato simplificação Empregado conjunto de dados

os que são relevantes para o empregador e para os procedimentos contábeis da empresa

identificação, salário, dependentes, ..... Abstraem-se dados irrelevantes:

cor do cabelo, estatura, peso

Page 5: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

5

Introdução Resolução de um problema

escolher uma abstração da realidade o que é relevante para o problema informação: um conjunto de dados comportamento: um conjunto de

operações

a forma como se representa informação e suas operações estão intimamente ligadas

Page 6: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

6

Introdução Dados Relevantes em um Problema

escolher um conjunto de dados: uma representação possível da situação real

orientada às características do problema

os dados precisam ser representados a etapa seguinte é a escolha de uma forma

de representação

Page 7: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

7

Introdução Como representar dados?

depende da ferramenta usada na solução não é uma tarefa muito trivial não existe uma única solução não existe receita

a solução de um problema no computador é um modelo

a construção do modelo transcende diversos níveis de detalhe

Page 8: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

8

Introdução A decisão é influenciada pelo problema As outras são dependentes da ferramenta

tecnologia que se emprega

Programador focaliza o problema decisões de nível mais baixo - projetistas

do equipamento computacional ferramentas que permitam ao

programador se concentrar nas características do problema

Page 9: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

9

Algoritmo Um processo sistemático para a resolução

de problemas dois aspectos básicos no estudo de

algoritmos correção e análise correção: exatidão do método empregado análise: obtenção de parâmetros que

permitam verificar a eficiência do algoritmo(execução e memória ocupada)

Page 10: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

10

Algoritmo Computa uma saída (o resultado do

problema) a partir de uma entrada durante o processo, manipula dados

gerados a partir de sua entrada dados dispostos e manipulados de forma

homogênea Tipo Abstrato de dados um conjunto de dados + operações que

podem ser executadas sobre esses dados

Page 11: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

11

Algoritmo Tipo Abstrato de dados: exemplo

estrutura do tipo alunostruct aluno{

int matricula;

int nome;

char outras_info[1024]; } operação:

procura_aluno_matricula ( aluno.matricula )

Page 12: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

12

Algoritmo Um algoritmo é projetado em termos de

Tipos Abstratos de Dados

Para implementá-lo em uma Linguagem de programação: como representá-lo nesta linguagem? tipos e Operações suportadas pelo computador. na sua representação emprega-se Estruturas

de Dados

Page 13: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

13

Algoritmos e Estruturas de Dados

Resolução de um Problema Algoritmo

representação do comportamento

Estrutura de Dados representação da informação

Page 14: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

14

Algoritmos e Estruturas de Dados No processo de construção de

programas:

formulação do algoritmo definição de estruturas de dados

estão intimamente ligadas

Page 15: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

15

Algoritmos e Estruturas de Dados

Decisões sobre estruturas de dados não podem ser tomadas sem conhecimento dos algoritmos aplicados e vice-versa

Num algoritmo vamos distinguir dois aspectos complementares:

estático e dinâmico

Page 16: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

16

Estrutura de Dados Como a informação é organizada , como

será manipulada e como será utilizada

estudo envolve dois objetivos complementares:

Identificar e desenvolver entidades matemáticas e operações

Determinar que classes de problemas podem ser resolvidas usando essas entidades e operações

Page 17: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

17

Algoritmo Um texto contendo comandos (instruções)

devem ser executados na ordem especificada

corresponde a representação concreta e tem caráter estático

esse texto nos interessa pelos efeitos que causa decorrentes de sua execução dado um conjunto de valores iniciais

execução: evento dinâmico evolui no tempo

Page 18: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

18

Algoritmo Uma dificuldade na concepção e no

entendimento de algoritmos é o relacionamento dos aspectos estático e dinâmico

como entender as estruturas dinâmicas das possíveis execuções do algoritmo a partir da estrutura estática

Page 19: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

19

Algoritmo Deve utilizar Estruturas Básicas de controle

formas naturais de pensar e adequadas à construção de algoritmos inteligíveis

SE ......... ENTÃO ..........SENÃO ........

Page 20: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

20

Algoritmo Estado de um dado sistema é o conjunto

de propriedades desse sistema que são relevantes na situação considerada conjunto de valores de variáveis de um

programa

Ação - evento que ocorre num período de tempo finito estabelecendo um efeito desejado e bem definido ação: o interesse é decorrente do efeito

produzido

Page 21: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

21

Algoritmo Em todo evento pode-se reconhecer um

padrão de comportamento, fazendo-se abstração de diferentes estados iniciais e efeitos cada vez que o padrão de comportamento

é seguido, o evento ocorre seu efeito é totalmente determinado pelo

padrão de comportamento e pelo estado inicial

Page 22: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

22

Algoritmo É a descrição de um padrão de

comportamento, em termos de um repertório bem definido e finito de ações primitivas, que podem ser executadas

possui um caráter imperativo uma ação no algoritmo: um comando é uma norma executável para

estabelecer um certo efeito desejado

Page 23: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

23

Apresentação dos Algoritmos

formato livre com comandos das linguagens estruturadas estrutura de blocos identação funções

Linguagem C

Page 24: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

24

Processamento de um Programa

If (a>b){ printf ( “A é maior”)}else{ printf (“B é maior”)} Tradutor:

Compilador +Linkeditor

programa.c

programa.exe

A é maior

Page 25: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

25

Processamento de Linguagens

Linguagens de Programação: são projetadas em função da facilidade na construção e confiabilidade dos programas

Como executar em arquiteturas diferentes?

Duas alternativas: Interpretação Tradução

Page 26: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

26

Interpretação1. Obter o próximo comando do programa

2. Determinar que ações devem ser executadas

3. Executar essas ações

Esta seqüência é bastante semelhante àquela executada por computadores tradicionais:

1. Obter a próxima instrução (PC)2. Incrementar o PC3. Decodificar a instrução4. Executar a instrução

Page 27: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

27

Tradução Programas escritos em LP de alto nível são

traduzidos para versões equivalentes em linguagem de máquina antes de serem executados

Essa tradução é feita em vários passos Compilador Linkeditor Loader

Page 28: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

28

Compilação Logicamente, a tradução pode ser

dividida em 2 grandes partes: análise do programa fonte (dados de

entrada) síntese do programa objeto executável

Page 29: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

29

Síntese do programa objeto

A saída da fase anterior consiste basicamente de programas quase executáveis (*.o) podem fazer referências a dados

externos ou outros programas Linkedição: une diversos *.o em um

programa executável pronto para rodar

Page 30: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

30

ProgramaIf (a>b){ printf ( “A é maior”)}else{ printf (“B é maior”)}

Compilador

pgm3.c

programa.exe

A é maior

If (a>b){ printf ( “A é maior”)}else{ printf (“B é maior”)}

If (a>b){ printf ( “A é maior”)}else{ printf (“B é maior”)}

pgm1.c

pgm2.c

Linkeditor

pgm1.o

pgm2.o

pgm3.o

Page 31: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

31

Síntese do programa objeto Linkedição

um procedimento para finalizar a resolução de referências

programas podem ser traduzidos separadamente

ou utiliza-se uma biblioteca

Page 32: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

32

Visão Geral de um Programa O Problema

Imprimir uma mensagem mostrando o que está sendo somado

Calcular a soma de três números Imprimir o resultado

Page 33: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

33

Visão Geral de um Programa Este programa não faz muita coisa

Como seleciona os números a somar? Não imprime nenhuma mensagem

explicativa? Que tipos de números soma?

Page 34: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

34

Visão Geral de um Programa

Definindo melhor o problema Exibir para o usuário o que faz o

programa

Exibir o que espera como entrada

Pedir os três valores (A, B,C) e

armazenar

Somar A + B + C e guardar em SOMA

Exibir o valor SOMA ao usuário

Page 35: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

35

Modelo de um Programa

Este é um modelo seguido pelos programas

Um programa tem que ser capaz de armazenar sua entrada em algum lugar

Entrada Processa a Entrada Produz a Saída

Page 36: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

36

Modelo de um Programa Entradas são armazenadas para serem

processadas e gerar uma saída útil e desejada

Dados são armazenados em variáveis posições de memória com um nome que

podem conter dados as variáveis podem conter tipos

diferentes de dados

Page 37: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

37

Variáveis e Tipos de Dados Variáveis podem conter valores diferentes

durante a execução do programa os valores são consistentes com o tipo

da variável

Alguns valores não devem ser alterados durante a execução Constantes

Page 38: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

38

Variáveis e Tipos de Dados Dados - em variáveis ou constantes -

podem ser de diferentes tipos inteiros ( curtos / longos) reais - ponto flutuante

precisão simples ou dupla caracteres isolados string de caracteres

Page 39: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

39

Variáveis Variável é algo que se altera Dados armazenados em uma

variável podem se modificar Em um programa

definir uma variável significa reservar uma memória para armazenar seus valores

Page 40: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

40

Variáveis Deve-se atribuir às variáveis nomes que

o ajudem a lembrar a finalidade de cada uma delas

Nomes mais longos tornam seu programa mais claro outros podem ter que revisar seu

código pode ser necessário revisar o

programa daqui a 6 meses

Page 41: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

41

Identificadores Identificador: Um elemento básico

da Linguagem identificadores válidos: A, AB, A1B12C identificador inválido: 1AB

Identificadores dão nomes a: Variáveis Trechos de Programa

Page 42: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

42

Identificadores C- Padrão ANSI: nomes de

variáveis, funções, rótulos == identificadores Tamanho: 1 a diversos caracteres:

pelo menos os 61ºs são válidos 1o. caracter - letra ou sublinhado letras maiúsculas e minúsculas são

tratadas diferentemente

Page 43: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

43

Blocos um conjunto de comandos com uma

função bem definida serve para definir os limites onde as

variáveis declaradas em seu interior são conhecidas

Variáveis locais a blocos e globais a blocos

Blocos podem possuir um nome: sub-programas (funções no C) ou não

são delimitados por { }

Page 44: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

44

Tipo de Dados Na matemática, variáveis são

classificadas de acordo com algumas características importantes

Existe distinção clara entre variáveis reais, complexas e lógicas valores individuais e conjunto de

valores funções

Page 45: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

45

Tipo de Dados

Esta noção de classificação é muito

importante

Cada constante, variável, expressão

ou função é de um certo tipo refere-se ao conjunto de valores que

pode assumir

Page 46: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

46

Tipo de Dados Em programas, não é possível

deduzir o tipo da variável a partir do seu contexto é necessário explicitar o tipo de cada

variável a cada tipo de dados está associada

uma representação na computador é necessário conhecer o tipo de dados

para saber qual a sua representação

Page 47: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

47

Tipo de Dados A um tipo de dados está associado:

uma representação o tamanho de células de memória para

armazenar esta representação a área de memória onde ficará o

valor da variável tem que ter dimensões compatíveis com a sua representação

conjunto de valores que variáveis de um dado tipo podem assumir

Page 48: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

48

Tipo de Dados As operações exigem argumentos de um

dado tipo e produzem resultados do mesmo tipo

É importante para o compilador saber o tipo de cada variável antes de empregá-la em uma operação

Page 49: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

49

Definição de Variáveis

int X1

float A, B;

char Nome;

Page 50: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

50

Definição de Variáveis A semântica da declaração de uma

variável corresponde a criação de locais na memória rotulados com

o nome da variável (identificador) marcada com o tipo de valores que ela pode

conter (equivale a um tamanho e forma de representação)

X1: é o nome do local de memória que só pode conter variáveis do tipo inteiro

A e B só podem conter variáveis do tipo real

Page 51: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

51

Compatibilidade de Tipos É importante observar que:

o resultado da expressão do lado direito de um comando de atribuição deve ser coerente com o tipo declarado para a variável do lado esquerdo

a = b+c;b e c float então a deve ser float

Page 52: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

52

Expressões forma linearizada usada na matemática Operadores Aritméticos

+, -, *, / 3/2 = 1 (divisão de inteiros)

Precedência: da matemática uso de parênteses a = b+c * (x*y-5); a = a+2; mod : resto da divisão inteira

Page 53: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

53

Expressões Operadores Lógicos

dentro das relações lógicas, usaremos conectivos lógicos usuais

E (&&) OU (||) NEGAÇÃO (!)

Conectivos relacionais >, <, >=, <=, ==, !=

Page 54: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

54

Expressões Prioridades para operações mistas

1o. : parênteses e funções 2o. : expressões aritméticas

* , / + , - (binários)

3o. : comparações >, >=, <, <=, ==, !=

4o. : ! 5o. : && 6o. : ||

Page 55: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

55

Comentários Uma anotacão Servem para ajudar a explicar a

codificação Seu programa deve ser compreendido

por qualquer outro programador /* ………COMENTÁRIO ………..*/ // …… comentário até o fim da linha

Page 56: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

56

Comentários Devem ser utilizados com liberalidade

em todo o programa Devem explicar seu algoritmo Estão relacionados com a solução do

problema Não devem ser óbvios

Page 57: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

57

Atribuição Atribuição

designam valores a uma variável A = B; /* Faz A = B */ /* Este é um comentário óbvio -

desnecessário */ os valores atribuídos a uma variável

devem ser compatíveis com seu tipo Sintáxe: identificador = valor ;

Page 58: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

58

Entrada / Saída Origem da Entrada

teclado disco - arquivo

Destino da Saída vídeo impressora disco - arquivo

Page 59: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

59

Operações Especiais do “C” Incrementando 1:

i++; ++i;

Decrementando 1: i--; --i;

Page 60: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

60

Fluxo de Controle o que deve ser executado: processo

dinâmico determina em cada passo da execução,

qual o próximo comando a ser executado a ordem de execução das ações é a chave

para entender o funcionamento do algoritmo depende dos dados de entrada

Page 61: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

61

Estruturas Básicas de Controle

Um algoritmo deve ser determinístico: dada as mesmas condições iniciais

deve produzir a final da execução os mesmos resultados

só estamos interessados em algoritmos que terminam em um tempo finito

Programas: uma certa espécie de algoritmos

Page 62: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

62

Estruturas Básicas de Controle

Seqüenciamento: Separa um comando do outro e determina a

execução em seqüência dos comandos estrutura de controle mais simples:

seqüência simples traz a cesta com batatas; traz a panela do armário; coloca o avental; descasca batatas; devolve a cesta;

Page 63: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

63

Estruturas Básicas de Controle

condicional: se .... então traz a cesta com batatas; traz a panela do armário; se roupa é clara então coloca

avental; descasca batatas; devolve a cesta;

if ( condição) {...} else {...}

Page 64: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

64

Instruções Condicionais if (NaoAguentaCalor)

{if (JanelaNaoAbre){

FiqueForaDaCozinha;}

}else { LavePratos;}

Page 65: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

65

Comandos Básicos do C <condição> é qualquer expressão cujo

resultado é um valor booleano

onde está relacionado um bloco de comandos (limitados por { / }) pode ser usado um único comando bloco: como um novo comando /

extensão da linguagem

Page 66: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

66

Comandos Básicos do C Repetição

quando um conjunto de ações é executado repetidamente enquanto uma determinada condição permanece válida

condição é uma expressão cujo resultado é um valor lógico

Page 67: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

67

Comandos Básicos do C Repetição

enquanto <condição> façaC1;C2;C3;C4;fim enquanto;

Page 68: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

68

Comandos Básicos do C Repetição - “C”

while ( <condição> ){ C1; C2; C3; C4; }

Page 69: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

69

Comandos Básicos do C Repetição

faça C1;C2;C3;C4;enquanto <condição>;

Page 70: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

70

Comandos Básicos do C Repetição “C “

do { C1;C2;C3;C4;} while (<condição>);

Page 71: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

71

Comandos Básicos do C Repetição

for (i=0; i<N; i++){ C1; C2; C3; C4;};

Page 72: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

72

Comandos Básicos do C Repetição

while<condição> ……... se já da primeira vez a condição for falsa, os

comandos não são executados nenhuma vez do {……} while , condição>

se da primeira vez a condição for falsa, os comandos são executados uma vez

Enquanto a condição for verdadeira os comandos são executados, quando for falsa, o comando é abandonado

Page 73: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

73

Tipos de Dados Simples Inteiros Qualquer valor do conjunto dos

números inteiros inteiros curtos - int - 4 bytes inteiros longos - long - 8 bytes operações

= +, -, *, /(divisão de inteiros) mod

Page 74: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

74

Reais Também chamados de ponto flutuante Qualquer valor do conjunto dos

números reais estão limitados no número de dígitos

decimais - float ou double sua representação: mantissa e

expoente operações :=, +, -, *, /

Page 75: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

75

Usando Tipos Se tenho que definir uma variável para

conter idades, que tipo usar? inteiros, e curtos são suficientes

É função do: conjunto de valores que a variável

pode assumir da precisão que se deseja no

resultado de operações

Page 76: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

76

Caracteres É qualquer caracter isolado

representado no computador letras e números são caracteres caracteres especiais - &, % caracteres especiais e não visíveis -

ESC, CR, LF,… ocupam 1 byte - ASCII char a = ‘A’;

Page 77: 1 Estrutura de Dados e Algoritmos (boeres/ed.html) Tópicos Introdução/Revisão Algoritmos, Noções de Complexidade Listas, Pilhas e Filas.

77

Strings de Caracteres Um número arbitrário de ocorrências de

caracteres deixa em aberto o número de

ocorrências não possui uma representação direta

no C

char a[50] #define nome ”Maria”