000 16871nam a22001577a 4500
999 _c110
_d110
020 _a84-481-2895-8
082 _a001.6424
_bS24m
100 _aHerbert Schildt
245 _aManual De Referencia
250 _a4 Edición
260 _aAravaca, Madrid
_bMcGraw Hill
_c2000
300 _a709 p.
505 _aINDICE Prefacio XXV Primera parte: El lenguaje C original 1. Introducción el lenguaje C Orígenes del lenguaje C 3 C es un lenguaje de nivel medio 4 C es un lenguaje estructurado 5 C es un lenguaje para programadores 7 Compiladores frente a interpretes 8 Forma de un programa en C 9 La biblioteca y el enlace 10 Compilación separada Compilación de un programa en C Mapa de memoria en C 12 C frente a C++ 13 Un repaso de términos 14 2. Expresiones Los tipos de datos básicos 15 Modificación de los tipos básicos 16 Nombres de identificadores Variables 18 Donde se declaran las variables Variables locales 19 Parámetros formales 22 Variables globales 23 Los cuatro ámbitos de C 24 Cualificadotes de acceso Const 25 Volatile 26 Especificadotes de clase de almacenamiento Extern 27 Variables estáticas 29 Inicializadotes de variables 32 Constantes 33 Constantes hexadecimales y octales Constantes de cadena Constantes de carácter con barra invertida 35 Operadores El operador de asignación 36 Operadores aritméticos 39 Los operadores de incremento 40 Operadores relacionales y lógicos 41 Operadores a nivel de bits 44 El operador? 47 Los operadores de punteros & y * 48 El operador de tiempo de compilación sizeof La coma como operador 50 Los operadores punto(.) y flecha( ->) Los operadores [] y () 51 Resumen de precedencias Expresiones Orden de evaluación 52 Conversiones de tipos en las expresiones 53 Moldes 54 Espaciado y paréntesis 55 3. Instrucciones 57 Verdadero y falso en C Instrucciones de selección If 58 Ifs anidados 59 La escala if-else -if 60 La alternativa? 62 La expression condicional 64 Switch 65 Instrucciones switch anidadas Instrucciones de iteración El bucle for 68 Variaciones del bucle for 70 El bucle infinito 73 Los bucles for sin cuerpo 74 Declaración de variables dentro de un bucle for El bucle while 75 El bucle do -while 77 Instrucciones de salto 78 La instrucción return La instrucción goto 79 La instrucción break 80 La función exit() 81 La instrucción continue 82 Instrucciones de expresión Instrucciones de bloque 84 4. Arrays y cadenas Arrays unidimensionales 85 Generación de un puntero a un array Paso de arrays unidimensionales a funciones 87 Cadenas 89 Arrays bidimensionales 90 Arrays de cadenas 94 Arrays multidimensionales 95 Indexación de punteros 96 Inicialización de arrays 98 Inicialización de arrays no delimitados 100 Arrays de longitud variable 101 Un ejemplo de tres en raya 102 5. Punteros ¿Qué son los punteros? 105 Variables puntero 106 Los operadores de punteros Expresiones de punteros Asignaciones de punteros 107 Conversiones de punteros 108 Aritméticas de punteros 110 Comparación de punteros 111 Punteros y arrays 113 Arrays de punteros 114 Indirección múltiple 115 Inicialización de punteros 116 Punteros a funciones 119 Funciones de asignación dinámica de C 122 Arrays asignados dinámicamente 124 Punteros cualificados como restringidos Problemas con punteros 127 6. Funciones Forma general de una función 131 El ámbito de una función Argumentos de funciones 132 Llamada por valor, llamada por referencia 133 Creación de una llamada por referencia 134 Llamada a funciones con arrays 135 Argc y argv; los argumentos de main() 138 La instrucción return Vuelta de una función 141 Valores devueltos 142 Devolución de punteros 144 Funciones de tipo void 145 Lo que devuelve main() Recursión 146 Prototipos de funciones 148 Declaraciones de funciones a la antigua usanza 150 Prototipos de funciones de la biblioteca estándar Declaraciones de listas de parámetros de longitud variable 151 La regla de int por defecto 152 Declaraciones de parámetros de funciones clásicas frente a las modernas 153 La palabra clave inline 154 7. Estructuras, uniones, enumeraciones y typedef Estructuras 155 Acceso a los miembros de un estructura 157 Asignaciones de estructuras 158 Arrays de estructuras Un ejemplo de una lista de correos 159 Paso de estructuras a funciones 165 Paso de miembros de estructuras a funciones Paso de estructuras completas a funciones 166 Punteros de estructuras 168 Declaración de u puntero a una estructura Uso de punteros a estructuras Arrays y estructuras dentro de estructuras 171 Uniones 172 Campo de bits 175 Enumeraciones 177 Una diferencia importante entre C y C++ 179 Uso de sizeof para asegurar la portabilidad 180 Typedef 181 8. E/S por consola 183 Escritura y lectura de caracteres 184 Un problema con getchar() Alternativas a getchar() 185 Lectura y escritura de cadenas 186 E/S por consola con formato Printf() 189 Impresión de caracteres Impresión de números 190 Impresión de una dirección El especificador %n 192 Modificador de formato El especificador de longitud minima de campo 193 El especificador de precisión 194 Ajuste de salida 195 Manejo de otros tipos de datos Los modificadores * y # 196 Scanf() 197 Especificadotes de formato Lectura de números 198 Lectura de enteros sin signo Lectura de caracteres individuales con scanf() Lectura de cadenas 199 Lectura de una dirección El especificador %n Uso de un juego de inspección 200 Descarte de espacios en blanco no deseados 201 Caracteres que no son de espacio en blanco en la cadena de control 202 Se deben pasar direcciones a scanf() Modificadores de formato 202 Eliminación de entradas 203 9.E/S por archivos E/S por archivos de C frente a la C++ E/S del estándar de C frente a la de Unix 205 Secuencias y archivos Secuencias 206 Archivos 207 Elementos básicos del sistema de archivos El puntero a archivo 208 Apertura de un archivo 209 Cierre de un archivo 210 Escritura de un carácter Lectura de un carácter 211 Uso de fopen(),getc(),putc() y fclose() 212 Uso de feot() 213 Trabajo con cadenas: fpust() y fgets() Rewind 215 Ferror() 216 Eliminación de archivo 218 Volcado de una secuencia Fread() y fwrite() Uso de Fread() y fwrite() 219 Fseek() y E/S de acceso directo 226 Fprintf() y fsacnf() 227 Las secuencias estándar 228 Conexión entre la consola y al E/S 230 Uso de freopen() para redimir las decencias estándar 231 10. El preprocesador y los comentarios El preprocesador # Define 233 Definición de macros tipo función 235 # Error # Include 236 Directivas de compilación condicional # If, # else, # elif y # endif 237 # Indef. Y # ifndef 240 # Undef Usos de defined 241 # Line # Pragma 242 Los operadores del procesador # y # # 243 Nombres de macros predefinidos Comentarios 244 Comentarios de una sola línea 245 Segunda parte El estándar C99 11. C99 C89 frente a C99: una introducción 299 Características añadidas 250 Características eliminadas Características modificadas Punteros cualificados como restringidos 251 Inline 252 Nuevos tipos de daros incorporados _Bool 253 _Complex e_ Imaginary Los tipos enteros de Long Long Mejorar sobre los arrays Arrays de longitud variable 254 Uso de calificadores de tipo en la declaración de un array 255 Comentarios de una sola línea Intercalación de códigos y declaraciones 256 Cambios en el preprocesador Listas variables de argumentos 257 El operador _Pragma Pragmas incorporados Marcos adicionales 258 Declaración de variables dentro de un bucle for 259 Literales compuestos Miembros de estructuras como arrays flexibles 20 Inicializadores designados 261 Incorporaciones en la familia de funciones printf() y scanf() Nuevas bibliotecas en C99 262 El identificador predefinido_ _ func _ _ Aumento de los limites para la traducción 263 El entero por defecto ya no se aplica 264 Eliminación de las declaraciones implícitas de funciones Restricciones sobre return Tipos enteros adicionales 265 Cambios en la regla de promoción de enteros 266 Tercera parte La biblioteca estándar de C 12. Enlace, bibliotecas y cabeceras El enlazador Compilación separada 269 Código reubicable frente a código absoluto 270 Enlace con solapamientos 271 Enlace con DLL La biblioteca estándar de C Archivos de biblioteca frente a archivos objeto 272 Cabeceras Macros en las cabeceras 273 Redefinición de funciones de la biblioteca 275 13. Funciones de E/S 277 Clearerr 278 Fclose 279 Feof Ferror 280 Fflush 281 Fgetc 282 Fgetpos Fgets 283 Fopen 284 Fprintf 286 Fputc 287 Fputs Fread 288 Freopen 289 Fscanf Fseek 291 Fsetpos 292 Ftell 293 Fwrite Getc 294 Getchar 295 Gets 296 Perror 297 Printf 298 Modificadores de formato para Printf() añadidos por C99 300 Putc 301 Putchar Puts 302 Remove Rename 303 Rewind 304 Scanf 305 Modificadores de formato para Scanf()añadidos por C99 308 Setbuf 309 Setybuf Snprintf 310 Sprintf Sscanf 311 Tmpfile 312 Tmpnam 313 Ungetc Vprintf, vfprintf, vsprintf y vsnprintf 314 Vscanf, vfscanf y vsscanf 316 14. Funciones de cadenas y caracteres 317 Isalnum Isalpha 318 Isblank 319 Iscntrl Isdigit 320 Isgraph 321 Islower Isprint 322 Ispunct 323 Isspace 324 Isupper Isxdigit 325 Memchr 326 Memcmp 327 Memcpy Memmove 328 Memset 329 Strcat Strchr 330 Strcmp 331 Strcoll Strcpy 332 Strcspn 333 Strerror Strlen Strncat 334 Strncmp 335 Strncpy 336 Strpbrk 33 7 Strchr Strspn 33 8 Strstr Strtok 339 Strxfrm 340 Tolower Toupper 341 15. Funciones matemáticas 343 Acos 345 Acosh Asin 346 Asinh Atan 347 Atanh Atan2 348 Cbrt Ceil 349 Copysing Cos 350 Cosh 351 Erf Erfc Exp 352 Exp2 Expm1 353 Fabs Fdim Floor 354 Fma Fmax 355 Fmi n Fmod 356 Frexp Hypot Ilogb 357 Ldexp Lgamma 358 Llrint Llround 359 Log Log1p 360 Log10 Log2 361 Logb Lrint Lround 362 Modf Nam 363 Nerabyint Nextafter Nexttoward 364 Pow 365 Remainder Renquo Rint 366 Round Scalbln Scalbn 367 Sin 36 8 Sinh Sqrt 369 Tan Tanh 370 Tgamma Trunc 371 16. Funciones de hora,. Fecha y localización 373 Asctime Clock 374 Ctime 375 Difftime Gntime 376 Localeconv 377 Localtime 379 Mktime 380 Setlocale 381 Strftime 382 Time 384 17. Funciones de asignación dinámica Calloc 387 Free 388 Malloc 389 Realloc 390 18. Funciones de utilidad Abort 393 Abs 394 Assert Atexit 395 Atof 396 Atoi 397 Atol Atoll 398 Bsearch 399 Div 400 Exit 401 _ Exit Getenv 402 Labs Llabs Ldiv 403 Lldiv 404 Longjmp 405 Mblen Mbstowcs 406 Mbtowc Qsort 407 Raise Rand 409 Setjmp Signal 410 Srand 411 Strtod 412 Strtof Strtol 413 Strold 414 Strtoll Strtoul 415 Strtoull 416 System Va_arg, va_copy, va_end y va_star 417 Wcstombs Wctomb 419 19. Funciones de caracteres ampliados 421 Funciones de clasificación caracteres ampliados 422 Funciones de E/S caracteres ampliados 423 Funciones de cadenas caracteres ampliados 425 Funciones de conversión de cadenas caracteres ampliados 426 Funciones de Arrays caracteres ampliados Funciones de conversión entre caracteres ampliados y multibyte 427 20. Características de biblioteca añadidas por C99 La biblioteca para números complejos 429 La biblioteca de entorno de coma flotante 432 La cabecera <stdint.h> 434 Funciones de conversión de formato Macros matemáticas de tipo genérico 435 La cabecera <stbool.h> 437 Cuarta parte Algoritmos y aplicaciones 441 21. Ordenación y búsqueda Ordenación Clases de algoritmos de ordenación 442 Evaluación de los algoritmos de ordenación La ordenación por el método de la burbuja 443 Ordenación por selección 447 Ordenación por inserción 448 Ordenaciones mejoradas 449 La ordenación Shell 450 La ordenación rápida 451 Elección de una ordenación Ordenación de otras estructuras de datos 454 Ordenación de cadenas 455 Ordenación de estructuras 456 Ordenación de archivos de disco de acceso directo 458 Búsqueda Métodos de la búsqueda La búsqueda secuencial 461 La búsqueda binaria 462 22. Colas, pilas, listas enlazadas y árboles 463 Colas 464 La cola auricular 468 Pilas 471 Listas enlazadas 475 Listas simplemente enlazadas 476 Listas doblemente enlazadas 481 Un ejemplo de listas de coreo 485 Árboles binarios 490 23. Arrays dispersos ¿Para que se necesitan los arrays dispersos? 499 El array disperso por lista enlazada 500 Análisis del método de lista enlazada El método de árbol binario para arrays dispersos 504 Análisis del método del árbol binario El método de arrays de punteros para arrays dispersos 506 Análisis del método de array de punteros Técnicas hash 509 Análisis de técnicas hash 513 Elección de un método 514 24. Análisis y evaluación de expresiones 515 Expresiones 516 Disección de una expresión 517 Análisis de la expresión 520 Un sencillo analizador de expresiones 521 Incorporación de variables al analizador 526 Comprobación de sintaxis en un analizador recursivo descendente 534 25. Resolución de problemas con técnicas de IA 537 Representación y terminología 538 La explosión combinatoria 539 Técnicas de búsqueda Evaluación de una búsqueda 540 Una representación grafica 543 La búsqueda primero en profundidad 544 Análisis de la búsqueda primero en profundidad 553 La búsqueda primero en anchura 554 Análisis de la búsqueda primero en anchura Heurísticas 555 La búsqueda de escalada 557 Análisis del método de escalada Búsqueda de menor coste 563 Análisis de la búsqueda de menor coste Elección de una técnica de búsqueda 564 Búsqueda de múltiples soluciones 565 Eliminación de caminos 566 Eliminación de nodos 567 Búsqueda de la solución “optima” 572 De vuelta a las llaves perdidas 577 Quinta parte Desarrollo de software usando C 26. Una plantilla para Windows Visión general de la programación en Windows 2000 538 El modelo de escritorio El ratón 584 Iconos, mapas de bits y gráficos Menús, controles y cuadros de dialogo La interfaz de programación de aplicaciones Wind32 585 Componentes de una ventana 586 Interacción en Windows y el programa 587 Algunos conceptos básicos de las aplicaciones Wind32 WinMain() El procedimiento de ventana 588 Clases de ventanas El bucle de mensajes Tipos de datos de Windows2000 589 Una plantilla para Windows2000 590 Definición de la clase de ventana 593 Creación de la ventana 595 El bucle de mensajes 597 La función de ventana 598 El archivo de definición ya no es necesario 599 Convenios de denominación 600 27. Ingeniería del software con C Diseño descendente 601 Esbozo del programa 602 Elección de las estructuras de datos 603 Función a prueba de balas 604 Uso de MAKE 606 Uso de macros en MAKE 610 Uso de entorno integrado de desarrollo 611 28. Eficiencia, portabilidad y depuración Eficiencia 613 Los operadores de incremento y decremento Uso de variables y registros 614 Punteros frente a indexación de arrays 615 Uso de funciones 616 Portabilidad de programas 619 Uso de # define Dependencias con el sistema operativo 620 Diferencias en tamaños de los datos Depuración Errores en el orden de evaluación 621 Problemas con punteros 622 Interpretación de los errores de sintaxis 624 Errores de uno mas 625 Errores de limites 626 Omisiones de prototipos de funciones 627 Errores de argumentos 628 Desbordamiento de la pila Uso de un depurador Teoría general de la depuración 629 Sexta parte Un interprete de C 29. Un intérprete de C 633 Importancia práctica de los interpretes 634 Especificaciones de pequeño C 635 Algunas restricciones de pequeño C 636 Interpretación de un lenguaje estructurado Una teoría informal de C Expresiones de C 638 Evaluación de expresiones 640 El analizador de expresiones 641 Reducción del código fuente a sus componentes 642 El analizador recursivo descenderte de pequeño C 648 El interprete pequeño C El preanalizador del interprete 659 La función main() 662 La función interp_block() 663 Gestión de variables locales 677 Llamadas a funciones definidas por el usuario 678 Asignación de valores a variables 680 Ejecución de una instrucción if 682 Procesamiento de un bucle while 683 Procesamiento de un bucle do -while El bucle for 684 Funciones de biblioteca de pequeño C 685 Compilación y enlace del interprete de pequeño C 688 Prueba de pequeño C 689 Mejoras de pequeño C 692 Ampliación de pequeño C 693 Inclusión de nuevas características de C 693 Inclusión de auxiliares 694 Índice 695
866 _a2
942 _cBK