Resumo
Esta aula fixa o modo de trabalho que o curso seguirá até o final. Descreve o ciclo de editar, salvar, compilar, executar e ler, e explica por que convém que o erro seja descoberto na etapa mais precoce possível; apresenta o comando de compilação que o curso recomenda e o que faz cada uma de suas opções; mostra como executar o ciclo a partir do terminal e como configurar o Visual Studio Code para que compile com as mesmas opções; ensina a distinguir na saída do compilador um erro de um aviso e a localizar a linha a que se referem; apresenta os detectores, que interrompem o programa quando ele incorre em certos comportamentos indefinidos e indicam a linha; e deixa o console preparado para mostrar acentos e o ñ.
Objetivos de aprendizagem
- Compilar um programa a partir do terminal com as opções do curso (
-std=c++23 -Wall -Wextrae as demais), nomear o executável com-oe executá-lo. - Configurar o Visual Studio Code para que compile com as mesmas opções do terminal e mostre os avisos em seu painel Problemas.
- Distinguir na saída do compilador um erro de um aviso, nomear a opção que produziu cada aviso e localizar a linha a que ele se refere.
- Ativar os detectores de erros de memória e de comportamento indefinido, e reconhecer em seu relatório o tipo de falha e a linha onde ela ocorreu.
- Diagnosticar por que uma saída mostra símbolos estranhos no lugar de acentos e do ñ, e configurar o editor e o console para que apareçam corretamente.
O ciclo de trabalho
Escrever um programa não é um ato único, mas um ciclo que se repete dezenas de vezes numa mesma sessão. Tem cinco momentos: edita-se o código-fonte; salva-se o arquivo, porque o compilador lê o disco e não a tela do editor; compila-se, isto é, pede-se ao compilador que traduza o arquivo para um executável; executa-se o resultado; e lê-se com atenção tudo o que o compilador e o programa escreveram. O que foi lido conduz a uma nova edição, e o ciclo recomeça.
O último momento é o mais descuidado e o que mais importa. A premissa é simples: um defeito custa tanto mais para corrigir quanto mais tarde é descoberto. Se o compilador o aponta, sabe-se em que linha e quase sempre por quê; se ele se manifesta ao executar, sabe-se apenas que algo saiu errado; se ele se manifesta semanas depois, com outros dados, pode ser que ninguém chegue a saber a causa. Disso se segue que convém descobrir os defeitos o quanto antes, e que o compilador deve ser tratado como o primeiro revisor do programa: um leitor incansável que, bem configurado, adverte de muito mais do que os erros de digitação.
Esta aula configura esse revisor em três níveis: os erros, que impedem obter o executável; os avisos do compilador, que o permitem, mas apontam código suspeito; e os detectores (sanitizers), que vigiam o programa enquanto ele é executado. Supõe instalados o compilador e o editor (aula 1.3). Os exemplos usam variáveis e instruções if, que serão explicadas nas aulas 2.1 e 4.1; aqui basta lê-los.
Carregando o conteúdo…