A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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.

Apresentações semelhantes


Apresentação em tema: "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."— Transcrição da apresentação:

1 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

2 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.

3 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

4 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

5 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

6 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

7 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

8 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

9 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)

10 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

11 11 Algoritmo Tipo Abstrato de dados: exemplo estrutura do tipo aluno struct aluno{ int matricula; int nome; char outras_info[1024]; } operação: procura_aluno_matricula ( aluno.matricula )

12 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

13 13 Algoritmos e Estruturas de Dados Resolução de um Problema Algoritmo representação do comportamento Estrutura de Dados representação da informação

14 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

15 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

16 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

17 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

18 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

19 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........

20 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

21 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

22 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

23 23 Apresentação dos Algoritmos formato livre com comandos das linguagens estruturadas estrutura de blocos identação funções Linguagem C

24 24 Processamento de um Programa If (a>b) { printf ( A é maior) } else { printf (B é maior) } Tradutor: Compilador + Linkeditor programa.c programa.exe A é maior

25 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

26 26 Interpretação 1. 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 PC 3. Decodificar a instrução 4. Executar a instrução

27 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

28 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

29 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

30 30 Programa If (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

31 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

32 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

33 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?

34 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

35 35 Modelo de um Programa Este é um modelo seguido pelos programas Um programa tem que ser capaz de armazenar sua entrada em algum lugar EntradaProcessa a EntradaProduz a Saída

36 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

37 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

38 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

39 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

40 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

41 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

42 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

43 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 { }

44 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

45 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

46 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

47 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

48 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

49 49 Definição de Variáveis int X1 float A, B; char Nome;

50 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

51 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

52 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

53 53 Expressões Operadores Lógicos dentro das relações lógicas, usaremos conectivos lógicos usuais E (&&) OU (||) NEGAÇÃO (!) Conectivos relacionais >, =, <=, ==, !=

54 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. : ||

55 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

56 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

57 57 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 ;

58 58 Entrada / Saída Origem da Entrada teclado disco - arquivo Destino da Saída vídeo impressora disco - arquivo

59 59 Operações Especiais do C Incrementando 1: i++; ++i; Decrementando 1: i--; --i;

60 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

61 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

62 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;

63 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 {...}

64 64 Instruções Condicionais if (NaoAguentaCalor) { if (JanelaNaoAbre) { FiqueForaDaCozinha; } else { LavePratos;}

65 65 Comandos Básicos do C é 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

66 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

67 67 Comandos Básicos do C Repetição enquanto faça C1; C2; C3; C4; fim enquanto;

68 68 Comandos Básicos do C Repetição - C while ( ) { C1; C2; C3; C4; }

69 69 Comandos Básicos do C Repetição faça C1; C2; C3; C4; enquanto ;

70 70 Comandos Básicos do C Repetição C do { C1; C2; C3; C4; } while ( );

71 71 Comandos Básicos do C Repetição for (i=0; i<N; i++) { C1; C2; C3; C4; };

72 72 Comandos Básicos do C Repetição while ……... 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

73 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

74 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 :=, +, -, *, /

75 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

76 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;

77 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


Carregar ppt "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."

Apresentações semelhantes


Anúncios Google