Post on 15-Jan-2016
description
Algoritmos
Professor Renan
Perguntas
• O que é algoritmo?
• Qual sua relação com programação de computadores?
Computador
Finalidade do computador
• Realizar a tarefa de processamento de dados.
• Receber dados por um dispositivo de entrada
• Realizar operações com esses dados
• Gera uma resposta
Processamento dos dados
Computador
SOFTWARE
HARDWARE
COMPUTADOR
Software
• Programa em processamento no computador
• Podem ser do tipo básico, programas que definem o padrão doequipamento e são necessários para o funcionamento do computador.
• Tipos:
• Sistema operacional
• Ambiente operacional
• Linguagens de programação (tradutores)
Sistema operacional
• É um programa ou conjunto de programas cuja função égerenciar os recursos do computador.
• Em geral, são fornecidos pelos fabricantes do equipamento.
• Constituídos por programas escritos em linguagem deprogramação de baixo nível.
Ambiente Operacional
• Interface gráfica entre o usuário e o Sistema Operacional.
Linguagem de programação
• Conjunto de símbolos e regras que especificam um padrão sintático paraestabelecer a comunicação entre usuários e computador.
• Na língua portuguesa,
• Os símbolos são as letras.
• As regras são a gramática da língua portuguesa.
• Padrão sintático é a escrita correta.
Linguagem de programação
• É dividida em linguagem de baixo nível e linguagem de alto nível.
Baixo nível
Alto nível
Linguagem de baixo nível
• Linguagem de Máquina
• Baseada no código binário, em 0s e 1s e interpretada diretamente pelo computador.
• 01000110 01110101 01101110 01100100 01100001 01101101 01100101 0110111001110100 01101111 01110011 00100000 01100100 01100101 00100000 0111000001110010 01101111 01100111 01110010 01100001 01101101 01100001 1110011111100011 01101111
• Fundamentos de Programação
Linguagem de baixo nível
Linguagem de
máquinaSignificado
0010 0001 1110 carrega no registrador 1 o conteúdo da posição de memória 14
0010 0010 1111 carrega no registrador 2 o conteúdo da posição de memória 15
0001 0001 0010soma o conteúdo do registrador 1 com o conteúdo do registrador
2 e coloca no registrador 1
0011 0001 1111 armazena o conteúdo do registrador 1 na posição de memória 15
Linguagem de baixo nível
• Linguagem de baixo nível simbólica:
• Simplificação da linguagem de máquina, faz uso de códigos para expressar as
instruções.
• Exemplo: Assembly
Linguagem de máquina Linguagem simbólica
0010 0001 1110 LOAD R1, val1
0010 0010 1111 LOAD R2, val2
0001 0001 0010 ADD R1, R2
0011 0001 1111 STORE R1, val2
Linguagem de alto nível
• É a combinação de um conjunto de símbolos de acordo com certas regras de
sintaxe para expressar uma sequência de operações de máquina.
• É uma linguagem que não exige conhecimento do código de máquina.
• Exemplos: FORTRAN, ALGOL, COBOL, BASIC, PASCAL, LOGO, C,
JAVA, LISP, PROLOG, Phyton etc.
Compilador
• Um compilador é um programa de sistema que traduz um programa descrito
em uma linguagem de alto nível para um programa equivalente em código de
máquina para um processador.
• Produz um programa em linguagem simbólica (assembly).
• Montadores traduz a linguagem simbólica para a linguagem de máquina.
Linguagem: Máquina x Simbólica x Alto Nível
Linguagem de
máquinaLinguagem simbólica
Linguagem de alto
nível
0010 0001 1110 LOAD R1, val1
val2 = val1 + val2
0010 0010 1111 LOAD R2, val2
0001 0001 0010 ADD R1, R2
0011 0001 1111 STORE R1, val2
Desenvolvendo programas
• Quando queremos escrever um software para realizar um determinado tipo
de processamento de dados, devemos escrever um programa ou vários
programas interligados.
• Para isso utilizamos a linguagem de programação.
O que é o programa
• É a codificação de um algoritmo em uma determinada linguagem de
programação.
Etapas de desenvolvimento de programas
• Análise – nessa etapa estuda-se o enunciado do problema para definir os dados deentrada, o processamento e os dados de saída;
• Algoritmo – ferramentas do tipo descrição narrativa, fluxogramas ou portuguêsestruturado são utilizadas para descrever o problema com suas soluções.
• Codificação – o algoritmo é transformado em código da linguagem de programaçãoescolhida para se trabalhar.
Algoritmo
• Um algoritmo é uma redação que deve descrever, de forma lógica e sem
ambiguidades, os passos (ações) a serem seguidos para se resolver um
problema especifico que tenha um comportamento padrão em sua solução.
História
• Historiadores trazem divergências sobre a origem da palavra algoritmo.
• A mais difundida é de Mohamed ben Musa Al-Khwarizmi.
• Um matemático persa do século IX, cujas obras foram traduzidas no ocidente noséculo XII.
• Uma das obras recebeu o nome Algorithmi de numero indorum (indiano).
• Algoritmos sobre o sistema de numeração decimal.
História
• Algoritmo mais antigo (400 a 300 AC).
• Algoritmo de Euclides, calcula o máximo divisor comum
(MDC) de dois números inteiros positivos.
História
• Para a Ciência da computação, o conceitode algoritmo foi formalizado em 1936 porAlan Turing (Máquina de Turing) eAlonzo Church.
• Um algoritmo é um conjunto nãoambíguo e ordenado de passos executáveisque definem um processo finito.
Algoritmos
• Objetivo de um algoritmo é o de ensinar a resolver problemas.
• Nosso objetivo é o de construir algoritmos.
• Construiremos textos que ensinem a resolver problemas,
• Não preocupamos com o resultado da solução do problema, desde que o algoritmoesteja correto.
Algoritmo
• Exemplos clássicos deste fato são as receitas de bolos.
• Um livro de receitas de bolos
• Descreve os passos a serem seguidos e ingredientes a serem usados
• Resultado final: o bolo.
• Nenhum livro de receitas traz o bolo pronto.
Lógica e comportamento do algoritmo
• Algoritmo se resume na organização sequencial das ações de solução do problemaespecífico.
• Exemplo: só levaremos o bolo ao forno quando a massa do mesmo estiver pronta enão antes.
• Mas a grande exigência da lógica se encontra nas tomadas de decisões e nosprocessos de repetição no algoritmo
Algoritmo
• Como desenvolvemos um algoritmo para fazer um sanduíche?
Algoritmo
• Fazer uma prova?
Exercício
• Desenvolver um algoritmo para trocar uma lâmpada?
• Desenvolver um algoritmo para sacar dinheiro no banco 24 horas?
Variações
• Todas as possíveis execuções do mesmo devem produzir resultados corretos.
• Deve ser um conjunto de passos finitos.
• Detalhamento de um algoritmo é escolhido de acordo com o problema.
Exemplo de detalhamento
• Suponha que seu carro esteja falhando, você o leva no mecânico e simplesmente diz: - "O meu carro estáfalhando, conserte-o!“
• Agora vamos supor que você leve o seu carro para um aprendiz de mecânico, você terá que supervisionar otrabalho, informando-o das ações que ele deverá executar:
• 1. "verificar velas e distribuidor"
• 2. "limpar carburador e giclês"
• 3. "verificar platinado"
• 4. "verificar partes elétricas relacionadas com o motor"
• 5. "verificar se o combustível não foi adulterado“
Métodos para a construção de algoritmos
• Ler atentamente o enunciado, destacando os pontos mais importantes.
• Definir os dados de entrada, ou seja, quais dados serão fornecidos.
• Definir o processamento, ou seja, quais cálculos serão efetuados e quais as
restrições para esses cálculos. O processamento é responsável pela
transformação dos dados de entrada em dados de saída.
Métodos para a construção de algoritmos
• Definir os dados de saída, ou seja, quais dados serão gerados depois do
processamento.
• Construir o algoritmo.
• Testar o algoritmo realizando simulações.
Tipos de algoritmos
• Os tipos mais utilizados de algoritmos são:
• descrição narrativa
• fluxograma
• pseudocódigo.
Descrição narrativa
• Analisar o enunciado do problema e escrever, utilizando umalinguagem natural, os passos a serem seguidos para a resolução doproblema.
• Vantagem: não é necessário aprender nenhum conceito novo.
• Desvantagem: a língua natural abre espaço para váriasinterpretações, o que dificultará a transição desse algoritmo para oprograma.
Problema
• Faça um algoritmo para mostrar o resultado da multiplicação de dois
números.
Solução descrição narrativa
• Passo 1 – Recebe os dois números que são multiplicados
• Passo 2 – multiplica os números
• Passo 3 – mostrar o resultado obtido na multiplicação
Fluxograma
• Consiste em analisar o enunciado do problema e escrever, utilizandosímbolos gráficos predefinidos, os passos a serem seguidos para a resoluçãodo problema.
• Vantagem: entendimento dos elementos gráficos é mais fácil
• Desvantagem: é necessário aprender a simbologia dos fluxogramas, e oalgoritmo não apresenta muitos detalhes, dificultando a transição para umprograma.
Fluxograma
Solução pelo Fluxograma
• Problema da multiplicação entre dois números.
Início
valor1, valor2 Multi = valor1*valor2Multi
Fim
Pseudocódigo
• Consiste em analisar o enunciado do problema e escrever, por meio de regras
predefinidas, os passos a serem seguidos para a resolução do problema.
• Vantagem: passagem do algoritmo para qualquer linguagem de programação
é quase imediata, bastando conhecer as palavras reservadas da linguagem de
programação que será utilizada.
• Desvantagem: é necessário aprender as regras do pseudocódigo.
Solução Pseudocódigo
• ALGORITMO
• DECLARE VALOR1, VALOR2, MULTI NUMÉRICO
• ESCREVA “Digite os dois números”
• LEIA VALOR1, VALOR2
• MULTI <- VALOR1*VALOR2
• ESCREVA “Multiplicação = “, MULTI
• FIM_ALGORITMO.
Exercício:
• Faça um algoritmo para mostrar o resultado da divisão de dois números.
Perguntas
• O que é algoritmo?
• Qual sua relação com programação de computadores?
Para casa
• Para os problemas a seguir, desenvolva o algoritmo na forma narrativa, fluxograma e pseudocódigo.
1. Desenvolver um algoritmo que calcule a média aritmética entre duas notas de um aluno e mostrar se oaluno foi reprovado ou se foi aprovado na disciplina.
2. Desenvolver um algoritmo para calcular o novo salário de um funcionário. Sabe-se que os funcionários quepossuem um salário atual até R$ 500,00 terão aumento de 20%, os demais terão aumento de 10%.
3. Desenvolva um algoritmo que Leia o nome, o sobrenome e concatene o nome e sobrenome. O resultadoserá o nome completo.
4. Faça um algoritmo que calcule a área de um retângulo.
5. Faça um algoritmo que calcule a área de um triângulo.
6. Faça um algoritmo que leia a idade de uma pessoa expressa em anos, meses e dias e mostre-a expressaapenas em dias.
Fim!