PC-I © MAP’2019 Algoritmos e Fluxogramas
Engenharia de resolução de problemas
O processo de resolução de um problema pode ser visto como uma seqüência de passos que devem ser definidos e aprimorados, até que o modelo escolhido para sua representação forneça resultados satisfatórios.
Uma boa modelagem exige alto nível de abstração e conhecimentos
acadêmicos (teoria) e/ou empíricos (prática) sobre o problema em
questão.
25
PROBLEMA análise MODELO síntese SOLUÇÃO
- teoria - dados - condições
- etapas - métodos
Algoritmo (definição for dummies)
“Receita” para resolver um problema.
Como fazer arroz (versão du chef)
1. Lave uma medida de arroz. 2. Ferva duas medidas de água. 3. Adicione óleo na panela. 4. Frite os temperos. 5. Adicione o arroz. 6. Adicione a água. 7. Adicione o sal.
8. Deixe cozinhar até secar.
Como fazer arroz (versão preguiça)
PC-I © MAP’2019 Algoritmos e Fluxogramas
Algoritmo (outro exemplo)
27
Preparação para a balada
1. Escove os dentes.
2. Se for homem, faça a barba. Senão, depile as pernas. 3. Tome banho.
4. Aplique desodorante.
5. Se for mulher, aplique perfume. Senão, aplique colônia.
6. Vista uma roupa adequada.
Escovar os dentes
1. Pegue a escova de dentes. 2. Coloque creme dental na escova. 3. Enxague a boca. 4. Escove os dentes. 5. Escove a língua. 6. Lave a escova. 7. Enxague a boca. 8. Seque o rosto.
Algoritmo (definição formal)
Um algoritmo é uma seqüência finita de instruções, com uma ou mais operações capazes de serem executadas por um computador em
tempo finito, para a realização de uma tarefa específica.
Características de um bom algoritmo: • Finitude
• Exatidão
• Entradas e saídas bem determinadas • Efetividade
PC-I © MAP’2019 Algoritmos e Fluxogramas
Algoritmo: finitude
o Um algoritmo sempre deve terminar após um número finito de passos. o Um algoritmo sempre deve terminar após uma quantidade finita de
tempo.
o Um algoritmo deve ser executado com uma quantidade finita de recursos.
29
Algoritmo: exatidão
o Cada passo de um algoritmo deve ser definido com precisão. o A seqüência dos passos deve ser claramente determinada. o As instruções não podem admitir ambigüidade.
• O homem viu o menino com o telescópio. (quem está com o telescópio?)
• João e Maria moram juntos.
PC-I © MAP’2019 Algoritmos e Fluxogramas
Algoritmo: entradas e saídas
Entradas
o Um algoritmo deve operar sobre um ou mais valores externos.
• Os valores correspondem aos dados necessários para iniciar a execução do algoritmo.
o Em alguns casos, os dados de entrada são parte integrante do algoritmo.
Saídas
o Um algoritmo deve produzir alguma informação.
• Algum resultado deve ser produzido até a execução da última instrução do algoritmo, de acordo com a entrada fornecida.
31
Algoritmo: efetividade
o Um algoritmo deve ser realizável. o Todas as instruções devem ser:
• Tão simples quanto possível.
• Suficientes para resolver o problema. • Executáveis com lápis e papel.
PC-I © MAP’2019 Algoritmos e Fluxogramas
Fluxograma
33 • Representação gráfica,
estruturada e simplificada. • Ilustra o fluxo (seqüência) de
operações.
• Símbolos padronizados. • Sintaxe e semântica bem
definidos.
• Fácil de traduzir para qualquer linguagem de programação.
Fluxograma: semântica e sintaxe
o A semântica de um fluxograma corresponde ao significado dos símbolos utilizados.
• Cada instrução possui um símbolo gráfico específico.
• A instrução deve ser escrita dentro do símbolo de forma clara.
o A sintaxe de um fluxograma corresponde ao emprego correto de seus elementos.
• Cada símbolo admite um conjunto de expressões próprias.
PC-I © MAP’2019 Algoritmos e Fluxogramas
Fluxograma: principais símbolos usados em Computação
35
Símbolo Nome Função
terminador Determina o início ou o fim do processamento.
fluxo Indica o sentido da execução do algoritmo.
conector Indica ligações com outras partes de um fluxograma.
atribuição Armazenamento temporário do resultado de um processamento.
processo Realiza o cálculo de expressões e/ ou a execução de funções.
leitura Entrada manual de dados, em tempo de execução.
exibição Apresentação dos resultados do processamento.
decisão Avaliação de uma expressão relacional ou lógica.
sub-rotina Processamento de funções ou chamada a procedimentos.
Fluxograma: regras
o Um fluxograma deve ser claro, simples e de fácil leitura. Não deve haver ambigüidade na interpretação de um fluxograma.
o A direção de descrição do fluxo de um sistema é de cima para baixo ou da esquerda para a direita.
o Apenas uma linha de fluxo deve partir de ou chegar a um terminador. Início
PC-I © MAP’2019 Algoritmos e Fluxogramas
Fluxograma: regras
o O símbolo de processo admite apenas uma linha de saída de fluxo.
o O símbolo de decisão admite apenas uma linha de entrada de fluxo, mas duas ou três linhas de saída são possíveis:
37
V F <0 >0
=0
Fluxograma: regras
o O texto dentro de cada símbolo deve ser adequado à instrução a ser executada.
o Use conectores para reduzir o número de linhas do fluxograma. o Evite cruzar linhas, para não comprometer o entendimento do
fluxograma.
o A validação de um algoritmo descrito por um fluxograma pode ser feita através da execução de um conjunto de dados de teste.
PC-I © MAP’2019 Algoritmos e Fluxogramas
Operadores
Os seguintes símbolos são utilizados como operadores na linguagem C:
39 Aritméticos Símbolo Operação + adição – subtração * multiplicação / divisão % módulo Relacionais Símbolo Significado < menor que > maior que <= menor ou igual à >= maior ou igual à == igual != diferente Lógicos Símbolo Operação && AND || OR ! NOT
Atribuição
A atribuição é um comando utilizado para armazenamento temporário de valores.
O resultado do processamento descrito no lado direito do símbolo ← será atribuído para a variável discriminada no lado esquerdo.
Atenção
A atribuição é um comando destrutivo, ou seja, o valor anterior será substituído pelo novo valor. A ! 100 A ! 100 B ! 3.14*A A ! 100 B ! 3.14*A A ! sin(B)
PC-I © MAP’2019 Algoritmos e Fluxogramas
Estruturas básicas de programação
No paradigma de programação estruturada, os programas são escritos considerando apenas combinações adequadas de três estruturas básicas: • seqüência
• seleção • repetição.
Cada estrutura tem um único ponto de entrada e um único ponto de saída, representado pelo símbolo conector.
Nessas estruturas, o símbolo de processo (retângulo) pode ser utilizado para representar qualquer ação, incluindo leitura de dados e exibição de resultados.
41
Estruturas básicas de programação: seqüência
Seqüência: o fluxo de execução das instruções ocorre de modo
linear, uma após a outra.
Deve existir apenas um caminho possível no conjunto de instruções de um algoritmo.
PC-I © MAP’2019 Algoritmos e Fluxogramas
Exemplo: seqüência
Ler e exibir dois valores numéricos A e B. Depois, trocar o valores entre si e exibir novamente.
43 Sejam:
A: um valor numérico. B: outro valor numérico.
Devido ao caráter destrutivo do comando de atribuição, é necessário definir uma variável K que desempenha um papel de variável de armazenamento temporário, guardando o valor inicial da variável A, que será atualizada com o valor inicial da variável B. A, B A, B A, B Início K ! A A ! B B ! K Fim início do algoritmo ler os dois valores, que serão atribuídos à A e B exibir os valores originais atribuir o valor de A à variável K (cópia) atribuir valor de B à variável A atribuir o valor de K à variável B
exibir os valores após a troca
fim do algoritmo
Exemplo: seqüência
Determinar o saldo de uma aplicação financeira, com investimento inicial de R$ 100,00 e juros de 1% ao mês, ao final do 3º mês.
Sejam:
I: o valor do investimento inicial. J: a taxa de juros.
P: o saldo ao final do primeiro mês. S: o saldo ao final do segundo mês. T: o saldo ao final do terceiro mês.
Início I ! 100 J ! 0.01 P ! I + J*I S ! P + J*P T ! S + J*S T Fim início do algoritmo o valor 100 é atribuído à variável I o valor 0.01 é atribuído à variável J
cálculo do saldo ao final do primeiro mês (P) cálculo do saldo ao final do segundo mês (S) cálculo do saldo ao final do terceiro mês (T) informa o saldo final T fim do algoritmo
PC-I © MAP’2019 Algoritmos e Fluxogramas
Seleção: execução seletiva de um grupo de instruções baseada em
alguma condição, representada por uma expressão lógica ou relacional.
Criam alternativas no fluxo de execução das instruções do algoritmo. Em tempo de execução, apenas uma das alternativas será escolhida.
Estruturas básicas de programação: seleção
45 Seleção simples F V F V Seleção composta
Exemplo: seleção
Ler dois valores numéricos, compará-los e exibir o maior valor.
Sejam:
A: um valor numérico. B: outro valor numérico.
V F Início Fim A, B A > B B A início do algoritmo ler A e B comparar A e B exibir o maior valor
PC-I © MAP’2019 Algoritmos e Fluxogramas
Estruturas básicas de programação: repetição
Repetição: execução seletiva de um grupo de instruções até que
alguma condição seja satisfeita. O fluxo da execução pode realizar várias repetições de um mesmo conjunto de comandos, antes de prosseguir para a etapa seguinte.
47 Iteração com teste no fim F V F V Iteração com teste no início
Exemplo: iteração
Calcular o resto da divisão inteira entre dois números inteiros positivos. Sejam: A: o valor do dividendo. B: o valor do divisor. Q: o valor do quociente. R: o valor do resto. início do algoritmo ler A e B inicializar o valor do quociente Q exibir o valor do resto R fim do algoritmo V F Início Fim A, B A >= B Q ! 0 A ! A – B Q ! Q + 1 R ! A R atualizar o valor do resto R comparar A e B atualizar o valor do dividendo A atualizar o valor do quociente Q e retornar
PC-I © MAP’2019 Algoritmos e Fluxogramas
Fluxogramas estruturados
As estruturas básicas podem ser combinadas entre si, utilizando apenas duas regras:
• Regra do empilhamento: o ponto de saída de uma estrutura pode ser conectado ao ponto de entrada de outra estrutura.
• Regra do aninhamento: Um retângulo de uma estrutura pode ser substituído por uma outra estrutura qualquer.
Essas regras podem ser aplicadas quantas vezes forem necessárias, e em qualquer ordem.
Os fluxogramas resultantes da aplicação dessas regras constituem o conjunto de todos os fluxogramas estruturados possíveis.
49