# Estruturas de Decisão e Seleção

A estrutura de seleção é um dos conceitos fundamentais na programação, pois permite que um programa tome decisões com base em condições específicas. Em Java, as principais estruturas de seleção são:

* **if**
* **if-else**
* **if-else if-else**
* **switch**

Vamos explorar cada uma delas com exemplos práticos.

***

#### **1. Estrutura `if`**

A estrutura `if` executa um bloco de código se a condição especificada for verdadeira.

{% code lineNumbers="true" fullWidth="false" %}

```java
public class EstruturaIf {
    public static void main(String[] args) {
        int idade = 18;

        if (idade >= 18) {
            System.out.println("Você é maior de idade.");
        }
    }
}
```

{% endcode %}

**Saída:**

```
Você é maior de idade.
```

Se a condição for falsa, o bloco de código dentro do `if` não será executado.

***

#### **2. Estrutura `if-else`**

O `if-else` permite definir uma ação para quando a condição for falsa.

{% code lineNumbers="true" %}

```java
public class EstruturaIfElse {
    public static void main(String[] args) {
        int idade = 16;

        if (idade >= 18) {
            System.out.println("Você é maior de idade.");
        } else {
            System.out.println("Você é menor de idade.");
        }
    }
}
```

{% endcode %}

**Saída:**

```
Você é menor de idade.
```

***

#### **3. Estrutura `if-else if-else`**

Essa estrutura permite testar múltiplas condições.

{% code lineNumbers="true" %}

```java
public class EstruturaIfElseIf {
    public static void main(String[] args) {
        int nota = 85;

        if (nota >= 90) {
            System.out.println("Nota A");
        } else if (nota >= 80) {
            System.out.println("Nota B");
        } else if (nota >= 70) {
            System.out.println("Nota C");
        } else {
            System.out.println("Nota D");
        }
    }
}
```

{% endcode %}

**Saída:**

```
Nota B
```

***

#### **4. Estrutura `switch`**

O `switch` é uma alternativa ao `if-else if-else` quando há múltiplas opções a serem verificadas.

{% code lineNumbers="true" %}

```java
public class EstruturaSwitch {
    public static void main(String[] args) {
        int opcao = 2;

        switch (opcao) {
            case 1:
                System.out.println("Opção 1 selecionada.");
                break;
            case 2:
                System.out.println("Opção 2 selecionada.");
                break;
            case 3:
                System.out.println("Opção 3 selecionada.");
                break;
            default:
                System.out.println("Opção inválida.");
        }
    }
}
```

{% endcode %}

**Saída:**

```
Opção 2 selecionada.
```

O `break` é necessário para evitar que os outros casos sejam executados. Se o `break` for omitido, o código continuará executando os próximos blocos.

***

As estruturas de seleção são essenciais para o controle de fluxo dos programas. Saber quando usar `if`, `if-else`, `if-else if-else` e `switch` é crucial para escrever código limpo e eficiente.

💡 **Dica:** Prefira `if-else if-else` quando precisar lidar com intervalos de valores e `switch` quando houver múltiplas opções exatas.

Slides Utilizados na Aula

{% embed url="<https://docs.google.com/presentation/d/19irxJ5s2pZbq1RoL7G5FjDApYBVEDaZmmDgk33TroZM/edit?usp=sharing>" %}

{% file src="/files/J6N0ecRBo9tTBHLji6Sc" %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://otavianosilverio.gitbook.io/programacao/estruturas-de-decisao-e-selecao.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
