Prática: Fundamentos

Esta lição é a prática hands-on da Fase 1, consolidando o que você aprendeu através de 4 projetos.

Projeto 1: Tabuada de Multiplicação

Habilidades usadas: loops for, loops aninhados, saída formatada.

Requisitos

Imprima uma tabuada de multiplicação completa (1-9).

Implementação

JAVA
public class MultiplicationTable {
    public static void main(String[] args) {
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.printf("%d×%d=%-4d", j, i, i * j);
            }
            System.out.println();
        }
    }
}

Saída

TEXT
1×1=1
1×2=2   2×2=4
1×3=3   2×3=6   3×3=9
1×4=4   2×4=8   3×4=12  4×4=16
1×5=5   2×5=10  3×5=15  4×5=20  5×5=25
1×6=6   2×6=12  3×6=18  4×6=24  5×6=30  6×6=36
1×7=7   2×7=14  3×7=21  4×7=28  5×7=35  6×7=42  7×7=49
1×8=8   2×8=16  3×8=24  4×8=32  5×8=40  6×8=48  7×8=56  8×8=64
1×9=9   2×9=18  3×9=27  4×9=36  5×9=45  6×9=54  7×9=63  8×9=72  9×9=81

Conceitos-chave

Projeto 2: Bubble Sort

Habilidades usadas: arrays, loops aninhados, troca de variáveis.

Requisitos

Ordene um array em ordem crescente.

Implementação

JAVA
import java.util.Arrays;

public class BubbleSort {
    public static void main(String[] args) {
        int[] arr = {64, 34, 25, 12, 22, 11, 90};
        
        System.out.println("Antes da ordenação: " + Arrays.toString(arr));
        
        // Bubble sort
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - 1 - i; j++) {
                if (arr[j] > arr[j + 1]) {
                    // Trocar
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
        
        System.out.println("Depois da ordenação: " + Arrays.toString(arr));
    }
}

Saída

TEXT
Antes da ordenação: [64, 34, 25, 12, 22, 11, 90]
Depois da ordenação: [11, 12, 22, 25, 34, 64, 90]

Conceitos-chave

Projeto 3: Jogo de Adivinhação de Números

Habilidades usadas: Random, entrada Scanner, loops while, lógica condicional.

Requisitos

O programa gera um número aleatório entre 1-100. O usuário adivinha, e o programa responde com "muito alto," "muito baixo," ou "correto."

Implementação

JAVA
import java.util.Random;
import java.util.Scanner;

public class GuessNumber {
    public static void main(String[] args) {
        Random random = new Random();
        Scanner scanner = new Scanner(System.in);
        
        int target = random.nextInt(100) + 1;
        int guess = 0;
        int attempts = 0;
        
        System.out.println("=== Jogo de Adivinhação de Números ===");
        System.out.println("Estou pensando em um número entre 1-100. Adivinhe!");
        
        while (guess != target) {
            System.out.print("Digite seu palpite: ");
            guess = scanner.nextInt();
            attempts++;
            
            if (guess > target) {
                System.out.println("Muito alto! Tente novamente.");
            } else if (guess < target) {
                System.out.println("Muito baixo! Tente novamente.");
            } else {
                System.out.println("Parabéns! A resposta é " + target);
                System.out.println("Você adivinhou em " + attempts + " tentativas");
            }
        }
        
        scanner.close();
    }
}

Exemplo de Saída

TEXT
=== Jogo de Adivinhação de Números ===
Estou pensando em um número entre 1-100. Adivinhe!
Digite seu palpite: 50
Muito alto! Tente novamente.
Digite seu palpite: 25
Muito baixo! Tente novamente.
Digite seu palpite: 37
Muito alto! Tente novamente.
Digite seu palpite: 31
Parabéns! A resposta é 31
Você adivinhou em 4 tentativas
▶ Experimente

Conceitos-chave

Projeto 4: Calculadora Simples

Habilidades usadas: entrada Scanner, instrução switch, operações aritméticas.

Requisitos

O usuário insere dois números e um operador, e o programa calcula e exibe o resultado.

Implementação

JAVA
import java.util.Scanner;

public class Calculator {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("=== Calculadora Simples ===");
        
        System.out.print("Digite o primeiro número: ");
        double num1 = scanner.nextDouble();
        
        System.out.print("Digite o operador (+ - * /): ");
        char operator = scanner.next().charAt(0);
        
        System.out.print("Digite o segundo número: ");
        double num2 = scanner.nextDouble();
        
        double result = 0;
        boolean valid = true;
        
        switch (operator) {
            case '+':
                result = num1 + num2;
                break;
            case '-':
                result = num1 - num2;
                break;
            case '*':
                result = num1 * num2;
                break;
            case '/':
                if (num2 != 0) {
                    result = num1 / num2;
                } else {
                    System.out.println("Erro: Não é possível dividir por zero");
                    valid = false;
                }
                break;
            default:
                System.out.println("Erro: Operador não suportado '" + operator + "'");
                valid = false;
        }
        
        if (valid) {
            System.out.printf("%.2f %c %.2f = %.2f%n", num1, operator, num2, result);
        }
        
        scanner.close();
    }
}

Exemplo de Saída

TEXT
=== Calculadora Simples ===
Digite o primeiro número: 10
Digite o operador (+ - * /): *
Digite o segundo número: 5
10.00 * 5.00 = 50.00
▶ Experimente

Conceitos-chave

Prática Adicional

Exercício 1: Estatísticas de Notas

Insira 10 notas e calcule a média, a mais alta e a mais baixa.

JAVA
import java.util.Scanner;
import java.util.Arrays;

public class ScoreStats {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int[] scores = new int[10];
        
        // Inserir notas
        for (int i = 0; i < scores.length; i++) {
            System.out.print("Digite a nota " + (i + 1) + ": ");
            scores[i] = scanner.nextInt();
        }
        
        // Calcular estatísticas
        int sum = 0, max = scores[0], min = scores[0];
        for (int score : scores) {
            sum += score;
            if (score > max) max = score;
            if (score < min) min = score;
        }
        double avg = (double) sum / scores.length;
        
        // Exibir resultados
        System.out.println("\n=== Estatísticas ===");
        System.out.println("Notas: " + Arrays.toString(scores));
        System.out.printf("Média: %.1f%n", avg);
        System.out.println("Maior: " + max);
        System.out.println("Menor: " + min);
        
        scanner.close();
    }
}

❓ Perguntas Frequentes

P: E se eu não conseguir resolver o projeto? R: Comece analisando os requisitos, pense na lógica, depois consulte o código. Não apenas copie—entenda o que cada linha faz.

P: O código roda mas o resultado está errado? R: Use System.out.println() para imprimir variáveis intermediárias e verifique cada etapa do cálculo.

P: Como melhorar minhas habilidades de programação? R: Pratique mais. Comece com projetos simples e aumente gradualmente a dificuldade.

📖 Resumo

📝 Exercícios

  1. Melhorar a calculadora: Adicione operação de módulo e suporte para cálculos contínuos
  2. Operações com array: Insira 10 números e encontre os números primos entre eles
  3. Melhorar o jogo de adivinhação: Limite as tentativas para 7 e mostre o histórico de palpites

Próxima Lição

Na próxima lição, passaremos para a Fase 2 e aprenderemos sobre Fundamentos de Métodos — como definir e usar métodos.

100%