AFF Education Construa seu Futuro

Aula 16 - Operação de Resto da Divisão (%)

Operação de resto da divisão (%)

A operação de resto da divisão, também conhecida como operação módulo, é uma operação matemática que retorna o resto da divisão de um número por outro. O operador de resto é %

Na matemática, quando dividimos um número por outro, geralmente obtemos um quociente e, possivelmente, um resto. O operador % em Java retorna apenas o resto dessa divisão.

Por exemplo, quando dividimos 17 por 5:

Em Java, escrevemos:

a % b = r, onde r é o resto quando a é dividido por b

Exemplos básicos

public class ExemplosResto {
    public static void main(String[] args) {
        // Exemplos básicos de operações de resto
        
        int a = 17;
        int b = 5;
        int resto = a % b;
        
        System.out.println(a + " dividido por " + b + " tem resto " + resto);
        
        // Mais exemplos
        System.out.println("10 % 3 = " + (10 % 3));   // Resultado: 1
        System.out.println("15 % 4 = " + (15 % 4));   // Resultado: 3
        System.out.println("25 % 5 = " + (25 % 5));   // Resultado: 0 (divisão exata)
        System.out.println("7 % 10 = " + (7 % 10));   // Resultado: 7 (quando o dividendo é menor, o resto é o próprio dividendo)
        
        // Também funciona com números decimais, mas é menos comum
        System.out.println("10.5 % 3.2 = " + (10.5 % 3.2));  // Resultado: 0.8999999999999995
    }
}

17 dividido por 5 tem resto 2

10 % 3 = 1

15 % 4 = 3

25 % 5 = 0

7 % 10 = 7

10.5 % 3.2 = 0.8999999999999995

Operação de resto da divisão (%) e número par/ìmpar

A operação de resto da divisão pode ser usada para se determinar se um número é par ou ímpar.

Se um número dividido por 2, tem resto 0, então é par. Se o resto da divisão for 1, é impar.

public class ParImpar {
    public static void main(String[] args) {
        // Verificando se um número é par ou ímpar
        
        int numero1 = 10;
        int numero2 = 15;
        int numero3 = 22;
        int numero4 = 33;
        
        // Calculando o resto da divisão por 2
        int resto1 = numero1 % 2;
        int resto2 = numero2 % 2;
        int resto3 = numero3 % 2;
        int resto4 = numero4 % 2;
        
        // Verificando os resultados
        System.out.println(numero1 + " % 2 = " + resto1 + " - " + (resto1 == 0 ? "Par" : "Ímpar"));
        System.out.println(numero2 + " % 2 = " + resto2 + " - " + (resto2 == 0 ? "Par" : "Ímpar"));
        System.out.println(numero3 + " % 2 = " + resto3 + " - " + (resto3 == 0 ? "Par" : "Ímpar"));
        System.out.println(numero4 + " % 2 = " + resto4 + " - " + (resto4 == 0 ? "Par" : "Ímpar"));
        
        // Usando o resultado diretamente em uma condição
        int novoNumero = 27;
        
        if (novoNumero % 2 == 0) {
            System.out.println("\n" + novoNumero + " é par");
        } else {
            System.out.println("\n" + novoNumero + " é ímpar");
        }
    }
}

10 % 2 = 0 - Par

15 % 2 = 1 - Ímpar

22 % 2 = 0 - Par

33 % 2 = 1 - Ímpar

27 é ímpar

Dica: O operador % é muito útil para verificar divisibilidade. Se a % b == 0, significa que a é divisível por b sem deixar resto.

Aplicações do operador resto

Verificação de números pares/ímpares

// Verifica se é par
if (numero % 2 == 0) {
    // é par
} else {
    // é ímpar
}

Verificar divisibilidade

// Verifica se é divisível por 3
if (numero % 3 == 0) {
    // é divisível por 3
}

Rotação cíclica

// Para fazer algo a cada 5 iterações
if (contador % 5 == 0) {
    // ação a cada 5 iterações
}

Criar padrões alternados

// Alterna entre dois valores
int valor = (indice % 2 == 0) ? valor1 : valor2;

Exemplo prático: conversão de segundos

O operador % também é útil para converter unidades de tempo, como segundos para horas, minutos e segundos.

public class ConversorTempo {
    public static void main(String[] args) {
        // Total de segundos
        int totalSegundos = 3945;  // 1 hora, 5 minutos e 45 segundos
        
        // Calculando horas, minutos e segundos
        int horas = totalSegundos / 3600;        // 1 hora
        int restoHoras = totalSegundos % 3600;   // 345 segundos restantes
        
        int minutos = restoHoras / 60;           // 5 minutos
        int segundos = restoHoras % 60;          // 45 segundos restantes
        
        // Exibindo o resultado
        System.out.println(totalSegundos + " segundos equivalem a:");
        System.out.println(horas + " hora(s), " + minutos + " minuto(s) e " + segundos + " segundo(s)");
        
        // Método alternativo (mais direto)
        int h = totalSegundos / 3600;
        int m = (totalSegundos % 3600) / 60;
        int s = totalSegundos % 60;
        
        System.out.println("\nUsando método alternativo:");
        System.out.println(h + " hora(s), " + m + " minuto(s) e " + s + " segundo(s)");
    }
}

3945 segundos equivalem a:

1 hora(s), 5 minuto(s) e 45 segundo(s)

Usando método alternativo:

1 hora(s), 5 minuto(s) e 45 segundo(s)

Exercícios

Teste seus conhecimentos sobre operação de resto da divisão:

1. Qual é o resultado da expressão 15 % 4?

2. Qual seria o código correto para verificar se um número é divisível por 5?

3. O que é o operador % em Java?

4. Qual será o resultado da expressão 10 % 20?

5. Complete o código para verificar se o número é ímpar:

public class VerificacaoImpar {
    public static void main(String[] args) {
        int numero = 27;
        boolean ehImpar = _________________;
        
        System.out.println(numero + " é ímpar? " + ehImpar);
    }
}

Exercícios de Aplicação AFF Education

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

1. Para descobrir se um número n é par, qual expressão usar?

2. Qual o resultado de 23 % 10?