Comentários

0%

FOCO NO MERCADO DE TRABALHO

Operações e expressões

Vanessa Cadan Scheffer

Que tal aprimorar o software de locação de filmes on-line? 

A melhoria é informar se o filme desejado está disponível para ser locado e quantos anos faltam para que a classificação do filme seja adequada à faixa etária do cliente.

Fonte: Shutterstock.

Deseja ouvir este material?

Áudio disponível no material digital.

sem medo de errar

Para ampliar sua visão acerca das possibilidades de aplicação dos conhecimentos obtidos até o momento, vamos retomar a situação-problema: seu chefe solicitou que você aprimore um programa que vem sendo desenvolvido na empresa onde trabalha. Vamos então recordar o que já sabemos?

#include <stdio.h>

#define TAM_NOME_CLIENTE 100

struct cliente {
    char nome[TAM_NOME_CLIENTE];
    int idade;
};

int main(void){
    struct cliente cli;
    int classificacao_filme;
    
    printf("\n Informe o nome do cliente: ");
    fflush(stdin);
    fgets(cli.nome, TAM_NOME_CLIENTE, stdin);
    
    printf("\n Informe a idade do cliente: ");
    scanf("%d", &cli.idade);
    
    printf("\n Informe a classificação do filme: ");
    scanf("%d", &classificacao_filme);
    
    printf("\n Cliente: %s", cli.nome);
    printf("\n Idade: %d anos", cli.idade);
    printf("\n Classificação do filme: %d anos", classificacao_filme);
    
} 

A versão atual do seu programa é capaz de ler a idade e o nome do cliente, bem como a classificação do filme que ele deseja locar e, posteriormente, imprimir todas essas informações na tela.

Uma das novas funcionalidades propostas por seu chefe é que o programa informe ao cliente se o filme desejado está disponível para ser locado ou não. Nós já temos uma informação a respeito do filme, que é sua classificação. Então, para que nosso código fique organizado, vamos criar uma struct denominada Filme, assim como fizemos com o cliente.

struct filme {
  int classificacao_filme;
  int esta_disponivel;
}; 

Você também precisa de um trecho de código capaz de ler a informação se o filme está disponível ou não do teclado e imprimi-la na tela. Com os conhecimentos aprendidos, você consegue realizar essa etapa.

A próxima melhoria a ser feita no programa é informar se o filme desejado pode ser locado pelo cliente, levando em consideração se o filme está disponível e se é indicado para a sua faixa etária. Nós já temos as informações necessárias para efetuar esse processamento. Então, vamos criar uma expressão lógica que resultará em 0 (falso) ou 1 (verdadeiro), dependendo dos valores das variáveis de entrada. Para que o resultado seja 1 (verdadeiro), a idade do cliente deve ser maior ou igual à classificação do filme e o filme deve estar disponível. Com base na versão atual do código do programa, a expressão lógica a ser utilizada é:

(fi.esta_disponivel) && (cli.idade >= fi.classificacao_filme))

Por fim, o programa deve informar quantos anos faltam para que a classificação do filme seja adequada à faixa etária do cliente. Nesse caso, precisamos pensar um pouco mais para resolver esse problema com os recursos que aprendemos até o momento. Você se lembra de que o resultado de uma expressão lógica é 0 ou 1. Então, se pensarmos na expressão (cli.idade < fi.classificacao_filme), seu resultado será 0 quando a idade do cliente for maior ou igual à classificação do filme ou 1, quando a idade do cliente for menor do que a classificação do filme.

(cli.idade < fi.classificacao_filme) * (fi.classificacao_filme - cli.idade))

O resultado dessa expressão será um número inteiro, que responde à seguinte pergunta: “quantos anos faltam para que a classificação do filme seja adequada à faixa etária do cliente?”.

O código completo do programa que resolve a situação-problema encontra-se a seguir:

#include <stdio.h>

#define TAM_NOME_CLIENTE 100

struct cliente {
    char nome[TAM_NOME_CLIENTE];
    int idade;
};

struct filme {
    int classificacao_filme;
    int esta_disponivel;
};

int main(void){
    struct cliente cli;
    struct filme fi;
    
    
    printf("\n Informe o nome do cliente: ");
    fflush(stdin);
    fgets(cli.nome, TAM_NOME_CLIENTE, stdin);
    
    printf("\n Informe a idade do cliente: ");
    scanf("%d", &cli.idade);
    
    printf("\n Informe a classificação do filme: ");
    scanf("%d", &fi.classificacao_filme);
    
    printf("\n Informe (0) se o filme não está disponível e (1) caso contrário: ");
    scanf("%d", &fi.esta_disponivel);

    printf("\n Cliente: %s", cli.nome);
    printf("\n Idade: %d anos", cli.idade);
    printf("\n Classificação do filme: %d anos", fi.classificacao_filme);
    printf("\n Está disponível: %d", fi.esta_disponivel);
    printf("\n Filme pode ser locado pelo cliente: %d", (fi.esta_disponivel) && (cli.idade >= fi.classificacao_filme));
    printf("\n Anos restantes: %d", (cli.idade < fi.classificacao_filme) * (fi.classificacao_filme - cli.idade ));

Agora é com você!

Avançando na prática

CÁLCULO DE DESCONTO 

Uma pizzaria o procurou, pois gostaria de automatizar seu caixa. A princípio, foi-lhe solicitado apenas implementar um cálculo simples, em que, dado o valor total da conta de uma mesa, o programa calcula o desconto concedido e divide esse valor pela quantidade de integrantes da mesa. O programa deve receber como dados de entrada o valor da conta, a quantidade de pessoas e o percentual de desconto (%). Com os dados no programa, como deverá ser feito o cálculo do valor total da conta com o desconto e o valor que cada pessoa deverá pagar?

O código, no Código 1.14, apresenta o resultado do problema. Um ponto importante é o cálculo do desconto feito na linha 15, para cuja montagem utilizamos uma regra de três simples. Outro ponto é o cálculo do valor por pessoa, feito na linha 18 diretamente dentro do comando de impressão. Esse recurso pode ser usado quando não é preciso armazenar o valor.

Código 1.14 | Resolução do problema
#include <stdio.h>
int main(){
    float valor_bruto = 0;
    float valor_liquido = 0;
    float desconto = 0;
    int qtd_pessoas = 0;

    printf("\n Digite o valor total da conta: ");
    scanf("%f", &valor_bruto);
    printf("\n Digite a quantidade de pessoas: ");
    scanf("%d", &qtd_pessoas);
    printf("\n Digite o desconto (em porcentagem): ");
    scanf("%f", &desconto);

    valor_liquido = valor_bruto - (valor_bruto * desconto/100);

    printf("\n Valor da conta com desconto = %f", valor_liquido);
    printf("\n Valor a ser pago por pessoa = %f", valor_liquido/qtd_pessoas);
}
Fonte: elaborado pela autora .

Agora é com você!

Bons estudos!

AVALIE ESTE MATERIAL

OBRIGADO PELO SEU FEEDBACK!