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. *
* 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. *
* 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. *
* 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. * 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. *
* 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++ 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 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.