Herramientas de usuario

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
el_lenguaje_de_programacion_c [2024/09/27 22:44] peronel_lenguaje_de_programacion_c [2026/04/21 16:06] (actual) – editor externo 127.0.0.1
Línea 2: Línea 2:
  
 Este es un ejemplar amorosamente wikificado por ~peron de //El Lenguaje de Programación C//, 2da Edición, de B. Kerningham y D. Ritchie, adaptado para [[hacker|hackers]] del Tercer Mundo. Este es un ejemplar amorosamente wikificado por ~peron de //El Lenguaje de Programación C//, 2da Edición, de B. Kerningham y D. Ritchie, adaptado para [[hacker|hackers]] del Tercer Mundo.
 +
 +==== Prefacios ====
  
 [[El lenguaje de programación C - Prefacios|Prefacios]] [[El lenguaje de programación C - Prefacios|Prefacios]]
- 
- 
 ==== Capítulos ==== ==== Capítulos ====
  
 [[El lenguaje de programación C - Introducción|Introducción]] [[El lenguaje de programación C - Introducción|Introducción]]
  
-[[El lenguaje de Programación C - Capitulo 1|Capitulo 1]]+[[El lenguaje de Programación C - Capitulo 1|Capitulo 1: Introducción General]]
  
-[[El lenguaje de Programación C - Capitulo 2|Capítulo 2]]+[[El lenguaje de Programación C - Capitulo 2|Capítulo 2: Tipos, operadores y expresiones]]
  
-[[El lenguaje de Programación C - Capitulo 3|capitulo 3]]+[[El lenguaje de Programación C - Capitulo 3|capitulo 3: Control de Flujo]]
  
 [[El lenguaje de Programación C - Capitulo 4 |Capitulo 4]] [[El lenguaje de Programación C - Capitulo 4 |Capitulo 4]]
Línea 26: Línea 26:
 [[El lenguaje de Programación C - Capitulo 8 |Capitulo 8]] [[El lenguaje de Programación C - Capitulo 8 |Capitulo 8]]
  
 +==== Apéndices ====
  
 +[[El lenguaje de Programación C - Apéndice A|Apéndice A: Manual de Referencia]]
  
-===== Capitulo 5: Apuntadores y arreglos ===== +[[El lenguaje de Programación - Apéndice B|Apéndice B: Biblioteca Estándar]]
- +
-==== 5.1 Apuntadores y Direcciones ==== +
- +
-==== 5.2 Apuntadores y argumentos de funciones ==== +
- +
-==== 5.3 Apuntadores y arreglos ==== +
- +
-==== 5.4 Aritmética de direcciones ==== +
- +
-==== 5.5 Apuntadores a caracteres, y funciones ==== +
- +
-==== 5.6 Arreglos de apuntadores; apuntadores a apuntadores ==== +
- +
-==== 5.7 Arreglos muitidimensionales ==== +
- +
-==== 5.8 Inicialización de arreglos de apuntadores ==== +
- +
-==== 5.9 Apuntadores vs. arreglos muitidimensionales ==== +
- +
-==== 5.10 Argumentos en la línea de órdenes ==== +
- +
-==== 5.11 Apuntadores a funciones ==== +
- +
-==== 5.12 Declaraciones complicadas ==== +
- +
-===== Capítulo 6: Estructuras ===== +
- +
-Una estructura es una colección de una o más variables, de tipos posiblemente diferentes, agrupadas bajo un solo nombre para manejo conveniente. (Las es­tructuras se conocen como “ records” en algunos otros lenguajes, principalm ente Pascal.) Las estructuras ayudan a organizar datos complicados, en particular dentro de programas grandes, debido a que permiten que a un grupo de variables relacionadas se les trate como una unidad en lugar de como entidades separadas. +
- +
-Un ejemplo tradicional de estructura es el registro de una nómina: un emplea­do está descrito por un conjunto de atributos, como nombre, domicilio, número del seguro social, salario, etc. Algunos de estos atributos pueden, a su vez, ser estructuras: un nombre tiene varios componentes, como los tiene un domicilio y aún un salario. Otro ejemplo, más típico para C, procede de las gráficas: un pun­to es un par de coordenadas, un rectángulo es un par de puntos, y otros casos semejantes. +
- +
-El principal cambio realizado por el estándar ANSI es la definición de la asig­nación de estructuras: las estructuras se pueden copiar y asignar, pasar a funcio­nes y ser regresadas por funciones. Esto ha sido manejado por muchos compiladores durante varios años, pero las propiedades están ahora definidas en forma precisa. Las estructuras y los arreglos automáticos ahora también se pueden inicializar. +
- +
-==== 6.1 Conceptos básicos sobre estructuras ==== +
- +
-==== 6.2 Estructuras y funciones ==== +
- +
-==== 6.3 Arreglos de estructuras ==== +
- +
-==== 6.4 Apuntadores a estructuras ==== +
- +
-==== 6.5 Estructuras autorreferenciadas ==== +
- +
-==== 6.6 Búsqueda en tablas ==== +
- +
-==== 6.7 Typedef ==== +
- +
-==== 6.8 Uniones ==== +
- +
-==== 6.9 Campos de bits ==== +
- +
-===== Capítulo 7: ===== +
- +
-Las operaciones de entrada y salida no son en si parle del lenguaje C, por lo que hasta ahora no las hemos destacado. Sin embargo, los programas interactúan con su medio ambiente en formas mucho más complicadas de las que hemos mos­trado antes. En este capítulo describiremos la biblioteca estándar, un conjunto de funciones que proporcionan entrada y salida, manipulación de cadenas, mane­jo de memoria, rutinas matemáticas y una variedad de otros servicios para programas en C, aunque haremos hincapié en la entrada y salida. +
- +
-El estándar ANSI define de manera precisa estas funciones de biblioteca, de modo que pueden existir en forma compatible en cualquier sistema en donde exista C. Los programas que restringen su interacción con el sistema a las facili­dades provistas por la biblioteca estándar pueden ser llevados de un sistema a otro sin cambios. +
- +
-Las propiedades de las funciones de biblioteca están especificadas en más de una docena de //headers//; ya hemos visto algunos, incluyendo ''<stdio.h>'', ''<string.h>'' y ''<ctype.h>''. No presentaremos aquí la totalidad de la biblioteca, puesto que estamos más interesados en escribir programas en C que los usan. La biblioteca se describe en detalle en el [[#apéndice B]]. +
- +
-==== 7.1 Entrada y salida estándar ==== +
- +
-==== 7.2 Salida con formato - printf ==== +
- +
-== Tabla 7-1. Conversiones básicas de Printf == +
- +
-==== 7.3 Listas de argumentos de longitud variable ==== +
- +
-==== 7.4 Entrada con formato — scanf ==== +
- +
-== Tabla 7-2 - Conversiones básicas de scanf == +
- +
-^Caracter ^Dato de entrada:tipo de argumento ^ +
-|'''' | | +
-|'''' | | +
-|'''' | | +
-|'''' | | +
-|'''' | | +
-|'''' | | +
-|'''' | | +
-|'''' | | +
-|'''' | | +
- +
- +
-==== 7.5 Acceso a archivos ==== +
- +
-==== 7.6 Manejo de errores—stderr y exit ==== +
- +
-==== 7.7 Entrada y salida de líneas ==== +
- +
-==== 7.8 Otras funciones ==== +
- +
-La biblioteca estándar proporciona una amplia variedad de funciones. Esta sección es una breve sinopsis de las más útiles. En el [[#apendice b|apéndice B]] pueden encon­trarse más detalles y muchas otras funciones. +
- +
-=== 7.8.1 Operaciones sobre cadenas === +
- +
-=== 7.8.2 Prueba y conversión de clases de caracteres === +
- +
-=== 7.8.3 Ungete === +
- +
-=== 7.8.4 Ejecución de órdenes === +
- +
-=== 7.8.5 Administración del almacenamiento === +
- +
-=== 7.8.6 Funciones matemáticas === +
- +
- +
-=== 7.8.7 Generación de números aleatorios === +
- +
- +
-===== Capítulo 8: La interfaz con el sistem a UNIX ===== +
- +
-El sistema operativo UNIX proporciona sus servicios a través de un conjunto de //llamadas al sistema//, que consisten en funciones que están dentro del sistema operativo y que pueden ser invocadas por programas del usuario. Este capitulo describe cómo emplear algunas de las más importantes llamadas al sistema desde programas en C. Si el lector usa UNIX, esto debe serle directamente útil, debido a que algunas veces es necesario emplear llamadas al sistema para tener máxima eficiencia, o para tener acceso a alguna facilidad que no esté en la biblioteca. +
- +
-Incluso, si se emplea C en un sistema operativo diferente el lector debería ser ca­paz de adentrarse en la programación estudiando estos ejemplos; aunque los de­talles varían, se encontrará un código semejante en cualquier sistema. Puesto que la biblioteca de C ANSI está en muchos casos modelada con base en las facilida­des de UNIX , este código puede ayudar también a su entendimiento. +
- +
-El capítulo está dividido en tres partes fundamentales: entrad a/salida, sistema de archivos y asignación de almacenamiento. Las primeras dos partes suponen una  modesta familiaridad con las características externas de los sistemas UNIX. +
- +
-El capítulo 7 tuvo que ver con una interfaz de entrada/salida uniforme entre sistemas operativos. En cualquier sistema las rutinas de la biblioteca estándar se tienen que escribir en términos de las facilidades proporcionadas por el sistema anfitrión. En las secciones de este capítulo describiremos las llamadas al sistema UNIX para entrada y salida, y mostraremos cómo puede escribirse parte de la biblioteca estándar con ellas. +
- +
-==== 8.1 Descriptores de Archivos ==== +
- +
-==== 8.2 E/S de bajo nivel — read y write ==== +
- +
-==== 8.3 Open, creat, close, unlink ==== +
- +
-==== 8.4 Acceso aleatorio — lseek ==== +
- +
-==== 8.5 Ejemplo - Una realización de fopen y getc ==== +
- +
-==== 8.6 Ejemplo — listado de directorios ==== +
- +
-==== 8.7 Ejemplo - Asignador de memoria ==== +
- +
-===== Apéndice A: Manual de Referencia ===== +
- +
-=== A1: Introducción === +
- +
-Este manual describe al lenguaje C tal como se especifica en Draft Proposed American National Standard for Information Systems — Programming Language C, documento número X3J11/88-001, con fecha 11 de enero de 1988. Este borrador no es el estándar fi­nal, y todavía es posible que ocurran algunos cambios en el lenguaje. Así pues, este manual no describe la definición final del lenguaje. Más aún es una interpretación del borrador propuesto del estándar, no el estándar en sí, aunque se ha tenido cuidado de hacerlo una guía confiable. +
- +
-En su mayor parte, este manual sigue la línea amplia del borrador estándar, que a su vez sigue la de la primera edición de este libro, aunque la organización difiere en el detalle. Ex­cepto por renombrar algunas producciones y porque no se formalizan las definiciones de los componentes léxicos o del preprocesador, la gramática dada aquí para el lenguaje es equivalente a la del borrador actual.+
  
->En este manual, el material comentado se encuentra sangrado y escrito en un tipo más pequeño, como este. A menudo estos comentarios resaltan las formas en las que el estándar ansí de C difiere del lenguaje definido por la primera edición de este libro, o de refinamientos introducidos posteriormente en varios compiladores.+[[El lenguaje de Programación C - Apéndice C|Apéndice C: Resumen de Modificaciones]]
  
-===== Apéndice B: Biblioteca Estándar ===== 
  
-===== Apéndice C: Resúmen de Modificaciones ===== 
  
-Desde la publicación de la primera edición de este libro, la definición del lenguaje C ha sufrido modificaciones. Casi todas fueron extensiones al lenguaje original, y fueron di­señadas cuidadosamente para permanecer compatibles con la práctica existente; algunas repararon ambigüedades de la descripción original, y otras representan modificaciones de la práctica existente. Muchas de las nuevas características se anunciaron en los documentos que acompañan a los compiladores disponibles de AT&T, y posteriormente se han adopta­do por otros proveedores de compiladores del lenguaje C. Recientemente, el comité ANSI incorporó más de esos cambios estandarizando el lenguaje, y también introdujo otras mo­dificaciones significativas. Su reporte fue en parte anticipado por algunos compiladores comerciales aún antes de la publicación del estándar formal. 
  
-Este apéndice resume las diferencias entre el lenguaje definido por la primera edición de este libro, y lo esperado como la definición del estándar final. Trata solamente al len­guaje en sí, no a su entorno ni a su biblioteca; aunque esas son partes importantes del estándar, hay poco con qué compararlas, puesto que en la primera edición no se intentó definirlas. 
  
-  * El preprocesamiento está definido más cuidadosamente en el Estándar que en la primera edición, y está extendido: está explícitamete basado en tokens (símbolos); existen nuevos operadores para la concatenación de tokens (# # ) y creación de cadenas (#); hay nuévas líneas de control como #elif y #pragm a; está explícitamente permitida la redeclaración de macros por la misma secuencia de tokens; ya no se reemplazan los parámetros que están dentro de cadenas. La separación de líneas por \ está permitida en cualquier lugar, no sólo en definiciones de cadenas y macros. Véase §A12. 
-  * El significado mínimo el más pequeño de todos los identificadores internos se incre­mentó a 31 caracteres; permitido para identificadores con liga externo permanece en 6 letras, sin importar sin son mayúsculas o minúsculas (muchas implantaciones propor­cionan más). 
-  * Las secuencias trigráficas introducidas por ?? permiten la representación de caracteres que no se encuentran en algunos conjuntos. Están definidos los escapes para ''#'' ''\'' '[' '']'' ''{'' ''}'' ''¡'' ''<nowiki>\</nowiki>''. Véase §A12.1. Obsérvese que la introducción de trigrafos puede cambiar el significado 
-de cadenas que contengan la secuencia ''??''. 
-  * Se introdujeron nuevas palabras reservadas (void, const, volatile, signed. enum). La palabra reservada entry, que nunca se puso en uso, fue retirada. 
-  * Se definen nuevas secuencias de escape para uso dentro de constantes de carácter y ca­denas literales. El efecto de seguir ''<nowiki>\</nowiki>'' con un carácter que no sea parte de una secuenciade escape aprobada está indefinido. Véase §A2.5.2. 

Este sitio web utiliza cookies para guardar datos esenciales de su actividad, como su autenticación. Al entrar acepta el uso de cookies.

Más información