Está en la página 1de 13

Unidad I: Conceptos Generales sobre Algoritmos Computacionales

INDICE DEL CONTENIDO

Introducción ......................................................................................................................................................4
Breve historia de los algoritmos. ...................................................................................................................6
Características de un algoritmo.....................................................................................................................8
Razones para estudiar algoritmos. ...............................................................................................................8
Formas de representación de algoritmos. ...................................................................................................9
La máquina de Turing ...................................................................................................................................12
Bibliografía ......................................................................................................................................................14

4
Mtra. Agustina De los Santos Rosario
Unidad I: Conceptos Generales sobre Algoritmos Computacionales

INTRODUCCION DE LA UNIDAD

Imagen obtenida en http://us.tuaviso.net/anuncio/programas/2009-11-


09/2488602/consultoria_resolucion_de_algoritmos_y_desarrollo_de_sistemas.html

A medida que avanza la tecnología se desarrollan aplicaciones más versátiles, las cuales
se basan en facilitar la vida a los usuarios. Por eso es natural ver que las empresas y las
mayoría de los hogares tienen una computadora para llevar a cabo tareas laborales y
cotidianas. Las aplicaciones se diseñan basadas en Algoritmos que sustentan su lógica
de operación.

En el libro Fundamentos de programación: libro de problemas. McGraw-Hill. 2da. edición,


2003 de los autores Joyanes Aguilar, Luis; Rodríguez Baena, Luis; Fernández Azuela,
Matilde, se define algoritmo como “La secuencia ordenada de pasos, sin ambigüedades,
que conducen a la solución de un problema dado y puede ser expresado en lenguaje
natural, por ejemplo el castellano.”

5
Mtra. Agustina De los Santos Rosario
Unidad I: Conceptos Generales sobre Algoritmos Computacionales

En el Manual de análisis y diseño de algoritmos. Versión 1.0 de INACAP se define el


algoritmo como "conjunto de reglas operacionales inherentes a un cómputo". Se trata de
un método sistemático, susceptible de ser realizado mecánicamente, para resolver un
problema dado.

Esta unidad posee como objetivo general construir conocimientos básicos sobre la historia
de los algoritmos, así como las formas de representación de los mismos.

Para desarrollar el contenido de la presente unidad se plantean los siguientes objetivos


específicos:

 Hacer un recuento de la historia de los algoritmos.


 Comprender qué es una máquina de Turing.
 Identificar las características de los algoritmos.
 Explicar las diferentes formas de representar un algoritmo.

6
Mtra. Agustina De los Santos Rosario
Unidad I: Conceptos Generales sobre Algoritmos Computacionales

DESARROLLO DEL CONTENIDO

Breve historia de los algoritmos

Los conceptos presentados a continuación se tomaron del Manual de análisis y diseño


de algoritmos. Versión 1.0, publicado por el INACAP en el 2003.

El término algoritmo proviene del matemático árabe Al'Khwarizmi, que escribió un tratado
sobre los números. Este texto se perdió, pero su versión latina, Algoritmi de Numero
Indorum, sí se conoce.

Los babilonios que habitaron en la antigua Mesopotania, empleaban unas pequeñas bolas
hechas de semillas o pequeñas piedras, a manera de "cuentas" y que eran agrupadas en
carriles de caña. Más aún, en 1.800 A.C. un matemático babilónico inventó los algoritmos
que le permitieron resolver problemas de cálculo numérico.

En 1850 A.C., un algoritmo de multiplicación similar al de expansión binaria es usado por


los egipcios.

La teoría de las ciencias de la computación trata cualquier objeto computacional para el


cual se puede crear un buen modelo. La investigación en modelos formales de
computación se inició en los 30's y 40's por Turing, Post, Kleene, Church y otros. En los
50's y 60's los lenguajes de programación, compiladores y sistemas operativos estaban en
desarrollo, por lo tanto, se convirtieron tanto en el sujeto como la base para la mayoría del
trabajo teórico.

7
Mtra. Agustina De los Santos Rosario
Unidad I: Conceptos Generales sobre Algoritmos Computacionales

El poder de las computadoras en este período estaba limitado por procesadores lentos y
por pequeñas cantidades de memoria. Así, se desarrollaron teorías (modelos, algoritmos y
análisis) para hacer un uso eficiente de ellas. Esto dio origen al desarrollo del área que
ahora se conoce como "Algoritmos y Estructuras de Datos". Al mismo tiempo se hicieron
estudios para comprender la complejidad inherente en la solución de algunos problemas.
Esto dió origen a lo que se conoce como la jerarquía de problemas computacionales y al
área de "Complejidad Computacional".

La lectura de los párrafos anteriores muestra que los algoritmos computacionales tienen
su origen en los algoritmos matemáticos.

De acuerdo al capítulo 1 Técnicas de Programación de SERVICIO DE ATENCIÓN AL


LECTOR.

El origen del término "algoritmo" se remonta al siglo IX y se le atribuye su invención al


matemático árabe Abu Ja’far Muhammad ibn Musa al-Khwarizmi.

La palabra algoritmo se refería originalmente sólo a las reglas de la aritmética con


números arábigos. Recién en el siglo XVIII se expandió su significado para abarcar en su
definición a toda clase de procedimientos utilizados con el propósito de resolver
problemas o realizar determinadas tareas.

El primer caso de un algoritmo escrito para una computadora se considera que son las
notas escritas por Ada Lovelace en 1842 para el motor analítico de Charles Babbage.
Por esta razón, se considera a Ada Byron como la primera programadora de la historia.
Sin embargo, dado que Babbage nunca terminó su motor analítico, el algoritmo jamás
llegó a implementarse.

8
Mtra. Agustina De los Santos Rosario
Unidad I: Conceptos Generales sobre Algoritmos Computacionales

Características de un algoritmo

Los algoritmos cuentan con siete características fundamentales:


 Entrada: definir lo que necesita el algoritmo
 Salida: definir lo que produce.
 No ambiguo: explícito, siempre sabe qué comando ejecutar.
 Finito: El algoritmo termina en un número finito de pasos.
 Correcto: Hace lo que se supone que debe hacer. La solución es correcta
 Efectividad: Cada instrucción se completa en tiempo finito. Cada instrucción debe
ser lo suficientemente básica como para que en principio pueda ser ejecutada por
cualquier persona usando papel y lápiz.
 General: Debe ser lo suficientemente general como para contemplar todos los
casos de entrada1.

Razones para estudiar algoritmos

Para estudiar algoritmos existen varias razones, a continuación mencionaremos las más
destacadas:
1) Evitar reinventar la rueda. Para algunos problemas de programación ya existen
buenos algoritmos para solucionarlos. Para esos algoritmos ya fueron analizadas sus
propiedades. Por ejemplo, confianza en que están correctos y son eficientes.
2) Encontrar ayuda cuando desarrollen sus propios algoritmos. No siempre existe un
algoritmo desarrollado para resolver un problema. No existe regla general de creación
de algoritmos. Muchos de los principios de proyecto de algoritmos ilustrados por
algunos de los algoritmos que estudiaremos son importantes en todos los problemas
de programación. El conocimiento de los algoritmos bien definidos provee una fuente
de ideas que pueden ser aplicadas a nuevos algoritmos.
3) Entender herramientas que usan algoritmos particulares. Por ejemplo,
herramientas de compresión de datos:

1 INACAP, (2003). Manual y análisis y diseño de algoritmos. Version 1.0. [PDF], p. 18

9
Mtra. Agustina De los Santos Rosario
Unidad I: Conceptos Generales sobre Algoritmos Computacionales

o Pack usa Códigos Huffman.


o Compress usa LZW.
o Gzip usa Lempel-Ziv.
4) Conocer técnicas empleadas para resolver problemas de determinados tipos2.

Formas de representación de algoritmos

Dentro de las formas de representación de algoritmos más conocidas, sobresalen:


 La descripción narrativa: consiste en escribir paso a paso las acciones que se
deben realizar empleando el lenguaje natural. Aunque es sencillo, este método no
es muy recomendable, ya que puede llegar a ser muy extenso y ambiguo.
Ejemplo1:
Diseñar un algoritmo que imprima y sume la serie de números 3,6,9,12,…,99.
inicio
asignar a suma un 0
asignar a núm un 3
mientras núm <= 99
escribir núm
incrementar sum en núm
incrementar núm en 3
escribir suma
fin

 El Flujograma convencional: Es la representación grafica de un algoritmo


mediante símbolos.

2 IBID., p. 23

1
Mtra. Agustina De los Santos Rosario 0
Unidad I: Conceptos Generales sobre Algoritmos Computacionales

Imagen obtenida en http://algoritmosydiagramascima.blogspot.com/2009/11/diagrama-de-flujo_22.html

Ejemplo 2:
Leer 500 números enteros y obtener cuántos son positivos
Inicio

conta  0
positivos 

conta  conta + 1

Leer núm

positivos > 0 No

Si
positivos 
positivos + 1

No Conta = 500

Si
Escribir
positivos

Fin
10
Mtra. Agustina De los Santos Rosario
Unidad I: Conceptos Generales sobre Algoritmos Computacionales

 El diagrama Chapin o Diagrama Nassi-Scheiderman: Es una herramienta de


programación que favorece la programación estructurada y reúne características gráficas
propias de diagrama de flujo y lingüísticas propias de los pseudocódigos.
Las tres estructuras básicas de la programación estructurada se pueden representar con
estos diagramas.

Joyanes Aguilar, Luis; Rodríguez Baena, Luis; Fernández Azuela, Matilde, (2003).
Fundamentos de programación: libro de problemas. McGraw-Hill. Segunda Edición.

 El pseudocódigo, o también conocido como lenguaje estructurado: es un


lenguaje de especificación de algoritmos que utiliza palabras reservadas y exige la
identación, o sea sangría en el margen izquierdo de algunas líneas.
Se concibió para superar las dos principales desventajas del diagrama de flujo:
lento de crear y difícil de modificar sin un nuevo redibujo.

11
Mtra. Agustina De los Santos Rosario
Unidad I: Conceptos Generales sobre Algoritmos Computacionales

Joyanes Aguilar, Luis; Rodríguez Baena, Luis; Fernández Azuela, Matilde, (2003). Fundamentos
de programación: libro de problemas. McGraw-Hill. Segunda Edición.

La máquina de Turing
Alan Mathison Turing, famoso matemático inglés
(1912-1954), cuyas contribuciones en el campo de
la matemática y de la teoría de la computación le
han valido ser considerado uno de los padres de la
computación digital. Ideó un dispositivo imaginario
al que denominó máquina de computación lógica
(LCM, Logical Computing Machine), pero que ha
recibido en su honor el nombre de máquina de
Turing3.

Imagen obtenida en http://www.moonmentum.com/blog/stick/google-doodel-de-alan-turing/

3 Servicio de Atención al Lector. Técnicas de Programación

12
Mtra. Agustina De los Santos Rosario
Unidad I: Conceptos Generales sobre Algoritmos Computacionales

Para ampliar la biografía de Turing, por favor acceder al siguiente enlace


http://www.moonmentum.com/blog/stick/google-doodel-de-alan-turing/

Como se expresa en el documento Técnicas de Programación Una máquina de Turing


es un autómata que se mueve sobre una secuencia lineal de datos. En cada instante, la
máquina puede leer un único dato de la secuencia (generalmente un carácter) y realizar
ciertas acciones en base a una tabla que tiene en cuenta su estado actual (interno) y el
último dato leído. Entre las acciones que puede realizar, está la posibilidad de escribir
nuevos datos en la secuencia, recorrer la secuencia en ambos sentidos y cambiar de
estado dentro de un conjunto finito de estados posibles.

Imagen obtenida en http://es.wikipedia.org/wiki/M%C3%A1quina_de_Turing_universal

13
Mtra. Agustina De los Santos Rosario
Unidad I: Conceptos Generales sobre Algoritmos Computacionales

BIBLIOGRAFIA

Algoritmo. Obtenido en http://es.wikipedia.org/wiki/Algoritmo

INACAP, (2003). Manual de análisis y diseño de algoritmos. Versión 1.0. [PDF]

Joyanes Aguilar, Luis; Rodríguez Baena, Luis; Fernández Azuela, Matilde, (2003).
Fundamentos de programación : libro de problemas. McGraw-Hill. Segunda Edición.

Pseudocódigo. Obtenido en http://www.desarrolloweb.com/articulos/pseudocodigo.html

SERVICIO DE ATENCIÓN AL LECTOR. Técnicas de Programación

14
Mtra. Agustina De los Santos Rosario

También podría gustarte