Saltar para o conteúdo
Topos Uranos

Resumo

Esta aula abre a segunda unidade do curso, dedicada aos dados e seus tipos. Explica para que serve a unidade: ensinar que todo dado de um programa vive na memória com um tipo que fixa quais valores ele pode assumir, quanto espaço ocupa e quais operações admite, e que esses limites têm consequências observáveis; apresenta suas quatro aulas e o fio que as une, desde a variável como posição de memória com nome e valor até as conversões entre tipos e as constantes; recorda o que a unidade dá por sabido da primeira, que é escrever, compilar e executar um programa que lê e escreve; formula o problema que a unidade resolve, o de um programa correto na aparência cujas contas não coincidem com as da matemática, começando pela soma 0.1+0.20.1 + 0.2, que num computador não dá exatamente 0.30.3; 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 para a seguinte.
  2. Recordar o necessário da unidade 1 (o ciclo de compilar e executar, a saída com formato, a leitura com std::cin e a leitura das mensagens do compilador) e revisá-lo se for preciso.
  3. Explicar, com um exemplo, por que um número de um programa não é um número da matemática, e antecipar por que 0.1+0.20.1 + 0.2 não é exatamente 0.30.3 num computador.
  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 primeira: o acompanhamento de um procedimento passo a passo, a escrita de um número com duas casas decimais, o arredondamento e a leitura de uma mensagem de erro. As seis seguintes tocam, na ordem das aulas, as ideias centrais da unidade. Ninguém é obrigado a acertá-las ainda, e numa 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 procedimento diz: “1. rr recebe o valor 17. 2. rr recebe o valor r−5r - 5. 3. rr recebe o valor r−5r - 5”. Quanto vale rr ao terminar?

  2. Pergunta 2De unidades anterioresO que escreve a instrução std::println("{:.2f}", 2.0 / 3);?

  3. Pergunta 3De unidades anterioresQuer-se escrever 12.34612.346 com duas casas decimais, arredondando. O que se obtém?

  4. Pergunta 4De unidades anterioresUm programa tem na linha 5 const int pages{12} e na linha 6 std::println("{}", pages);. O compilador escreve 6:5: error: expected ',' or ';' before 'std'. Onde está o defeito?

  5. Pergunta 5Um programa declara int a{2}; e int b{7};, e depois executa a = b; e b = 10;. Quanto vale a no final?

  6. Pergunta 6Como se escreve o número 13 em base 2?

  7. Pergunta 7Um int de 4 bytes guarda 2 147 483 6472\,147\,483\,647, seu valor máximo, e o programa lhe soma 1. O que se pode afirmar?

  8. Pergunta 81/31/3 tem desenvolvimento decimal finito?

  9. Pergunta 9O que escreve std::println("{}", 0.1 + 0.2);?

  10. Pergunta 10Um programa declara const double ratio{7 / 2}; e escreve ratio. O que aparece?