Fundamentos de Programação em Java

Parte 1: Conceitos Básicos

Uma introdução aos conceitos fundamentais de programação em Java

1

Introdução ao Java

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}
2

Tipos de Dados em Java

Java é uma linguagem fortemente tipada, o que significa que todas as variáveis devem ter um tipo declarado.

Duas categorias principais:

3

Tipos de Dados Primitivos

Tipo Tamanho Faixa de Valores Exemplo
byte 8 bits -128 a 127 byte idade = 25;
short 16 bits -32,768 a 32,767 short codigo = 1234;
int 32 bits -2³¹ a 2³¹-1 int contador = 10000;
long 64 bits -2⁶³ a 2⁶³-1 long populacao = 7500000000L;
4

Tipos de Dados Primitivos (Continuação)

Tipo Tamanho Descrição Exemplo
float 32 bits Ponto flutuante de precisão simples float altura = 1.75f;
double 64 bits Ponto flutuante de precisão dupla double pi = 3.14159265359;
char 16 bits Um único caractere Unicode char letra = 'A';
boolean 1 bit true ou false boolean ativo = true;
5

Tipos de Referência

Armazenam referências para objetos na memória (endereços).

// Exemplos de tipos por referência
String nome = "Java";
int[] numeros = {1, 2, 3, 4, 5};
ArrayList<String> lista = new ArrayList<String>();
Scanner scanner = new Scanner(System.in);
6

Declaração de Variáveis em Java

Sintaxe básica:

tipo nomeVariavel = valor;

Exemplos:

// Declaração com inicialização
int idade = 25;
double salario = 3500.50;
String nome = "Maria";

// Declaração sem inicialização
int contador;
contador = 0; // Inicialização posterior

// Múltiplas variáveis do mesmo tipo
int x = 10, y = 20, z = 30;
7

Estruturas de Decisão

Permitem que o programa execute diferentes blocos de código baseados em condições.

Principais estruturas de decisão em Java:

8

Estrutura if / else if / else

Executa blocos de código com base em condições booleanas.

int idade = 18;

if (idade < 12) {
    System.out.println("Criança");
} else if (idade < 18) {
    System.out.println("Adolescente");
} else if (idade < 60) {
    System.out.println("Adulto");
} else {
    System.out.println("Idoso");
}

if simples

boolean temPermissao = true;

if (temPermissao) {
    System.out.println("Acesso permitido");
}
9

Operadores de Comparação e Lógicos

Operador Descrição Exemplo
== Igual a if (a == b)
!= Diferente de if (a != b)
>, < Maior que, Menor que if (idade > 18)
>=, <= Maior ou igual, Menor ou igual if (nota >= 7.0)
&& E lógico if (idade >= 18 && temCNH)
|| OU lógico if (eFeriado || eFimDeSemana)
! NÃO lógico if (!estaBloqueado)
10

Estrutura switch-case

Avalia uma expressão e executa o bloco de código correspondente ao valor.

int dia = 3;
String nomeDia;

switch (dia) {
    case 1:
        nomeDia = "Domingo";
        break;
    case 2:
        nomeDia = "Segunda-feira";
        break;
    case 3:
        nomeDia = "Terça-feira";
        break;
    // ... outros casos
    default:
        nomeDia = "Dia inválido";
        break;
}
11

Operador Ternário

Uma forma concisa de expressar uma decisão simples if-else em uma única linha.

Sintaxe:

variavel = (condição) ? valor_se_verdadeiro : valor_se_falso;

Exemplos:

// Exemplo 1: Determinar o maior entre dois números
int a = 10;
int b = 20;
int maior = (a > b) ? a : b; // maior = 20

// Exemplo 2: Verificar se passou ou falhou
double nota = 6.5;
String resultado = (nota >= 7.0) ? "Aprovado" : "Reprovado"; // resultado = "Reprovado"

// Equivalente a:
String resultado;
if (nota >= 7.0) {
    resultado = "Aprovado";
} else {
    resultado = "Reprovado";
}
12

Estruturas de Repetição

Permitem executar um bloco de código repetidamente com base em uma condição.

Principais estruturas de repetição em Java:

13

Loop For

Utilizado quando sabemos o número de iterações que queremos executar.

Sintaxe:

for (inicialização; condição; incremento) {
    // bloco de código a ser executado
}

Exemplos:

// Contando de 1 a 5
for (int i = 1; i <= 5; i++) {
    System.out.println("Número: " + i);
}

// Contagem regressiva
for (int i = 10; i >= 0; i--) {
    System.out.println("Contagem: " + i);
}

// Percorrendo array
int[] numeros = {1, 2, 3, 4, 5};
for (int i = 0; i < numeros.length; i++) {
    System.out.println("Índice " + i + ": " + numeros[i]);
}
14

Loop While

Executa um bloco de código enquanto uma condição específica for verdadeira.

Sintaxe:

while (condição) {
    // bloco de código a ser executado
}

Exemplos:

// Contando de 1 a 5
int contador = 1;
while (contador <= 5) {
    System.out.println("Contador: " + contador);
    contador++;
}

// Lendo entrada até encontrar um valor específico
Scanner scanner = new Scanner(System.in);
String entrada = "";
while (!entrada.equals("sair")) {
    System.out.print("Digite algo (ou 'sair' para encerrar): ");
    entrada = scanner.nextLine();
    System.out.println("Você digitou: " + entrada);
}
15

Loop Do-While

Similar ao while, mas garante que o bloco de código será executado pelo menos uma vez.

Sintaxe:

do {
    // bloco de código a ser executado
} while (condição);

Exemplo:

// Menu de opções
Scanner scanner = new Scanner(System.in);
int opcao;

do {
    System.out.println("\nMenu:");
    System.out.println("1. Ver saldo");
    System.out.println("2. Fazer depósito");
    System.out.println("3. Fazer saque");
    System.out.println("0. Sair");
    System.out.print("Escolha uma opção: ");
    opcao = scanner.nextInt();

    // Processamento da opção escolhida
    switch (opcao) {
        case 1: System.out.println("Seu saldo: R$ 1000,00"); break;
        case 2: System.out.println("Depósito realizado"); break;
        case 3: System.out.println("Saque realizado"); break;
        case 0: System.out.println("Saindo..."); break;
        default: System.out.println("Opção inválida!"); break;
    }
} while (opcao != 0);
16

Loop For-Each (Enhanced For)

Simplifica a iteração sobre arrays e coleções.

Sintaxe:

for (tipo elemento : coleção) {
    // bloco de código a ser executado
}

Exemplos:

// Percorrendo um array
String[] frutas = {"Maçã", "Banana", "Laranja", "Uva", "Morango"};
for (String fruta : frutas) {
    System.out.println("Fruta: " + fruta);
}

// Percorrendo uma ArrayList
ArrayList<Integer> numeros = new ArrayList<>();
numeros.add(10);
numeros.add(20);
numeros.add(30);

for (Integer numero : numeros) {
    System.out.println("Número: " + numero);
}
17

Controle de Fluxo em Loops

Instruções especiais para controlar o fluxo dentro de loops.

Instrução Descrição
break Sai completamente do loop
continue Pula para a próxima iteração do loop
// Usando break
for (int i = 1; i <= 10; i++) {
    if (i == 5) {
        System.out.println("Encontrei o 5, parando o loop!");
        break; // Sai do loop completamente
    }
    System.out.println("Número: " + i);
}

// Usando continue
for (int i = 1; i <= 10; i++) {
    if (i % 2 == 0) {
        continue; // Pula para a próxima iteração
    }
    System.out.println("Número ímpar: " + i);
}
18

Loops Aninhados

Um loop dentro de outro loop, útil para trabalhar com estruturas bidimensionais.

// Tabela de multiplicação
for (int i = 1; i <= 5; i++) {
    for (int j = 1; j <= 5; j++) {
        System.out.print(i * j + "\t");
    }
    System.out.println(); // Nova linha após cada linha da tabela
}

// Manipulando uma matriz (array bidimensional)
int[][] matriz = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};

// Percorrendo e exibindo a matriz
for (int i = 0; i < matriz.length; i++) {
    for (int j = 0; j < matriz[i].length; j++) {
        System.out.print(matriz[i][j] + "\t");
    }
    System.out.println();
}
19