Olá e bem-vindo.
Gostaria de lhe fornecer uma solução para
o nosso desafio de calcular o salário semanal.
Então, vou fornecer uma boa demonstração aqui. Traga blocos de código e
vamos fechar nosso projeto que temos atualmente aberto
e abrir e criar um novo projeto para
este aplicativo.
Vou criar um aplicativo de console, então estarei em c.
E vou nomear este cálculo de pagamento semanal.
Então eu vou ter meu principal. arquivo c que
vai me dar um bom ponto de partida.
Mas há algumas coisas que farei nesta solução que podem ser um pouco diferentes.
Mas vai apresentar alguns conceitos.
Falaremos sobre eles, mas usaremos muitas constantes neste programa, principalmente para
nossa taxa de pagamento e nossas taxas de impostos.
Vou usar algo que ainda não vimos, que é chamado de definir.
É uma diretiva de pré-processador para criar constantes.
E assim, a forma como sabemos sua diretiva de pré-processador é que temos o símbolo de libra.
Então, eu vou apenas dizer definição de libra. Esta é uma forma de criar constantes.
Vou criar 5 constantes para todos os nossos dados
neste programa. Temos uma taxa de pagamento de 12. 00
Portanto, a forma como define funciona é
usar a palavra-chave definida seguida da libra e, em seguida, geralmente você
fornece um nome, geralmente em maiúsculas. Essa é a convenção padrão e, em seguida, um espaço e, em seguida, o valor.
Nenhuma atribuição é igual a aqui. E isso está criando uma variável constante essencialmente.
Então, vamos criar um para taxa de pagamento e taxa de imposto para 300.
Na verdade, diremos taxa de imposto para 150 ou para 300 e menos e isso vai ser
uma taxa de imposto de 0. 15
Você notará que os dados que você atribui podem ser inteiros de
pontos flutuantes, você pode até atribuir strings. Não importa o tipo de dados aqui.
A taxa de imposto para
150 pode ser 0. 20 e geralmente faço as definições fora do principal, na parte superior do arquivo.
E também não se esqueça de adicionar seus comentários na parte superior e em todo o código-fonte.
E então vou criar uma última taxa de imposto para o resto
que é 0. 25
A última coisa que quero fazer é criar uma constante para minhas horas extras, apenas vou
ligar para as horas extras e dizer 40. Isso representará apenas
quando queremos verificar mais de 40.
Nunca é uma boa ideia ter números mágicos dentro das variáveis
porque agora, se alguma coisa mudar
dizer que a hora extra muda para 45, eu só tenho que mudar em um ponto.
bem no topo e meu programa funcionará exatamente da mesma forma.
se eu não tivesse essa constante e usasse um
número mágico em minhas comparações ou variáveis, teria que alterá-lo
em todos os lugares que estou usando 40.
Portanto, adquira o hábito de usar constantes e não algo chamado de números mágicos.
Também gosto de declarar minhas variáveis bem no topo do principal.
Estas são variáveis locais para nossa função principal.
Então, eu quero colocar um comentário declarando variáveis.
As variáveis que preciso que estão localmente, vou criar um número inteiro por
horas, vou inicializá-lo para 0.
As horas serão inseridas pelo usuário
e, em seguida, criarei algumas duplas que serão exibidas como saída,
principalmente o pagamento bruto que inicializarei em 0. 0 porque é um duplo.
E então os impostos, também vou inicializar o 0. 0 terminando com um
ponto-e-vírgula, não se esqueça dos pontos-e-vírgulas e do pagamento líquido.
Porque essas são minhas 3 saídas que desejo.
Então, vou criar minhas 3 saídas no topo junto com minhas horas de entrada.
A primeira coisa que quero fazer é obter minha entrada, então direi
ao usuário para inserir algo. Vou dizer digite
digamos, digite o número de horas trabalhadas
esta semana, coloque dois pontos, um
pequeno espaço e um ponto e vírgula.
Então vou usar minha função scanf para obter a entrada.
Vou apenas dizer scanf. Eu quero ler um número inteiro. Então, vou dizer por cento d.
Vou colocar uma vírgula e vou fazer horas e depois, porque
não é uma string ou caracteres, tenho
que colocar o E comercial na frente e terminar com um ponto e vírgula.
Isso vai ser lido. E, neste ponto, o
que devo fazer é testar, trabalhar em pequenos pedaços e testar constantemente.
se eu continuar escrevendo código para tentar compilar, posso ter um problema em qualquer
lugar, trabalho em pequenas áreas.
Mas eu sei que isso funciona. Então, vou prosseguir para demonstrar como fazer isso.
Como eu disse, a primeira coisa que vou fazer é calcular o pagamento bruto.
Na lógica aqui, precisaremos de uma instrução if.
Basicamente, se as horas forem maiores que 40, queremos ter
uma taxa de horas extras.
Então, o que vou fazer é dizer que se as horas são menores ou iguais
a 40, então tudo que
tenho que fazer é criar meu cálculo muito facilmente,
porque é apenas uma taxa de horas de pagamento.
Portanto, temos nossa palavra-chave if na linha
24 e temos nosso horário.
Estamos fazendo comparação. Estamos usando um operador relacional, menor do que igual. Se o nosso for menor ou
igual a 4, não usaremos colchetes porque teremos que usar uma única instrução.
Vamos apenas dizer pagamento bruto. Vamos definir uma
variável que será igual a horas vezes nossa taxa de pagamento constante e
é isso.
Agora, se for maior ou igual a 40,
queremos fazer outra coisa. Portanto, se essa condição for avaliada como
falsa, queremos um else, e é aqui que usamos o else. O outro terá várias linhas em
seu bloco, então vou usar um colchete, ele vai começar na
linha 27 com o colchete inicial 29 com o final.
A incompatibilidade de seus colchetes ou a falta de colchetes são erros comuns que seu compilador pode encontrar.
Portanto, certifique-se de combinar esses colchetes. O IDE é muito útil porque os destaca.
Se você tiver vários colchetes, você sempre pode ir para outro.
Se você for para o colchete inferior, ele será destacado, informando onde estava o colchete inicial.
Portanto, nesta fita, se for maior que 40, primeiro,
quero definir meu salário bruto igual a 40 vezes a taxa de pagamento,
porque as primeiras 40 horas serão 12 dólares por hora.
E então tudo depois disso será mais.
Então, vou criar uma variável local chamada
pagamento de horas extras e vou definir isso igual
a horas menos 40. Então, se eu digitar 40, seria 5 aqui.
e depois de ter essas horas, quero multiplicar isso da taxa de pagamento
que é de 12 dólares
por hora, mas quero adicionar 1. 5 disso, que seriam 18 dólares
por hora, termino
com um ponto e vírgula.
neste ponto, meu pagamento de horas extras será de 5 vezes 18,
90 dólares se eu digitar 45 como um usuário.
e as primeiras 40 horas serão apenas 40
vezes 12, que
é o que dizemos 570. se fizéssemos 40 vezes 12 seria
480.
Agora, a última coisa que temos que fazer é adicionar o valor bruto pago ao pagamento das horas extras.
Eu provavelmente poderia ter usado um nome melhor do que pagamento bruto, porque ainda não temos nosso pagamento de carência.
mas vou usar um pequeno operador agradável, nosso
operador de atribuição mais igual, que fará o
nosso pagamento de horas extras.
o que isso quer dizer é que o pagamento bruto é igual ao pagamento bruto mais o pagamento de horas extras.
mas estamos fazendo isso em notação abreviada.
Portanto, agora temos nosso pagamento bruto e o pagamento bruto está encerrado.
Então, iríamos testar isso, imprimir o pagamento bruto e verificar se ele estava correto.
mas, como sei que isso funciona, vou passar para a próxima etapa.
o próximo passo é calcular os impostos.
Portanto, para calcular os impostos, lembre-se, temos que fazer certas coisas dependendo
de quanto dinheiro você ganha. Então, vamos ter que olhar para o pagamento bruto.
Portanto, se o pagamento bruto for menor ou igual a 300, faremos algo.
se o salário bruto é 300 e 450,
vamos fazer alguma coisa. e se for maior que 450, faremos outra coisa.
teremos um pequeno código duplicado aqui.
está tudo bem por enquanto, porque estamos apenas demonstrando instruções if.
talvez você consiga escrever um pouco mais claramente
mas o que vou fazer é dizer primeiro verifique a primeira condição em que se o pagamento
bruto é menor ou igual a 300. e nesse caso é
muito fácil calcular os impostos.
os impostos serão apenas o pagamento bruto vezes a taxa
de imposto de 300.
a taxa de imposto para 300,
lembre-se de que qualquer coisa de 300 para outro é tributada em 15%, eu acho que era.
Então, isso é tudo que temos que fazer se você ganhou menos ou
igual a 300.
Novamente, a outra coisa que você deve observar aqui é o recuo.
sempre que você tiver blocos de código, e mesmo que eu tenha apenas uma única instrução,
vou colocar um colchete lá.
e aí eu indico meus blocos, fica muito mais fácil de ler, não se
esqueça do recuo nas novas linhas.
e normalmente aqui você deseja ter espaço em vez de guias, mas isso é outra discussão.
agora também pode ser outra coisa.
Então, na linha 34, perguntamos se o
pagamento bruto é menor ou igual a 300, faça algo na linha 36.
usamos a palavra-chave if, colocamos a condição expressão booleana entre parênteses.
mas e se não for 300 ou menos, então queremos
fazer outra coisa. Especificamente, se o
pagamento bruto for maior que
300 e, portanto, aqui estou usando um "e" comercial do operador lógico,
onde estou fazendo essencialmente 2 perguntas. se o pagamento bruto for
maior que 300 e o valor bruto menor que 450, então quero
fazer outra coisa.
O que estou dizendo é se meu pagamento bruto está entre 300 e 450.
agora, se estiver entre 300 e
450, primeiro quero calcular meus
impostos como fazia antes.
para os primeiros 300, quero multiplicar pela taxa de imposto de 300.
porque os primeiros 300 são tributados com essa taxa.
para o outro valor, quero
fazer a alíquota de 150, que é 20% vírgula.
Então, primeiro, tenho que descobrir
quanto ganhamos com mais de 300, mas posso realmente fazer
isso em uma linha. Vou fazer os
impostos mais iguais, então isso quer dizer impostos iguais, impostos,
que já são 300 vezes a taxa de impostos
300, impostos mais alguma coisa. e o que eu quero
adicionar aos primeiros impostos na linha 40 que foi calculada, eu quero
adicionar o valor
adicional e seria o salário bruto menos 300 e já
determinei que não estou acima de 450.
Portanto, o pagamento bruto menos 300 vezes a taxa
de imposto de 150.
Então veja o que eu fiz lá.
se ganhei qualquer quantia de dinheiro entre 300 e 450 na linha 38,
então quero obter os impostos dos primeiros 300, que é 300 vezes a taxa de imposto de 300
e quero adicionar isso a quanto ou quanto meu pagamento bruto acabou 300 vezes essa
taxa de imposto para 150.
então, agora que encontramos 2 condições, a última condição que queremos verificar é se fizemos mais de 450.
Então, basicamente, podemos apenas ter um else se o pagamento bruto for maior do que
450 ou realmente apenas um else.
mas, para fins de clareza, colocarei o else if
lá, e direi que o salário bruto é superior a 450.
Eu realmente não preciso fazer isso porque posso apenas ter um else sem um
if, mas quero demonstrar o else if.
neste caso, quero calcular os impostos dos primeiros 300, para poder
copiar o código aqui.
Também quero calcular os impostos para os 150,
então vou fazer mais igual para os próximos
150, então 300 a 450. Portanto, isso será
150 vezes a taxa de imposto 150.
E a última coisa que quero fazer é tributar o resto a uma determinada taxa.
Então aqui vou dizer impostos mais iguais, mais uma vez mais igual é impostos mais impostos.
e aqui vou dizer o pagamento
bruto menos 450, porque não quero aplicar
os impostos ao pagamento total, apenas
o que está acima de 450.
e quero multiplicar isso pela taxa de imposto igual a repouso, que
é nossa variável constante que definimos acima.
e é isso. Eu terminei de calcular os impostos.
e, novamente, você testaria isso após cada etapa e certifique-se de que está compilando
e testando corretamente.
mas você notará o recuo. isso é fácil de ler. Estou fazendo comentários, tudo isso.
A última coisa que quero fazer é calcular o salário líquido.
isso vai ser simples porque o pagamento líquido será igual ao
pagamento bruto menos os impostos, muito
simples.
e quero exibir minha saída.
e lembre-se de que os requisitos eram exibir
o pagamento bruto, os impostos e o
pagamento líquido.
Portanto, podemos usar printf aqui.
e vou apenas copiar e colar isso por uma questão de eficiência, para que não tomemos muito tempo.
Às vezes, os alunos ficam bravos quando eu copio e colo, e eles
dizem que você não deve copiar e colar na programação. Bem, isso é verdade até certo ponto.
se você copiar e colar algo e compreender totalmente esse código, será mais eficiente.
o problema de copiar e colar é que muitos desenvolvedores copiam e colam,
eles não têm ideia de como esse código funciona e, então, estão apenas esperando que funcione.
mas, neste caso, sei como funcionam as instruções de impressão e só quero mostrar o que está acontecendo aqui.
Portanto, não preciso esperar perder tempo digitando no teclado.
Portanto, na linha 54, exibiremos o pagamento bruto.
é um flutuador. sabemos como exibir o valor das variáveis.
e a única coisa peculiar nisso é que estou formatando a saída para 2 casas decimais, então
você deve notar o%. 2f e a barra
invertida n é uma alimentação de linha para uma sequência de escape.
Portanto, estou formatando tudo para 2 casas decimais porque, quando exibimos dinheiro,
temos centavos e não temos uma porcentagem de centavos.
e, em seguida, exibi o mesmo formato de impostos e o pagamento líquido.
Tão bem lá.
e, novamente, o que você deve notar neste programa é o recuo.
é muito fácil de ler. Estou usando variáveis constantes no topo.
Estou inicializando minhas variáveis. porque eu os declaro?
tudo é bom e limpo. Estou fazendo comentários. Estou escrevendo
um monte de declarações if else.
Esperançosamente, tudo isso ficou claro. a lógica não é muito difícil de seguir,
mas quando você tem o código-fonte com você, porque você pode fazer
o download para poder analisar mais. mas vamos ver o que acontece quando construímos e compilamos, como
vamos ter certeza de que nada está errado.
Quando eu construo, diz que tenho um aviso não utilizado.
Parece aqui.
Eu perdi algo esperado um ponto-e-vírgula antes de um colchete que não faz sentido.
faltou algo esperado um ponto e vírgula antes de
um colchete que não faz sentido. Então, acho que o que estou perdendo aqui é,
bem, não posso ter outro. tem que ser outro se,
não faz sentido, esqueci o se. Então, se.
veja o que acontece lá é eu tive um else e abaixo disso eu tive um else if.
isso não faz sentido. você não pode ter um else e depois um else if.
Então agora vamos ver o que acontece aqui.
agora recebo 0 erros e 0 avisos.
vamos executar
isso e meu antivírus.
quando eu executar isso, a primeira coisa que fará é dizer por favor insira o número de horas de trabalho esta semana.
Vou colocar algo maior do que 45, então isso demonstra horas extras.
Direi 45 ou 4 maior que 40. 45 e diz que ganhei 570 dólares,
o que é certo porque. tudo por até 40
dólares é 12 dólares por hora, que calculamos ser 400 e 80.
e então as 5 horas custam 18 dólares por hora, que é 90 mais 480 é 570.
os impostos esta semana foram de 105 dólares e o pagamento líquido foi de 465.
bons números pares. você pode fazer esses cálculos para ter certeza de que estão corretos.
você pode tentar executar isso muitas e muitas vezes e ver diferentes saídas de dados.
vamos executá-lo com algo menos
que 40. digamos apenas 30 horas esta
semana, eu não vou receber nenhum pagamento de horas extras. será apenas 30 vezes 12,
que é 360.
Para os primeiros 300, vou ser tributado a uma alíquota de 15%.
e isso vai ser 45 dólares e depois para 60 dólares,
vou ser tributado a uma taxa de 20% e isso
vai ser 12 dólares. Portanto, 45 mais 12, 57 parece correto.
e o salário líquido esta semana é 303,360 menos 57.
Portanto, parece estar funcionando muito bem.
você vai querer testar isso mais com ganhos superiores a 450.
a outra coisa importante no teste é que você deseja testar todos os limites.
você não deseja fornecer apenas um teste. tudo funciona.
você deseja fornecer casos bons e casos ruins.
Portanto, neste caso, neste exemplo, temos muitos casos diferentes para este programa, temos
um caso em que você faz mais de 40 horas.
Então você tem pagamento de horas extras. temos um caso em que seus ganhos
são 300 ou menos, um caso em que seus ganhos são de 300 a 450 e um
caso em que seus ganhos são superiores a 450.
Portanto, para este programa você deve executar
pelo menos 4 casos de teste ou 5 casos de teste provavelmente, isso
depende porque você realmente deseja calcular as horas extras também.
Você provavelmente poderia se safar com 4 casos
porque provavelmente ganha menos de 300 dólares, menos do que o pagamento de horas extras.
Mas o que você realmente quer testar são as horas extras e as 3 taxas de imposto.
Eu espero que isso tenha sido útil. Espero que você entenda completamente o que demonstrei.
Espero que você entenda tudo sobre as instruções if e como torno meu
código legível e uso nomes significativos. Obrigada.