Saltar para o conteúdo
Topos Uranos

Resumo

Esta aula abre a terceira unidade do curso, dedicada às expressões e seus operadores. Explica para que serve a unidade: ensinar a construir expressões cujo valor se possa prever com certeza, sabendo que operação se faz primeiro, de que tipo é o resultado, que efeitos colaterais tem e que expressões não têm significado; apresenta suas quatro aulas e o fio que as une, desde a aritmética inteira e real até os bits e a biblioteca matemática, passando pelas condições e pelo catálogo do comportamento indefinido; recorda o que a unidade dá por sabido da segunda, que é o tipo de cada dado, seus limites e suas conversões; formula o problema que a unidade resolve, o de um programa que compila sem um único aviso e cujas respostas a seis perguntas escolares estão todas erradas, quando não faltam; 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 o necessário da unidade 2 (os tipos inteiros e reais, seus intervalos, o estouro e as conversões) e revisá-lo se for preciso.
  3. Antecipar, com um exemplo, que o valor de uma expressão depende de regras de avaliação (a precedência, o tipo dos operandos, a ordem dos efeitos) que nem sempre coincidem com as da matemática escolar.
  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 da segunda: a divisão entre inteiros, a escrita em base 2, a subtração sem sinal e o estouro com sinal. As seis seguintes tocam, na ordem das aulas, as ideias centrais da unidade, e várias delas partem da matemática escolar ou da lógica elementar. Ninguém é obrigado a acertá-las ainda, e em duas 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 anterioresUm programa declara const double r{7 / 2}; e escreve r. O que aparece?

  2. Pergunta 2De unidades anterioresComo se escreve o número 13 em base 2, com oito bits?

  3. Pergunta 3De unidades anterioresO que escreve std::println("{}", 0u - 1); com um unsigned int de 32 bits?

  4. Pergunta 4De unidades anterioresUm programa executa int count{std::numeric_limits<int>::max()}; e depois count = count + 1;. O que o padrão garante sobre o valor de count?

  5. Pergunta 5Quanto valem 2+3⋅42 + 3 \cdot 4 e (2+3)⋅4(2 + 3) \cdot 4?

  6. Pergunta 6Segundo o teorema da divisão da matemática, com o resto rr sujeito a 0≤r<20 \leq r < 2, quais são o quociente qq e o resto rr de −7-7 por 22?

  7. Pergunta 7Qual é a negação de “chove e faz frio”?

  8. Pergunta 8O que escreve std::println("{}", 3 < 5);?

  9. Pergunta 9Depois de int a{5}; e int b{a++ * 2};, quanto valem a e b?

  10. Pergunta 10O que escreve std::println("{}", 2 ^ 3);?