Documentos de Académico
Documentos de Profesional
Documentos de Cultura
UNIDAD TECNICA 1: Caractersticas del sistema de desarrollo elegido. Objetivo de la unidad: Repasar los conocimientos del lenguaje C. Tiempo estimado: 8 perodos
El C es un lenguaje de nivel medio. El cdigo C es muy portable. El C tiene pocas palabras reservadas. El C es un lenguaje para programadores. Es Portable.
Blog: http://mascrisher.blogspot.com
email: cristitoher@gmail.com
3 de Bachillerato
ro
Programa fuente COMPILACION Programa objeto MONTAJE Programa ejecutable PRUEBA DE EJECUCION Aplicacin
MANTENIMIENTO Esta es la fase que completa el ciclo de vida y en ella nos encargaremos de solventar los posibles errores o deficiencias de la aplicacin. Existe la posibilidad de que ciertas aplicaciones necesiten reiniciar el ciclo de vida. Tipos de mantenimiento: Mantenimiento correctivo: Consiste en corregir errores no detectados en pruebas anteriores y que aparezcan con el uso normal de la aplicacin. Este mantenimiento puede estar incluido en la garanta o mantenimiento de la aplicacin. Mantenimiento adaptativo: Consiste en modificar el programa a causa de cambio de entorno grfico y lgico en el que estn implantados. (Nuevas generaciones de ordenadores, nuevas versiones del sistema operativo, etc.) Mantenimiento perfectivo: Consiste en una mejora sustancial de la aplicacin al recibir por parte de los usuarios propuestas sobre nuevas posibilidades y modificaciones de las existentes. Los tipos de mantenimiento adaptativo y perfectivo reinician el ciclo de vida, debiendo proceder de nuevo al desarrollo de cada una de sus fases para obtener un nuevo producto.
Entrada de Datos: La constituyen todas las instrucciones que toman los datos de entrada desde un dispositivo externo y los almacena en la memoria principal para que puedan ser procesados. Proceso o algoritmo: Est formado por las instrucciones que modifican los objetos a partir de su estado inicial (datos de entrada) hasta el estado final (resultados) dejando los objetos que lo contiene disponibles en la memoria principal. Salida de resultados: Conjunto de instrucciones que toman los datos finales (resultado) de la memoria principal y los envan a los dispositivos externos.
ESTRUCTURA DE UN PROGRAMA EN C
Los programas en C, consisten en una o ms funciones. La nica funcin que siempre debe estar presente es la denominada main(), ya que es la primera en ser llamada cuando comienza la ejecucin de programa. La estructura general de un programa en C es la siguiente: #include #define declaracin de funciones declaracin de variables globales main() { variables locales del main() sentencias } f1() { Blog: http://mascrisher.blogspot.com email: cristitoher@gmail.com
3 de Bachillerato
ro
variables locales de la funcin f1() sentencias } . . fn() { variables locales de la funcin fn() sentencias } Los #include son necesarios cuando ocupamos determinadas sentencias que necesitan sus respectiva bibliotecas para poder ejecutarse. Por ejemplo, por lo general una sentencia de entrada/salida requerir de la biblioteca stdio; se debe codificar #include <stdio> Los #define se ocupan cuando una variable debe tener un valor equivalente a travs de todo el programa por ejemplo que la variable PI sea siempre igual a 3.1416; se debe codificar #define PI 3.1416. Las declaraciones de funciones consisten bsicamente en establecer que existe una funcin en algn lugar del programa con una cantidad determinada de variables de entrada y que deber retornar un determinado tipo de valor. Las variables globales son aquellas que se utilizarn a lo largo de todo el programa, en cambio, las variables locales son aquellas que se usarn slo en las funciones. El main() es la funcin principal de un programa en C, siempre debe declararse pues el programa en su inicio la primera funcin que se lee es el main(). Si n existe nos arrojar un error. Las funciones deben estar previamente declaradas para poder ser utilizadas. Un programa bsico deber contener a lo menos un rea para el main() y otras rea para los #include.
printf("El minimo es %d\n", (x < y) ? x : y); Como se puede observar donde se coloque MIN, el texto ser reemplazado por la definicin apropiada. Por lo tanto, si en el cdigo se hubiera puesto algo como: x = MIN(q+r,s+t); despus del preprocesamiento, el cdigo podra verse de la siguiente forma: x = ( q+r < s+t ) ? q+r : s+t; Otros ejemplos usando #define pueden ser: #define Deg_a_Rad(X) (X*M_PI/180.0) /* Convierte grados sexagesimales a radianes, M_PI es el valor de pi */ /* y esta definida en la biblioteca math.h */ #define IZQ_DESP_8 <<8 La ltima macro IZQ_DESP_8 es solamente vlida en tanto el reemplazo del contexto es vlido, por ejemplo: x = y IZQ_DESP_8. El uso de la sustitucin de macros en el lugar de las funciones reales tiene un beneficio importante: incrementa la velocidad del cdigo porque no se penaliza con una llamada de funcin. Sin embargo, se paga este incremento de velocidad con un incremento en el tamao del programa porque se duplica el cdigo. #undef Se usa #undef para quitar una definicin de nombre de macro que se haya definido previamente. El formato general es: #undef <nombre de macro> El uso principal de #undef es permitir localizar los nombres de macros slo en las secciones de cdigo que los necesiten. #include La directiva del preprocesador #include instruye al compilador para incluir otro archivo fuente que esta dado con esta directiva y de esta forma compilar otro archivo fuente. El archivo fuente que se leer se debe encerrar entre comillas dobles o parntesis de ngulo. Por ejemplo: #include <archivo> #include "archivo" Cuando se indica <archivo> se le dice al compilador que busque donde estn los archivos incluidos o include'' del sistema. Usualmente los sistemas con UNIX guardan los archivos en el directorio /usr/include. Si se usa la forma "archivo" es buscado en el directorio actual, es decir, donde el programa esta siendo ejecutado. Los archivos incluidos usualmente contienen los prototipos de las funciones y las declaraciones de los archivos cabecera (header files) y no tienen cdigo de C (algoritmos). #if Inclusin condicional La directiva #if evalua una expresin constante entera. Siempre se debe terminar con #endif para delimitir el fin de esta sentencia. Se pueden as mismo evaluar otro cdigo en caso se cumpla otra condicin, o bien, cuando no se cumple ninguna usando #elif o #else respectivamente. Por ejemplo, #define MEX 0 #define EUA 1 #define FRAN 2 #define PAIS_ACTIVO MEX #if PAIS_ACTIVO == MEX char moneda[]="pesos"; #elif PAIS_ACTIVO == EUA char moneda[]="dolar"; #else char moneda[]="franco"; #endif Otro mtodo de compilacin condicional usa las directivas #ifdef (si definido) y #ifndef (si no definido). El formato general de #ifdef es: #ifdef <nombre de macro> <secuencia de sentecias> #endif Blog: http://mascrisher.blogspot.com email: cristitoher@gmail.com
3 de Bachillerato
ro
Si el nombre de macro ha sido definido en una sentencia #define, se compilar la secuencia de sentecias entre el #ifdef y #endif. El formato general de #ifdef es: #ifndef <nombre de macro> <secuencia de sentecias> #endif Las directivas anteriores son tiles para revisar si las macros estn definidas -- tal vez por mdulos diferentes o archivos de cabecera. Por ejemplo, para poner el tamao de un entero para un programa portable entre TurboC de DOS y un sistema operativo con UNIX, sabiendo que TurboC usa enteros de 16 bits y UNIX enteros de 32 bits, entonces si se quiere compilar para TurboC se puede definir una macro TURBOC, la cual ser usada de la siguiente forma: #ifdef TURBOC #define INT_SIZE 16 #else #define INT_SIZE 32 #endif
"func(void)" para listas de parmetros vacas. En C++ este procedimiento se considera obsoleto, se usa simplemente "func()". Por ejemplo: int Mayor(int a, int b); Un prototipo sirve para indicar al compilador los tipos de retorno y los de los parmetros de una funcin, de modo que compruebe si son del tipo correcto cada vez que se use esta funcin dentro del programa, o para hacer las conversiones de tipo cuando sea necesario. En el prototipo, los nombres de los parmetros son opcionales, y si se incluyen suele ser como documentacin y ayuda en la interpretacin y comprensin del programa. El ejemplo de prototipo anterior sera igualmente vlido si se escribiera como: int Mayor(int, int); Esto slo indica que en algn lugar del programa se definir una funcin "Mayor" que admite dos parmetros de tipo int y que devolver un valor de tipo int. No es necesario escribir nombres para los parmetros, ya que el prototipo no los usa. En otro lugar del programa habr una definicin completa de la funcin. Normalmente, los prototipos de las funciones se declaran dentro del fichero del programa, o bien se incluyen desde un fichero externo, llamado fichero de cabecera, (para esto se usa la directiva #include, que veremos en el siguiente captulo). Ya lo hemos dicho ms arriba, pero las funciones son extern por defecto. Esto quiere decir que son accesibles desde cualquier punto del programa, aunque se encuentren en otros ficheros fuente del mismo programa. En contraposicin las funciones declaradas static slo son accesibles dentro del fichero fuente donde se definen.
EDITOR DE TEXTO
Un editor de texto es un programa que permite crear y modificar archivos digitales compuestos nicamente por texto sin formato, conocidos comnmente como archivos de texto o texto plano. El programa lee el archivo e interpreta los bytes ledos segn el cdigo de caracteres que usa el editor. Hoy en da es comnmente de 7- 8-bits en ASCII o UTF-8, rara vez EBCDIC. Elementos.- Dentro de los elementos tenemos: Interfaz Formato Botones de accin y de comandos http://www.caricatos.net/editor/index.php
Blog: http://mascrisher.blogspot.com
email: cristitoher@gmail.com
3 de Bachillerato
ro
FUNCIONES DE LIBRERA
Librera: Conjunto de funciones, que a diferencia de un programa de Lenguaje C, no contiene la funcin main() Libreras Estndard: Todo compilador que soporte ANSI C contiene al menos las siguientes libreras Archivos encabezado (Header file): Cdigo de lenguaje C que corresponde a declaraciones y recursos de una librera, que sern asociados mediante la directiva #include Libreras Bsicas de Lenguaje C Manejo de caracteres Funciones Matemticas ctype.h math.h Miscelaneos Manejo de cadenas stdlib.h string.h
LA COMPILACION
La compilacin es el proceso de traduccin de programas fuente a programas objeto. El programa objeto obtenido de la compilacin ha sido traducido normalmente al cdigo comn del lenguaje de mquina. Para conseguir el programa mquina real se debe utilizar un programa llamado montador o enlazador (linker). El proceso de montaje conduce a un programa en lenguaje mquina directamente ejecutable. El modelo de compilacin de C En el grafico se muestran las distintas etapas que cubre el compilador para obtener el cdigo ejecutable.
ENLAZADO
La fase de enlazado consiste simplemente en ``reunir'' cada uno de los ficheros objeto producidos en la fase anterior, resultando de este proceso un fichero ejecutable. Si nuestro programa hace uso de libreras externas (la mayora lo hacen), el cdigo de las funciones utilizadas ser aadido tambin al fichero ejecutable http://www.fismat.umich.mx/mn1/manual/node1.html Qu pasa si est escribiendo un programa en C++ y quiere usar una librera de C? Si hace uso de la declaracin de funciones de C, float f(int a, char b); el compilador de C++ adornar el nombre como algo tipo _f_int_char para permitir la sobrecarga de la funcin (y el enlazado con verificacin de tipos). De todas formas, el compilador de C que compil su librera C definitivamente no decor ese nombre, por lo que su nombre interno ser _f. As pues, el enlazador no ser capaz de resolver sus llamadas tipo C++ a f(). La forma de resolver esto que se propone en C++ es la especificacin de enlazado alternativo, que se produjo en el lenguaje sobrecargando la palabra clave extern. A la palabra clave extern le sigue una cadena que especifica el enlazado deseado para la declaracin, seguido por la declaracin: Blog: http://mascrisher.blogspot.com email: cristitoher@gmail.com
3 de Bachillerato
ro
extern "C" float f(int a, char b); Esto le dice al compilador que f() tiene enlazado tipo C, de forma que el compilador no decora el nombre. Las dos nicas especificaciones de enlazado soportadas por el estndar son C y C++, pero algunos vendedores ofrecen compiladores que tambin soportan otros lenguajes. Si tiene un grupo de declaraciones con enlazado alternativo, pngalas entre llaves, como a continuacin: extern "C" { float f(int a, char b); double d(int a, char b); } O, para archivos de cabecera, extern "C" { #include "Myheader.h" } La mayora de compiladores disponibles de C++ manejan las especificaciones de enlazado alternativo dentro de sus propios archivos de cabecera que trabajan tanto con C como con C++, por lo que no tiene que preocuparse de eso. Ficheros de cabecera Los principales ficheros de cabecera de C ``suelen ser'' los siguientes: ctype.h: Funciones tiles para la clasificacin y el mapeado de cdigos. errno.h: Funciones que permiten comprobar el valor almacenado en errno por algunas funciones de libreras. float.h: Funciones que establecen algunas propiedades de las representaciones de tipos real. limits.h: Funciones que establecen algunas propiedades de las representaciones de tipos enteros. math.h: Funciones que sirven para realizar operaciones matemticas comunes sobre valores de tipo double. stdarg.h: Son declaraciones que permiten acceder a los argumentos adicionales sin nombre en una funcin que acepta un nmero variable de argumentos. stdio.h: Macros y funciones para realizar operaciones de entrada y salida sobre ficheros y flujos de datos. stdlib.h y a veces unistd.h: Declaraciones de una coleccin de funciones tiles y la definicin de tipos y macros para usarlas. Entre ellas suele estar la funcin malloc que permite hacer peticiones de memoria dinmica al sistema. string.h: Declaracin de una coleccin de funciones tiles para manejar cadenas y otros arrays de caracteres. time.h: Declaracin de funciones para el manejo de fechas.
LIBRERIAS ANSI C EN C
string.h math.h stdio.h time.h stdlib.h ctype.h locale.h signal.h setjmp.h cstring cmath cstdio ctime cstdlib cctype clocale csignal csetjmp
EJECUCIN DE UN PROGRAMA
El siguiente estado es correr el programa ejecutable. Para correr un ejecutable en UNIX, simplemente se escribe el nombre del archivo que lo contiene, en este caso programa (o a.out). Con lo anterior, se ejecuta el programa, mostrando algn resultado en la pantalla. En ste estado, podra haber errores en tiempo de ejecucin (run-time errors), tales como divisin por cero, o bien, podran hacerse evidentes al ver que el programa no produce la salida correcta. Si lo anterior sucede, entonces se debe regresar a editar el archivo del programa, recompilarlo, y ejecutarlo nuevamente.
Blog: http://mascrisher.blogspot.com
email: cristitoher@gmail.com
3 de Bachillerato
ro
DEPURACIN
La depuracin es el anlisis de un programa para descubrir fallos. El nombre en ingls es debug, porque esos fallos de programacin reciben el nombre de bugs (bichos). Para eliminar esos fallos que hacen que un programa no se comporte como debera, se usan unas herramientas llamadas depuradores. Estos nos permiten avanzar paso a paso para ver cmo avanza realmente nuestro progra ma, y tambin nos dejan ver los valores de las variables. Como nuestros conocimientos ya nos permiten hacer programas de una cierta complejidad, es el momento de ver formas de descubrir dnde estn los posibles errores. Lo haremos desde varios entornos distintos.
Si queremos observar cmo evoluciona el valor de alguna variable, podemos aadir un viga (en ingls watch) desde el men Break/Watch. Este viga quedar en la parte inferior de la pantalla.
Si trabajamos con DevC++ para Windows, la situacin no es muy diferente. Primero debemos indicar dnde queremos que se interrumpa el programa (aadir un breakpoint), haciendo clic con el ratn en el margen izquierdo de nuestro programa. Esa lnea quedar resaltada en color rojo. Ahora ponemos en marcha el programa desde el men Depurar. http://www.fismat.umich.mx/mn1/manual/node1.html
Blog: http://mascrisher.blogspot.com
email: cristitoher@gmail.com
3 de Bachillerato
ro
10
Actividades de reforzamiento 1.- Elabore 10 preguntas con sus respuestas 2.- Disee un organizador grafico de los temas principales 3.- Aada un comentario al blog 4.- Anote la idea principal del video tutorial. 5.- Elabore una sopa de letras sobre el contenido de esta unidad.
Escriba lo que aprendi en un resumen de 10 lneas. _________________________________________________________________________________ _________________________________________________________________________________ _________________________________________________________________________________ _________________________________________________________________________________ _________________________________________________________________________________ _________________________________________________________________________________ _________________________________________________________________________________ _________________________________________________________________________________ _________________________________________________________________________________ _________________________________________________________________________________ _________________________________________________________________________________
Blog: http://mascrisher.blogspot.com
email: cristitoher@gmail.com
3 de Bachillerato
ro
11