Anda di halaman 1dari 6

Actividad 22: Introduccin a la programacin estructurada. Lenguaje C.

Introduccin -----------Un PROGRAMA es un conjunto de mandatos que puede someterse, como una unidad, a un ordenador y utilizarse para dirigir su comportamiento. Cada uno de los mandatos recibe el nombre de SENTENCIA o INSTRUCCIN. Todo programa est constituido por uno o varios algoritmos. Un ALGORITMO es sencillamente un conjunto de reglas para efectuar algn clculo. La construccin de un algoritmo debe ser lo ms independiente posible de los lenguajes de programacin. Para llegar a la solucin (algoritmo) que resuelve un problema, se debe pasar por varios niveles de abstraccin. El nivel mximo ha de ser totalmente independiente de los lenguajes de programacin; en cambio, el nivel menos abstracto ha de estar orientado al lenguaje de programacin que se utilice. Programacin estructurada ------------------------La programacin estructurada es una tcnica para disear programas basada en los siguientes principios: - Modularidad: Un programa puede construirse a partir de unidades lgicas, razonablemente pequeas, que se denominan mdulos (en lenguaje C, funciones). - Diseo Descendente: El diseo se hace de los general a lo particular, considerando que una determinada funcin est resuelta y dejando su construccin para un paso posterior. - Teora de la estructura: Cualquier programa puede ser diseado empleando slo tres tipos de estructuras de control: - Secuencial.- conjunto de acciones ejecutadas una a continuacin de otra una sola vez. - Condicional.- Permite ejecutar un grupo de acciones u otro, dependiendo de que se cumpla o no una condicin. - Repetitiva.- Ejecuta una o varias acciones un nmero controlado de veces. Los programas as diseados sern fciles de verificar, depurar y mantener. Ciclo de vida de un programa o aplicacin ----------------------------------------Disear un programa no se reduce slo a escribir un determinado algoritmo en algn lenguaje de programacin; esto slo se corresponde dentro del ciclo de vida de un programa con la fase de codificacin. La vida de un programa abarca desde el momento que se establece la definicin del problema hasta que dicha aplicacin es desechada.

Las etapas en la vida de un programa son: Definicin y enunciado. Diseo y anlisis. Codificacin. Comprobacin y depuracin. Documentacin y mantenimiento.

A continuacin se describe cada una de ellas. DEFINICIN Y ENUNCIADO En esta fase debe definirse con claridad todo lo que atae al problema que se quiere resolver. Esta definicin incluir una lista completa de todos los requisitos que se deben cumplir y se especificar la solucin esperada tanto para los datos de entrada correctos como para los incorrectos. El programa ha de responder en todos los casos sin que se origine una finalizacin anormal del mismo. DISEO O ANLISIS Puede dividirse en alto y bajo nivel. El primero consiste en realizar el planteamiento de la solucin. Un problema no se suele componer de una sola tarea, sino de varias relacionadas. Por ello, una solucin debe especificar las tareas que a llevar a cabo, las responsabilidades de cada una y la forma de relacionarse e intercalarse las distintas tareas. El diseo a bajo nivel consistir en la seleccin de los algoritmos ms apropiados y su representacin en algn pseudocdigo (lenguaje prximo al materno), as como en la seleccin de las estructuras de datos ms adecuadas. CODIFICACIN Hay que elegir el lenguaje de programacin ms adecuado al tipo de problema o a los algoritmos y estructuras de datos seleccionados en la etapa de diseo. Independientemente del lenguaje escogido es conveniente utilizar un estilo de programacin que sea fcilmente legible y pueda ser seguido por cualquier persona. El estilo ms extendido se basa en la utilizacin de los sangrados de lneas (endentacin). La codificacin de los algoritmos debe presentar el mayor grado de eficiencia en cuanto a: Ejecucin, cdigo, memoria y Entrada/Salida. COMPROBACIN Y DEPURACIN No basta con escribir y ejecutar un programa correctamente segn las especificaciones realizadas por los usuarios. Es necesario comprobar que los resultados son los adecuados en todos los casos, incluso en aquellos que no hayan sido comprobados explcitamente. Un modo de garantizar el buen funcionamiento del programa es la validacin con respecto a sus especificaciones. La depuracin de un programa consiste en detectar los casos ms desfavorables que puede encontrar la aplicacin, por ejemplo situaciones que abortaran la ejecucin o bloquearan el ordenador (pulsacin de un tecla indebida). La depuracin tambin contempla la eliminacin del cdigo fuente redundante. DOCUMENTACIN Y MANTENIMIENTO La documentacin de un programa es un proceso continuo a lo largo de

todo el ciclo de vida. Cada etapa produce una documentacin especfica. Despus de haber comprobado que el programa funciona correctamente, habr que recopilar toda esta informacin producida a lo largo del proceso, completarla y organizarla para elaborar una documentacin del programa que sea til para sus usuarios y para los programadores encargados de su mantenimiento. Los programadores deben documentar el cdigo producido por ellos. Esta ltima documentacin consiste en colocar los comentarios que sean precisos entre las lneas de cdigo. Los programas no son entes estticos, sino que deben ser revisados y actualizados constantemente porque se descubren nuevos errores, se modifica alguna especificacin, se cambia de ordenador, etc. La fase en la cual se efectan estas modificaciones posteriores se denomina mantenimiento. Una buena documentacin facilita el mantenimiento de los programas de forma clara, sistemtica y legible, la etapa de mantenimiento puede ser muy difcil, incluso imposible. Si se descubren errores en las fases anteriores, se tendr que empezar de nuevo desde la etapa correspondiente. La fase de mantenimiento implicar, en muchos casos, repetir varias de las etapas anteriores, segn se trate de cambios en la especificacin, sustitucin de un algoritmo por otro considerado mejor, etc. Lenguajes de programacin ------------------------A la hora de describir al ordenador como resolver un problema, es necesario formalizarlo adecuadamente para que pueda entenderlo. Esta formalizacin se realiza a travs de un lenguaje de programacin. Se entiende por LENGUAJE DE PROGRAMACIN la notacin para la descripcin precisa de algoritmos o programas informticos. Los lenguajes de programacin definen de forma estricta la sintaxis y la semntica. Existen cinco generaciones de lenguajes de programacin: PRIMERA GENERACIN Est formada por los siguientes lenguajes: binario, mquina, ensamblador y macroensamblador. El alfabeto del lenguaje binario es el 0 y el 1, es decir, cada instruccin se corresponde con una determinada configuracin de ceros y unos. A partir del lenguaje mquina, las instrucciones (mandatos) se representan mediante identificadores que estn compuestos de caracteres alfanumricos; estos lenguajes necesitan de un traductor para transformar los programas al lenguaje binario. A estos lenguajes tambin se les llama lenguajes de bajo nivel. SEGUNDA GENERACIN La componen los siguientes lenguajes: FORTRAN, COBOL, ALGOL y BASIC. Tambin llamados lenguajes de alto nivel y de programacin clsica. Los lenguajes de esta generacin se pueden dividir en dos amplias categoras: cientficos y de gestin. TERCERA GENERACIN Estos lenguajes (tambin denominados lenguajes de programacin moderna o estructurada) estn caracterizados por sus potentes posibilidades procedimentales y de estructuracin de datos. Se pueden dividir en dos grupos:

lenguajes de alto orden de propsito general y lenguajes especializados. El primer grupo est constituido por los lenguajes PL/1, PASCAL, MODULA-2, C y ADA. Todos ellos descendientes del ALGOL. Estos lenguajes se utilizan en la construccin de gran espectro de aplicaciones (ciencia e ingeniera, comerciales, programacin de sistemas y otros). Los formulacin particular. Ejemplos de lenguajes especializados estn caracterizados por su usual sintctica, que ha sido especialmente diseada para una aplicacin Se suelen utilizar en el mundo de la ingeniera de software. ellos pueden ser LISP, PROLOG, APL, FORTH, etc.

CUARTA GENERACIN El nivel de abstraccin va creciendo desde la primera a la tercera generacin. Los lenguajes de cuarta generacin incrementan, an ms el nivel de abstraccin. El control y las estructuras de datos poseen una sintaxis distinta a la de anteriores generaciones con el fin de elevar el nivel de abstraccin. Se pueden clasificar en dos grandes categoras: lenguajes de peticin y generacin de programas. Los primeros se han desarrollado para ser utilizados conjuntamente con aplicaciones de bases de datos. Los segundos, permiten al usuario crear programas en un lenguaje de tercera generacin usando notablemente menos sentencias. QUINTA GENERACIN Varios procesadores modernos no soportan el ensamblador. Es decir son programados directamente en un lenguajes especializado de alto nivel como LISP cdigo-P. Los lenguajes de quinta generacin soportan el diseo orientado al objeto, el procesamiento paralelo y vectorial. Suelen ser de propsito particular. Son empleados en aplicaciones de investigacin y de construccin de prototipos. Con la aparicin del los sistemas operativos OS/2 y la serie Windows se han desarrollado programas que permiten la programacin visual. Traductores y compiladores -------------------------Un programa codificado en lenguaje de alto nivel se pasa al lenguaje de la mquina a travs del traductor correspondiente a ese lenguaje. Por lo tanto, un traductor es un programa que toma, como entrada, un programa escrito en un lenguaje (lenguaje fuente) y produce, como salida, un programa escrito en otro lenguaje (lenguaje objeto). Si el lenguaje fuente es de alto nivel (como FORTRAN, BASIC o Pascal) y el lenguaje objeto es un lenguaje de bajo nivel (como ensamblador o lenguaje mquina), el traductor correspondiente se llama compilador. El compilador toma como entrada las instrucciones del lenguaje fuente y genera como salida instrucciones del lenguaje objeto; ste puede ser binario o mquina. El intrprete, a medida que traduce cada instruccin, la ejecuta sobre los datos que le corresponden (cero o ms de un dato). Cuando ha terminado de ejecutar esa instruccin de alto nivel, repite el mismo proceso con la siguiente instruccin. De esa manera va avanzando hasta que se haya ejecutado todo el programa de alto nivel segn los datos de partida. El intrprete es, en general, ms pequeo que un compilador; pero el tiempo que tarda en traducir y ejecutar un programa fuente es ms grande que el empleado por el compilador. Cuando se interpreta un bucle de instrucciones, stas se traducen

y ejecutan tantas veces como se repite el bucle. Si el lenguaje fuente es ensamblador y el lenguaje objeto es cdigo de mquina, entonces el traductor se llama ensamblador. Si, por ejemplo, un compilador puede ejecutarse en un procesador (INTEL 80486) y producir cdigo para otro procesador (MOTOROLA 68040), entonces se trata de un compilador cruzado. El lenguaje de programacin C ----------------------------C es un lenguaje de programacin de propsito general que ofrece como ventajas economa de expresin, control de flujo y un rico conjunto de operadores. Ha sido estrechamente asociado con el Sistema Operativo UNIX puesto que tanto el propio S.O. como los programas que corren en l estn escritos en C. Sin embargo, este lenguaje no est ligado a ningn S.O. ni a ninguna mquina. C a demostrado ser un lenguaje agradable, expresivo y verstil para una amplia variedad de programas. Es fcil de aprender y se obtienen mejores resultado a medida que aumenta la experiencia con l. Obtencin de un programa en lenguaje C -------------------------------------Para la creacin de un programa informtico que pueda ejecutarse en el ordenador (binario), deben suceder varias etapas: - Generacin del programa en cdigo fuente (.c). - Compilacin, obtencin del mdulo objeto (.o). - Linkado. Una vez concluido este proceso, el fichero generado puede ser ejecutado por el PC de forma autnoma generalmente. GENERACIN DEL PROGRAMA EN CDIGO FUENTE El apartado A consiste en el diseo de un fichero de texto (obtenido a partir de un editor "ASCII", es decir, que no incorpore caracteres de control, por ejemplo el editor 'vi') que contendr un nmero determinado de sentencias (instrucciones propias del lenguaje C): estructuras de control, rdenes de entrada y salida, etc. En un formato legible por el programador y que deben cumplir las reglas marcadas por el compilador (sintaxis, etc.). Una vez finalizado el fichero con extensin .c (regla no obligatoria pero si establecida convencionalmente por los programadores para sealar un fichero fuente escrito en lenguaje C) hay que proceder a su compilacin. COMPILACIN Esto es, convertir el fichero para que sea comprensible al ordenador (mdulo objeto). Generalmente el compilador realiza dos "pasadas" sobre el fichero de texto. En la primera buscar aquellas instrucciones dirigidas al propio compilador y que no pertenecen al lenguaje de programacin en s. La misin de estas pseudoinstrucciones (denominadas directivas o instrucciones del preprocesador) es la de realizar un tratamiento determinado sobre el contenido del fichero, por ejemplo la directiva:

# include <------.h> Manda al preprocesador que la informacin del archivo que la acompaa (.h inicial de "header" representa un fichero cabecera que guarda informacin sobre las funciones contenidas en la biblioteca de C) sea incluida en el propio fichero fuente. LINKADO Durante la fase de reubicado o linkado el enlazador ("linker") recorre el mdulo objeto y encuentra que falta las funciones de la biblioteca que se han declarado al compilador con la directiva correspondiente, y las aade, ya compiladas, adecuadamente en el lugar donde han sido llamadas. El enlazador es una herramienta que combina el programa de usuario con las funciones requeridas de la biblioteca. Dichas funciones son de formato reubicable. Esto significa que las funciones no definen las direcciones absolutas de la memoria para las diversas instrucciones en cdigo mquina, sino que mantienen la informacin de los desplazamientos relativos. Cuando se enlaza el programa con las funciones de la biblioteca estndar, el compilador usa los desplazamientos de la memoria para crear las direcciones reales usadas. <->