HISTORIA DE LOS ALGORITMOS
Un algoritmo sencillamente son pasos para resolver un problema, como leer una receta de cocina, es decir, es
una receta para solución de problemas. Los algoritmos están en todas partes, desde que te levantas en la
mañana estas en contacto con algoritmos, ya sea cuando suena tu despertador en tu teléfono, uses cualquier
equipo electrónico, cuando estas frente a un semáforo, pagues con la tarjeta de crédito o débito, en fin, no
puedes volver a dormir sin estar en contacto con ellos. ¿Pero cual es su historia? ¿Cómo llegaron a ser parte
fundamental de nuestro diario vivir?
A pesar de que aparentase que el empleo de algoritmos es algo reciente, la realidad es que en la antigüedad
ya se empleaban algoritmos como en el caso de los babilonios para resolver multiplicaciones y raíces
cuadradas[1]. Los egipcios usaban un algoritmo de multiplicación similar al de expansión binaria[2]. Sin
embargo, aún no existía el concepto de algoritmo como tal ni las bases teóricas para ello.
La palabra algoritmo proviene de la traducción al latín de Al-Khwārizmī que es el nombre de un
matemático y astrónomo quien escribió un tratado sobre manipulación de números y ecuaciones en
el siglo IX llamado Quitab Al Jabr Al Mugabala[3]. En sus escritos se recolectan el sistema de
numeración hindú, el concepto del cero y desarrolló con un número limitados de procesos para
resolver ecuaciones de primer y segundo grado. Alcanzó gran reputación por el enunciado de las
reglas paso a paso para sumar, restar, multiplicar y dividir números decimales[4]. Al-
Khwārizmī preservó y difundió el conocimiento griego e hindú. Lamentablemente su texto sobre
tratados de números se perdió, su versión latina del libro de cálculo con los números hindúes sí se
conoce. Sin embargo, del libro de algebra si se preserva manuscritos árabes, pero son datados cinco
siglos posterior a la fecha de redacción de Al-Khwārizmī [5]. Debemos tener en cuenta que Al-
Khwārizmī no fue el creador del primer algoritmo –anteriormente mencionamos que ya se empleaban
algoritmos-, pero si fue el primero en pensar en modo algorítmico.
Por un tiempo los algoritmos solo se conceptualizaban para reglas de aritmética para números
arábicos. No fue hasta el siglo VXIII que se comienza a emplear algoritmos con el concepto tal y
como hoy se conoce.
El primer caso de algoritmos computacionales proviene del año 1842 de los escritos de la
matemática británica Ada Lovelace para la maquina analítica de Charles Babbage[6]. De allí que sea
considerada como el primer programador de la historia[7], que además en su honor a un lenguaje de
programación se le ha colocado su nombre, este es el lenguaje de programación Ada. Sin embargo,
dado que Babbage nunca terminó su máquina analítica, el algoritmo que realizó no llegó a
implementarse[8]. No obstante, su trabajo inspiró a otros investigadores que se dedicaron a este
campo.
Años más tarde en el 1900 el matemático David Hilbert había propuesto varias preguntas
fundamentales sobre problemas teóricos de las matemáticas, como es el caso del problema de la
decisión planteada por el matemático Gottfrie Leibniz que decía: "¿Es posible encontrar una manera
sencilla de decidir si un problema matemático cualquiera tiene solución?". En el año 1931 el
matemático Kurt Gödel publica el Teorema de incompletud donde postula que existen proposiciones
que son indecidibles. En base a este problema entre los años 1930 y 1940 derivó el desarrollo
teórico y formalización de los algoritmos con los trabajos de Alan Turing, Emil Post, Stephen Kleene
y Alonzo Church con el objetivo de resolver este problema o demostrar el Teorema[9].
Entre los años 1950 y 1960 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 sobre los algoritmos. Sin embargo, no fue hasta la década de 1980 de la mente
de Paul Benioff y Richard Feynman que una nueva revolución en la teoría de los algoritmos resurge,
esta fue la computación cuántica, que a diferencia de las clásicas funciona sobre los principios de la
mecánica cuántica, en donde los bits podían estar superposicionados en diferentes estados a la vez
a diferencia de las computadoras clásicas que solo pueden estar en 1 o 0. A este nuevo estado
superposicionado de bit se le llama qbits y es la base de este tipo de computadoras. Esto trajo
consigo el desafío de desarrollar algoritmos para computadoras cuánticas. Entre los años 1992 y
1998 David Deutsch, Richard Cleve, Artur Ekert, Chiara Macchiavello, Michele Mosca, Peter Shor y
Lov Grover realizaron trabajos sobre algoritmos cuánticos[10] [11] [12] [13].
Desde la creación del primer algoritmo estos han sido indispensables para el desarrollo humano,
especialmente hoy en día estamos dominado por la era de los algoritmos. Podríamos decir que
desarrollar algoritmos es una de las herramientas más importantes para el desarrollo de cualquier
civilización, por lo tanto, conocer su historia es conocer el desarrollo de la civilización humana.
INDICE
PENSAMIENTO COMPUTACIONAL
El pensamiento computacional es “el proceso de pensamiento que interviene en la formulación de los
problemas y sus soluciones, de manera que las soluciones se representen de forma que pueda ser realizada
por un procesador de información” (Cuny, Snyder y Wing, 2010).
El pensamiento computacional consiste en resolver problemas cotidianos mediante el uso de los conceptos
fundamentales de la programación informática cuyas soluciones pueden ser representadas mediante una
serie de pasos o instrucciones
Es un proceso cognitivo que permite la generación de soluciones a problemas a través del uso
de habilidades específicas, tales como abstracción, descomposición, generalización, evaluación y diseño
algorítmico.
Es un proceso cognitivo que consiste en resolver problemas cotidianos usando conceptos importantes de la
programación pueden ser representadas con una serie de pasos básicamente son soluciones a problemas a través de la
informatica
PENSAMIENTO ALGORITMICO
El pensamiento algorítmico es la capacidad para realizar el proceso de abstracción, modelización de un
problema, deducciones lógicas y síntesis de la solución que conduzca a escribir el algoritmo correcto
El pensamiento algorítmico es poder traducir una acción en una serie de instrucciones o pasos (pensar en
una serie de instrucciones). Por ejemplo: Hacer (tender) la cama. Bañarse.
El desarrollo del pensamiento algorítmico es una de las dificultades que los estudiantes confrontan cuando aprenden a
programar, utilizar la estructura de selección y de control correcta es un gran reto. En la investigación se utilizaron objetos
de aprendizaje generativos para el desarrollo del pensamiento algorítmico en el curso de fundamentos de programación
ofrecido a los estudiantes de nuevo ingreso de la carrera de ingeniería en sistemas computacionales. El enfoque
metodológico de la investigación fue cuantitativo, con diseño cuasi-experimental por lo que se aplicó pretest y postest.
Los resultados obtenidos permitieron determinar que el beneficio de los objetos de aprendizaje generativos fue relevante.
Es la capacidad para hacer un proceso pueden ser deducciones lógicas tambien puede ser una acción como hacer
comida o algo asi
ALGORITMO
Se puede entender un algoritmo como una secuencia de pasos finitos bien definidos que resuelven un
problema. Por ejemplo, la ejecución de tareas cotidianas tan simples como cepillarse los dientes, lavarse las
manos o seguir el manual de instrucciones de armado de un mueble, se pueden ver como un algoritmo.
un algoritmo es una secuencia de instrucciones secuenciales, gracias al cual pueden llevarse a cabo ciertos
procesos y darse respuesta a determinadas necesidades o decisiones. Se trata de conjuntos ordenados y
finitos de pasos, que nos permiten resolver un problema o tomar una decisión. es un conjunto de
instrucciones definidas, ordenadas y acotadas para resolver un problema, realizar un cálculo o
desarrollar una tarea. Es decir, un algoritmo es un procedimiento paso a paso para conseguir un fin. A
partir de un estado e información iniciales, se siguen una serie de pasos ordenados para llegar a la
solución de una situación.
un algoritmo es cualquier procedimiento computacional bien definido que parte de un estado inicial y un valor o un
conjunto de valores de entrada, a los cuales se les aplica una secuencia de pasos computacionales finitos,
produciendo una salida o solución. Se puede considerar al algoritmo como una herramienta para resolver un cálculo
computacional bien especificado
Un algoritmo es una serie de pasos organizados, que describe el proceso que se debe seguir, para dar
solución a un problema específico.
TIPOS DE ALGORITMO
Algoritmos computacionales. Un algoritmo cuya resolución depende del cálculo, y que puede ser desarrollado por
una calculadora o computadora sin dificultades.
Algoritmos no computacionales. Aquellos que no requieren de los procesos de un computador para resolverse, o
cuyos pasos son exclusivos para la resolución por parte de un ser humano.
Algoritmos cualitativos. Se trata de un algoritmo en cuya resolución no intervienen cálculos numéricos, sino
secuencias lógicas y/o formales.
Algoritmos cuantitativos. Todo lo contrario, es un algoritmo que depende de cálculos matemáticos para dar con su
resolución.
¿QUE SON LOS ALGORITMOS?
Un algoritmo es un conjunto de reglas definidas que permite solucionar un problema, ya sea
preparar un postre suculento (el algoritmo sería la receta) como aparecer entre los primeros
resultados de Google para una búsqueda determinada. En realidad, los algoritmos se adaptan,
transforman, están por todas partes, y son una de las razones de que las campañas de marketing
digital sean cada vez más precisas.
Un algoritmo es un conjunto de reglas definidas que permite solucionar un problema, de una
determinada manera, mediante operaciones sitemáticas (no necesariamente ordenadas) y finitas.
Estas instrucciones, definidas y ordenadas en función de los datos, resuelven el problema o la tarea.
Un algoritmo nos ayuda a resolver un problema de forma sistemática e inequívoca.
Por ejemplo, cada vez que tenemos que hacer la colada, basta con introducir la ropa en la lavadora
(más el detergente y el suavizante) y el algoritmo de esta ya se ocupa él solito de dejarla como
nueva. O cuando queremos saber la cifra exacta que esconde un porcentaje, regla de tres ¡y listo!
¿POR QUE EL ESTUDIO DE LOS ALGORITMOS ES ENRIQUECEDOR
El algoritmo permite estudiar las necesidades del problema para después crear una
lista de pasos que deberán ser seguidos y alcanzar así la solución deseada. De esta
forma, y usando el software PSeInt, hemos explicado a nuestros alumnos cómo
pueden crear sus primeros algoritmos.
Los algoritmos son una serie de instrucciones que permiten hacer y resolver diferentes operaciones. Aunque
están ampliamente asociados al ámbito de la tecnología, la construcción de una secuencia de pasos para
realizar una tarea, no es ajena. Ejecutar una receta de cocina, indicar una dirección, hasta pensar cómo armar o
desarmar algo, todo sigue un orden, una secuencia para obtener un resultado.
Nuestra vida está totalmente atravesada por los algoritmos. Tienen un rango de influencia que muchas veces
ni nos imaginamos, por ejemplo, al momento de solicitar un trabajo.
Como tal pensar en un algoritmo, es pensar la forma en la que podemos resolver un problema paso a paso, si no
se resuelve un paso del problema no se puede pasar al siguiente.
¿CUAL ES EL PAPEL DE LOS ALGORITMOS TAN FAMILIAR A OTRAS TECNOLOGIAS
USADAS EN COMPUTADORAS
Un algoritmo es una secuencia ordenada y finita de pasos que permite resolver un
problema. El algoritmo permite estudiar las necesidades del problema para después
crear una lista de pasos que deberán ser seguidos y alcanzar así la solución
deseada. Asi que tiene que ver desde que se fabrica la computadora porque todo
componente que se le pone lleva un proceso e igualmente por ejemplo la memoria
RAM lleva un proceso e igual todos sus componentes
Un algoritmo informático es una secuencia de instrucciones finitas que llevan a
cabo una serie de procesos para dar respuesta a determinados problemas. Es
decir, un algoritmo informático resuelve cualquier problema a través de unas
instrucciones y reglas concisas, mostrando el resultado obtenido.
Los algoritmos son muy importantes en el mundo de la informática ya que permiten
al programador resolver el problema antes de escribirlo en un lenguaje de
programación que entienda la máquina u ordenador. Antes de escribir el código de
un programa hay que resolver con un algoritmo el problema que se nos plantea.
Cómo hacer un algoritmo
Todo algoritmo consta de tres partes.
Entrada: en la entrada o input del algoritmo será donde se introduzcan todos
aquellos datos que el algoritmo necesite para operar.
Procesamiento: con lo recibido en la entrada o input, el algoritmo realizará una
serie de cálculos lógicos para resolver el problema.
Salida: los resultados obtenidos en el procesamiento se mostrarán en la salida o
output del algoritmo.
Para hacer un algoritmo hay que tener en cuenta sus
características: secuenciales, se procesan uno después del otro; precisos, deben
ser objetivos al resolver el problema; ordenados, deben ser leídos y ejecutados de
forma precisa; finitos, deben tener un número determinado de pasos; concretos,
deben mostrar un resultado al problema resuelto; y definidos, ante los mismos
inputs siempre deben obtenerse los mismos outputs.
En resumen, un algoritmo debe ser suficiente para resolver el problema y ante
varios algoritmos que resuelvan el mismo problema, siempre será preferible el que
tenga un camino más corto.
Un algoritmo es la solución a un problema expresada de un modo formal, lo cual, más o menos quiere
decir, de una forma explícita y no ambigua, de forma que sea ejecutable por nuestras amigas las
máquinas.
Un algoritmo es una solución, por lo cual, para crear uno, primero necesitamos un problema. Cuando
tengas el problema le das unas cuantas vueltas y piensas una forma de resolverlo que se pueda expresar
en una secuencia de pasos; por algún motivo siempre se pone el ejemplo de las recetas de cocina: Se
pelan las patatas, se fríen en aceite bien caliente, se baten los huevos, se echa una pizca de sal, se pone el
huevo en la sartén con las patatas y cuando esté doradito se le da la vuelta; si te das buena maña lo
puedes hacer en el aire, como los pros, y si le tienes miedo a la muerte lo haces ayudándote con un plato
grande. Como ejemplo de algoritmo es bastante mierder, pero la tortilla de patatas está buenísima, y si le
pones un poco de cebolla o calabacín, no te digo nada.
En todo caso, crear algoritmos es relativamente sencillo; la mente de cualquier programador de tres al
cuarto puede parir unos cuantos al día; pero, por supuesto, hay algoritmos y algoritmos. Dependiendo del
problema es posible que te baste con un algoritmo de andar por casa, pero en ocasiones la vida te pone
en apuros; por ejemplo, no es lo mismo ordenar una lista de tres elementos que una de trescientos
millones. Para los casos sencillos, según lo fino que sea uno, puede encontrar por su cuenta una solución
elegante o usar la cuenta la vieja …
Para representar un algoritmo se debe utilizar algún método que permita independizar dicho algoritmo del lenguaje de
programación elegido. Ello permitirá que un algoritmo pueda ser codificado indistintamente en cualquier lenguaje . Para
conseguir este objetivo se precisa que el algoritmo sea representado gráfica o numéricamente , de modo que las
sucesivas acciones no dependan de la sintaxis de ningún lenguaje de programación , sino que la descripción pueda
servir fácilmente para su transformación en un programa , es decir ,su codificación.
Los métodos usuales para representar un algoritmo son:
Diagramas de FLUJO
PseudoCódigo
Diagrama N-S
Un diagrama de flujo (flowchart) es una de las técnicas de representación de algoritmo más antigua
y a la vez más utilizada , aunque se empleo ha disminuido considerablemente , sobre todo desde
la aparición de lenguajes de programación estructurados. Un diagrama de flujo es un diagrama
que utiliza los símbolos (cajas) estándar mostrados en la figura 1 y que tiene los pasos del
algoritmo escritos en esas cajas unidas por flechas , denominadas líneas de flujo, que indican la
secuencia en que se deben ejecutar.
FIGURA 1:
La figura 2 es un diagrama de flujo básico.
FIGURA 2:
El diagrama anterior representa la resolución de un programa que deduce el salario neto de un trabajador a partir de la
lectura del nombre, horas trabajadas, precio de la hora , y sabiendo que los impuestos aplicados son el 25 por 100 sobre
el salario bruto.
Los símbolos estándar normalizados por ANSI (abreviatura de America National Standard Institute) son muy variados .
Para el curso de Algoritmos solo se usarán los SÍMBOLOS:
TERMINAL
ENTRADA/SALIDA (O TAMBIÉN EL SÍMBOLO DE TECLADO PARA ENTRADA Y EL SÍMBOLO PANTALLA PARA SALIDA)
PROCESO
DECISIÓN
CONECTOR
REGLAS PARA EL CURSO DE ALGORITMOS
El Diagrama de dibuja de arriba hacia abajo, las figuras se conectan con flechas, en caso de faltar
espacio en el papel, se usan conectores para saber donde continua el diagrama.
En un Símbolo de Entrada/Salida debe especificarse si se esta usando para entrada o salida en el
encabezado del símbolo
El Símbolo de entrada puede representar la entrada de varias variables a la vez pero deben estar
separadas por comas
El símbolo de salida puede representar la salida de varias variables a la vez pero deben estar separadas
por comas
El Proceso Puede incluir hasta 3 procesos separados por línea
Todo diagrama debe tener un terminal de INICIO y uno de FINAL
Los Rombos de Decisión solo pueden tener una flecha de llegada, pero deben tener 2 salidas obligatorias
y el participante debe indicar con un SI el flujo en caso el TEST sea verdadero y con un NO el flujo a
seguir en caso el TEST sea Falso.
Ejercicios resueltos y propuestos
1.- Construya un programa que convierta de Pies a metros
2.- Construya un programa que ingrese una EDAD y diga si esta persona es Mayor de edad
Note que la nomenclatura para comparar la edad con 18 años es >= lo cual se lee "ES MAYOR O IGUAL QUE..."
Considere entonces los siguientes símbolos para poder comparar:
Símbolo Significa
> Mayor que...
< Menor que...
>= Mayor o Igual que...
<= Menor o Igual que...
= Igual que...
<> Diferente que...
3. Construya un programa que pida un numero A y muestre si el numero ingresado es PAR
aquí usaremos el operador MOD. Mod devuelve el residuo de una división
por ejemplo 20 MOD 3 resulta 2 ya que al dividir 20 entre 3 da 6 sobrando 2 de residuo.
4. Construya un programa que pida un numero A y muestre si el numero ingresado es PAR o IMPAR
5.- Hacer un programa que determine que numero es el mayor de 2 números ingresados
6.- Mostrar los 100 números pares a partir de 2
Esta es una construcción de una estructura repetitiva en forma de diagrama de flujo
note que el ciclo repetitivo termina cuando A llega a ser 102 en ese instante el TEST será
102 > 100 la respuesta es SI (verdadero) entonces el flujo irá por el camino del SI lo cual obliga a terminar el
programa.
Tabla de contenido
HISTORIA DE LOS ALGORITMOS.......................................................................................................................................................1
INDICE............................................................................................................................................................3
PENSAMIENTO COMPUTACIONAL..................................................................................................................3
PENSAMIENTO ALGORITMICO........................................................................................................................3
ALGORITMO...................................................................................................................................................4
TIPOS DE ALGORITMO..............................................................................................................................................4
¿QUE SON LOS ALGORITMOS?........................................................................................................................4
¿POR QUE EL ESTUDIO DE LOS ALGORITMOS ES ENRIQUECEDOR...................................................................5
¿CUAL ES EL PAPEL DE LOS ALGORITMOS TAN FAMILIAR A OTRAS TECNOLOGIAS USADAS EN
COMPUTADORAS...........................................................................................................................................5
Cómo hacer un algoritmo...............................................................................................................................6
Tipos de algoritmo..........................................................................................................................................13
Ejemplos de algoritmos................................................................................................................................13
Analisis del problema......................................................................................................................................................... 13
Diseño del algoritmo........................................................................................................................................................... 13
Tipos de algoritmo
De acuerdo con alguno de sus atributos los algoritmos pueden clasificarse de
distintas formas:
Según su sistema de signos tenemos los algoritmos cualitativos (paso a paso)
o cuantitativos (utilizan cálculos numéricos).
A los algoritmos que requieran del uso de un ordenador para su resolución se le
conocen como algoritmos computacionales (siendo los no
computacionales aquellos que no requieran el uso de un ordenador).
Los algoritmos condicionales llegados a un punto del mismo, presentan varias
acciones para ejecutarse y resolver el problema. Estas acciones no se presentan al
azar sino que hay una condición previa que según la cual se ejecutará una u otra
acción.
Se conoce como algoritmos secuenciales aquellos con estructura secuencial, es
decir, la salida de una secuencia es la entrada de la siguiente.
Ejemplos de algoritmos
Un ejemplo de algoritmo cualitativo sería una receta de cocina, donde se van
enumerando los pasos a realizar, uno a uno y de forma verbal. Por otro lado, un
ejemplo de algoritmo cuantitativo sería el cálculo del área de un rectángulo, que
conlleva el uso de cálculos matemáticos para su obtención.
Para un algoritmo condicional podríamos ver un problema donde dados los catetos
de un triángulo rectángulo, calcular su hipotenusa.
Analisis del problema
1. Tenemos que leer la longitud de los dos catetos y calcular la hipotenusa.
2. (Teorema de Pitágoras)
3. Variables de entrada: cateto1(real), cateto2(real)
4. Variables de salida: hipotenusa(real)
Diseño del algoritmo
1. Leer la longitud de los catetos
2. Calcular hipotenusa (En un triángulo rectángulo el cuadrado de la hipotenusa es igual
a la suma de los cuadrados de los catetos). Por lo tanto la hipotenusa es igual a la
raíz cuadrada de la suma de los cuadrados de los catetos.
3. Mostrar la hipotenusa
Proceso CalcularHipotenusa
Definir cateto1,cateto2,hipotenusa Como Real;
Escribir "Introduce el cateto 1:";
Leer cateto1;
Escribir "Introduce la cateto 2:";
Leer cateto2;
hipotenusa <- raiz(cateto1 ^ 2 + cateto2 ^ 2);
Escribir "La hipotenusa es ",hipotenusa;
FinProceso
Un ejemplo actual de un algoritmo informático que se suele utilizar a
diario, es el algoritmo de búsqueda de Google. Cuando entramos al
buscador de Google y realizamos una búsqueda, lo que activamos es un
algoritmo, que ejecuta Google y que nos devuelve una serie de resultados
de búsqueda. En el caso de posicionamiento web o SEO, este algoritmo o
algoritmos que utiliza Google, son fuentes de controversia, porque se
desconoce su funcionamiento exacto y son muchos los que diariamente
tratan de descifrarlo.