Programação C - Estruturas de Decisão
Em programação, os comandos de controle são utilizados para desviar o fluxo do algoritmo para outras atividades, ou repetir por 'n' vezes uma determinada atividade. No caso de Estruturas de Decisão, uma rotina poderá ser executada se uma determinada condição for verdadeira ou falsa.
Figura 4-1 - Fluxograma do if
C, suporta dois tipos de comando de decisão (ou seleção). Um é o "if" e o outro é o "switch".
O comando if possui a seguinte sintaxe:
if(expressão_verdadeira)
Executa_comandos;
O "if" é utilizado quando desejamos executar uma tarefa (ou algumas), somente se uma determinada condição for verdadeira. Caso a condição não seja verdadeira, pula e não executa a tarefa. Esta condição pode ser uma simples comparação de conteúdos de variáveis, tipo: (A > B). Diante disso, podemos ter algumas variações na utilização do "if". Vejamos algumas:
Executando uma única tarefa simples, Figura 4-2 . Nesta rotina, solicitamos ao usuário digitar dois valores quaisquer, onde o primeiro será armazenado na variável 'x' e o segundo na variável 'y'. O comando if faz uma verificação se o valor digitado por primeiro é maior que o valor digitado por segundo, caso seja, é impresso na tela que o primeiro é o maior. Caso não seja, não será impresso nada na tela.
Figura 4-2 - if simples
Executando mais de uma tarefa, Figura 4-3 . Nesta rotina, é solicitado ao usuário digitar um único valor. O comando if verifica se este valor digitado é menor que 10, caso seja, serão impressos na tela os valores correspondentes ao quadrado e ao dobro deste valor. Observar que neste caso há mais de uma linha a ser executada, deste modo, é criado um "bloco de comandos" que está dentro do abre e fecha chaves " { } ". Tudo que está dentro deste bloco será executado se a condição do if for verdadeira. Diferentemente do exemplo anterior que era apenas "uma" linha e naquele caso o abre e fecha chaves é opcional.
Figura 4-3 - if com múltiplas tarefas
Executando tarefa se verdadeiro e se falso, Figura 4-4 . Nesta rotina há duas tarefas a serem executadas, uma no caso da condição do if ser verdadeira e outra caso a condição seja falsa. Para este caso, é utilizado o comando 'else' (se não). Ou seja, se 'x' for maior que 'y', informa na tela que o primeiro número digitado é o maior. Caso contrário, se o 'y' for maior, a condição passa a ser falsa e o comando a ser executado é o que está em 'else', ou seja, o segundo 'printf', informando que o segundo número é maior.
Como é executado somente uma linha para o verdadeiro ou para o falso, não é necessário fazer uso das chaves. Mas se utilizar não estará incorreto.
Figura 4-4 - if executa se verdadeiro e falso
Utilizando ifs aninhados, Figura 4-5 . Podemos utilizar vários ifs em sequência, por conta da necessidade de várias comparações lógicas, sempre utilizando o comando else. A esta sequência de if é dado o nome de "ifs aninhados". A lógica funciona assim, se a primeira condição é falsa, verifica a segunda, se está também é falsa, verifica a terceira, e assim sucessivamente. É claro que aqui há várias formas e considerações a serem observadas. Veremos mais em sala de aula.
Outro detalhe, a rotina da Figura 4-5 funciona ... mas ... há um bug! Qual?
Figura 4-5 - if aninhados
Operador Ternário, Figura 4-6 . Outra forma de trabalhar com estrutura de decisão é a utilização do "operador ternário", ou como em algumas literaturas, a utilização do "?" (interrogação). Funciona da seguinte forma (para o exemplo em questão), se a condição lógica "x > 12", for verdadeira, a variável "y" vai receber o valor 100 (1º valor logo após o ?). Caso contrário, se for falsa, a variável "y" vai receber o valor 200 (2º valor que está logo após os ":" dois pontos). O "?" funciona como if e ":" funciona como else.
Figura 4-6 - operador ternário
A estrutura de decisão switch, diferentemente da estrutura if que utiliza como argumento uma condição lógica, utiliza o conteúdo de uma variável como argumento. Basicamente o switch libera a execução de linhas de comando, conforme o conteúdo da variável em referência. Vejam os exemplos a seguir.
No exemplo da Figura 4-7 , é solicitado ao usuário que informe um valor. Este valor é armazenado na variável 'x'. Na sintaxe do switch, a variável de referência é colocada entre parênteses, no caso o 'x' logo após a nomenclatura. A comparação é feita pela palavra reservada "case".
Basicamente a comparação é a seguinte: caso (case) o conteúdo da variável 'x' seja igual ao número 1, será executado o printf que informa que foi selecionada a cor Azul; caso (case) o conteúdo da variável 'x' seja o número 2, será executado o printf que informa que foi selecionada a cor Amarela; caso o conteúdo da variável 'x' seja o número 3, será impresso Verde; caso o conteúdo da variável 'x' seja o número 4, será impresso Vermelha. Se não for digitado nenhum destes números pelo usuário, não será impresso nada.
Figura 4-7 - switch com variável inteira
Atentos para a sintaxe do switch:
Após o comando switch, a variável deve estar entre parênteses;
Todo o bloco de comparações deve estar entre chaves;
A comparação se dá pela palavra reservada case;
Após o 'case' deve ser colocado o valor desejado seguido de dois pontos;
Pode ser colocado mais de uma linha de comando;
Antes do 'case' seguinte, deve ser colocado o comando 'break', para forçar a saída do switch. Caso contrário executará os demais comandos.
No caso do exemplo da Figura 4-8 , estamos utilizando uma variável caracter. Neste caso, os valores a serem comparados devem estar entre aspas ' ', pois não é valor numérico. Outro fator novo neste exemplo, é o aparecimento do comando "default". No exemplo anterior, caso o conteúdo da variável não fosse nenhuma das opções disponíveis, não era executado nada. Neste caso, como a estrutura está com o comando "default", caso o conteúdo da variável não seja nenhuma das opções, será executado o que estiver neste comando, no caso será impresso "Letra incorreta". Este comando é opcional. Demais variações, veremos em sala de aula.
Figura 4-8 - switch com variável caracter
1) Fazer um programa que receba três valores fornecidos por um usuário, e informar se estes valores podem corresponder a um triângulo e qual o tipo de triângulo.
2) Fazer um programa que simule uma calculadora simples com as 4 operações básicas;
3) Escreva um algoritmo que receba 3 números e informe o maior deles.
4) Fazer um programa que receba a idade de uma pessoa e informar se ele pode votar.
5) Faça um algoritmo que leia um número que represente um determinado mês do ano. Após a leitura escreva por extenso qual o mês lido. Caso o número digitado não esteja na faixa de 1..12 escreva uma mensagem informando o usuário do erro da digitação.
6) Faça um algoritmo que leia os valores A, B, C e diga se a soma de A + B é menor que C.
7) Faça um programa que receba três números obrigatoriamente em ordem crescente e um quarto número que não siga esta regra. Mostre, em seguida, os quatro números em ordem decrescente.
8) Faça um programa que receba o valor do salário mínimo, o número de horas trabalhadas, o número de dependentes do funcionário e a quantidade de horas extras trabalhadas. Calcule e mostre o salário a receber do funcionário de acordo com as regras a seguir:
a) O valor da hora trabalhada é igual a 1/20 do salário mínimo;
b) O salário do mês é igual ao número de horas trabalhadas multiplicado pelo valor da hora trabalhada;
c) Para cada dependente acrescentar R$ 32,00;
d) Para cada hora extra trabalhada calcular o valor da hora trabalhada acrescida de 50%;
e) O salário bruto é igual ao salário do mês mais o valor dos dependentes mais o valor das horas extras;
f) Calcular o valor do imposto de renda retido na fonte de acordo com a tabela a seguir:
IRPF Salário Bruto
Isento, inferior a R$ 500,00
10% De R$ 500,00 até R$ 1.000,00
20% Superior a R$ 1.000,00
a) O salário líquido é igual ao salário bruto menos IRPF;
b) A gratificação de acordo com a tabela a seguir;
SALÁRIO LÍQUIDO GRATIFICAÇÃO
Até R$ 1.350,00 R$ 100,00
Superior R$ 1.350,00 R$ 50,00
O salário a receber do funcionário é igual ao salário líquido mais a gratificação
9) Faça um programa que receba o salário de um funcionário, calcule e mostre o novo salário desse funcionário, acrescido de bonificação e de auxílio-escola.
SALÁRIO BONIFICAÇÃO
Até R$ 500,00 12% do salário
Entre R$ 500,01 e R$ 1200,00 5% do salário
Acima de R$ 1200,00 Sem bonificação
SALÁRIO AUXÍLIO-ESCOLA
Até R$ 600,00 R$ 150,00
Mais que R$ 600,00 R$ 100,00
10) Faça um programa que receba quatro notas, calcule e mostre a média e mensagem que está na tabela a seguir.
Média Mensagem
0,0 até 3,9 Reprovado
4,0 até 6,9 Exame Final
7,0 até 10,0 Aprovado
11) Um banco concederá um crédito especial aos seus clientes de acordo com o saldo médio do último ano. Faça um programa que receba o saldo médio de um cliente e calcule o valor do crédito, de acordo com a tabela a seguir. Mostre o saldo médio e o valor do crédito.
Acima de R$ 400,00 30% de saldo médio
De R$ 400,00 à R$ 301,00 25% de saldo médio
De R$ 300,00 à R$ 201,00 20% de saldo médio
Até R$ 200,00 10% de saldo médio
12) Faça um programa que receba o salário de um funcionário, usando a tabela a seguir, calcule e mostre o valor com aumento e novo salário.
Até R$ 300,00 15
De R$ 301,00 à R$ 600,00 10
De R$ 601,00 à R$ 900,00 5
Acima de R$ 900,00 0
13) Faça um algoritmo que leia um número qualquer. Caso o número seja par e menor que 10, escreva 'Número par menor que Dez', caso o número digitado seja ímpar e menor que 10 escreva 'Número Ímpar menor que Dez', caso contrário Escreva 'Número fora do Intervalo'.
14) Fazer um algoritmo que simule as opções de um menu.
15) Faça um programa que receba quatro notas, calcule e mostre a média e mensagem que está na tabela a seguir.
16) Fazer um programa que receba o número do voto de um eleitor e retorne o candidato escolhido.
17) Uma agência bancária possui dois tipos de investimentos, conforme o quadro a seguir. Faça um programa que receba o tipo de investimento e o valor do investimento, calcule e mostre o valor corrigido de acordo com o tipo de investimento.
1 Poupança 3%
2 Fundos de Renda Fixa 4%
18) Faça um programa que receba a idade de um nadador e mostre a sua categoria usando as regras a seguir.