(Parte 6 de 9)

Escreva um programa que a partir de um determinado número de segundos calcula o número de horas, minutos e segundos correspondentes. Conforme o seguinte exemplo:

1.6.3.3 Teorema de Pitágoras

Escreva um programa para determinar a hipotenusa de um triângulo rectângulo, dados os catetos.

1.6.3.4 Converter temperaturas

Escreva um programa que a partir de uma temperatura expressa em graus Fahrenheit (tempF), calcule a temperatura expressa em graus Celsius (tempC). A conversão pode ser realizada de acordo com a fórmula 1.6.2.

1.6.4 Instruções de Decisão

As instruções de decisão, ou selecção, permitem a selecção em alternância de um ou outro conjunto de acções após a avaliação lógica de uma condição.

1.6.4.1 Decisão binária

A decisão binária permite bifurcar a execução de um programa em dois fluxos distintos, para tal é utilizada instrução if. Esta instrução pode ser utilizada de duas formas: if e if-else.

No primeiro caso, se a condição for verdadeira é executado o bloco-instruções caso contrário nada acontece:

if (<condição>) { <bloco-instruções> }

No caso do <bloco-instruções> ser constituído por uma só instruções não é necessário delimitar essa instrução por chavetas ({ e }).

A listagem 1.8 apresenta um programa codificado em C++, cujo objectivo é escrever no ecrã que o aluno foi aprovado no caso da nota ser superior a 9.5 valores.

Apontamentos de Programação C/C++

Listing 1.8: Estrutura de decisão – if

No segundo caso, se a condição for verdadeira é executado o bloco-instruções 1 senão é executado o bloco-instruções 2:

Considere-se o programa em C++ presente na listagem 1.9. Neste programa são lidas as medidas dos lados de uma figura rectangular, sendo que no caso particular de os dois lados serem iguais estamos na presença de um quadrado. Em qualquer um dos casos é apresentada a mensagem correspondente assim como o valor da área.

Listing 1.9: Exemplo de utilização da instrução if-else

1.6.4.2 Decisão múltipla

A instrução de de decisão múltipla é um caso particular de instruções if-else encadeadas.

ISEP/DEI - Jorge Santos e Paulo Baltarejo

Considere-se o programa da listagem 1.10 em que o objectivo é determinar qual o maior de três números.

Listing 1.10: Determinar o maior três números

Apontamentos de Programação C/C++

A instrução switch proporciona uma forma especial de tomada de decisões múltiplas. Ela permite examinar os diversos valores de uma expressão compatível com números inteiros e seleccionar o resultado adequado.

switch(expressão) { case constante 1:<bloco-instruções 1> break; case constante 2:<bloco-instruções 2> break; default:<bloco-instruções N> }

Considere uma máquina que permite apenas três operações, ligar, desligar e furar. O programa da listagem 1.1 permite modelar o funcionamento da respectiva máquina. Sendo que aquando da digitação das letras: ’L’, ’D’ e ’F’, são apresentados, respectivamente, as mensagens: Ligar, Desligar e Furar. No caso da letra digitada ser outra é apresentada mensagem de erro.

Listing 1.1: Exemplo da instrução switch

1.6.5 Prioridade dos operadores

Na avaliação de expressões são complexas, com vários operandos e operadores, é fundamental saber qual a ordem pela qual a expressão será avaliada. A tabela

ISEP/DEI - Jorge Santos e Paulo Baltarejo

1.15 apresenta a relação dos principais operadores da linguagem C++. Note-se que alguns dos operadores referidos na tabela serão posteriormente apresentados.

Tabela 1.15: Relação de precedência dos operadores

No entanto pode-se resolver algumas dúvidas em relação à precedência e sequência de avaliação com a utilização de parêntesis((,)).

1.6.6 Exercícios Resolvidos

Nesta secção são apresentados alguns problemas e respectivas soluções com o objectivo de ilustrar a utilização de instruções de decisão.

1.6.6.1 Distância euclidiana entre dois pontos

O programa da listagem 1.12 permite realizar o cálculo da distância euclidiana entre dois pontos, sendo que cada ponto é definido pelas coordenadas (x,y). no cálculo da distância pode ser utilizada a fórmula 1.6.3.

Caso os pontos sejam coincidentes mostra mensagem "Pontos Coincidentes".

Listing 1.12: Distância euclidiana entre dois pontos

1 #include<iostream .h> 2 #include<math.h> 3

Apontamentos de Programação C/C++

1.6.6.2 Classificar em função da média

O programa da listagem 1.13 permite 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 mostra uma mensagem com o conteúdo "Aprovado" ou "Reprovado". Consideram-se notas positivas as notas iguais ou superiores a 9,5.

Listing 1.13: Calcular a média

1.6.6.3 Determinar o máximo de 3 valores O programa da listagem 1.14 permite determinar o maior de três números.

Listing 1.14: Máximo de três valores

1 #include<iostream .h> 2 3 int main()

ISEP/DEI - Jorge Santos e Paulo Baltarejo

Sugestão: Baseando-se nas soluções propostas escreva um programa que permita a determinação do máximo entre 5 números. Qual é a solução mais elegante?

(Parte 6 de 9)

Comentários