☕ Exercícios Resolvidos com Funções em Java

Este documento apresenta uma série de problemas práticos e suas soluções em Java, com foco na criação e utilização de funções (métodos). Cada exercício foi projetado para reforçar conceitos como modularidade, reutilização de código e a diferença entre funções que retornam valores e procedimentos (void).

Atenção: Nos exemplos de execução, os dados em vermelho representam os valores digitados pelo usuário no console.

1. Problema “temperatura”

Descrição: Fazer um programa que solicite uma temperatura em Fahrenheit e mostre a conversão para Celsius. A fórmula é: \(C = \frac{5}{9}(F - 32)\)

Solução em Java

package exercicios;

import java.util.Locale;
import java.util.Scanner;

public class Temperatura {

    /**
     * Converte uma temperatura de Fahrenheit para Celsius.
     * @param f A temperatura em Fahrenheit.
     * @return A temperatura equivalente em Celsius.
     */
    public static double fahrenheitParaCelsius(double f) {
        // É crucial usar 5.0/9.0 para garantir a divisão de ponto flutuante.
        return 5.0 / 9.0 * (f - 32.0);
    }

    public static void main(String[] args) {
        Locale.setDefault(Locale.US);
        Scanner sc = new Scanner(System.in);

        System.out.print("Digite a temperatura em Fahrenheit: ");
        double fahrenheit = sc.nextDouble();

        double celsius = fahrenheitParaCelsius(fahrenheit);

        System.out.printf("Temperatura em Celsius = %.2f
", celsius);

        sc.close();
    }
}

Exemplo de Execução

Digite a temperatura em Fahrenheit: 75.0
Temperatura em Celsius = 23.89

2. Problema “retangulo”

Descrição: Fazer um programa para ler a base e a altura de um retângulo. Em seguida, usando funções, mostrar os valores da área, do perímetro e da diagonal.

Solução em Java

package exercicios;

import java.util.Locale;
import java.util.Scanner;

public class Retangulo {

    public static double calcularArea(double base, double altura) {
        return base * altura;
    }

    public static double calcularPerimetro(double base, double altura) {
        return 2 * (base + altura);
    }

    public static double calcularDiagonal(double base, double altura) {
        return Math.sqrt(Math.pow(base, 2.0) + Math.pow(altura, 2.0));
    }

    public static void main(String[] args) {
        Locale.setDefault(Locale.US);
        Scanner sc = new Scanner(System.in);

        System.out.print("Digite o valor da base do retângulo: ");
        double base = sc.nextDouble();
        System.out.print("Digite o valor da altura do retângulo: ");
        double altura = sc.nextDouble();

        double area = calcularArea(base, altura);
        double perimetro = calcularPerimetro(base, altura);
        double diagonal = calcularDiagonal(base, altura);

        System.out.printf("Área = %.2f
", area);
        System.out.printf("Perímetro = %.2f
", perimetro);
        System.out.printf("Diagonal = %.2f
", diagonal);

        sc.close();
    }
}

Exemplo de Execução

Digite o valor da base do retângulo: 3.0
Digite o valor da altura do retângulo: 4.0
Área = 12.00
Perímetro = 14.00
Diagonal = 5.00

3. Problema “tabuada”

Descrição: Fazer um programa para imprimir a tabuada de multiplicação (de 1 a 10) de um número N fornecido pelo usuário, usando um procedimento (void).

Solução em Java

package exercicios;

import java.util.Scanner;

public class Tabuada {

    /**
     * Exibe na tela a tabuada de multiplicação de 1 a 10 para um dado número.
     * @param n O número para o qual a tabuada será gerada.
     */
    public static void mostrarTabuada(int n) {
        for (int i = 1; i <= 10; i++) {
            System.out.printf("%d x %d = %d
", n, i, n * i);
        }
    }

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

        System.out.print("Você quer a tabuada de qual número? ");
        int numero = sc.nextInt();
        
        mostrarTabuada(numero);

        sc.close();
    }
}

Exemplo de Execução

Você quer a tabuada de qual número? 7
7 x 1 = 7
7 x 2 = 14
7 x 3 = 21
7 x 4 = 28
7 x 5 = 35
7 x 6 = 42
7 x 7 = 49
7 x 8 = 56
7 x 9 = 63
7 x 10 = 70

4. Problema “classificar_imc”

Descrição: Fazer um programa para ler o peso e altura de uma pessoa. Primeiro, calcular o IMC (\(IMC = \frac{Peso}{Altura^2}\)). Depois, classificar o resultado de acordo com a tabela:

Solução em Java

package exercicios;

import java.util.Locale;
import java.util.Scanner;

public class ClassificarImc {

    /**
     * Calcula o Índice de Massa Corporal (IMC).
     * @param peso O peso da pessoa em kg.
     * @param altura A altura da pessoa em metros.
     * @return O valor do IMC.
     */
    public static double calcularImc(double peso, double altura) {
        return peso / Math.pow(altura, 2.0);
    }

    /**
     * Exibe a classificação do IMC de acordo com as faixas de referência.
     * @param imc O valor do IMC a ser classificado.
     */
    public static void classificar(double imc) {
        String classificacao;
        if (imc < 20.0) {
            classificacao = "abaixo do peso";
        } else if (imc < 25.0) {
            classificacao = "peso normal";
        } else if (imc < 30.0) {
            classificacao = "sobrepeso";
        } else {
            classificacao = "obeso";
        }
        System.out.println("Classificação: " + classificacao);
    }

    public static void main(String[] args) {
        Locale.setDefault(Locale.US);
        Scanner sc = new Scanner(System.in);

        System.out.print("Digite o peso: ");
        double peso = sc.nextDouble();
        System.out.print("Digite a altura: ");
        double altura = sc.nextDouble();

        double imc = calcularImc(peso, altura);
        
        System.out.printf("Resultado do IMC: %.2f
", imc);
        classificar(imc);

        sc.close();
    }
}

Exemplo de Execução

Digite o peso: 83.5
Digite a altura: 1.86
Resultado do IMC: 24.16
Classificação: peso normal

5. Problema “salario_liquido”

Descrição: Fazer um programa que informa o salário líquido a partir do salário bruto, descontando imposto e previdência com base em faixas de valores.

Solução em Java

package exercicios;

import java.util.Locale;
import java.util.Scanner;

public class SalarioLiquido {

    /**
     * Calcula o valor do imposto com base no salário bruto.
     * @param quantia O valor do salário bruto.
     * @return O valor do imposto a ser pago.
     */
    public static double imposto(double quantia) {
        if (quantia <= 4000.00) {
            return quantia * 0.20;
        } else {
            return quantia * 0.25;
        }
    }

    /**
     * Calcula o valor da previdência com base no salário bruto.
     * @param quantia O valor do salário bruto.
     * @return O valor do desconto da previdência.
     */
    public static double previdencia(double quantia) {
        if (quantia <= 1500.00) {
            return quantia * 0.10;
        } else {
            return quantia * 0.15;
        }
    }

    /**
     * Calcula o salário líquido.
     * @param quantia O valor do salário bruto.
     * @return O valor do salário líquido.
     */
    public static double calcularSalarioLiquido(double quantia) {
        double impostoPago = imposto(quantia);
        double previdenciaPaga = previdencia(quantia);
        return quantia - impostoPago - previdenciaPaga;
    }

    public static void main(String[] args) {
        Locale.setDefault(Locale.US);
        Scanner sc = new Scanner(System.in);

        System.out.print("Digite o valor do salário bruto: ");
        double salarioBruto = sc.nextDouble();

        double liquido = calcularSalarioLiquido(salarioBruto);

        System.out.printf("Salário líquido = R$ %.2f
", liquido);

        sc.close();
    }
}

Exemplo de Execução

Digite o valor do salário bruto: 5000.00
Salário líquido = R$ 3000.00