Algoritmos -
Introdução
Prof. MSc. Tiago Brasileiro Araújo Prof. Katyusco de Farias Santos
Motivos para aprender
algoritmos
Motivo 1: você precisa pagar a
Motivo 2: vou ter reuniões com
Motivo 3: você pode salvar o
Motivo 3: não acredita?
•
Poderia ser bem pior que 7x1.
•
O império nazista podia ser realidade hoje, se Allan Turing
Motivo 4: você poderá
O que é algoritmo?
• “É uma sequência finita e não ambígua de instruções computáveis
para solucionar um problema”.
• “Algoritmo é uma descrição com um número finito de passos, que
indicam precisamente os processos que produzirão um resultado desejado”.
O que é lógica ?
Lógica de programação é a
técnica de encadear pensamentos para atingir
determinado objetivo.
Permite definir uma seqüência
lógica para o desenvolvimento e solução de determinado
O que é lógica ?
Seqüência Lógica são passos executados até atingir um objetivo ou solução de um problema.
Instruções: “um conjunto de regras ou normas definidas para a realização ou emprego de algo”.
Em informática, porém, instrução é a informação que indica a um computador uma ação elementar a executar.
O que é algoritmo?
•
A palavra algoritmo, à primeira vista, parece-nos estranha;
•
Cotidiano:
◦ 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;
◦ A maneira como as contas de água, luz e telefone são calculadas mensalmente;
Mas isso está no nosso dia a
dia ...
•
“É uma sequência finita e não ambígua de instruções
computáveis para solucionar um problema”.
•
Chupar um bombom;
•
Chutar uma bola;
Mas vocês são cientistas ...
Algoritmo Recepcionista de Cinema Inicio 1 – Solicitar ao cliente o bilhete do filme. 2 – Conferir a data e o horário do filme no bilhete. Se data/hora atual > data/hora do filme + 30 minutos Então 3 – Informar ao cliente que o tempo limite para entrada foi excedido. 4 – Não permitir a entrada. Senão Se data/hora atual < data/hora do filme – 30 minutos Então 5 – Informar ao cliente que a sala do filme ainda não foi liberada para entrada. 6 – Não permitir a entrada. Senão 7 – Permitir a entrada. 8 – Indicar ao cliente onde fica a sala do filme. Fim-Se FimTemos o computador para
facilitar a vida
•
Todo algoritmo deve apresentar algumas características
básicas:
◦ ter fim;
◦ não dar margem à dupla interpretação (não ambíguo);
◦ capacidade de receber dado(s) de entrada do mundo exterior; ◦ poder gerar informações de saída para o mundo externo ao do
ambiente do algoritmo;
◦ ser efetivo (todas as etapas especificadas no algoritmo devem ser
Temos o computador para
facilitar a vida
•
Converter comandos (linguagem) humanos em comandos
de máquina.
• Linguagem humana:
• "Se for verdade isso, acontece isto, senão acontece aquilo"
• Linguagem de máquina:
Qual a linguagem?
•
Uma linguagem
de
programação é
um
método
padronizado
para
comunicar instruções para
um computador.
•
Aproxima a linguagem humana da linguagem de máquina!
•
Executa instruções no computador.
Programa
Entrada de dados; Processamento; Estado;
Saída.
Entrada Programa Saída
Quais as características de
um Algoritmo ?
Valores de Entrada
Todo algoritmo deve possuir nenhuma, uma ou mais de uma estrada de dados
Valores de Saída
Todo algoritmo deve possuir uma ou mais de uma saída de dados
Finitude
Todo algoritmo é finito (Possui início, meio e fim)
Correção
Todo algoritmo deve gerar uma saída coerente com a entrada Não dar margem à dupla interpretação (não ambíguo);
Formas de representação de
um Algoritmo
Descrição Narrativa
• São expressos diretamente em linguagem natural.
Fluxograma Convencional
• São expressos em linguagem de representação gráfica (formas geométricas).
Pseudocódigo (Linguagem Algorítmica ou Portugol)
Formas de representação de
um Algoritmo
Descrição Narrativa:
Faz-se uso do português para descrever algoritmos. EXEMPLO: Receita de Bolo
Providencie manteiga, ovos, 2 Kg de massa, 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 Prove
Formas de representação de
um Algoritmo
Descrição Narrativa: VANTAGENS:
•o português é bastante conhecido por nós; DESVANTAGENS:
•imprecisão;
•pouca confiabilidade (a imprecisão acarreta a desconfiança);
•extensão (normalmente, escreve-se muito para dizer pouca coisa).
Formas de representação de
um Algoritmo
Fluxograma convencional:Utilização de símbolos gráficos para representar
algoritmos. É uma representação gráfica de algoritmos onde formas geométricas diferentes implicam ações (instruções, comandos) distintos.
Formas de representação de
um Algoritmo
Formas de representação de
um Algoritmo
Fluxograma convencional: VANTAGENS:
•Uma das ferramentas mais conhecidas; •Figuras dizem muito mais que palavras; •Padrão mundial
DESVANTAGENS:
•Faz com que a solução do problema já esteja amarrada a dispositivos físicos;
•Pouca atenção aos dados, não oferecendo recursos para descrevê-los ou representá-los;
Formas de representação de
um Algoritmo
Pseudocódigo :
Esta forma de representação de algoritmos, é conhecida também como
português estruturado ou portugol.
É bastante rica em detalhes e assemelham-se bastante à forma em que os programas são escritos.
A forma geral de um algoritmo em pseudocódigo:
Algoritmo <nome_do_algoritmo>
[<declaração_de_variáveis>]
Início
<corpo_do_algoritmo>
Formas de representação de
um Algoritmo
Pseudocódigo :
Onde:
Algoritmo
Indica o início da definição do algoritmo.
<nome_do_algoritmo>
Nome dado ao algoritmo para distingui-lo dos demais.
[<declaração_de_variáveis>]
Parte opcional onde são declaradas as variáveis globais usadas no algoritmo principal e, eventualmente, nos subalgoritmos.
Formas de representação de
um Algoritmo
Pseudocódigo :
Onde: Início
Palavra que delimita o início do corpo do algoritmo.
<corpo_do_algoritmo>
Conjunto de instruções do algoritmo.
Fim
Formas de representação de
um Algoritmo
Pseudocódigo : Algoritmo Média Var N1, N2, Média Início Leia N1, N2 Média := (N1+N2)/2 Se Média >= 7 Então Escreva “Aprovado” Senão Escreva “Reprovado”Formas de representação de
um Algoritmo
Pseudocódigo :
VANTAGENS:
•Independência física da solução (solução lógica apenas); •Usa o português como 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.
Formas de representação de
um Algoritmo
Descrição
Narrativa Fluxograma Convencional Pseudocódigo – Obter as notas da primeira e da segunda prova – Calcular a média aritmética entre as duas – Se a média for maior ou igual a 7, o aluno foi aprovado, senão ele foi reprovado.
Algoritmo Média Var N1, N2, Média Início Leia N1, N2 Média := (N1+N2)/2 Se Média >= 7 Então Escreva “Aprovado” Senão Escreva “Reprovado”
Linguagem Algoritma
Exemplo:
• Exige a definição de uma linguagem não real para trabalho;
• Não padronizado. • Padrão universal pré-definido que pode ser
escrito em inglês ou português;
• Pode definir quais e como os dados serão estruturados;
• Passagem quase imediata do algoritmo para uma linguagem de programação qualquer.
// Calcular a idade através das variáveis: ano de nascimento e ano corrente.
algoritmo "idade"
var
ano_nascimento, ano_corrente, idade : inteiro
inicio
escreva ("Entre com o ano de nascimento e o corrente:")
leia (ano_nascimento, ano_corrente)
idade := ano_corrente - ano_nascimento
escreva (“Sua idade atual é: ", idade)
Refinamento
•
Podemos tornar os passos da resolução do problema mais
detalhados (investigação) para torná-los mais claros e
Refinamento
•
Comandos e Estruturas de controles são usados para provê
refinamento.
•
A este desdobramento dar-se o nome de refinamento
sucessivo:
◦ Programadores tendem a escrever primeiro os passos gerais e, só
depois, aplicar um desdobramento dos passos até que se atinja o resultado desejado.
Cuidado!
•
Você deve estar se perguntando: Como saber se o
algoritmo está detalhado o suficiente?
• A resposta é: depende de quem vai executá-lo.
•
Não devemos definir os passos de forma muito genérica
(ou abstrata), nem tampouco detalhar demasiadamente os
passos a ponto de tornar o algoritmo óbvio e grande
demais.
Estruturas de controle(construção)
•
Seqüencial:
• a mais simples estrutura de controle. Os comandos devem ser
executados um após o outro, na mesma ordem em que aparecem escritos;
•
Decisão ou seleção:
• também conhecida por Seleção, pode provocar ou não a realização
Estruturas de controle(construção)
•
Repetição ou iteração:
◦ os comandos e as estruturas de controle abrangidos devem ser
executados repetidamente até que se verifique uma condição para que se interrompa a repetição.