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