• Nenhum resultado encontrado

ALGORITMOS. Introdução (1) Adriano Mauro Cansian André Proto UNESP - São José do Rio Preto. ! Para desenvolver um software:

N/A
N/A
Protected

Academic year: 2021

Share "ALGORITMOS. Introdução (1) Adriano Mauro Cansian André Proto UNESP - São José do Rio Preto. ! Para desenvolver um software:"

Copied!
31
0
0

Texto

(1)

ALGORITMOS

Adriano Mauro Cansian

André Proto

UNESP - São José do Rio Preto

______________________________

Introdução (1)

•! Para desenvolver um software:

–!representar uma abstração da realidade.

•! Abstração por quê ?

–! Porque um software não é algo palpável, “real”.

–! Ele simula uma realidade.

(2)

© Adriano Mauro Cansian! 3

Introdução (2)

•! Então, tecnicamente, para fazer um software

temos que:

–!Representar uma realidade.

–!Selecionar de dados que estejam relacionados

com o problema a ser resolvido

–!Processar os dados.

–!Obter os dos resultados esperados.

(Lembrar da figura do microondas)

O Que são “dados” afinal?

•! Tudo que o software vai processar e

devolver.

–!Exemplo: quando anexo uma foto a um Email,

o programa tem que saber como representar

aqueles

dados da foto

dentro da mensagem de

Email.

(3)

© Adriano Mauro Cansian! 5

Dados & Operações

•! Para resolução de um problema:

–!escolher uma abstração da realidade.

•! Decidir 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 ligadas

Como representar dados

•! Como representar dados?

–!depende do que se vai fazer.

•! 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.

(4)

© Adriano Mauro Cansian! 7

Como fazer as operações?

•! A decisão é influenciada pelo problema.

•! Muitas questões dependentes da tecnologia que

vai usar.

–! Por exemplo: Windows no PC ou Celular Iphone ?.

•! Programador !

focaliza o problema

–!Decisões de nível mais baixo: deixadas para os

projetistas do equipamento computacional.

–!Programador usa linguagens que se concentrar

nas características do problema: alto nível.

Algoritmo (1)

•! É 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: verificar a eficiência do algoritmo

(5)

© Adriano Mauro Cansian! 9

Algoritmo (2)

•! O algoritmo tem que fornecer uma “saída” a

partir de uma “entrada”.

–! Ou seja, obter o resultado do problema.

–!Durante o processo, manipula dados gerados

a partir de sua entrada.

Lembrar que não se deve pensar apenas em dados de entrada e saída matemáticos. Um movimento de mouse é um dado de entrada.

Algoritmo (3)

•! Um algoritmo é projetado em termos de “Tipos de Dados”.

•! O que é um “tipo de dados” ?

•! É tudo que o computador vai “ler”, “escrever” e

processar.

–! Pode ser um número digital no teclado, ou pode ser um sensor de infravermelho de um robô para detectar um obstáculo.

(6)

Algoritmo (4)

•! Para implementar um algoritmo em uma

Linguagem de programação?

•! Temos que saber:

–!Como representá-lo nesta linguagem.

•! Quais são as regras e comandos.

•! Quais Tipos e Operações suportadas pelo computador.

–!Como representar os dados.

•! Usando-se “Estruturas de Dados”.

© Adriano Mauro Cansian! 11

Algoritmos & Estruturas de Dados

•! Resolução de um Problema

–!Algoritmo

•! Representação dos passos para resolver um problema.

–!Estrutura de Dados

(7)

Algoritmos

Algoritmos - conceitos (1)

•! A palavra algoritmo, à primeira vista, parece-nos estranha. •! Embora possua designação desconhecida, fazemos uso

constantemente de algoritmos em nosso cotidiano •! Algoritmos freqüentemente encontrados:

–! instruções para se utilizar um aparelho eletrodoméstico; –! uma receita para preparo de algum prato;

–! guia de preenchimento para declaração do imposto de renda; –! a regra para determinação de máximos e mínimos de funções por

derivadas sucessivas;

(8)

© Adriano Mauro Cansian! 15

Algoritmos - conceitos (2)

–! “Um conjunto finito de regras que provê uma seqüência de operações para resolver um tipo de problema

específico.” [KNUTH]

–! “Seqüência ordenada, e não ambígua, de passos que levam à solução de um dado problema.” [TREMBLAY] –! “Processo de cálculo, ou de resolução de um grupo de

problemas semelhantes, em que se estipulam, com generalidade e sem restrições, as regras formais para a obtenção do resultado ou da solução do

problema.” [AURÉLIO]

Por que precisamos de algoritmos? (1)

–!“A noção de algoritmo é básica para toda a

programação de computadores”.

(9)

© Adriano Mauro Cansian! 17

Por que precisamos de algoritmos? (2)

•! A importância do algoritmo está no fato de

termos que

especificar uma seqüência de

passos lógicos,

para que o computador

possa executar uma tarefa qualquer.

•! O computador não tem vontade própria.

•! Faz apenas o que mandamos.

–!Com um algoritmo, podemos conceber uma solução para um dado problema, independente de uma linguagem computacional específica.

Algoritmo (1)

•! Um texto contendo comandos (instruções)

–!Devem ser executados na

ordem especificada.

–!Corresponde a

representação concreta.

–!Execução

: o algoritmo é um evento dinâmico

! ele

evolui no tempo.

(10)

© Adriano Mauro Cansian! 19

Algoritmo (2)

•! 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. –! É o que veremos mais adiante como “rastreio”.

Algoritmo (3)

•! Deve utilizar Estruturas Básicas de controle

–!Formas naturais de pensar, e adequadas à

construção de algoritmos inteligíveis.

–!Sempre em “alto nível”.

–!Por exemplo:

(11)

© Adriano Mauro Cansian! 21

Algoritmo (5)

•! Em todo evento deve haver um

comportamento, com

estados iniciais e

efeitos resultantes

.

–!Cada vez que acontecer um padrão de

comportamento, o evento ocorre.

–!Exemplo: se digitar “1” então ligar o alarme.

Algoritmo (6)

•! .Possui um

caráter imperativo.

•! Deve-se dar “ordens” no algoritmo:

–! Uma ação no algoritmo: um comando, ou ordem (“faça” / “execute” / “some” / “imprima”).

(12)

Características dos algoritmos

Características e formas de

representação

Características dos algoritmos

•! Todo algoritmo deve apresentar algumas

características básicas:

1.! Não dar margem à dupla interpretação (não ser ambíguo);

2.! Ter capacidade de receber dado(s) de entrada; 3.! Poder gerar informações de saída;

4.! Ser efetivo, ou seja todas as etapas especificadas no algoritmo devem ser

(13)

© Adriano Mauro Cansian! 25

Formas de apresentação

•! Algoritmos podem ser representados,

dentre outras maneiras, por:

–!DESCRIÇÃO NARRATIVA

–!FLUXOGRAMA

–!LINGUAGEM ALGORÍTMICA

(Pseudo-linguagem, parecida com a

linguagem de programação que iremos usar)

Descrição narrativa (1)

•! Faz-se uso da língua nativa para descrever

algoritmos.

•! Exemplo: Receita de Bolo

•! Providencie manteiga, ovos, 2 Kg de farinha, leite, etc. •! Misture os ingredientes;

•! Despeje a mistura na fôrma de bolo; •! Leve a fôrma ao forno;

•! Espere 20 minutos; •! Retire a fôrma do forno; •! Deixe esfriar;

(14)

© Adriano Mauro Cansian! 27

Descrição narrativa (2)

•! Vantagens:

•! A língua nativa é bastante conhecida por nós;

•! Desvantagens:

–!Imprecisão;

–!Pouca confiabilidade

•! Por causa da imprecisão;

–!Extenso

•! Normalmente, escreve-se muito, para dizer pouca coisa.

Fluxograma (1)

•! Utilização de

símbolos gráficos

para

representar algoritmos.

•! No fluxograma existem

símbolos

padronizados

para início, entrada de

(15)

© Adriano Mauro Cansian! 29

Fluxograma (2)

Início Leia NUM DOBRO ! NUM*2 Escreva DOBRO Fim Início do algoritmo Entrada do número Cálculo do dobro do número Apresentação do resultado Fim do algoritmo

Fluxograma (3)

•! Vantagens:

–!Uma das ferramentas mais conhecidas; –!Figuras dizem muito mais que palavras; –!Padrão mundial (não depende da língua).

•! Desvantagens:

(16)

Linguagem algorítmica

Linguagem Algorítmica (1)

•! Consiste na definição de uma pseudo-linguagem

de programação para representar algoritmos;

(17)

© Adriano Mauro Cansian! 33

Linguagem Algorítmica (2)

•! Vantagens:

–! Independência da solução.

•! Trata-se de solução lógica apenas. •! Não interessa quem vai executar.

–! Usa o português como linguagem de base; –! Pode-se definir quais e como os dados vão estar

estruturados;

–! Passagem quase imediata do algoritmo para uma linguagem de programação qualquer.

•! Desvantagens:

–! Exige a definição de uma linguagem não real para trabalho; –! Não padronizado.

Um ambiente para escrever algoritmos

(18)

© Adriano Mauro Cansian! 35

Um ambiente para escrever algoritmos

Unidade Central de Processamento (2)

Unidade Lógica e Aritmética

(3) Unidade de Controle (1) Dispositivo de entrada (5) Dispositivo de saída (4) Memória Principal Trajeto de dados

Trajeto de sinais de controle

Componentes (1)

•! (1) Dispositivo de entrada

–! Na maioria das vezes o teclado, mas pode ser um mouse, disco, scanner, leitor de código de barras, dentre outros:

–! É o meio pelo qual os dados serão introduzidos em nosso computador;

•! (2) Unidade Lógica e Aritmética (ULA):

–! Parte responsável pelas operações matemáticas e avaliações lógicas;

•! (3) Unidade de Controle (UC):

(19)

© Adriano Mauro Cansian! 37

Componentes (2)

•! (4) Memória:

–!Guarda o algoritmo a ser executado e os dados a serem utilizados.

–!Todo dado fornecido ao computador, bem como o resultado de suas operações, ficam

(temporariamente) guardados na memória;

•! (5) Dispositivo de Saída

–!Vídeo, impressora, discos, CD, e outros:

–!É o meio que se dispõe para apresentação dos resultados obtidos.

Funcionamento (1)

•! Todos os computadores, independentemente dos seus tamanhos, são conceitualmente semelhantes ao esquema da figura anterior

–! Há algumas diferenças, mas não trataremos aqui.

•! Resumidamente, podemos afirmar que existem 4 (quatro) operações básicas que qualquer

computador deve executar:

–! operações de entrada e saída –! operações aritméticas

–! operações lógicas e relacionais

(20)

© Adriano Mauro Cansian! 39

Funcionamento (2)

•! Operações de entrada e saída:

–!Ler dados do teclado e escrever dados na tela são exemplos destas operações.

–!Elas servem para introduzir dados na memória do nosso computador, e exibir dados que já estejam lá armazenados;

•! Operações aritméticas:

–!São utilizadas na realização de operações matemáticas, tais como adição, subtração, multiplicação e divisão.

Funcionamento (3)

•! Operações lógicas e relacionais:

–! Têm aplicabilidade em comparações, testes de condições lógicas

–! Por exemplo: 2 > 6 ? X > Y ?

•! Movimentação de dados entre os vários componentes:

(21)

© Adriano Mauro Cansian! 41

Resolvendo um problema manualmente

•! Suponha que desejamos resolver o seguinte

problema:

–! A partir de dois números, que serão informados, calcular a adição dos mesmos.

•! Seria bem provável que fosse utilizados os

passos a seguir:

a.! saber quais são os números; b.! calcular a soma dos números;

c.! responder à questão com o valor do resultado.

Resolvendo o problema em nosso

computador

•! Vejamos como seria resolvido esse mesmo

problema em termos das operações básicas

citadas anteriormente:

–! a) operação de entrada de dados dos números ;

–! b1) movimento do valor dos números entre a memória e a ULA;

–! b2) operação aritmética de somar os 2 números;

–! b3) movimentação do resultado da ULA para guardar na

memória;

(22)

Escrita de algoritmos

Escrita de algoritmos

•! Resumidamente, pode-se dizer que

escrever algoritmos

ou, em última

análise,

programar

, consiste em:

–! “Dividir qualquer problema em muitos

pequenos passos, usando uma ou mais

(23)

© Adriano Mauro Cansian! 45

Passos, comandos e linguagem (1)

•! Passos que compõem o algoritmo são

denominados de

comandos

.

•! Lembrando: Os

comandos de uma linguagem

de programação

podem ser:

–!De “Linguagens de baixo nível”. –!De “Linguagens de alto nível”.

Passos, comandos e linguagem (2)

•! A seqüência de operações básicas anteriores, para resolver o problema de adicionar dois números, está em uma linguagem de baixo nível para o nosso computador “hipotético”.

•! Em uma

linguagem de alto nível

teríamos

uma seqüência de comandos assim:

(24)

Estruturas Básicas

da Construção de Algoritmos

Estruturas básicas

•! Existem 3 estruturas básicas de

controle, nas quais se baseiam os

algoritmos:

–!Sequenciação, decisão e repetição.

•! Detalharemos cada uma delas, a

(25)

© Adriano Mauro Cansian! 49

Seqüenciação (1)

•! Os comandos do algoritmo fazem parte de uma seqüência, onde é importante a ordem na qual se encontram, pois serão

executados um de cada vez, estritamente, de acordo com essa ordem.

•! De uma forma genérica, poderíamos expressar uma seqüência da seguinte maneira: Comando-1 Comando-2 Comando-3 : Comando-n

Seqüenciação (2)

•! Tem-se uma sequencia de comandos na qual os comandos serão executados na ordem em que aparecem.

•! O comando na posição (x) só será executado após a execução do de ordem (x-1), ou seja, o anterior. •! Assim: o 3o só será executado após o 2o, e assim por

diante.

•! Todo algoritmo é uma seqüência.

(26)

© Adriano Mauro Cansian! 51

Decisão ou seleção (1)

•! Essa estrutura também é conhecida por estrutura condicional. •! A execução de um ou mais comandos depende da veracidade de uma

condição ser verificada. •! Vejamos o funcionamento:

Se <condição> Então

<comando-1>

Senão

<comando-2>

•! Ou seja, SE a <condição> for verdadeira (então) será executado o <comando-1> e, em caso contrário (senão), teremos a execução de <comando-2>.

Decisão ou seleção (2)

•! A decisão deve ser sempre usada quando há a necessidade de testar alguma condição e, em função desta condição, tomar uma atitude (realizar uma ação).

•! Em nosso dia-a-dia, estamos sempre tomando decisões, vejamos um exemplo:

•!

(27)

© Adriano Mauro Cansian! 53

Repetição ou iteração (1)

•! Estrutura também é conhecida por “looping”

ou

laço

.

•! A repetição permite que tarefas individuais

sejam repetidas um número determinado

de vezes, ou

tantas vezes quanto uma

condição lógica seja satisfeita

.

•! Vejamos alguns exemplos:

a)! Vou atirar pedras na vidraça até quebrá-la; b)! Baterei cinco pênaltis;

c)! Enquanto tiver saúde e dinheiro, vou viajar de carro.

Repetição ou iteração (2)

•! No exemplo (a), vai-se repetir a ação de

atirar pedras na janela

até que

seja satisfeita

a

condição de quebrar a janela

.

•! No exemplo (b), haverá a repetição da atitude

de bater um pênalti um número determinado

de vezes (

condição = cinco

).

•! No exemplo (c), a

condição

que me permitirá

(28)

© Adriano Mauro Cansian! 55

Conclusão das estruturas básicas

•! A utilização combinada dessas 3

estruturas descritas vai permitir expressar,

usando qualquer que seja a linguagem

(ferramenta), a solução para uma gama muito

grande de problemas.

•! Todas as linguagens de programação

oferecem representantes dessas

estruturas.

Refinamentos sucessivos (1)

•! Um algoritmo é considerado completo se

todos os seus comandos forem do

entendimento do seu executor.

•! Um comando que não for do entendimento

do executor terá que ser desdobrado em

novos comandos, que constituirão um

refinamento do comando inicial.

(29)

© Adriano Mauro Cansian! 57

Refinamentos sucessivos (2)

•! Por exemplo, o algoritmo para

calcular a

média aritmética de dois números,

pode ser

escrito da seguinte forma:

Algoritmo CALCULA_MÉDIA Início

Receba os dois números

Calcule a média dos dois números Exiba o resultado

Fim

Refinamentos sucessivos (3)

•! Podemos desdobrar o comando “Calcule a média dos dois números” em:

Soma os dois números Divida o resultado por 2

•! Após esse refinamento, o algoritmo pode ser considerado completo, a menos que o destinatário não saiba fazer as operações de adição e divisão, ou

(30)

© Adriano Mauro Cansian! 59

Refinamentos sucessivos (4)

•! O algoritmo estando completo, podemos

reescrevê-lo, inserindo o refinamento na

posição do comando que foi refinado.

Algoritmo CALCULA_MÉDIA Início

Avise o que o programa faz. Solicite os números ao usuário.

Receba (leia) os dois números. Some os dois números. Divida o resultado por 2. Exiba o resultado.

Fim

Conclusão sobre refinamentos sucessivos

•! Reescrever um algoritmo completo, com os

refinamentos sucessivos inseridos nos seus devidos lugares, permite ter uma visão global de como o algoritmo deve ser executado.

(31)

© Adriano Mauro Cansian! 61

Resumo

•! Até aqui vimos:

–! Definições de algoritmos.

–! Características e modelos descritivos dos algoritmos. –! Linguagem algorítmica.

–! Ambiente, funcionamento e escrita dos algoritmos. –! Estruturas básicas: seqüenciação, decisão, seleção e

repetição

Referências

Documentos relacionados

Os resultados deste estudo mostram que entre os grupos pesquisados de diferentes faixas etárias não há diferenças nos envoltórios lineares normalizados das três porções do

Apresenta-se neste trabalho uma sinopse das espécies de Bromeliaceae da região do curso médio do rio Toropi (Rio Grande do Sul, Brasil), sendo também fornecida uma chave

esta espécie foi encontrada em borda de mata ciliar, savana graminosa, savana parque e área de transição mata ciliar e savana.. Observações: Esta espécie ocorre

O valor da reputação dos pseudônimos é igual a 0,8 devido aos fal- sos positivos do mecanismo auxiliar, que acabam por fazer com que a reputação mesmo dos usuários que enviam

Analysis of relief and toponymy of the landscape based on the interpretation of the military topographic survey: Altimetry, Hypsometry, Hydrography, Slopes, Solar orientation,

A assistência da equipe de enfermagem para a pessoa portadora de Diabetes Mellitus deve ser desenvolvida para um processo de educação em saúde que contribua para que a

servidores, software, equipamento de rede, etc, clientes da IaaS essencialmente alugam estes recursos como um serviço terceirizado completo...

Sendo a família a principal responsável pelo cuidado prestado aos adolescentes em sofrimento psíquico é necessário saber como a mesma entende a violência, pois