Capítulo 1 de 12
Pensar antesde programar
Pensamento computacional, algoritmos e o primeiro contato com Python. Antes de escrever código, você aprende a pensar como quem vai ser obedecido ao pé da letra.
| Etapa | Conteúdo | Tempo |
|---|---|---|
| Fase 1: O Robô Literal | Algoritmos e suas propriedades, os 4 pilares do pensamento computacional, pseudocódigo e fluxograma | ~90 min |
| Fase 2: Despertar da Serpente | Níveis de linguagem, compilação e interpretação, ambiente Python, print, operadores e os três tipos de erro | ~90 min |
| Boss Battle | Labirinto do Robô Literal, com correção automática | ~45 min |
Tutorial: como jogar
Aperte ▶ Rodar (ou Ctrl + Enter dentro do editor). Depois troque o texto entre aspas e rode de novo.
O Robô Literal
🧊 Desafio quebra-gelo
Você pede a um robô: "pegue o pão e passe manteiga". Ele obedece exatamente o que foi dito, nada além. O que pode dar errado?
Tudo. Ele pode passar manteiga no saco do pão, porque ninguém mandou abrir. Pode usar a mão, porque ninguém falou em faca. Pode passar a manteiga inteira, porque ninguém disse quanto. 🧈
Humanos preenchem lacunas com contexto. Computadores não. Programar é, antes de tudo, aprender a dar ordens sem lacunas.
O que é um algoritmo
Um algoritmo é uma sequência finita de instruções precisas que, executadas a partir de uma entrada, produzem uma saída e terminam. A palavra vem de al-Khwarizmi, matemático persa do século IX. Algoritmos são muito mais antigos que computadores: o de Euclides, para o máximo divisor comum, tem cerca de 2.300 anos e continua em uso, por exemplo, em criptografia.
As cinco propriedades (Knuth)
Donald Knuth, em The Art of Computer Programming, caracteriza um algoritmo por cinco propriedades. Uma receita de bolo é um bom contraexemplo para quase todas:
| Propriedade | Significa | Violação na receita |
|---|---|---|
| Finitude | Termina após um número finito de passos | "Bata até ficar bom" |
| Definição | Cada passo é preciso, sem ambiguidade | "Sal a gosto" |
| Entrada | Zero ou mais dados fornecidos no início | Ingredientes sem quantidade |
| Saída | Um ou mais resultados relacionados à entrada | "Sirva como preferir" |
| Efetividade | Cada passo é executável de fato, com os recursos disponíveis | "Use o forno a 1.000 °C" |
Os quatro pilares do pensamento computacional
Pensamento computacional é a forma de formular problemas para que suas soluções possam ser executadas por uma máquina, ou por uma pessoa seguindo regras. Ele se apoia em quatro habilidades complementares:
| Pilar | O que é | Exemplo: gerar o boletim da turma |
|---|---|---|
| Decomposição | Dividir um problema grande em subproblemas tratáveis | Coletar notas, calcular médias, verificar frequência, decidir situação, publicar |
| Reconhecimento de padrões | Identificar semelhanças entre problemas ou partes deles | A média de toda disciplina segue a mesma fórmula, só mudam os pesos |
| Abstração | Manter o essencial e descartar o irrelevante | Para a média, importam as notas e os pesos, não o nome do professor nem a sala |
| Algoritmo | Escrever a sequência precisa de passos da solução | Para cada aluno: some nota × peso, divida pela soma dos pesos, compare com 7 |
💡 Os pilares não são etapas em ordem fixa: você decompõe, percebe um padrão, abstrai, volta a decompor. O algoritmo é o produto final desse vai e vem.
Representando algoritmos
A linguagem natural é ambígua. "Vi o homem no parque com o binóculo": quem estava com o binóculo? Por isso, antes do código, usamos representações intermediárias, mais precisas que o português e menos exigentes que uma linguagem de programação.
Pseudocódigo
Português estruturado, com convenções de linguagem de programação. O símbolo ← significa "recebe o valor de". O algoritmo de Euclides fica assim:
Algoritmo MDC
Leia a, b
Enquanto b ≠ 0, faça:
resto ← a mod b
a ← b
b ← resto
Escreva a
Fim
Fluxograma
O mesmo algoritmo como diagrama. Cada forma tem um significado padronizado:
| Forma | Significado |
|---|---|
| Elipse (terminal) | Início ou fim do algoritmo |
| Paralelogramo | Entrada ou saída de dados |
| Retângulo | Processamento: cálculo ou atribuição |
| Losango | Decisão: uma condição, com saídas "sim" e "não" |
| Setas | Fluxo de execução |
O robô literal, versão Python
Hora de dar ordens a uma máquina de verdade. O robô abaixo conhece só três comandos e não interpreta intenções: ele executa uma linha de cada vez, de cima para baixo. Complete o programa para levá-lo até a 🏁. Se ele bater, o mapa mostra onde.
💡 Repare que frente(2) é uma abstração: um comando com parâmetro substitui dois comandos iguais. Você vai precisar disso no Boss.
Engenharia de algoritmos
Recompensa: até +210 XP
Três desafios sem código: ordenar passos até não sobrar ambiguidade e reconhecer os pilares em situações reais. Use ↑ e ↓ para mover os itens e depois verifique.
A) Saque no caixa eletrônico
Regra: a senha é validada antes de qualquer operação, e o cartão é devolvido ao final.
B) Pseudocódigo de Euclides
A indentação já está nos itens. Pense em qual valor cada variável precisa ter no momento em que é usada.
C) Qual pilar?
🏁 Resumão da Fase 1
- Algoritmo: sequência finita de passos precisos, com entrada e saída, que termina. Finitude, definição, entrada, saída e efetividade.
- Pensamento computacional: decomposição, reconhecimento de padrões, abstração e algoritmo.
- Pseudocódigo e fluxograma eliminam a ambiguidade do português antes do código.
- A ordem das atribuições importa: atribuir apaga o valor anterior.
Despertar da Serpente
🧊 Desafio quebra-gelo
O processador do seu computador só entende sequências de 0 e 1. Então como print("Olá"), um texto em inglês, vira algo que ele executa?
Por camadas de tradução. Programas tradutores (compiladores e interpretadores) convertem linguagens próximas do humano em instruções de máquina. Cada camada esconde a complexidade da anterior. É abstração, o pilar da Fase 1, aplicada à própria computação.
Níveis de linguagem
A mesma operação, somar dois valores e guardar o resultado, em quatro níveis de abstração:
| Nível | Exemplo | Quem lê bem |
|---|---|---|
| Alto nível (Python) | total = a + b | Humanos |
| Alto nível (C) | int total = a + b; | Humanos, com mais detalhes de máquina |
| Assembly (x86) | mov eax, [a] / add eax, [b] / mov [total], eax | Especialistas |
| Código de máquina | 10001011 01000101 11111000 … | O processador |
Compilação e interpretação
| Compilação | Interpretação | |
|---|---|---|
| Quando traduz | Tudo antes de executar, gerando um executável | Durante a execução, instrução por instrução |
| Pontos fortes | Desempenho; erros de tipo detectados cedo | Ciclo rápido de testar e ajustar; portabilidade |
| Exemplos | C, C++, Rust, Go | JavaScript, Ruby e, na prática, Python |
Na verdade, a fronteira é difusa. O CPython, a implementação padrão, primeiro compila o código-fonte para bytecode, uma linguagem intermediária guardada em arquivos .pyc. Depois, a máquina virtual do Python (PVM) interpreta esse bytecode. Java faz algo parecido com a JVM. E esta apostila usa um terceiro caminho: o Skulpt, que traduz Python para JavaScript, a linguagem que o navegador executa.
Por que Python?
- Legibilidade: a sintaxe é próxima do pseudocódigo, e a indentação faz parte da linguagem.
- Ecossistema: é a linguagem dominante em ciência de dados, inteligência artificial e automação, além de ser forte em web e computação científica.
- O custo: é mais lenta que C ou Rust em processamento intenso. Por isso as bibliotecas mais pesadas, como numpy, são escritas em C por baixo.
💡 O Zen do Python (PEP 20), filosofia da linguagem, em quatro linhas: bonito é melhor que feio. Explícito é melhor que implícito. Simples é melhor que complexo. Legibilidade conta. No seu Python local, digite import this para ler o resto.
Preparando o ambiente
Aqui você programa no navegador. Na disciplina, vai precisar do Python instalado:
- Baixe o Python 3 em python.org. No Windows, marque a opção "Add python.exe to PATH" no instalador. Esquecer isso é o problema número 1 dos iniciantes.
- Confirme a instalação no terminal:
python --version(no Windows, também funcionapy --version). Deve aparecer algo comoPython 3.12. - Escolha um editor. O Thonny é feito para iniciantes e já vem com Python. O VS Code com a extensão Python é o padrão de mercado.
- Conheça os dois modos. No modo interativo (REPL), você digita
pythone vê o prompt>>>: cada linha roda na hora, ótimo para experimentar. No modo script, você salva um arquivo.pye roda compython arquivo.py: é assim que se fazem programas.
Seu primeiro programa
print() é uma função: um comando com nome, seguido de parênteses com os valores que ele recebe. Texto entre aspas é uma string. Tudo depois de # é comentário, ignorado pelo Python e escrito para humanos.
O programa é executado em sequência, de cima para baixo. É a primeira das três estruturas de controle (sequência, decisão e repetição). As outras duas você vê no Capítulo 3.
Controlando a saída: sep, end e caracteres de escape
print aceita vários valores separados por vírgula. O parâmetro sep define o que vai entre eles (padrão: espaço), e end define o que vai no final (padrão: quebra de linha). Dentro de strings, \n quebra a linha e \t insere uma tabulação.
Python como calculadora
| Operador | Operação | Exemplo | Resultado |
|---|---|---|---|
+ - * | Soma, subtração, multiplicação | 7 + 3 * 2 | 13 |
/ | Divisão real (sempre float) | 7 / 2 | 3.5 |
// | Divisão inteira (quociente) | 7 // 2 | 3 |
% | Resto da divisão (o mod de Euclides) | 7 % 2 | 1 |
** | Potência | 2 ** 10 | 1024 |
A precedência segue a matemática: potência, depois multiplicação e divisões, depois soma e subtração. Parênteses mudam a ordem. No Capítulo 2, isso vira expressões com variáveis e tipos.
Os três tipos de erro
Errar é parte do processo, e cada tipo de erro aparece em um momento diferente:
| Tipo | Quando aparece | Quem avisa |
|---|---|---|
| Sintaxe | Antes de executar: o código não segue a gramática da linguagem | O Python, e nada roda |
| Execução (exceção) | Durante a execução: uma operação impossível | O Python, e o programa para naquele ponto |
| Lógica | Nunca: o programa roda e entrega a resposta errada | Ninguém. Só testes e atenção pegam |
Lendo um traceback
No terminal, um erro de execução vem como um traceback. Leia de baixo para cima: a última linha diz o quê, as anteriores dizem onde.
Traceback (most recent call last):
File "notas.py", line 3, in <module> ← onde: arquivo e linha
print("Média por aluno:", 100 / total) ← a linha que falhou
ZeroDivisionError: division by zero ← o quê: tipo e mensagem
Diagnóstico: o crachá quebrado
Recompensa: até +230 XP e a insígnia Depurador
O programa do crachá tem quatro bugs de tipos diferentes, e uma das linhas suspeitas está correta. Conserte, e ao lado de cada correção escreva um comentário classificando o bug: # sintaxe, # execução ou # lógica. O ✓ Testar compara sua saída com a especificação, caractere por caractere.
💡 Dica
Conserte um erro por vez e rode de novo: o Python só mostra o primeiro erro de sintaxe que encontra. Quando o programa rodar inteiro, compare a média com a especificação. 8 + 9 / 2 e (8 + 9) / 2 não são a mesma coisa.
🔓 Gabarito
🏁 Resumão da Fase 2
- Linguagens de alto nível são traduzidas para código de máquina. O CPython compila para bytecode e o interpreta na PVM.
printexibe valores;sepeendcontrolam o formato./,//,%e**completam a calculadora.- Erros de sintaxe impedem a execução, de execução a interrompem e de lógica passam despercebidos.
- Traceback se lê de baixo para cima.
Boss Battle: O Labirinto do Robô Literal
O Robô Literal
Eu faço exatamente o que você mandar. Nem mais, nem menos. Pegue a chave, abra a porta, chegue à saída. Cada critério cumprido me arranca um pedaço da teimosia.
O labirinto é maior e tem um detalhe a mais: a 🚪 está trancada, e a 🔑 fica em um corredor sem saída. Os comandos agora incluem pegar() e abrir(), que só funciona com a porta logo à frente e a chave na mão. Rode o código inicial para ver o mapa.
Estratégia: use os pilares
- Decomposição: divida o trajeto em trechos: até a chave, da chave até a porta, da porta até a saída.
- Reconhecimento de padrões: não existe comando de meia-volta. Que combinação de giros produz o mesmo efeito?
- Abstração:
frente(n)substitui vários passos. A solução ótima tem 13 comandos. - Algoritmo: escreva a sequência final e teste.
💡 Dica nível 1: o primeiro trecho
Do início, o caminho até a chave é: dois para a direita, dois para baixo, dois para a direita e dois para cima. Cada mudança de direção é um giro.
💡 Dica nível 2: a porta
Depois de pegar a chave, o robô está virado para o Norte. Duas chamadas de direita() o deixam virado para o Sul. Desça até ficar logo antes da porta, use abrir() e continue.
🔓 Gabarito do Boss
🔥 Modo Hard (XP bônus)
Desafios abertos, sem correção automática. Fez? Marque e ganhe o bônus.
Sua sala de troféus
Tudo que você conquistar neste capítulo aparece aqui.
Esse capítulo foi…
Valeu pelo feedback!
Próximo capítulo: Variáveis, Tipos e Expressões. O robô vai ganhar memória. 🧠
Python: Modo História · Prof. JH. O Python roda no navegador pelo Skulpt (licença MIT). Seu progresso fica salvo só neste navegador.
Conteúdo produzido com apoio de IA e validado por Jonas Henrique Mendonça · Protocolo de validação · Voltar ao site