Fundamentos de Programação em Java

Parte 2: Aplicações Práticas

Implementando os conceitos básicos em exemplos concretos

1

Aplicação Prática 1: Verificação de Números Primos

Programa para verificar se um número é primo:

public static boolean isPrimo(int numero) {
    if (numero <= 1) {
        return false;
    }

    if (numero == 2) {
        return true;
    }

    if (numero % 2 == 0) {
        return false;
    }

    for (int i = 3; i <= Math.sqrt(numero); i += 2) {
        if (numero % i == 0) {
            return false;
        }
    }

    return true;
}

Usando o método:

public static void main(String[] args) {
    System.out.println("Números primos de 1 a 20:");
    for (int i = 1; i <= 20; i++) {
        if (isPrimo(i)) {
            System.out.print(i + " ");
        }
    }
    // Saída: 2 3 5 7 11 13 17 19
}
2

Análise do Algoritmo de Números Primos

Otimizações implementadas:

  1. Verificação rápida para 1 e 2: Casos especiais tratados imediatamente
  2. Exclusão de números pares: Apenas 2 é primo entre os pares
  3. Limite de busca otimizado: Verificar apenas até a raiz quadrada do número
  4. Incremento de 2: Verificar apenas divisores ímpares (exceto o 2)

Este algoritmo é eficiente para verificar números de tamanho moderado, mas pode ser ainda mais otimizado para números muito grandes com o teste de Miller-Rabin ou outros algoritmos probabilísticos.

3

Aplicação Prática 2: Calculadora Simples

Esta implementação demonstra o uso de loops, estruturas condicionais e interação com o usuário.

import java.util.Scanner;

public class Calculadora {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double num1, num2, resultado = 0;
        char operacao;
        boolean continuar = true;

        while (continuar) {
            System.out.println("\n==== CALCULADORA SIMPLES ====");
            System.out.print("Digite o primeiro número: ");
            num1 = scanner.nextDouble();

            System.out.print("Digite a operação (+, -, *, /): ");
            operacao = scanner.next().charAt(0);

            System.out.print("Digite o segundo número: ");
            num2 = scanner.nextDouble();             switch (operacao) {
                case '+':
                    resultado = num1 + num2;
                    break;
                case '-':
                    resultado = num1 - num2;
                    break;
                case '*':
                    resultado = num1 * num2;
                    break;
                case '/':
                    if (num2 != 0) {
                        resultado = num1 / num2;
                    } else {
                        System.out.println("Erro: Divisão por zero!");
                        continue;
                    }
                    break;
                default:
                    System.out.println("Operação inválida!");
                    continue;
            }

            System.out.println("Resultado: " + num1 + " " + operacao + " " + num2 + " = " + resultado);

            System.out.print("Deseja continuar? (S/N): ");
            char escolha = scanner.next().toUpperCase().charAt(0);
            continuar = (escolha == 'S');
        }

        System.out.println("Calculadora encerrada. Obrigado!");
        scanner.close();
    }
}
4

Análise da Calculadora

Conceitos demonstrados:

Possíveis melhorias:

5

Aplicação Prática 3: Sistema de Notas

Programa para calcular médias e situação de alunos:

import java.util.Scanner;

public class SistemaNotas {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("Quantos alunos deseja cadastrar? ");
        int numAlunos = scanner.nextInt();
        scanner.nextLine(); // Limpar buffer

        String[] nomes = new String[numAlunos];
        double[] medias = new double[numAlunos];
        String[] situacoes = new String[numAlunos];

        // Coleta de dados
        for (int i = 0; i < numAlunos; i++) {
            System.out.println("\nAluno " + (i+1) + ":");
            System.out.print("Nome: ");
            nomes[i] = scanner.nextLine();

            double somaNotas = 0;
            for (int j = 1; j <= 3; j++) {
                System.out.print("Nota " + j + ": ");
                double nota = scanner.nextDouble();
                somaNotas += nota;
            }
            scanner.nextLine(); // Limpar buffer

            // Calcula média
            medias[i] = somaNotas / 3;

            // Determina situação
            if (medias[i] >= 7) {
                situacoes[i] = "Aprovado";
            } else if (medias[i] >= 5) {
                situacoes[i] = "Recuperação";
            } else {
                situacoes[i] = "Reprovado";
            }
        }
        // Exibição dos resultados
        System.out.println("\n==== RELATÓRIO DE NOTAS ====");
        System.out.println("Nome\t\tMédia\t\tSituação");
        System.out.println("----------------------------------------");

        for (int i = a < numAlunos; i++) {
            System.out.printf("%-15s%.2f\t\t%s%n",
                nomes[i], medias[i], situacoes[i]);
        }

        // Estatísticas
        int aprovados = 0, recuperacao = 0, reprovados = 0;
        double somaMedias = 0;

        for (int i = 0; i < numAlunos; i++) {
            somaMedias += medias[i];
            if (situacoes[i].equals("Aprovado")) {
                aprovados++;
            } else if (situacoes[i].equals("Recuperação")) {
                recuperacao++;
            } else {
                reprovados++;
            }
        }

        double mediaGeral = somaMedias / numAlunos;

        System.out.println("\n==== ESTATÍSTICAS ====");
        System.out.printf("Média geral da turma: %.2f%n", mediaGeral);
        System.out.println("Aprovados: " + aprovados +
            " (" + (aprovados * 100 / numAlunos) + "%)");
        System.out.println("Em Recuperação: " + recuperacao +
            " (" + (recuperacao * 100 / numAlunos) + "%)");
        System.out.println("Reprovados: " + reprovados +
            " (" + (reprovados * 100 / numAlunos) + "%)");

        scanner.close();
    }
}
6

Análise do Sistema de Notas

Conceitos demonstrados:

O que você aprendeu com este exemplo:

8