Home
Username:
Password:
C Programming (Español) Tutorials

El Pre-Procesador del C / Soluciones del Capítulo 9




Visitors to VTC.com will be able to view all introductory videos for each training course.
Free Trial Members will gain access to first three chapters for each training course.
Full Access Members have full access to VTC.com’s entire library of video tutorials.


Learn More

Subtitles of the Movie

Estas son las soluciones. Comenzamos con el archivo "print_int.c" para crear un "macro" que despliega el valor de un entero. Observe que este "macro" solo contiene una funcion "printf" regular y que el nombre del identificador que desplegamos es "a"É tanto aqui como aqui. Estos deben ser iguales sin importar el elemento que especifiquemos entre los parentesis. Este no tiene que ser un nombre en particular; he escogido "a", pero podria ser "x", "banana", etc. En los "macros" no tenemos que crear identificadores con el mismo nombre de las variables. He llamado "x" a esta variable, pero podria haberla llamado "Fred" siempre y cuando esta tambien sea llamada "Fred". Tambien debemos tener en cuenta que nunca tenemos un punto y coma al final de un "macro". Si ubicamos un punto y coma aqui, el programa podria compilarse y ejecutarse sin errores, pero habra muchas instancias en las que el codigo no funcionara, asi que como norma no debemos incluir un punto y coma alliÉ a menos que sepamos exactamente lo que hacemos. Aqui podriamos incluir la fraseÉ "The value of the integer is" con una nueva linea al final, de manera que ya no necesitaremos estas dos lineas. Tal vez usted las haya incluido, pero queremos que este "macro" sea tan sencillo como sea posible. Esta es la solucion a este ejercicio. Ahora veamos la solucion al proyecto del curso mediante el archivo "database.c". Observe que he creado el archivo "database.h". Demosle un vistazo. He creado este archivo, el cual contiene tres lineas. Tenemos una directiva "#define" para definir el numero de CDsÉ que utilizaremos en el proyecto y he establecido un maximo de 100 CDs. Tambien tenemos otras dos directivas. para el tamano del titulo y del nombre del artista con el valor 60, aunque no tienen que ser iguales. Podriamos ingresar 50É o cualquier otro valor, pero en la especificacion de este proyecto no es obligatorioÉ que estos tamanos tengan el mismo valor. Por esto utilizamos dos directivas "#define" separadas. Tal vez sea convenienteÉ indicar que aqui no estamos incluyendo el caracter "null" para que el archivo sea mas facil de leer. Regresamos al archivo "database.c" y veamos donde las hemos utilizado. Las tendremos en las definiciones de las variables. Aqui hemos definido el numero de CDs en varias ocasiones reemplazando el valor 100 por la directiva "#define NO_CDS". Tambien hemos utilizado las directivas "TITLE_SIZE" y "ARTIST_SIZE" y observe que aqui sumamos 1 para incluir el caracter "null". Obviamente no tenemos que crear un comentario al respecto, pues cualquier programador que lo observe sabra lo que ocurre aqui. Antes de revisar estas dos lineas, recorramos el programaÉ para ver donde mas hemos utilizado las tres directivas "#define". Observe que no tenemos que cambiar este codigo porque funciona bien y no es necesaria una referencia a la directiva "#define". Nos desplazamos hacia abajo y aqui tenemos una instancia de dicha referenciacion: si alcanzamos el maximo numero de CDs, desplegamos un mensaje indicando que salimos del ciclo. Solo aqui las utilizamos fuera de las declaraciones de las variables. Regresamos a esta linea que indica que la declaracion de esta variable solo sera compilada en el programaÉ si la directiva "#define NOARTIST" no ha sido definida con un doble valor negativo. Solicitamos un indicador "NOARTIST", y si este no esta definido especificaremos el artista. Si no existe una definicion de "NOARTIST", "ARTIST" estara definido. No tenemos una directiva "#define ARTIST", pero podriamos decir que ese seria el caso. Este tipo de confusion es comun en el C. Basicamente, si no solicitamos la directiva "NOARTIST", entonces incluiremos la informacion del artista. En la parte inferior tenemos el mismo comportamiento. Si no se ha especificado la directiva "NOARTIST", desplegaremos el nombre del artista. Si nos desplazamos mas abajo tendremos otra instancia similar. Desplegaremos los detalles del artista bajo las mismas circunstancias y esto es todo. Esta es la version con el artistaÉ porque en ningun lugar hemos definido la utilizacion de "NOARTIST". Veamos. Compilamos, ejecutamos y observe que podemos tener hasta 100 CDs. Ingresamos algunos detalles inventadosÉ y se nos pide el nombre del artista como esperamos. Al ingresar "n" aparecen los detalles correctosÉ y luego salimos del programa. De regreso en el codigo, si no queremos especificar ninguna informacion del artista, simplemente escribimos "#define NOARTIST" para que esta linea obtenga un valor falso. Esta linea verifica si "NOARTIST" esta o no definida y esta "#ifndef" indica que no lo esta, asi que declaramos esta variable. Si esta definida, no declaramos la variable. Espero que este claro que aqui obtenemos un doble valor negativo. Esta es la version sin artista del programa porque hemos definido a "NOARTIST" con un valor verdadero. Ejecutamos y despues del titulo no se nos solicita la informacion del artista. Ingresamos "n" y tampoco se despliega el nombre del artista, asi que la verificacion funciona correctamente. En cuanto a este indicador, observe que no tenemos que asignar ningun valor a "NOARTIST", como por ejemplo 100, 1 o el valor verdadero. No tenemos que hacerlo porque aqui solo verificamos si dicha directiva esta o no definida. Aqui la tenemos definidaÉ aunque no le asignamos ningun valor. Igualmente, vamos a desarrollar esta aplicacion de base de datosÉ a lo largo de varios archivos ".c". Por ahora solo tenemos 1 archivo llamado "database.c", pero tendremos varios de ellosÉ y cada uno requerira tener acceso a esta directiva "#define" en particular para ver si esta se encuentra o no activa. No querremos abrir cada archivo ".c" para agregar o eliminar esta linea dependiendo si incluimos o no el artista en el programaÉ sino que lo haremos en un solo punto. ÀPuede decir cual es? Seguramente sabra que me refiero al archivo "database.h". Esta linea debe ubicarse en el archivo "database.h". Por ahora solo tenemos 1 archivo ".c", asi que esto no importa, pero sera diferente al tener mas de uno de ellos. En este momento no la definiremos alli, asi que la eliminamos, pero si la necesitamos, la ubicaremos en el archivo "database.h".

Tutorial Information

Course: C Programming (Español)
Author: Mark Virtue
SKU: 33759
ISBN: 1-933736-81-X
Release Date: 2007-04-16
Duration: 21.5 hrs / 139 lessons
Captions: Available on CD and Online University
Compatibility: Vista/XP/2000, OS X, Linux
QuickTime 7, Flash 8

VTC Sign up & Benefits

  • Unlimited Access
  • 98,729 Video Tutorials (23,265 free)
  • Video Available as Flash or QuickTime
  • Over 1026 Courses
  • $30 for One Month Access
  • Multi-User Discounts Available