aed1-02-introducao

Post on 16-Jan-2016

216 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Introdução às estruturas de dados e algoritmos

TRANSCRIPT

Algoritmos e Algoritmos e Estruturas de Dados IEstruturas de Dados I

Prof. Dr. Raimundo BARRETO

IntroduçãoIntrodução

Alguns slides foram tirados do material do prof. Leandro Galvão (IComp/UFAM)

Lógica

Do grego logiké, que significa “arte de raciocinar”.

A lógica trata da correção do pensamento.Poderíamos dizer também que a lógica é

a arte de pensar corretamente.A lógica ensina a colocar Ordem no

Pensamento

Quais as ações que você faz ao acordar antes de sair para

o trabalho/escola?

Uma possível solução...

1º Passo: Levanta da cama2º Passo: Vai ao banheiro3º Passo: Veste a roupa4º Passo: Toma o café da manhã5º Passo: Sai de casa

Está suficientemente detalhado?

Senão, refaça a solução...

Seqüência Lógica

Sequência Lógica é um conjunto de instruções executadas (sequencialmente) até atingir um objetivo ou solução de um problema.

Instruções?

Instruções

Na linguagem comum, entende-se por instruções “um conjunto de regras ou normas definidas para a realização de algo”.

Em informática, porém, instrução indica a um computador uma ação elementar a ser executada.

Programação

O que seria “lógico” se quisermos ter bons resultados em uma prova escolar?

O que seria “ilógico”?

O que seria “lógico” fazer para ter sucesso numa modalidade esportiva? O que seria “ilógico”?

O que seria “lógico” fazer para desenvolver bons programas de computador?

O que seria “ilógico”?

Temos que usar a lógica...

Programação

Definição de ProgramaçãoRaciocínio lógico

empregado no desenvolvimento de programas de computador,

fazendo uso ordenado dos elementos básicos

de um dado estilo de programação.

Definição de ProgramaçãoRaciocínio lógico

empregado no desenvolvimento de programas de computador,

fazendo uso ordenado dos elementos básicos

de um dado estilo de programação.

Estilo de Programação

Convenções de nomes

Indentações e Layouts

Declarações e Tipos

O que é estilo de programação?

Comentários

Expressões e instruções

Definição de Funções

Estilo de Programação

Exemplo 1

Não dependa da declaração implícita do int.Por exemplo, não escreva:

extern foo;Mas sim:

extern int foo;

Estilo de Programação

Exemplo 2

Operador condicional longo deve ser separado em diversas linhas. Ao invés de:if (foo­>next == NULL && totalcount < needed && needed <= MAX_ALLOT && server_active (current_input)) { ...É melhor escrever:if (foo­>next == NULL    && totalcount < needed && needed <= MAX_ALLOT    && server_active(current_input)){...

Programação

Uma boa programação é desenvolvida a partir de um conjunto de elementos, entre eles: Organização Criatividade Perseverança Padronização Otimização

Algoritimizando a Lógica

Construir algoritmos é o objetivo fundamental de toda a programação,

mas afinal o que é algoritmo?

Algoritimizando a Lógica

Algoritmo é uma sequência de passos que visam atingir um objetivo bem definido.

Algoritmo é uma sequência de passos que visam atingir um objetivo bem definido.

Algoritmo é a descrição de um conjunto de ações que obedecidas, resultam numa sucessão finita

de passos, atingindo o objetivo.

Algoritmo é a descrição de um conjunto de ações que obedecidas, resultam numa sucessão finita

de passos, atingindo o objetivo.

Descrição de um conjunto finito de comandos para a solução de um problema em um tempo

finito.

Descrição de um conjunto finito de comandos para a solução de um problema em um tempo

finito.

Definição de Algoritmo

Algoritimizando a Lógica

Mas tem um detalhe...As pessoas tem inteligência e habilidade

racional, ou seja, fazem perguntas para se esclarecer.

Computador não tem senso próprio, ou seja, deve receber instruções explícitas (algoritmos), e somente em uma linguagem específica.

Homem e Suas 3 Cargas

Um homem precisa atravessar um rio com um barco que possui capacidade de transportar apenas ele e mais uma de suas três cargas, que são: um cachorro, uma galinha e um saco de milho. O que o homem deve fazer para conseguir atravessar o rio sem perder as suas cargas?

Homem e Suas 3 Cargas

Para entender o problema, algumas perguntas devem ser feitas:

– Quais as restrições desse problema?– Há limite na quantidade de viagens?– ...

Inicial: H – C – G - M

C – M H – G

H - C – M G

M H – C – G

H - G – M C

G H – C – M

C

C – MH – G

Final: H – C – G – M

Homem e Suas 3 Cargas

Torre de Hanói

A Torre de Hanói é um "quebra-cabeça" que contém uma base com três pinos, em um dos quais são dispostos alguns discos uns sobre os outros, em ordem crescente de diâmetro, de cima para baixo. O problema consiste em passar todos os discos de um pino para outro qualquer, usando um dos pinos como auxiliar,

de maneira que um disco maior nunca fique em cima de outro menor em nenhuma

situação. O número de discos pode variar.

Torre de Hanói

Torre de Hanói

Quais as restrições?Qual a seqüência lógica para resolver

este problema?

Torre de Hanói

Torre de Hanói

Resolva o problema da Torre de Hanói para 4 discos.

Torre de Hanói

Torre de Hanói

Tem uma solução algorítmica Tem uma solução algorítmica geral para qualquer geral para qualquer

quantidade de discos?quantidade de discos?

Torre de Hanói

Programas

Os programas de computadores nada mais são do que algoritmos escritos numa linguagem de programação (Pascal, C, Cobol, Fortran, Visual Basic, dentre outras) e que são interpretados e executados por um computador.

Linguagem Estruturada

É uma forma de programação de computadores que preconiza que todos os programas possíveis podem ser reduzidos a apenas três estruturas: Sequência Decisão (ou Seleção) Repetição (ou Interação)

Linguagem Estruturada

Características: Sua principal característica é a utilização de

blocos para solução de um problema. Permite a utilização combinada de sub-rotinas

compiladas separadamente, sem que pertençam ao mesmo programa propriamente dito.

Passos para elaboração de um programa

1. Compreender o problema.

2. Esboçar um procedimento para resolver o problema.

3. Formular o algoritmo.

4. Traduzir o algoritmo para uma linguagem de programação (Codificação).

ax 2+bx+c

Passos para elaboração de um programa:: Exemplo

Calcular as raízes reais de:

1. Compreender o problema

Exemplo: Equação de 2o. grauPossibilidades de raízes:

02 raízes complexas; 02 raízes reais idênticas; 02 raízes reais distintas;

Condição para haver raízes reais: Δ ≥ 0

2. Esboçar um procedimento para resolver o problemaCalcular Δ.Se Δ ≥ 0, calcular raízes reais.Caso contrário, informar que não há

raízes reais.

3. Formular o algoritmo

inicio obter(a,b,c) delta = b^2 – 4*a*c se (delta ≥ 0) então r1 = (– b – (delta)^(–1/2))/(2*a) r2 = (– b + (delta)^(–1/2))/(2*a)

mostrar(r1,r2 senão mostrar(“Não há raiz real”) fim do sefim do algoritmo

4. Codificar

#include <stdio.h>#include <stdlib.h>#include <math.h>int main(void){

float a, b, c, delta, r1, r2;scanf("%f %f %f", &a, &b, &c);delta = b*b – 4*a*c;if (delta >= 0){

r1 = (– b – sqrt(delta))/(2*a);r2 = (– b + sqrt(delta))/(2*a);printf("r1 = %f \n r2 = %f", r1, r2);

}else

printf("Nao ha raiz real\n");}

Gerando um programa executável

Passos necessários para gerar um programa executável:A. Codificação

B. Geração de Código Objeto

C. Linkagem

D. Depuração (debug)

Códigofonte

Códigoobjeto

Bibliotecas Programa Executável

Geração de código objeto

Linkagem

Codificação

Gerando um programa executável

Depuração

Gerando um programa executável A. CodificaçãoÉ a escrita de um programa de acordo

com uma linguagem de programação.Utiliza Editores de Texto.Resultado: código-fonte.

Gerando um programa executável B. Geração de código-objetoTradução do código-fonte para o código

de máquina do processador.Realizado pelos Compiladores.Resultado: código-objeto.

Gerando um programa executável C. LinkagemRearranja o código do programaIncorpora as partes referenciadas no

código original (obtidas de uma biblioteca).

Realizada pelos Ligadores.Resultado: código executável pelo

processador.

Gerando um programa executável D. Depuração (debug)

Auxilia o programador a eliminar erros dos programas (“bugs”).

Permite: execução passo-a-passo. visualização do estado do programa através

das variáveis.

Estrutura de Dados

Dados: fatos em sua forma primária que representam coisas do mundo real.

Ex: número de horas trabalhadas, número peças em estoque , pedidos de venda

Informação: conjunto de fatos organizados de tal forma que adquirem valor adicional além do valor do fato em si.

Ex: total de vendas mensais, lista de clientes ordenada por..., média de alunos p/turma, turmas com menos 10 alunos

Estruturas de Dados

Antes de ser possível escrever os algoritmos, temos que analisar a

informação envolvida no problema em questão e desenvolver Estruturas

de Dados que nos permitam armazenar os dados para gerar e

tratar a informação.

Antes de ser possível escrever os algoritmos, temos que analisar a

informação envolvida no problema em questão e desenvolver Estruturas

de Dados que nos permitam armazenar os dados para gerar e

tratar a informação.

Estrutura de Dados

Estruturas de Dados

é a disciplina que estuda as técnicas computacionais para a organização e manipulação eficiente de quaisquer

quantidades de dados.

Estrutura de Dados

Em um projeto de software, dois aspectos devem ser considerados para sua implementação:

Um conjunto estruturado de dados Um conjunto definido de operações

sobre estes dados

Estrutura de Dados

Vamos trabalhar com dois tipos de dados primitivos (inteiros, reais, caracteres, etc) e estruturados (registros e tabelas). Os registros permitem agregar valores de tipos diversos (por exemplo, ficha de aluno). As tabelas permitem agregar vários valores do mesmo tipo (por exemplos, as várias fichas dos alunos de uma turma).

top related