Algoritmos (ADS) – Aula 06

ALGORITMOS – AULA 06 DE 100

Unidade 1 – Fundamentos e estruturas de controle
Bloco Algoritmos e lógica (aulas 1 a 6)
Duração e tipo 45 minutos – teórica
Aula anterior Aula 05 – Resolução de problemas: entrada, processamento, saída e teste de mesa
Próxima aula Aula 07 – Ambiente de trabalho: Python, VS Code e terminal

1 Objetivos da aula

  1. Explicar por que precisamos de linguagens de programação e de tradutores.
  2. Diferenciar linguagem de máquina, linguagem de montagem e linguagem de alto nível.
  3. Diferenciar compilação e interpretação e descrever como o Python executa um programa.
  4. Reconhecer as características do Python e os motivos de seu uso nesta disciplina.

2 Roteiro da aula

Tempo Momento Atividade
0–5 min Retomada As linguagens pesquisadas pela turma (tarefa da Aula 05).
5–25 min Exposição dialogada Hardware; níveis de linguagem; compilação e interpretação; como o Python funciona.
25–35 min Atividade em duplas Compilação ou interpretação? Analogias entre o computador e o corpo humano.
35–41 min Demonstração O interpretador do Python no terminal e o bytecode de uma linha de código.
41–45 min Síntese e ponte Resumo e preparação para a primeira aula prática no VS Code.

3 Conhecimentos prévios

Aula 01 (hardware e software) e Aulas 02 a 05 (algoritmos e diagramas de blocos).

4 Conteúdo

4.1 O que o computador realmente entende

Nas Aulas 02 a 05 os algoritmos foram executados por nós, no papel. Para que o computador execute um algoritmo, ele precisa estar escrito em instruções que o processador (CPU) reconhece. Relembre as partes do computador envolvidas na execução de um programa:

Parte Papel na execução de um programa
Processador (CPU) Executa as instruções, uma de cada vez, bilhões de vezes por segundo.
Memória principal (RAM) Guarda o programa em execução e seus dados. É rápida, mas perde tudo ao desligar.
Memória secundária (disco, SSD, pendrive) Guarda arquivos e programas de forma permanente, mesmo sem energia.
Dispositivos de entrada e saída Teclado, mouse, tela, rede, alto-falante: a comunicação com o mundo externo.

Cada processador tem um conjunto fixo de instruções muito simples, como copiar um valor, somar, comparar ou desviar para outra instrução. Essas instruções são representadas por números binários: é a linguagem de máquina (ou código de máquina). Escrever programas diretamente nela é possível, mas lento e sujeito a erros, e o programa só funciona em processadores da mesma família.

4.2 Níveis de linguagem

Nível Como é Vantagens e limitações
Linguagem de máquina Números binários que o processador executa diretamente. Executa sem tradução; ilegível para pessoas e presa a um tipo de processador.
Linguagem de montagem (assembly) Abreviações (mnemônicos) para cada instrução de máquina, como mov e imul. Mais legível que o binário, mas ainda presa ao processador; cada linha corresponde a uma instrução.
Linguagem de alto nível Próxima da linguagem humana e da matemática: Python, Java, C, JavaScript. Legível e portável; precisa de um tradutor para virar código de máquina.

Veja a mesma operação, “total recebe preço vezes quantidade”, em dois níveis. Em Python:

total = preco * quantidade

Em linguagem de montagem (exemplo ilustrativo para processadores x86-64, com números inteiros):

mov  eax, [preco]        ; copia preco para o registrador eax
imul eax, [quantidade]   ; multiplica eax por quantidade
mov  [total], eax        ; guarda o resultado em total

Em linguagem de máquina, cada uma dessas três linhas seria uma sequência de bytes, ilegível para pessoas. Note que uma única linha de alto nível corresponde a várias instruções de máquina.

4.3 Tradutores: compilação e interpretação

Um programa escrito em linguagem de alto nível, o código-fonte, precisa ser traduzido para código de máquina. Há duas estratégias principais (MANZANO; OLIVEIRA, 2019, seção 2.4; SEVERANCE, 2020, cap. 1):

Figura 1 – Compilação: tradução completa antes da execução

Figura 2 – Interpretação: tradução e execução, instrução por instrução

Aspecto Compilação Interpretação
Quando traduz Todo o programa, antes de executar. Durante a execução, trecho a trecho.
O que produz Um arquivo executável em código de máquina. Não produz executável: o interpretador executa o código-fonte.
Para executar de novo Basta rodar o executável. O interpretador precisa estar instalado.
Erros de escrita Aparecem na compilação, antes de rodar. Aparecem quando o trecho com erro é alcançado (ou ao carregar o arquivo).
Exemplos usuais C, C++, Rust, Go Python, Ruby, PHP

Uma analogia

O compilador é como um tradutor de livros: traduz a obra inteira e entrega um livro novo, que pode ser lido sem o tradutor. O interpretador é como um intérprete em uma palestra: traduz frase a frase, enquanto o palestrante fala, e precisa estar presente a cada vez.

A rigor, compilar ou interpretar é uma característica da implementação, não da linguagem: uma mesma linguagem pode ter implementações dos dois tipos.

4.4 E o Python?

A implementação de referência do Python, chamada CPython (escrita na linguagem C), combina as duas estratégias (Figura 3). Primeiro, ela compila o código-fonte para bytecode, uma linguagem intermediária mais simples que o Python, mas que não é código de máquina. Depois, a máquina virtual do Python executa esse bytecode, instrução por instrução. Segundo o glossário oficial, o bytecode também é guardado em cache em arquivos .pyc, para que a próxima execução não precise recompilar o código-fonte (PYTHON SOFTWARE FOUNDATION, 2026). Na prática, esse cache é criado para os módulos importados por um programa.

Figura 3 – Como o Python (CPython) executa um programa

Como essas etapas acontecem automaticamente quando você roda um programa, no dia a dia dizemos que o Python é uma linguagem interpretada e chamamos o programa python de interpretador. O mesmo código-fonte funciona em Windows, Linux e macOS, desde que o interpretador esteja instalado.

4.5 Por que Python nesta disciplina

  • Legibilidade: a sintaxe é enxuta e o recuo (espaços no início da linha) organiza o código, como você viu nas demonstrações das Aulas 04 e 05.
  • Gratuito e de código aberto: mantido pela Python Software Foundation, sem custo de licença.
  • Biblioteca padrão ampla: muitas tarefas já têm módulos prontos, como matemática, datas e arquivos.
  • Uso amplo: desenvolvimento web, análise de dados, inteligência artificial, automação de tarefas e ensino.
  • Multiplataforma: o mesmo programa roda em Windows (o sistema do nosso laboratório), Linux e macOS.

O Python foi criado pelo holandês Guido van Rossum e teve sua primeira versão pública em 1991; o nome é uma homenagem ao grupo de humor britânico Monty Python. Nesta disciplina usamos o Python 3, na versão 3.14 ou superior (a 3.14.0 foi lançada em 07/10/2025). O Python 2 teve o suporte encerrado em 2020; se encontrar exemplos com print sem parênteses, eles são dessa versão antiga.

4.6 O que pode dar errado: tipos de erro

Tipo de erro O que é Quando aparece Exemplo
Sintaxe O código não segue as regras de escrita da linguagem. Na tradução, antes de executar. primt("Olá") ou parêntese sem fechar
Execução O código é válido, mas uma operação falha. Durante a execução. Dividir por zero; digitar 6,5 onde se espera um número
Lógica O programa roda, mas o resultado está errado. Só nos testes. Usar > no lugar de ≥ na média

Os dois primeiros tipos o próprio Python aponta, com uma mensagem de erro. O erro de lógica, não: só o teste (de mesa ou no computador) o revela. As mensagens de erro serão estudadas na Aula 08.

5 Atividade em sala

Parte A – Compilação ou interpretação? (em duplas, 5 minutos). Classifique cada afirmação como característica da compilação, da interpretação ou das duas:

  1. Gera um arquivo executável.
  2. Precisa do tradutor instalado toda vez que o programa é executado.
  3. Traduz o código-fonte de uma linguagem de alto nível.
  4. Mostra todos os erros de sintaxe antes de o programa começar a rodar.
  5. Permite digitar uma instrução e ver o resultado imediatamente.

Parte B – O computador e o corpo humano (em duplas, 5 minutos; adaptado de SEVERANCE, 2020, cap. 1, exercício 8). Para cada parte do computador, indique o que no ser humano tem papel parecido e explique: processador, memória principal, memória secundária, dispositivo de entrada e dispositivo de saída.

6 Demonstração: o interpretador e o bytecode

O professor vai abrir o terminal (PowerShell, no Windows) e usar o inicializador py, instalado junto com o Python. Você fará o mesmo na Aula 07.

PS> py --version
Python 3.14.x
PS> py
>>> 2 + 3
5
>>> preco = 4.5
>>> quantidade = 2
>>> preco * quantidade
9.0
>>> exit()

O sinal >>> indica o modo interativo: o interpretador lê uma instrução, executa e mostra o resultado na hora. Em seguida, o professor executa o arquivo demo_aula06.py, que mostra o bytecode gerado para uma linha de Python com o módulo dis (PYTHON SOFTWARE FOUNDATION, 2026):

import dis
 
codigo = "total = preco * quantidade"
dis.dis(codigo)   # mostra as instruções de bytecode da linha acima

Saída no Python 3.14 (os detalhes podem mudar entre versões):

  0           RESUME                   0
 
  1           LOAD_NAME                0 (preco)
              LOAD_NAME                1 (quantidade)
              BINARY_OP                5 (*)
              STORE_NAME               2 (total)
              LOAD_CONST               0 (None)
              RETURN_VALUE

Repare que a linha 1 virou quatro instruções principais: carregar preco, carregar quantidade, multiplicar (BINARY_OP *) e guardar em total. As duas últimas instruções encerram o trecho de código. Não é preciso decorar nada disso: o objetivo é ver que existe uma tradução entre o que escrevemos e o que é executado.

7 Síntese

  1. O processador só executa linguagem de máquina; linguagens de alto nível precisam de tradutores.
  2. O compilador traduz o programa inteiro antes da execução; o interpretador traduz e executa durante a execução.
  3. O CPython compila para bytecode e o executa numa máquina virtual; na prática, dizemos que o Python é interpretado.

8 Exercícios de fixação

Os exercícios 1 a 3 foram adaptados de Severance (2020, cap. 1, exercícios 1, 3 e 4).

  1. Qual é a função da memória secundária? (a) Executar os cálculos do programa. (b) Buscar páginas na internet. (c) Guardar informações por longo prazo, mesmo sem energia. (d) Receber dados do usuário.
  2. Qual é a diferença entre um compilador e um interpretador?
  3. Qual dos itens contém código de máquina? (a) O interpretador do Python. (b) O teclado. (c) Um arquivo de código-fonte em Python. (d) Um documento de texto.
  4. Coloque em ordem, do mais próximo do hardware ao mais próximo da linguagem humana: Python, linguagem de máquina, linguagem de montagem.
  5. Um colega compilou um programa em C no Windows e enviou o executável para um amigo que usa Linux. O programa não abriu. Já um programa em Python, enviado como arquivo .py, funcionou nos dois sistemas. Explique por quê.
  6. Classifique cada erro como de sintaxe, de execução ou de lógica: (a) o programa calcula a média dividindo a soma de três notas por 2; (b) falta fechar um parêntese; (c) o usuário digita uma letra onde o programa espera um número.

9 Para a próxima aula

Aula 07 – Ambiente de trabalho: Python, VS Code e terminal. Primeira aula com as mãos no teclado: você vai conhecer o terminal, o VS Code e organizar a pasta onde guardará os programas do semestre.

  • Tarefa: se tiver computador em casa, verifique se ele usa Windows, Linux ou macOS e se o Python já está instalado (no terminal, digite py –version no Windows ou python3 –version no Linux e no macOS). Não instale nada ainda: faremos isso juntos.
  • Leitura recomendada: SEVERANCE (2020), Python para Todos, capítulo 1, seções “Conversando com Python” e “Terminologia: interpretador e compilador”. Download gratuito: http://do1.dr-chuck.com/pythonlearn/PT_br/pythonlearn.pdf.
  • Leitura complementar: MANZANO e OLIVEIRA (2019), capítulo 2, seção 2.4.

Referências

  1. MANZANO, José Augusto N. G.; OLIVEIRA, Jayr Figueiredo de. Algoritmos: lógica para desenvolvimento de programação de computadores. 29. ed. São Paulo: Érica, 2019.
  2. PYTHON SOFTWARE FOUNDATION. dis: disassembler for Python bytecode. Versão 3.14. [S. l.]: PSF, 2026. Disponível em: https://docs.python.org/3.14/library/dis.html. Acesso em: 9 out. 2026.
  3. PYTHON SOFTWARE FOUNDATION. Glossário. Versão 3.14. [S. l.]: PSF, 2026. Disponível em: https://docs.python.org/pt-br/3.14/glossary.html. Acesso em: 9 out. 2026.
  4. SEVERANCE, Charles R. Python para todos: explorando dados com Python 3. Tradução: Yuri Loia et al. [S. l.: s. n.], 2020. Licença CC BY-NC-SA 3.0. Disponível em: http://do1.dr-chuck.com/pythonlearn/PT_br/pythonlearn.pdf. Acesso em: 9 out. 2026.

Licença

Esta aula adapta trechos marcados do livro Python para Todos (SEVERANCE, 2020), distribuído sob a licença Creative Commons Atribuição-NãoComercial-CompartilhaIgual 3.0 (CC BY-NC-SA 3.0). Por isso, esta aula também é distribuída sob a licença CC BY-NC-SA 3.0: pode ser copiada e adaptada para fins não comerciais, com citação da fonte e mantendo a mesma licença. Texto da licença: https://creativecommons.org/licenses/by-nc-sa/3.0/deed.pt-br.

Click to listen highlighted text!