¡Bienvenido a esta sección! Nuestro objetivo fundamental es construir un "manual" que cubra los aspectos esenciales del maravilloso mundo de la programación de ordenadores. En esta sección aprenderás los fundamentos de la algoritmia (Que no te asuste la palabra, te aseguro que no duele, ya lo veras): La Algoritmia es la ciencia y arte de diseñar algoritmos para la resolución sistemática o automatizada de problemas de cualquier índole.
Aun cuando no tengas una experiencia previa en la programación de ordenadores, es seguro que a lo largo de tu vida has ejecutado muchos algoritmos (Aunque no me creas). Un algoritmo es la especificación detallada de los pasos necesarios para llevar a cabo una tarea específica. En la escuela, por ejemplo, aprendimos una serie de pasos para realizar sumas, restas, multiplicaciones y divisiones, estos son algoritmos (de hecho debemos la palabra 'algoritmo' al matemático musulmán Muhammad ibn Musa al-JwarizmiMuhammad ibn Musa al-Jwarizmi: Conocido generalmente como al-Juarismi, fue un matemático, astrónomo y geógrafo persa musulmán chií, que vivió aproximadamente entre 780 y 850.). Una receta de cocina es uno de los ejemplos más claros de algoritmo. El conjunto de trámites que debe realizar en cualquier institución pública para la expedición de un documento, como por ejemplo, la licencia de conducir, también es un algoritmo (¿Viste que no dolió? ¿Ahora si me crees?). En esta sección, vamos a aprender los fundamentos básicos para crear programas. Un programa es un algoritmo hecho para ser ejecutado por un ordenador.
La algoritmia es una ciencia: está sustentada en un conjunto de modelos matemáticos (Suena interesante ¿verdad?, vamos! no seas aguafiestas). Existen una cantidad de técnicas que han sido ampliamente estudiadas por los científicos de la computación para resolver problemas que aparecen en diversas áreas de la ciencia. Por ejemplo, la traducción de lenguajes, la clasificación y ordenación de datos, los algoritmos para cifrado y el cálculo numérico, son algunas de las áreas donde aún en la actualidad, se mantiene muy activa la investigación de nuevas técnicas y el desarrollo de algoritmos y programas más eficientes.
La algoritmia también es un arte, pues la creación de un algoritmo requiere de grandes dosis de heurísticaHeuristica: Capacidad de un sistema para realizar de forma inmediata innovaciones positivas para sus fines, creatividad, dedicación, persistencia y paciencia. La creación de un programa va a estar muy influida por factores externos al modelo matemático (ves! ya no debes ser un genio de las matemáticas), como por ejemplo, el lenguaje de programación que se va a usar, las limitaciones físicas que imponen los ordenadores o incluso los plazos para la finalización de un proyecto. Por otro lado, muchos programadores buscan un aspecto estético en la realización de sus programas; para esas personas, escribir programas es un ejercicio semejante a hacer literatura.
Por los motivos expuestos anteriormente, pretendo en esta sección mostrar ambos aspectos de la algoritmia: por un lado, presentaré técnicas que ya son clásicas en la programación, y por otro lado, mostrar los problemas que pueden surgir al convertir la especificación del algoritmo en un programa que se ejecute satisfactoriamente. Una analogía muy ilustrativa es la de comparar un algoritmo con una receta de cocina, mientras que el programa sería análogo al plato preparado siguiendo dicha receta. Si fueras un cocinero novato, aun cuando tengas la receta de cocina en tu mano y sigas metódicamente todos sus pasos, puedes encontrar que al final el plato no es todo lo apetitoso que deseabas, es ahí donde entra en juego el arte, la capacidad de innovar y refinar la receta con un toque personal. Así como esa capacidad de integrar la parte científica y técnica con la parte artística hace la diferencia entre el cocinero novel y el chef más avezado; también la hace entre un programador principiante y un experto. Espero que las recetas que consigas en esta sección te sean muy útiles como base para crear las tuyas propias.
Hay que hacer una advertencia inicial: Esta sección por sí sola no pretende, ni puede ser una obra completa para la enseñanza de la programación (Es un tema infinitamente grande). Debes complementar el estudio de la algoritmia, con el estudio de uno o varios lenguajes de programación. Te recomiendo que realices todos los algoritmos presentados en esta sección, usando tu lenguaje de programación favorito. Te invito a practicar: La única forma de aprender a nadar, es lanzarse al agua y nadar. Trataré de incluir, en medida de lo posible, ejercicios al final de cada sección. Al final de cada contenido te podría sugerir algunos proyectos de programación que puedes realizar. La realización de estos proyectos es beneficiosa por varios motivos: primero, ayudará a afianzar los conocimientos adquiridos en cada sección; segundo permitirá aplicar las técnicas estudiadas en problemas prácticos, y tercero: la programación puede convertirse en un hobbie que brinda muchas satisfacciones.