Saltar al contenido
Topos Uranos

Resumen

Esta clase abre la sexta unidad del curso, dedicada a los datos compuestos. Explica para qué sirve la unidad: enseñar a representar colecciones de datos (secuencias de tamaño fijo y variable, tablas y registros) y a procesarlas con los algoritmos básicos, escritos a mano y tomados de la biblioteca, estimando cuánto cuestan; presenta sus seis clases y el hilo que las une; recuerda lo que la unidad da por sabido, sobre todo los bucles con invariante y el paso por referencia constante; formula el problema que la unidad resuelve, el de un programa que debe guardar datos cuya cantidad no conoce y que, escrito con variables sueltas, calla en silencio los que le sobran; anticipa el costo como segunda medida de un algoritmo, junto a su corrección; 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 los bucles, sus invariantes y el paso de parámetros (por valor, por referencia y por referencia constante), y repasarlos si hace falta.
  3. Anticipar, con un ejemplo, el costo de un algoritmo como segunda medida de su calidad, junto a su corrección.
  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: el invariante del bucle que busca un máximo, el modo de paso de un parámetro grande, el número de vueltas de dos bucles anidados y la aritmética sin signo. Las seis siguientes tocan, en el orden de las clases, las ideas centrales de la unidad: los índices válidos de una secuencia, la creación de un vector, el número de veces que puede dividirse un tamaño por la mitad, la búsqueda en datos ordenados, el doble índice de una tabla y el peligro de guardar en colecciones separadas los datos de una misma entidad. Nadie está obligado a acertarlas todavía, y en algunas «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 anterioresEl fragmento int largest{0}; int t{}; while (std::cin >> t) { if (t > largest) { largest = t; } } debe dejar en largest la mayor de las temperaturas leídas. ¿Con qué entrada falla?

  2. Pregunta 2De unidades anterioresUna función calcula cuántas vocales tiene un texto de un millón de caracteres, guardado en un std::string, y no lo modifica. ¿Cómo conviene declarar su parámetro?

  3. Pregunta 3De unidades anteriores¿Cuántas veces se ejecuta ++count en for (int i{0}; i < 6; ++i) { for (int j{0}; j < i; ++j) { ++count; } }?

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

  5. Pregunta 5En una secuencia de nn elementos numerados como en C++, ¿qué índices ii designan un elemento?

  6. Pregunta 6¿Qué contiene v después de std::vector<int> v(3, 7);?

  7. Pregunta 7¿Cuántas vueltas da for (int m{1024}; m > 1; m /= 2) { ... }?

  8. Pregunta 8Una guía tiene un millón de nombres en orden alfabético. Para encontrar uno, se la abre por la mitad, se descarta la mitad donde el nombre no puede estar, y se repite con la otra. ¿Cuántas veces, como máximo, hay que abrirla?

  9. Pregunta 9Con std::vector<std::vector<int>> t{{1, 2, 3}, {4, 5, 6}};, ¿cuánto valen t[1][0] y t.size()?

  10. Pregunta 10Un programa guarda los nombres de un grupo en un vector y sus notas en otro, de modo que la nota grades[i] es la de names[i]. Si ordena solo el vector de las notas, ¿qué ocurre?