Los Algoritmos

Los Algoritmos
Información sobre la plantilla

Los Algoritmos en la solución de problemas mediante computadoras.

¡Por todas partes algoritmos!

Nos rodean, se entrelazan, penetran mutuamente; no se pude hacer un paso sin chocar con ellos. Pero como se diferencian de manera sorprendente las junglas algorítmicas y las verdaderas, en las que las plantas embrollosas y tupidas nos oprimen, nos tienen tenazmente cautivados. Mientras que los algoritmos, de manera asombrosa, no nos atan, sino que nos conducen por las vías más fiables a la solución de problemas [Krinitski, 1989].

Definición

La palabra algoritmo proviene del matemático árabe Uzbeko Aljwarizmi, quien en el siglo IX de nuestra era, elaboró las reglas para las cuatro operaciones aritméticas sobre los números en el sistema decimal de numeración. El conjunto de estas reglas recibió en Europa el nombre de Algoritmia, posteriormente esta palabra se transformó en algoritmo, convirtiéndose en la denominación colectiva de reglas aisladas de un tipo determinado.

El concepto de algoritmo es a la vez muy sencillo y muy complejo. Su sencillez está en la gran cantidad de algoritmos que tenemos que tratar y en su calidad habitual. Pero esta misma circunstancia lo hacen impreciso, confuso, difícilmente sometido a una definición científica estricta [Krinitski, 1989].

La teoría de algoritmos ha sido abordada por distintos autores, que por su importancia relacionamos:
En matemática se entiende por algoritmo una regla exacta, determinada unívocamente para ejecutar una serie de operaciones elementales (o sistema de operaciones), para resolver ejercicios de una clase o de un tipo determinado, así como obtener la precisión en los resultados, facilitando la vía de solución" [Landa, 1969].

Minujin plantea que "al dominar los algoritmos, los escolares aprenden a resolver series de tareas homogéneas, a analizar la estructura lógica de diversos fenómenos para develar sus rasgos generales, a fin de aplicarlos a los casos particulares, a buscar el algoritmo si no se le ha enseñado, a transferir algoritmos conocidos para resolver situaciones nuevas es decir adquieren principios generales válidos para el análisis de la realidad. Además, el diseño y la aplicación de algoritmos requiere exactitud, rigor, consecuencia y disciplina mental, cualidades que se van educando en los estudiantes [Minujin, 1989].

La lista, detallada y ordenada, de los pasos que necesitamos ejecutar para resolver un problema, se conoce en computación, y otras ciencias, como algoritmo de solución [Vildósola y Otros, 1990]

Frolov y Kuznetso al enunciar el concepto de algoritmo, tienen en cuenta el de ejecutor (por ejemplo: una persona, un animal especialmente adiestrado, una máquina especial) al plantear que el algoritmo: "es la guía de acción para el ejecutor", es decir, "indica en forma precisa e inteligible al ejecutor que ha de desarrollar una sucesión determinada de acciones para lograr el objetivo o solucionar el problema propuesto" [Frolov y Kuznetsov, 1991].

La definición planteada por Biondi y Clavel en su libro "Introducción a la Programación"..."Un algoritmo del problema es una sucesión de operaciones, que permiten transformar el entorno del estado inicial dado en el estado final deseado, de forma tal que cada operación sea una acción primitiva o un algoritmo ya conocido"..., utiliza otras como entorno, procesador y acción [Biondi y Clavel, 1985].

Concepto de procesador, entorno, acciones

En la realización de un trabajo son importantes quien ejecuta el trabajo y los utensilios de que dispone para ello, aspectos que se tienen en cuenta en las definiciones siguientes:

Procesador:

Entidad capaz de entender un enunciado y ejecutar el trabajo indicado.

Entorno:

El conjunto de utensilios necesarios para la ejecución del trabajo.

Los conceptos de procesador y entorno, así como que el trabajo a realizar por un procesador dado, depende de la elección que se ha hecho de los utensilios para su realización.

Existe una interdependencia entre el trabajo a realizar y el entorno, analicemos un ejemplo para ilustrar lo anterior.

Ejemplo: Un comerciante debe devolver el cambio de 50 pesos, cobrando 20 pesos y 50 centavos. Analicemos como proceder, en cada uno de los entornos siguientes:

  • Entorno 1: El comerciante dispone de billetes de 10 y 1
  • Entorno 2: El comerciante dispone de billetes de 10 y monedas de 5 centavos.
  • Entorno 3: El comerciante dispone de billetes de 10 y 20, monedas 20 y 5.

En el primer caso el procesador (comerciante) no puede, en función de su entorno (billetes de 10 y 1), efectuar el trabajo que se le pide (dar el vuelto).

En los restantes casos, el trabajo puede ser efectuado. En el tercer caso el comerciante elegirá la forma de dar el cambio, en función del número de billetes y monedas de cada tipo que posea. Entorno y trabajo están estrechamente relacionados, cualquiera sea el entorno, la ejecución del trabajo no inmediata, supone de cierta progresión hacia el fin deseado. En los ejemplos analizados, en la realización de la tarea planteada, el trabajo descrito se realiza por etapas, las cuales van modificando el entorno.

Una primera aproximación al concepto de acción, es el relacionado con la tarea que se ejecuta y la modificación que logra en el entorno .

Acción:

es un suceso que modifica el entorno. Una acción es primitiva, sin el enunciado de dicha acción es suficiente para poder ejecutarla sin información suplementaria.
Una acción no primitiva debe ser descompuesta en acciones simples.

Formalización del entorno de un problema

Se pueden extraer algunas características de la noción de objeto, a partir los elementos que integran su entorno.

  • Tienen un nombre para designarlos.
  • Contiene cierta información

La información tiene cierta forma o tipo. Los objetos que se describen en un entorno determinado pueden ser de dos tipos variables o constantes.

Variable:

Es un objeto cuyo valor no es fijo y posee los siguientes atributos:

  • Un nombre invariable que sirve para designarla.
  • Un tipo que describe la utilización posible de la variable.

Cuando se define una variable, se ha de precisar su nombre y tipo, lo cual de hecho significa que estamos creando un objeto para el procesador. Consideráremos que toda variable que se acaba de definir tiene un valor indeterminado, si desea dar un valor determinado, es necesario que se ejecute una acción para ello.

Constante:

es un objeto de valor fijo. Es la realización de un valor de un tipo particular.

Los datos estándar incluyen:

  • Tipo numérico: Es un conjunto de valores numéricos escritos en su forma habitual, con o sin signo.Ejemplos: 10 10,5 -17 -125,34
  • Tipo carácter: Es el conjunto de las cadenas de caracteres que se pueden formar a partir de elementos del conjunto de caracteres(letras, cifras y signos especiales) que se son reconocidos por el procesador. Ejemplo ´aeiou´ ´Carlos,María´ ´José Martí´ ´28 de Enero´
  • Tipo lógico: Es el conjunto de valores lógicos cierto y falso. Una variable de tipo lógico siempre posee uno de estos valores.

Los datos definidos por el programador

Permiten considerar determinados datos individuales de un mismo tipo como un tipo particular de datos. Los datos de tipo estructurado incluyen arreglo, ficheros y conjuntos. Estos tienen como característica común, que un único identificador (variable) puede representar a múltiples datos individuales y a su vez los datos individuales están dispuestos en un orden fijo. Los datos dinámicos incluyen punteros, lista, pila, cola, árboles. Estos datos también están ligados entre sí, pero no tienen un orden fijo. La función de un algoritmo está representa esquemáticamente en la siguiente figura:


Descripción de un algoritmo

En este epígrafe plantearemos como describir dichas acciones: acción de asignación: En un entorno dado, para atribuir el valor a una variable que provenga de este mismo entorno, utilizaremos la notación V <-- E Donde: V nombre de la variable a la que el procesador debe atribuir el valor. <-- Caracteriza la acción de asignación E Representa el valor a asignar y puede ser una constante, el nombre de otra variable o una expresión aritmética que describe un cálculo a realizar.
Ejemplos:

  • gravedad <-- 9,8
  • nombre <-- ´José Martí´
  • SumaNota <-- Nota1+ Nota2+ Nota3

Entrada de datos

La operación de lectura permite introducir un valor al entorno del problema mediante un aparato.

Una lectura es una asignación : toma un valor y lo asigna a una de las variables del entorno.
Indicaremos esta acción por:

  • Leer v

Esta acción introduce un valor al entorno para asignarlo a la variable v.
Ejemplo:

  • Leer nombre
  • Leer nota1
  • Leer nota1, nota2, nota3

Salida de datos

Es necesario a menudo dar salida algún resultado del entorno, es decir, comunicar una información o valor de una variable al exterior por medio de un aparato. Indicaremos esta acción por:

  • Escribir v
  • Esta acción no modifica el valor de la variable.

Ejemplo:

  • Escribir nombre
  • Escribir prom
  • Escribir ´El promedio es´; Prom

Otros Modelos para representar algoritmos

Existen otros modelos para describir los algoritmos, dentro de ellos tenemos los modelos gráficos, en los que se destaca el diagrama de flujo.

Diagramas de flujo: Se basan en la utilización de diversos símbolos para representar operaciones específicas. Se les llama diagramas de flujo porque los símbolos utilizados se conectan por medio de flechas para indicar la secuencia de operación. La simbología utilizada para la elaboración de diagramas de flujo es variable y debe ajustarse a un patrón definido previamente.

SIMBOLOGIA UTILIZADA EN LOS DIAGRAMAS DE FLUJO.


Fuentes

Referencias
*Biondi J. Y Clavel G. Introducción a la programación, Manuales Informática Masson., 1985.
*Lipschutz Sauymour. Estructura Datos. Editorial Revolución, 1991.
*Vildósola Serguio y otros. Fundamentos de la Programación. Computación Educacional. Editorial Pueblo y Educación, 1990.
*Vildósola Serguio y otros. Fundamentos de la Programación. Cuaderno de Ejercicios de Computación Educacional. Editorial Pueblo y Educación, 1990
*Febles Salgado y otros. Fundamentos de la Programación. Editorial Pueblo y Educación, 1985.