TEMA 2: CONCEPTOS BÁSICOS DE ALGORÍTMICA 1. Definición de Algoritmo 1.1. Propiedades de los Algoritmos 2. ¿Qué es un Programa? 2.1. Cómo se construye un Programa 3. Definición y uso de herramientas para describir soluciones: Diagramas de flujo, Pseudocódigo 3.1. El Diagrama de Flujo 3.2. El pseudocódigo 4. Traducción de ideas a un lenguaje de programación concreto: El problema de la implementación 4.1. Acciones y Estructuras de control 4.2. Procedimientos 5. Lenguajes de programación. Clasificación. Colocación en la clasificación del lenguaje C 5.1. 5.1.1. Lenguajes máquina 5.1.2. Lenguajes de bajo nivel 5.1.3. Lenguajes de alto nivel 5.2. Tema 2. Clasificación de los lenguajes de programación El lenguaje C Pág. 1 1.Definiciones de Algoritmo: • Un algoritmo es la expresión de una secuencia precisa de operaciones que conduce a la resolución de un problema. • Sistema de reglas que permiten obtener una salida específica a partir de una entrada específica. Cada paso debe estar definido exactamente, de forma que pueda traducirse a lenguaje de computadora 1.1 Propiedades de los Algoritmos. - Debe ser finito - Toda regla debe definir perfectamente la acción a desarrollar - Todos sus pasos deben ser simples y tener un orden definido. - Un Algoritmo no debe resolver un solo problema particular sino una clase de problemas. - Un Algoritmo debe ser eficiente y rápido. Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo 2. Definiciones de Programa. • Un programa para ordenador es la expresión de un algoritmo en un lenguaje artificial formalizado. • Conjunto de Instrucciones que controlan el funcionamiento del ordenador Tema 2. Pág. 2 2.1. Cómo se contruye un programa. Fases en la construcción de un programa • Análisis del problema: equivale a decidir qué es lo que tenemos que hacer • Diseño o desarrollo de la solución: en esta etapa se define cómo vamos a hacerlo Los Métodos más eficaces se apoyan en el conocido Divide y vencerás, (diseño descendente o top down o modular • Codificación o construcción de la solución en forma de programa • Pruebas • Mantenimiento 3.1 Definición y uso de Herramientas para describir soluciones. Diagramas de Flujo. Es una representación gráfica de un algoritmo, mediante símbolos (cajas) que tiene los pasos del algoritmo escritos en cajas unidas por flechas, denominadas líneas de flujo, que indican la secuencia en que se debe ejecutar. Tema 2. Pág. 3 Terminal C F Comienzo Fin Entrada/Salida Proceso NO Decisión SI Decisión Multiple Linea de Flujo Conectores Misma Página Otra Página Llamada a Subrutina Tema 2. Pág. 4 Ejemplo: Diagrama de Flujo para indicar si un Nº es par o impar 3.2. Definición y uso de Herramientas para describir soluciones. Pseudocódigo. Es una herramienta que permite la descripción narrativa de algoritmos, en donde no hay reglas sintácticas estrictas, ya que el interés se centra en la secuencia de instrucciones. Tema 2. Pág. 5 Pseudocódigo para indicar si un Nº es par o impar 1. Inicio 2. Si N=2 escribe par e ir a 6, en caso contrario continuar 3. Si N=1 escribe impar e ir a 6, en caso contrario continuar 4. N=N-2 5. Volver al punto 2 6. Fin Pseudocódigo que permite deducir si un Nº es primo o no. 1. Inicio 2. Solicitar N (N es el Nº que queremos averiguar si es o no primo) 3. Poner X=2 (X representa a la variable que va a contener los divisores del número N) 4. Dividir N por X 5. Si el Resultado de N / X es entero y X <>N entonces N no es primo y bifurcar al punto 9. En caso contrario continuar 6. Si el resultado de N / X es entero y X = N entonces N es un Nº primo y bifurcar al punto 9. En caso contrario continuar 7. Suma 1 a X 8. Bifurcar al punto 5 9. Fin Tema 2. Pág. 6 4. Traducción de ideas a un lenguaje de programación concreto: El problema de la implementación 4.1. Acciones y Estructuras de Control Las acciones marcan el juego de operaciones que se pueden realizar, mientras que las estructuras de control determinan el orden de realización de las mismas. Acciones: Asignación Entradas-salidas Instrucciones Aritmético-lógicas Estructuras de Control Decisiones Ciclos (repetitivo o condicional) 4.2. Procedimientos Es un fragmento de programa que realiza una tarea concreta y recibe un nombre por el que puede ser llamado o activado desde otra parte del programa. Concepto de argumentos. 5. Lenguajes de Programación. Clasificación. Un programa es un conj. Ordenado de Instrucciones que se dan al ordenador indicándole las operaciones a realizar. Estas instrucciones (que son las acciones a realizar), se construyen con elementos o simbolos tomados de un determinado repertorio y siguiendo reglas precisas (Esto es lo que constituye el lenguaje de programación). Tema 2. Pág. 7 5.1. Clasificación de lenguajes 5.1.1 Lenguaje máquina Los lenguajes máquina son directamente inteligibles por el ordenador, ya que sus instrucciones son cadenas binarias (caracteres 0 y 1) que especifican una operación, y las posiciones (dirección) de memoria implicadas en la misma. Estas instrucciones se llaman instrucciones máquina o código máquina - Ventajas: No necesitan traducción lo que supone una gran velocidad de ejecución superior a cualquier otro lenguaje de programación. - Inconvenientes: dificultad y lentitud en la codificación, poca fiabilidad, dificultad grande de verificar y poner a punto los programas Los programas sólo son ejecutables en el mismo procesador 5.1.2. Lenguajes de bajo nivel (ensamblador). Un programa escrito en lenguaje ensamblador no puede ser ejecutado directamente por la computadora, sino que requiere una fase de traducción al lenguaje máquina Los programas en ensamblador son más fáciles de codificar que en lenguaje máquina. Sin embargo siguen dependiendo totalmente de la máquina, y la formación de los programas en ensamblador es más compleja que la correspondiente a los programas de alto nivel Tema 2. Pág. 8 5.1.3. Lenguajes de alto nivel Este tipo de lenguajes presentan las siguientes ventajas: La escritura de programas se basa en reglas sintácticas similares a los lenguajes humanos. Las modificaciones y puestas a punto de los programas son más fáciles. Portabilidad. Y sus inconvenientes son: Se necesitan varias traducciones del programa fuente para conseguir el programa definitivo. No se aprovechan los recursos internos de la máquina. El tiempo de ejecución es mucho mayor. Traducción Compiladores (código fuente + código objeto) Interpretes (análisis, traducción del código fuente) 5.2 Lenguaje C: C combina elementos de lenguajes de alto nivel con la funcionalidad del lenguaje ensamblador. Permite la manipulación de bits, bytes (palabras), direcciones (punteros). Soporta el concepto de tipos de datos (conj. Valores que puede tener una variable junto a conj de operaciones) Tema 2. Pág. 9