Files
decoda/jupyter/content/Python_Básico_Aula_03.ipynb
ruimoraes 3da7d323e8 desenvolvimento pre-lancamento
Commit inicial - add do repo privado para o repo NT

style: changes header's logo and colors

style: changes home page first session layout

feat: creates about us home page section

chore: creates home page section for whom

chore: creates student materails home page section

chore: creates teachers materials home page section

chore: creates teacher materials home page section

style: changes primary color

style: changes color at activities page

style: changes about page color

style: changes name to Decoda

fix: changes route to about page at footer

fix: changes background color

style: changes game page header colors

style: changes footer colors

chore: adds home page sections title

style: changes main font family to Lato

style: adds title font

fix: changes sizes to be more responsive for mobile

ajuste no build vercel

atualiza regras envio homol

Adiciona instrucoes de uso

add JupyterLite

fix solucao turtle

Add Mole Mash e Modal de Falhas

Add Progress Bar na pagina de Atividades

fix game name

chore: atualiza lockfile removendo vercel analytics

inclusão de efeito ao mudar de fase

add mecanismo de solução de fases em debug

vite config test

add BaseGame e refator do MoleMash

refatoração turtle

refatoração automato

refatoração automato

add tag

bug 1 e 2 automato

mostrar apenas games em homologação na pagina de atividades

aumentar timeout das fases finais do Turtle

fix bug scroll

add video

refactor semaforo

arrumar ordem das cores

add build docs

update vercel

update vercel

update vercel

update vercel

update vercel

add vercel jupyter

add vercel jupyter

fix deploy Vercel

fix deploy Vercel

fix deploy Vercel

add cripto

add cripto

refatoração

fix tour Mole Mash

.

remover arquivos de controle

chore: adds development tag for activity card

remover arquivos de status indevidamente versionados

atualizar cores nas atividades

add Quebra Cabeças

add Quebra Cabeças

add iniciativas

add Iniciativas

alteração de fotos pesadas

fix menu mobile

fix menu mobile

fix menu mobile

add Aspirador

update icons

update identidade visual documentação

update jupyter

add kernel python local

add kernel python local

add kernel python local

feat: add health check

feat: add primeiros passos

add letramento

mover letramento de lugar

update path games

update path games

fix: ajuste clique rapido no botão executar

remover dead code

fix: refactor: extract shared utilities for storage, phase unlock and mobile detection

stabilize context references and fix stale closure

extrair GameProgressContext do GameStateContext (SRP)

refactor(game): extrair usePhaser e useGameModals de GameBase + corrigir bugs descobertos

refactor(game): remove todos os aliases PT/EN duplicados

Remover aliases PT/EN da camada de modais

refactor + tests

security: add CodeSanitizer and integrate into GameInterpreter

- CodeSanitizer.js: 4 built-in rules (max_length, infinite_while,
  infinite_for, excessive_nesting) with pluggable extra rules
- GameInterpreter.executeCode: calls sanitizeCode() before js-interpreter,
  differentiates CodeSanitizationError (warn) from other errors (error)
- 21 unit tests for CodeSanitizer (100% coverage)
- 4 integration tests in GameInterpreter for sanitization paths

add CodeSanitizer

fix: fase 10 aspirador

fix: bug semaforo

teste

feat: add version

Ajusta a landing page para ficar mais próxima ao protótipo

ajusta raio da borda do botão de Acesse nosso Laboratório

pequenos ajustes de layout na página de iniciativas

atualiza tabela de jogos educativos com os jogos disponíveis atualmente

ajustados pequenos detalhes e informações do jogos na seção de guias pedagógicos

troca nome playground para laboratório e adiciona imagens do lab

adiciona documentação de conceitos básicos de programação

ajustado pequenos erros de digitação

adiciona tooltip com conceitos escondidos em hover na tag +N de conceitos

update docs dev

desativar tour

setup matriz MoleMash

setup matriz MoleMash

fix: link

update version

update docs

update docs

mudou o layout de quem somos

mudei as imgs dos icons e baixei o botao

centraliza titulo com imagem e ajusta sessão com gradiente vermelho-rosa

adiciona responsividade para a pagina quem somos

ajusta botão de conheça nossa história

ajustes

ajustes na home + add. teclado

update version

security

security

feat: add tapume para telas pequenas

v1.1.0

feat: decoda offline

feat: doc offline

offline

fix: ajustes para release

fix: navbar; config ordenação; versão

fix: rotas docs e jupyter para pwa

delete private files

Co-authored-by: Indra Araujo <indra.araujo.santos@gmail.com>
Co-authored-by: solange dos santos <sollangelive71@gmail.com>
2026-05-26 18:01:50 -03:00

489 lines
13 KiB
Plaintext

{
"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
}