Saltar al contenido
Topos Uranos

Resumen

Esta clase abre la segunda unidad del curso, dedicada a los datos y sus tipos. Explica para qué sirve la unidad: enseñar que todo dato de un programa vive en la memoria con un tipo que fija qué valores puede tomar, cuánto ocupa y qué operaciones admite, y que esos límites tienen consecuencias observables; presenta sus cuatro clases y el hilo que las une, desde la variable como casilla con nombre y valor hasta las conversiones entre tipos y las constantes; recuerda lo que la unidad da por sabido de la primera, que es escribir, compilar y ejecutar un programa que lee y escribe; formula el problema que la unidad resuelve, el de un programa correcto en apariencia cuyas cuentas no coinciden con las de la matemática, empezando por la suma 0.1+0.20.1 + 0.2, que en un computador no da exactamente 0.30.3; y muestra adónde conduce, en las unidades siguientes y en el curso Programación en C++ II.

Objetivos de aprendizaje

  1. Describir la secuencia de contenidos de la unidad y explicar qué aporta cada clase a la siguiente.
  2. Recordar lo necesario de la unidad 1 (el ciclo de compilar y ejecutar, la salida con formato, la lectura con std::cin y la lectura de los mensajes del compilador) y repasarlo si hace falta.
  3. Explicar, con un ejemplo, por qué un número de un programa no es un número de la matemática, y anticipar por qué 0.1+0.20.1 + 0.2 no es exactamente 0.30.3 en un computador.
  4. Reconocer qué se espera saber hacer al terminar la unidad, y distinguirlo de lo que se aprenderá en las unidades siguientes.

Evaluación de entrada

Antes de recorrer la unidad conviene medir el punto de partida. Esta evaluación es una autoevaluación: no se califica, y su único propósito es orientar el estudio. Las cuatro primeras preguntas comprueban lo que la unidad da por sabido de la primera: el seguimiento de un procedimiento paso a paso, la escritura de un número con dos decimales, el redondeo y la lectura de un mensaje de error. Las seis siguientes tocan, en el orden de las clases, las ideas centrales de la unidad. Nadie está obligado a acertarlas todavía, y en una de ellas «todavía no lo sé» es una respuesta honesta: cada respuesta, acertada o no, explica el punto y nombra la clase que lo trata. Las mismas destrezas se vuelven a medir al final, en la clase de síntesis.

Evaluación de entrada

Antes de comenzar la unidad, mide tu punto de partida. Es una autoevaluación breve: no se califica y su resultado se guarda solo en tu navegador.

  1. Pregunta 1De unidades anterioresUn procedimiento dice: «1. rr toma el valor 17. 2. rr toma el valor r−5r - 5. 3. rr toma el valor r−5r - 5». ¿Cuánto vale rr al terminar?

  2. Pregunta 2De unidades anteriores¿Qué escribe la sentencia std::println("{:.2f}", 2.0 / 3);?

  3. Pregunta 3De unidades anterioresSe quiere escribir 12.34612.346 con dos decimales, redondeando. ¿Qué se obtiene?

  4. Pregunta 4De unidades anterioresUn programa tiene en la línea 5 const int pages{12} y en la línea 6 std::println("{}", pages);. El compilador escribe 6:5: error: expected ',' or ';' before 'std'. ¿Dónde está el defecto?

  5. Pregunta 5Un programa declara int a{2}; y int b{7};, y después ejecuta a = b; y b = 10;. ¿Cuánto vale a al final?

  6. Pregunta 6¿Cómo se escribe el número 13 en base 2?

  7. Pregunta 7Un int de 4 bytes guarda 2 147 483 6472\,147\,483\,647, su valor máximo, y el programa le suma 1. ¿Qué se puede afirmar?

  8. Pregunta 8¿Tiene 1/31/3 una expresión decimal finita?

  9. Pregunta 9¿Qué escribe std::println("{}", 0.1 + 0.2);?

  10. Pregunta 10Un programa declara const double ratio{7 / 2}; y escribe ratio. ¿Qué aparece?