El documento resume la historia y conceptos clave de los algoritmos. Explica que los algoritmos se originaron con el matemático Al-Khwarizmi en el siglo IX y que Ada Byron escribió el primer algoritmo para una computadora en 1842. También describe las características de los algoritmos, diferentes tipos como deterministas y no deterministas, y métodos para analizar y representar algoritmos como diagramas de flujo.
2. * La palabra algoritmo proviene del nombre del matemático llamado Abu Abdullah
Muhammad bien Musa al-Khwarizmi (hay muchas variantes para el nombre al usar el
alfabeto latín, tales como Al-Khorezmi, Al-Khwarizmi, Al-Khawarizmi, Al-Khawaritzmi o Al-
Khowarizmi) que vivió entre los siglos VIII y IX.
* Ya en el siglo XIX, se produjo el primer algoritmo escrito para un computador. La
autora fue Ada Byron, en cuyos escritos se detallaban la máquina analítica en 1842. Por ello
que es considerada por muchos como la primera programadora aunque, desde Charles
Babbage, nadie completó su máquina, por lo que el algoritmo nunca se implementó.
* La idea de resolver un problema o de disponer de un algoritmo es bastante
antigua, tal es así, que existía la errada creencia que no había problema que no se pudiera
resolver y en base a ello, el matemático David Hilbert quiso descubrir un algoritmo para los
algoritmos. Hoy en día gracias a los trabajos de Kurt Gödel, Alonzo Church (calculo lamba),
Alan Turing (maquina de turing), se sabe que dentro del universo de problemas, una
pequeña parte es computable, luego que el objetivo que perseguia David Hilbert no era
computable, es lo que se ha denominado como la computabilidad de los algoritmos.
HISTORIA.
3. * Que es
algoritmo?* Es un conjunto ordenado y finito de operaciones, con el
objetivo de realizar una actividad con pasos definidos y así
encontrar una solución a cualquier problema la gran mayoría de
veces.
4. Características de un algoritmo:
Las características fundamentales que debe cumplir todo algoritmo son:
-Ser definido: Sin ambigüedad, cada paso del algoritmo debe indicar la acción a realizar sin
criterios de interpretación.
-Ser finito: Un número específico y numerable de pasos debe componer al algoritmo, el cual
deberá finalizar al completarlos.
-Tener cero o más entradas: Datos son proporcionados a un algoritmo como insumo (o estos son
generados de alguna forma) para llevar a cabo las operaciones que comprende.
-Tener una o más salidas: Debe siempre devolver un resultado; de nada sirve un algoritmo que
hace algo y nunca sabemos que fue. El devolver un resultado no debe ser considerado como
únicamente “verlos” en forma impresa o en pantalla, como ocurre con las computadoras. Existen
muchos otros mecanismos susceptibles de programación que no cuentan con una salida de
resultados de esta forma. Por salida de resultados debe entenderse todo medio o canal por el cual
es posible apreciar los efectos de las acciones del algoritmo.
-Efectividad: El tiempo y esfuerzo por cada paso realizado debe ser preciso, no usando nada más
ni nada menos que aquello que se requiera para y en su ejecución.
5. * Clasificación de
algoritmos.
* ALGORITMO DETERMINISTA: es u completamente predecible si se
conocen las entradas. Se determina de forma única el siguiente paso.
* ALGORITMO NO DETERMINISTA: este a diferencia del otro ofrece
diferentes resultados con la entrada, por eso se deben agotar todas las
alternativas antes de encontrar la solución.
* ALGORITMOS COMPUTACIONALES: procesos realizados por una
computadora.
* ALGORITMOS NO COMPUTACIONALES: Procesos que son
realizados por el ser humano.
6. * Análisis de
algoritmos.* El análisis y estudio de los algoritmos es una disciplina de
las ciencias de la computación y, en la mayoría de los casos, su
estudio es completamente abstracto sin usar ningún tipo de
lenguaje de programación ni cualquier otra implementación; por
eso, en ese sentido, comparte las características de las
disciplinas matemáticas. Así, el análisis de los algoritmos se
centra en los principios básicos del algoritmo, no en los de la
implementación particular. Una forma de plasmar (o algunas
veces "codificar") un algoritmo es escribirlo en pseudocódigo o
utilizar un lenguaje muy simple tal como Léxico, cuyos códigos
pueden estar en el idioma del programador.
7. * Hay muchos que piensan que resolver un algoritmo es
resolver un problema matemático o una ecuación. El enunciado
del problema es que es lo que queras lograr, y el algoritmo debe
ser una explicación detallada de cada paso que tenes que dar
para solucionar el problema. por ejemplo: el problema seria: se
quiere orfenar una tabla por nombres ahora, lo que vos tenes que
hacer es pensar como lo harías vos, por ejemplo:
* Agarrar el primer nombre y ponerlo al principio. Agarrar el
segundo nombre. Si este nombre viene después (en orden) que
el anterior ponerlo Después de este. Si no, ponerlo primero y
correr el anterior mas abajo Agarras el tercer nombre Lo
comparas con el primero y haces lo mismo Después con
comparas por el segundo y haces lo mismo y así hasta terminar.
8.
9. * Solucionar un programa de
algoritmos.
* Es una herramienta para aprender la lógica de programación,
orientada a estudiantes sin experiencia en dicha área. Mediante la
utilización de un simple y limitado pseudo-lenguaje intuitivo y en español,
permite comenzar a comprender conceptos básicos y fundamentales de
un algoritmo computacional. Nacido originalmente como proyecto final
para la materia Programación I de la carrera Ingeniería en Informática de
la Facultad de Ingeniería y Ciencias Hídricas de la Universidad Nacional
del Litoral, es en realidad un intérprete de pseudocódigo basado en los
contenidos de la cátedra de Fundamentos de Programación de dicha
carrera.
10. Diagramas de flujo
* Los diagramas de flujo son descripciones gráficas de
algoritmos; usan símbolos conectados con flechas para
indicar la secuencia de instrucciones y están regidos por ISO.
* Los diagramas de flujo son usados para representar
algoritmos pequeños, ya que abarcan mucho espacio y su
construcción es laboriosa. Por su facilidad de lectura son
usados como introducción a los algoritmos, descripción de un
lenguaje y descripción de procesos a personas ajenas a la
computación.
11. -Algoritmo de ordenamiento En computación y matemáticas un algoritmo
de ordenamiento es un algoritmo que pone elementos de una lista o
un vector en una secuencia dada por una relación de orden, es decir, el
resultado de salida ha de ser una permutación —o reordenamiento— de la
entrada que satisfaga la relación de orden dada. Las relaciones de orden más
usadas son el orden numérico y el orden lexicográfico. Ordenamientos
eficientes son importantes para optimizar el uso de otros algoritmos (como los
de búsqueda y fusión) que requieren listas ordenadas para una ejecución
rápida. También es útil para poner datos en forma canónica y para generar
resultados legibles por humanos.
-Algoritmo de búsqueda Un algoritmo de búsqueda es aquel que está
diseñado para localizar un elemento con ciertas propiedades dentro de
una estructura de datos; por ejemplo, ubicar el registro correspondiente a
cierta persona en una base de datos, o el mejor movimiento en una partida
de ajedrez.
La variante más simple del problema es la búsqueda de un número en
un vector.
Tipos de algoritmos según su función
13. * DFD
* Un diagrama de flujo de datos (DFD por sus siglas
en español e inglés) es una representación gráfica para la maceta del
"flujo" de datos a través de un sistema de información. Un diagrama de
flujo de datos también se puede utilizar para la visualización de
procesamiento de datos (diseño estructurado). Es una práctica común
para un diseñador dibujar un contexto a nivel de DFD que primero
muestra la interacción entre el sistema y las entidades externas. Este
contexto a nivel de DFD se "explotó" para mostrar más detalles del
sistema que se está modelando.
* Los diagramas de flujo de datos fueron inventados por Larry
Constantine, el desarrollador original del diseño estructurado, basado en
el modelo de computación de Martin y Estrin: "flujo gráfico de datos" .
Los diagramas de flujo de datos (DFD) son una de las tres perspectivas
esenciales de Análisis de Sistemas Estructurados y Diseño por Método
SSADM. El patrocinador de un proyecto y los usuarios finales tendrán
que ser informados y consultados en todas las etapas de una evolución
del sistema.
14.
15. * C++
* C++ es un lenguaje de programación diseñado a
mediados de los años 1980 por Bjarne Stroustrup. La
intención de su creación fue el extender al exitoso lenguaje de
programación C con mecanismos que permitan la
manipulación de objetos. En ese sentido, desde el punto de
vista de los lenguajes orientados a objetos, el C++ es un
lenguaje híbrido.
Posteriormente se añadieron facilidades de
programación genérica, que se sumó a los otros dos
paradigmas que ya estaban admitidos (programación
estructurada y la programación orientada a objetos). Por esto
se suele decir que el C++ es un lenguaje de programación
multi para digma.
16.
17. * Visual FoxPro
* Visual FoxPro es un lenguaje de programación procedural, orientado a objetos
que posee un Sistema Gestor de Bases de datos o Database Management System
(DBMS) y Sistema administrador de bases de datos relacionales, producido por Microsoft.
Características
* Capacidades para el manejar datos nativos y remotos.
* Flexibilidad para crear soluciones de bases de datos.
* Lenguaje de Programación Orientado a objetos.
* Utilización de Sentencias SQL en forma nativa.
* Manejo de vistas, cursores y control completo de estructuras relacionales.
* Su propio gestor de base de datos incorporado. Sin embargo, también puede
conectarse con servidores de base de datos, tales como Oracle, Microsoft SQL Server o
MySQL.
* Cuenta con un motor de generación de informes renovado y flexible para
soluciones más robustas.
* Desde la versión 9.0, amplio soporte de XML, tanto como fuente de datos (por
ej., servicios Web basados en XML) como por generar reportes en formato XML.