programação aplicada à engenharia - ufersa · • fluxograma com comandos sequenciais – a...
TRANSCRIPT
Programação Aplicada à Engenharia
Universidade Federal Rural do Semi-ÁridoDepartamento de Ciências Ambientais
Silvio Fernandes
2009.1
Aula 03: Algoritmos
1
Algoritmos
• Em uma receita de bolo, descrevem-se quais serão os ingredientes e as suas quantidades. Depois, quais são as regras para o seu preparo, como a sequencia de inclusão dos preparo, como a sequencia de inclusão dos ingredientes
2
Algoritmos
• Ação é um 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
– Ex: Pediu-se a 3 pessoas que escolhessem um valor L e escrevessem os termos da sequencia de Fibonacci inferiores a L
• Pessoa 1: L= 50 {1, 1, 2, 3, 5, 8, 13, 21, 34}
• Pessoa 2: L = 13 {1, 1, 2, 3, 5, 8}
• Pessoa 3: L = 1 {}
3
Algoritmos
• Pode-se reconhecer nas 3 ações distintas um mesmo padrão de comportamento, a subordinação a uma mesma norma de
execuçãoexecução
• Algoritmo: é a descrição de um conjunto de comando que, obedecidos, resultam numa sucessão finita de ações
4
Algoritmos
• Ex: Torres de Hanoi. O objetivo é transferir os 3 anéis da haste A para B, usando C se necessário. As regras são:
– Deve-se mover um único anel por vez– Deve-se mover um único anel por vez
– Um anel de diâmetro maior nunca pode repousar sobre um menor
5
Algoritmos
• Algoritmo para resolver Torres de HanoiInício
1. Mover um anel da haste A para a haste B
2. Mover um anel da haste A para a haste C
3. Mover um anel da haste B para a haste C3. Mover um anel da haste B para a haste C
4. Mover um anel da haste A para a haste B
5. Mover um anel da haste C para a haste A
6. Mover um anel da haste C para a haste B
7. Mover um anel da haste A para a haste B
Fim
6
Algoritmos
• Algoritmo para resolver Torres de Hanoi
7
Propriedades de um Algoritmo
• Valores de entrada– Todo algoritmo deve possuir zero, um ou mais entradas
• Valores de saída– Uma ou mais saídas simbolizam os resultados
• Finitude– Todo algoritmo deve ser finito, assim ele tem um início e um conjunto – Todo algoritmo deve ser finito, assim ele tem um início e um conjunto
de passos que levam ao término
• Passos elementares– Um algoritmo computacional deve ser explicitado por meio de
operações elementares, sem que possam haver diferenças de interpretação
• Correção– Deve permitir que, com sua execução, se chegue às saídas com
resultados coerentes com as entradas
8
Fluxogramas
• Para um algoritmo ser útil, deve ser entendido da mesma forma por todas as pessoas que o utilizarem
• Existem diversas maneiras de formalizar a • Existem diversas maneiras de formalizar a representação de um algoritmo
– Fluxograma: representação gráfica, por símbolos especiais, da definição, análise ou método de solução de um problema
9
Fluxogramas
10
Fluxogramas
• Todo fluxograma deve possuir uma sintaxe e uma semântica bem-definidas– Sintaxe
• Símbolos gráficos específicos
Expressões admissíveis a serem escritas no interior dos • Expressões admissíveis a serem escritas no interior dos símbolos
• Sub-rotinas predefinidas que podem ser utilizadas nas expressões
– Semântica• Regras de como entender e simular a solução que o
fluxograma propõe
11
Fluxogramas
• Fluxograma mínimo
– É aquele que não executa nada, mas tem um início e um fim, representados pelos terminadores com os textos Início e Fim. Os elementos de um os textos Início e Fim. Os elementos de um fluxograma são conectados por setas que indicam o caminho a ser seguido a partir do símbolo
12
Fluxogramas
• Fluxograma com comandos sequenciais
– A partir do símbolo Início permite a execução das instruções dos símbolos subsequentes sem desvio até alcançar o símbolo Fimaté alcançar o símbolo Fim
– Ex: Um algoritmo para calcular a força exercida pela coluna de um líquido (de peso γ) sobre a área da válvula (com diâmetro d) de um reservatório (de altura h). O cálculo da força é dado por:
13
4
******
2hd
hAreaTampanaVolumeColuFγπ
γγ ===
Fluxogramas
• Fluxograma com comandos sequenciais
– As variáveis da fórmula são variáveis do
fluxograma, que na verdade são espaços da memória onde são armazenados os valores que memória onde são armazenados os valores que podem ser lidos ou escritos
14
Fluxogramas
• Fluxograma com comandos sequenciais
15
Fluxogramas
• Fluxograma com comandos de decisão
– Ex: Algoritmo para calcular as raízes de uma equação do segundo grau tipo Ax2 + Bx + C, utilizando a fórmula de Bhaskara utilizando a fórmula de Bhaskara
– É necessário verificar se A ≥ 0
• Se for, exiba a mensagem “Não é equação do 2º grau”
• Senão, continuar em frente com os cálculos
16
A
ACBBx
2
42
−±−=
Fluxogramas
• Fluxograma com comandos de decisão
– A decisão possibilita escolher um de dois caminhos a partir de um teste. O resultado da expressão é um valor lógico, considerando doi expressão é um valor lógico, considerando doi valores: verdadeiro ou falso (true ou false)
17
Fluxogramas
• Fluxograma com comandos de decisão
18
Fluxogramas
• Fluxograma com comandos de repetição
– Ex: Algoritmo de Euclides para o cálculo de máximo divisor comum entre 2 números inteiros
– A expressão y≠ 0 é representado por y<>0– A expressão y≠ 0 é representado por y<>0
– Resto da divisão entre 2 inteiros é representado pela operação mod
19
Fluxogramas
• Fluxograma com comandos de repetição
20
Exercícios
1. Elabore um fluxograma que calcule quantas notas de 50, 10 e 1 são necessárias para se pagar uma conta cujo valor é fornecido
2. Elabore um fluxograma que permita a 2. Elabore um fluxograma que permita a entrada de um número inteiro e diga se ele é par ou ímpar
3. Elabore um fluxograma que permita a entrada de dez valores e calcule o produto de todos eles
21
Exercícios
4. Qual o resultado exibido pelo fluxograma, se o dado de entrada digitado for sua idade?
22
Referências
– Harry Farrer, Christiano Gonçalves Becker, Eduardo Chaves Faria, Helton Fábio de Matos, Marcos Augusto dos Santos e Miriam Lourenço Maia, “Algoritmos Estruturados", , Lourenço Maia, “Algoritmos Estruturados", , editora Guanabara Koogan.
– Marco A. F. Souza et al. “Algoritmos e lógica de programação”. Thompson, 2005.
– Harvey M. Deitel. “Java – Como programar”. Prentice Hall, 2006.
23