Sintaxe, semântica e erros
Objetivo da aula
Distinguir forma válida do código, significado e comportamento durante a execução.
Regra desta aula: vamos assumir que você nunca viu este assunto antes. Nenhum termo importante será usado sem explicação e todo exemplo deve ser entendido linha por linha, não apenas copiado.
Começando do zero
Uma linguagem de programação possui regras de escrita. Algumas regras dizem como o código deve ser formado; outras determinam o que cada construção significa. Por isso existem falhas diferentes: o texto pode estar malformado, o programa pode quebrar enquanto executa ou pode executar sem reclamar e ainda calcular a coisa errada.
Uma imagem mental para entender
Pense em uma frase em português. “O menino abriu a porta” tem uma forma compreensível. “Menino o porta abriu a” quebra regras de organização. Mesmo uma frase bem formada pode transmitir uma informação errada. Em programação acontece algo parecido: sintaxe é a forma; semântica é o significado; lógica é se o raciocínio implementado resolve corretamente o problema.
Conceitos essenciais, sem pular etapas
Erro de sintaxe
O interpretador não consegue nem formar corretamente a instrução. Um parêntese não fechado ou uma estrutura escrita de forma inválida pode gerar SyntaxError antes de o programa começar a executar aquela parte.
Erro durante a execução
O código é sintaticamente válido, mas uma operação falha enquanto roda. Converter "abc" para inteiro, por exemplo, gera ValueError.
Erro lógico
O programa executa e termina, mas aplica a regra errada. Se a área de um retângulo deveria ser largura * altura e você escreveu largura + altura, o Python não tem como saber que a sua fórmula estava errada.
Mensagem de erro é evidência
Uma mensagem de erro não é um castigo; ela é uma pista. Tipo da exceção, linha indicada e trecho do traceback ajudam a localizar o ponto onde a execução falhou.
Modelo mental
TEXTO → ANÁLISE SINTÁTICA → EXECUÇÃO → RESULTADO → VALIDAÇÃO DA LÓGICA
Exemplo 1 — primeiro veja o programa inteiro
largura = 4
altura = 3
area = largura * altura
print("Área:", area)
Agora vamos ler linha por linha
- As duas primeiras linhas definem os dados que representam o retângulo.
largura * alturarepresenta a regra correta para área de um retângulo.- Se trocarmos
*por+, o código continua válido, mas o resultado deixa de representar a área. Isso é erro lógico. - O
printajuda a observar o resultado, mas não garante que ele esteja conceitualmente correto.
Saída esperada
Área: 12
Exemplo 2 — o mesmo conceito em outra situação
idade_texto = "dez"
idade = int(idade_texto)
print(idade)
Esse código é sintaticamente correto. A falha só aparece quando int() tenta interpretar a palavra "dez" como um número inteiro. O erro é de execução, não de sintaxe.
Experimento guiado
Não pule esta parte. Programação só começa a fazer sentido quando você prevê um resultado, executa e compara a previsão com o que realmente aconteceu.
- No primeiro exemplo, troque
*por+. Execute e explique por que o Python não acusa erro. - No segundo exemplo, troque
"dez"por"10"e compare. - Remova o último parêntese de um
print(...)e leia a mensagem inteira antes de corrigir. - Escreva uma tabela com três colunas: sintaxe, execução, lógica. Coloque um exemplo de problema em cada uma.
Mini desafio
Um ingresso custa R$ 12 e foram vendidos 5. Escreva primeiro uma versão correta do cálculo do total e depois crie, propositalmente, uma versão logicamente errada que ainda execute.
Solução comentada
preco = 12
quantidade = 5
# Correto
total = preco * quantidade
print("Total correto:", total)
# Logicamente errado, mas sintaticamente válido
total_errado = preco + quantidade
print("Total errado:", total_errado)
Depois de executar a solução, altere pelo menos um valor e explique por que o novo resultado mudou. Se você só copiou e não consegue explicar cada linha, refaça o desafio em uma versão menor.
Erros comuns e por que acontecem
- Chamar qualquer problema de “erro de sintaxe”. Há diferentes categorias e identificar a categoria ajuda a corrigir.
- Apagar a mensagem de erro sem ler. Muitas vezes ela já informa o tipo e a linha do problema.
- Concluir que “se rodou, está certo”. Execução sem exceção não prova que a regra implementada é correta.
Cheque se você realmente entendeu
Trocar multiplicação por soma pode gerar SyntaxError?
Resposta: Normalmente não. As duas operações são sintaticamente válidas; o problema pode ser lógico.
Por que int("dez") falha apenas na execução?
Resposta: Porque a chamada é escrita corretamente; a falha depende do valor que foi fornecido à conversão.
Qual é o primeiro passo ao ver um traceback?
Resposta: Ler o tipo da exceção e a linha indicada, sem alterar muitas coisas ao mesmo tempo.
Resumo em linguagem simples
Nesta aula, o ponto central foi Sintaxe, semântica e erros. Tente explicar o modelo TEXTO → ANÁLISE SINTÁTICA → EXECUÇÃO → RESULTADO → VALIDAÇÃO DA LÓGICA sem olhar a tela. Depois, escreva um exemplo próprio menor que os apresentados. Esse exercício de explicação é parte do aprendizado, não um extra.
Conexão com a próxima aula
Na próxima aula, Primeiro programa Python, vamos aproveitar exatamente o que foi construído aqui. Você não precisa memorizar tudo; precisa conseguir reconhecer o conceito e reconstruí-lo com raciocínio e testes.