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
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
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
- Loops for aninhados
System.out.printf()para saída formatada%-4dsignifica alinhado à esquerda, ocupando 4 caracteres
Projeto 2: Bubble Sort
Habilidades usadas: arrays, loops aninhados, troca de variáveis.
Requisitos
Ordene um array em ordem crescente.
Implementação
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
Antes da ordenação: [64, 34, 25, 12, 22, 11, 90]
Depois da ordenação: [11, 12, 22, 25, 34, 64, 90]
Conceitos-chave
- Travessia de array e troca de elementos
- Controle de loops aninhados
Arrays.toString()para imprimir arrays
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
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
=== 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
Conceitos-chave
Random.nextInt()para gerar números aleatóriosScanner.nextInt()para obter entrada do usuário- Loop while para adivinhações repetidas
- if-else if-else para múltiplas condições
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
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
=== Calculadora Simples ===
Digite o primeiro número: 10
Digite o operador (+ - * /): *
Digite o segundo número: 5
10.00 * 5.00 = 50.00
Conceitos-chave
scanner.next().charAt(0)para ler um único caractere- Instrução switch para múltiplas operações
System.out.printf()para saída formatada- Verificação de divisão por zero
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.
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
- Tabuada de multiplicação: loops aninhados + saída formatada
- Bubble sort: arrays + loops aninhados + troca de elementos
- Jogo de adivinhação: Random + Scanner + loop while
- Calculadora simples: Scanner + switch + operações aritméticas
📝 Exercícios
- Melhorar a calculadora: Adicione operação de módulo e suporte para cálculos contínuos
- Operações com array: Insira 10 números e encontre os números primos entre eles
- 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.



