You are on page 1of 430
Tony Zhang Cprenviendo” Ze TRADUCCION: ‘Sergio Kourchenko Barrena REVISION TECNICA: Mariela Quintana Lépe: Maestra en. Ciencias Computacionales + ARGENTINA + BRASIL + COLOMBIA + COSTA RICA + CHILE une AA Resumen de contenido Tnmodueciip Parte |_Los fundamentos de C 9 Hora! El primer paso i 2 Su primer programa de C 29 3__La estructura de un programa de C 41 4 Tipos de datos y palabras reservadas 55 5. Manejo de la entrada y salida esténdar 7 rte Il_ Operadores e instrucciones de control de flujo 89 Hora 6 Manejo de datos. 1 1_Ciclos 105 8 Uso de operadores condicionales 121 9 Modificadores de datos y funciones matemdticas MI 10 Control de: flujo del programa 155 Parte Ill Apuntadores y arreglos 173 Hora 11__Apuntadores 195 12_Arreglos 189 1W3_Cademas 0207 14__Allcance y clases de almacenamiento 223 Parte IV Funciones y asignacién dinamica de memoria 241 Hora 15 _Funciomes J 16 Uso de apuntadores 259 17_Asignacidn de memoria 279 18__ Tipos de datos y funciones especiales 295 Parte V_Estructuras, uniones, E/S de archivos y mas 341 22 Funciones de archive especiales 373 23 Compilacién: el preprocesador de C 391 Parte VI Apéndices 437 Apéndice A Archivos de encabezado del esuindar ANSI 439 B__Respuestas a los cuestionarios y ejercicios 441 Indice 0S Material chroniony prawem autorskim ‘Muestra de un sistema configurado para programar en C 17 ‘Uso del compiladar de Microsoft eal Material chroniony prawem autorskim vi Aprendiendo C en 24 horas ‘Declaracién de variables de Bless Parte Il Operadores e instrucciones de control de flujo 89 Hora 6 Manejo de datos ” viii Aprendiendo C en 24 horas La instmiccidn nila eeeeeeennenninsnncecal ld Uso de expresiones complejas en una instrucciOn FF sceccscresmnnnl I Hora 8 Uso de operadores condicionales m1 ‘Como medir et tamatio de los datos... Todo es Wigico El operador Iogico AND (4a) El operador Igico OR (3) El operador I6gico NOT (1) .. Manejo de bits Conversion de un néimero decimal a hexadecimal o binario Uso de operadores a nivel de bits Hora 9 Modificadores de datos y funciones matemiticas 141 ‘Cémo habilitar o inhabilitar el bit de signa .. pssssnesl42 EX moificador 1090 sesnananan as (Césmo agregar h, 1.0 La los especificadores de formato printt y forintt 147 Fanciones matemiticas en C Liamadas a sin(), 6084) y tan() Llamadas a pow() y sert(} Contenido Hora 10 Control de flujo del programa 155 (COme decir siempre “si. La instruccidn 1¢ 1 Parte Ill Apuntadores y arreglos 173 Hora 11 Apuntadores 175 Hora 12_Arreglos 189 Inicializwcidn de arregios EL tamaiio de un arreglo Arregios y apuntadores ‘Cémo desplegar arreglos de caracteres El cardoter nulo (*\8") .. Aneglos multidimensionales x Aprendiendo C en 24 horas Contenido Use de prototipos Ciéep0 hacer Hamadas a las Funciones ‘Apuntadores y funciones Paso de arreglos a funciones Paso de apuntadores a funciones. Paso de areglos multidimensionales como argumentos x} xxii Aprendiendo C en 24 horas Hora 17_Asignacién de memoria 279 Asignacign de memoria en tempo de ejecucién ee MRO Hora 18 Lea fine eB02080) oe 2865 Declarscién de estructuras, Definiciin de variables de estructuras .. Como hacer referencia a miembros de estructuras con el Estructuras y Hamadas a funciones (Cémo hacer referencia a estruceuras mediante apuntadores (Cémo hacer referencia a.un miembro de una estructura mediante -> Arreglos de estructura, ‘Contenido xiii (Céimo hacer flexibles las estructuras... Definiciéin de campos de bits mediante struct Hora 21 Lectura y escritura de archivos 355 ‘Apuntadores de FILE (Cémo abrir archives (Climo cerrar archivos Lectura y escritura de archivos en disco Un candcter a la vez Unis Ine a la vex Un bloque a la vez xiv Aprendiendo C en 24 horas Hora 22. Funciones de archivo especiales 373 Las funciones fseekt) v Ftely) ns ‘Mis ejemplos de E/S de archivos en disco Lectura y eseritura de datos binarios Las funciones fecant(] y fprint#<) . Redirecci de ls flujo estindar mediante Treopen () Las dinectivas Wit, #olit y Helse Compilucién condicional anidada. Testniccionss de control de fino po pmennannnnennnreceth D6 Contenido Parte VI_Apéndices 437 Apéndice A_Archivos de encabezado del estandar ANSI 439 indice 8 Respuestas a los cuestionarios ictos aay Hora 1, “El pri xvi Aprendiendo C en 24 horas Blereicios ue —_ ee Hora 22, “Funciones de archivo especiales” eons 498 Acerca del autor Toxy ZHANG tiene mas de 15 ailos de experiencia en la programacién de computadoras yen el disefio de sistemas de informacién para empresas. En la actualidad trabaja para una de las cinco grandes firmas consultoras enfocadas al disefio, desarrollo ¢ implemen- tacién de infraestructura relacionada con e-business. Poseedor de un titulo de maestria en fisica, ha publicado diversos articulos de investiga- cién sobre lisers y programacién de computadoras. Entre sus principales intereses estén la pintura al dleo y la fotografia, que son las dos actividades que més disfruta. Puede establecer contacto con Tony a través de Sams Publishing, o escribiéndole al correo electrénico tyc24hBhotmail .com, Acerca del autor colaborador JouN SoUTHMAYD €s ingenieto de disefio de software y tiene experiencia en areas que van desde: la programacién de sistemas y controladores de dispositivos, hasta el desarro~ lo de Windows y tecnologias de Internet. Actualmente trabaja como consultor en Excell Data Corporation y vive con su esposa en Kirkland, Washington. Dedicatoria A mi esposa, Ellen, y a mis padres, Zhi-ying y Bing-rong, por su amor e inspiracién. —Tony Zhang Reconocimientos ‘Quisiera agradecer primero a los lectores de Ia primera ediciOn.en inglés de este libro por sus estimulos, paciencia, comentarios y, en especial, por sus criticas, lo cual contribuy6 a que esta segunda cdicién fuera mcjorada para aquellas personas que desean emprender tun viaje a través del mundo de la programacién en C. Es un gran placer para mf trabajar por segunda acasién con la editora Sharon Cox. Asi- mismo, deseo agradecer a los editores Carol Ackerman y Gus Miklos, y al autor colabo- radar John Southmayd por su excelente trabajo que hizo la segunda edicién de este libro més comprensible y en gran medida, si no es que por completo, libre: de errores. Ademis juiero expresar mi aprecio al gran trabajo de los demas miembros del equipo. Toxios ellos hicieron posible esta segunda edicién. Aprecio mucho el amor y el apoyo de mi esposa, Ellen, quien me inspira a ver el mundo de la tecnologia desde una perspectiva diferente. Siempre es un gran placer comentar con ella temas de filosofia y literatura, Mis padres, a quienes munca podré agradecer lo sufi- cieme, na sélo me dieron amar y carifo, sino también la oportunidad de recibir la mejor educacién que pude tener cuando estaba en China. Pearson Educacién Latinoamérica El personal de Pearson Educacién Latinoamérica est comprometido en presentarle lo micjor en material de consulta sobre computacién. Cada libro de Pearson Educacién Latinoamérica es el resultado de meses de trabajo de nuestro personal, que investiga y refina la informacién que se ofrece. ‘Como parte de este compromisa con usted, el lector de Pearson Educacién Latinoamérica Jo invita a dar su opinién, Por favor hdganos saber si disfruta este libro, si tiene alguna dificultad con la informacién y los ejemplos que se presentin, 0 si tiene alguna sugerencia para la préxima edicién, ‘Sin embargo, recuerde que el personal de Pearson Educacién Latinoamérica no puede ‘ctuar como soporte técnico i responder preguntas acerca de problemas relacionados con el software o él hardware. ‘Si usted tiene alguna pregunta o comentario acerca de cualquieer libro de Pearson Educacién Latinoamérica, existen muchas formas de entrar en contacto con nosotros. Responderemos a todos los lectores que podamos. Su nombre, direcci6n y mimero telefénico jamds formarin parte de ninguna lista de correos ni serdin usados para otro fin, més que el de ayudarnos a seguitle Hevanda los mejores libros posibles. Puede escribimnos a la siguiente direccisn: Pearson Educacién Latinoamérica ‘Attn: Editorial Divisién Computacién Calle Cuatro No. 25, 2° Piso, Col. Frace, Alce Blanco Naucalpan de Juirez, Edo. de México CP 53370, Si lo prefiere, puede mandar un fax a Pearson Educacién Latinoamérica al (525) 5387-0811. También puede ponerse en contacto con Pearson Educacién Latinoamérica a través de muestra pagina Web: http: / /wew. pearson. com. me Introduccion Si alguien aprende de otros pero no razona, estard desconcertado. Si alguien razona pero no aprende de otros, estard en peligro. —Confucio iBienvenido a Aprendiendo C en 24 horas! Con base en el éxito de la primera edicién en inglés de este libro y fa retroalimentacién de los lectores, hemos reescrito 0 modificado cada une de los eapitulos de la primera in para hacer esta segunda edicién mis adecuada para principiantes como usted que desean comenzar tan pronto como sea posible con el lenguaje de programacién C, Desde luego, es muy normal dedicar mas de 24 horas a entender cabalmente las conceptos y habilidades de programaciGn que se presentan en el libro. Sin embargo, la buena noticia es que el libro ofrece muchos programas de muestra y ejercicios con explicaciones y respuestas clara, Jo que facilita la comprensién de los conceptos del lenguaje C. De hecho, Aprendiendo Cen 24 horas le ofrece un buen punto de partida en la progra- macién en C, ya que cubre los temas importantes de esta programacidin y establece una base sélida para un principiante serio como usted. Después de leer el libro podri escribir por su cuenta programas sencillos de C . Se beneficiard de la lectura de este libro cuando comience a aplicar programas de Ca problemas reales 0 cuando decida aprender otros lenguajes de programacién como Perl, C++ y Java, éQuiénes deben leer este libro? Si ésta es In primera vez que estudia C, este libro estd escrito para usted. De hecho, al escribir el libro di por hecho que Jos lectores no tendrfan experiencia previa en progra- macién. Por supuesto, siempre es una gran ventaja si usted tiene algin conocimiento acerca de las computadoras. Caracteristicas especiales de este libro Este libro contiene los siguientes elementos especiales que hacen mis claro y sencilla para usted asimilar las caracteristicas y conceptos de C al momento de presentari * Quadros de sintaxis * Notas = Precauciones * Tips LZ. Aprendiendo C en 24 horas Los ewadros de sintaxis explican algunas de las caracteristicas més complicadas de C. co- mo las estructuras de control, Cada cuadro consiste en una definicidn formal de la earac- teristica, seguida de una explicacién, El siguiente es un ejemplo de un cuadro de sintaxis: La sintaxis de la funcign malioc() es include main() int ch; printf (*Eseriba, por favor, un cardeter:\n"); ch = gete(stdin); i@: —printf(‘E1 cardcter que acaba de introducir es: sein", ch); fi: return 5 12: } Después de erear y ejecutar el archivo ejecutable INL@1 .exa, se despliegan los siguientes resultados. El usuario introduce el cardcter # y el programa despliega lo que introdujo el usuario, Escriba, por favor, un caricter: x El cardcter que acaba de introducir es: H En la linea 2 del listado IN. 1, s¢ incluye el archivo de encabezado stdia. h para las dos funciones que se utilizan en el programa; geto() y printf(). Las lineas 4.9 12 proporcionan el nombre y cuerpo de Ia funcién maint} vn En Ia linea 6 se declara una variable entera ch, la cual s¢ asigna posteriormente al valor de retomo de la funcién gete() de la linea 9. La linea 8 imprime un mensaje que pide al usuario que introduzca un carfcter con el teclado. La funcién printf () de la linea 8 uti- liza la salida estiindar predeterminada stdout para desplegar mensajes en Ia pantalla. En la Ifnea 9, la entrada estindar stdin se pasa a la funcién getc(), lo que indica que el flujo de archivo se recibird desde el teclado. Después de que el usuario escribe un caric- ter, la funcién gete() devuelve el valor numérico (es decir, un entero) del carécter. Observe que en la linea 9 se asigna el valor numérico a la variable entera ch Aprendiendo C en 24 horas En la linea 10 se despliega en Ia pantalla, con ayuda de printf (), el cardeter introdu- cido. Observe que dentra de la funcidn printf() de la linea 10 se usa el especificador de formato de cardcter ‘se. Preguntas, respuestas y taller Cada hora (es decir, cada capftulo) termina con una secciGn de preguntas y respuestas que contiene las respuestas a preguntas comunes relacionadas con la leccién del capitulo. Después de esta seccidn hay un taller que consiste en un cuestionario y ejercicios de pro- gramacidn, Las respuesta a estos cuestionatios y las soluciones para los ejercicios se pre- sentan en el apéndice B, “Respuestas a los cuestionarios y ejercicios”, Para ayudarle a consolidar la comprensién de cada leccién, le recomiendo responder las preguntas de los cuestionarins y terminar los ejercicios que se incluyen en el taller. Convenciones utilizadas en este libro Por cuestiones gramaticales, en este libro, los mensajes del eddigo y su respectiva salida incluyen caracteres propios del idioma espaol, como caracteres acentuadas, eiies y signos de interrogacién y exclamacién, Debido a que el lenguaje C fue desarrollado consideran- do el idioma inglés, aun cuando podra compilar y ejecutar los programas sin problemas, tal vez estos caracteres no aparezcan como usted espera. Por Io tanto, le recomendamos que no los utilice al seguir los ejemplos del libro. Posterior mente, conforme avance en su aprendizaje del lenguaje C, encontraré que puede colocar los acentos o algtin otro caréc- ter empleando el cardcter ASCII correspondiente. Este libro emplea tipos especiales de letra para ayudarle a diferenciar entre el cédigo de Cy el lenguaje normal y para identificar conceptos importantes * El cdidigo de C esti tipografiado en una fuente especial nonoespaciada. Verd que esta fuente se utiliza en listados, ejemplos de entrada/salida y en fragmentos de c6- digo. La explicacién de las caracteristicas de C, los comandos, nombres de archivo, instruceiones, variables y todo texto que vea en la pantalla también apareceran con esta fuente. * La entrada de un comando y todo lo que se supone que usted introduciré apareceré en una fuente monoespaciada en negritas. Esto lo verd principalmente en las secciones de entrada/salida de los ejemplos. * Los indicadores de posicién en las descripciones de sintaxis aparecerén en una fuente monaespaciada en cursivas. Reemplace el indicador de posicién por el nombre de archivo real, parimetro 0 por cualquier elemento que represente. * Las cursivas resaltan términos técnicos cuando aparecen por primera vez en el texto y en ocasiones se utilizan para destacar aspectos importantes. Introduccion 5) Lo que aprendera en 24 horas Aprendiendo C en 24 horas consta de cinco partes. En la parte 1, “Las fundamentas de ©", aprenderd los aspectos basioos de este lenguaje. A continuacién le presentaré un resumen de lo que aprender en esta parte: La hora 1, “El primer paso”, le presenta el lenguaje C, el estindar ANSI y los reque- rimientos basicos de software y hardware para la programacién en C. La hora 2, “Su primer programa de C”, muestra todo el procedimienta para escribir, compilar, enlazar y ejecutar un programa de C. La hora 3, “La estructura de un programa de C”, le ensefia varios conceptos importantes, como constantes, variables, expresiones € instrucciones. En esta hora también se presenta la anatoméa de una funcién. La hora 4, “Tipos de datos y palabras reservadas”, lista todas las palabras reser- vadas de C. Se presentan detalladamente cuatro tipos de datos, char, int, float y double, Ademds, se explican las reglas para nombrar una variable, La hora 5, “Manejo de la entrada y salida estindar”, le ensefia a recibir la entrada del teclado y a imprimir la salida en la pantalla con la ayuda de un conjunto de fun- ciones de C, como gete(), getchar(), putc(), putchar() y prantf(). La parte II, “Operadores e instrucciones de control de flujo”, hace énfasis en los opera~ dores ¢ instmeciones de control de flujo de C. A continuacién le presentaré un resumen de lo que aprenderd en esta parte: La hora 6, “Manejo de datas”, le ensefia cémo utilizar los operadores de asignacién aritmética, el operador de negacién o unario menos, los aperadores de: incremento/de- cremento, los operadores relacionales y el operador de conversin explicita. In iteraciéin) con las instrucciones La hora 7, “Ciclos”, presenta los ciclos (es d for, while 0.do-while, La hora 8, “Uso de operadores condicionales”, le habla de otros operadores, como Jos operadores légicos, los operadores de bits, el operador sizeot yy el operador 7:, los cuales se utilizan con frecuencia en C. La hora 9, “Modificadores de datos y funciones matemdticas”, describe cémo- usar modificadores de datos para habilitar o deshabilitar el bit de signo, © para cambiar el tamafio de un tipo de datos. Ademds, se presentan varias funciones matemdticas que proporciona C. La hora 10, “Control de flujo del programa”, presenta todas las instrucciones de control de flujo que se utilizan en C. Estas son: if, if-else, switch, break, continue Y¥ goto. Aprendiendo C en 24 horas. En la parte III, “Apuntadores y arregios”, se exponen los apuntadores y arreglos, A con- tinuacisin le presentaré un resumen de lo que aprender en esta parte: ‘La hora 11, “Apuntadores”, le ensefia cémo relacionar variables con apuntadores. ‘También se presentan conceptos camo valor izquierda y valor derecho, ‘La hora 12, “Arreglos", explicn cémo declarar ¢ inicializar arreglos. También se ‘expone la relaciGn que hay en C entre el arreglo y el apuntador, ‘La hora 13, “Cadenas”, se enfoca en la lectura y escritura de cadenas. También se ‘presentan varias funciones de la biblioteca de C. para manipular las cadenas, como strlen(), strony’), gets(), puts() y seanf (). La hora 14, “Aleance y clases de almacenamiento”, presenta el alcance de bloque, ‘cl alcance de funcién, el aleance de programa y el alcance de archivo, Ademés, se cexplican los especificadores 0 modificadores de clases de almacenamiento, como auto, static, register, extern, const y volatile. La parte IV, “Funciones y asignaciGn dindmica de memoria”, se enfoca en las funeiones y en la asignaciGn de memoria dindmica en C. A continuacién le presentaré un resumen de lo que aprenderd en esta parte: La hora 15, “Funciones”, describe la declaracién y definicién de funciones en C. Se cexplica la ereacién de prototipos de funciones, asi como la especificacién del tipo de retomo de las mismas, La hora 16, “Uso de apuntadores”, le ensefia eémo realizar operaciones aritméticas ‘de apuntadores, emo acceder a Ios elementos en arregles utilizando apuntadores y -cémo pasar apuntadores a funciones. La hora 17, “Asignacién de memoria”, explica el concepto de asignacién de memo- ria de manera dindmica, Se presentan funciones de C utilizadas para la asignacién de memoria dinimica, como malloc(), calloc(), realloc() y treet). La hora 18, “Tipos de datos y funciones especiales”, presenta el tipo de datos enun ye uso de typeder. En esta hora también se ensefian la recursiGn de funciones y los argumentos de linea de comandos para la funcién main(). La parte V, “Estructuras, uniones, E/S de archivos y mis”, expone las estructuras, uniones y la E/S de archivos en disco en C. A continuacién le presentaré un resumen de Jo que aprender en esta parte: La hora 19, “Estructuras de datos”, presenta el tipo de datos structure. Aprenderd, a tener acceso a los miembros de una estructura y a pasar estructuras a funciones con Ja ayuda de apuntadores. En esta hora también se exponen las estructuras anidadas. La hora 20, “Uniones”, describe ¢l tipo de datos union, y la diferencia entre union y structure. Las aplicaciones de uniones se muestran en varios ejemplos. Introduccion La hora 21, “Lectura y escritura de archivos”, explica los conceptos de archivo y flujo en C. En esta primera parte se presentan los aspectos bésicos de la entrada y sa- lida de archivos en disco, También se presentan, junto con varios ejemplos, las si- guientes funciones de C: fopen(), felose(), fgete(), fputc(), tgets(), touted), fread(), fwrite() y feof {). La hora 22, “Funciones de archivo especiales”, es la segunda parte de la B/S de archivos en disco, en la que se presentan las funciones fseek(), ftell() y rewind() Para mostrar cémo pueden ayudarle a tener un acceso aleatorio a archivos en disco. Ademés, se ensefian y se invocan en programas de muestra las funciones fscanf (), ‘tprintt() y freopen(). La hora 23, “Compilacién: el preprocesador de C”, describe el papel que juega el preprocesador de C. A través de los ejemplos mostrados en esta hora, puede aprender directivas de preprocesador como #éef ine, Kunde, #ifdef, Kendif, #ifndef, #if, welis ywelse. La hora 24, #;Qué sigue después?”, resume las caracteristicas y conceptos impor- tantes presentados en este libro. Ademés se explican brevemente el estilo de progra- macién, Ia programacién modular y la depuracién. Para posteriores lecturas, se incluye una lista de libros recomendables de C. Ahora, al pasar el mundo a un nuevo milenio, esta usted listo para iniciar el viaje a través del aprendizaje del lenguaje C. Diviértase leyendo este libro y disfrute al pro- gramar en C. ‘Tony Zhang Downingtown, Pennsylvania Enero, 2000 a" 1 4, wih "y, \ PaRTE | Los fundamentos de C Hora El primer paso Su primer programa de C 1 2 3 La estructura de un programa de C 4 Tipos de datos y palabras reservadas 5 Manejo de la entrada y salida estandar Obraz chroniony prawem autorskim Material chraniony prawem autorskim Hora 1 El primer paso Un viaje de mil kilémetros comienza dando el primer paso. —Proverbio-china Los pensamientos elevados deben tener un lenguaje elevado. —Aristéfianes Bienvenido a Aprendiendo C en 24 horas. En esta primera lecciGn aprenderd lo siguicnte: * QuéesC * Por qué necesita aprender C + Elestindar ANSI » Hardware y software requeridos para ejecutar programas de C 12 Hora 1 Qué es C Ces un lenguaje de programacién que fuc desarrollado en 1972 por Dennis Ritchie en AT&T Bell Labs. Ritchie lo denominé C simplemente porque ya éxistia un lenguaje de programacién B. (En realidad, el lenguaje B condujo al desarrollo de C.) Ces un lenguaje de programacién de alto nivel, De hecho, ¢s uno de los lenguajes de programacién de propésito general mas populares. En el mundo de la computacién, entre més alejado esté un lenguaje de programacién de la arquitectura de la computadora, su nivel seri mds alto. Los lenguajes de nivel mas bajo son los lenguajes de maquina que las computadoras entienden y ejecutan directa- mente, Por otra parte, los lenguajes de programacién de alto nivel se asemejan més al enguaje humano (wea la figura 1.1) Figura 1.1 El espectra del lenguaje. El lenguaja human (or eiompin, Ch lengua do maquina rooo11 11101100, {es-deoi, obcigo anario} (0100111031000 Bajo Los lenguajes de programacién de alto nivel, incluyendo a C, tienen las siguientes ventajas + Legibitidad: Los programas son féciles de leer. + Facilidad de mantenimiento: Es fécil dar mantenimiento a los programas. + Portabilidad: Es fécll portar los programas a través de diferentes plataformas de compute. El primer paso 13) La legibilidad y facilidad de mantenimiento del lenguaje C se deben precisamente a su semejanza con el lenguaje humano, en especial con el inglés. Cada lenguaje de alto nivel necesita de un compilader o un intérprete para traducir las instruceiones eseritas en el lenguaje de programacién de alto nivel a un lenguaje de méquina que la computadora pueda entender y ejecutar, Cadla méquina podria necesitar tun compilador o intérprete distinto para el mismo lenguaje de programaciéin, Por ejemplo, yo utilizo el compilador C de Microsoft para compilar en mi PC los programas de este libro. Si tuviera que ejecutar estos programas en una estacién de trabajo basada en UNIX, tendria que compilarlos usando otro tipo de compilador de C, Por lo tanto, la portabilidad de los programas escritos en C se logra recompilando estos programas con diferentes compiladores para distintas méquinas (vea la figura 1.2). Froura 1.2 mercmrornes zap» ems — ee one (A evrene CEP ones CaF + seas [4 Hora 1 ‘Ademiis, el lenguaje C tiene otras ventajas. Los programas escritos en este lenguaje pueden ser reutilizados, Usted puede guardar partes de sus programas de C en un archivo de biblioteca © invocarlas en su siguiente proyecto de programacién simplemente inclu- yendo dicho archivo, Muchas tareas de programacién comunes y Gtiles ya estén implemen- tadas en bibliotecas que vienen incluidas con los compiladores. Ademés, las bibliotecas le permiten desencadenar con facilidad el poder y la funcionalidad del sistema aperativo que esté empleando. En el resto de este libro trataremos més detalles sobre el uso de funciones de biblioteca de C, Ces un lenguaje de programacién relativamente pequefio, lo que to hace més fécil para. usted. No tiene que memorizar muchas palabras clave © comandos antes de empezar a escribir programas de C que resuelvan problemas reales Para quienes buscan velocidad conservando la conveniencia y la elegancia de un lenguaje de alto nivel, probablemente C sea la mejor eleccidn. De hecho, C le permite tener el control del hardware y de los periféricos de 1a computadora. Es por ello que en ocasiones. ‘este lenguaje se le Hama el lenguaje de programacién de alto nivel mas bajo. han sido desarrollados con base en C. Por ejemplo, Perl es ‘Varios lenguajes de alto un conocido lenguaje de programacién en el disefio. de World Wide Web (WWW) a tra- vvés de Internet. En realidad, Perl tiene muchas caracteristicas de C. Si usted entiende C, aprender Perl le ser muy fécil. Otro ejemplo es el lenguaje C++, el cual es simplemente una versién ampliada de C, aunque C++ facilita la programacién orientada a objetos. I si usted ya conoce C. Incluso aprender Java es mucho mis f pilados y lenguajes interpretados, ‘Antes de poder ejecutar el programa en su méquina, necesita un compilador para traducir un programa escrito en algin lenguaje compilado a un cédiga que la maquina entienda (es deci @-cédigo binario). Una ver hecha la tra- duccién, puede guardar el cédige binario en un archivo de aplicacién. Puede f En general, existen dos tipos de lenguajes de programacién: lenguajes com- El primer paso 15) mantener operando el archivo de-aplicacién sin ei compilador, a menos que el programa (cédigo fuente) sea actualizado y tenga que recompilarie. Al cédigo binario o archivo de aplicacién también se le-conoce como cédigo ejecutable (o archivo eecutable). Por otra parte, usted pede lejecutar in pecigrama excrita en un lenguaje interpretado inmediatamente después de terminar de escribiria, oo que es igual, mientras lo escribe. Pero, en tiempo de ejecueién, dicho programa slempre necesita un intérprete para traducir las instrucciones de alto nivel a instrucciones que entienda la maquina (cédigo binario). No puede ejecutar el programa en una maquina, a menos que tenga el intérprete adecuado. Puede considerar a C como un lenguaje compilado, debido a que la mayoria de los fabricantes de este lenguaje sélo hacen compiladores para manejar programas escritos en C. Sin embargo, no hay nada inherente a un lenguaje compilado que impida que alguien proporcione un intérprete para dicho lenguaje; asimismo, hay quienes. escriben compiladores para lenguajes interpretades. De hecha, escoman mezclar las dos modalidades de lenguajes; un ejemplo de esto es cuando un programador compil cédigo fuente en un pequefio archivo binario, el cual es ejecutado posteriormente por un intérprete en thempo de ejecucién_ El estandar ANSI de C ‘Durante muchos afios, el estindar de facto para C fue él libro El lenguaje de programacin C, escrito por Brian Kernighan y Dennis Ritchie en 1978. Este libro se conoce en In comu- nnidad de programacién simplemente como Ki&eR (en referencia a las iniciales de los autores), y a la fecha tiene tn hugar en tos libreros de muchos programadores. Sin embargo, el libro fue escrito. como una introduccién a C, no como un estindar general u oficial del lenguaje. Debido a que distintos fabricantes ofrectan diversas implementaciones del lenguaje C, las diferencias entre dichas implementaciones comenzaron a apareces. ‘Temiendo que C perdiera su portabilidad, un grupo de fabricantes de compiladores y desarrotladores de software solicité en 1983 al ANSI (Instituto Estadounidense de Estandares Nacionales) que creara un esténdar del lenguaje C. El instituto aprobs la solicitud y forms el Comité Técnico X3J11 para que trabajara en el estindar de C. A finales de 1989, el comité aprobé el esténdar ANSI del lenguaje de programacién C. El estindar ANSI de C mejora el estindar original K&R y define un grupo de funciones de uso comin de C que se conoce come la biblioteca estindar ANSI de C, En la mayorfa de los casos, los compiladores de C incluyen la biblioteca estiindar, junto con otras bibliotecas para proporcionar algunas otras funciones especificas del compilador. Este libro se centra en las funciones de C definidas en el estdndar ANSI, el cual manejan todos los fabricantes de compiladores. Todos los programas de este libro pueden ser 16 Hora 1 compilados por cualquier compilador que se apegue al estiindar ANSI. Si esta interesado en un compilador especifico, puede aprender sus funciones especificas en su respective manual de referencia. Suposiciones acerca del lector No necesita ninguna experiencia previa en programacién para aprender el lenguaje C can este libro, aunque seria mejor si tuviera algdn conocimiento acerca de las computadoras Ademés, depende de usted determinar qué tan réipido quiere recorrer las 24 horas de este libro: podria sentarse con un gran tarre de café y acabarlo en una sola sesién, © podria tomar una hora al dia durante 24 dias Después de terminar este libro, habiendo realizado todos los ejercicios it dos en él, deberd manejar apropiadamente la sintaxis y las caracterfsticas del lenguaje C. Ademés, ya tendrd cierta experiencia en muchas de las tareas que: se encuentran al programar en C. Cuando esté listo para emprender sus propios proyectos de programacién, serd capaz de usar C como una herramienta para escribir programas utiles y poderosos. Conforme vaya avanzando, enconirard que siempre hay mis que aprender, no sélo acerca de C y de ‘c6mo aprovechar su poder, sino también acerca de nuevas tecnologias ¢ ideas de progra macién en general. Con esfuerzo y mucha préctica podré apoyarse ripidamente en las habilidades y teenologfas que aprenda. Configuracién de su sistema Basicamente, todo lo que necesita para compilar y ejecutar sus propios programas en C @ los de este libro, es una computadora y un compilador de C, En las siguientes secciones se describen el hardware y software recomendados. Hardware Cualquier computadora que tenga 0 que pueda acceder a un compilador de C esta bien. El compilador de C debe ser compatible con el ANSI-C, Es muy probable que tenga una PC sobre su escritorio. Una PC 286 con un disco duro de 50 MB y | MB de memoria (RAM) cs quizés ¢l minimo requerido para ejecutar un compilador de C basado en DOS. Para un compilador de C basado.en Windows, su computadora debe tener un disco duro mis grande y mas memoria. Para més detalles sobre requerimientos. de hardware, consulte al fabricante de su compilador. Software Si utiliza una estacién de trabajo basada en UNIX, tal vez ya tenga un compilador de C cargado en su maquina, © por lo menos puede acceder a uno en un servidor. Consulte a su administrador de sistemas para saber cémo acceder a un compilador compatible con el El primer paso 19) La figura 1.4 muestra ¢l IDE con el texto que acaba de escribir. No se preocupe por el significado del texto, En cl siguiente capitulo, “Su primer programa de C”, se lo explicaré, Ficura 1.4 Cédigo escrito enel IDE de Viswal Co 5.0, ‘A continuacién necesita guardar el texto como un archivo. Llamaremos a este archivo MiprimerPrograma.c. También es una buena idea crear un directorio en su disea duro. para almacenar sus proyectos de programacién, y guardar ahf el archivo, Primero haga clic em el botén Save de la barra de herramientas. Haga clic en el bovin New Folder del cuadro de didlogo Save As. Después haga doble clic en esa carpeta para abvirla, escriba, MiPrimerPrograma.c en el cuadro File Name, y haga clic en Save. Observe que se utiliza Ja-extensién .¢ para indicar que el archivo que acaba de guardar es un programa de C. Ahora necesita hacer clic en el mend Build y seleccionar la opcién Compile MiPrimerPrograma.c. Al hacerlo, solicite al compilador que compile el texto que acaba, de escribir y guardar (vea la figura 1.5). En este punto, Visual C++ podrfa pedirle que cree un nuevo espacio de trabajo; sélo haga clic en Yes y éste se creari en forma automitica. No debe haber errores o advertencias en la ventana de resultados después de ejecutar el compilador. Después haga clic de nuevo en el mend Build, y esta vez elija la opeién Build MiPrimer- Programa exe, la cual producird finalmente un archive ejecutable Hamado MiPrinerro- grama.exe. La figura 1.6 muestra que no hay errores © advertencias después de generar MiPrinerPrograma 20 Frouna 1.5. Conpitactén de wn programa de Cen el IDE Ficuna 1.6 Creacién del archivo efecutable de un programa. Ahora est usted listo acaba de compilar, Programa.exe. Al a que dicho archivo peiatd(itia, amiga! Ente we ai priser programe te 6.58): Fran fb} =U erzoe{a). 0 warning (s) EEE Cp ta, ange! fees ae primer propria fw» Oarrarte). 0 warsiegée) correr el archivo ejecutable, WiPrimerPrograna. exe, que hacerlo mediante la siguiente ruta: Build, Execute MiPrimer- el archivo ejecutable le aparecerd una ventana de DOS, debido aplicacién de modo de consola (yea la figura 1.7). El primer paso Ficura 1.7 Ejecucién de un pro- sprama de C. En fa figura 1.7 puede ver que la primera linea de la ventana de DOS es la misma que acaba de escribir: “jHola, amigo! Este es mi primer programa dé C.” En realidad, éste es el resultado de su primer programa (observe que Ia segunda linea de la ventana de DOS es sdlo un aviso del indicador de comandos del DOS). ‘Muy bien. Acabo de mostrarle cémo usar el compilador de Visual C++ para escribir y compilar un programa de C, y c6mo hacerlo ejecutable. Para més detalles, necesita leer libros como Aprendiendo Visual C++ 5 en 2! dias, el cual se enfoca en ensefiarle c6mo usar el compilador de Visual C++. Uso del compilador de Borland En esta seccién vay a mostrarle.cémo usar el compilador de C que viene con el paquete (C++ de Borland. El procedimiento de esta seceién es muy similar al de la anterior. Si necesita aprender mis detalles sobre cémo instalar ef C+-+ de Borland, siga las instrue- ciones que vienen con el compilador. Daré por hecho que ya instalé una copia de Borland C++ 5,02.en su computadora. Para iniciar el compilador, puede hacer clic en el botdn Inicio de su barra de tareas de Windows 95 (o Windows 98, NT 0 2000) y seleccionar Programas, Borland C++ 5.02, Borland C++. O bien, puede simplemente ejecutar el archivo de aplicaeién bew. exe direc- tamente desde el directorio (carpeta) en el que instalé el paquete Borland C++. La figura 1.8 muestra un ejemplo del entomo de desarrollo integrado (IDE) de Borland C++ 5.02. Después puede abrir un archivo nuevo dentro del IDE, y escribir el siguiente texto en el espacio del archivo recién abierto: ‘finclude main() { printf return “THola, andgol Este es mi primer programa de C.\n"); 2 Hora 1 Ficura 1.8 Creacién de un programa en el IDE de Borland C++, La figura 1.9 n significado del texto. Figura 1.9 Cima guardar terto de un programa de C en ef IDE de Borland. se preocupe porel El primer paso ‘Ahora necesita guardar el texto como un archivo. Llamaremos a este archivo MiPriner Prograna.c. Observe que se utiliza la extensiGn © para indicar que el archivo que acaba de guardar es un programa de C. ‘Ahora necesita hacer clic en el mend Project y seleccionar la opcién Compile. Al hacerlo, solicite al compilador que comience a compilar el texto que acaba de escribir y guardar. La figura 1.10 muestra que no hay errores o advertencias después de compilar MiPriner Prograna.c y crear MiPrimerPrograma. exe Frcuna 1.10 Como compiler wn programa de Cen el IDE de Borland, Ahora estd usted listo para correr el archivo ejecutable, MiPrimerFrograma.exe, que acaba de compilar. Puede correrlo haciendo clic en el boton Run de la barra de herra- mientas, o puede ejecutarlo directamente desde el directorio en donde lo cred. Al correr el archivo ejecutable le aparecerd una ventana dé DOS, debido a que dicho archiva es en realidad una aplicacién de DOS (ves ta figuen 1.11). Frcuna 1.11 Ejecucién de un programa de Cen el IDE de Borland. 23) 24 Hora 1 La figura 1.11 exhibe el resultado exactamente como usted acaba de escribirlo: “jHola, amigo! Este es mi primer programa de C.” En realidad, éste es el resultado de su primer programa de C. Si desea aprender mas detalles sobre edmo usar Borland C+-+, lea un libro como Aprendiendo Borland C++ en 21 dias, Resumen En esta primera leccidn aprendié los siguientes elementos bisicos acerca del lenguaje C: + Ces.un lenguaje de programacién de propdsito general, + Ces.un lenguaje de alto nivel que tiene las ventajas de legibitidad, facilidad de ‘mantenimiento y portabilidad. + Ces.un lenguaje muy eficiente: que permite controlar el hardware y los periféricos de la computadora. + Ces un lenguaje pequefio que usted puede aprender en un tiempo relativamente breve, * Los programas escritos en C pueden reutilizarse, « Los programas escritos en C deben compilarse y traducirse a un eddigo legible para Ia méquina antes de que la computadora pueda ejecutarlos. Muchos lenguajes de programacién, como Perl, C++ y Java, han adoptado concep- tos bisicos y caracteristicas tiles del lenguaje C. Una vez que aprenda C, le sera mas sencillo aprender estos otros lenguajes. + Los fabricantes de compiladores de C manejan el estiindar ANSI de C para mantener Ta portabilidad de los programas escritos en este lenguaje. Puede utilizar cualquier compilador compatible con el ANSI C para compilar todos Jos programas de C incluidas en este libro. En Ja siguiente lecci6n aprender a escribir su primer programa de C. El primer paso 25) Preguntas y respuestas P ;Cudl es lenguaje de-nivel mas bajo-en el mundo de la computacién? R El lenguaje de maquina de la computadora, conformado por ceros y unos, es el de més bajo nivel, debido a que es el tinico lenguaje que la computadora puede enten- der en forma directa. 1 Cuailes son las ventajas de los lenguajes de programacién de alto nivel? R La legibilidad, la facilidad de mantenimiento y Ia portabilidad son las principales ventajas de los lenguajes de alto nivel. 2Qué es C, en tiltima instancia? R Ces um lenguaje de programacién de propésito general, y es un lenguaje de alto nivel que tiene ventajas como la legibilidad, facilidad de mantenimienta y portabi- lidad, Ademis, C permite descender al nivel del hardware para incrementar, si es necesario, la velocidad de rendimiento. Se necesita un compilador de C para traducir los programas escritos en C a un cédigo que la maquina entienda. La portabilidad de estos programas se logra recompilindolos con compiladores de C especificas para cada tipo de computadora, {Puedo aprender C en poce tiempo? R Sf. Ces un lenguaje de programacién pequefio. No hay muchas palabras clave 0 comandos que recordar, Ademis, es muy fiicil leer y escribir los programas de C, ya que éste es un lenguaje de programacién de alto nivel muy parecido al lenguaje humano, en especial al inglés. Por lo tanto, usted puede aprender C en un tiempo relativamente corto. ~ ” ” lidar la comprensidin de la lecciéin de esta hora, le recomiendo que responda el ‘cuestionario de este taller antes de pasar a la siguiente leccién, Las respuestas y sugeren- 3: 4: main() Bt 8: printf (*iHola, amigo! Este es mi primer programa de C.\n*); 7: return a: } Este es un programa de C muy sencilllo que esté guardado en un archivo de nombre 82L01.c. Observe que el nombre de un programa de C debe tener la extensiGn .¢. Si instal un compitador de Cy configuré el entomo de desarrollo correspondiente, podré compilar este programa y convertirlo en un archivo ejecutable. Ms adelante en este capitulo le diré cémo hacer un archivo ejecutable, En la hora anterior aprendié esimo escribir un programa en su editor de texto y eémo- guardarlo como un archivo de programa de C. Quizéi haya observado que a diferencia del ejemplo del capitulo anterior, en este ejemplo cada Linea esté numerada, Sélo hago esto para tener una referencia al momento de explicar lo que hace cada linea del programa. A diferencia de otros lenguajes como BASIC, el lenguaje C no emplea mimeros de linea, De hecho, si usted escribe los niimeros de linea en el listado, su programa no funcionard_ Asi que cuando escriba estes programas recuerde no poner los miimeros de linea que se miuestran én el libro. (Das cosas que puede notar al mirar el listado 2.1 son los caracteres de punto ycoma y la sangria en las lineas 6 y 7. A diferencia de otras lenguajes, como BASIC, e! final de una linea no tiene un significado especial en C. Es.comple- tamentte valido (y recomendablle, en muchos casos) dividir una instruccién en varias lineas pare dar claridad. En general, una instruccién individual de € termina con un punta y coma; pero posteriormente veremos mucho mas.al respecto, La sangria sirve para identificar los distintos niveles de un progra- ma en una especie de formato esquemitico, La funcién main() es el nivel Su primer programa de C 23) Principal del programa, de modo que va a la extrema izquierda. Las lineas 6 y 7 son parte de main), asi que tienen una sangria de un nivel hacia la derecha. Por lo regular se emplea la tecla Tab para sangrar un nivel antes de comenzar a escribir, Debemos sefialar que al igual que con los nimeros de linea, el compilador no realiza el sangrado; ni siquiera Ia nota. El progra- mader es libre de usar cortes de linea y sangrado, conacidas como espacias ‘en blanco, para hacer qué el programa lurca legible, Este es un asunte de ‘estilo, pero es buena idea sequir las convenciones aceptadas generalmente a fin de que otros programadores puedan entender sus programas y viceversa. ‘Observe el uso del espacio en blanco al avanzar en este libro y siéntase en libertad de desarroliar su propio estilo. Yo configuré mi entomo de desarrollo de tal manera que todos los programas de este libro se pudieran compilar y convertir en aplicaciones de consola, Por ejemplo, #2L81 exe esl nombre de la aplicacién de consola generada a partir de @2L01..c. Observe que se incluye -exe como la éxtensiGn del nombre de un programa de aplicacién de DOS o Windows (es decir, un archivo ejecutable). Ademés, guardo todos los archivos ejecutables generados a partir de los programas. de este libro en un directorio de mi computadora lamado ¢:\apa. Por Jo tanto, si escribo @2L01 ‘desde el indicador de comandos de DOS y oprimo la tecla Entrar, puedo ejecuiar el archivo ‘ejecutable 02101 .exe y exhibir en la pantalla el mensaje 1Hola, amigo! Este es mi primer programa de C. El siguiente resultado es una copia de la pantalla: Ey iHola, amiga! Este es mi primer programa de C. Comentarios Veamos ahora mds de cerca el programa de C del listado 2.1. La primera linea contiene un comentario: I eat Este es mi primer programa de C */ Puede observar que esta linea comienza con una combinacién de diagonal y asterisco, /*, y termina con */. En C, ala combinacién /* se le denomina marca de apertura de comentario, y ala combinaci6n */, marca de cierre de comentario. El compilador de C ignora todo Io que se encuentra entre las marcas de apertura y de cierre de comentario. Esto significa que el compilador ignora por completo el comentario de la primera linea Usted puede ver que esta Kinea comienza con un signo de numeral. #, seguido por include. En C, #include forma una directiva de preprocesadar que indica al prepracesador de C que busque un archive y cologue el contenido de ese archivo en donde la directiva include indique. El preprocesador es un programa que hace algunos preparativos para el compilador de ames de compilar su eédigo. En la hora 23, “Compilacién: el preprocesador de C, se exponen mais detalles acerca del preprocesador. ‘También puede ver en esta linea que esté después de la directiva Winclude. Podia pensar que él archivo solicitado por la directiva #include es algo Hamado stdio.h. Tiene raz6n. Aqui, la directiva #include solicita al preprocesador de C que busque y coloque el archive stdio.h en el lugar del programa donde se encuentra la directiva. 3 2 Hora 2 El archivo stdio.n significa encabezade de entrada-salida esténdar. Este archivo con- tiene numerosas prototipos y macros para realizar operaciones de entrada o salida (E/S) de programas de C. Veré mas de la E/S de programas en la hora 5, “Manejo de la entrada y salida estndar”, Algunos sistemas operatives distinguen entre letras maydsculas y mindsculas, pero otros no lo hacen. Por elemplo, stdio.hy STDIO.H son nombres kdénti- «0s.en una PC. pera san diferentes en UNIX. Archivos de encabezado Los archivos que se incluyen mediante la directiva #ineiude, como stdio.h, se denomi- nan archivas de encabezade debido a que las directivas #inelude se colocan casi siempre: al inicio, o a la cabeza, de los programas de C, De hecho, la extensidn .h significa “header” (encabezado), y se suele hacer referencia a ellos como archivos punto h. Ademdis de stdio.n, existen mis archivos de encabezado, como stdiib.n, string.h, math.n, etcétera, En el apéndice A, “Archivos de encabezado del estindar ANSI”, se proporciona una lista de todos ellos. Los archivos de encabezado especificos que necesite incluir dependerin de las fanciones especificas de biblioteca que pretenda Ilamar, La docu mentacién de las funciones de biblioteca le diré qué archivo de encabezado se requiere. Paréntesis angulares (< >) y comillas dobles (* “) En la segunda linea del listado 2.1 hay dos paréntesis angulares, < y >, que se usan para ‘encerrar a stdio.n. Tal vez se preguate para qué sirven los paréntesis angulares. En C, Jos parémesis angulares solicitan al preprocesador de C que busque un archivo de vencabezado en un directorio distinto al actual, Por ejemplo, en mi computadora, el directorio actual que contiene el archivo #2101 .¢ se lama ¢:\code. Por Io tanto, los paréntesis angulares que rodean a |e indican al prepracesador de C que busque el archivo stdio.h en un directorio diferente a C: \code. Si desea que el preprocesador busque primero en el directorio actual antes de buscar en otra parte, puede utilizar comillas dobles para encerrar el nombre del archivo de encabe- zado, Por ejemplo, cuando el preprocesador de C ve “stdio.h*, busca primero el archivo de encabezado stdio.h ca el directorio actual, que en mi méquina es G: \cede, antes de buscar en otra parte. Los archivos de encabezado se guardan normalmente en un subdirectorio denominado include. Por ejemplo, yo instalé un compilador de C de Microsoft en el directorio MSVE de mi disco duro, el cual est etiquetada como la unidad ¢. Entonces, la ruta de acceso al archivo de encabezado se convierte en G: \MSVC\ include. Su primer programa de C 33] Por lo regular, el compilador determina, al momento de instalarlo, la ruta de acceso en donde se guardardn los archives de encabezado, A esto se le conoce cominmente como el directorio include o Ia ruta de acceso include de su entomo. No tendré que preocuparse por el directorio include, sino hasta que cree sus propios archivos de encabezado. Por ahora, slo necesita especificar el nombre del archivo de encabezado que desea incluir. La funcién main() En la linea 4 del listado 2.1 se encuentra la siguiente funci6n: main () Esta es una funcidin muy especial en C. Todo programa de C debe tener una (y s6lo una) funcién nain(), En la hora 3, “La estructura de un programa de C”, se proporcionan explicaciones mis genéricas acerca de las funciones, Puede colocar la funcién main() en cualquier lugar de su programa de C. Sin embargo, la ejecueién de su programa siempre comienza con la funcién main(). Si crea otras fun- ciones en su programa, nain() siempre se ejecutard primero, incluso si esti al final de su archivo de programa, En el listado 2.1, el cuerpo de la funci6n ain() inicia en la linea 4 y termina en la linea 8. Debido a que éste es un programa muy sencillo, main() es 1a tinica funcién definida en el programa. Dentro del cuerpo de la funcién main() se lama a una funcién de biblioteca de C, printf(), a fin de imprimir un mensaje de saludo (vea la linea 6). En la hora 5 se abordan mds detalles acerea de print#(). ‘Otra cosa importante respecto a main() 4 que In ejecucién de todo programa de C ter ‘mina con main(). Un programa concluye cuando se han ejecutado todas las instrucciones dde la funcién main(). El cardcter de nueva linea (\n) Algo que vale la pena mencionar acerca de la funcién printf () ¢s el cardcter de nueva linea, \n. Por lo regular agregado como sufijo al final de un mensaje, el caricter de i Ja computadora que mueva el cursor al inicio de la siguiente linea, para que cualquier cosa que se imprima después de! mensaje comience en la siguiente Vinea de la pantalla, ‘En un entomo UNIX, \n pasa a la siguiente linea por sf mismo, pero deja el cursor en la posicién en que estaba en la linea anterior. En este caso, es necesario imprimir \r\n en ‘vez de solamente \n, El cardicter \r es el caricter de retorno de carro. Al ejecutar los programas de muestra de este libro, podri saber de inmediato si el cursor regresa al prin scipio de la nueva linea; si no es asi, simplemente vtilice \r\n siempre que ves \n en los listados de programas. Hora 2 El ejercicio 3 de esta leccidn le da la oportunidad de utilizar el cardcter de nueva linea para dividir en dos lineas wn mensaje de una linea, La instruccién return En C, todas las funciones devuelven valores. Por ejemplo, al crear una funcién para sumar dos ndmeros, usted puede hacer que dicha funcién le devuelva el valor de Ia suma. La funcién main() por si misma devuelve un valor entero. En C, los enteros son mimeros decimales sin fracciones. Por lo tanto, en la linea 7 del listado: 2.1 hay una instruccién, return @;, que indica que la funcién main() devuelve un @ y el programa termina normalmente. Hay casos en los que debe terminar sus programas debido a una condicidn de error. Cuando eso sucede, puede devolver valores distintos a @ para indicar al sistema operativo (o al programa que ‘ejecut6 su programa) que hubo un error, La funcién exit() ‘También existe una funcién de biblioteca de C, exit(), que se puede utilizar para terminar un programa. Debido a que la funcién exit () esta definida en el archivo de encabezado std1ib-h, usted debe incluir el archive de encabezado al principio de su programa para poder usar la funcién. La funcién exit()no devuelve un valor a su programa por sf misma. ‘Observe que return y exit () también se pueden usar en otras funciones. En lo que resta del libro vers més ejemplos de Ia palabra reservada (0 palabra clave, como también se le conoce) return. Compilacién y enlace Ya debe estar ansioso por saber cémo se hace un archivo ejecutable. Veamos cémo se ‘compila un programa de C y cémo se traduce a un archivo ejecutable. Como se muestra en Ia figura 2,1, se necesitan por lo menos tres pasos para crear un archive ejecutable. Primero se hace un archivo de programa escrito en C, denominado eddige fuente, EL nombre del archive de cédige fuente termina con la extensién .¢ Después, un compiladar de C compila el archive de cédigo fuente y crea un nuevo ar- chivo. El nuevo archivo es un archive objeto, En el sistema operative UNIX, el nombre del archivo objeto termina con la extensién 0, En los sistemas operatives DOS y Windows, la extensidn es .obj No es posible ejecutar el archivo objeto debido a que falta cierto cédigo de funciones. Es necesario coneluir el paso siguiente: el enlace. Este se hace invocando a un programa especial Ilamado enlazador, el cual viene normalmente con ¢l paquete del compilador. Su primer programa de C 35) Un enlazador se emplea para vincular el archivo objeto, la biblioteca estindar de C y otras bibliotecas generadas por el usuario para producir un archivo ejecutable: el eédigo binaria, En esta etapa, el cédigo binaria de las funciones de biblioteca que se llaman en el eddigo fuente se combina con el archivo objeto; el resultado se guarda en un nuevo archivo: un archivo ejecutable. Como aprendid en el primer capftulo de este libro, el nombre de un archivo ejecutable de DOS o de Windows termina por lo regular con la extensién .exe (com es otra extensiGn que se usa para un nombre de archivo ¢jecutable de DOS), En UNIX no es necesario incluir dicha extensiGn en el nombre de un archivo ejecutable, Frouna 2.1 Creacién de un peemoaene te active Pree archivo ejecuable ‘sti \ mediante el compi- st. ladory l enlacador o—s N Miés adelante aprenderd que: en muchos casos tal vez tenga que enlazar varios archivos objeto a fin de crear un programa ejecutable. Observe que tanto el archive objeto como el archivo ejecutable son dependientes de la miquina. Usted no puede simplemente pasar un archivo ejecutable de la plataforma de eGmputo actual a otra que sea operada por un sistema operative distinto, aunque el eddigo fuente de ese archivo ejecutable, presumiblemente escrito en ANSI C, podria ser inde- pendiente de la méquina (es decir, portable).

You might also like