140 likes | 254 Views
1.2 Definición y 1.3 elaboración de algoritmos. Sección 2. 1.2 DEFINICION DE ALGORITMOS. VISIÓN HISTÓRICA
E N D
1.2 DEFINICION DE ALGORITMOS VISIÓN HISTÓRICA • Un algoritmo es el conjunto de pasos, procedimientos o acciones ordenadas que permiten alcanzar un resultado o resolver un problema. La palabra “algoritmo” deriva del nombre latinizado del gran matemático árabe Mohamed Ibn Moussa Al Kow Rizimi, el cual escribió entre los años 800 y 825 su obra Quitab Al Jabr Al Mugabala, donde se recogía el sistema de numeración hindú y el concepto del cero. Fue Fibonacci, el que tradujo su obra al latín y la inicio con la obra Algoritmi dicit.
Lenguaje algoritmico y lenguaje de programación • Un programa, concepto desarrollado por Von Neumann en 1496, es un conjunto de instrucciones que ejecuta una computadora para alcanzar un resultado específico. • El lenguaje algorítmico es aquel por medio del cual se realiza un análisis previo del problema a resolver y encontrar un método que permita resolverlo. El conjunto de todas las operaciones a realizar, y el orden en el que deben efectuarse, se le denomina algoritmo. • Un lenguaje de programación, por otra parte, está constituido por un conjunto de reglas sintácticas y semánticas que hacen posible escribir un programa.
Lenguaje algoritmico y lenguaje de programación (2) • El lenguaje de programación es aquel por medio del cual dicho algoritmo se codifica a un sistema comprensible por la computadora. Este tipo de lenguaje es más cercano a la máquina que al ser humano y podemos distinguir distintos tipos dependiendo de la proximidad de la máquina. Se denomina lenguaje de alto nivel al que es más cercano a la comprensión humana y lenguaje de bajo nivel a aquellos que son más comprensibles por la máquina.
Jerarquía de lenguajes • La jerarquía de lenguajes indica el grado de dependencia que tienen estos respecto de una máquina o procesador en especial y se pueden clasificar corno: • lenguajes de máquina • lenguajes ensambladores • lenguajes de nivel medio • lenguajes de alto nivel de uso general • lenguajes de propósito especial • lenguajes de inteligencia artificial
Descripciones: • El lenguaje máquina: • Es el 'nativo' de cada computadora y describe la estructura particular de ésta. Cada instrucción y dirección dentro de la máquina son un código numérico. Para comunicarse con una computadora por medio de este lenguaje no se necesitan traductores. • El lenguaje ensamblador • Es una versión simbólica del lenguaje de máquina que tiene una relación uno a uno. Los códigos de las instrucciones se traducen a nemónicos tales como MOV, ADD, MUL y SUB y las direcciones toman nombres simbólicos. El lenguaje ensamblador permite el uso más eficiente de los recursos de la computadora.
Descripciones: • Los lenguajes de nivel medio • Como C permiten el manejo eficiente de las instrucciones de ensamblador y las estructuras de control de flujo, repetición y secuencia de un lenguaje de alto nivel. • Los lenguajes de alto nivel • Como PASCAL, ADA, MODULA, permiten tener independencia de la estructura interna de la computadora al manejar estructuras de control de flujo, repetición y secuencia de un lenguaje de alto nivel. • Los lenguajes de propósito especial • Con de alto nivel y permiten la solución de problemas específicos en determinadas áreas como SQL para manejo de bases de datos. • Los lenguajes de inteligencia artificial • Permiten declarar el conocimiento explícitamente, aquí las estructuras de control de flujo, repetición y secuencia no se expresan en el programa, por lo que existe una separación entre lógica y control de la computadora.
Técnicas para elaboración de algoritmos • Lo que pretende un algoritmo es sintetizar de alguna forma una tarea, cálculo o mecanismo antes de ser transcrito a la computadora. Los pasos generales son los siguientes: • Análisis previo del problema. • Descomposición en módulos • Búsqueda de soluciones parciales. • Ensamblaje de soluciones finales. • Verificación del algoritmo.
ASPECTOS BASICOS DE LOS ALGORTIMOS CARACTERÍSTICASLas características que deben contemplar los algoritmos son las siguientes: • Precisión: Todos los pasos del algoritmo deben ser precisados claramente. • Determinismo: Dado un conjunto de datos idénticos de entrada, el algoritmo siempre debe de arrojar los mismos resultados. • Finitud:Independientemente de la complejidad de un algoritmo, este debe ser de longitud finita.
Algoritmo 1) Datos de Entrada 2) Procesamiento de datos 3) Impresión de resultados Secciones principales de un algoritmo son:
Secciones (cont) • La sección 1 representa la operación o acción que permite el ingreso de los datos del problema. • La sección 2 representa la operación o conjunto de operaciones secuenciales, cuyo objetivo es alcanzar la solución del problema. • La sección 3 representa una operación o conjunto de operaciones que permiten comunicar al exterior los resultados alcanzados.
Algunas consideraciones estilísticas • Los criterios de estilo pueden reflejarse en un conjunto de normas de estilo de codificación. Ello asegura que tanto algoritmos como programa resulten legibles y puedan modificarse fácilmente en caso de necesidad. Generalmente, estas normas de estilo se dirigen hacia aspectos como la forma de construir los nombres de variables o tipo de datos que aparezcan., la tipografía seguida ala hora de escribir nombres de variables, subprogramas, palabras claves, etc. El modo de encolumnar las distintas partes de un algoritmo para facilitar su lectura y comprensión, y la normas sobre como y donde deben de introducirse los comentarios.
¿Cuáles son las característica de un buen algoritmo? • Corrección, el algoritmo debe funcionar. • Nunca se debe olvidar que la característica más simple e importante de un algoritmo es que funcione. Pude aparecer obvio, pero resulta difícil de asegurar en algoritmos complejos. • Eficiencia, el algoritmo no debe desaprovechar recursos. La eficiencia de un algoritmo se mide por los recursos que este consume. En particular, se habla de la memoria y del tiempo de ejecución . A pesar de que con la reducción de los costes del hardware es posible diseñar computadores más rápidos y con más memoria, no hay que desperdiciar estos recursos y tratar de desarrollar algoritmos más eficientes. • Claridad, el algoritmo debe estar bien documentación. La documentación ayuda a comprender el funcionamiento de los algoritmos. Ciertos detalles o algunas partes especiales de los mismos pueden olvidarse fácilmente o quedar oscura si no están adecuadamente comentadas. Resumiendo: • Lo ideal es que nuestro algoritmo resulte correcto, eficiente, claro, fiable y fácil de mantener.
EJERCICIO TEMATICO: 2 • ¿Como ha evolucionado de manera cronológica los lenguajes de programación hasta nuestros días?. • Cual es la tendencia de las próximas generaciones de hardware y software (lenguajes de programación). • Ejemplifique la sintaxis de por lo menos tres lenguajes de programación (de preferencia de diferentes generaciones). • Encabezado con su nombre • Conclusiones personales • Referencia bibliografica • Entregar fecha establecida