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.
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.
| Rol | Valor | Unidad |
|---|---|---|
| Entrada | Posición inicial | m |
| Entrada | Velocidad | m/s |
| Entrada | Tiempo transcurrido | s |
| Resultado intermedio | Desplazamiento | m |
| Salida | Posición final | m |
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.
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.
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.
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.
- Escribí la entrada, los resultados intermedios y la salida.
- Redactá el pseudocódigo.
- Calculá el resultado a mano y luego en JavaScript.
- 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.