O documento apresenta exemplos de algoritmos para diferentes situações como pegar o ônibus, paquerar alguém em uma balada e resolver o problema da Torre de Hanói. Também discute conceitos importantes sobre algoritmos como complexidade, legibilidade, portabilidade e como decompor um problema em etapas menores.
2. 2
25/04/2015
“Seqüência de instruções ordenadas de forma
lógica para a resolução de uma determinada
tarefa ou problema.”
Algoritmo “Pegar ônibus”
1.Caminhar até o ponto de ônibus
2.Parar no ponto de ônibus
3.Identificar o ônibus com a linha desejada
4.Fazer sinal para o ônibus parar
5.Aguardar a abertura da porta.
6.Entrar no ônibus
Sequencial
Algoritmo
3. 3
25/04/2015
Algoritmo “balada”
1. Identificar pessoa de interesse
2. Se posicionar na linha de visão
da pessoa de interesse
3. Ficar encarando a pessoa de interesse
4. Olhar correspondido com um sorriso?
4.1 Sim
4.1.1 Iniciar procedimento de aproximação
4.1.2 Executar procedimentos complementares
4.1.3 “Azaração” finalizada com sucesso
4.2. Não
4.2.1 Hora de ir embora?
4.2.1.1 Não
4.2.1.1.1 Voltar ao item 1
4.2.1.2 Sim
4.3.1.2.1 “Azaração” finalizada sem sucesso
Desvio
Desvio
Repetição
Algoritmo “Pegar ônibus”
1.Caminhar até o ponto de ônibus
2.Parar no ponto de ônibus
3.Identificar o ônibus com a linha desejada
4.Fazer sinal para o ônibus parar
5.Aguardar a abertura da porta.
6.Entrar no ônibus
Sequencial
Algoritmo
4. 4
25/04/2015
“Algoritmos escrito em linguagem
computacional.”
Exemplos de Linguagens de
Programação
Pascal
COBOL
Visual Basic
C
Assembler
Delphi
Fortran
C# (C“sharp”)
algoritmo OlaMundo
inicio
escreva("Olá,
Mundo!")
fim
programa Teste;
inicio
variavel num1, do tipo inteiro;
variavel num2, do tipo inteiro;
variavel res, do tipo inteiro;
meio
recebe número digitado pelo usuário;
guarda número digitado pelo usuário na variável
num1;
recebe número digitado pelo usuário;
guarda número digitado pelo usuário na variável
num2;
variavel res recebe a soma de num1 + num2;
mostra res na tela
fim
Programa
5. 5
25/04/2015
#include <stdio.h>
#include <stdlib.h>
main()
{
char sexo;
system ("cls");
printf ("n* * * I F S P * * *n");
sexo = ' ';
printf ("nDigite o sexo (F ou M): ");
scanf("%C", &sexo);
if (sexo != 'F' && sexo != 'M')
{
printf (“Dado inválido.");
}
printf ("nn");
system("pause");
return (0);
}
#include <stdio.h>
main()
{
printf("IFSP");
}
Exemplo de Programas em C
6. Fluxograma – Principais Símbolos
6
Atribuição de
valores
Operação Aritmética ou
cálculo de uma fórmula
Indicador de início ou
fim do algoritmo
Entrada de Dados
Desvio
lógico
(?)
Sim Não
Saída de Dados
conector
Exibição de Dados
7. 25/04/2015
Considerações sobre algoritmos
Complexidade
Mais variáveis, mais complexidade
Legilibilidade
Clareza para quem “vem de fora”
Portabilidade
Sem relação com tecnologia ou linguagem
Método Cartesiano
“Dividir para conquistar”
Planejamento Reverso
A partir do resultado “montar” o processamento e
a entrada.
Para desenvolver um algoritmo é necessário entender bem
o problema. Identificar os dados de entrada, os dados de
saída e os eventos que fizeram com os dados de entrada se
transformassem nos dados de saída ou naquele resultado.
Lógica x Algoritmos
Início
Atribui
valores
Efetua
cálculos
Desvio
Desvio
Soma
valores
Fim
Exibe
resultado
8. 8
25/04/2015
Restrições nos orientam a utilizar os desvios.
Instruções similares, com comportamentos parecidos podem indicar o uso de
repetição (loop) e até a elaboração de um algoritmo genérico para uso por
diversos outros algoritmos.
Lógica x Algoritmos
10. 10
25/04/2015
Mover disco 1 para haste B
Mover disco 2 para haste C
Mover disco 1 para haste C
Mover disco 3 para haste B
Mover disco 1 para haste A
Mover disco 2 para haste B
Mover disco 1 para haste B
Torre de Hanói - Algoritmo
1
1 2
2
Quando se conhece a solução,
podemos automatizá-la (como
neste caso).
Se deixar por conta do algoritmo
encontrar a solução a complexi-
dade será bem maior.
11. 11
25/04/2015
1) A partir de dois números inteiros digitados, mostrar qual o maior deles.
Comparação entre 2 números
Início
Primeiro
Número é
Maior que o
Segundo?
Fim
Armazenar
Informar um
número inteiro Sim
1
Informar outro
número inteiro
Armazenar
Não
1
O primeiro
número é
maior que o
segundo.
O segundo
número é
maior que o
primeiro.