INTRODUCCIÓN A LA PROGRAMACIÓN Introducción ........................................................................................................................ 2 Traducción de un programa. Compilación .......................................................................... 3 Compilación Bajo nivel........................................................................................... 4 Compilación Alto nivel ........................................................................................... 4 Intérpretes ................................................................................................................ 4 Fases para el diseño de programas ...................................................................................... 5 Verificación de programas .................................................................................................. 6 Diagrama de flujo de los programas ................................................................................... 7 Símbolos Básicos utilizados en los organigramas .............................................................. 7 Conceptos sobre la programación estructurado .................................................................. 8 Recursos abstractos .......................................................................................... 8 Razonamiento deductivo Top Down................................................................ 8 Estructuras básicas .............................................................................................................. 9 Concatenación .................................................................................................. 9 Alternativa........................................................................................................ 9 Repetitiva ......................................................................................................... 10 Combinación de las estructuras básicas .............................................................................. 11 Introducción a la programación 2 INTRODUCCIÓN Un PROGRAMA se puede definir como un conjunto de INSTRUCCIONES y ÁREAS DE DATOS o VARIABLES, o lo que es lo mismo Instrucciones u Ordenes que manipulan datos. Estas instrucciones deberán ser introducidas en la memoria del ordenador para que sean ejecutadas por su procesador. En los primeros ordenadores, para generar un programa ejecutable era necesario introducir las instrucciones del programa en las celdas de su memoria utilizando algún procedimiento material, como tarjetas o cintas de papel previamente perforadas, de modo que cada perforación representaba un 1 y la ausencia de perforación un 0. En el futuro a este tipo de programa lo denominaremos PROGRAMA OBJETO o MÁQUINA. Semejante trabajo era sumamente tedioso, estaba sometido a un elevado porcentaje de errores y requería gran cantidad de tiempo, dado que un programa normal podía tener varios miles de instrucciones. Por tal motivo fue necesario desarrollar algunas "herramientas" que permitiesen aliviar la escritura de los programas y su posterior transcripción a la memoria central en forma de instrucciones máquina. Estas herramientas son los llamados LENGUAJES DE PROGRAMACIÓN. Estos permiten escribir las instrucciones de los programas, no a base de ceros y unos, sino mediante símbolos o caracteres (letras, signos numéricos y especiales) fácilmente entendibles por el programador. A estos tipos de lenguajes se les denomina LENGUAJES SIMBÓLICOS. Por ejemplo, algunas de las representaciones de instrucciones simbólicas podrían ser : SUM para sumar, SUB para restar, DIV para dividir, MOV para mover datos, etc. Posteriormente y mediante un programa denominado TRADUCTOR o COMPILADOR se traducen las instrucciones simbólicas a instrucciones de máquina “entendibles y ejecutables” por el procesador. Los primeros lenguajes traductores dieron lugar a la traducción una por una. Es decir, una instrucción de programa simbólico se traducía a una sola instrucción de programa máquina, ejecutándose posteriormente según la secuencia especificada. Ello implicaba tener un gran conocimiento del funcionamiento del procesador. Por ejemplo, si ha de llevarse a cabo una suma, uno de los valores implicados ha de estar en un acumulador antes de que se ejecute la instrucción de suma. Ejemplo: Calcular el valor de X de la siguiente operación matemática. (A+B) x (C+D) X= ───────── (E+F) A, B, C, D, E y F se interpretan como áreas de datos o variables. Se entiende que el valor de estas variables debe conservarse en todo momento. MOV B,M: SUM A,M: MOV D,N: SUM C,N: MOV F,P: SUM E,P: MLT M,N: DIV N,P: MOV P,X: Llevar el valor de B a M. Sumar A y M. El resultado dejarlo en M. Llevar el valor de D a N. Sumar C y N. El resultado dejarlo en N. Llevar el valor de F a P. Sumar E a P. El resultado dejarlo en P. Multiplicar los valores de M y N. El resultado dejarlo en N. Dividir el valor de N entre el valor de P (es decir dividir (A+B) x (C+D) entre E+F). El resultado dejarlo en P. Llevar P (el resultado) a X. Introducción a la programación 3 A este tipo de lenguajes de programación se les denomina “Ensambladores” y son considerados de BAJO NIVEL ya que el lenguaje simbólico utilizado guarda cierta analogía con el funcionamiento del procesador, o lo que es lo mismo, con las instrucciones del programa máquina. Más tarde, aparecieron las “macroinstrucciones”. Es decir, que se podía utilizar una sola instrucción en el programa y al traducirla o compilarla se generaba un conjunto de instrucciones máquina. Este método incrementó considerablemente la capacidad de los lenguajes de programación. Estos tipos de lenguajes son considerados de ALTO NIVEL ya que no recuerdan en absoluto el «hardware» del ordenador ni su funcionamiento interno como ocurre con los lenguajes de bajo nivel, por tal motivo dichos lenguajes emplean terminología fácilmente comprensible y que se aproxima más o menos al lenguaje humano. Ejemplo: Calcular el valor de la función X de la expresión matemática, utilizando un lenguaje de programación alto nivel como el FORTRAN, QBASIC, VISUAL BASIC... (A+B) x (C+D) X = ─────────────── E+F X = (A+B) * (C+D) / (E+F) TRADUCCION DE UN PROGRAMA. COMPILACION Un lenguaje de programación puede considerarse que está dividido en dos partes: 1) El lenguaje propiamente dicho, con sus normas de utilización y sus reglas para la codificación de instrucciones, etc. 2) Un programa denominado traductor o compilador, que permita traducir el programa fuente generado mediante el lenguaje de programación a programa de máquina. La entrada a un traductor se denomina PROGRAMA FUENTE. Este programa es el escrito por el programador aplicando las reglas de codificación del lenguaje de programación, estableciendo las necesidades del problema y el método de solución. Antes de que el programador escriba el programa fuente, deberá haber analizado y definido el problema por completo. La salida del traductor se denomina PROGRAMA OBJETO, que consiste en la traducción del programa fuente, generando el programa que ejecutará el procesador. Introducción a la programación 4 Un programa objeto probado puede utilizarse una y otra vez, con datos relativos al problema, para obtener resultados periódicos (tal como el programa tipo de obtención de nómina o inventario, etc.) Al ejecutarse la traducción de un programa fuente, el traductor se encarga de «revisar» si las instrucciones del programa, escritas en lenguaje simbólico, obedecen a las reglas del lenguaje de programación que utiliza. En caso de encontrar incorrecciones de símbolos o de sintaxis, da aviso de las mismas por medio de la impresora o el monitor y no procede a la traducción propiamente dicha hasta que el programador corrija adecuadamente las instrucciones erróneas. Una vez que el traductor ha verificado la corrección de todas las instrucciones que corresponden al programa fuente, se efectúa la traducción. COMPILADORES PARA LENGUAJES DE PROGRAMACIÓN DE BAJO NIVEL La traducción se realizará sobre el programa fuente completo y mediante la traducción una por una, es decir una instrucción del programa fuente da lugar a una instrucción del programa objeto o programa máquina. Son excepciones las macroinstrucciones, que generarán varias. Se emplean para traducir programas escritos en lenguajes de bajo nivel o ENSAMBLADIORES, muy orientados a la máquina. COMPILADORES PARA LENGUAJES DE PROGRAMACIÓN DE ALTO NIVEL La traducción se realizará sobre el programa fuente completo y mediante la traducción una a varias, es decir, una instrucción del programa fuente origina varias del programa objeto o máquina y se emplean para traducir programas escritos en lenguajes orientados al hombre, llamados lenguajes de alto nivel. INTERPRETES Se emplean para facilitar el diseño del programas fuente. El programa fuente se tecleará utilizando el programa EDITOR del Lenguaje de programación. Existen versiones de intérpretes, como son los intérpretes PUROS o intérpretes SEMIPUROS (semi-intérpretes) Los intérpretes semipuros, facilitan enormemente la introducción del programa fuente, ya que en el momento de teclear una orden en el EDITOR, detecta los errores de sintaxis. Los llamados puros, visualizan el error a la hora de ejecutar el programa. Introducción a la programación FASES PARA EL DISEÑO DE PROGRAMAS Las fases generales para diseñar un programa ejecutable son: (Analizar estos procesos con el Lenguaje de Programación Visual Basic) 1ª FASE ** CARGA DEL PROGRAMA FUENTE ** Lenguaje de programación EDITOR + Programa INTERPRETE Programa Fuente 2ª FASE ** PROCRESO DE COMPILACION ** Si se detectan errores Programa FUENTE Programa TRADUCTOR Listado errores de formato Si no se detectan errores Programa OBJETO ejecutable 3ª FASE ** EJECUCION DEL PROGRAMA ** Datos de Entrada Ejecución del Programa Objeto Salida de datos 5 Introducción a la programación 6 VERIFICACIÓN DE PROGRAMA Consiste en procesar el programa, con datos de prueba. Esto se lleva a cabo para asegurarse que el programa no contiene errores lógicos y de que es capaz de producir un resultado correcto. Los errores del programador son difíciles de evitar, de hecho, es muy raro el programa que funciona correctamente la primera vez que se procesa con los datos de prueba. En la mayoría de los casos, son necesarias varias pasadas de prueba antes de que se encuentren y corrijan todos los errores. El traductor encuentra por sí mismo la mayoría de los errores obvios (Errores de sintaxis) durante la pasada de traducción, pero casos tales como indefinición de variables, desbordamientos, falta de previsión de diferentes alternativas en las operaciones de prueba, etc. solamente se detectarán durante las pruebas de verificación. Ejemplo: Si en un programa deseamos dividir A entre B se codificará: LET X= A/B (dividir A entre B). Si codificamos LET X A/ B el traductor detectaría error de sintaxis o formato en el programa fuente. Pero si por error del programador se codifica LET X=A/B1. Entonces el traductor del programa no encontraría ningún error de lenguaje. Ahora bien, una vez traducido el programa, ejecutaría otras operaciones no previstas en el análisis, apareciendo lógicamente resultados erróneos. Para evitar esto, los programas en lenguaje máquina (programas objeto) deben someterse a una depuración a base de una serie de pruebas (juego de ensayos) que prevean las situaciones, que en la práctica, van a producirse durante la ejecución del programa. Introducción a la programación 7 DIAGRAMA DE FLUJO DE LOS PROGRAMAS Será la representación gráfica de la solución del problema con un cierto grado de detalle de modo que facilite la visión general de la solución del problema, de un modo gráfico. Dicha representación puede desglosarse en varios diagramas con el fin de dividir el programa principal en varios módulos. Para poder realizar el flujo lógico de los procesos en los diagramas, esto es, la secuencia de ejecución, se utilizan una serie de símbolos, cada uno de los cuales representa una acción a tomar por el ordenador, como pueden ser: decisiones, lecturas, escrituras, etc. SIMBOLOS BÁSICOS UTILIZADOS EN LOS DIAGRAMAS DE FLUJO Introducción a la programación 8 CONCEPTOS SOBRE LA PROGRAMACIÓN ESTRUCTURADA Se puede considerar que el estructuralismo consiste en estudiar un determinado problema tomando como partida unas estructuras básicas, las cuales, convenientemente manipuladas, permiten construir un esquema dentro del cual puede encontrarse una explicación satisfactoria para cualquier aspecto particular del problema, así como para el problema considerado en su totalidad De otro modo, la Programación Estructurada puede describirse como un conjunto de técnicas que en mayor o menor medida incorporan: PROGRAMACION ESTRUCTURADA Consta de: - Recursos Abstractos - Razonamiento Deductivo Top Down Concatenación - Estructuras Básicas Alternativa Repetitiva RECURSOS ABSTRACTOS Concebir un programa en términos de recursos abstractos consiste en descomponer una determinada acción compleja en términos de un número de acciones más simples. Estas acciones simples serán como MACROINSTRUCCIONES para un ordenador inexistente (BLOQUES), es decir, no se habrá llegado a nivel de instrucción, sino de bloque, de alguna estructura básica FIESTA DE LA ESCUELA RELACIONES INSTITUCIO NALES BÚSQUEDA DE FONDOS DIRECCIÓN ESCUELA ENTIDADES COMERCIALES SERVICIO BAR RAZONAMIENTO DEDUCTIVO TOP DOWN Consiste en obtener un razonamiento del problema detallando cada bloque, es decir partiendo de una superinstrucción o bloque ir desglosándolo hasta obtener un conjunto de instrucciones ejecutable por el ordenador, con un determinado lenguaje de programación. Compra de X boletos ORGANIZACIÓN LOTERIA Agruparlos en bloques Introducción a la programación 9 ESTRUCTURAS BASICAS Todo organigrama puede plantearse utilizando solamente tres estructuras básicas. Cada estructura se compondrá de macroinstrucciones o bloques CONCATENACIÓN Permite la descomposición del problema en un determinado número de acciones, que se ejecutarán siempre en secuencia, sin bifurcaciones posibles ni omisiones A B N ALTERNATIVAS Verifica una determinada condición y bifurca la ejecución del programa. Admite tres matizaciones: IF condición THEN acción-A Si se cumple la condición realizar A, en caso contrario pasar a la siguiente estructura Acción A A IF condición THEN A ELSE B Si se cumple la condición hacer A, en caso contrario B Acción A Acción B Introducción a la programación 10 CASE condición OF (A,B,...N) Permite elegir entre varias opciones A B C N REPETITIVAS Permiten representar acciones que ocurren un número conocido o desconocido de veces. Se admiten dos posibilidades diferentes: WHILE condición DO A (de 0 a n) Ejecutar la acción A "MIENTRAS QUE" se cumpla la condición. El número de veces que se repita la acción puede ser 0 A REPEAT A UNTIL condición (de 1 a n) Ejecutar la acción A "HASTA QUE" se verifique la condición . La acción tendrá lugar por lo menos una vez. A B1 C Introducción a la programación 11 COMBINACIÓN DE LAS ESTRUCTURAS BÁSICAS Nivel 0 Nivel 1 Nivel 2 A A A B B1 B1 C B1 B11 B11 B1 C B1 C Nivel 4 A B1 B111 B111 B111 B112 B112 B112 B112 Introducción a la programación 12