AFF Education Construa seu Futuro

Aula 28 - Desafio (desafio1.java)

Desafio de Verificação de Notas

Neste capítulo, vamos aplicar os conhecimentos de operadores relacionais em um desafio prático para verificar se alunos passaram ou não em um teste, com base em suas notas.

Este desafio vai ajudar a praticar:

Instruções do Desafio

Crie um arquivo chamado desafio1.java seguindo estas instruções:

  1. Criar variável fracionária (double) chamada notaDoAluno e atribuir valor 5.5
  2. Criar variável fracionária (double) chamada notaDaAluna e atribuir valor 7.5
  3. Criar variável fracionária (double) chamada notaMinimaParaPassar e atribuir valor 6.0
  4. Criar variável booleana chamada alunoPassou e verificar se notaDoAluno é maior ou igual que notaMinimaParaPassar
  5. Criar variável booleana chamada alunaPassou e verificar se notaDaAluna é maior ou igual que notaMinimaParaPassar
  6. Imprimir as variáveis alunoPassou e alunaPassou em linhas diferentes contendo o texto: "O aluno passou?" e "A aluna passou?", respectivamente

Solução do Desafio

Aqui está o código completo para resolver o desafio:

public class desafio1 {
    public static void main(String[] args) {
        // Criar variável fracionária (double) chamada notaDoAluno e atribuir valor 5.5
        double notaDoAluno = 5.5;
        
        // Criar variável fracionária (double) chamada notaDaAluna e atribuir valor 7.5
        double notaDaAluna = 7.5;
        
        // Criar variável fracionária (double) chamada notaMinimaParaPassar e atribuir valor 6.0
        double notaMinimaParaPassar = 6.0;
        
        // Criar variável booleana chamada alunoPassou e verificar se notaDoAluno é maior ou igual que notaMinimaParaPassar
        boolean alunoPassou = notaDoAluno >= notaMinimaParaPassar;
        
        // Criar variável booleana chamada alunaPassou e verificar se notaDaAluna é maior ou igual que notaMinimaParaPassar
        boolean alunaPassou = notaDaAluna >= notaMinimaParaPassar;
        
        // Imprimir as variáveis alunoPassou e alunaPassou em linhas diferentes contendo o texto
        System.out.println("O aluno passou? " + alunoPassou);
        System.out.println("A aluna passou? " + alunaPassou);
    }
}

O aluno passou? false

A aluna passou? true

Explicação Detalhada

Vamos analisar cada parte do código:

1. Declaração e Atribuição de Notas

double notaDoAluno = 5.5;
double notaDaAluna = 7.5;
double notaMinimaParaPassar = 6.0;

Aqui, criamos três variáveis do tipo double para armazenar as notas e a nota mínima necessária para aprovação.

2. Verificação de Aprovação

boolean alunoPassou = notaDoAluno >= notaMinimaParaPassar;
boolean alunaPassou = notaDaAluna >= notaMinimaParaPassar;

Usamos o operador relacional >= (maior ou igual que) para verificar se as notas são suficientes para aprovação. O resultado dessa comparação (true ou false) é armazenado nas variáveis booleanas.

3. Impressão dos Resultados

System.out.println("O aluno passou? " + alunoPassou);
System.out.println("A aluna passou? " + alunaPassou);

Imprimimos as perguntas junto com os resultados booleanos. Como notaDoAluno (5.5) é menor que notaMinimaParaPassar (6.0), alunoPassou é false. Como notaDaAluna (7.5) é maior que notaMinimaParaPassar (6.0), alunaPassou é true.

Variações do Desafio

Podemos expandir este desafio de várias maneiras:

public class desafio1Expandido {
    public static void main(String[] args) {
        // Notas originais
        double notaDoAluno = 5.5;
        double notaDaAluna = 7.5;
        double notaMinimaParaPassar = 6.0;
        
        // Verificação de aprovação
        boolean alunoPassou = notaDoAluno >= notaMinimaParaPassar;
        boolean alunaPassou = notaDaAluna >= notaMinimaParaPassar;
        
        // Resultados originais
        System.out.println("--- Resultados Originais ---");
        System.out.println("Nota do aluno: " + notaDoAluno);
        System.out.println("Nota da aluna: " + notaDaAluna);
        System.out.println("Nota mínima para aprovação: " + notaMinimaParaPassar);
        System.out.println("O aluno passou? " + alunoPassou);
        System.out.println("A aluna passou? " + alunaPassou);
        
        // Verificando quem tirou a nota mais alta
        boolean alunoMelhorNota = notaDoAluno > notaDaAluna;
        boolean alunaMelhorNota = notaDaAluna > notaDoAluno;
        boolean notasIguais = notaDoAluno == notaDaAluna;
        
        System.out.println("\n--- Comparação de Notas ---");
        System.out.println("O aluno tirou nota maior que a aluna? " + alunoMelhorNota);
        System.out.println("A aluna tirou nota maior que o aluno? " + alunaMelhorNota);
        System.out.println("As notas são iguais? " + notasIguais);
        
        // Simulando uma prova de recuperação para o aluno
        System.out.println("\n--- Simulação de Recuperação ---");
        System.out.println("Nota original do aluno: " + notaDoAluno);
        
        // O aluno faz a recuperação e aumenta sua nota
        notaDoAluno = 6.5;
        alunoPassou = notaDoAluno >= notaMinimaParaPassar;
        
        System.out.println("Nova nota do aluno após recuperação: " + notaDoAluno);
        System.out.println("O aluno passou após a recuperação? " + alunoPassou);
    }
}

--- Resultados Originais ---

Nota do aluno: 5.5

Nota da aluna: 7.5

Nota mínima para aprovação: 6.0

O aluno passou? false

A aluna passou? true

--- Comparação de Notas ---

O aluno tirou nota maior que a aluna? false

A aluna tirou nota maior que o aluno? true

As notas são iguais? false

--- Simulação de Recuperação ---

Nota original do aluno: 5.5

Nova nota do aluno após recuperação: 6.5

O aluno passou após a recuperação? true

Usando Operador Ternário

Podemos também usar o operador ternário para mostrar uma mensagem mais amigável:

public class desafio1ComTernario {
    public static void main(String[] args) {
        double notaDoAluno = 5.5;
        double notaDaAluna = 7.5;
        double notaMinimaParaPassar = 6.0;
        
        boolean alunoPassou = notaDoAluno >= notaMinimaParaPassar;
        boolean alunaPassou = notaDaAluna >= notaMinimaParaPassar;
        
        // Imprimindo resultados com texto mais amigável usando operador ternário
        System.out.println("Nota do aluno: " + notaDoAluno);
        System.out.println("Situação do aluno: " + (alunoPassou ? "Aprovado" : "Reprovado"));
        
        System.out.println("\nNota da aluna: " + notaDaAluna);
        System.out.println("Situação da aluna: " + (alunaPassou ? "Aprovada" : "Reprovada"));
        
        // Verificando se ambos os alunos passaram (usando operador lógico AND)
        boolean todosMundoPassou = alunoPassou && alunaPassou;
        System.out.println("\nTodos os alunos passaram? " + todosMundoPassou);
        
        // Verificando se pelo menos um aluno passou (usando operador lógico OR)
        boolean peloMenosUmPassou = alunoPassou || alunaPassou;
        System.out.println("Pelo menos um aluno passou? " + peloMenosUmPassou);
    }
}

Nota do aluno: 5.5

Situação do aluno: Reprovado

Nota da aluna: 7.5

Situação da aluna: Aprovada

Todos os alunos passaram? false

Pelo menos um aluno passou? true

Dica: O operador ternário tem a forma condição ? valorSeVerdadeiro : valorSeFalso e é uma forma compacta de escrever um if-else para atribuição de valores.

Exercícios

Teste seus conhecimentos sobre o desafio e operadores relacionais:

1. Qual é o resultado da expressão notaDoAluno >= notaMinimaParaPassar no desafio original?

2. Qual operador relacional é usado no desafio para verificar se os alunos passaram?

3. Se mudarmos a nota mínima para 5.5, o aluno passará?

4. Complete o código para verificar se a nota do aluno é exatamente igual à nota mínima:

double notaDoAluno = 6.0;
double notaMinimaParaPassar = 6.0;
boolean notaExatamenteIgual = ___________________;

5. Qual expressão verificaria se nenhum dos alunos passou?

Exercícios de Aplicação AFF Education

Reforce o conteúdo desta aula com mais dois exercícios práticos:

1. Para verificar se um número n está entre 1 e 10 (inclusive), qual condição usar?

2. Qual o valor de (8 % 2 == 0) && (8 > 5)?