MÓDULO 2 AULA 1 Projeto e Desenvolvimento de Algoritmos O que são algoritmos? Renato Campioni.

32
MÓDULO 2 MÓDULO 2 AULA 1 AULA 1 Projeto Projeto e e Desenvolvimento Desenvolvimento de Algoritmos de Algoritmos O que são algoritmos? O que são algoritmos? Renato Campioni Renato Campioni

Transcript of MÓDULO 2 AULA 1 Projeto e Desenvolvimento de Algoritmos O que são algoritmos? Renato Campioni.

Page 1: MÓDULO 2 AULA 1 Projeto e Desenvolvimento de Algoritmos O que são algoritmos? Renato Campioni.

MÓDULO 2MÓDULO 2

AULA 1AULA 1

ProjetoProjeto e e DesenvolvimentoDesenvolvimento de de AlgoritmosAlgoritmos

O que são algoritmos?O que são algoritmos?

Renato CampioniRenato Campioni

Page 2: MÓDULO 2 AULA 1 Projeto e Desenvolvimento de Algoritmos O que são algoritmos? Renato Campioni.

MÓDULO 2MÓDULO 2

AULA 1AULA 1ÍndiceÍndice

ObjetivosObjetivos

IntroduçãoIntrodução

Representação de AlgoritmosRepresentação de Algoritmos Linguagem NaturalLinguagem Natural FluxogramasFluxogramas Pseudo-LinguagemPseudo-Linguagem

Técnicas de Projeto de AlgoritmosTécnicas de Projeto de Algoritmos

Page 3: MÓDULO 2 AULA 1 Projeto e Desenvolvimento de Algoritmos O que são algoritmos? Renato Campioni.

MÓDULO 2MÓDULO 2

AULA 1AULA 1ObjetivosObjetivos

Apresentar o que são algoritmos.Apresentar o que são algoritmos.

Formas de representação.Formas de representação.

Técnicas de criação e desenvolvimento de Técnicas de criação e desenvolvimento de algoritmos.algoritmos.

Page 4: MÓDULO 2 AULA 1 Projeto e Desenvolvimento de Algoritmos O que são algoritmos? Renato Campioni.

MÓDULO 2MÓDULO 2

AULA 1AULA 1ReceitaReceita

Um algoritmo é um conjunto finito de regras que Um algoritmo é um conjunto finito de regras que fornece uma seqüência precisa de operações fornece uma seqüência precisa de operações para resolver um problema específico.para resolver um problema específico.

Por exemplo, uma receita é um algoritmo para Por exemplo, uma receita é um algoritmo para resolver o problema de fazer um bolo.resolver o problema de fazer um bolo.

Claro que a receita deve ser precisa, por Claro que a receita deve ser precisa, por exemplo, colocar sal a gosto não vale!exemplo, colocar sal a gosto não vale!

Page 5: MÓDULO 2 AULA 1 Projeto e Desenvolvimento de Algoritmos O que são algoritmos? Renato Campioni.

MÓDULO 2MÓDULO 2

AULA 1AULA 1ExemplosExemplos

Todos nós sabemos criar e seguir algoritmosTodos nós sabemos criar e seguir algoritmos

Como ir de casa até o trabalho?Como ir de casa até o trabalho?

Como fazer um bife à milaneza?Como fazer um bife à milaneza?

Como trocar o pneu do carro?Como trocar o pneu do carro?

Page 6: MÓDULO 2 AULA 1 Projeto e Desenvolvimento de Algoritmos O que são algoritmos? Renato Campioni.

MÓDULO 2MÓDULO 2

AULA 1AULA 1OrigemOrigem

Segundo Donald Knuth, um papa na criação e Segundo Donald Knuth, um papa na criação e estudo de algoritmos, a palavra tem origem no estudo de algoritmos, a palavra tem origem no nome de um matemático persa, que viveu no nome de um matemático persa, que viveu no século IX, cujo nome eraséculo IX, cujo nome era

Abu Ja’far Maomé ibn Mûsâ al-KhowârizmAbu Ja’far Maomé ibn Mûsâ al-Khowârizm

ou ou

Pai de Já’far, Maomé, filho de Moisés da cidade de Pai de Já’far, Maomé, filho de Moisés da cidade de KhowârizmKhowârizm

Page 7: MÓDULO 2 AULA 1 Projeto e Desenvolvimento de Algoritmos O que são algoritmos? Renato Campioni.

MÓDULO 2MÓDULO 2

AULA 1AULA 1CaracterísticasCaracterísticas

Finitude – Finitude – algoritmos devem algoritmos devem terminar após um terminar após um número finito de passos;número finito de passos;

Definição - cada passo deve ser precisamente Definição - cada passo deve ser precisamente definido;definido;

Entradas - deveEntradas - devemm ter zero ou mais entradas; ter zero ou mais entradas;

Saídas - deveSaídas - devemm ter uma ou mais saídas; ter uma ou mais saídas;

Efetividade - todas as operações devem ser Efetividade - todas as operações devem ser simples de modo que possam ser executadas em simples de modo que possam ser executadas em um tempo limitado.um tempo limitado.

Page 8: MÓDULO 2 AULA 1 Projeto e Desenvolvimento de Algoritmos O que são algoritmos? Renato Campioni.

MÓDULO 2MÓDULO 2

AULA 1AULA 1DificuldadesDificuldades

Difícil para iniciantes saber o que o computador Difícil para iniciantes saber o que o computador pode ou não fazerpode ou não fazer

Criação de algoritmos é um processo Criação de algoritmos é um processo nãonão automáticoautomático e tem muito de arte e tem muito de arte..

Pode haver mais de uma solução para um Pode haver mais de uma solução para um problema.problema.

Page 9: MÓDULO 2 AULA 1 Projeto e Desenvolvimento de Algoritmos O que são algoritmos? Renato Campioni.

MÓDULO 2MÓDULO 2

AULA 1AULA 1ExemploExemplo

Dispõe-se de 2 vasilhas com capacidades Dispõe-se de 2 vasilhas com capacidades marcadas de 9 e 4 litros respectivamente. marcadas de 9 e 4 litros respectivamente. Mostre a seqüência de passos necessários para Mostre a seqüência de passos necessários para colocar numa terceira vasilha de medida colocar numa terceira vasilha de medida desconhecida um volume de 6 litros.desconhecida um volume de 6 litros.

Page 10: MÓDULO 2 AULA 1 Projeto e Desenvolvimento de Algoritmos O que são algoritmos? Renato Campioni.

MÓDULO 2MÓDULO 2

AULA 1AULA 1Outro exemploOutro exemplo

Como fazer para que Como fazer para que as as três rãstrês rãs que estão em que estão em quatro casas nas seguintes posiçõesquatro casas nas seguintes posições,,

terminem assimterminem assim??

Rã 1 Rã 2 Rã 3

Rã 3 Rã 2 Rã 1

Page 11: MÓDULO 2 AULA 1 Projeto e Desenvolvimento de Algoritmos O que são algoritmos? Renato Campioni.

MÓDULO 2MÓDULO 2

AULA 1AULA 1Regras para as rãsRegras para as rãs

Somente pular para a casa da frente ou Somente pular para a casa da frente ou de trás se ela estiver vazia.de trás se ela estiver vazia.

Pular a rã vizinha se for parar em uma Pular a rã vizinha se for parar em uma casa vazia.casa vazia.

Este algoritmo serve para ordenar dados, Este algoritmo serve para ordenar dados, e é muito utilizado em computação.e é muito utilizado em computação.

Page 12: MÓDULO 2 AULA 1 Projeto e Desenvolvimento de Algoritmos O que são algoritmos? Renato Campioni.

MÓDULO 2MÓDULO 2

AULA 1AULA 1Rãs se movendo 1Rãs se movendo 1

Rã 1 Rã 2 Rã 3

Page 13: MÓDULO 2 AULA 1 Projeto e Desenvolvimento de Algoritmos O que são algoritmos? Renato Campioni.

MÓDULO 2MÓDULO 2

AULA 1AULA 1Rãs se movendo 2Rãs se movendo 2

Rã 1 Rã 2 Rã 3

Rã 1 Rã 2Rã 3

Page 14: MÓDULO 2 AULA 1 Projeto e Desenvolvimento de Algoritmos O que são algoritmos? Renato Campioni.

MÓDULO 2MÓDULO 2

AULA 1AULA 1Rãs se movendo 3Rãs se movendo 3

Rã 1 Rã 2Rã 3

Rã 1 Rã 2Rã 3

Rã 1 Rã 2Rã 3

Page 15: MÓDULO 2 AULA 1 Projeto e Desenvolvimento de Algoritmos O que são algoritmos? Renato Campioni.

MÓDULO 2MÓDULO 2

AULA 1AULA 1Rãs se movendo 4Rãs se movendo 4

Rã 1Rã 2Rã 3

Page 16: MÓDULO 2 AULA 1 Projeto e Desenvolvimento de Algoritmos O que são algoritmos? Renato Campioni.

MÓDULO 2MÓDULO 2

AULA 1AULA 1Rãs se movendo 5Rãs se movendo 5

Rã 1Rã 2Rã 3

Rã 1Rã 2Rã 3

Rã 1Rã 2Rã 3

Page 17: MÓDULO 2 AULA 1 Projeto e Desenvolvimento de Algoritmos O que são algoritmos? Renato Campioni.

MÓDULO 2MÓDULO 2

AULA 1AULA 1Representação de algoritmosRepresentação de algoritmos

Linguagem natural: algoritmos expressos Linguagem natural: algoritmos expressos diretamente em linguagem natural, como nas diretamente em linguagem natural, como nas receitasreceitas

Fluxogramas: representação gráfica Fluxogramas: representação gráfica

Pseudo-linguagem: emprega linguagem Pseudo-linguagem: emprega linguagem intermediária entre linguagem natural e intermediária entre linguagem natural e linguagem de programaçãolinguagem de programação

Page 18: MÓDULO 2 AULA 1 Projeto e Desenvolvimento de Algoritmos O que são algoritmos? Renato Campioni.

MÓDULO 2MÓDULO 2

AULA 1AULA 1Linguagem NaturalLinguagem Natural

Repetir 10 vezes cada um dos quatro exercícios Repetir 10 vezes cada um dos quatro exercícios abaixo:abaixo: Levantar e abaixar o braço direito;Levantar e abaixar o braço direito;

Levantar e abaixar o braço esquerdo;Levantar e abaixar o braço esquerdo;

Levantar e abaixar a perna direita;Levantar e abaixar a perna direita;

Levantar e abaixar a perna esquerda.Levantar e abaixar a perna esquerda.

Page 19: MÓDULO 2 AULA 1 Projeto e Desenvolvimento de Algoritmos O que são algoritmos? Renato Campioni.

MÓDULO 2MÓDULO 2

AULA 1AULA 1FluxogramasFluxogramas

Representação de algoritmos por meio de Representação de algoritmos por meio de símbolos geométricos.símbolos geométricos.

Cada tipo de operação é representado por um Cada tipo de operação é representado por um símbolo diferente.símbolo diferente.

Tem a vantagem de permitir o Tem a vantagem de permitir o acompanhamento visual do fluxo do algoritmoacompanhamento visual do fluxo do algoritmo

Page 20: MÓDULO 2 AULA 1 Projeto e Desenvolvimento de Algoritmos O que são algoritmos? Renato Campioni.

MÓDULO 2MÓDULO 2

AULA 1AULA 1Fluxogramas – alguns símbolosFluxogramas – alguns símbolos

Início e fim de algoritmoInício e fim de algoritmo

Atribuições e cálculos de Atribuições e cálculos de valoresvalores

DecisõesDecisões

Entrada de dadosEntrada de dados

DiscosDiscos

Page 21: MÓDULO 2 AULA 1 Projeto e Desenvolvimento de Algoritmos O que são algoritmos? Renato Campioni.

MÓDULO 2MÓDULO 2

AULA 1AULA 1Fluxogramas – alguns símbolosFluxogramas – alguns símbolos

Impressão de resultadosImpressão de resultados

Conector na páginaConector na página

Entrada manualEntrada manual

Ligação entre símbolosLigação entre símbolos

Conector fora da páginaConector fora da página

Page 22: MÓDULO 2 AULA 1 Projeto e Desenvolvimento de Algoritmos O que são algoritmos? Renato Campioni.

MÓDULO 2MÓDULO 2

AULA 1AULA 1Um dia de sol!Um dia de sol!

InícioInício

AcordarAcordar

TomarTomarCaféCafé

Sol?Sol?

11

22NãoNão

SimSim

11

Ir à praiaIr à praia

22

Ler jornalLer jornal

Ir ao cinemaIr ao cinema

JantarJantar

FimFim

Page 23: MÓDULO 2 AULA 1 Projeto e Desenvolvimento de Algoritmos O que são algoritmos? Renato Campioni.

MÓDULO 2MÓDULO 2

AULA 1AULA 1Pseudo-linguagemPseudo-linguagem

Este método procura misturar as facilidades da Este método procura misturar as facilidades da linguagem natural com a precisão das linguagens linguagem natural com a precisão das linguagens de programaçãode programação

A representação da solução em pseudo código A representação da solução em pseudo código possibilita ao programador a abstração dos possibilita ao programador a abstração dos detalhes da sintaxe da linguagem escolhida. detalhes da sintaxe da linguagem escolhida.

Page 24: MÓDULO 2 AULA 1 Projeto e Desenvolvimento de Algoritmos O que são algoritmos? Renato Campioni.

MÓDULO 2MÓDULO 2

AULA 1AULA 1Pseudo-linguagemPseudo-linguagem

Este método será o mais empregado ao longo do Este método será o mais empregado ao longo do nosso curso. nosso curso.

Não existe um padrão para esta forma de Não existe um padrão para esta forma de descrição. descrição.

Nossa pseudo-linguagem será definida ao longo Nossa pseudo-linguagem será definida ao longo do curso.do curso.

Page 25: MÓDULO 2 AULA 1 Projeto e Desenvolvimento de Algoritmos O que são algoritmos? Renato Campioni.

MÓDULO 2MÓDULO 2

AULA 1AULA 1Exemplo de pseudo-linguagemExemplo de pseudo-linguagem

Calcular a área de uma mesa retangularCalcular a área de uma mesa retangular

InícioInícioleialeia comprimento comprimentoleialeia largura larguraárea <- comprimento * larguraárea <- comprimento * larguraimprimaimprima 'Área igual a', área 'Área igual a', área

FimFim

Observe as palavras em negrito, são as Observe as palavras em negrito, são as palavras chaves da linguagem.palavras chaves da linguagem.

Page 26: MÓDULO 2 AULA 1 Projeto e Desenvolvimento de Algoritmos O que são algoritmos? Renato Campioni.

MÓDULO 2MÓDULO 2

AULA 1AULA 1Exemplo de pseudo-linguagemExemplo de pseudo-linguagem

Calcular o preço de uma passagem de ônibusCalcular o preço de uma passagem de ônibus

InícioInícioleialeia idade idadeleialeia preço preçosese idade < 65 idade < 65 entãoentão

imprimaimprima 'Preço é ', preço 'Preço é ', preçosenãosenão

imprimaimprima 'Grátis' 'Grátis'fim sefim se

FimFim

Page 27: MÓDULO 2 AULA 1 Projeto e Desenvolvimento de Algoritmos O que são algoritmos? Renato Campioni.

MÓDULO 2MÓDULO 2

AULA 1AULA 1Técnicas de ConstruçãoTécnicas de Construção

Considere a receita a seguir.Considere a receita a seguir. Filé de peixe com molho brancoFilé de peixe com molho branco

{preparo dos peixes}{preparo dos peixes} Lave os filés e tempere com o suco de limões, sal, Lave os filés e tempere com o suco de limões, sal,

……

{preparo do molho branco}{preparo do molho branco} Coloque em uma panela a manteiga, a farinha e o Coloque em uma panela a manteiga, a farinha e o

leite …leite …

{juntando os dois}{juntando os dois} Adicione queijo parmesão ralado e queijo gruyère. Adicione queijo parmesão ralado e queijo gruyère.

Misture e ponha sobre os filés.Misture e ponha sobre os filés.

Fim da receita de filé de peixe com …Fim da receita de filé de peixe com …

Page 28: MÓDULO 2 AULA 1 Projeto e Desenvolvimento de Algoritmos O que são algoritmos? Renato Campioni.

MÓDULO 2MÓDULO 2

AULA 1AULA 1Técnicas de ConstruçãoTécnicas de Construção

Observe na receita anterior a Observe na receita anterior a técnica de técnica de divisão do problema em partes menoresdivisão do problema em partes menores (preparo dos peixes, molho e o final)(preparo dos peixes, molho e o final)

Permite que o prato seja preparado por mais de Permite que o prato seja preparado por mais de uma pessoa e simplifica a execuçãouma pessoa e simplifica a execução

Page 29: MÓDULO 2 AULA 1 Projeto e Desenvolvimento de Algoritmos O que são algoritmos? Renato Campioni.

MÓDULO 2MÓDULO 2

AULA 1AULA 1ReaproveitamentoReaproveitamento

Considere a receita de alface com molho Considere a receita de alface com molho brancobranco

Alface com molho brancoAlface com molho branco {preparo do alface}{preparo do alface}

Derreta a manteiga. Junte alface cortada. …Derreta a manteiga. Junte alface cortada. …

{preparo do molho branco}{preparo do molho branco} Coloque em uma panela a manteiga, a farinha e o Coloque em uma panela a manteiga, a farinha e o

leite …leite …

{juntando os dois}{juntando os dois} Junte suco de limão ao alface e ao molho branco …Junte suco de limão ao alface e ao molho branco …

Fim da receita de alface com …Fim da receita de alface com …

Page 30: MÓDULO 2 AULA 1 Projeto e Desenvolvimento de Algoritmos O que são algoritmos? Renato Campioni.

MÓDULO 2MÓDULO 2

AULA 1AULA 1ReaproveitamentoReaproveitamento

Nesta receita também temos uma parte Nesta receita também temos uma parte descrevendo como preparar o molho branco.descrevendo como preparar o molho branco.

Se o livro de receitas tiver vários pratos com Se o livro de receitas tiver vários pratos com molho branco há desperdício de papel.molho branco há desperdício de papel.

Page 31: MÓDULO 2 AULA 1 Projeto e Desenvolvimento de Algoritmos O que são algoritmos? Renato Campioni.

MÓDULO 2MÓDULO 2

AULA 1AULA 1Reaproveitamento cont.Reaproveitamento cont.

Considere agora que a página 25 do livro Considere agora que a página 25 do livro ensine como preparar o molho branco.ensine como preparar o molho branco.

As duas receitas poderiam indicar que para As duas receitas poderiam indicar que para preparar o molho branco o mestre cuca deve preparar o molho branco o mestre cuca deve ler a página 25.ler a página 25.

O livro fica menor.O livro fica menor.

Se amanhã descobrir que colocar um dente de Se amanhã descobrir que colocar um dente de alho melhora o sabor, somente preciso alterar alho melhora o sabor, somente preciso alterar a página 25 e todas as receitas ficam mais a página 25 e todas as receitas ficam mais saborosas automaticamentesaborosas automaticamente

Page 32: MÓDULO 2 AULA 1 Projeto e Desenvolvimento de Algoritmos O que são algoritmos? Renato Campioni.

MÓDULO 2MÓDULO 2

AULA 1AULA 1Reaproveitamento cont.Reaproveitamento cont.

Uma solução mais radical para reaproveitar Uma solução mais radical para reaproveitar algoritmos é usar o que outros criaram.algoritmos é usar o que outros criaram.

Assuma que você descobriu que no Assuma que você descobriu que no supermercado há um enlatado de molho supermercado há um enlatado de molho branco ótimo, melhor que o seu (heresia, branco ótimo, melhor que o seu (heresia, vale somente como exemplo!).vale somente como exemplo!).

Neste caso a sua receita indicaria apenas: Neste caso a sua receita indicaria apenas: ““Compre molho branco da marca tal no Compre molho branco da marca tal no supermercadosupermercado” (heresia novamente!)” (heresia novamente!)