Lección 5 / 5 · Universidad

Comprueba código con IA: arreglos vacíos y tipos incorrectos

Define el contrato de una función, detecta dos fallos con cuatro pruebas y guarda el informe.

Una función calcula la media de [2, 4] y devuelve 3. No basta: ¿qué hace con un arreglo vacío, un único cero o una cadena en lugar de un número? Analizamos un ejemplo con errores creado para esta lección, no una cita de un servicio de IA.

Necesitas nociones básicas de arreglos, funciones y media aritmética. El ejemplo funciona sin cuenta de IA; sigue las reglas de tu curso al usar un asistente.

Tu recorrido

  1. Antes de ejecutar, anota los resultados esperados: [2,4] → 3; [0] → 0; [] → sin datos; ["3",5] → entrada inválida.
  2. Ejecuta las cuatro pruebas de la versión con fallos. Encuentra los dos casos que no cumplen el contrato.
  3. Elige la versión corregida y repite las mismas pruebas. Lee el código: el tipo se comprueba por separado del arreglo vacío.
  4. Descarga el informe. Inventa otro caso, calcula primero el resultado a mano y explica qué fallo podría detectar.

Laboratorio de casos límite

Comprobamos dos funciones preparadas con las mismas entradas sintéticas. Los valores pertenecen a los ejemplos; no se piden tus datos académicos.

Resultado esperado y real
EntradaEsperadoObtenidoPrueba

Anota primero los resultados esperados y después ejecuta las pruebas.

Código con fallos
function faultyMean(values) {
  if (!values.length) return {status: 'ok', mean: 0};
  return {status: 'ok', mean: values.reduce((sum, x) => sum + x, 0) / values.length};
}
Código con validación
function checkedMean(values) {
  if (!Array.isArray(values) || !values.every(Number.isFinite)) return {status: 'invalid', mean: null};
  if (!values.length) return {status: 'no_data', mean: null};
  const sum = values.reduce((total, value) => total + value, 0);
  if (!Number.isFinite(sum)) return {status: 'out_of_range', mean: null};
  return {status: 'ok', mean: sum / values.length};
}

El contrato de este ejercicio usa un arreglo normal procedente de JSON. Number.isFinite no convierte cadenas y rechaza NaN e Infinity. El arreglo vacío se comprueba por separado. Una suma muy grande puede superar el rango de Number: se indica out_of_range. La aritmética decimal de JavaScript tiene errores de representación; esta función educativa no sustituye una biblioteca numérica.

Dónde puede ayudar la IA

Describe primero la regla y tu comprobación. Puedes comentar esta plantilla con un asistente; el botón solo descarga el texto y no envía nada.

IA

He preparado el prompt. Léelo y ajústalo a tu tarea si hace falta. No se descarga ningún archivo.

Ayúdame a comprobar una función educativa de media para un arreglo procedente de JSON. Contrato: solo números finitos, sin convertir cadenas; arreglo vacío: status=no_data y mean=null; tipo incorrecto: status=invalid y mean=null; [0]: status=ok y mean=0. Calcula la media de entradas válidas no vacías. Si la suma supera el rango finito de Number, devuelve out_of_range. Primero prepara una tabla de pruebas para [2,4], [0], [], ["3",5] y después explica la corrección. No digas que cuatro pruebas demuestran la ausencia de todos los errores. Explica los límites de precisión de los números de JavaScript.

Cambia una condición

Otro caso: [-2, 2, 6]. Calcula primero la media e indica el status esperado. Después propón una prueba de tipo incorrecto. Para practicar en tu equipo, sigue las reglas y usa el entorno de tu curso. Esta página no ejecuta código arbitrario escrito por ti.

Qué mostrar al terminar

Un contrato de entrada, el informe de cuatro pruebas y un contraejemplo propio explicado. Añade la comprobación de la función de cálculo a tu proyecto universitario.

Comprueba y marca tus pasos

La pregunta se comprueba automáticamente. Las cuatro marcas son tu autocomprobación, no una evaluación independiente.

¿En qué se diferencian [] y [0] según nuestro contrato?

Ejemplo educativo de Stack Active · 18.10.2026. Referencia técnica: MDN.