SlideShare uma empresa Scribd logo
1 de 41
Baixar para ler offline
Algoritmos
Prof. Sérgio Souza Costa
O que é um algoritmo ?
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.
Um algoritmo não formal pode
ser descrito narrativamente em
linguagem natural.
Exemplos ….
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
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
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.
Em todos algoritmos existe:
1. Entrada (o que é dado)
2. Processamento (sequencia de passos)
3. Saída (o que é esperado)
Exemplo de um problema
Como preparar um bolo de fubá ?
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.
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.
Receita de bolo fubá, um exemplo de
um algoritmo não formal.
Saída esperada
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
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.
Algoritmos expressos
formalmente, garante que
dado uma entrada e um
conjunto de instruções,
chegue sempre ao mesmo
resultado (determinísticos).
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.”
“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
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”]
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
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.
● 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
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.
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.
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
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.
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.
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.
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
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
Código Fonte
Linguagem de
Máquina
(Assembly)
Processador
Memória
(Principal)
Compilação
ExecuçãoPrograma
executável
linkedição
Linguagem de Programação
Compilação
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
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
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
Representações
gráficas
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
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
inicio
N1, N2
M = N1 * N2
Imprime M Fim
Exemplo 1
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
inicio
N1, N2 N2=0
Impossível
dividir
D = N1/N2
Imprime D fim
Sim
Não
Exemplo 2
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
Diagrama de Chapin
Scratch
Outras representações gráficas

Mais conteúdo relacionado

Mais procurados

Algoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigoAlgoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigoMauro Pereira
 
Aula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e ProgramaçãoAula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e ProgramaçãoAislan Rafael
 
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)Pseudocódigo - Estrutura de Repetição (Lógica de Programação)
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)Gercélia Ramos
 
Lógica de Programação e Algoritmos
Lógica de Programação e AlgoritmosLógica de Programação e Algoritmos
Lógica de Programação e AlgoritmosMario Jorge Pereira
 
Algoritmos - Formas de Representação de Algoritmos
Algoritmos - Formas de Representação de AlgoritmosAlgoritmos - Formas de Representação de Algoritmos
Algoritmos - Formas de Representação de AlgoritmosElaine Cecília Gatto
 
Algoritmos - Lógica de Programação
Algoritmos - Lógica de ProgramaçãoAlgoritmos - Lógica de Programação
Algoritmos - Lógica de ProgramaçãoElaine Cecília Gatto
 
Exercicios resolvidos visuAlg
Exercicios resolvidos visuAlgExercicios resolvidos visuAlg
Exercicios resolvidos visuAlgWillians Miyabara
 
Introdução a Algoritmos: Conceitos Básicos
Introdução a Algoritmos: Conceitos BásicosIntrodução a Algoritmos: Conceitos Básicos
Introdução a Algoritmos: Conceitos BásicosElaine Cecília Gatto
 
Aula Lógica de Programação - cap1
Aula Lógica de Programação - cap1 Aula Lógica de Programação - cap1
Aula Lógica de Programação - cap1 Cloves da Rocha
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmosjormad
 
Lista de exercicios algoritmos com pseudocodigo
Lista de exercicios   algoritmos com pseudocodigoLista de exercicios   algoritmos com pseudocodigo
Lista de exercicios algoritmos com pseudocodigoMauro Pereira
 
Introdução à programação
Introdução à programação Introdução à programação
Introdução à programação João Piedade
 
Logica Algoritmo 02 Algoritmo
Logica Algoritmo 02 AlgoritmoLogica Algoritmo 02 Algoritmo
Logica Algoritmo 02 AlgoritmoRegis Magalhães
 

Mais procurados (20)

Algoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigoAlgoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigo
 
Algoritmo aula 01-f
Algoritmo   aula 01-fAlgoritmo   aula 01-f
Algoritmo aula 01-f
 
Aula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e ProgramaçãoAula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e Programação
 
Algoritmos em portugol
Algoritmos em portugolAlgoritmos em portugol
Algoritmos em portugol
 
Python - Introdução
Python - IntroduçãoPython - Introdução
Python - Introdução
 
Manual de portugol
Manual de portugolManual de portugol
Manual de portugol
 
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)Pseudocódigo - Estrutura de Repetição (Lógica de Programação)
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)
 
Visualg
VisualgVisualg
Visualg
 
Lógica de Programação e Algoritmos
Lógica de Programação e AlgoritmosLógica de Programação e Algoritmos
Lógica de Programação e Algoritmos
 
Algoritmos - Formas de Representação de Algoritmos
Algoritmos - Formas de Representação de AlgoritmosAlgoritmos - Formas de Representação de Algoritmos
Algoritmos - Formas de Representação de Algoritmos
 
Aula01 - Logica de Programação
Aula01 - Logica de ProgramaçãoAula01 - Logica de Programação
Aula01 - Logica de Programação
 
Algoritmos - Lógica de Programação
Algoritmos - Lógica de ProgramaçãoAlgoritmos - Lógica de Programação
Algoritmos - Lógica de Programação
 
Exercicios resolvidos visuAlg
Exercicios resolvidos visuAlgExercicios resolvidos visuAlg
Exercicios resolvidos visuAlg
 
Introdução a Algoritmos: Conceitos Básicos
Introdução a Algoritmos: Conceitos BásicosIntrodução a Algoritmos: Conceitos Básicos
Introdução a Algoritmos: Conceitos Básicos
 
Aula Lógica de Programação - cap1
Aula Lógica de Programação - cap1 Aula Lógica de Programação - cap1
Aula Lógica de Programação - cap1
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Lista de exercicios algoritmos com pseudocodigo
Lista de exercicios   algoritmos com pseudocodigoLista de exercicios   algoritmos com pseudocodigo
Lista de exercicios algoritmos com pseudocodigo
 
Algoritmos: Variáveis e Constantes
Algoritmos: Variáveis e ConstantesAlgoritmos: Variáveis e Constantes
Algoritmos: Variáveis e Constantes
 
Introdução à programação
Introdução à programação Introdução à programação
Introdução à programação
 
Logica Algoritmo 02 Algoritmo
Logica Algoritmo 02 AlgoritmoLogica Algoritmo 02 Algoritmo
Logica Algoritmo 02 Algoritmo
 

Destaque

Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...Alex Camargo
 
Algoritmo apresentação
Algoritmo   apresentaçãoAlgoritmo   apresentação
Algoritmo apresentaçãopronatecvja
 
7ºano mat referencial-cartesiano
7ºano mat  referencial-cartesiano7ºano mat  referencial-cartesiano
7ºano mat referencial-cartesianosilvia_lfr
 
Aula 3 - Algoritmos computacionais - parte 2
Aula 3 - Algoritmos computacionais - parte 2Aula 3 - Algoritmos computacionais - parte 2
Aula 3 - Algoritmos computacionais - parte 2Pacc UAB
 
Guia prático para criar algoritmos
Guia prático para criar algoritmosGuia prático para criar algoritmos
Guia prático para criar algoritmosMauro Pereira
 
Ubuntu Touch - O Linux de bolso.
Ubuntu Touch - O Linux de bolso.Ubuntu Touch - O Linux de bolso.
Ubuntu Touch - O Linux de bolso.Alessandro Faria
 
Lógica de Programção - Módulo 1 - algoritmos-introdução
Lógica de Programção - Módulo 1 - algoritmos-introduçãoLógica de Programção - Módulo 1 - algoritmos-introdução
Lógica de Programção - Módulo 1 - algoritmos-introduçãoProfessor-David Remigio
 
O fim dos SIGs: Como isso ira lhe_afetar ?
O fim dos SIGs: Como isso ira lhe_afetar ?O fim dos SIGs: Como isso ira lhe_afetar ?
O fim dos SIGs: Como isso ira lhe_afetar ?Sérgio Souza Costa
 
Linguagens de Programação
Linguagens de ProgramaçãoLinguagens de Programação
Linguagens de Programação12anogolega
 
Aula 2 - Lógica de Programação
Aula 2 - Lógica de ProgramaçãoAula 2 - Lógica de Programação
Aula 2 - Lógica de ProgramaçãoInstituto CENTEC
 
Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++Sérgio Souza Costa
 
Campus Party Recife - Sua primeira e próximas aplicações Android: como fazer ...
Campus Party Recife - Sua primeira e próximas aplicações Android: como fazer ...Campus Party Recife - Sua primeira e próximas aplicações Android: como fazer ...
Campus Party Recife - Sua primeira e próximas aplicações Android: como fazer ...Nelson Glauber Leal
 
Aula 3 - Algoritmos computacionais - parte 1
Aula 3 - Algoritmos computacionais - parte 1Aula 3 - Algoritmos computacionais - parte 1
Aula 3 - Algoritmos computacionais - parte 1Pacc UAB
 
Interfaces Inteligentes para Android
Interfaces Inteligentes para AndroidInterfaces Inteligentes para Android
Interfaces Inteligentes para AndroidNelson Glauber Leal
 

Destaque (20)

Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...
 
Algoritmia Tutorial
Algoritmia TutorialAlgoritmia Tutorial
Algoritmia Tutorial
 
Algoritmo apresentação
Algoritmo   apresentaçãoAlgoritmo   apresentação
Algoritmo apresentação
 
7ºano mat referencial-cartesiano
7ºano mat  referencial-cartesiano7ºano mat  referencial-cartesiano
7ºano mat referencial-cartesiano
 
Aula 3 - Algoritmos computacionais - parte 2
Aula 3 - Algoritmos computacionais - parte 2Aula 3 - Algoritmos computacionais - parte 2
Aula 3 - Algoritmos computacionais - parte 2
 
Guia prático para criar algoritmos
Guia prático para criar algoritmosGuia prático para criar algoritmos
Guia prático para criar algoritmos
 
Plano Cartesiano
Plano CartesianoPlano Cartesiano
Plano Cartesiano
 
Manual básico de conversão de pseudocódigo para C#
Manual básico de conversão de pseudocódigo para C#Manual básico de conversão de pseudocódigo para C#
Manual básico de conversão de pseudocódigo para C#
 
Ubuntu Touch - O Linux de bolso.
Ubuntu Touch - O Linux de bolso.Ubuntu Touch - O Linux de bolso.
Ubuntu Touch - O Linux de bolso.
 
Módulo 1 de PSI
Módulo 1 de PSIMódulo 1 de PSI
Módulo 1 de PSI
 
Lógica de Programção - Módulo 1 - algoritmos-introdução
Lógica de Programção - Módulo 1 - algoritmos-introduçãoLógica de Programção - Módulo 1 - algoritmos-introdução
Lógica de Programção - Módulo 1 - algoritmos-introdução
 
O fim dos SIGs: Como isso ira lhe_afetar ?
O fim dos SIGs: Como isso ira lhe_afetar ?O fim dos SIGs: Como isso ira lhe_afetar ?
O fim dos SIGs: Como isso ira lhe_afetar ?
 
Linguagens de Programação
Linguagens de ProgramaçãoLinguagens de Programação
Linguagens de Programação
 
Etapas da programação
Etapas da programaçãoEtapas da programação
Etapas da programação
 
Aula 2 - Lógica de Programação
Aula 2 - Lógica de ProgramaçãoAula 2 - Lógica de Programação
Aula 2 - Lógica de Programação
 
Palestra android
Palestra androidPalestra android
Palestra android
 
Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++
 
Campus Party Recife - Sua primeira e próximas aplicações Android: como fazer ...
Campus Party Recife - Sua primeira e próximas aplicações Android: como fazer ...Campus Party Recife - Sua primeira e próximas aplicações Android: como fazer ...
Campus Party Recife - Sua primeira e próximas aplicações Android: como fazer ...
 
Aula 3 - Algoritmos computacionais - parte 1
Aula 3 - Algoritmos computacionais - parte 1Aula 3 - Algoritmos computacionais - parte 1
Aula 3 - Algoritmos computacionais - parte 1
 
Interfaces Inteligentes para Android
Interfaces Inteligentes para AndroidInterfaces Inteligentes para Android
Interfaces Inteligentes para Android
 

Semelhante a Algoritmos passo-a-passo

Semelhante a Algoritmos passo-a-passo (20)

Algoritmos - Pascal
Algoritmos - PascalAlgoritmos - Pascal
Algoritmos - Pascal
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Algoritmos e Programação
Algoritmos e ProgramaçãoAlgoritmos e Programação
Algoritmos e Programação
 
Forb.cap1
Forb.cap1Forb.cap1
Forb.cap1
 
Algoritmos e linguagem pascal
Algoritmos e linguagem pascalAlgoritmos e linguagem pascal
Algoritmos e linguagem pascal
 
Algoritmos e linguagem pascal
Algoritmos e linguagem pascalAlgoritmos e linguagem pascal
Algoritmos e linguagem pascal
 
122172 1445
122172 1445122172 1445
122172 1445
 
Algoritmos e Programação_01
Algoritmos e Programação_01Algoritmos e Programação_01
Algoritmos e Programação_01
 
01 fundamentos de programação
01   fundamentos de programação01   fundamentos de programação
01 fundamentos de programação
 
Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2
 
Aula 1 lpa
Aula 1   lpaAula 1   lpa
Aula 1 lpa
 
01 conceitos
01 conceitos01 conceitos
01 conceitos
 
Aula 3-lógica.pptx
Aula 3-lógica.pptxAula 3-lógica.pptx
Aula 3-lógica.pptx
 
Aula2
Aula2Aula2
Aula2
 
Introdução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptxIntrodução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptx
 
Aula 2 - Introducao a Algoritmo.pptx
Aula 2 - Introducao a Algoritmo.pptxAula 2 - Introducao a Algoritmo.pptx
Aula 2 - Introducao a Algoritmo.pptx
 
Pensamento Computacional.................................
Pensamento Computacional.................................Pensamento Computacional.................................
Pensamento Computacional.................................
 
ApostilaAlgoritmo
ApostilaAlgoritmoApostilaAlgoritmo
ApostilaAlgoritmo
 
Conceito de algoritmo
Conceito de algoritmoConceito de algoritmo
Conceito de algoritmo
 
Algoritmia (Conceitos)
Algoritmia (Conceitos)Algoritmia (Conceitos)
Algoritmia (Conceitos)
 

Mais de Sérgio Souza Costa

Expressões aritméticas, relacionais e lógicas
Expressões aritméticas, relacionais e lógicasExpressões aritméticas, relacionais e lógicas
Expressões aritméticas, relacionais e lógicasSérgio Souza Costa
 
De algoritmos à programas de computador
De algoritmos à programas de computadorDe algoritmos à programas de computador
De algoritmos à programas de computadorSérgio Souza Costa
 
Introdução ao pensamento computacional e aos algoritmos
Introdução ao pensamento computacional e aos algoritmosIntrodução ao pensamento computacional e aos algoritmos
Introdução ao pensamento computacional e aos algoritmosSérgio Souza Costa
 
Minicurso de introdução a banco de dados geográficos
Minicurso de introdução a banco de dados geográficosMinicurso de introdução a banco de dados geográficos
Minicurso de introdução a banco de dados geográficosSérgio Souza Costa
 
Banco de dados geográfico - Aula de Encerramento
Banco de dados geográfico - Aula de EncerramentoBanco de dados geográfico - Aula de Encerramento
Banco de dados geográfico - Aula de EncerramentoSérgio Souza Costa
 
Banco de dados geográficos – Arquiteturas, banco de dados e modelagem
Banco de dados geográficos – Arquiteturas, banco de dados e modelagemBanco de dados geográficos – Arquiteturas, banco de dados e modelagem
Banco de dados geográficos – Arquiteturas, banco de dados e modelagemSérgio Souza Costa
 
Banco de dados geográficos - Aula de abertura
Banco de dados geográficos - Aula de aberturaBanco de dados geográficos - Aula de abertura
Banco de dados geográficos - Aula de aberturaSérgio Souza Costa
 
Linguagem SQL e Extensões Espacias - Introdução
Linguagem SQL e Extensões Espacias - IntroduçãoLinguagem SQL e Extensões Espacias - Introdução
Linguagem SQL e Extensões Espacias - IntroduçãoSérgio Souza Costa
 
Gödel’s incompleteness theorems
Gödel’s incompleteness theoremsGödel’s incompleteness theorems
Gödel’s incompleteness theoremsSérgio Souza Costa
 
DBCells - an open and global multi-scale linked cells
DBCells - an open and global multi-scale linked cellsDBCells - an open and global multi-scale linked cells
DBCells - an open and global multi-scale linked cellsSérgio Souza Costa
 
Conceitos básicos de orientação a objetos
Conceitos básicos de orientação a objetosConceitos básicos de orientação a objetos
Conceitos básicos de orientação a objetosSérgio Souza Costa
 
Polymorphism (Ad-hoc and Universal)
Polymorphism (Ad-hoc and Universal)Polymorphism (Ad-hoc and Universal)
Polymorphism (Ad-hoc and Universal)Sérgio Souza Costa
 
Relações (composição e agregação)
Relações (composição e agregação)Relações (composição e agregação)
Relações (composição e agregação)Sérgio Souza Costa
 

Mais de Sérgio Souza Costa (20)

Expressões aritméticas, relacionais e lógicas
Expressões aritméticas, relacionais e lógicasExpressões aritméticas, relacionais e lógicas
Expressões aritméticas, relacionais e lógicas
 
De algoritmos à programas de computador
De algoritmos à programas de computadorDe algoritmos à programas de computador
De algoritmos à programas de computador
 
Introdução ao pensamento computacional e aos algoritmos
Introdução ao pensamento computacional e aos algoritmosIntrodução ao pensamento computacional e aos algoritmos
Introdução ao pensamento computacional e aos algoritmos
 
Minicurso de introdução a banco de dados geográficos
Minicurso de introdução a banco de dados geográficosMinicurso de introdução a banco de dados geográficos
Minicurso de introdução a banco de dados geográficos
 
Modelagem de dados geográficos
Modelagem de dados geográficosModelagem de dados geográficos
Modelagem de dados geográficos
 
Banco de dados geográfico - Aula de Encerramento
Banco de dados geográfico - Aula de EncerramentoBanco de dados geográfico - Aula de Encerramento
Banco de dados geográfico - Aula de Encerramento
 
Banco de dados geográficos – Arquiteturas, banco de dados e modelagem
Banco de dados geográficos – Arquiteturas, banco de dados e modelagemBanco de dados geográficos – Arquiteturas, banco de dados e modelagem
Banco de dados geográficos – Arquiteturas, banco de dados e modelagem
 
Banco de dados geográficos - Aula de abertura
Banco de dados geográficos - Aula de aberturaBanco de dados geográficos - Aula de abertura
Banco de dados geográficos - Aula de abertura
 
Linguagem SQL e Extensões Espacias - Introdução
Linguagem SQL e Extensões Espacias - IntroduçãoLinguagem SQL e Extensões Espacias - Introdução
Linguagem SQL e Extensões Espacias - Introdução
 
Gödel’s incompleteness theorems
Gödel’s incompleteness theoremsGödel’s incompleteness theorems
Gödel’s incompleteness theorems
 
Turing e o problema da decisão
Turing e o problema da decisãoTuring e o problema da decisão
Turing e o problema da decisão
 
DBCells - an open and global multi-scale linked cells
DBCells - an open and global multi-scale linked cellsDBCells - an open and global multi-scale linked cells
DBCells - an open and global multi-scale linked cells
 
Conceitos básicos de orientação a objetos
Conceitos básicos de orientação a objetosConceitos básicos de orientação a objetos
Conceitos básicos de orientação a objetos
 
Polymorphism (Ad-hoc and Universal)
Polymorphism (Ad-hoc and Universal)Polymorphism (Ad-hoc and Universal)
Polymorphism (Ad-hoc and Universal)
 
Herança e Encapsulamento
Herança e EncapsulamentoHerança e Encapsulamento
Herança e Encapsulamento
 
Relações (composição e agregação)
Relações (composição e agregação)Relações (composição e agregação)
Relações (composição e agregação)
 
Abstract classes and interfaces
Abstract classes and interfacesAbstract classes and interfaces
Abstract classes and interfaces
 
Introdução ao Prolog
Introdução ao PrologIntrodução ao Prolog
Introdução ao Prolog
 
Heap - Python
Heap - PythonHeap - Python
Heap - Python
 
Paradigma lógico
Paradigma lógicoParadigma lógico
Paradigma lógico
 

Algoritmos passo-a-passo

  • 2. O que é um algoritmo ?
  • 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.
  • 15. Algoritmos expressos formalmente, garante que dado uma entrada e um conjunto de instruções, chegue sempre ao mesmo resultado (determinísticos).
  • 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
  • 37. inicio N1, N2 M = N1 * N2 Imprime M Fim Exemplo 1
  • 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
  • 39. inicio N1, N2 N2=0 Impossível dividir D = N1/N2 Imprime D fim Sim Não 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
  • 41. Diagrama de Chapin Scratch Outras representações gráficas