1.3 Instruç˜oes de Decis˜ao - Dei-Isep

Propaganda
1. Algoritmia
1.3
Instruções de Decisão
1.3.1
Sintaxe
1. Decisão binária
A decisão binária permite bifurcar a execução de um algoritmo em dois fluxos
distintos, para tal é utilizada instrução if que tem duas formas de ser utilizada.
No primeiro caso, se a condição for verdadeira é executado o bloco-instruções1
senão nada acontece:
if <condiç~
ao>
then <bloco-instruç~
oes1> end-if
Exemplo:
1
2
3
i f n>max
then max ← n ;
end−i f
Note-se que um bloco de instruções é delimitado pelas instruções begin e end.
No segundo caso, se a condição for verdadeira é executado o bloco-instruções1
senão é executado o bloco-instruções2:
if <condiç~
ao>
then <bloco-instruç~
oes1>
else <bloco-instruç~
oes2>
end-if
Exemplo:
1
2
3
4
i f n1>n1
then e s c r e v e r n1 ;
e l s e e s c r e v e r n2 ;
end−i f
2. Decisão múltipla
A instrução de de decisão múltipla é um caso particular de instruções if then
else imbricadas. Normalmente é utilizado no teste de múltiplos valores para
uma variável. A sintaxe é a seguinte: switch <variavel>
case <valor1>: <bloco-instruç~
oes1>
case <valor2>: <bloco-instruç~
oes2>
...
end-switch
Conforme o exemplo seguinte:
5
Manual de Algoritmia e Programação
1
2
3
4
(∗ e s c r e v e r o e x t e n s o de um a l g a r i s m o ∗)
s w i t c h numero :
case 1 :
e s c r e v e r ”um” ;
5
6
7
case 2 :
escrever ” dois ”;
8
9
10
case 3 :
e s c r e v e r ” t r ê s ” ;
11
12
13
case 4 :
e s c r e v e r ” quatro ” ;
14
15
1.3.2
end−s w i t c h
Exercı́cios Propostos
1. Distância entre dois pontos
Calcular a distância em dois pontos, sendo que cada ponto é definido pelas
coordenadas (x,y). Caso sejam coincidentes mostrar mensagem ”Pontos Coincidentes”.
NOTA: fórmula da distância:
dist =
(x2 − x1 )2 + (y2 − x1 )2
2. Determinar triângulo válido
Ler três pontos e determinar se formam um triângulo. Pode ser utilizada a
fórmula da distância entre dois pontos para calcular as medidas dos lados do
triângulo. Sendo que um triângulo é sempre válido se a medida de cada um dos
seus lados é menor que a soma dos outros lados.
3. Determinar o máximo de 3 valores
Ler três números e calcular o maior deles.
4. Classificar em função da média
Ler as notas de um aluno às disciplinas de Matemática, Português, Inglês e
Geografia e calcular a média. Em função da média mostrar um mensagem com
o conteúdo ”Aprovado” ou ”Reprovado”. Considerar nota positiva se for maior
ou igual a 9,5.
5. Classificar triângulo
Classificar um triângulo quanto aos lados, sendo que um triângulo com todos
lados iguais é designado Equilátero, com todos os lados diferentes entre si é
6
1. Algoritmia
designado Escaleno e caso tenha apenas dois lados iguais entre si, designa-se
Isósceles.
6. Resolver equação do 2◦grau
Calcular as raı́zes de uma equação de segundo grau, na forma Ax2 + Bx + C = 0.
NOTA: fórmula resolvente:
x=
−b ∓
√
b2 − 4ac
2a
7. Conversão de temperaturas
Escrever um programa que faça conversões entre as três escalas de temperaturas,
Kelvin, Celsius e Fahrenheit, com base em três valores, a temperatura e escala
existente e escala pretendida. Exemplo: 38, C (Celsius), K, representa que o
utilizador pretende converter a temperatura 38Celsiuus para Kelvin. Fórmulas
necessárias:
tempC ∗ 9
+ 32
5
tempC = tempK + 273
tempF =
7
Manual de Algoritmia e Programação
1.3.3
1
2
3
4
5
6
7
8
Resolução dos Exercı́cios Propostos
Listing 1.4: Distância entre dois pontos
program d i s t P o n t o s
begin
(∗ l e r c o o r d e n a d o s do p r i m e i r o ponto ∗)
l e r x1 , y1 ;
(∗ l e r coordenados do segundo ponto ∗)
l e r x2 , y2 ;
(∗ c a l c u l a r d i s t a n c i a ∗)
d i s t a n c i a ← (x2 − x1 )2 + (y2 − x1 )2 ;
9
10
(∗ t e s t a r p o n t o s c o i n c i d e n t e s ∗)
i f d i s t a n c i a =0
then e s c r e v e r ” Pontos C o i n c i d e n t e s ”
else escrever ” Distancia : ” , di sta nc ia ;
end−i f
11
12
13
14
15
16
1
2
3
4
5
6
7
8
end
Listing 1.5: Determinar triângulo válido
program t r g V a l i d o
begin
(∗ l e r c o o r d e n a d o s do p r i m e i r o ponto ∗)
l e r x1 , y1 ;
(∗ l e r coordenados do segundo ponto ∗)
l e r x2 , y2 ;
(∗ l e r coordenados do t e r c e i r o ponto ∗)
l e r x3 , y3 ;
9
(∗ c a l c u l a r d i s t a n c i a d i s t 1 ∗)
d i s t 1 ← (x2 − x1 )2 + (y2 − x1 )2 ;
(∗ c a l c u l a r d i s t a n c i a d i s t 2 ∗)
d i s t 2 ← (x2 − x3 )2 + (y2 − x3 )2 ;
(∗ c a l c u l a r d i s t a n c i a d i s t 3 ∗)
d i s t 3 ← (x3 − x1 )2 + (y3 − x1 )2 ;
10
11
12
13
14
15
16
if
d i s t 1 <d i s t 2+d i s t 3
and d i s t 2 <d i s t 1+d i s t 3
and d i s t 3 <d i s t 1+d i s t 2
then e s c r e v e r ” Os pontos formam um t r i â n g u l o v á l i d o ”
e l s e e s c r e v e r ” Os pontos NÃO formam um t r i â n g u l o v á l i d o ” ;
end−i f
17
18
19
20
21
22
23
end
8
1. Algoritmia
Listing 1.6: Máximo de 3 valores
1
2
3
program maximo3
begin
ler a , b , c ;
4
i f a>b
i f a>c
then maximo
e l s e maximo
end−i f
else
i f b>c
then maximo
e l s e maximo
end−i f
end−i f
5
6
7
8
9
10
11
12
13
14
15
16
1
2
3
← a;
← c;
← b;
← c;
end
Listing 1.7: Máximo de 3 valores (v2)
program maximo3v2
begin
ler a , b , c ;
4
(∗ a té prova em c o n t r á r i o o p r i m e i r o é o máximo ∗)
maximo ← a ;
5
6
7
(∗ sempre que um v a l o r s u p e r a r ” maximo”
e n t ã o ” maximo ” é a c t u a l i z a d o ∗)
i f b > maximo then maximo ← b
end−i f
8
9
10
11
12
i f c > maximo then maximo ← c
end−i f
13
14
15
e s c r e v e r maximo ;
16
17
1
2
3
4
5
end
Listing 1.8: Classificar em função da média
program c l a s s i f i c a r A l u n o
begin
(∗ l e r n o t a s do a l u n o ∗)
l e r m, p , i , g ;
media ← m+p+i+g
;
4
6
9
Manual de Algoritmia e Programação
i f media ≥ 9 , 5
then e s c r e v e r ” Aprovado ”
e l s e e s c r e v e r ” Reprovado ”
end−i f
7
8
9
10
11
1
2
3
4
end
Listing 1.9: Classificar triângulo
program c l a s s i f i c a r T r i a n g u l o
begin
(∗ l e r medidas dos l a d o s ∗)
ler a ,b, c ;
5
i f a=b and b=c
then e s c r e v e r ” T r i â n g u l o e q u i l á t e r o ”
else
(∗ Já não podem s e r os t r ê s i g u a i s ∗)
i f b=c or a=c or a=b
then e s c r e v e r ” T r i â n g u l o i s ó s c e l e s ”
e l s e e s c r e v e r ” T r i â n g u l o e s c a l e n o ”
end−i f
end−i f
6
7
8
9
10
11
12
13
14
15
1
2
3
4
end
Listing 1.10: Resolver equação do 2◦grau
program equacao2grau
begin
(∗ l e r c o e f i c i e n t e s da equação ∗)
ler a ,b, c ;
5
6
7
(∗ c a l c u l a r o d e l t a ∗)
d e l t a ← b2 − 4ac ;
8
9
10
11
12
13
14
15
16
17
18
19
20
(∗ Equação de 2 . grau c o m p l e t a c / r aı́ z e s ∗)
i f a = 0 and d e l t a ≥ 0
then begin
(∗ a p l i c a r f o r m u l a r e s o l v e n t e ∗)
√
x1 ← −b−2adelta ;
√
x1 ← −b+2adelta ;
e s c r e v e r x1 , x2
end
else
(∗ Equação do 1 . grau ∗)
i f a=0
then begin
10
1. Algoritmia
x1 ← − cb ;
e s c r e v e r x1 ;
end
21
22
23
else
24
e s c r e v e r ” Não e x i s t e m r aı́ z e s ” ;
end−i f
end−i f
25
26
27
28
1
2
3
end
Listing 1.11: Converter entre escalas de temperatura
program c v t E s c a l a s
begin
l e r temp1 , e s c a l a 1 , e s c a l a 2 ;
4
(∗ s e e s c a l a s são i g u a i s não é n e c e s s á r i o c o n v e r t e r ∗)
i f e s c a l a 1=e s c a l a 2
then temp2 ← temp1 ;
e l s e begin
switch escala1 :
case ’K ’ :
temp3 = temp1 +273;
i f e s c a l a 2= ’C ’
then temp2 ← temp3 ;
e l s e temp2 ← temp3∗9
+ 32 ;
5
end−i f
5
6
7
8
9
10
11
12
13
14
15
16
case ’C ’ :
i f e s c a l a 2= ’K ’
then temp2 ← temp1 +273;
e l s e temp2 ← (temp1−32)∗5
;
9
end−i f
17
18
19
20
21
22
case ’F ’ :
temp3 = temp3∗9
+ 32 ;
5
i f e s c a l a 2= ’C ’
then temp2 ← temp3 ;
e l s e temp2 ← temp3 −273;
end−i f
end−s w i t c h
end−i f
e s c r e v e r ” Temperatura =”,temp2 ;
23
24
25
26
27
28
29
30
31
32
end
11
Download