Algoritmos
João Frederico Roldan Viana
Agenda
■Algoritmos
• Definição • Sintaxe de um algoritmo • Propriedades de um algoritmo • Estruturas de Programação Estruturas Seqüenciais Estruturas de Decisão Estruturas de Repetição • Como resolver problemasAlgoritmos
■
Definição
• Um algoritmo representa um conjunto de regras para a solução de um problema. Essa é uma
definição geral, podendo ser aplicada a qualquer circunstância que exija a descrição de uma solução. Exemplo clássico: uma receita de bolo
• O algoritmo especifica com clareza e de forma
correta as instruções que um software deverá conter para que, ao ser executado, forneça resultados
Algoritmos
■
Sintaxe de um algoritmo
• São as regras para escrever o algoritmo corretamente.
• Em programação as regras são os tipos de comandos que podem ser utilizados e como neles escrever
expressões.
• Os tipos de comandos são denominados estruturas de programação, que são dividas em três tipos: seqüenciais, de decisão e de repetição.
Algoritmos
■
Propriedades de um algoritmo
• Valores de entrada: todo algoritmo deve possuir zero, uma ou mais entradas de dados.
• Valores de saída: todo algoritmo possui uma ou mais saídas, que simboliza(m) seu(s) resultado(s).
• Finitude: toda tarefa a ser realizada possui um início, meio e fim, portanto, um algoritmo deve ser finito, isto é, deve possuir um início e um conjunto de
passos que, ao serem executados, levarão sempre ao seu término ou fim, executando a tarefa a que se
Algoritmos
■
Propriedades de um algoritmo
• Passos elementares: um algoritmo computacional deve ser desenvolvido por meio de operações
elementares, sem que possam haver diferenças de interpretação.
• Correção: um algoritmo deve ser correto, isto é, deve permitir que, com sua execução, se chegue à(s) saída(s) com resultados coerentes com a(s)
entrada(s). Para saber se um algoritmo está correto ou não, deve-se realizar testes com diversos valores
Algoritmos
■
Estruturas de Programação
• Podem ser classificadas como:
Instruções seqüenciais: representam ações imperativas, sem nenhum tipo de decisão.
Instruções de decisão: representam um desvio no fluxo normal do algoritmo, conforme resultado de uma expressão lógica.
Instruções de repetição: representam a execução repetitiva de comandos existentes em um desvio
Algoritmos
■
Estruturas Seqüenciais
• Representam os comandos que são executados imperativamente, sem desvio algum de caminho.
• Os cálculos, as atribuições, as execuções de funções e procedimentos são exemplos dessas estruturas.
Algoritmos
■
Estruturas de Decisão
• São estruturas que permitem a tomada de uma decisão sobre qual o caminho a ser escolhido, de acordo com o resultado de uma expressão lógica. O caminho pode ter 1, 2, ou “n” desvios.
• Existem três formas básicas desse tipo de estrutura: SE – ENTÃO
SE – ENTÃO – SENÃO CASO
Algoritmos
■
Estrutura de Decisão: SE – ENTÃO
• Representada por um comando que avalia uma
expressão lógica, resultando um valor que pode ser verdadeiro ou falso.
• Se o resultado for verdadeiro (V), serão executados os comandos encontrados no caminho indicado pelo resultado verdadeiro.
• Se o resultado for falso (F), será efetuado um desvio sem comando algum para o primeiro comando após o desvio.
Algoritmos
Algoritmos
■
Estrutura de Decisão: SE – ENTÃO
• A condição representa alguma expressão lógica. • O bloco é um conjunto de um ou mais comandos
quaisquer, os quais podem ser seqüenciais, de
decisão ou de repetição, que são executados caso a condição avaliada seja verdadeira.
Algoritmos
■
Estrutura de Decisão: SE – ENTÃO – SENÃO
• Representada por um comando que avalia uma
expressão lógica, resultando um valor que pode ser verdadeiro ou falso.
• Se o resultado for verdadeiro, serão executados os comandos encontrados no caminho indicado pelo resultado verdadeiro (V).
• Se o resultado for falso, serão executados os
comandos encontrados no caminho indicado pelo resultado falso (F).
Algoritmos
Algoritmos
■
Estrutura de Decisão: SE – ENTÃO – SENÃO
• A condição representa alguma expressão lógica.
• O bloco 1 é um conjunto de um ou mais comandos quaisquer, os quais podem ser seqüenciais, de
decisão ou de repetição, que são executados caso a condição avaliada seja verdadeira.
• O bloco 2 é um conjunto de um ou mais comandos quaisquer, os quais podem ser seqüenciais, de
ecisão ou de repetição , que são executados caso a condição avaliada seja falsa.
Algoritmos
■
Estrutura de Decisão: CASO
• Possibilita escolher mais de um caminho, de acordo com um resultado gerado a partir de uma expressão inteira.
• No CASO não se avalia uma expressão lógica e sim uma expressão inteira, cujo valor numérico vai
determinar o caminho a ser seguido.
• Se nenhuma das opções for atendida, pode-se definir um caminho padrão, mas isso não é obrigatório.
Algoritmos
Algoritmos
■
Estrutura de Decisão: CASO
• Expressão representa alguma expressão inteira, que se resultar num valor igual ao do rótulo 1, vai
executar o conjunto 1 de um ou mais comandos quaisquer, os quais podem ser seqüenciais, de decisão ou de repetição.
• Se resultar num valor igual ao do rótulo 2, vai executar o conjunto 2 de um ou mais comandos quaisquer. E assim por diante.
Algoritmos
■
Estruturas de Repetição
• São estruturas que permitem a repetição controlada de comandos. Aqui você deve verificar quantas
vezes ou até qual situação um conjunto de comandos deve ser repetido.
• Existem três formas básicas desse tipo de estrutura: ENQUANTO – FAÇA
REPITA – ATÉ
Algoritmos
■
Estrutura de Repetição: ENQUANTO – FAÇA
• Permite a execução repetitiva de um bloco de comandos enquanto a condição de controle de repetição seja verdadeira.
Algoritmos
■
Estrutura de Repetição: ENQUANTO – FAÇA
• A condição representa alguma expressão lógica. • Enquanto a condição resultar em verdadeiro, vai
permitir a execução repetida do bloco que é um conjunto de um ou mais comandos quaisquer, os quais podem ser seqüenciais, de decisão ou de repetição, que são executados caso a condição avaliada seja verdadeira.
• Caso a condição resulte em falso, será efetuado um desvio sem comando algum para o primeiro
Algoritmos
■
Estrutura de Repetição: REPITA – ATÉ
• Permite a execução repetitiva de um bloco de comandos até que a condição de controle de repetição seja verdadeira.
Algoritmos
■
Estrutura de Repetição: REPITA – ATÉ
• A condição representa alguma expressão lógica. • A execução do bloco que é um conjunto de um ou
mais comandos quaisquer, os quais podem ser seqüenciais, de decisão ou de repetição, será repetida até que a condição seja verdadeira.
• Caso a condição seja verdadeira, será efetuado um desvio sem comando algum para o primeiro
Algoritmos
■
Estrutura de Repetição: PARA – ATÉ – FAÇA
• É uma caso particular do ENQUANTO – FAÇA, pois implementa uma estrutura ENQUANTO – FAÇA que vai repetir o bloco de comando, utilizando-se de um contador que possui um certo valor inicial e que, por meio de incrementos unitários e inteiros, vai
alcançar um valor final pré-definido.
• O número de repetições a serem executadas será dado em função dos valores iniciais e finais do contador.
Algoritmos
Algoritmos
■
Estrutura de Repetição: PARA – ATÉ – FAÇA
• i representa uma variável inteira (contador). • Vi representa o valor inicial do contador.
• Vf representa o valor final do contador.
• A condição representa alguma expressão lógica.
• Enquanto o valor do contador i atender a condição, ou seja for menor que o Vf, o bloco que é um
conjunto de um ou mais comandos quaisquer, os quais podem ser seqüenciais, de decisão ou de
Algoritmos
■
Como resolver problemas
• A resolução envolve duas grandes fases:
Análise: fase onde o problema é entendido
Síntese: fase onde o problema é representado por meio de um algoritmo
Algoritmos
■
Análise
• Deve-se descobrir:
O que deve ser solucionado
Quais são os dados necessários
Quais as condições para resolver o problema Se os dados e as condições são necessários,
insuficientes, redundantes ou contraditórios • Após isso, é realizado a modelagem do problema.
Algoritmos
■
Síntese
• Fase em que o algoritmo é construído utilizando apenas as estruturas de programação.
• A solução deve ser verificada e comprovada por meio da execução do algoritmo.
• A execução é feita percorrendo-se o algoritmo do
seu início até o seu final, e verificando, a cada passo, se o resultado esperado foi obtido.
Algoritmos
■
Exemplo
• Resolva o problema: Compraram-se N canetas
iguais, que foram pagas com P reais, obtendo-se T reais como troco. Quanto custou cada caneta?
Algoritmos
■
Exemplo
• Primeiro passo: exemplifique o seu problema • No caso poderíamos pensar no problema como
sendo: Compraram-se 30 canetas iguais, que foram pagas com 100 reais, obtendo-se 55 reais como
troco. Quanto custou cada caneta? • Matematicamente temos:
30x + 55 = 100 30x = 100 – 55
Algoritmos
■
Exemplo
• Agora vamos criar o algoritmo desse problema particular.
início
receber valores 30, 100 e 55 subtrair 55 de 100
dividir o resultado anterior por 30 mostrar o resultado final
Algoritmos
■
Exemplo
• Tendo o algoritmo particular, vamos generalizar o algoritmo.
início
receber quantidade de canetas: N receber o valor pago: P
receber o valor do troco: T subtrair T de P
Algoritmos
■
Exemplo
• Agora devemos validar o nosso algoritmo. • Para isso vamos fazer os seguintes testes:
N = 30, P = 100 e T = 55 N = 10, P = 10 e T = 10 N = -10, P = 100 e T = 50 N = 10, P = -100 e T = 50 N = 10, P = 100 e T = -50
Algoritmos
■