6. Del problema físico al algoritmo: datos, reglas y resultados

Un programa de física no empieza por una fórmula. Empieza por una pregunta concreta, datos con significado y una secuencia de pasos que permite obtener y comprobar un resultado.

6.1 Resolver no es solo calcular

Para resolver un problema físico con código necesitamos traducir una situación a una secuencia de decisiones. El programa debe saber qué recibe, qué relación puede usar, qué resultado entrega y en qué condiciones esa relación es válida.

Consideremos esta pregunta: «Un robot parte de una posición conocida y mantiene una velocidad constante. ¿Dónde estará después de cierto tiempo?». Antes de programar debemos identificar las magnitudes, las unidades y el supuesto de velocidad constante.

Entrada → procesamiento → salida → comprobación.

6.2 Formular una pregunta precisa

Una pregunta imprecisa lleva a un algoritmo ambiguo. «Calcular el movimiento» no indica si buscamos posición, velocidad, distancia recorrida o una animación. Tampoco indica el instante, la referencia ni el modelo.

Una versión útil sería: «Calcular la posición de un robot, medida en metros respecto de un origen elegido, después de 4 s, suponiendo movimiento rectilíneo con velocidad constante de 3 m/s y posición inicial de 2 m».

  • Qué queremos obtener: posición final.
  • Qué sistema y referencia usamos: robot, eje de posiciones en metros.
  • Qué datos conocemos: posición inicial, velocidad y tiempo.
  • Qué supuesto usamos: velocidad constante.

6.3 Separar datos de entrada y resultados

Los datos de entrada son valores necesarios antes de ejecutar el algoritmo. Los resultados se calculan a partir de ellos. No debemos pedir como entrada un valor que el algoritmo tiene que producir.

RolValorUnidad
EntradaPosición inicialm
EntradaVelocidadm/s
EntradaTiempo transcurridos
Resultado intermedioDesplazamientom
SalidaPosición finalm

Los resultados intermedios ayudan a explicar y comprobar el algoritmo. En problemas más complejos también facilitan localizar un error.

6.4 Elegir una regla física

La regla debe corresponder al modelo declarado. Con velocidad constante usamos desplazamiento = velocidad × tiempo y posición final = posición inicial + desplazamiento.

Las unidades también permiten revisar la regla: (m/s) × s = m. Si al combinar entradas no obtenemos la unidad esperada, conviene detenerse antes de escribir más código.

desplazamientoM = velocidadMps × tiempoS
posicionFinalM = posicionInicialM + desplazamientoM

Esta regla no incluye aceleración, cambios de dirección ni límites del recorrido. Esas ausencias son parte del alcance del algoritmo.

6.5 Escribir el algoritmo antes del lenguaje

El pseudocódigo permite expresar pasos sin depender de la sintaxis de JavaScript. Sirve para revisar la lógica con mayor facilidad.

RECIBIR posición inicial, velocidad y tiempo
CALCULAR desplazamiento como velocidad por tiempo
CALCULAR posición final como posición inicial más desplazamiento
MOSTRAR desplazamiento y posición final

Este algoritmo es secuencial: cada paso utiliza resultados de pasos anteriores. Cuando aparezcan decisiones o repeticiones agregaremos condiciones y bucles.

6.6 Implementar una función

Una función concentra una regla bajo un nombre. Así podemos reutilizarla en un ejercicio, una interfaz o una simulación sin copiar la fórmula.

function calcularMovimientoUniforme(posicionInicialM, velocidadMps, tiempoS) {
  const desplazamientoM = velocidadMps * tiempoS;
  const posicionFinalM = posicionInicialM + desplazamientoM;

  return { desplazamientoM, posicionFinalM };
}

console.log(calcularMovimientoUniforme(2, 3, 4));

El resultado contiene desplazamientoM: 12 y posicionFinalM: 14. Devolver un objeto conserva los nombres y reduce el riesgo de confundir el orden de varios resultados.

6.7 Validar las entradas

Una fórmula puede producir un número aun cuando el dato no tenga sentido dentro del problema. Por ejemplo, un tiempo negativo no representa un intervalo transcurrido si nuestra pregunta comienza en el instante inicial.

function calcularPosicion(posicionInicialM, velocidadMps, tiempoS) {
  if (tiempoS < 0) {
    throw new Error("El tiempo debe ser mayor o igual que cero.");
  }
  return posicionInicialM + velocidadMps * tiempoS;
}

console.log(calcularPosicion(2, 3, 4));

La validación depende del contexto. Una velocidad negativa puede ser totalmente válida si el eje admite dos sentidos; no debemos rechazarla sin una razón física o de interfaz.

6.8 Laboratorio: datos, regla y resultado

Elegí las entradas del problema y presioná «Calcular». El laboratorio muestra cada etapa del algoritmo: datos, desplazamiento intermedio y posición final. Si elegís un tiempo negativo, informa que esa entrada no está admitida por esta versión del problema.

Las entradas y resultados se muestran también debajo del gráfico.
● Datos de entrada● Regla de cálculo● Resultados
Desplazamiento12,00 m
Posición final14,00 m
Estado de entradaVálida

Paso actual: Listo para calcular con los datos del ejemplo.

Entradas válidas. Presioná Calcular para ejecutar el algoritmo.

  • Con velocidad 0, el resultado final debe coincidir con la posición inicial.
  • Con velocidad −3 m/s y tiempo 4 s, el desplazamiento es −12 m y la posición final, −10 m.
  • Con tiempo negativo, el cálculo se detiene antes de aplicar la fórmula.
  • Duplicá el tiempo con la misma velocidad: se duplica el desplazamiento, pero no necesariamente la posición final.

6.9 Mostrar resultados con significado

Un resultado como 14 es insuficiente fuera de contexto. La interfaz o el registro debe indicar qué representa, en qué unidad está expresado y, cuando sea necesario, qué modelo se utilizó.

En una pantalla puede ser conveniente redondear para facilitar la lectura. Conviene mantener el valor interno con la precisión necesaria y decidir el formato solo al mostrarlo.

function calcularMovimientoUniforme(posicionInicialM, velocidadMps, tiempoS) {
  const desplazamientoM = velocidadMps * tiempoS;
  return { desplazamientoM, posicionFinalM: posicionInicialM + desplazamientoM };
}

const resultado = calcularMovimientoUniforme(2, 3, 4);

console.log("Desplazamiento:", resultado.desplazamientoM.toFixed(2), "m");
console.log("Posición final:", resultado.posicionFinalM.toFixed(2), "m");

6.10 Comprobar el algoritmo

La prueba de un algoritmo no se limita a verificar que no haya errores de sintaxis. Debemos elegir casos cuyo resultado podamos anticipar.

  • En tiempo 0, la posición final debe ser la posición inicial.
  • Con velocidad 0, el desplazamiento debe ser 0.
  • Con velocidad positiva, la posición debe aumentar al aumentar el tiempo.
  • Con velocidad negativa, la posición debe disminuir respecto del inicio.
  • Las unidades de cada resultado deben ser coherentes.

Estas pruebas comprueban la implementación del modelo. Para comprobar si el modelo representa un fenómeno real también necesitamos compararlo con mediciones independientes.

6.11 Ejercicio propuesto

Diseñá un algoritmo para calcular la posición final de una bicicleta que parte de −4 m y se mueve con velocidad constante de 1,5 m/s durante 6 s.

  1. Escribí la entrada, los resultados intermedios y la salida.
  2. Redactá el pseudocódigo.
  3. Calculá el resultado a mano y luego en JavaScript.
  4. Indicá una prueba simple para la función.
Ver solución y código

Las entradas son −4 m, 1,5 m/s y 6 s. El desplazamiento es 9 m y la posición final es 5 m. Una prueba simple es evaluar tiempo 0 y verificar que devuelve −4 m.

function posicionFinal(posicionInicialM, velocidadMps, tiempoS) {
  if (tiempoS < 0) throw new Error("Tiempo inválido");
  const desplazamientoM = velocidadMps * tiempoS;
  return posicionInicialM + desplazamientoM;
}

console.log(posicionFinal(-4, 1.5, 6));
console.log(posicionFinal(-4, 1.5, 0));

6.12 Ideas para recordar

  • Un algoritmo comienza por una pregunta bien definida.
  • Las entradas, reglas, resultados intermedios y salidas deben tener significado y unidades.
  • El pseudocódigo permite revisar la lógica antes de escribir sintaxis.
  • Validar entradas evita calcular resultados fuera del alcance previsto.
  • Las pruebas simples verifican el algoritmo; las mediciones evalúan el modelo físico.

En el próximo tema comenzaremos con las magnitudes físicas y unidades del Sistema Internacional, el lenguaje común para comunicar y combinar mediciones.