Algoritmo

Propaganda
Programação de Computadores
Algoritmos - Parte 2
Prof. Dr. Erivelton Geraldo Nepomuceno
Depto. Engenharia Elétrica
Sala 4.23 EL – Prédio do DEPEL
http://www.ufsj.edu.br/nepomuceno
[email protected]
1/32
Estrutura seqüencial
● Em um algoritmo:
○ Há uma ordem para execução de comandos
○ Do primeiro ao último
○ De cima para baixo
● Paradigma da programação estruturada
● Há outros:
○ Programação orientada a objetos
○ Programação orientada a variáveis
○ Etc.
Algoritmo
d1
d2
d3
.
.
.
dm
c1
c2
c3
.
.
.
cn
fim algoritmo
2/32
Fixando 1
● Crie um algoritmo que leia dois valores
numéricos A e B, calcule (A + B) x B e
escreva o resultado na tela
3/32
Solução 1
Algoritmo
declare A, B, C numérico
leia A, B
C ← (A + B) × B
escreva A, B, C
fim algoritmo
4/32
Fixando 2
● Crie um algoritmo que leia os coeficientes
a, b e c de uma equação de segundo grau
com raízes reais, calcule as raízes e
escreva o resultado na tela
5/32
Solução 2
Algoritmo
declare A, B, C, DELTA, X1, X2 numérico
leia A, B, C
DELTA ← B2 – 4 × A × C
X1 ← (- B + √DELTA) / (2 × A)
X2 ← (- B - √DELTA ) / (2 × A)
escreva X1, X2
fim algoritmo
6/32
Fixando 3
● Crie um algoritmo que leia os coeficientes
a, b e c de uma equação de segundo grau
qualquer, identifique se tem raízes reais e:
○ caso tenha raízes reais, calcule as raízes e
escreva o resultado na tela
○ caso não tenha, avise o usuário
7/32
Solução 3?
Algoritmo
declare A, B, C, DELTA, X1, X2 numérico
leia A, B, C
DELTA ← B2 – 4 × A × C
X1 = (- B + √DELTA) / (2 × A)
X2 = (- B - √DELTA ) / (2 × A)
escreva X1, X2
escreva “Não tem raízes reais”
fim algoritmo
Como resolver essa questão? Como escolher o comando a ser
executado de acordo com o sinal de DELTA?
É possível fazer desvios nesse “percurso”?
É possível controlar o fluxo de execução do algoritmo?
Estruturas de controle de fluxo!
8/32
Estrutura condicional
● Estrutura condicional simples
● Sintaxe PORTUGOL:
se condição
então seqüência de comandos
fim se
● Testa-se uma condição
○ Execução de comandos da estrutura: apenas se a condição for
verdadeira
● Exemplo:
Algoritmo
declare A, B, C numérico
leia A, B, C
se A + B < C
então escreva “MENSAGEM”
fim se
fim algoritmo
9/32
Estrutura condicional
● Estrutura condicional composta
● Sintaxe PORTUGOL:
se condição
então seqüência A de comandos
senão seqüência B de comandos
fim se
● Testa-se uma condição
○ Executa-se seqüência A caso a condição seja verdadeira
○ Executa-se seqüência B caso a condição seja falsa
10/32
Exemplo
Algoritmo
declare A, B, X, Y numérico
leia A, B
se A = B
então X ← 1,5
Y ← 2,5
senão X ← -1,5
Y ← 2,5
fim se
escreva X, Y
fim algoritmo
11/32
Exemplo: cálculo do módulo
Algoritmo
declare X, Y numérico
leia X
se X >= 0
então Y ← X
senão Y ← -X
fim se
escreva Y
fim algoritmo
Algoritmo
declare X numérico
leia X
se X < 0
então X ← -X
fim se
escreva X
fim algoritmo
12/32
Solução 3!
Algoritmo
declare A, B, C, DELTA, X1, X2 numérico
leia A, B, C
DELTA ← B2 – 4 × A × C
se DELTA >= 0
então X1 ← (- B + √DELTA) / (2 × A)
X2 ← (- B - √DELTA ) / (2 × A)
escreva X1, X2
senão escreva “Não existem raízes reais”
fim se
fim algoritmo
13/32
Exercícios
● Leia três valores inteiros, determine e
imprima o menor deles
● Dados três valores, verifique se podem ser
os comprimentos dos lados de um triângulo
e, se forem, determinem e qual é o seu tipo
do triângulo (escaleno, isósceles ou
eqüilátero)
14/32
Estrutura de repetição
● Seqüência de comandos é executada até
que uma condição seja verdadeira
● Condição é uma expressão lógica
● Laço repita / interrompa
○ Interrupção em diversos pontos
15/32
Interrupção no início
SINTAXE PORTUGOL
repita
se condição
então interrompa
fim se
seqüência B de comandos
fim repita
EXERCÍCIO
Reescreva o algoritmo de
maneira que o usuário informe os
valores inicial e final do
somatório. Teste se o valor
inicial informado é de fato par e,
se não for, corrija-o
EXEMPLO
Soma números pares de 100 a 200
Algoritmo
declare PAR, SOMA numérico
SOMA ← 0
PAR ←100
repita
se PAR > 200
então interrompa
fim se
SOMA ← SOMA + PAR
PAR ← PAR + 2
fim repita
escreva SOMA
fim algoritmo
16/32
Exercício
MODIFICAÇÃO
Reescreva o algoritmo de
maneira que o usuário informe os
valores inicial e final do
somatório. Teste se o valor
inicial informado é de fato par.
RESPOSTA
Algoritmo
declare PAR, SOMA, FIM numérico
SOMA ← 0
leia PAR, FIM
se RESTO(PAR,2) ≠ 0
então PAR ← PAR - RESTO(PAR,2)
fim se
repita
se PAR > FIM
então interrompa
fim se
SOMA ← SOMA + PAR
PAR ← PAR + 2
fim repita
escreva SOMA
fim algoritmo
17/32
Interrupção no interior
EXEMPLO
Soma números pares de 100 a 200
SINTAXE PORTUGOL
repita
seqüência A de comandos
se condição
então interrompa
fim se
seqüência B de comandos
fim repita
Algoritmo
declare PAR, SOMA numérico
SOMA ← 0
PAR ←98
repita
PAR ← PAR + 2
se PAR > 200
então interrompa
fim se
SOMA ← SOMA + PAR
fim repita
escreva SOMA
fim algoritmo
18/32
Interrupção no fim
EXEMPLO
Soma números pares de 100 a 200
SINTAXE PORTUGOL
repita
seqüência A de comandos
se condição
então interrompa
fim se
fim repita
Algoritmo
declare PAR, SOMA numérico
SOMA ← 0
PAR ←100
repita
SOMA ← SOMA + PAR
PAR ← PAR + 2
se PAR > 200
então interrompa
fim se
fim repita
escreva SOMA
fim algoritmo
19/32
Laço repita-até
● Seqüência de comandos é executada até
que uma condição seja verdadeira
● Equivalente ao repita com interrupção no
fim
● Estrutura condicional pode ser omitida
20/32
Laço repita-até
EXEMPLO
Soma números pares de 100 a 200
SINTAXE PORTUGOL
repita
seqüência de comandos
até condição
Algoritmo
declare PAR, SOMA numérico
SOMA ← 0
PAR ←100
repita
SOMA ← SOMA + PAR
PAR ← PAR + 2
até PAR > 200
escreva SOMA
fim algoritmo
21/32
Laço enquanto-faça
● Seqüência de comandos é executada
enquanto uma condição é / permanece
verdadeira
● Semelhante ao repita com interrupção no
início
● Estrutura condicional pode ser omitida
22/32
Laço enquanto-faça
EXEMPLO
Soma números pares de 100 a 200
SINTAXE PORTUGOL
enquanto condição faça
seqüência de comandos
fim enquanto
Algoritmo
declare PAR, SOMA numérico
SOMA ← 0
PAR ←100
enquanto PAR <= 200 faça
SOMA ← SOMA + PAR
PAR ← PAR + 2
fim enquanto
escreva SOMA
fim algoritmo
23/32
Variantes laço enquanto-faça
CONTROLADO POR CONTADOR
Quando se sabe o número de vezes
que o laço será repetido
CONTROLADO POR SENTINELA
Informação especial que identifica o
fim do laço
•Declarado e iniciado fora do laço
•Incrementado dentro do laço
•Identificador de fim deve ser
exclusivo
24/32
Laço para-faça
● Laço é executado um número fixo de vezes
● A quantidade é controlada por uma variável
contadora
● Semelhante ao laço enquanto-faça variante
controlado por contador
● Inicialização e incremento do contador são
omitidos
25/32
Laço para-faça
EXEMPLO
Calcula o fatorial de N
SINTAXE PORTUGOL
Algoritmo
declare FATORIAL, N, I numérico
FATORIAL ← 1
leia N
para contador = valor1 até valor2 faça
seqüência de comandos
fim para
para I = 1 até N faça
FATORIAL ← FATORIAL ×
I
fim para
escreva FATORIAL
fim algoritmo
26/32
Exercícios
● Calcule o fatorial de N usando o laço
enquanto-faça
● Num frigorífico existem 90 bois. Cada boi
traz preso em seu pescoço um cartão
contendo seu número de identificação e
seu peso. Faça um algortimo que escreva
o número e o peso do boi mais gordo e do
boi mais magro.
27/32
Resumo PORTUGOL
28/32
29/32
30/32
31/32
32/32
Download