Programa que diz se você passou, ficou de recuperação ou reprovou

Vamos resolver mais um programa que foi proposto em nosso artigo, de nossa apostila C Progressivo, sobre questões envolvendo o teste condicional IF ELSE.

Clique aqui e saiba como obter seu certificado de programação C! Entre já no Mercado de Trabalho!


Programa em C

Crie um programa em C que recebe uma nota (entre 0.0 e 10.0) e checa se você passou direto, ficou de recuperação ou foi reprovado na matéria.

A regra é a seguinte:
Nota 7 ou mais: passou direto
Entre 4 e 7: tem direito de fazer uma prova de recuperação
Abaixo de 4: reprovado direto




Vamos fazer isso usando condições, testando com if e else o que foi digitado pelo usuário. No caso, a nota.
Vamos colocar if dentro de if, essa técnica se chama aninhar (nested).

Vou dar uma importante dica que você vai usar por toda sua vida de programador, que é uma das maiores lições que sei e posso passar:

"Um problema difícil nada mais é que uma série de pequenos problemas fáceis."

E qual pra transformar um problema difícil em fáceis?

Usando a técnica de Jack, o estripador: por partes. Quebre o programa.

Todo e qualquer projeto, desde esse que vou passar até os da NASA, são divididos em área, partes...na criação de um jogo, tem gente especializada até no desenho das árvores, no barulho das armas e se o eco vai ser realista.


Ok, vamos lá.

Criar um programa que recebe uma nota do usuário você já sabe, é só usar a função scanf.

Mas o nosso curso vai ser focado nas boas práticas, vamos focar em criar aplicações robustas.

O que é isso?
Vamos minimizar o máximo possível os possíveis problemas que possam aparecer quando usuário for usar o problema.

Parte 1: Tendo a certeza que o usuário vai digitar uma nota válida

Você pensou nisso? E se o energúmeno digitar 11 ou -1.1 ?
Não pode.

O primeiro passo da nossa aplicação é ter a certeza que ele vai digitar uma nota ENTRE 0.0 e 10.0!

Se for 0.0 até 10.0, ok, e se não for? Acaba o programa.
Fica assim:
        
printf("Digite sua nota [0.0 - 10.0]: " );
scanf("%f", &nota);
        
if( (nota <= 10.0) && (nota >= 0.0) )
{
   printf("Nota válida\n");
} 
else 
{
   printf("Nota inválida, fechando aplicativo");
}


O que fizemos foi certificar que a nota é menor que 10.0 E maior 0.0 !

Os dois casos precisam ser satisfeitos, por isso o operador lógico &&.

Teste. Coloque 10.1, 10.5, 21.12, -19, -0.000001, "c progressivo".

Você tem que fazer muito isso: testar.
Nas grandes empresas tem gente contratada só pra isso: testar (estagiários ou bolsistas).

Eliminada as possibilidades de notas absurdas, prossigamos.


Parte 2: 

Checando se passou direto
Vamos colocar mais um if else que vai checar se o aluno passou direto ou não.
Por hora, esqueça o código feito.

Como seria esse código pra testar se ele passou direto? Fácil:



if( nota >= 7.0 )
{
   printf("Parabens, voce passou direto. Voce deve ser programador C, por acaso estuda pela apostila C Progressivo ?\n");
}
else 
{
            printf("Nao passou direto");
}


Vamos colocar esse trecho de código abaixo daquele print que diz 'nota válida'.

Então, vamos pensar como o C pensa:

Primeiro ele recebe o resultado.

Checa se está entre 0.0 e 10.0. Se não está, pula pro else e terminou o programa.

Se estiver entre 0.0 e 10.0, diz que a nota é válida e depois faz outro teste em outro if, pra checar se a nota é maior que 7.0, se for diz passou direto, se não for diz que não passou direto.


O código ficaria assim:

     
if( (nota <= 10.0) && (nota >= 0.0) )
{
   printf("Nota válida");
         
   if( nota >= 7.0 )
   {
      printf("Parabens, voce passou direto. Voce deve ser programador C, por acaso estuda pela apostila C Progressivo ?\n");
   }
   else 
   {
      printf("Não passou direto\n");
   }
         
}
else 
{
   printf("Nota inválida, fechando aplicativo");
}

Teste.

Note que o C é um professor super rigoroso. Se tirar 6.99 não passa direto!

Parte 3: 

Checando se você ainda há esperanças
Bom, agora vamos checar se o aluno ainda pode fazer recuperação, ou seja, se a nota está entre 4.0 e é menor que 7.0.
Caso seja exatamente 7.0, passará automaticamente.
O código pra essa parte é o seguinte:


if( nota >= 4.0 )
{
    printf("Vai ter que fazer recuperacao");
}
else 
{
    printf("Reprovado. Estude C que voce ficara mais inteligente");
}

Note que se não for maior ou igual a 4.0, é menor, então vai pro else.

Ora, se é menor, foi reprovado. Então o else manda mensagem de reprovação.
A pergunta é, onde vamos inserir esse código?
No else do trecho 'Não passou direto'

Então, o código completo em C fica:

Código C:
#include <stdio.h>

int main()
{
        float nota; //vai armazenar a nota

        printf("Digite sua nota [0.0 - 10.0]: " );
        scanf("%f", &nota);

        if( (nota <= 10.0) && (nota >= 0.0) )
        {
            if( nota >= 7.0 )
            {
                printf("Parabens, vocc passou direto. Voce deve ser programador C\n");
            }
            else
            {

                if( nota >= 4.0 )
                {
                    printf("Voce vai para a recuperacao\n");
                }
                else
                {
                    printf("Reprovado. Estude C que voce ficara mais inteligente\n");
                }
            }

        }
        else
        {
            printf("Nota inválida, fechando o programa C\n");
        }

}

2 comentários:

Monarquista Convicto disse...

Meu código ficou assim:

#include

int main()
{
float nota;

printf("Insira sua nota: ");
scanf("%f.2",&nota);

if((nota >= 0) && (nota <= 10))
{
if(nota >= 7.00)
printf("Parabéns, você foi aprovado!");
if((nota >= 4.00) && (nota < 7.00))
printf("Você deve fazer outra prova de recuperação.");
if(nota < 4.00)
printf("Reprovado.");
}

else
printf("o valor digitado é inválido.");

return 0;

}

Funcionou.

Ghost Blogger disse...

#include

int main()

{
float nota;

printf("Digite sua nota [0.0 - 10.0]: " );
scanf("%f", &nota);

if(( nota >= 10.0) && (nota <= 10.0))
printf("Parabens tirou nota maxima, Mesmo assim nao deixe de aprimorar seus estudos\n");
else
if( (nota <= 10.0) && (nota >= 0.0) )
{ if( nota >= 7.0 )

{
printf("Parabens, voce passou direto. Voce deve ser programador C, por acaso estuda pela apostila C Progressivo ?\n");
}
else
{
printf("Nao passou direto\n");
if( nota >= 7.0 )
{
printf("Parabens, voce passou direto. Voce deve ser programador C, por acaso estuda pela apostila C Progressivo ?\n");
}
else
{
printf("Nao passou direto\n");
}
}
}
else
{
printf("Nota inválida, fechando aplicativo");
}

}

Gostou desse tutorial de C?
Sabia que o acervo do portal C Progressivo é o mesmo, ou maior que, de um livro ou curso presencial?
E o melhor: totalmente gratuito.

Mas para nosso projeto se manter é preciso divulgação.
Para isso, basta curtir nossa página no Facebook e/ou clicar no botão +1 do Google.
Contamos e precisamos de seu apoio.