El documento presenta información sobre algoritmos, incluyendo su definición, características, partes, diagramas de flujo, pseudocódigo y estructuras algorítmicas. Explica que un algoritmo es una serie de pasos para resolver un problema y debe tener entrada, proceso y salida. También describe lenguajes algorítmicos como diagramas de flujo y pseudocódigo.
2. Algoritmos Definición de lenguaje: Lenguaje: Es una serie de símbolos que sirven para transmitir uno o mas mensajes (ideas) entre dos entidades diferentes. A la transmisión de mensajes se le conoce comúnmente como comunicación. La comunicación es un proceso complejo que requiere una serie de reglas simples, pero indispensablemente para poderse llevar a cabo. Las dos principales son las siguientes: Los mensajes deben correr en un sentido a la vez. Debe forzosamente existir 4 elementos: Emisor, receptor, medio de comunicación y mensaje Elaborado por: Leidy Chavarría Grajales
3. Algoritmos GeneracionesLa evolución de los lenguajes de programación se puede dividir en 5 etapas o generaciones. Primera generación: lenguaje maquina. Segunda generación: se crearon los primeros lenguajes ensambladores. Tercera generación: se crean los primeros lenguajes de alto nivel. Ej. C, Pascal, Cobol… Cuarta generación. Son los lenguajes capaces de generar código por si solos, RAD (rapidapplicationdevelopment), con lo cuales se pueden realizar aplicaciones sin ser un experto en el lenguaje. Aquí también se encuentran los lenguajes orientados a objetos, haciendo posible la reutilización d partes del código para otros programas. Ej. Visual, Natural Adabes… Quinta generación: aquí se encuentran los lenguajes orientados a la inteligencia artificial. Estos lenguajes todavía están poco desarrollados. Ej. LISP Elaborado por: Leidy Chavarría Grajales
4. Algoritmos Lenguaje de Programación: Un lenguaje de programación: Es un conjunto de símbolos, caracteres y reglas (programas) que le permiten a las personas comunicarse con la computadora . Los lenguajes de programación tienen un conjunto de instrucciones que nos permiten realizar operaciones de entrada/salida, calculo, manipulación de textos, lógica/comparación y almacenamiento/recuperación. Los lenguajes de programación se clasifican en: El lenguaje maquina: Este lenguaje ordena a la máquina las operaciones fundamentales para su funcionamiento. Consiste en la combinación de 0's y 1's para formar las ordenes entendibles por el hardware de la maquina. Este lenguaje es mucho más rápido que los lenguajes de alto nivel. La desventaja es que son bastantes difíciles de manejar y usar, además de tener códigos fuente enormes donde encontrar un fallo es casi imposible. Elaborado por: Leidy Chavarría Grajales
5. Algoritmos El lenguaje de bajo nivel (ensamblador): El lenguaje ensamblador es un derivado del lenguaje maquina y esta formado por abreviaturas de letras y números llamadas mnemotécnicos. Con la aparición de este lenguaje se crearon los programas traductores para poder pasar los programas escritos en lenguaje ensamblador a lenguaje máquina. Como ventaja con respecto al código máquina es que los códigos fuentes eran más cortos y los programas creados ocupaban menos memoria. Las desventajas de este lenguaje siguen siendo prácticamente las mismas que las del lenguaje ensamblador, añadiendo la dificultad de tener que aprender un nuevo lenguaje difícil de probar y mantener. Elaborado por: Leidy Chavarría Grajales
6. Algoritmos Lenguajes de alto nivelSon aquellos que se encuentran más cercanos al lenguaje natural que al lenguaje máquina. Están dirigidos a solucionar problemas mediante el uso de EDD's. Nota:EDD's son las abreviaturas de Estructuras Dinamicas de Datos, algo muy utilizado en todos los lenguajes de programación. Son estructuras que pueden cambiar de tamaño durante la ejecución del programa. Nos permiten crear estructuras de datos que se adapten a las necesidades reales de un programa. Se tratan de lenguajes independientes de la arquitectura del ordenador. Por lo que, en principio, un programa escrito en un lenguaje de alto nivel, lo puedes migrar de una máquina a otra sin ningún tipo de problema. Estos lenguajes permiten al programador olvidarse por completo del funcionamiento interno de la maquina/s para la que están diseñando el programa. Tan solo necesitan un traductor que entiendan el código fuente como las características de la maquina. Suelen usar tipos de datos para la programación y hay lenguajes de propósito general (cualquier tipo de aplicación) y de propósito especifico (como FORTRAN para trabajos científicos). Elaborado por: Leidy Chavarría Grajales
7. Algoritmos Cuando programamos en lenguajes de alto nivel, lo que estamos haciendo en realidad es el código fuente de ese programa. Este código fuente debe ser traducido a binario para que las instrucciones que contienen puedan ser entendidas y ejecutadas por la máquina. Para esto existe un programa encargado de realizar la traducción, llamado traductor del lenguaje. Estos traductores pueden ser de dos tipos: Ensambladores Son los encargados de traducir los programas escritos en lenguaje ensamblador a lenguaje máquina Elaborado por: Leidy Chavarría Grajales
8. Algoritmos CompiladoresSon programas que leen el código fuente y lo traducen o convierten a otro lenguaje. Estos programas te muestran los errores existentes en el código fuente. Elaborado por: Leidy Chavarría Grajales
9. Algoritmos Etapas del proceso de compilación: Edición. Esta fase consiste en escribir el programa empleando algún lenguaje y un editor. Como resultado nos dará el código fuente de nuestro programa. Compilación. En esta fase se traduce el código fuente obtenido en la fase anterior a código máquina. Si no se produce ningún error se obtiene el código objeto. En caso de errores el compilador los mostraría para ayudarnos a corregirlos y se procedería a su compilación de nuevo, una vez corregidos. Linkado. Esta fase consiste en unir el archivo generado en la fase dos con determinadas rutinas internas del lenguaje, obteniendo el programa ejecutable. Existen dos tipos de linkados: linkado estático: Los binarios de las librerías se añaden a nuestros binarios compilados generando el archivo ejecutable. Linkado dinámico: no se añaden las librerías a nuestro binario sino que hará que se carguen en memoria las librerías que en ese momento se necesiten. Elaborado por: Leidy Chavarría Grajales
10. Algoritmos Una vez traducido, compilado y linkado el archivo esta listo para su ejecución donde también podrán surgir problemas y fallos, para los cuales tendríamos que volver a realizar todo el proceso anteriormente citado, de modo que puedan ser corregidos. Por este motivo es importante realizar numerosas pruebas en tiempo de ejecución antes de presentar el programa al cliente. Otro sistema para la ejecución de nuestro código fuente es mediante el uso de intérpretes (estos no se encontrarían dentro de los traductores). http://www.upseros.com/compiladores.php Elaborado por: Leidy Chavarría Grajales
11. Algoritmos IntérpretesLos intérpretes realizan la traducción y ejecución de forma simultanea, es decir, un intérprete lee el código fuente y lo va ejecutando al mismo tiempo. Las diferencias entre un compilador y un intérprete básicamente son: Un programa compilado puede funcionar por si solo mientras que un código traducido por un intérprete no puede funcionar sin éste. Un programa traducido por un intérprete puede ser ejecutado en cualquier máquina ya que, cada vez que se ejecuta el intérprete, tiene que compilarlo. Un archivo compilado es mucho más rápido que uno interpretado. Intérprete de comandos En Windows XP se utiliza el Intérprete de comandos, que consta de casi los mismos comandos que MSDOS. El Intérprete de comando de MSDOS se llama command.com (Inicio/Ejecutar/command) El Intérprete de comandos de XP se llama cmd (Inicio/Ejecutar/cmd) Elaborado por: Leidy Chavarría Grajales
12. Algoritmos Algoritmo La palabra algoritmo se deriva de la traducción al latín de la palabra árabe alkhowarizmi, nombre de un matemático y astrónomo árabe que escribió un tratado sobre manipulación de números y ecuaciones en el siglo IX Definición 1.: Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir, para dar solución a un problema especifico. Definicion 2: Un algoritmo se puede definir como una secuencia finita de instrucciones, cada una de las cuales tiene un significado claro y puede ser efectuada con una cantidad finita de esfuerzo en una longitud de tiempo finito. Elaborado por: Leidy Chavarría Grajales
13. Algoritmos Características de los algoritmos El científico de computación Donald Knuth ofreció una lista de cinco propiedades, que son ampliamente aceptadas como requisitos para un algoritmo: Carácter finito. "Un algoritmo siempre debe terminar después de un número finito de pasos". Precisión. "Cada paso de un algoritmo debe estar precisamente definido; las operaciones a llevar a cabo deben ser especificadas de manera rigurosa y no ambigua para cada caso". Entrada. "Un algoritmo tiene cero o más entradas: cantidades que le son dadas antes de que el algoritmo comience, o dinámicamente mientras el algoritmo corre. Estas entradas son tomadas de conjuntos específicos de objetos". Salida. "Un algoritmo tiene una o más salidas: cantidades que tienen una relación específica con las entradas". Eficacia. "También se espera que un algoritmo sea eficaz, en el sentido de que todas las operaciones a realizar en un algoritmo deben ser suficientemente básicas como para que en principio puedan ser hechas de manera exacta y en un tiempo finito por un hombre usando lápiz y papel". Elaborado por: Leidy Chavarría Grajales
14. Algoritmos PARTES DE UN ALGORITMO Todo algoritmo debe obedecer a la estructura básica de un sistema, es decir: entrada, proceso y salida. Donde: ENTRADA: Corresponde al insumo, a los datos necesarios que requiere el proceso para ofrecer los resultados esperados. PROCESO: Pasos necesarios para obtener la solución del problema o la situación planteada. SALIDA: Resultados arrojados por el proceso como solución. Elaborado por: Leidy Chavarría Grajales
15. Algoritmos En la practica, para evaluar un buen algoritmo se considera el tiempo que requiere su ejecución, esto puede ser expresado en términos de numero de veces que se ejecuta cada paso. Otros criterios de evaluación pueden ser la adaptabilidad del algoritmo al computador, su simplicidad y elegancia, etc. Algunas veces se tiene varios algoritmos para solucionar el mismo problema, y se debe decidir cual es el mejor. Esto ultimo conduce al “análisis de algoritmos”. Lenguajes Algorítmicos Es una serie de símbolos y reglas que se utilizan para describir de manera explicita un proceso, estos lenguajes algorítmicos pueden ser: Gráficos: Es la representación grafica de las operaciones que realiza el algoritmo (diagrama de flujo) No gráficos: Representa en forma descriptiva las operaciones que debe realizar un algoritmo (pseudocódigo) Elaborado por: Leidy Chavarría Grajales
17. Algoritmos Diagrama de flujo Un diagrama de flujo es la representación grafica de un algoritmo. También se puede decir que es la representación detallada en forma grafica de cómo deben realizarse los pasos en la computadora para producir resultados. Esta representación grafica se da cuando varios símbolos (que indican diferentes procesos en la computadora), se relacionan entre si mediante líneas que indican el orden en que se deben ejecutar los procesos. Los símbolos utilizados han sido normalizados por el instituto norteamericano de normalización (ANSI) Elaborado por: Leidy Chavarría Grajales
19. Algoritmos Recomendaciones para el diseño de Diagramas de FlujoSe deben usar solamente líneas de flujo horizontales y/o verticales. Se debe evitar el cruce de líneas utilizando los conectores. Se deben usar conectores sólo cuando sea necesario. No deben quedar líneas de flujo sin conectar. Se deben trazar los símbolos de manera que se puedan leer de arriba hacia abajo y de izquierda a derecha. Todo texto escrito dentro de un símbolo deberá ser escrito claramente, evitando el uso de muchas palabras Elaborado por: Leidy Chavarría Grajales
20. Algoritmos PseudocódigoMezcla de lenguaje de programación y español (o ingles o cualquier otro idioma) que se emplea, dentro de la programación estructurada, para realizar el diseño de un programa. En esencial, el Pseudocódigo se puede definir como un lenguaje de especificaciones de algoritmos. En esencial, el Pseudocódigo se puede definir como un lenguaje de especificaciones de algoritmos. Es la representación narrativa de los pasos que debe seguir un algoritmo para dar solución a un problema determinado. El Pseudocódigo utiliza palabras que indican el proceso a realizar. Elaborado por: Leidy Chavarría Grajales
21. Algoritmos Ventajas de utilizar un Pseudocódigo a un Diagrama de FlujoOcupa menos espacio en una hoja de papel Permite representar en forma fácil operaciones repetitivas complejas Es muy fácil pasar de Pseudocódigo a un programa en algún lenguaje de programación. Si se siguen las reglas se puede observar claramente los niveles que tiene cada operación. Diagramas estructurados (Nassi-Schneiderman)El diagrama estructurado N-S también conocido como diagrama de chapin es como un diagrama de flujo en el que se omiten las flechas de unión y las cajas son contiguas. Las acciones sucesivas se pueden escribir en cajas sucesivas y como en los diagramas de flujo, se pueden escribir diferentes acciones en una caja. Un algoritmo se represente en la siguiente forma: Elaborado por: Leidy Chavarría Grajales
23. Algoritmos Estructuras AlgorítmicasLas estructuras de operación de programas son un grupo de formas de trabajo, que permiten, mediante la manipulación de variables, realizar ciertos procesos específicos que nos lleven a la solución de problemas. Estas estructuras se clasifican de acuerdo con su complejidad en: Elaborado por: Leidy Chavarría Grajales
24. Algoritmos La estructura secuencial es aquella en la que una acción (instrucción) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el fin del proceso. En Pseudocódigo una Estructura Secuencial se representa de la siguiente forma: Elaborado por: Leidy Chavarría Grajales
25. Algoritmos Ejemplo : el siguiente problema de tipo cotidiano y sus respectivos algoritmos representados en Pseudocódigo y en diagramas de flujos: • Tengo un teléfono y necesito llamar a alguien pero no sé como hacerlo Elaborado por: Leidy Chavarría Grajales
26. Algoritmos AsignaciónLa asignación consiste, en el paso de valores o resultados a una zona de la memoria. Dicha zona será reconocida con el nombre de la variable que recibe el valor. La asignación se puede clasificar de la siguiente forma: Simples: Consiste en pasar un valor constante a una variable (a 15) Contador: Consiste en usarla como un verificador del numero de veces que se realiza un proceso (a a + 1) Acumulador: Consiste en usarla como un sumador en un proceso (a a + b) De trabajo: Donde puede recibir el resultado de una operación matemática que involucre muchas variables (a c + b*2/4). En general el formato a utilizar es el siguiente: < Variable > <valor o expresión > El símbolo debe leerse “asigne”. Elaborado por: Leidy Chavarría Grajales
27. Algoritmos Escritura o salida de datosConsiste en mandar por un dispositivo de salida (p.ej. monitor o impresora) un resultado o mensaje. Esta instrucción presenta en pantalla el mensaje escrito entre comillas o el contenido de la variable. Este proceso se representa así como sigue: Elaborado por: Leidy Chavarría Grajales
28. Algoritmos Lectura o entrada de datosLa lectura o entrada de datos consiste en recibir desde un dispositivo de entrada (p.ej. el teclado) un valor o dato. Este dato va a ser almacenado en la variable que aparece a continuación de la instrucción. Esta operación se representa así: Elaborado por: Leidy Chavarría Grajales
29. Algoritmos DECLARACION DE VARIABLES Y CONSTANTESLa declaración de variables es un proceso que consiste en listar al principio del algoritmo todas las variables que se usarán, además de colocar el nombre de la variable se debe decir qué tipo de variable es. Contador: ENTERO Edad, I: ENTERO Dirección : CADENA_DE_CARACTERES Salario_Basico : REAL Opción : CARACTER En la anterior declaración de variables Contador, Edad e I son declaradas de tipo entero; Salario_Basico es una variable de tipo real, Opción es de tipo carácter y la variable Dirección está declarada como una variable alfanumérica de cadena de caracteres Elaborado por: Leidy Chavarría Grajales
30. Algoritmos En el momento de declarar constantes debe indicarse que lo es y colocarse su respectivo valor. CONSTANTE Pi 3.14159 CONSTANTE Msg “Presione una tecla y continue” CONSTANTE ALTURA 40 Cuando se trabaja con algoritmos por lo general no se acostumbra a declarar las variables ni tampoco constantes debido a razones de simplicidad, es decir, no es camisa de fuerza declarar las variables. Sin embargo en este curso lo haremos para todos los algoritmos que realicemos, con esto logramos hacerlos más entendibles y organizados y de paso permite acostumbrarnos a declararlas ya que la mayoría de los lenguajes de programación (entre ellos el C++) requieren que necesariamente se declaren las variables que se van a usar en los programas. Elaborado por: Leidy Chavarría Grajales
31. Algoritmos Ejemplo 1: Escriba un algoritmo que pregunte por dos números y muestre como resultado la suma de estos. Use Pseudocódigo y diagrama de flujos. Elaborado por: Leidy Chavarría Grajales