{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "S1tTxhT7d2IR"
      },
      "source": [
        "# Aula 03 - Estruturas de Repetição e Boas Práticas de Programação\n",
        "## **Avançando na Lógica: Estruturas condicionais e de repetição**"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "etqOZVrDd5AY"
      },
      "source": [
        "## 1. Indentação\n",
        "\n",
        "**Indentação** é um recuo no texto (tab ou dois espaços) que serve para ressaltar e, em muitas linguagens como Python, **definir a estrutura do algoritmo**.\n",
        "\n",
        "Em Python, a indentação é obrigatória para definir blocos de código."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "DCHoZ5PwiSlU"
      },
      "outputs": [],
      "source": [
        "# Exemplo correto de indentação\n",
        "if True:\n",
        "    print(\"Este bloco está indentado corretamente\")\n",
        "    print(\"Tudo aqui dentro faz parte do if\")\n",
        "print(\"Este print está fora do bloco if\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "s6W6PsN5e01Q"
      },
      "source": [
        "## 2. Comando `input()`\n",
        "\n",
        "O comando `input()` **pede para o usuário digitar alguma informação** durante a execução do programa."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "RYLxHFmqe0b_"
      },
      "outputs": [],
      "source": [
        "# Exemplo com input\n",
        "teste = input(\"sim ou não? \")\n",
        "if teste == \"sim\":\n",
        "    print(\"Olá Mundo\")\n",
        "else:\n",
        "    print(\"Olá Brasil\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "-TlRMpEEjygB"
      },
      "source": [
        "## 3. Loop For (Para)\n",
        "\n",
        "O `for` é uma estrutura de repetição utilizada para **iterar sobre sequências** ou executar um bloco de código **um número determinado de vezes**.\n",
        "\n",
        "### Sintaxe básica:\n",
        "```python\n",
        "for variável in sequência:\n",
        "    # bloco de código"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "iO4IUfwZj9Na"
      },
      "outputs": [],
      "source": [
        "# Exemplo básico: percorrendo uma lista\n",
        "frutas = [\"maçã\", \"banana\", \"laranja\", \"uva\"]\n",
        "\n",
        "for fruta in frutas:\n",
        "    print(f\"Eu gosto de {fruta}\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "QPEKsfOckJ6A"
      },
      "source": [
        "## 4. Função range()\n",
        "\n",
        "A função `range()` gera uma sequência de números e é muito usada com o `for`.\n",
        "\n",
        "### Formas de usar range():\n",
        "- `range(stop)` - números de 0 até stop-1\n",
        "- `range(start, stop)` - números de start até stop-1\n",
        "- `range(start, stop, step)` - números de start até stop-1, pulando de step em step"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "ta2yZ6AHkNgZ"
      },
      "outputs": [],
      "source": [
        "# range com um argumento (stop)\n",
        "print(\"range(5):\", end=\" \")\n",
        "for i in range(5):\n",
        "    print(i, end=\" \")"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "ncTaXOZBkQN4"
      },
      "outputs": [],
      "source": [
        "# range com dois argumentos (start, stop)\n",
        "print(\"range(2, 7):\", end=\" \")\n",
        "for i in range(2, 7):\n",
        "    print(i, end=\" \")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "pGX5gsHHe6y_"
      },
      "source": [
        "## 4. Loop while (enquanto)\n",
        "\n",
        "O comando `while` cria **loops de repetição**. Os comandos dentro do while se repetem **até que a expressão lógica seja falsa**."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "XzHTmyRMjbQI"
      },
      "source": [
        "### Comandos importantes em loops:\n",
        "- **break**: interrompe o loop\n",
        "- **continue**: pula para a próxima iteração\n",
        "- **pass**: não faz nada"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "fE-jQYn1e9Dv"
      },
      "outputs": [],
      "source": [
        "# Exemplo básico de while\n",
        "contador = 0\n",
        "while contador < 3:\n",
        "    print(f\"Volta número {contador + 1}\")\n",
        "    contador += 1"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "k3DgtgMHjtRZ"
      },
      "outputs": [],
      "source": [
        "# Exemplo com break e continue\n",
        "print(\"Exemplo com break e continue:\")\n",
        "\n",
        "for i in range(1, 6):\n",
        "    if i == 3:\n",
        "        print(\"  Pulei o 3 (continue)\")\n",
        "        continue\n",
        "    if i == 5:\n",
        "        print(\"  Parei no 5 (break)\")\n",
        "        break\n",
        "    print(f\"  Número: {i}\")"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "xyQWY_PnfAlP",
        "outputId": "238331eb-675b-471a-f9ed-437ea100deac"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "sim ou não? sim\n",
            "Olá Mundo\n",
            "Continua? sim\n",
            "Olá Mundo\n",
            "Continua? sim\n",
            "Olá Mundo\n",
            "Continua? não\n",
            "Loop encerrado!\n"
          ]
        }
      ],
      "source": [
        "# Exemplo interativo com while\n",
        "teste = input(\"sim ou não? \")\n",
        "while teste == \"sim\":\n",
        "    print(\"Olá Mundo\")\n",
        "    teste = input(\"Continua? \")\n",
        "print(\"Loop encerrado!\")"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "54vMwwZWfJrR"
      },
      "outputs": [],
      "source": [
        "# Exemplo mais elaborado com while\n",
        "acampado = input(\"Participa? (sim/não) \")\n",
        "\n",
        "while acampado == \"não\":\n",
        "    print(\"é andorinha!\")\n",
        "    print(\"tá perdendo tempo!\")\n",
        "    acampado = input(\"Participa? (sim/não) \")\n",
        "\n",
        "if acampado == \"sim\":\n",
        "    print(\"É de luta!\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "3TzHt2CHfMjK"
      },
      "source": [
        "## 5. Erros Comuns em Python\n",
        "\n",
        "### 5.1 Erro de Indentação\n",
        "Quando não indentamos corretamente os blocos de código."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "il5QuKkufSaX"
      },
      "outputs": [],
      "source": [
        "# Código com erro de indentação (comentado para não travar a execução)\n",
        "\"\"\"\n",
        "teste = input(\"Sim ou não? \")\n",
        "if teste == \"sim\":\n",
        "print(\"A resposta é sim!\")  # Esta linha deveria estar indentada!\n",
        "else:\n",
        "print(\"A resposta é não!\")   # Esta linha deveria estar indentada!\n",
        "\"\"\"\n",
        "print(\"Exemplo de erro: IndentationError: expected an indented block\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "cDMCLOurfUqQ"
      },
      "source": [
        "### 5.2 Variável não declarada\n",
        "Quando tentamos usar uma variável que não foi criada."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "o_6tWWregHJZ"
      },
      "outputs": [],
      "source": [
        "# Exemplo de erro de variável não declarada\n",
        "# print(teste)  # Isso daria erro se executado (NameError)\n",
        "\n",
        "# Correção:\n",
        "teste = \"Agora a variável existe\"\n",
        "print(teste)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "FUSvSuvlgLHn"
      },
      "source": [
        "### 5.3 Erro de Sintaxe - Variável vazia\n",
        "Quando tentamos criar uma variável sem atribuir um valor."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "rix1x482gMOw"
      },
      "outputs": [],
      "source": [
        "# Exemplo de sintaxe inválida\n",
        "# teste =   # Isso causaria SyntaxError\n",
        "\n",
        "print(\"Exemplo de erro: SyntaxError: invalid syntax\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "-taEvF9Rgac4"
      },
      "source": [
        "### 5.4 Erro de Sintaxe - Estrutura do if\n",
        "Quando esquecemos os dois pontos `:` após a condição do if."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "3E0EK6Nygbho"
      },
      "outputs": [],
      "source": [
        "# Exemplo de erro na estrutura do if\n",
        "\"\"\"\n",
        "teste = input(\"Sim ou Não? \")\n",
        "if teste == \"sim\"  # Faltam os dois pontos (:)\n",
        "    print(\"A resposta é sim!\")\n",
        "\"\"\"\n",
        "print(\"Exemplo de erro: if sem dois pontos causa SyntaxError\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "N-lMxfs0gfF4"
      },
      "source": [
        "## 6. Avançando nos Operadores Matemáticos: Comparação\n",
        "\n",
        "### Diferença entre = e ==\n",
        "\n",
        "- **=** (atribuição): usado para **atribuir** um valor a uma variável\n",
        "  - Exemplo: `boomer = \"Gabriel\"`\n",
        "\n",
        "- **==** (igualdade): usado para **comparar** se dois valores são iguais\n",
        "  - Exemplo: `7 == 7` (verdadeiro), `\"sim\" == \"sim\"` (verdadeiro)\n",
        "\n",
        "- **!=** (diferente): usado para verificar se dois valores são **diferentes**"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "s-d7rumlglhr"
      },
      "outputs": [],
      "source": [
        "# Exemplos de operadores de comparação\n",
        "print(f\"7 == 7: {7 == 7}\")\n",
        "print(f\"1 == 1: {1 == 1}\")\n",
        "print(f\"'sim' == 'sim': {'sim' == 'sim'}\")\n",
        "print(f\"7 != 5: {7 != 5}\")\n",
        "print(f\"'sim' != 'não': {'sim' != 'não'}\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "3vuRTx-jgpzP"
      },
      "source": [
        "## 7. Exemplos Práticos\n",
        "\n",
        "Vamos ver alguns exemplos que combinam vários conceitos aprendidos:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "rdzXdffXgq2C"
      },
      "outputs": [],
      "source": [
        "# Exemplo 1: Calculadora simples com validação\n",
        "print(\"=== CALCULADORA SIMPLES ===\")\n",
        "numero1 = float(input(\"Digite o primeiro número: \"))\n",
        "numero2 = float(input(\"Digite o segundo número: \"))\n",
        "\n",
        "soma = numero1 + numero2\n",
        "print(f\"A soma de {numero1} + {numero2} = {soma}\")"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "FuMye02xgsZY"
      },
      "outputs": [],
      "source": [
        "# Exemplo 2: Verificador de idade com loop\n",
        "print(\"=== VERIFICADOR DE IDADE ===\")\n",
        "\n",
        "while True:\n",
        "    idade = input(\"Digite sua idade (ou 'sair' para encerrar): \")\n",
        "\n",
        "    if idade.lower() == \"sair\":\n",
        "        print(\"Programa encerrado!\")\n",
        "        break\n",
        "\n",
        "    idade = int(idade)\n",
        "    if idade >= 18:\n",
        "        print(\"Maior de idade\")\n",
        "    else:\n",
        "        print(\"Menor de idade\")"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "UdxOJf7agujI"
      },
      "outputs": [],
      "source": [
        "# Exemplo 3: Comparação de textos\n",
        "print(\"=== COMPARAÇÃO DE TEXTOS ===\")\n",
        "\n",
        "palavra1 = input(\"Digite a primeira palavra: \")\n",
        "palavra2 = input(\"Digite a segunda palavra: \")\n",
        "\n",
        "if palavra1 == palavra2:\n",
        "    print(\"As palavras são IGUAIS\")\n",
        "else:\n",
        "    print(\"As palavras são DIFERENTES\")"
      ]
    }
  ],
  "metadata": {
    "colab": {
      "provenance": []
    },
    "kernelspec": {
      "display_name": "Python 3",
      "name": "python3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}
