Faça um programa que apresente o menu de opções a seguir, permita ao usuário escolher a opção desejada, receba os dados necessários para executar a operação e mostre o resultado. Verifique a possibilidade de opção inválida e não se preocupe com restrições como salário negativo.
Na opção 1: receber o salário de um funcionário, calcular e mostrar o valor do imposto usando as regras a seguir:
Na opção 2: receber o salário de um funcionário, calcular e mostrar o valor do novo salário, usando as regras a seguir:
Na opção 3: receber o salário de um funcionário e mostrar sua classificação usando a tabela a seguir:
Resolução:
É perfeitamente possível nós desenvolvermos este código com o uso do \(if\), no entanto poderemos utilizar o \(swith\), o que tornará o seu desenvolvimento mais elegante.
es2q11=function(op){
cat("Menu de opções:")
cat("\n1 - Imposto")
cat("\n2 - Novo Salário")
cat("\n3 - Classificação:")
cat("\nA opção desejada foi:",op)
}Logo, se escolhermos a opção (op=1),temos:
es2q11(1)## Menu de opções:
## 1 - Imposto
## 2 - Novo Salário
## 3 - Classificação:
## A opção desejada foi: 1
Para desenvolvermos este código, uma das opções a ser adotada é a utilização da função switch. A sua sintaxe é apresentada a seguir:
switch(op,
"1" = {},
"2" = {},
"3" = {},
stop("opção inválida")
)
Desta forma, o código será desenvolvido com a utilização da função switch:
es2q11=function(op,sal_atual){
cat("Menu de opções:")
cat("\n1 - Imposto")
cat("\n2 - Novo Salário")
cat("\n3 - Classificação:")
cat("\nA opção desejada foi:",op)
switch(op,
"1" ={
cat("\nO salário do funcionário é de R$",sal_atual,"reais.")
if(sal_atual<500)
cat("\nO imposto sobre o salário é 5% e o salário a receber é de R$",sal_atual*0.95,"reais.")
if(sal_atual>=500 && sal_atual<850)
cat("\nO imposto sobre o salário é de 10% e o salário a receber é de R$",sal_atual*0.90,"reais.")
if(sal_atual>=850)
cat("\nO imposto sobre o salário é de 15% e o salário a receber é de R$",sal_atual*0.85,"reais.")
},
"2" ={
cat("\nO salário do funcionário é de R$",sal_atual,"reais.")
if(sal_atual> 1500){
cat("\nO funcionário irá receber um aumento de R$ 25,00 reais")
cat("\nO novo salário após o aumento será de R$",sal_atual+25,"reais.")}
if(sal_atual>=750 && sal_atual<=1500){
cat("\nO funcionário irá receber um aumento de R$ 50,00 reais.")
cat("\nO novo salário após o aumento será de R$",sal_atual+50,"reais.")}
if(sal_atual>=450 && sal_atual<750){
cat("\nO funcionário irá receber um aumento de R$ 75,00 reais.")
cat("\nO novo salário após o aumento será de R$",sal_atual+75,"reais.")}
if(sal_atual<100){
cat("\nO funcionário irá receber um aumento de R$ 100,00 reais.")
cat("\nO novo salário após o aumento será de R$",sal_atual+100,"reais.")}
},
"3" = {
cat("\nO salário do funcionário é de R$",sal_atual,"reais.")
if(sal_atual<=700)
cat("O funcionário é mal remunerado.")
else
cat("O funcionário é bem reumenerado.")
},
stop("\nOpção inválida.")
)
}A opção que escolheremos é (op=2) com um salário (sal_atual=1600). Logo, temos:
es2q11(2,1600)## Menu de opções:
## 1 - Imposto
## 2 - Novo Salário
## 3 - Classificação:
## A opção desejada foi: 2
## O salário do funcionário é de R$ 1600 reais.
## O funcionário irá receber um aumento de R$ 25,00 reais
## O novo salário após o aumento será de R$ 1625 reais.