07 enero 2009

El algoritmo: ¿de qué se trata esta onda?

Seguramente has escuchado hablar de la palabra algoritmo, pero realmente ¿qué es?  O mejor dicho, ¿de qué se trata?  Y una vez que sabes que rollo, ¿cómo lo ejecuta la computadora?  Ante esta incógnita, voy a hablar un poco (o mejor dicho, escribir un poco) acerca de los secretos recónditos de un algoritmo.

La Real Academia de la Lengua (o RAE para los cuates), nos dice que un algoritmo es “Conjunto ordenado y finito de operaciones que permite hallar la solución de un problema”.  Con esto creo que queda muy claro de qué trata el rollo.

Sin embargo, ¿qué chiste tiene escribir aquí lo que dice la RAE?  Voy a adentrarme un poco a las raíces para remontarnos en la historia chirolira acerca del origen de la palabra algoritmo.  Esta palabra viene del apodo de Mohammed Ibn Musa Abu Djefar, mejor conocido como Al-Khwarismi (en español: Aljuarismi), un sabio musulmán que escribió más o menos alrededor del año 830 un libro sobre las matemáticas, concretamente sobre el álgebra.

Como ya se definió antes, un algoritmo consta de los pasos para resolver algún problema, algo así como una receta de cocina: si sigo los pasos, llego a obtener un platillo interesante (y esperemos que sabroso también).

Vamos viendo como se “ejecutaría” un algoritmo de cocina (o sea, una receta).  En primer lugar tenemos una entrada que constaría de los ingredientes necesarios.  En segundo lugar tenemos todo el equipo (hardware) necesario para cocinar (como ollas, cubiertos, platos, etc.), los cuales formarían la unidad de procesamiento.  Aunque no se note, existe una parte en el cerebro del cocinero que controla el proceso, cosa conocida como la unidad de control.  Y al final se tiene el platillo terminado, o sea la salida.  Estos componentes se pueden observar en la siguiente imagen:

 
 Llevando nuestra receta a la computadora, tenemos que tomar en cuenta otro elemento importantísimo y vital: la memoria.  Aquí cambia poquito como se procesa información en comparación a nuestra receta culinaria.
  • La entrada consiste en todos los datos que se van a procesar, así como el programa que dice qué se va a hacer con estos datos.
  • La memoria almacena la entrada y los resultados de la unidad de procesamiento.
  • La unidad de control lee el programa y lo traduce en una serie de operaciones de máquina.
  • La unidad de procesamiento realiza todas las operaciones (sumas, multiplicaciones, etc.) sobre la información que recibe de la memoria.
  • La salida son los resultados de la unidad de procesamiento, almacenados en la memoria y transmitidos a un dispositivo de salida.

En un diagrama, lo veríamos así:

 
 Los algoritmos se pueden representar básicamente de dos maneras: de manera gráfica y con texto.  Hay 2 o 3 representaciones gráficas donde la más conocida es el diagrama de flujo.  Estos diagramas usan símbolos para representar acciones y son tan conocidos que también son usados fuera del ámbito computacional.  Otro diagrama menos conocido, y que no me gusta para nada, son los diagramas NS o de Nassi-Schneiderman que representa un algoritmo en un bloque cuadrado con varios rectángulos interiores.  En cuanto a representaciones basados en texto, está el pseudocódigo, la cual no es más que todos los pasos escritos uno tras otro.

Escribir los algoritmos es algo fundamental para el buen programador.  Muchos de mis alumnos creen que es una pérdida de tiempo sentarse a pensar una solución, sin embargo es muy importante y te ahorra mucho trabajo, porque el error de programación más difícil de corregir es el lógico, el que surge de un algoritmo que no resuelve el problema.  Los errores de sintáxis, o sea de cosas mal escritas (te falta un punto y coma o un espacio, escribiste mal el nombre de la instrucción, etc.) se corrigen rápido ya que el compilador te indica en qué línea te equivocaste.  Pero ante errores lógicos no hay nada que pueda hacer el compilador.

Aunque vivió muchísimos años antes de los rollos de las computadoras y los algoritmos, Sócrates dijo algo que aplica a los errores lógicos: decía que no hay peor mal que la ignorancia en acción.  Te reto a que no dejes que la ignorancia entre en acción y planifiques tus algoritmos.  No es necesario que tengas que hacer un diagrama de flujo para cada algoritmo que hagas, pero encuentra una herramienta que te sea útil para pensar tu solución.  Por ejemplo, yo trato de diagramar mis sistemas con una mezcla de diagramas de Warnier con código en C.  Eso me funciona, pero tu debes de encontrar tu propia forma de solucionar retos.

¡Hasta la próxima!

23 comentarios:

oscar daniel valdivia medina 3a tia dijo...

oscar daniel valdivia medina 3a tia

yo pienso que esto de los algoritmos parece algo interesante aunque no le entiendo muy bien y parece algo complicado. pero yo pienso que una vez que empecemos a ver bien el tema, nos lo explique y hagamos ejercicios le ire entendiendo mejor. aunque parece auq es algo complicado y un poco dificil pero yo creo que con la practica se hara cada vez mas facil y tambien parece que debemos pensar muchos para resolverlos.

Mariana Elizabeth Ruiz Aguilar 3°A T.I.A. dijo...

Yo suelo usar mucho mi logica para resolver algo que quiero saber pero nunca lo habia aplicado como un algoritmo y aunque el blog use un lenguaje que en algunas partes no entiendo, lo que comprendi fue como cada paso de lo que hay que hacer para resolver un problema y parece ser facil hacer eso, espero que me valla bien en esta materia.
:)

Anónimo dijo...

Cynthia Gonzalez Gomez 3°A T.I.A.

nunca me habia puesto a pensar que para realizar todas las actividades que hacemos siempre son gracias a los algoritmos,
porque realizamos paso por paso, seria imposible si hicieramos los pasos salteados o no necesariamente imposible pero si algo complicado.
por lo que lei todo el tiempo hacenmos algoritmos desde para escribir al poner adecuadamente las letras en orden.
suena facil ojala asi sea,
solo es ejecutar correctamente la
orden para que la computadora la pueda realizar.
nos vmos profe y chido el articulo,
el lenguaje hace que sea mas comprendible.

Sergio Covarrubias Garcia 3ºA T.I.A. dijo...

ps esto de los algoritmos esta un poco interesante ya que te das cuenta de que las cosas no se hacen por medio de magia si no con una seria de pasos especiificos q dan como resultado ya sea un platillo como en el ejemplo de la receta o hasta una tarea o accion.
me parece que este tema puede llegar a ser muy interesante porq me imagino q se debe usar mucho la logica para esto y eso es algo q me gusta hacer.

Anónimo dijo...

Daniel Alejandro Ortiz Contreras 3º TIA
Ami me parece que los algoritmos son muy buenos y eficases ya que ponen a prueba nuestro sentido comun para resolverlos, ya que como nos van pidiendo paso por paso tu te detienes a pensar para ver cual es el paso mas logico que sigue y pues eso te lleva a resolver el problema.
Para mi punto de vista se me hace facil pero no se como lo aplicaremos asi que espero y me valla bien en su materia y que este sencilla ademas

Josafath Gonzalez Gomez 3ºA T.I.A. dijo...

Yo pienso que los algoritmos es algo que usamos a diario para resolver algunos problemas, o para simplemente cocinar, o para resolver ecuaciones de matematicas son necesarios los algoritmos, la verdad no entiendo mucho este tema pero eso es lo que pienso que es, y con practica quedara claro.

Ivan Alexander Istaykov Mihaylova dijo...

Ivan Alexander Istaykov Mihaylova 3A T.I.A.

Los algoritmos, en mi opinion y limitado conocimiento de este tema, son importantes para la vida, ya que no solo nos ayudan a llegar a soluciones sino que tambien fortalezen nuestro pensamiento critico y analitico para crear nuevas y/o varias soluciones. Esto es esencial en nuestra vida y es usado extensivamente durante esta, claro que la persona comun, o asi yo lo pienso, no sabe realmente como es que este procedimiento llega a ser, y claro, como darle enfasis. Esto es lo que yo espero aprender de este tema y materia este semestre.

jacr_92 dijo...

José Antonio Cervantes Ríos 3°A T.I.A.

Comenzaré por citar el significado de un algoritmo según la RAE: “Conjunto ordenado y finito de operaciones que permite hallar la solución de un problema”. Mi forma de entender el significado es que un algoritmo siempre tendrá un principio y un final en donde van involucrados diferentes procesamientos y maneras de resolver un problema.

Me gustaría conocer un ejemplo de algún error lógico al crear un algoritmo.
¿Otro ejemplo de algoritmos podrían ser los instructivos?
En conclusión, para que exista un algoritmo (en relación a las computadoras), siempre debe haber una entrada, una memoria para poder procesar la instrucción, la unidad de control que traduce la instrucción para que la computadora pueda entenderla, un proceso donde se llevan a cabo métodos de resolución (operaciones) y una salida que sería la resolución del problema.

Melissa Gutiérrez Valencia 3°TIA dijo...

hola! pues bueno, despues de leerlo me quede pensando que es verdad, siempre estamos haciendo algoritmos para poder llevar acabo todas nuestras actividades cotidianas, por mas simples que parezcan siempre tienes que seguir una serie de pasos, con un orden especifico para poder llegar a los resultados que esperas, y me imagino que para hacerlo en la computadora va a ser mas dificil, pero pues es lo padre, ir aprendiendo para que ya no se nos haga dificil y lo podamos hacer. sale, pues nos vemos mañana :D!

Gabriela Flores Minakata 3°A T.I.A dijo...

pues me parece interesante esto de los algoritmos, uno al realizar algunas de sus actividades diarias no nota que por lo general se sigue una serie de pasos para obtener un resultado, es algo muy importante y la verdad no tengo mucha idea aun de como se aplique este termino en una computadora, pero espero aprender mucho de esta materia sin mucho problema

Anónimo dijo...

Alejandro Lau Nuñez 3a TIA

Bueno los algoritmos es algo que usamos en la vida y sin ellos no sabriamos como realizar las cosas.

Pues creo que esto de los algoritmos sera interesante conocer y aprender,bueno en cierta parte de como es la materia es dicifil enterdlo asi,y pienso que con el tiempo y practicas que hagamos sera algo facil de dominar.
Gracias por el articulo profe.

Ricardo Morales Mendez dijo...

Bueno yo lo q entendi es q los algoritmos nos sirven para elaborar una cosa mediante una serie de pasos precisos q usamos mucho en la vida cotidiana y de esa forma es como nosotros entramos en comunicacion con las computadoras dandoles instrucciones mediante algoritmos para que se elabore algo. Eso fue lo que yo entendi y segun yo esta bien

Ricardo Morales Mendez 3.-A TIA dijo...

Bueno yo lo q entendi es q los algoritmos nos sirven para elaborar una cosa mediante una serie de pasos precisos q usamos mucho en la vida cotidiana y de esa forma es como nosotros entramos en comunicacion con las computadoras dandoles instrucciones mediante algoritmos para que se elabore algo. Eso fue lo que yo entendi y segun yo esta bien

Alan Gonzalez Padilla dijo...

emm yo pienso que son muy importantes =) =D para resolver algo y asi =)

Anónimo dijo...

Sebastian Quintero Sainz 3ATIA
yo pienso que este tema es algo muy importante por que son cosas que usamos vemos en la vida diaria algo con lo que tenemos que lidiar dia a dia tanto para haser una reseta de comida tanto como para resolver un problema de matematicas paso a paso por que si perdemos un paso no sera el mismo procedimiento sera un resultado diferente un resultado erroneo para eso existen los algoritmos para no equibocarnos realisar todo como debe de ser

Anónimo dijo...

tania karina orozco ibarra 3 tia

Ola, ya entendi mucho mejor eso de que son los algoritmos, esta muy bien explicado y ya estoy comprendiendo un poco mas el que se debe hacer y aunque no se oye muy facil si se ve interesante y aprendere a usar mas la logica :) espero que ya practicando se me facilite.

Estefania Muñoz López 3º TIA dijo...

Hola! bueno ps yo pienso que nunca nos ponemos a pensar en todo los pasos que hay que seguir para hacer algo aunque sea muy sencillo, por ejemplo servirse un vaso de agua o algo asi. Pero cuando empezemos usando los algoritmos en la computadora va a ser mas dificil pork tendremos que desglozar paso por paso todas las ideas sin olvidar nada para que no haya error. Aun asi me parece que sera facil y espero entenderle.

:)

alfredo radovich benavides dijo...

valla esto de los algoritmos parece a primera instancia complejo pero espero que ya con el tiempo y con las clases nos explique y nos ayude a entender esto con mas detalle

es algo muy interesante y eso de la ignorancia es sierto no hay que dejar que entre en accion

alfredo radovich benavides dijo...

soy de tia 3a

Anónimo dijo...

fernanda del carmen amador roman 3TIA

me doi cuenta q los algoritmos son importantes y no nos damnos cuenta y los hacemos en la vidaa cotidiana tomamos demasiiadas desicionees pero todoo en proceso. aunque parece algo complicado pero poco a poco con los ejercicios se quee se me hara mas facil

Anónimo dijo...

Young Gu Lee Kim 3A TIA

A mi este tema con lo poco que nos explico la clase pasada entendi solo que es como una lista que va de paso en paso... y bueno ya que ay diferentes tipos de algoritmos, no se cual sea mas dificil. No creo que sea complicado hacerlos, ya que solo se necesita de la razon y logica.

Saludos

Anónimo dijo...

sara ortega rivera 3a TIA
al principio parece algo dificil, porque para resolverlos es complicado y mas para la computadora pero a lo largo del semestre van a parecer mas faciles.

laura daniela medina arana 3aTIA dijo...

hola! pues este tema de los algoritmos me parece interesante porque siempre los usamos y nunca me habia dado cuenta de eso,espero aprender mucho sobre este tema en el sem. =D

El Tony y sus ondas...

Related Posts Plugin for WordPress, Blogger...