> Manuales > Curso de programación

Algoritmos expresados con palabras y sus correspondientes programas expresados con el lenguaje Javascript, una clase práctica para afianzar conoceptos básicos de programación.

En esta entrega vamos a ahondar de manera más práctica en el concepto de algoritmo y vamos a ver nuestros primeros programas en el lenguaje de programación Javascript. Es una clase del Curso de Programación que realizamos recientemente en DesarrolloWeb.com / EscuelaIT.

En esta clase realizamos un par de ejercicios interesantes que nos ayudan a asentar de manera empírica los conocimientos de la primera charla de Miguel Angel Alvarez, dedicada a los algoritmos. De hecho, esta parte con los primeros algoritmos de Javascript y la parte anterior, fueron realizados en el mismo bloque o misma sesión. En realidad forman parte de la misma clase, simplemente nosotros la hemos dividido para que el estudiante la pueda digerir mejor.

La este segmento de la clase se divide a su vez en dos ejercicios realizados para entender mejor los algoritmos. Por una parte realizamos la descomposición en años, meses y días un número de días dado. Por otra parte calculamos la distancia entre dos puntos en un eje de coordenadas 2D.

Ejemplo de algoritmo: años, meses y días vividos

Vamos a suponer que pregunto a una persona (usuario) cuántos días ha vivido. Me contesta algo como 10.000. Entonces quiero hacer un algoritmo y su correspondiente programa en Javascript para convertir ese número de días en un número de años, número de meses y días restantes.

Para ese valor de días, 10.000, el programa nos devolvería un dato como este: "Ha vivido 27 años, 4 meses y 25 días.". En simples palabras, el algoritmo que usaríamos para obtener ese resultado lo podemos ver a continuación.

Nota: Para simplificar nuestros cálculos vamos a suponer que todos los años tienen 365 días y nos olvidamos de los años bisiestos. También supondremos todos los meses igual a 30 días.

1. Pido el número de días vividos
2. Calculo el número de años / 365
3. A los días vividos les quito los días de los años calculados. Esta operación es el resto de la división de los días vividos / 365. Ese resto de la división son los días restantes que necesito para seguidamente calcular el número de meses.
4. Sobre los días restantes calculo el número de meses / 30
5. A los días restantes les quito los días de los mese calculados. Es la misma operación del resto de la división de los días restantes / 30. Ese resto de la división son los días restantes que me quedan.
6. Muestro los resultados, años, meses y días restantes calculados

En código Javascript este algoritmo lo puedes ver a continuación.

var diasVida = parseInt(prompt("Cuántos días has vivido",""));

var numAnos = Math.floor(diasVida / 365);
var diasRestantes = diasVida % 365 ;
var numMeses = Math.floor(diasRestantes / 30);
diasRestantes = diasRestantes % 30;

alert("Ha vivido " + numAnos + " años, " + numMeses + " meses y " + diasRestantes + " días.");

Si entendiste el algoritmo, este ejercicio no requiere muchas explicaciones. Simplemente para aclaraciones adicionales es mejor que veas el vídeo de la clase al final de este texto.

Es un ejemplo interesante porque podemos ver el algoritmo como una serie de pasos secuenciales. Para calcular unos necesito haber calculado los anteriores.

Ejemplo de algoritmo: Distancia entre dos puntos

Si nos dan dos puntos en un eje de coordenadas de 2 dimensiones, podemos calcular la distancia entre ellos. Si esos puntos se encuentran alineados en la horizontal o en la vertical, calcular la distancia es muy fácil, pues es el resultado de hacer una simple resta.

¿Pero qué pasa si esos puntos no están alineados, son dos puntos cualquiera? entonces la tarea no es tan sencilla.

En realidad tampoco es tan complejo, solo se trata de un problema de trigonometría que, si recordamos el Teorema de Pitágoras es muy sencillo de resolver. Si os fijáis, la distancia entre dos puntos es la hipotenusa de un triángulo rectángulo y el Teorema dice así: En un triángulo rectángulo la hipotenusa es igual a la raíz cuadrada de la suma de los cuadrados de los catetos. Eso es lo que expresa esa fórmula.

Si no lo entendéis todavía no os preocupéis, existen decenas de vídeos en Youtube que lo explican mejor que yo y más despacio. De todos modos, vamos a verlo paso por paso, aunque nos centraremos no tanto en la trigonometría como en expresar la solución en términos de un algoritmo.

1. Pido la coordenada x del punto a
2. Pido la coordenada y del punto a
3. Pido la coordenada x del punto b
4. Pido la coordenada y del punto b
5. Calculo el tamaño de la componente horizontal (cateto 1)
6. Calculo el tamaño de la componente vertical (cateto 2)
7. Elevo al cuadrado componentes vertical y horizontal 8. Las sumo
9. Aplico la raíz cuadrada
10. Muestro la distancia

Eso en código fuente Javascript es el siguiente.

var ax = prompt("Dame punto a coordenada x","");
var ay = prompt("Dame punto a coordenada y","");
var bx = prompt("Dame punto b coordenada x","");
var by = prompt("Dame punto b coordenada y","");

var comp_horizontal = (bx-ax);
var comp_vertical = (by-ay);
comp_horizontal = comp_horizontal * comp_horizontal;
comp_vertical = comp_vertical * comp_vertical;
var distancia = Math.sqrt(comp_horizontal + comp_vertical);

alert(distancia);

La importancia de los algoritmos

Para acabar volvemos sobre algo que ya se había expresado anteriormente, la importancia de los algoritmos en la programación.

"En verdad son más importantes los algoritmos que el código"

¿Os parece correcta esa frase? Pensar en lo que hemos comentado, un programa no es más que la expresión de un algoritmo en un lenguaje de programación. El algoritmo, ese concepto que hemos conocido hoy es más importante por ser común a todos los lenguajes. El código no es más que la expresión de ese algoritmo. Es como una receta de cocina, la Paella, conocida en cualquier parte del mundo. Puedes escribir la receta de ese delicioso plato en español, valenciano o catalán, francés, japonés, etc. Pero el cocinero cuando se ponga a hacer la paella realizará los mismos pasos exactamente independientemente del idioma que hable. Así que es más importante el proceso en si que el idioma con el que quieras expresar la receta.

Conclusión

Hemos aprendido qué es un algoritmo, qué es un programa, que escribir código en un lenguaje de programación es una pequeña tarea de las que un programador debe realizar. Hemos aprendido que los algoritmos deben diseñarse con cuidado, porque son la parte más importante de un programa.

A continuación puedes encontrar el vídeo con la grabación de esta clase. La clase fue emitida en directo, pero aquí tienes la grabación para verla en el momento que desees.

Para acabar os dejo unos ejercicios para que penséis sobre ellos:

Diseñar un algoritmo para:
Hacer una tortilla
Cruzar la calle sin ser atropellado

Nota: Para cruzar la calle observareis que tenéis que preguntaros cosas que serán necesarias para algoritmos más complejos y que forman parte de las siguientes clases del curso.

Hacer el algoritmo y luego el programa en Javascript:
Conversor de metros a litros
Calcular el área de un círculo

Miguel Angel Alvarez

Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...

Manual