Saltar al contenido
Topos Uranos

Resumen

Esta clase abre la tercera unidad del curso, dedicada a las expresiones y sus operadores. Explica para qué sirve la unidad: enseñar a construir expresiones cuyo valor se pueda predecir con certeza, sabiendo qué operación se hace primero, de qué tipo es el resultado, qué efectos secundarios tiene y qué expresiones no tienen significado; presenta sus cuatro clases y el hilo que las une, desde la aritmética entera y real hasta los bits y la biblioteca matemática, pasando por las condiciones y por el catálogo del comportamiento indefinido; recuerda lo que la unidad da por sabido de la segunda, que es el tipo de cada dato, sus límites y sus conversiones; formula el problema que la unidad resuelve, el de un programa que compila sin un solo aviso y cuyas seis respuestas a seis preguntas escolares son todas equivocadas; 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 2 (los tipos enteros y reales, sus rangos, el desbordamiento y las conversiones) y repasarlo si hace falta.
  3. Anticipar, con un ejemplo, que el valor de una expresión depende de reglas de evaluación (la precedencia, el tipo de los operandos, el orden de los efectos) que no siempre coinciden con las de la matemática escolar.
  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 segunda: la división entre enteros, la escritura en base 2, la resta sin signo y el desbordamiento con signo. Las seis siguientes tocan, en el orden de las clases, las ideas centrales de la unidad, y varias de ellas parten de la matemática escolar o de la lógica elemental. Nadie está obligado a acertarlas todavía, y en dos 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 programa declara const double r{7 / 2}; y escribe r. ¿Qué aparece?

  2. Pregunta 2De unidades anteriores¿Cómo se escribe el número 13 en base 2, con ocho bits?

  3. Pregunta 3De unidades anteriores¿Qué escribe std::println("{}", 0u - 1); con un unsigned int de 32 bits?

  4. Pregunta 4De unidades anterioresUn programa ejecuta int count{std::numeric_limits<int>::max()}; y después count = count + 1;. ¿Qué garantiza la norma sobre el valor de count?

  5. Pregunta 5¿Cuánto valen 2+3⋅42 + 3 \cdot 4 y (2+3)⋅4(2 + 3) \cdot 4?

  6. Pregunta 6Según el teorema de la división de la matemática, con el resto rr sujeto a 0≤r<20 \leq r < 2, ¿cuáles son el cociente qq y el resto rr de −7-7 entre 22?

  7. Pregunta 7¿Cuál es la negación de «llueve y hace frío»?

  8. Pregunta 8¿Qué escribe std::println("{}", 3 < 5);?

  9. Pregunta 9Tras int a{5}; y int b{a++ * 2};, ¿cuánto valen a y b?

  10. Pregunta 10¿Qué escribe std::println("{}", 2 ^ 3);?