estrutura de dados (tcc-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · algoritmos e estruturas de...

81
ESTRUTURA DE DADOS (TCC-00.319) Cristina Boeres

Upload: tranminh

Post on 10-Nov-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

ESTRUTURA DE DADOS (TCC-00.319)

Cristina Boeres

Page 2: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Estrutura de Dados (TCC-00.319)

Tópicos Principais

!  Introdução

!  Tipo Abstrato de Dado (TAD)

!  Noções inicias de algoritmos

!  Listas, Pilhas e Filas (sequencial e encadeada)

!  Listas ordenadas

!  Heap: lista de prioridades

!  Árvores binárias e árvores binárias de busca

2

Page 3: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Estrutura de Dados

Bibliografia:

!  J. Szwarcfiter e L. Markeson, Estrutura de Dados e Algoritmos , Editora LTC.

!  Cormen, Leiserson and Rivest, Introduction to Algorithms , MIT Press.

Informações da disciplina

!  (www.ic.uff.br/~boeres/ed.html)

3

Page 4: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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

Page 5: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Introdução

Modelo Abstrato

!  Cadastro de Pessoal de uma Empresa !  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, ..... !  abstraímos dos dados irrelevantes

!  cor do cabelo, estatura, peso

5

Page 6: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Introdução

Resolução de um problema

!  escolher uma abstração da realidade

!  o que é relevante para resolver 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

Page 7: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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

Page 8: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Algoritmo

!  Um processo sistemático para a resolução de problemas

!  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

8

Page 9: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Tipo Abstrato de Dados

!  Variável !  armazena um dado que pode ser operado ao longo da execução

do algoritmo !  É uma abstração, que tem associado alguns atributos:

!  nome !  endereço: local de memória !  valor: o que está armazenado em um determinado momento !  duração: tempo durante a execução do algoritmo em que a variável

está ativa (alocada) !  escopo: a variável está visível para uma série de regiões do

programa (local ou global). !  tipo: qual conjunto de valores pode ser associado e

consequentemente, o conjunto de operações pode ser definido !  tamanho: tamanho do espaço de memória que armazena os valores

da variável

9

Page 10: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Tipo Abstrato de Dados

!  int !  é um tipo abstrato de dados !  o programador abstrai de todos os detalhes dos atributos

!  estrutura aluno struct aluno{

int matricula; int nome; char outras_info[1024];

}

!  operação:

procura_aluno_matricula ( aluno.matricula );

10

Page 11: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Algoritmo e Estrutura de Dados

!  Um algoritmo é projetado em termos de Tipos Abstratos de Dados

!  Para implementá-lo em uma linguagem de programação: !  temos que saber como representar os tipos na linguagem !  quais são as operações suportadas pelo computador

na sua representação emprega-se Estruturas de Dados

11

Page 12: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Algoritmos e Estruturas de Dados

!  Resolução de um Problema

!  Algoritmo

!  representação do comportamento

!  Estrutura de Dados

!  representação da informação

12

Page 13: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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

13

Page 14: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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

14

Page 15: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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

15

Page 16: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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

16

Page 17: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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

17

Page 18: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Algoritmo

!  Através da utilização de Estruturas Básicas de controle

!  formas naturais de pensar e adequadas à construção de algoritmos inteligíveis. Por exemplo:

!  SE ( ......... ) ENTÃO {..........} SENÃO { ........}

18

Page 19: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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 !  execução de uma operação

19

Page 20: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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

20

Page 21: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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

21

Page 22: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Apresentação dos Algoritmos

!  formato livre com comandos das linguagens estruturadas

!  estrutura de blocos

!  indentação

!  funções

!  Linguagem C-like

22

Page 23: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Processamento de um Programa 23

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

Tradutor: Compilador + Linkeditor

A é maior

Page 24: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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

24

Page 25: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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 processadores tradicionais: ①  Obter a próxima instrução (PC) ②  Incrementar o PC ③  Decodificar a instrução ④  Executar a instrução

25

Page 26: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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

26

meuprog.c tradução meuprog.exe

Page 27: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Tradução

!  Essa tradução pode ser dita ser realizada nos passos

!  Compilação

!  Linkedição

!  Loader (carga)

27

Page 28: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Compilação

!  Pode ser dividida em 2 grandes partes:

!  análise do programa fonte (dados de entrada)

!  síntese do programa objeto executável

!  cada arquivo do programa fonte deve ser compilado separadamente, e um arquivo objeto é gerado

28

meuprog.c compilação meuprog.obj

Page 29: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Síntese do programa objeto

!  A saída da compilação

!  programas quase executáveis (*.obj)

!  podem fazer referências a dados externos ou outros programas

!  Linkedição: une diversos *.obj em um programa executável pronto para rodar

29

Page 30: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Programa executável (aplicação) 30

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

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

pgm1.c

pgm2.c

pgm3.c

pgm1.o

pgm2.0

pgm3.0

linkedição programa.exe

compilação

compilação

compilação

Page 31: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Programa executável (aplicação)

!  Linkedição

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

!  programas podem ser traduzidos separadamente

!  ou utiliza-se uma biblioteca

31

Page 32: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Visão Geral de um Programa

!  O Problema: calcular a soma de três números

➫  requisita a entrada dos números a serem somados

➫  Calcular a soma de três números

➫  Imprimir o resultado

32

Page 33: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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?

33

Page 34: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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

34

Page 35: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Modelo de um Programa

!  Este é um modelo seguido pelos programas

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

35

Entrada Processa a Entrada Saída

Page 36: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Modelo de um Programa

!  Para executar um programa:

36

meuprog.exe

disco

MP CPU

Page 37: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Modelo de um Programa

!  o executável contém:

37

meuprog.exe

!  comandos em linguagem que a CPU entende

!  espaço para armazenar os dados: variáveis e constantes

!  as estrutura de dados

Page 38: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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

38

Page 39: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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

39

Page 40: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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

40

Page 41: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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

41

Page 42: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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

42

Page 43: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Nomes

!  Elemento básico da Linguagem

!  Identificadores dão nomes a:

!  Variáveis

!  Trechos de Programa

43

Page 44: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Nomes

!  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

44

Page 45: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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

45

Page 46: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Tipo de Dados

!  Existe distinção entre

!  variáveis reais, complexas e lógicas

!  valores individuais e conjunto de valores

!  funções

46

Page 47: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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

47

Page 48: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Tipo de Dados

!  Em programas (em geral), 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

48

Page 49: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Tipo de Dados

!  A cada 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

49

Page 50: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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

50

Page 51: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Definição de Variáveis

!  int X1

!  float A, B;

!  char Nome;

51

Page 52: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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) !  o tipo de valores que ela pode conter

!  tamanho e forma de representação !  No exemplo:

!  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

52

Page 53: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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

53

Page 54: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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

54

Page 55: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Expressões

!  Operadores Lógicos !  E (&&)

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

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

55

Page 56: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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

56

Page 57: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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

57

Page 58: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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

58

Page 59: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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 ;

59

Page 60: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Operações Especiais do “C”

!  Incrementando 1:

!  i++;

!  ++i;

!  Decrementando 1:

!  i--;

!  --i;

60

Page 61: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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

Page 62: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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

Page 63: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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

Page 64: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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

Page 65: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Instruções Condicionais

!  if (NaoAguentaCalor)‏ { if (JanelaNaoAbre)‏ { FiqueForaDaCozinha; } } else { LavePratos;}

65

Page 66: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Comandos Básicos do C

!  <condição> é qualquer expressão cujo resultado é um valor booleano

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

!  bloco: como um novo comando / extensão da linguagem

66

Page 67: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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

Page 68: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Comandos Básicos do C

!  Repetição

enquanto <condição> faça

C1;

C2;

C3;

C4;

fim enquanto;

68

Page 69: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Comandos Básicos do C

!  Repetição - “C” while ( <condição> ) {

C1; C2;

C3; C4;

}

69

Page 70: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Comandos Básicos do C

!  Repetição

faça

C1;

C2;

C3;

C4;

enquanto <condição>;

70

Page 71: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Comandos Básicos do C

!  Repetição “C “

do {

C1;

C2;

C3;

C4;

} while (<condição>);

71

Page 72: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Comandos Básicos do C

!  Repetição

for (i=0; i<N; i++)‏ {

C1;

C2;

C3;

C4;

};

72

Page 73: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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

73

Page 74: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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

Page 75: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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

Page 76: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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

Page 77: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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

Page 78: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

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”

78

Page 79: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Exercício - algoritmo

!  Descreva um algoritmo que compute o somatório de 1 até N, sendo N o número de entrada

!  Descreva um que compute a potência xi, onde i varia de 1 até N, sendo x e N, números de entrada

79

Page 80: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Exercício – cálculo da média final !  Considere uma disciplina que adota o seguinte critério de

aprovação: alunos fazem duas provas, P1 e P2, sendo obtida a média M = (P1+P2)/2. Se a média for maior ou igual a 5.0, e nenhuma das notas for inferior a 3.0, o aluno passa direto (tendo média final MF igual a M). Caso contrário, o aluno faz uma terceira prova P3 e a MF é calculada considerando a terceira nota: !  se P3 for maior ou igual a 3.0, MF = (P3+max(P1,P2))/2 !  caso contrário, MF = (M + P3)/2

!  Escreva um programa que leia inicialmente as notas do aluno fornecidas via teclado. Se as notas não forem suficientes para o aluno passar direto, será pedido a nota da P3. Em seguida, o programa deve ter como saída a mensagem “Aprovado” ou “Reprovado”, de acordo com o critério descrito, mostrado ao lado a MF calculada.

80

Page 81: ESTRUTURA DE DADOS (TCC-00.319) - ic.uff.brboeres/slides_ed/ed1.pdf · Algoritmos e Estruturas de Dados ! Decisões sobre estruturas de dados não podem ser ... Através da utilização

Exercícios – calcula média final #include <stdio.h> int main ( ) {

float P1,P2,P3,M,MF; printf ("Entre com as notas de P1 e P2: "); scanf (" %f %f ",&P1,&P2); M=(P1+P2)/2; if ( (P1>=3) && (P2>=3) && (M>=5.0)) MF=M; else {

printf(”\n Entre com a nota de P3: "); scanf(" %f ",&P3); if (P3>=3) {

float Paux = (P1>P2) ? P1:P2; MF=(P3+Paux)/2;

} else MF=(M+P3)/2; } if (MF>=5) printf(”\n %.1f Aprovado\n",MF); else printf(”\n %.1f Reprovado\n",MF); return (0;

}

81