Saltar para o conteúdo
Topos Uranos

Resumo

Esta aula abre a quarta unidade do curso, dedicada ao controle de fluxo. Explica para que serve a unidade: ensinar a governar a ordem em que se executam as instruções de um programa, com decisões e com laços, e a raciocinar sobre sua correção, isto é, a garantir que cada caso seja atendido, que cada laço faça o que deve e que termine; apresenta suas quatro aulas e o fio que as une; recorda o que a unidade dá por sabido, sobretudo as condições compostas da unidade 3; formula o problema que a unidade resolve, o de um programa que calcula o máximo divisor comum com um número fixo de passos e que, conforme os dados, responde errado ou para numa divisão por zero; antecipa o invariante como a ferramenta com que a unidade justificará seus laços; e mostra aonde conduz, nas unidades seguintes e no curso Programação em C++ II.

Objetivos de aprendizagem

  1. Descrever a sequência de conteúdos da unidade e explicar o que cada aula traz à seguinte.
  2. Recordar as condições compostas da unidade 3 (os conectivos, o curto-circuito e a negação pelas leis de De Morgan) e revisá-las se for preciso.
  3. Antecipar, com um exemplo, o invariante como ferramenta de raciocínio: uma relação entre as variáveis que uma repetição conserva e que, ao terminar, dá o resultado.
  4. Reconhecer o que se espera saber fazer ao terminar a unidade, e distingui-lo do que se aprenderá nas unidades seguintes.

Avaliação de entrada

Antes de percorrer a unidade, convém medir o ponto de partida. Esta avaliação é uma autoavaliação: não se pontua, e seu único propósito é orientar o estudo. As quatro primeiras perguntas verificam o que a unidade dá por sabido: a negação de uma condição composta, o curto-circuito, o rastreamento de uma repetição da aula 1.1 e o limite de um int. As sete seguintes tocam, na ordem das aulas, as ideias centrais da unidade, e várias delas partem da matemática escolar: o máximo divisor comum, a notação de somatório, a terminação de um procedimento. Ninguém é obrigado a acertá-las ainda, e em algumas delas “ainda não sei” é uma resposta honesta: cada resposta, certa ou não, explica o ponto e nomeia a aula que o trata. As mesmas habilidades voltam a ser medidas no final, na aula de síntese.

Avaliação de entrada

Antes de começar a unidade, meça seu ponto de partida. É uma autoavaliação breve: não recebe nota e seu resultado fica guardado apenas no seu navegador.

  1. Pergunta 1De unidades anterioresQual é a negação da condição 1 <= n && n <= 10?

  2. Pergunta 2De unidades anterioresCom int d{0}; e int n{5};, o que ocorre ao avaliar d != 0 && n / d > 2?

  3. Pergunta 3De unidades anterioresA divisão por subtrações sucessivas da aula 1.1 começa com q=0q = 0 e r=ar = a, e repete “enquanto r≥br \geq b, subtrair bb de rr e somar 1 a qq”. Com a=20a = 20 e b=5b = 5, quantas vezes se executa o corpo da repetição?

  4. Pergunta 4De unidades anterioresCom um int de 32 bits, o que o padrão garante sobre o valor de 46341 * 46341?

  5. Pergunta 5Um programa contém a cadeia de decisões if (score >= 50), que escreve “Aprovado”; else if (score >= 90), que escreve “Excelente”; e else, que escreve “Reprovado”. O que ele escreve com score igual a 95?

  6. Pergunta 6Qual das expressões seguintes denota a soma 1+2+⋯+n1 + 2 + \cdots + n?

  7. Pergunta 7Com int total{0};, o que escreve std::println("{}", total); depois de for (int i{0}; i < 5; ++i) { total += i; }?

  8. Pergunta 8Na divisão por subtrações sucessivas (q=0q = 0, r=ar = a; enquanto r≥br \geq b, rr passa a r−br - b e qq a q+1q + 1), que relação entre as variáveis vale cada vez que se avalia a condição?

  9. Pergunta 9Um procedimento parte de um inteiro nn qualquer (positivo, nulo ou negativo) e repete “enquanto n>0n > 0, subtrair 2 de nn”. Termina para todo nn?

  10. Pergunta 10Qual é o máximo divisor comum de 84 e 36?

  11. Pergunta 11Para decidir se 101 é primo testando divisores, até que divisor basta chegar?