Sintaxe, semântica e erros

Distinguir forma válida do código, significado e comportamento durante a execução.

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 * altura representa 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 print ajuda 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.

  1. No primeiro exemplo, troque * por +. Execute e explique por que o Python não acusa erro.
  2. No segundo exemplo, troque "dez" por "10" e compare.
  3. Remova o último parêntese de um print(...) e leia a mensagem inteira antes de corrigir.
  4. 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.