Test sobre Algoritmos y Paradigmas de Programación

Algoritmos y Paradigmas de Programación: Guía Completa

Pregunta 1 de 50%

La programación reactiva permite transformar y combinar streams mediante operadores, como por ejemplo Map y Filter.

Test: Paradigmas de programación y algoritmos, Algoritmos de ordenamiento y búsqueda, Recursividad, Programación funcional, Programación reactiva y concurrente, Eficiencia algorítmica, Programación, Programación orientada a objetos, Algoritmos y estructuras de datos

20 preguntas

Pregunta 1: La programación reactiva permite transformar y combinar streams mediante operadores, como por ejemplo Map y Filter.

A.

B. No

Explicación: Uno de los aspectos más poderosos de la programación reactiva es la capacidad de transformar y combinar streams mediante operadores. Map transforma cada elemento de un stream aplicando una función, y Filter crea un nuevo stream que solo contiene los elementos que cumplen un predicado.

Pregunta 2: En el ejemplo del sistema de monitoreo de tráfico urbano, ¿cuáles son los destinos o acciones finales a los que se suscribe el stream de `informeTrafico` tras su procesamiento?

A. Combinar nuevos streams de sensores en uno solo.

B. Actualizar un mapa de navegación en tiempo real.

C. Notificar a los usuarios afectados por la congestión.

D. Almacenar lotes de informes de tráfico en una base de datos cuando se alcanzan 50 informes.

Explicación: Según el material de estudio, el stream `informeTrafico` tiene varios suscriptores: uno para `actualizarMapaEnTiempoReal(datos)`, otro para `notificarUsuariosAfectados(datos)`, y un tercero que acumula informes y los `almacenarEnBaseDeDatos(lote)` cuando la lista alcanza los 50 elementos. La opción de combinar streams corresponde a la etapa inicial de creación de `sensorStream`, no a la suscripción final de `informeTrafico`.

Pregunta 3: Todos los algoritmos necesitan espacio adicional proporcional al tamaño de la entrada para ser considerados eficientes en términos de complejidad espacial.

A.

B. No

Explicación: La complejidad espacial evalúa la memoria adicional que requiere un algoritmo. Algunos algoritmos operan con memoria constante O(1), lo que significa que no requieren espacio adicional significativo, mientras que otros, como mergesort, necesitan espacio adicional proporcional al tamaño de la entrada (O(n)). Por lo tanto, no todos los algoritmos eficientes requieren espacio adicional proporcional.

Pregunta 4: ¿Cuál de las siguientes afirmaciones sobre la notación Big O y la eficiencia algorítmica es correcta, según los materiales de estudio?

A. La notación Big O describe el crecimiento del tiempo de ejecución o el consumo de memoria de un algoritmo en función del tamaño de la entrada, independientemente de los detalles de implementación.

B. Un algoritmo con complejidad temporal O(n²) siempre es preferible a uno con O(n log n) en aplicaciones reales debido a su simplicidad.

C. La complejidad espacial evalúa exclusivamente el tiempo que un algoritmo tarda en procesar los datos de entrada.

D. Las categorías de complejidad temporal, ordenadas de más eficiente a menos eficiente, comienzan con O(n³) y terminan con O(1).

Explicación: La notación Big O (O grande) se usa para describir cómo crece el tiempo de ejecución o el consumo de memoria de un algoritmo en función del tamaño de la entrada, abstraída de detalles específicos de implementación o hardware. La afirmación de que un algoritmo O(n²) es preferible a uno O(n log n) es incorrecta, ya que O(n log n) es más eficiente. La complejidad espacial evalúa la memoria adicional requerida, no el tiempo de ejecución. Finalmente, las categorías de complejidad temporal se ordenan de más eficiente a menos eficiente comenzando con O(1) y terminando con O(2^n), no al revés.

Pregunta 5: Patrick Wadler es el autor de un artículo titulado 'The essence of functional programming'.

A.

B. No

Explicación: Los materiales de estudio incluyen la referencia: Wadler, P. (1992). The essence of functional programming. In Proceedings of the 19th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (pp. 1–14). ACM, lo que confirma que Patrick Wadler es el autor de dicho artículo.