INTRODUÇÃO AOS LOGARITMOS DE FAZER

Preview:

DESCRIPTION

A INTRODUÇÃO É MUITO BELA E AMIGA NOSSA AMÉM, VALEU POR TUDO AMIGOS DO PEITO

Citation preview

INTRODUÇÃO À COMPUTAÇÃO M

Introdução aos Algoritmos

M.Sc. Ricardo de Sousa Britto (rbritto@ufpi.edu.br)

1

Conceituação 2

¨  Para estabelecer o conceito de algoritmos, será definido o conceito de ação: ¤ Ação é um acontecimento que, a partir de um estado

inicial, após um período de tempo finito, produz um estado final previsível e bem definido.

¨  Ex: Dado um número L qualquer, escreva os termos da série de fibonacci menores que L.

Conceituação 3

¨  Adotaremos a seguinte definição de algoritmo: ¤ Algoritmo é a descrição de um conjunto de comandos

que, obedecidos, resultam numa sucessão finita de ações.

¨  Geralmente um algoritmo se destina a resolver um problema.

Exemplo 4

¨  Algoritmo para escrever os termos de Fibonacci inferiores a um dado L.

Algoritmo Escreva os termos de Fibonacci inferiores a L Fim algoritmo

Exercícios 5

¨  Um algoritmo pode conter um comando como “Escreva todos os termos da sequência de Fibonacci”?

¨  Escreva um algoritmo que, partindo de diferentes estados iniciais, produza os valores: a)  2 4 6 8 10 12 14 b)  1 3 5 7 9 11 13

Componentes de um Algoritmo 6

¨  Um algoritmo é compostos por: ¤ Comandos – Determinam as ações a serem executadas

pelo seu destinatário. ¤ Estruturas de controles – Determinam a ordem em que

os comandos devem ser executados, se devem ser executados ou não e quando devem ser repetidos.

Refinamentos Sucessivos 7

¨  Na vida cotidiana, os algoritmos são encontrados frequentemente como instruções para se utilizar um aparelho eletrodoméstico ou uma receita de bolo.

¨  Um algoritmo é considerado completo se os seus comandos forem do entendimento do seu destinatário.

Refinamentos Sucessivos 8

¨  Caso um comando não seja entendido pelo destinatário, o mesmo deverá ser desdobrado em outros comandos, técnica chamada de refinamento.

¨  Se um algoritmo é formado não apenas por um comando, mas por vários, em sua execução deverá se considerar os estados intermediários.

Exemplo de Refinamento 1 9

¨  Refinar o algoritmo que escreve os termos de Fibonacci inferiores a L.

Ref. Escreva os termos de Fibonacci inferiores a L Receba o valor L Processe os 2 primeiros termos Processe os termos restantes fim ref.

Estrutura Sequêncial 10

¨  Estrutura utilizada no primeiro refinamento apresentado.

¨  Neste tipo de estrutura os comandos devem ser executados um após o outro, na mesma ordem em que aparecem escritos.

Exemplo de Refinamento 2 11

¨  Podemos gerar refinamentos de refinamentos pra melhorar o entendimento de um comando.

Ref. Processe os 2 primeiros termos Atribua o valor 1 ao primeiro termo se ele for menor que L então escreva-o fim se Atribua o valor 1 ao segundo termo se ele for menor que L então escreva-o fim se fim ref.

Estrutura Condicional 12

¨  Estrutura utilizada no segundo refinamento apresentado.

¨  Os comandos só serão executados se a condição for verdadeira.

se condição então comandos fim se

Exemplo de Refinamento 3 13

Ref. Processe os termos restantes repita ele for menor que L Calcule o novo termo somando os 2 anteriores se o novo termo for maior ou igual a L então interrompa fim se Escreva novo termo fim repita fim ref.

Estrutura de Repetição 14

¨  Estrutura utilizada no terceiro refinamento apresentado.

¨  Os comandos e estruturas de controle abrangidos devem ser executados repetidamente até que se verifique uma condição para que se interrompa a repetição.

repita se condição então interrompa fim se fim repita

Estrutura de Repetição 15

¨  Considerando L = 5 no refinamento 3, a execução do refinamento resultaria em:

Calcula novo termo, como sendo 1+1=2 Como 2 < 5, escreve o valor 2

Calcula novo termo, como sendo 1+2=3 Como 3 < 5, escreve o valor 3

Calcula novo termo, como sendo 2+3=5 Como 5 = 5, interrompe

Fim dos Refinamentos 16

¨  Uma vez que o destinatário consiga entender os comandos utilizados após os refinamentos, o algoritmo pode ser considero completo.

¨  Chegando a este ponto, deve-se substituir no algoritmo os comandos pelos refinamentos dos mesmos.

¨  Os antigos comandos substituídos devem ser utilizados como comentários, para facilitar o entendimento do algoritmo.

Algoritmo Completo 17

Algoritmo {Escrita dos termos de Fibonacci inferiores a L} Receba o valor de L {Processamento dos 2 primeiros termos}

Atribua o valor 1 ao primeiro termo se ele for menor que L

então escreva-o fim se

Atribua o valor 1 ao segundo termo se ele for menor que L

então escreva-o fim se

{Processamento de termos restantes} repita ele for menor que L

Calcule o novo termo somando os 2 anteriores se o novo termo for maior ou igual a L

então interrompa fim se

Escreva novo termo fim repita

fim algoritmo

Exercícios 18

1.  Construa um algoritmo que calcule a área de um triângulo,dados a altura h e a base b.

2.  Execute o algoritmo abaixo: Algoritmo repita Invente um problema Escreva um algoritmo para sua resolução se estiver cansado então interrompa fim se fim repita Mostre os algoritmos feitos aos colegas fim algoritmo

Desenvolvimento Estruturados 19

¨  Com a evolução do hardware, os problemas levados aos computadores são cada vez de maior porte e maior complexidade.

¨  Os algoritmos ainda devem ser desenvolvidos pelo ser humano, mas podem ultrapassar os limites de sua compreensão.

¨  Por surgiram várias técnicas que permitem sistematizar e ajudar o desenvolvimento de algoritmos chamadas de técnicas de desenvolvimento estruturado.

Desenvolvimento Estruturados 20

¨  Os objetivos dessas técnicas são: ¤ Facilitar o desenvolvimento dos algoritmos; ¤ Facilitar o seu entendimento pelo humanos; ¤ Antecipar a comprovação da sua correção; ¤ Facilitar a sua manutenção e a sua modificação; ¤ Permitir que o seu desenvolvimento possa ser

empreendido simultaneamente por uma equipe de pessoas.

Desenvolvimento Estruturados 21

¨  Para se atingir esse objetivos, o desenvolvimento estruturado preconiza que: ¤ Os algoritmos devem ser desenvolvidos por

refinamentos sucessivos, partindo de uma descrição geral e gradativamente se atacando as minúcias do problema(Desenvolvimento top-down);

¤ Os sucessivos refinamentos são módulos, que delimitam poucas funções e são o mais independente possível.

¤ Nos módulos deve ser usado um número limitado de diferentes comandos e de diferentes estruturas de controle.

Desenvolvimento Estruturados 22

¨  Alguns formalismos podem ser utilizados para auxiliar no desenvolvimento estruturado: ¤ Diagrama de Blocos ¤ Diagrama de Chapin

Diagrama de Blocos 23

Diagrama de Chapin 24