ebook img

Programacion En C PDF

233 Pages·5.926 MB·Spanish
by  Varios
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Programacion En C

El C es el lenguaje de programación de los ochenta: es rápido, eficiente, conciso, estructurado y fácil de transportar de unos ordenadores a otros. Hoy en día, el 70 por 100 del software para ordenadores personales está siendo desarrollado en C. PROGRAMACION EN C. Introducción y conceptos avanzados, es una guía práctica que pone en sus manos todo lo que se necesita saber para comenzar a usar este excitante lenguaje. Será, además, manual de consulta para quienes se sientan fascinados por las potencialidades de este lenguaje, ya que trata también los aspectos más avanzados del lenguaje C: el preprocesador C, utilización de estructuras, cambios de tipo, operaciones con ficheros y manejo de bits. Se cubre también el uso del C en entorno UNIX, la utilización de puertos en el 8086/8088, el reenvío de entrada / salida, gráficos, música, macros, etc. PROGRAMACION EN C. Introducción y conceptos avanzados está basado en la implantación estándar del C de Kernighan & Ritchie en el IBM PC. Programación en C Introducción y conceptos avanzados Mitchell Waite Stephen Prata Donald Martin Indice Prólogo ..................................................................................................................... 9 1. Preparados... Listos... ¡C!.......................................................................... 13 ¿De dónde viene?—¿C para qué?—¿Adonde va?—Uso del C.—Algunas convenciones.—Un consejo. 2. Introducción al C........................................................................................ 27 Un ejemplo sencillo de C.—Explicación.—Estructura de un programa sencillo.—Claves para hacer legible un programa.—Subiendo un nuevo peldaño.—Y mientras estamos en ello...—Hasta ahora hemos aprendi­ do.—Cuestiones y respuestas.—Ejercicios. 3. Los datos en C........................................................................................... 45 Datos: variables y constantes.—Tipos de datos.—Tipos de datos en C.—Utilización de tipos de datos.—Hasta ahora hemos aprendido.— Cuestiones y respuestas. 4. Tiras de caracteres, #define, printf( ).......................................................... 71 Introducción a las tiras de caracteres.—Constantes: el preprocesador C.—Usos y utilidades de printf( ) y scanf( ).—Claves de utilización.— Hasta ahora hemos aprendido.—Cuestiones y respuestas. 5 5. Operadores, expresiones y sentencias................................................. 97 12. Arrays y punteros....................................... ........................................... 331 Introducción.—Operadores fundamentales.—Algunos operadores adi­ Arrays: Punteros a arrays.—Funciones, arrays y punteros.— cionales.—Expresiones y sentencias.—Conversiones de tipo.—Un pro­ Suplantación de arrayspor punteros.—Operaciones con punteros.— grama ejemplo.—Hasta ahora hemos aprendido.—Cuestiones y respues­ Arraysmultidimensionales.—Punteros y arraysmultidimensionales.— tas.—Ejercicios. Hasta ahora hemos aprendido.—Cuestiones y respuestas.—Ejercicio. 6. Funciones de entrada/salida y reenvío................................................ 133 13. Tiras de caracteres y funciones relacionadas..................................... 357 E/S de un solo carácter: getchar( ) y putchar( ).—Buffers.—Otra eta­ Definición de tiras dentro de un programa.—Entrada de tiras.—Salida pa.—Reenvío.—UNIX.—E/S dependiente de sistema: puerto de E/S de tiras.—La opción «hágaselo usted mismo».—Funciones de tiras de 8086/8088.—Vamos a tantear la potencia oculta de nuestro ordena­ caracteres.—Ejemplo: ordenación de tiras.—Argumentos en líneas de dor.—Hasta ahora hemos aprendido.—Cuestiones y respuestas.— ejecución.—Hasta ahora hemos aprendido.—Cuestiones y respuestas.— Ejercicios. Ejercicios. 7. Una encrucijada en el camino.............................................................. 163 14. Estructuras de datos y otras lindezas.................................................. 391 La sentencia if.—La sentencia if con else.—Quién es el más grande: ope­ Problema ejemplo: Creación de un inventario de libros.—Puesta a pun­ radores de relación y expresiones.—Seamos lógicos.—Un programa pa­ to del patrón de la estructura.—Definición de variables de estructura.— ra contar palabras.—Una caricatura con caracteres.—El operador con­ Cómo acceder a miembros de la estructura.—Arraysde estructuras.— dicional: ?:.—Elección múltiple: switch y break.—Hasta ahora hemos Estructuras anidadas.—Punteros a estructuras.—Cómo enseñar estruc­ aprendido.—Cuestiones y respuestas. turas a las funciones.—Y después de las estructuras, ¿qué?—Un vistazo rápido a las uniones.—Otro vistazo a typedef.—Hasta ahora hemos 8. Bucles y tirabuzones.............................................................................. 203 aprendido.—Cuestiones y respuestas.—Ejercicios. El bucle while.—Algoritmos y seudocódigo.—El bucle for.—Un bucle con condición de salida: do while.—¿Con qué bucle nos quedamos?— 15. La biblioteca C y el fichero de entrada/salida.................................... 421 Bucles anidados.—Otras sentencias de control: break, continue, goto.— Arrays.—Una cuestión sobre entradas.—Resumen.—Hasta ahora hemos Cómo acceder a la biblioteca C.—Funciones de biblioteca que ya he­ aprendido.—Cuestiones y respuestas.—Ejercicios. mos utilizado.—Comunicación con ficheros.—¿Qué es un fichero?— Un programa sencillo de lectura de ficheros: fopen( ), fclose( ), getc( ) 9. Funcionamiento funcional de las funciones........................................ 243 y putc( ).—Un programa sencillo de reducción de ficheros.—Fichero E/S: fprint( ), fscanf( ), fgets( ) y fputs( ).—Acceso aleatorio: Creación y utilización de una función sencilla.—Argumentos de funcio­ fseek( ).—Comprobación y conversión de caracteres.—Conversiones de nes.—Devolución de un valor desde una función: return.—Variables lo­ tiras de caracteres: atoi( ), atof( ).—Salida: exit( ).—Asignación de me­ cales.—Localización de direcciones: el operador &.—Alteración de va­ moria: malloc( ) y calloc( ).—Otras funciones de biblioteca.— riables en el programa de llamada.—A ver cómo funcionamos.—Cómo Conclusión.—Hasta ahora hemos aprendido.—Cuestiones y respues­ especificar tipos de funciones.—Todas las funciones C se crean de la mis­ tas.—Ejercicios. ma manera.—Resumen.—Hasta ahora hemos aprendido.—Cuestiones y respuestas.—Ejercicios. APENDICE A: Lecturas adicionales.......................................................... 447 10. Modos de almacenamiento y desarrollo de programas.....................277 Lenguaje C.—Programación.—El sistema operativo UNIX. Modos de almacenamiento: Propósito.—Una función de números alea­ torios.—Lanza los dados.—Una función para atrapar enteros: APENDICE B: Palabras clave en C........................................................... 449 getint( ).—Ordenación de números.—Resumen.—Hasta ahora hemos Palabras clave de control de programas. aprendido.—Cuestiones y respuestas.—Ejercicios. APENDICE C: Operadores C..................................................................... 451 11. El preprocesador C............................................................................... 313 Constantes simbólicas: #define.—Utilización de argumentos con APENDICE D: Tipos de datos y modos de almacenamiento ..........455 #define.—¿Macros o funciones? Inclusión de un fichero: #include.— Otros comandos: #undef, #if, #ifdef, #ifndef, #else y #endif.—Hasta Tipos de datos básicos.—Cómo declarar una variable simple.—Modos ahora hemos aprendido.—Cuestiones y respuestas.—Ejercicio. de almacenamiento. 7 APENDICE E: Control de flujo en el programa........................................... 459 Prólogo La sentencia while.—La sentencia for.—La sentencia do while.— Utilización de sentencias if para elegir entre opciones.—Elección múlti­ ple con switch.—Saltos en el programa. C es un lenguaje de programación sencillo y elegante, que se ha transfor­ mado rápidamente en el medio elegido por un número cada vez mayor de programadores para comunicarse con su ordenador. Este libro (Programa­ ción en C, por si ha perdido la tapa) pretende ser una guía sencilla para apren­ der y un libro de consulta, más adelante, para aquellos que se sientan fasci­ nados por las potencialidades de este lenguaje. En el subtítulo se recalca que es éste un libro para los que empiezan. Con ello queremos indicar que nuestro primer objetivo es guiar al lector en sus primeros pasos por los vericuetos básicos del C. En programación, la expe­ riencia es el gran maestro; por ello encontrará en el libro multitud de ejem­ plos con los que jugar y estudiar. Hemos utilizado figuras allá donde hemos creído que ayudaban a aclarar un determinado punto. De tanto en tanto, se resumen y destacan las características fundamentales del C, para hacerlas fá­ ciles de localizar. Hay también cuestiones (y respuestas) que permiten com­ probar lo que hemos avanzado. En principio, no suponemos que el lector posee un conocimiento al dedillo de ningún otro lenguaje clásico de progra­ mación, pero sí comparamos de vez en cuando este lenguaje con los demás, con el fin de ayudar a aquellos lectores que sí dominan alguno. La segunda parte del subtítulo del libro pretende indicar que, además de manual de principiantes, el libro contiene bastantes más cosas. Lo primero, la sección de cuestiones y respuestas apuntada anteriormente. Además, in­ tentando llegar más lejos de lo que un primer manual alcanza, discutiremos 9 algunos de los aspectos más avanzados del C, como utilización de estructu­ ras, cambios de tipo, operaciones con ficheros y, en el apéndice, manejo de bits en el C, así como algunas extensiones del propio lenguaje. El libro cubre también el entorno del C en microordenadores y UNIX; por ejemplo, se dis­ cute el reenvío de entrada/salida en ambos entornos, y se comenta la utiliza­ ción de los puertos en microprocesador 8086/8088. Los dibujos y pequeñas historietas introducidos pueden considerarse también como extra; por cier­ to, un extra bastante agradable. Hemos intentado, por encima de todo, hacer esta introducción al C útil, instructiva y clara. Para sacar a este libro todo el partido posible deberá us­ ted, lector, jugar un papel lo más activo posible. No se limite a leer los ejem­ plos; antes bien, introdúzcalos en su sistema e intente hacerlos funcionar ade­ cuadamente. El C es un lenguaje de programación muy fácil de transportar de un sistema a otro, pero quizá encuentre alguna diferencia marginal en la forma de ejecución de programas en su sistema con respecto al nuestro. No se canse de experimentar; cambie alguna parte del programa que esté ejecu­ tando y observe el efecto producido; modifique el programa para hacerle rea­ lizar una tarea ligeramente diferente; haga caso omiso de nuestras adverten­ cias en un momento determinado para ver lo que sucede; intente realizar el mayor número posible de cuestiones y ejercicios. Cuanto más ponga de su parte, más aprenderá. Le deseamos la mejor de las suertes en el camino de aprendizaje de C. Hemos intentado que el libro se acople a sus necesidades, y esperamos que, por su parte, alcance los objetivos que se ha propuesto. Mitchell Waite Stephen Prata Donald Martin Preparados... listos... ¡C! En este capítulo encontrará: • ¿De dónde viene? • ¿C para qué? • ¿Adonde va? • Uso del C • Uso de un editor para la preparación del programa • Ficheros fuente y ficheros ejecutables • Compilación de C en un sistema UNIX • Compilación de C en un IBM PC (Microsoft/Lattice C) • Otra forma distinta de compilar • Algunas convenciones • Un consejo 13 Preparados... Por supuesto, suponemos que la mayor parte de los lenguajes pretende) ser útiles, pero a menudo establecen otros objetivos adicionales. Por ejem plo, uno de los objetivos principales del PASCAL es proporcionar una base sólida para enseñanza de los principios de programación. El BASIC, por si listos... ¡C! parte, se desarrolló intentando asemejarse al inglés, de manera que fuese fá cilmente comprendido por estudiantes no familiarizados con ordenadores ( si son de habla inglesa, mejor). Todos estos objetivos, evidentemente, son importantes, pero no siempre son compatibles con la utilidad pura y simple El C ha sido creado como herramienta de programación, manteniendo, ade CONCEPTOS más, una justa fama de lenguaje «amistoso» para el programador. Historia del C Virtudes del C ¿C para qué? Lenguajes compilados Ejecución de un programa C El lenguaje C se está transformando rápidamente en una de las bases de programación más importantes y populares. Esta creciente utilización se de be a que la gente lo prueba y le gusta; conforme vaya avanzando en su apren dizaje, también usted se sentirá atraído por sus numerosas virtudes. Mencio- naremos a continuación algunas de ellas. El C es un lenguaje moderno, que incorpora las características de control apuntadas como deseables por la teoría y práctica de la informática. Su pro pio diseño hace que resulten naturales para el usuario aspectos como la pla nificación escalonada, programación estructurada y diseño modular; el re sultado es un programa más fiable y comprensible. Bienvenido al mundo del C. En este capítulo le ayudaremos a prepararse para emprender el aprendizaje de este poderoso lenguaje, cada vez más po­ pular. ¿Qué necesita para estar listo? En primer lugar, necesita interesarse por el C; suponemos que ya ha asumido este punto. No obstante, trataremos de aumentar su interés exponiendo brevemente algunos de los aspectos más seductores del C. En segundo lugar, necesita una guía que le introduzca en el lenguaje; para eso está este libro. Además, necesita tener acceso a un orde­ nador que posea un compilador C; esto lo tendrá que arreglar por su cuenta. Por último, necesita saber cómo ejecutar un programa C en su sistema; le daremos algunos consejos acerca de este particular al final del capítulo. ¿De donde viene? El C fue creado por Dennis Ritchie, de los Laboratorios Bell, en 1972, cuando trabajaba, junto con Ken Thompson, en el diseño del sistema opera­ tivo UNIX. Por otra parte, el C no surgió por generación espontánea del ce­ rebro de Ritchie; se deriva del lenguaje B de Thompson, el cual, a su vez..., pero eso es otra historia. Lo importante es que el C se creó como herramien­ ta para programadores. En consecuencia, su principal objetivo es ser un len­ guaje útil. 15 El C es un lenguaje eficiente. Su diseño aprovecha las “habilidades” de los ordenadores al uso. Los programas C tienden a ser compactos y ejecutar­ se con rapidez. El C es un lenguaje portátil. Con ello queremos significar que los progra­ mas C escritos en un sistema pueden ejecutarse en otros sin ninguna modifi­ cación, o con modificaciones mínimas. En este último caso, a menudo las modificaciones se reducen a cambiar unas cuantas sentencias de entrada en un fichero de encabezamiento (header) que acompaña al programa princi­ pal. Por supuesto, la mayor parte de los lenguajes pretenden ser portátiles; sin embargo, cualquiera que haya intentado convertir un programa en BA­ SIC IBM PC a Apple BASIC (y eso que son primos hermanos), o que haya intentado ejecutar un programa FORTRAN en un gran ordenador IBM con sistema UNIX, sabrá que la cosa no es tan sencilla; de hecho, aparecen gran número de pequeños detalles que pueden crear problemas. En este sentido, el C es un líder en lenguajes portátiles. Existen compiladores C para unos 40 sistemas, que abarcan desde microprocesadores de 8 bits hasta el actual campeón mundial de velocidad en ordenadores, el Cray 1. El lenguaje C es también poderoso y flexible (dos de las palabras favoritas en la bibliografía de ordenadores). Por ejemplo, la mayor parte del sistema operativo UNIX, poderoso y flexible (¿lo ve?) como pocos, está escrita en C. Incluso están escritos en C los compiladores e intérpretes de otros lengua­ jes, como FORTRAN, APL, PASCAL, LISP, LOGO y BASIC. Así pues, cuando utilice FORTRAN en una máquina UNIX recuerde que, a la postre, hay un programa C que está haciendo el trabajo de producción del programa ejecutable final. Se han utilizado programas C para resolver problemas físi­ Estructuras Formato cos e ingenieriles, e incluso para producción de secuencias animadas en pelí­ flexibles de control estructurado culas como El Retomo del Jedi. El C posee control sobre aspectos del ordenador asociados generalmente con lenguajes ensambladores. Si lo desea, puede «afinar» al máximo sus pro­ gramas para lograr la mayor eficiencia. GASTOS DE El C es un lenguaje “amistoso”. Es lo suficientemente estructurado para INSTALACION: ejercer buenos hábitos de programación, pero en ningún caso le encorseta 10.000 pts. en un mare mágnum de restricciones. BASIC Podríamos citar más virtudes y, sin duda, algunos defectos. En lugar de GASTOS DE profundizar más en el asunto, vayamos a la siguiente pregunta. INSTALACION: 100.000 pts Pascal GASTOS DE INSTALACION: 50.000 pts. ¿a donde va? El C es ya el lenguaje predominante en el mundo de los miniordenadores de sistemas UNIX; actualmente, se está extendiendo a los ordenadores per­ sonales. Muchas compañías de software están utilizando C con preferencia Programas reducidos Transportable a otros lenguajes en sus programas: procesado de textos, hojas electrónicas, código compacto a otros ordenadores compiladores, etc. Estas compañías saben que el C produce programas com­ pactos y eficientes, y, lo que es más importante, saben también que estos pro­ Figura 1.1 gramas son fáciles de modificar y de adaptar a nuevos modelos de ordenadores. Virtudes del C JUEGOS DE grama C. Si, por el contrario, su formación informática se basa en un lenguaje “intérprete”, como BASIC o LOGO, o si carece por completo de formación ORDENADOR SISTEMA en ningún lenguaje, encontrará el proceso un poco extraño al principio. Afor­ EL RETORNO OPERATIVO tunadamente, estamos aquí para guiarle a lo largo del mismo, y se dará cuenta DEL JEDI UNIX de que, en realidad, es bastante directo y lógico. Daremos, en primer lugar, un repaso rápido del proceso. En síntesis, lo que debe hacer desde el momento que comienza a escribir el programa hasta ejecutarlo es: LENGUAJE 1-. Utilizar un “editor” para escribir el programa C. MICROORDE MINIORDENADORES 2. Enviar el programa a su amigo el compilador. Este comprobará si su NADORES programa tiene algún error, y, en su caso, se lo hará saber. En caso contrario, el compilador acometerá la tarea de traducir el programa al lenguaje interno de su ordenador, y colocará la traducción en un Paquetes de nuevo fichero. LENGUAJES 3. A continuación, ya puede ejecutar el programa tecleando el nombre SOFTWARE ORDENADOR de este nuevo fichero. PROGRAMAS En algunos sistemas, la segunda etapa puede estar subdividida, a su vez, DE GESTION en dos o tres subetapas, pero la idea sigue siendo la misma. A continuación daremos una batida más profunda de cada una de las etapas Figura 1.2. apuntadas arriba. El C se usa para... Otro factor que contribuye a la diseminación del C hacia el mundo de Uso de un editor para la preparación del programa los ordenadores personales es la actitud de los usuarios de C UNIX, que de­ A diferencia del BASIC, el C no posee su propio editor. En su lugar, uti­ sean poder llevar a casa sus programas C. Actualmente existen ya varios com­ lice un editor de propósito general que esté disponible en su sistema. En un piladores C que les permiten hacerlo. sistema UNIX, por ejemplo, podría ser ed, ex, edit, emacs o vi. En un siste.- Pensamos que lo que es bueno para las compañías y para los veteranos ma de ordenador personal, puede ser ed, edling, Wordstar, Volkswriter o cual­ del C debe serlo también para otros usuarios. Hay cada vez más programa- quier otro de entre los muchos que existen. dores que utilizan C simplemente para aprovechar sus ventajas. No hay que Con algunos de estos editores, tendrá que especificar una opción particu­ ser un profesional de los ordenadores para utilizarlo. lar. Por ejemplo, si utiliza Wordstar, deberá usar la opción N, opción de “no En resumen, el C está destinado a ser uno de los lenguajes más importan­ documento”. tes de esta década y de los años noventa. Se utiliza en miniordenadores y en Las dos misiones principales que tiene a su cargo son: teclear el programa ordenadores personales. Lo usan compañías de software, estudiantes de in­ correctamente y escoger un nombre para el fichero en que almacene dicho formática y entusiastas de todas clases. Por cierto, si desea buscar un trabajo programa. Las reglas que se siguen para este nombre son muy simples: debe escribiendo software, una de las primeras preguntas a las que deberá respon­ ser un nombre permitido en su sistema y debe terminar con .c. He aquí dos der “sí” es: “¿De manera que sabe usted C?” ejemplos. ordena.c c suma.c El C es un lenguaje “compilado”. Si no le suena esta palabra, no se preo­ Escoja la primera parte del nombre de manera que le recuerde lo que ha­ cupe; vamos a explicarle lo que significa conforme vayamos describiendo las ce el programa. La segunda parte (.c) identifica el fichero como programa C. etapas necesarias para producir un programa C. En el mundo mágico de los ordenadores, la parte del nombre que va seguida Si es usuario de un lenguaje compilado como PASCAL o FORTRAN, de un punto se denomina una “extensión”. Se utilizan las extensiones para encontrará familiares las etapas básicas necesarias para echar a andar un pro­ informar al ordenador (y a usted mismo) sobre la naturaleza del fichero. 19

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.