O documento discute algoritmos e fornece exemplos. Em três frases:
Discutem-se definições e características de algoritmos, como sequências finitas de passos para resolver problemas. Fornecem-se exemplos de algoritmos, como receitas culinárias e troca de lâmpadas. Abordam-se também representações gráficas como fluxogramas para descrever algoritmos.
3. O que é um algoritmo ?
A solução de muitos
problemas podem ser
alcançadas em uma ou
mais sequências de
passos e dentro de um
tempo finito, ou seja,
por um algoritmo.
4. Um algoritmo não formal pode
ser descrito narrativamente em
linguagem natural.
Exemplos ….
5. Problema 1: Como trocar uma lâmpada?
Passo 1: Pegar um lâmpada nova
Passo 2: Pegar uma escada
Passo 3: Posicionar a escada embaixo da lâmpada
Passo 4: Desligar interruptor
Passo 5: Subir na escada com a lâmpada na mão
Passo 6: Retirar lâmpada queimada
Passo 7: Colocar lâmpada nova
Passo 8: Descer da escada
Passo 9: Testar interruptor
Passo 10: Guardar escada
Passo 11: Jogar fora a lâmpada queimada
6. Problema 2: Como fazer um sanduíche?
Passo 1: Pegar o pão
Passo 2: Cortar o pão ao meio
Passo 3: Pegar maionese
Passo 4: Passar maionese no pão
Passo 5: Pegar e cortar alface e tomate
Passo 6: Colocar alface e tomate no pão
Passo 7: Pegar hambúrguer
Passo 8: Fritar hambúrguer
Passo 9: Colocar hambúrguer no pão
7. Atividade
Considerem o seguinte cenário. João está dentro do shopping
são luis e precisa chegar na sala de multimidia I do BCT, usando
transporte público.
1. Descreva os passos necessários em uma folha de papel.
2. Troque as folhas com seu amigo do lado.
3. Leia os passos descritos pelo seu amigo e verifique se
conseguiria executá-los.
8. Em todos algoritmos existe:
1. Entrada (o que é dado)
2. Processamento (sequencia de passos)
3. Saída (o que é esperado)
9. Exemplo de um problema
Como preparar um bolo de fubá ?
10. Ingredientes (Entrada)
4 ovos
2 xícaras de chá de açúcar
2 xícaras de chá de trigo
1 xícara de chá de fubá
3 colheres de sopa de margarina
1 xícara de chá de leite
4 colheres de chá de fermento
Receita de bolo fubá, um exemplo de
um algoritmo não formal.
11. Processamento
1.Bater as claras em neve, acrescentar o açúcar, continuar
batendo
2.Acrescente aos poucos as gemas, a margarina, o leite, a
farinha de trigo, o fubá e continue batendo
3.Coloque por último o fermento misturando com uma
colher ou espátula
4.Coloque a massa numa forma untada e deixe assar em
forno médio pré aquecido por aproximadamente 30 minutos
Receita de bolo fubá, um exemplo de
um algoritmo não formal.
12. Receita de bolo fubá, um exemplo de
um algoritmo não formal.
Saída esperada
13. A execução do algoritmo da receita de bolo não
requer insight, esperteza, intuição, inteligênca
ou clareza e lucidez ?
Os trapalhões fazendo bolo
Os três patetas
14. Descrição Narrativa
Consiste em utilizar a linguagem natural para descrever os
passos necessários para a resolução do problema
Vantagem: Não é necessário aprender conceitos novos
Desvantagem: A linguagem natural abre espaço para várias
interpretações, o que pode dificultar sua tradução para um
programa. Não é formal.
16. O que é um algoritmo ?
Berlinski D. O advento do algoritmo.
“Nas palavras de um lógico:
Um algoritmo é
um método finito,
escrito em um vocabulário simbólico fixo,
regido por instruções precisas,
que se movem em passos discretos, 1,2,3 ….,
cuja execução não requer insight, esperteza,
intuição, inteligênca ou clareza e lucidez,
e que mais cedo ou mais tarde chega a um fim.”
17. “Ação ou 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. Portanto, um algoritmo é a
descrição de um conjunto de comandos que, obedecidos,
resultam numa sucessão finita de ações.”
(FARRER, 1999)
“Um algoritmo é uma lista de instruções que, quando
executadas, transformam dados de entrada até a saída. As
instruções são um conjunto finito de etapas que podem ser
executadas, numa ordem precisa, por um mecanismo
determinista. Quando estas etapas são efetivamente
executadas , a execução deve terminar após um tempo
finito.”
(HOLLOWAY, 2006)
Outras definições
18. Importância do algoritmo
Todo problema pode ser resolvido computacionalmente desde
que exista um algoritmo para resolvê-lo.
“A noção de algoritmo é básica para toda a programação de
computadores”.
[KNUTH - Professor da Universidade de Stanford, autor da
coleção “The art of computer programming”]
19. Todo algoritmo deve apresentar algumas características básicas:
Não dar margem à dupla interpretação (não ser ambíguo);
Ter capacidade de receber dado(s) de entrada;
Poder gerar informações de saída;
Ser efetivo, ou seja todas as etapas especificadas no
algoritmo devem ser alcançáveis em um tempo finito;
Ter fim.
Principais características dos algoritmos
20. Método para a construção de Algoritmos
Segundo ASCENCIO e CAMPOS (2002), os passos para a
construção de algoritmos são os seguintes:
1. Ler atentamente o enunciado, destacando os pontos mais
importantes;
2. Definir os dados de entrada;
3. Definir o processamento;
4. Definir os dados de saída;
5. Construir o algoritmo.
6. Testar o algoritmo realizando simulações.
21. ● Divida X por Y e obtenha o resto R1. Se R1
for zero, o mdc entre X e Y é Y.
● Se R1 não for zero, divida Y por R1 e
obtenha o resto R2. Se R2 for zero, o mdc
entre X e Y é R1.
● Se R2 não for zero, divida R1 por R2 e
obtenha o resto R3. Se R3 for zero, o mdc
entre X e Y é R2.
● ...
● Se Rn não for zero, divida Rn-1 por Rn e
obtenha o resto Rn+1. Se Rn+1 for zero, o
mdc entre X e Y é Rn
Um dos algoritmos mais antigos, conhecido desde que surgiu nos
Livros VII e X da obra Elementos de Euclides por volta de 300 a.C
Calculando o MDC
22. Fonte: http://www.educ.fc.ul.pt/icm/icm98/icm12/algoritmos.htm#Crivo
Crivo de Erastotenes
Erastotenes (no século III a.C.) teve a brilhante ideia de organizar
estas maravilhosas computações, na forma de um bem conhecido
crivo. Tal crivo, serve para determinar todos os números primos até
um dado número N. Vamos ilustrar para N= 101.
1. Escrevem-se todos os números até 101
2. Cortam-se, com um traço, todos os múltiplos de 2;
3. A cada passo seguinte cortam-se todos os números
múltiplos do seguinte menor número restante de p,
que seja maior do que p.
Então os números primos até 101 são, 2, 3, 5, 7, 11,
13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71,
73, 79, 83, 89, 97, 101.
23. Como obter exatamente 4 litros de água dispondo de dois
recipientes com capacidades de 3 litros e 5 litros?
Indiquemos por (X, n) o fato de o recipiente X conter n litros de
água. Então, no início temos (A, 0) e (B, 0) .
Atividade: Resolva o problema proposto.
Considere o seguinte problema.
24. Algoritmos em alto e baixo nível
Calcular a média das
notas de uma dada
turma.
111 1101101
101 111001
100 111001
110 110101
Alto nível
Baixo nível
As pessoas e os computadores
utilizam diferentes linguagens.
Em computação, dizemos que
uma linguagem é mais de baixo
nível a medida que se aproxima
da linguagem do computador.
Linguagens de
programação
25. inicio: S(x)->Ac+ x
S(x)->Ah- y
Cc->S(x) xmaior
S(x)->Ac+ y
At->S(x) maior
S(x)->Ac+ x
At->S(x) menor
halt
xmaior: S(x)->Ac+ x
At->S(x) maior
S(x)->Ac+ y
At->S(x) menor
menor: .data 0
maior: .data 0
x: .data 50
y: .data 8
maior x y
| x > y = x
| otherwise = y
Assembler (instruções do processador) Haskell (linguagem de programação)
Algoritmos em alto e baixo nível
Ambos algoritmos
identificam qual o menor e
o maior valore, dados
apenas dois valores.
26. Linguagem de Programação
■ É um vocabulário e um conjunto de regras gramaticais usadas
para escrever programas de computador.
■ Os programas instruem o computador a realizar determinadas
tarefas específicas.
■ Cada linguagem possui um conjunto único de palavras-chave
(palavras que ela reconhece) e uma sintaxe (regras) específica
para organizar as instruções dos programas.
27. Português Estruturado ou Portugol
Uma linguagem de programação utilizada para ensino de
programação em paises de lingua portuguesa.
Vantagem
A transformação do algoritmo para uma linguagem de
programação é simples
Desvantagem
É necessário aprender as regras de especificação da
linguagem.
28. Crie um algoritmo para mostrar o resultado da
multiplicação de dois números
ALGORITMO Multiplicação
DECLARE N1, N2, M Numérico
ESCREVA “Digite dois números”
LEIA N1, N2
M ← N1 * N2
ESCREVA “Multiplicação = “, M
FIM_ALGORITMO
Exemplo 1
29. Interpretador vs Compilador
Compilador
Compila o código fonte em um código-
objeto (tradução de um código fonte para
um código executável – binário – código de
máquina).
Dependente de Arquitetura
Exemplo
Gcc
Linguagem de Programação
Interpretador
Interpreta (executa) sequencialmente os
comandos contidos no código fonte.
Exemplo
● Browser interpreta Java Script
● Python
31. Código-Fonte
Texto (human readable) que contém o código do programa.
Código-objeto
Código de máquina (executável - binário).
Linkeditor
Programa que combina as funções de bibliotecas incluídas
com o programa (código-fonte) que o programador escreveu.
Linguagem de Programação
Terminologias
32. Biblioteca/API
Arquivo que contém as funções/primitivas/rotinas que seu
programa pode utilizar.
Tempo de Compilação
Eventos que podem ocorrer enquanto o seu código-fonte
está sendo compilado.
Tempo de Execução
Eventos que podem ocorrer enquanto o seu código-objeto
está sendo executado.
Linguagem de Programação
Terminologias
33. Sintáticos: o programa não é compilado
Execução: dá uma mensagem de erro durante a
execução
Semântico: o programa não faz o que eu quero!
Linguagem de Programação
Tipos de erros
35. Fluxograma
Início/Fim
Direção do fluxo
Indica Cálculos e
Atribuições
Indica Entrada de
Dados
Indica Tomada
de decisão
Saída de
Dados
O fluxograma consiste em analisar o problema e escrever o
algoritmo de sua solução utilizando símbolos gráficos
36. Exemplo 1
Crie um algoritmo para mostrar o resultado da multiplicação
de dois números
Descrição Narrativa
Passo1: Receber os dois números que serão multiplicados
Passo2: Multiplicar os números
Passo3: Mostrar o resultado obtido na multiplicação
38. Faça um algoritmo para mostrar a divisão de dois números
Passo 1: receber os dois números
Passo 2: Se o numerador (segundo número) for igual a zero
a divisão não poderá ser feita; caso contrário dividir os dois
números e mostrar o resultado
Exemplo 2
40. Fluxograma
Vantagem:
o entendimento de elementos gráficos é mais simples, facilitando a comunicação
útil como linguagem de alto nível, entender como um dado processo funciona.
Desvantagens
É necessário aprender uma nova simbologia
O algoritmo resultante pode não apresentar muitos detalhes, dificultando sua
tradução para uma linguagem de programação
Um algoritmo detalhado pode ser complexo de entender