Sunteți pe pagina 1din 1088
a OCR ER bg ee 56 59 5.10 51 5.12 61 62 Contenido Introduccién a las clases y los objetos Introduccién (Clases, objets, funciones miembro y miembros de datos, Generalidades acerca de los ejemplos del capitulo Definicién de una clase con una funcién miembro Definicién de una funcién miembro con un parimetro ‘Miembros de datos, funciones establecer y funciones obtener Inicializcién de objetos mediante constructores, Colocar una clase en um archivo sepatado para fines de reutlizacién Separar la interfax de la implementacién, Validaciin de datos mediante funciones establecer (Opcional) Ejemplo prictico de Ingenieria de Software: dentificacién de ls clases en la especificacién dle requerimientos del ATM Repaso Instrucciones de control: parte | Tnroduceién| Algorienos Seudocédigo Estructuras de control Instruccién de sleecin if Instruccin de slecciin doble if. Tastruccién de sepeticin whiTe Céano forrnular algoritmos:repeicién controlada por un contador (mo formular algoritmos:repeticién controlada por un centnela imo formular algoritmos:instrueciones de contol anidadas Operadores de asignacin Operadores de incremento y decremento (Opcional) Ejemplo prictico de Ingenieria de Softwar: identificacion de lo atributos dela clases en el sistema ATM Repaso Instrucciones de control: parte 2 Introduecién Fundamentos de la repeticién controlada por contador Tnsruccién de repeticidn for jemplos acerca del uso de la instruccién for Tnscruccién de repercidn do. while Instrucci6n de seleceién miltiple switch Instrucciones break y continue Operadores I ‘Confusin entre los operadores de igualdad (a=) y de asignacin (=) Resumen sobre programacién estructurada (Opcional) Ejemplo prictico de Ingenieria de Software: cémo identilicar los estados y act de los objetos en el sistema ATM. Repaso Funciones y una introduccién a la recursividad Inuoduccin ‘Componentes de los programas en C++ Funciones mateméticas de la biblioteca 67 68 68 oy 70 2 75 81 84 a7 93 7 102 109 10 110 i 112 15 116 120 121 126 135 139 139 142 146 159 160 160 162 165 169 171 179 180 134 185 189 193 203 204 205, 206 Contenido Prefacio Antes de empezar 1 12 13 14 1s. 16 ie 18 19 110 1 112 113 14 145 16 Li7 Lig. 119 120 121 1.22 1.23 21 22 23, 24 a 26 28 29 Introduccion a las computadoras, Internet y World Wide Web Tneroduccién Qué es una computadora? Organizacién de una computador os primeros sistemas operativos Computacisn personal, dstibuida y clientelservider Intemer y World Wiee Web Web 2.0 Lenguajes maquina, lenguajes ensambladores y lenguajes de alto nivel Historia de Cy Cr+ Biblioteca estindar de C++ Historia de Java FORTRAN, COBOL, Pascal y Ada BASIC, Visual Basie, Visual C+, C# y NET “Tendencia clave de software: la tecnologia de los objetos Entorno de desarrollo tipico en C++ Generalidades acerca de Ces y exe libro Prucba de una aplicacion en C++ Tecnologias de software Progeamacién de juegos con las bibliotecas Ogre Futuro de C++: Bibliotecas Boost de e6digo fuente abi Bjemplo préctico de Ingenieria de Software: intro Repaso Recursos Web t0, TRI y C+40x Introduccién a la programacién en C++ Inroduecién Sa primer programa en Cs: imprimir una linea de texto Modificacién de nuestro primer programa en C++ Ouzo programa en Cre: sma de enteros Conceptos acerea de la memoria Aviernética ‘Toma de decisiones: operadores de igualdad y relacionales (Opcional) Ejemplo prictico de Ingenieria de Sofware: como examina la expecficaciin de requetimientos del ATM Repaso xxxIX, Alas vitinas de la tragedia de Virginia Tech, cu familias me anitory a ted la conatnided de Virginia Tech. Porly Harvey Deitel ‘Dios de catlogacén bb hogriicn DDEITE, HARVEY. PAUL}. DERE (Cémo programas en Cr+. Sets edisin PEARSON EDUCACION, Mésico 2009 ISBN: 978-97026-12735, Arex: Computacin Formato: 20 X 255 ¢m Piginas: 112 Auhorzed tanto frm che Es by Peas Education, Inc, publ ISBN 0136152505, uh anguge edition, enka C+ How progam, edi by Det 8 Avocates (Harvey & Pal) published Pence Hall Copyright ©2008, Al igh reserved Tiaducin autora de lec en oma inglés ilada Cr+ lw program, @ edn, por Deel & Aso Reason Educaton, Inc, publiada como Prenice Hal, Copyright © 2008, Tos los derecho sera es (Harvey & Pau), publcada por xa edison spt Ia nica atovizad, dca ex expat Elie: Laie Miguel Cx Casill ‘mal s.cunepeasoned com dio de deal Bernanlino Gare Heaninder Supervisor de producedn: Juan Jot Garca Guzméa lin en inglés ‘Vice Pesident and Edigorl Diner, ECS: Marcia. Horton ‘Associate Editor Carole Sayder SuperseEderal Asian Doles Mars Dincor of Team-Based Project Management Vince O'Bien Sor Managing Bion: Scott Dianne Managing Editor Bob Engetharde Production Edin: Mare Samed AY Production Edor: Greg Dalles ‘Are Saati: Areworks, York PA ‘Are Dies: Keating Carey Cover Design: Abbey S. Datel, Harvey M. Deitel, Franceic Santalaca Kristine Carey Ietioe Design: Harvey M, Dekel, Keine Caney “Manuficuing Manager: Alexis Hed Long ‘Manufsctarng Buyer: Liss McDowell Dinecor of Making: Margare Waples SEXTA EDICION, 2009 D.R.© 2008 por Fearon Educa de Misco, SA de CX, “Aulacomeo 500-50. piso Gol Indust Ato 58519, Naualpn de Jute, stad de México (Cimara Nacional de andra Editon Meacans. Reg. nim 103, Premice Hills una maea rst de eaion Educa de México, S.A. de CV. eserads dos lon derechos, Ns oad i prtede esta publican pueden epoca o transmit, porunsiemaderecupetacén 4 nformacién, en ning forma ni por ningn medio, ea electdnic, mec, otogulmice, magnéio o cketzapdco, por fxocopi,pabacon cuir oo, sin permis previo por ect dl ein pesto, agile o cualquier ota forma de csi de uso de ee ejemplar rues también a autrizain del eivor odes representantes. ISBN 10: 970-26:1273.x ISBN 13: 978-970-26-12735 Inmpreso en Méscn, Printed in Mexico, 1234567890-11 100908 PEARSON Educacién — Sexta edicién - +4 COMO PROGRAMAR. Harvey M. Deitel Deitel & Associates, Inc. Paul J. Deitel Deitel & Associates, Inc. TRADUCCION Alfonso Vidal Romero Elizondo Ingeniero en Electrénica y Comunicactén Insitato Tecnoliico y de Extudios Superiores de Monterrey ‘Campus Monterrey REVISION TECNICA ‘Jestis Mufioz Bauza Departamento de Computacion Division de Ingenieria y Arquitectara Teenolégico de Monterrey Campus Ciudad de México Sergio Fuenlabrada Velzquez Oskar A. Gémez C. Edna M. Miranda Ch. Mario Oviedo G. Adalberto Robles V. Mario A. Sesma M. Departamento de Compuacion Unidad Profesional Iterdsciplinara de Ingenieria > Ciencias Sociales y Administratvas Instat Poltéenico Nacional aUeon Educacion iz México + Argentina + Brasil + Colombia * Costa Rica * Chile » Eeusdor Espait + Guatemala » Panama «Pert» Puerto Rico * Uruguay *Venezucla Contenido 64 —_Definciones de funciones con varios pardmetros 207 6.5 Prototipos de funciones y coercin de argumentos 21 6.6 Archivos de encabezado de la Biblioteca extindar de C++ 213 6.7 Ejemplo prictico: generacién de mimeros acatorios 215 68 Fjemplo prictco: juego de probabilidad, introduccién alas enumeraciones 220 69 Clases de almacenamiento 223 6.10 Reghas de aleance 235 6.11 _Lapilade lamadas a funciones y los regstros de actvacién 228 6.12 Fanciones con lista de parimetros vacias Bi 6.13 Funciones en linea 232 6.14 Referencias y parimetrs de referencias 233 6.15 Argumentos predeterminados 237 6.16 Operador de tesolucién de Smbito unatio 239 6.17 _Sobrecarga de funciones 240 6.18 Plantillas de funciones 243 6.19 Recusividad 245 6.20 Ejemplo sobre el uso de a recursividad: serie de Fibonacci 247 621 Comparacion entre recucsvidad e iteracin 250 6.22 _(Opcional) Ejemplo prictco de Ingenieria de Software: idenificacin de as operaciones de ls clases en l sistema ATM 253 6.23 Repaso 258 7 Arreglos y vectores 277 7.1 Incroduccién 278 72 Arrglos 279 73. Declaracién y creacién de areglos 280 7.4 Bjemplos acerca del uso de los arreglos 280 74.1 Declaracién de un arteglo y uso de un ciclo para inicializar los elementos del arreglo 281 7.4.2 Iniilizacién de un arreglo en una declaracién mediante una lista inicialiadora 281 7.4.3 Especificacién del tamafo de un arrelo con una variable constantey cstablecimicno de los elementos de un arreglo con cileulos 283 7.44 Suma de los elementos de un arzeglo 285 7.45. Uso de gréficos de barra para mostrar los datos de un arreglo en forma grifica 286 7.46 Uso delos elementos de un arreglo como contadores 287 7.47 Uso de arteglos para sinteiza los resultados de una encuesta 288 74.8 Uso de aregls tipo caricter para almacenat y manipular eadenas 291 7.4.9 Arreglos locales eséticos y arteglos locales automaticos 292 7.5 Paso de azeglo a funciones 294 7.6 Ejemplo prictico: la clase LibroCa1/ficaciones que usa un arreglo para almacenar has alificaciones 298 7.7 Bisqueda de datos en arrglos mediante la bisqueda lineal 304 7.8 Oxdenamiento de artegios mediante el ordenamiento por insercién 305 7.9 Arcegios multidimensionales 307 7.10 Ejemplo prictico: la clase LibroCatificactones que usa un arreglo bidimensional 310 7.11 Introduccién a la plantilla de clase vector de la Biblioteca extindar de C+ 316 7.12 (Opcional) Ejemplo préctico de Ingenieria de Software: colaboracién entc los objetos en el sistema ATM 320 7.13 Repaso 326 8 Apuntadores y cadenas basadas en apuntadores 341 8.1 Introduccién 342 8.2 Declaraciones einicilizacion de variables apuntadores 342 8.3 Operadores de apuntadores 343 84 Paso de argumentos a funciones por referencia mediante apuntadores 346 85 86 87 88 89 8.10 all a2 813, ald 9a 92 93 94 95 96 97 98 99 9.10 9.1 92 10 10.1 102 103, 104 105 106 10.7 108 109 10.10 10.11 i Ma 2 113; 4 15, 16 Contenido Uso de const con apuntadores (Ordenamiento por selecci6n mediante el uso del paso por referencia Operador sizeof Exprsiones y aritmética de apuntadores Relacin entre apuntadoresy areglos Artegls de apuntadores Ejemplo pritico:simulacién para haraary cepa arts Apuntadores a funciones Introduccin al procesamiento de cadenas basadas en apuntador Repaso Clases: un anilisis mas detallado, parte! Ineroduccién Ejemplo prictico con la clase Tiempo Aleance de las clases y acceso alos miembros de una clase Separar la incerfaz de la implementacién Funciones de acceso funciones utltarias Ejemplo prictico de la clase Tiempo: constructores con argumentos predeterminados Descructores Cusindo se hacen llamadas alos constrctoresy destructores jemplo prictico con la clase Tiempo: una trampa suri (devolver una referencia a un miembro de datos private) Asignacién predeterminada a nivel de miembros (Opcional) Ejemplo prictico de Ingenieria de Software: inicio dela programacién de las clases del sistema ATM Repaso Clases: un anilisis mas detallado, parte 2 Introduecién Objetos const (constantes) y funciones miembro const ‘Composicién: objetos como miembros de clases Funciones friend y lass friend Uso del spuntador this Administraci6n dinimica de memoria con los operadores new y delete Miembros de case static Abscraccién de datos y ocultamiento de informactén 10.8.1 Ejemplo: tipo de datos abstract arrglo 10.8.2 Ejemplo: tipo de datos abseracto cadena 10.8.3 Ejemplo: tipo de datos abstracto cola Clases contenedoras eiteradores (Clases proxy Repaso Sobrecarga de operadores: objetos String y Array Incroduccién Fundamentos de la sobrecarga de operadores Restricciones acerca de la sobrecarga de operadores Las funciones de operadores como clase miembro vs. funcionesglobales Sobrecarga de los operadores de insercin de flujo y extaccién de Flujo Sobrecarga de operadores unarios 349 355 358 360 362 367 372 376 384 407 408 409 414 416 416 419 423, 424 az 29 431 87 443 444 “a 452 458 461 466 467 72 a3 a a4 a4 475 477 483 484 485, 485, 487 488 491 nz 118 ng 11.10 nat naz 11413 nad nas 12 12 122 123 124 125 126 127 128 13 Ba 132 133 134 BS B6 137 138 139 13.10 Bal Contenido Sobrecarga de operadores binatios Ejemplo préctico: la clase Array Conversén entre tipos Ejemplo préetico: la case String Sobrecarga de ++ y—~ Fjemplo préctco: una clase Fecha La dase string de la Biblioteca estindar Constructores explicit Repaso Programacién orientada a objetos: heren Introduceién Clases base y clases derivadas Miembros protected Relacién entre las clases base y las clases derivadas 12.4.1 Creacién y uso de una clase EmpleadoPorConi sion 124.2 Creacién de una clase EapleadoBaseMasComi sion sin usar la herencia 12.4.3. Creacién de tna jerarqufa de herencia EmpleadoPorComision-Empleado-BaselasComi sion 1244 La jerarquia de hetencia Exp1eadoPorComis ion-Enp]eadoBaseMasComi sion mediante el uso de datos protected 124.5 La jerarquia de herencia Empl eadoPorComision-EnpleadoBaseMasComi sion mediante el uso de datos private ‘Los constructores y destructores en las clases derivadas Herencia public, protected y private Ingenierta de software mediante la herencia Repaso Programacién orientada a objetos: polimorfismo Introduccion Ejemplos de polimorfismo Relaciones entre los objetos en una jerarquia de herencia 13.3.1 Invocacién de funciones de la clase base desde objetos de una clase devivada 133.2 Cémo orienta los apuntadores de una clase derivada a objec de a clase base 13.33. Llamadas a funciones micmbro de una clase derivada a aavés de apuntadores de la clase base 13.34 Funciones viules 133.5 _ Resumen dela aignaciones permitidas entre objets y apuntadores de la case base y dela clase derivada Tipos de campos ¢instrucciones switch Clase abscractasy funciones virtual puras Ejemplo prictco: sistema de némina mediante el uso de polimorfismo 13.6.1 Creacién de la clase base abstracta Empleado 13.62 Creacién de la clase derivada concreta Empleadoasalariado 13.6.3 Creacién de la clase derivada concreta EmpleadoPorHoras 13.64 Creacién de la clase derivada concreta EnpleadoPorConi sion 13.65. Creacién de la clase derivada concretaindiecta EmpleadoBaseMasCom’ sion 13.6.6 Demostracién del procesamiento polimérfico (Opcional Polimorfismo, Funcionesvirtuales y vinculacién dindmica“detris de as cimaras” Ejemplo préctico: sistema de némina mediante el uso de polimorfismo e informacin de tipos en tiempo de ejecucidn con conversin descendente, dynanic_cast, typeid y type_info Destructores vireuales (Opcional) Bjemplo prictco de Ingenieria de Software: incorporacién de a herencia en el sistema ATM Repaso 491 492 502 502 313 514 518 521 524 535 536 537 539 539 544 549 53 559 566 573 373, 574 579 580 581 582. 583, 589 590 591 596 597 597 599 600. 603, 605 607 608. 610 oa 67 20 620 ar 4 14 42 143, 144 145 146 47 48 49 15 15. 152 153 154 155 136 157 158 15.9 15.10 16 16.1 16.2 163 16.4 165 166 167 168 169) Contenido Plantillas Incroduccién. Planuillas de funciones Sobrecarga de plancillas de funciones Planuillas de clases Parmetros sn tipo y tipos predeterminados para las plantillas de clases [Notas acerea de las plantillas y la herencia Notas acerea de las plantillas y funciones friend Notas acerca de las plantillas y miembros static Repaso Entrada y salida de flujos Incroduccion. Flujos 15.2.1 Comparacién entre Flujos cisios y flujos estindar 15.22 Archivos de encaberado de la biblioteca Yostream 15.23. Clases y objetos de entrada/salida de flujos Salida de flujos, 15.3.1 Salida de variables char * 15.3.2. Salida de caracteres mediante la funcién miembro put Entrada de Flujos 15.4.1 Funciones miembro get y get] ine 15.4.2 Funciones miembro peek, putback e ignore de istream 15.43 _F/S con seguridad de tipos JS sin formato mediante el uso de read, write y gcount alos manipuladores de flujos 15.6.1 Base de flujos integrals: dec, oct, hex y setbase 15.6.2 Precision de punto flotante (precision, setprecision) 15.63. Anchura de campos (width, setw) 15.64 Manipuladores de flujs de sla definidos por el usuario Estados de formato de flujo y manipuladores de flujos 15.7.1 Cerosa la derecha y puntos decimales (showpoint) Justificactn (Iefe, right e internal) Relleno de caraceres (F111, setfi71) Base de Flujosintegrales (dec, oct, hex, showbase) Niimeros de punto flotante: notacién cienificay Bja (scientific, Fixed) Control de maytisculas/minisculas (uppercase) Especificaciin de formato booleano (boo1apha) 15.7.8 Establecer y restablecer el estado de formato mediante l funcién miembro lags Exados de eror de los flujos Enlazar un flujo de salida a un flujo de entrada Repaso Manejo de excepciones Invroduecin GGeneraldades acerca del manejo de exepciones jemplo: manejo de un inreno de dviicenre cero Guincho wtilar el manejo de exepclones Vole a lanar una excepeion Especificaciones de excepciones Proossamiemo de exepeionesinespeadan Limpieea de pil CGonstrutoes, destractoeesy manejo de excepeones 631 632. 632 635 636 641 642 642 643 643, 648 682 683, 684 684 689 690 691 692 692, 694 16.10 16.11 16.12 16.13 16.14 16.15 17 11 172 173 174 175 176 177 178 179 17.10 7. 18 181 182 183 134 185 186 187 188 189 18:10 181 18:12 18.13, 19 19.1 19.2 193 194 20 20.1 202 Contenido Excepciones y herencia Procesamiento de ls falas de new Lacdase auto_ptr y la asignacién dinamica de memoria Jerarquia de excepciones de la Biblioteca estindar Orras een Repaso Procesamiento de archivos Introduccién Jerarquia de datos “Archivos y Flujos Greacién de un archivo secuencial (Cémo leer datos de un archivo secuencial ‘Actualizacién de archivos secuenciales, ‘Archivos de acceso aleatorio Creacién de un archivo de acceso aleatorio (Cémo escribir datos al azar un archivo de acceso aleatorio (Cémo leer de un archivo de acceso aleatorio en forma secuencial Ejemplo prictico: un programa para procesar transacciones Generalidades acerea de la seralizacién de objetos Repaso La clase string y el procesamiento de flujos de cadena Ineroducién ‘Asignacién y concatenacién de objets string Comparacién de abjetos string Subeadenas Taercambio de objetos sting Caracteristicas de ls objetos string Bisqueda de subcadenasy caractresen un objet string Reemplazo de caracteres en un objeto string Insercidn de caracteres en un objeto string Conversn a cadenas estilo C Teeradores Procesamiento de flujos de cadena Repaso, Busqueda y ordenamiento Introduccién: ‘Algorimos de bisqueda 192.1 Efcencia dea bisqueda lineal 1922 Bisque binaca Algortms de ordenamieato 19.3.1 Eficiencia del ordenamiento por seleccién 193.2 _Efciencia del ondenamiento por insercin 193.3 Ordenamienco por combinaion (una implementacin recurve Repaso Estructuras de datos Introduccién, (Clases autorreferenciadas 694 694 698, 700 701 702 708 709 709 71 712 715 720 721 m2 726 78 730 2s 736 745 746 747 749 751 752 752 754 756, 758 758 760 761 764 769 770 770 7m 776 776 7 7 783, 788 789 203 204 205 206 20.7 20.8 21 aud 212 213 214 215 216 207 218 219 21.10 2ui1 21.12 21.13 22 21 2.2 23 24 225 Contenido Asignacién dindmica de memoria y estructuras de datos Listas enlazadas ilas Colas Arboles Repaso Seccién especial: construya st propio compilador Bits, caracteres, cadenas estilo C y estructuras Introducién Definiciones de estructuras Inicaicacin de extructuras Uso de esructuras com fanciones typedef empl: simulacién para barajar yreparticartas de alto rendimiento Operidores a nivel de bits ‘Campos de bits Biblioveca de mangjo de caracteres Funciones de conversion de cadenas basadas en apuntador Funciones de bisqueda de la biblioteca de mancjo de cadenas basadas en apuntador Funciones de memoria de a bibliotea de manejo de cadenas basadas en apuntador Repaso Biblioteca de plantillas estandar (STL) Introduccién a la Biblioteca de plantillasestindar (STL) 9.1.1 Introduecién a los contenedores 1.2 Introducctén alos iteradores 1.3 Introduccién alos algoritmos Contenedores de secuencia 22.2.1 Contenedor de secuencia vector 22.2.2 Contenedor de secuencia Tist 22.2.3 Contenedor de secuencia deque Contenedores asociativas 223.1 Contenedsr asociativo muttiset 2232 Contenedor asociativo set 223.3 Concenedor asociativo mul eimap 223.4 Concenedor asociativo map Adapradores de contenedores 22.4.1 Adaprador stack 22.4.2 Adaprador queue 22.43 Adaptador priority_queue Algoritmos 22.5.1 fi11, FiT_n, generate y generate_n 225.2 equal, mismatch y Texicographical_conpare 225.3 remove, renove_if, renove_copy y remove_copy._’ 22.54 replace, replace_if, replace_copy y replace_copy_if 22.5.5 Algoritmos mateméticos 22.5.6 Algoriemos bésicos de busqueda y ordenamiento 22.5.7 swap, iter_swap y swap_ranges 22.5.8 copy_backward, nerge, unique y reverse 22.5.9 inplace_merge, unique_copy y reverse_copy 225.10 Operaciones set 22.5.1 Toner_bound, upper_bound y equa_range 225.12, Ordenamienco de montén (heapsort) 790 791 804 807 810 88. 326 26 27 28 29 23 Bl 232 233 234 235 236 241 242 2463 264 245 246 247 248 249 24.10 24.11 24.12 25 25. 252 253 24 255 25.6 257 258 259 Contenido 225.13. minymax 225.14 Algoritmos de la STL que no se cubren en este capitulo Ladase bitset Objetos de Funciones Conelusién Recursos Web de la STL Programacién de juegos con Ogre Inroduccién Iastalacién de Ogre, OgreAL y OpenAL Fundamentos dela programacién de juegos El juego de Pong: recorrido a través del cédigo 234.1 Iniciliacién de Ogre 2342 Creacién dena excena 23.43 Agregar elementos ala ecena 2344 Animaciéa y temporizadores 23.4.5 Entrada del usuario 23.46 ion de colisiones 2347 2348 Recursos 23.4.9 Controlador de Pong Repaso Recursos Web de Ogre Bibliotecas Boost, Reporte técnico | y C++0x Tnwroduecién Centro de recursos ce C++ (y relacionados) en linea de Deitel Bibliocecas Boose Cm agregar una nueva biblioteca a Boost Instalacién de las Biblioceas Boost Las Bibliotecas Boost en el Reporte técnico 1 (TR1) Uso de exprsiones regulates con la biblioteca Boost. Regex 247.1 Ejemplo de una expresin regular 247.2 Cémo valida la entrada del usuario mediante expresiones regulates 247.3 mo reemplaar y dividir cadenas Apuntadoresinceligentes con Boost.Saart_per 248.1 Uso de shared. ptr y conteo de referencias 248.2 _weak_ptr: observador de shared_ptr Reporte técnico 1 C0 Cambios en el lenguaje bisico Repaso Otros temas Introduecién ‘Operador const_cast Espacios de noabres Palabras lave de operadores Miembros de cases nutable [Apuntadores a miembros de lass (.* y ->4) Herencia miliple Hierencia milpley clases base vireua? Repaso 939) 941 944 947 947 955 956 956 959 959 967 968 978 979 980 984 985 985 986 987 995 996 996 996 997 997 997 1000 1000 1002 1005 1007 1007 1011 1016 1017 1017 1021 1028 1029 1029 1030 1034 1036 1037 1039 103 1047 =D Da D2 D3 D4 D6 EL E2 ER EA ES EG E7 ES 59 E10 Ell E12 E13 E14 RL FD BB. FA BS F6 E7. EB 9 E10 Contenido Tabla de precedencia de operadores y asociatividad Precedencia de operadores Conjunto de caracteres ASCII Tipos fundamentales Sistemas numéricos Tnoduccién [Abreviatua de los nimeros binarios como mlimeros octales y hexadecimales ‘Conversién de niimeros octales y hexadecimales a binarios ‘Conversién de un nimero binaio, octal o hexadecimal a decimal Conversién de un mimero decimal 2 binario, octal o hexadecimal ‘Niimeros binarios negatives: notacién de complemento a dos Temas sobre codigo heredado de C Introduecién Redireecién de la entrada/salida en sistemas UNIX/LINUX/Mac OS X y Windows Lists de argumentos de longitud variable Uso de argumentos de linea de comandos Observaciones acerca de la compilacién de programas con varios archivos de eddigo fuente “Terminacién de los programas con exit y atexit Calificador de tipo votatite Sulijos para conseantes enteras y de punto Florante Manejo de sefiales Asignacién dindmica de memoria con caTToc y reatloc Bifurcacién incondicional: goto Preprocesador Inwroduecién a directva del procesador #incTude La directva del preprocesador #define: constantessimblias 1a direciva del preprocesador #define: macros Compilaci condicional las directivas del preprocesador #error y #pragna Los operadores # y ## Constants simblicas predefinidas Aserciones Repaso 1051 1051 1053 1054 1056 1057 1059 1060 1061 1061 1062 1067 1068 1068 1069 1071 1072 1074 1075 1075 1076 1078 1078 1080 1082 1083 1088 1089 1089 1090 1090 1092 1092 1093 1093 1093 1094 G Cédigo del caso de estudio del ATM G.1__ Implementacién del caso de estudio del ATM. G2 Laclasea™ G3 Ladae pantatta G4 Ladase Teclado G5 Lada Dtspensadorefectivo G6 Ladase RanuraDeposite G7 Ladase cuenta G8 Lada BaseDatossanco G9 ladase Transaccion G10. Lada Sotteitudsatdo Gil Ladae Retiro G2 Lada depostto G13. El programa de procba EjemploPracticokTH.cpp G4. Repaso H_ UML2: tipos de diagramas adicionales HA Introdoccién H.2Tiposdediagramasadcionles 1 Uso del depurador de Visual Studio Li Inseduccién 12. Los panms de intcrupciin y cl comando Continuer 13 Lar ventanss Vertebles locales e Inapecctin 4 Control dela efecucién mediante los comandos Paso paso por Instrucciones, Paso apato por procedimientos, Paso a paso para ea y Continuar 15 Layentana Attorticn 16 Repaso J Uso del depurador de GNU C++ I, tngoducela 12.” Lonpunas de inverrupctn y lot comands run, stop, conttque y BNE J3 Los comandos print y set JA. Control dela eecicion mediante los comandos step, Flats y next ‘JS Elcomando watch J Repaso Bibliografia indice Contenido vit 1098 1098 1099 1104 1105 1106 hos 109 uit m6 15 7 1121 1124 1124 1125 1125 1125 1127 1128 1128 1132 1135 1137 1138 1141 142 1142 147 149 ust 1153 1157 1163 Prefacio “El principal mérito del lenguae sla clavidad. — Galen ‘Bienvenido a Cr+ y Camo prgrumar en Cs, sexta edicibn! En Deitel 8 Associates escribimos libros de texto sobre lengusjes de programacin y libros de nivel profesional para Prentice Hall, impartimos capacitacion a empresas en todo mundo y desarrollamos negocios en Internet con Web 2.0. Este libro refleja los cambios imporcantes en el lenguaje (Ce y em las formas preferidas de impartir y aprender programacién, Se han realizado ajustesconsiderables en todos los capiulos. La secién Recorrido a aves del libro del prefaio proporciona alos instructores, estudiantes y profesionales una idea del tipo de cobertura que ofrece est texto sobre Cr+ y la programacién orientada a objetos. Caracteristicas nuevas y mejoradas Hee auf una lista dels acralizaciones que hemos realizado ala sexaedcn de Cmo pragma en C+ Programacién de juegos. Hemos agregado un nuevo capitulo sobre la programacin de juegos. Los ingresos dela industria de juegos de computadora son ya mayores que los de la industria cinematogrfica, con lo cual se ‘rean muchas oportunidades para los estudiantes interesados en carreras relacionadas con la programacién de juegos. El capitulo 23, Programacién de juegos con Ogre, introduce la programacién de juegos y los grificos con el motor de gréficos Ogre 3D, de eédigo fuente abiert. Hablaremos sobre las euestones bisicasrelacio- nadas con I programacin de juegos. Después le mostraremos cSmo utilizar Ogre para erear un juego simple con una mecinica de juego similar al clisico videojuego Pong®, desarollado originalmente por Atari en 1972, ‘Demostraremos cémo crear una escena con grificos 3D a colores, cmo animar los objetos méviles de manera uniforme, e6mo usar los temporizadores para controlar la velocidad de animacién, detectar colisiones entre ‘objeto, agregar sonido, aceptar la entrada mediante el teclado y mostrar salida de texto, El futuro de C++, Hemos agregado el capitulo 24, en el que se considera el futuro de C43 presentamos las Bibliorecas Boost de Cr+, el Informe técnico 1 (TRI) y C++0x. Las bibliorecas grauitas Boost de cédigo fuente abierto son creadas por miembros de la comunidad de C++. El Informe técnico 1 describe los cam- bios propuestos a la Biblioteca estindar de C++, muchos de los cuales estén basados en las bibliotecas Boost, actuales. El Comité de estindares de C++ esti revisando el Estindar de C++. Los principales objetivos para el nuevo estindar son facilitar el aprendizaje de este lenguaje, mejorar las herramientas para construir biblioecas «cincrementar su compatibilidad con el lenguaje C. El iltimo estindar se publicé en 1998. El trabajo sobre el nuevo estindas, que se conoce aetualmente como C+-Ox, empez6 en 2003 y es probable que se publique en 2009. Incluird cambios al lenguafe del micleo y, muy probablemente, a muchas de las biblitecas en el TR1 ‘Aqui veremos las generalidades acerca de las bibliotecas del TRI y proporcionaremos cédigos de ejemplo para las de “expresiones regulares’ “apuntadores inteligentes. Las exptesiones regulares se utlizan para rlacio- nar patrones de caracteres especificos en el texto. Pueden usarse para valida los datos, para asegurar que se cneuentren en un formato especifico, para sustituir partes de una cadena con otra para diviirla. Muchos de los errores comunes en el eddigo de Cy Cr+ se rlacionan con los apuntadores, una poderosa herramien- 1a de programacién que estudiaremos en el capitulo 8, Apuntadores y cadenas basadas en apuntadotes. Los apuntadores inteligentes nos ayudan a evitar errores al proporcionar una Funcionalidad adicional a los apun adores escindar. Importantes revisiones de contenido. ‘Todos los capitulos se han actualizado y mejorado de manera consi rable. Ajustamos la clariad y precisién de la escrtura, asf como el uso de la terminologia de C++, de confor- midad con el documento del estindar ISO/IEC de C++ que define ef lenguaje. Caracteristicas nuevas y mejoradas xix Introduccién temprana a las metodologias de clases y objetos. Presentamos a los estudiantes los eonceptos bisicasy a terminologia de la tecnologia de objetos en el capitulo 1, y empezamos a desarollar clases reuiliza- bles personalizadas y objetos en el capitulo 3. Ese libro present a programacién orientada a objets, segin sea apropiado, desde el principio y alo largo de este libro. El andlisis temprano sobre os objetos y las cases hace {que os estudiantes “piensen en objetes” de inmediato,y que dominen estos conceptos de una manera més com- pleta, La programacién orientada a objetos no es trivial de ningiin modo, pero es divertdo excrbir programas orientados a objetos. y los estudiantes pueden ver resultados de inmediato. jemplos pricticos integrados. Proporcionamos varios ejemplos précticos que abarean varias seeciones y capitulos, que con frecuencia se basan en una clase presentada en una seccién anterior del libro, para demostrar Jos nuevos conceptos de programacién que se presentan mas adelante ene libro, Estos jemplos pricticos incla- yen el desarrollo dela clase LibroCaliicactones en los capitulo 3a 7, la clase Tiempo en varias secciones de fos capiculos 9 y 10, la clase Enpeado en los capitulos 12 y 13, y el ejemplo prdctico opcional de DOO/UML. del ATM en los capitulos 127, 9, 13 y en el apéndice G. Ejemplo practico integrado de LibroCalificaciones. El ejemplo prictico LibroCalificaciones refer za nuestra primera presentacin de las clases. Utiliza cases y objetos en los capitulos 3 a7 para construir en forma incremental una clase llamada LibroCal i icaciones, la cual representa el libro de calificaciones de un instructor y realiza varios calculos con base en los resultados obtenidos por los estudiantes, como ealeular la calificacién promedio, buscar ls calificaciones maxima y minima e imprimir un grifico de baras. Lenguaje Unificado de Modelado™ 2 (UML 2). El Lenguaje Unificado de Modelado (UML) se ha conver- tido en el lenguaje de modelado grifco preferido por los dsefadores de sistemas orientados a objets. Todos los diagramas de UML en el libro cumpien con a especificacién de UML 2. Usamnos los diagramas de clases de UML para representar en forma visual las clases y sus relaciones de herencia, utlizamos los diagramas de actividad de UML para demostrar el Flujo de control en cada una de las instrucciones de contol de C++. Enel «jemplo prictico de DOO/UML del ATM, hacemos un uso especialmente intensivo de UML. _Bjemplo prictico opcional de DOO/UML del ATM. El ejemplo prictco opeional de DOO/UML del eajero stutomitico (ATM) en las secciones ttuladas Ejemplo prictco de Ingenieria de Software de los captulos 1 a 7, 913, es apropiado para un primer y segundo curso de programacién. Las nueve secciones del ejemplo prictico presentan una introduccién cuidadosamente planeada al disefio orientado a objetos, mediante el uso de UML. Presentamas un subconjunto conciso y simplifcado de UML 2, para después guiarl através desu primera expe- riencia de disei, elaborada para el disefador/programador orientado a objets principiane. Nuestra meta aqui ‘esayudara los estudiances a desarrllar un diseio orientado a objetos para complementar los conceptos que sobre ‘se tema empezarin a ver en el capitulo 1,y que implementardn en el capitulo 3. El ejemplo préctico fue revisedo Por un distinguido equipo de profesores y profesionales de la industria relacionados con el DOO/UML. El ejem- plo prictico noes un eericio: es una experiencia de aprendiaje de principio afin, cuidadosamente dsefiada, que concluye con un recorrido derallado a través de la implementacién del cédigo completo de 877 lineas en Cr+. Mis adelante en est preficio, veremos una desripcién detallada de las nuevesecciones de este ejemplo prictico, Proceso de compilacién y vinculacién para los programas con varios archivos de cédigo fuente. En cl capitulo 3 se incluye un diagrama detallado y un andlisis acerca del proceso de compilacin y vinculaci6n que produce una aplicacién ejecutable. Explicacién de la pila de Hamadas a funciones. En el capitulo 6 proporcionamos un andlisis detallado (con ilustraciones) acerca de la pila de llamadas a funciones y los reistras de activacién, para explicar eémo C++ puede llevar el registro acerca de cual funcién se esti ejecutando en un momento dado, cémo se mantienen en memoria la variables automaticas de las funciones, y cémo sabe una funcién a dénde regresar una vex que termina de cjecuarse Las clases string y vector de la Biblioteca estindar de C++. Las clases string y vector se utiizan para hhacer que los primeros ejemplos sean mas orientados a objetos. La dase string. Utlizamos la clase string en ver de las cadenas char * basadas en apuntadores al estilo para la mayoria de las manipulaciones de cadenas a lo largo de este libro. En los capitulos 8, 10, 11 y 21 seguimos incluyendo discusiones acerca de las cadenas char * para que los estudiantes puedan practicar con las manipulaciones de apuntadores, para ilustrar la asignacién dindmica de memoria con new y delete, construir nuestra propia clase String y para preparar a los estudiantes con el fin de trabajar con las cadenas cchar * en el cédigo heredado de Cy C++, xx Prefacio + Laplantlla de clase vector. lo largo del libro, utlizamos la plantilla de clase vector en verde las mani- pulaciones de arrelos basada en apuntadores al estilo C. Sin embargo, primero hablamos sobre los arreglos basados en apuntadores estilo C en el capitulo 7, con el fin de preparar a los estudiantes para trabajar con el. ‘cédigo heredado de C y Cr y para usarls como base para construir nuestra propia clase Arreglo personali- zada en el capitulo 11, Sobrecarga de operadores: objetas String y Array. ‘+ Tratamiento optimizado de la herencia y el polimorfismo. Los capitulos 12 y 13 se han optimizado cul- dadosamente mediante el uso de una jerarquia de clases Enp1eado, para que el tratamiento de la herencia y el. polimorfismo sea un proceso mis claro y accesible para los estudiantes que incursionen por primera vez en la POO. + Analisis ¢ ilustracién acerca del funcionamiento interno del polimorfismo. El capitulo 13 contiene un dliagrama detallado y una explicacion acerca de emo puede Cr+ implementa internamente el polimorfismo, las funciones virtual y la vinculacién dinimica, Esto proporcions a los estudiantes una sélida comprensién. acerca de cémo funcionan realmente estas herramientas. Y lo que es mis importante, ayuda alos estudiantes a apreciar la sobrecarga impuesta por el polimorfismo, en términos de consumo adicional de memoria y tiempo del procesador. Esto ayuda a los estudiantes a determinar eudndo deben usar el polimorfismo, y cudndo deben evitarlo, + Biblioteca de plantillas esténdar (STL). Este podria ser uno de los temas mis importantes del libro, en términos de la aprecacién que tenga sobre lareutilizacién de software. La STL define poderosos componen- tes reuilizables, basadas en planils, que implementan muchas estructuras de datos y algoritmos comuncs utlizados para procesar esas estructuras de datos. Enel capitulo 22 se presenta la STL y se describe sus tres, componentes clave: contenedores,iteradores y algoritmos. Aqui mostramos que el uso de los componentes de Ja STL nos proporciona un enorme poder expresvo, lo cual a menudo reduce muchas lineas de eédigo 2 una sola instrucci, + Conformidad con el estindar ISO/IEC de C++. Hemos auditado nuestra presentacién para compararla con el documento més reciente del estindar ISO/IEC de Cr+, en euanto a su grado de exactitad y precisi, Lo: si necesita deaalles téenicos adicionales sobre Crs, tal ver sca convenicnte que adquiera el dacumento del estindar de Ces, en webstore.anst .org/ansidacstore/default.asp (niimero de documento INCITS! ISO/IEC 14882-2003)]. + Apéndices del depurador. Incluimos dos apéndices sobre el uso del depurador: apéndice I, Uso del Depurador de Visual Studio, yl apéndice J, Uso del Depurador de GNU Cr+. ‘+ Prueba del eédigo en varias plataformas. Probamos los ejemplos de cédigo en vais plataformas populares para Cr, En su mayor parte, todos los ejemplos del libro se pueden portar eon faciidad a todos los compl: dores populares que cumplen con el estindae. + Errores y advertencias mostrados para varias plataformas. Para los programas que contienen errores inten cionales para ilustrar un coneepto cave, mostramos los mensajes de error que se producen en varias pltaformas, populaes ‘Todo esto ha sido cuidadosamente revisado por distinguidos profesores y desartolladores de la industria que trabajaron con nosotros en la quinta y sexta edicién de Cima programar en Cx. Creemos que este libzo y sus materiales de apoyo proporcionarin a los estudiantes y profesionales una experiencia ducativa informativa, interesante, retadora y divertida en relacién con C++. Este libro incluye una extensa suite de materiales auxiliares que ayudan a os insructores a maximiza la experiencia de aprendizaje de sus estudiantes. ‘A medida que lea este libro, si tiene preguntas, no dude en enviar un correo electrénico a deiteT@dei te] coms le esponderemos lo més pronto posible. Para obtener actualizaciones en relacién con est libro y con todo el software de soporte para C+, asi como para ver las noticias mas recientes acerca de todas las publicaciones y servicios Deitel, visite mw. det tel .con. Suscrfbase en ma.dei tel .con/newsletter/subscribe.html para recibir el boletin de noti- cias electrbnico Deitel Buzz Online, y dé un vscazo a nuestra cteciente lista de Centtos de Recursos relacionadas en wv. de' tel .con/ResourceCenters.. itn’. Cada semana anunciaremos nuestros Centros de Recursos més recientes en el bolerin de noticias. No dude en comentamos acerea de otros Centros de Recursos que desee ver includes. Método de ensefianza Camo programaren G++, sexta ediciin, contiene una extensa coleccién de ejemplos. El libro se concentra en los principios dela buena ingenierfa de software, haciendo hincapié en la claridad de los programas. Ensefiamos mediance ejemplos. Método de ensefianza > Somos educadores que presentamos temas de vanguardia en salones de clases de la industria alrededor de todo el mundo, EI Dr. Harvey M. Deitel tiene 20 afos de experiencia en la ensefanza a nivel universitario y 18 en la industria. Paul Deitel tiene 16 afos de experiencia en Ia ensefanza dentro dela industria. Los Deitel han imparido cursos en todos los niveles,a clientes gubecnamentales, industrials, miliars y académicos. Método del eédigo active. Cimo programar en Cr+, sexta edicién, et lle de cjemplos de “cbdigo activo"; esto significa «que cada nuevo concepto se presenta en el contexto de una aplicacién en C++ completa y funcional que es seguido inme- cliatamente por una 0 mis jecuciones actales, que mucstran la entrada y salida del programa. Este estilo ejemplifica la ‘manera en que ensefiamos y escrbimos acerca de la programaciéns a esto le llamamos “método de cbdigo activo". Resaltado de cédigo. Colocamos recingulos de color gris alrededor de los segmentos de cédigo clave en cada programa. Uso detipos de letra para dar énfasis. Colocamos los éeminos clave en negeitas para faciltar su referencia. Enfatza- ‘mos los componentesen pantalla con el tipo de letra Halvética en negrtas (por ejemplo, el ment: Archivo) y enftizamos cl texto del programa con cl tipo de letra Luc‘ da (por ejemplo, int x = 8). Acceso Web. Todos los ejemplos de eddigo fuente (en ings) para Gime pregramar en C++, sexta edicién, estén disponi- ‘les para su descarga en: vw .deitel .com/books /cpphtps El registro en el sitio es un proceso ficil y nipido, Descargue todos los ejemplos a medida que lea los correspondientes andlsis en el libro de texto, despues ejecure cada programa. Realizar modificaciones a los ejemplos y ver los efectos de «505 cambios es una excelente manera de mejorar su experiencia de aprendizaje en C++. Objetivos. Cada capitulo comienza con una declaraci6n de objetivos. Esto le permite saber qué es lo que debe esperar y le brinda la oportunidad, después de leer el capitulo, de decerminar si ha cumplido con ellos. Frases. Después de los objetivos de aprendizajeaparecen una o mis ase. Algunas son gracioss, otras filosfica;y as dems oftecen ideas interesante Esperamos que disfruterelacionando las frases con el material del capitulo. ‘Plan general. El plan general de cada capitulo le permite abordar el material de manera ordenads, para poder anticipatse Alo que esté por venir y establecer un ritmo cémodo y efectivo de aprendizaje. Mustraciones/Figuras. Incuimos una gran cantidad de grifcas,cablas, dibujos lineales, programas y saidas de pro- rama, Modelamos el flujo de control en las instrucciones de control mediante diagramas de actividad en UML. Los diagrams de clases de UML modelan los campos, conscructoresy métodos de las clases Enel ejemplo prictico opcional del ATM de DOO/UML 2 hacemos uso extensivo de ses tipos principales de diagramas en UML. Tips de programacién. lncluimos tips de programacién para ayudale a enfocarse en los aspectos importantes del desarrollo de programas. Eswos ips y prietcasrepresencan lo mejor que hemos podido recabar alo largo de seis déca- das combinadas de experiencia en la programacién y la ensefanza. Una de nuestras alumnas,estudiante de mateméti- cas, recientemente nos comenté que siente que este método es similar al de resatar axioms, ceoremas y corolarios en Jos libros de matemticas, ya que proporciona tuna base sida sobre I cual se puede construir buen software. Buena practica de programacion Tas buenas prdcricas de programacin leman la arencn hacia edoncas que le ayudar a produc programas mdi cars, comprentible y fciles de mantener Error comin de programacion gramacién se reduce a probabildad de que pueda cometeres. Tip para prevenir errores “Eos cps contienensugerencias para exponer ls ervey eliminarlos demu programas: muchos de ellos describe aspectos de (Co gue evitan que lo erroeseneren ala prgramat. ip de rendimiento GD ierrces ar cries alah gece la iptanls l voit Prefacio Tip de portabilidad Incluimas tips de portabildad para audarle a excibircédigo gue pueda cecutare en wna variedad de plaaforma, 7 que expliquen cémo es que C+ logra su ato grado de poreabilidad. Observacion de Ingenieria de Software ‘Tas obsernaciones de ingeniera de oftware satan ls avunton de arguitecura y Aico, lo eual afeta ta construcion dels sinemas de softaare expecialment os de gran ecala ‘Seceién de repaso. Cada uno de los capitulos termina con una breve seccién de “repaso”, que recapitula el contenido del capitulo y oftece una transicién al siguiente capiculo Virietas de resumen, Cada capitulo termina con estrategias pedagégicas adicionales. Prescatamos un resumen detallado del capitulo, estilo lista con vifietas, seccién por seccidn, Terminologia. Incluimmos wna lista alfab Ejercicios de autoevaluacién y respuestas. Se incluyen diversosejercicios de autocvaluacin con sus respuestas, para ue los estudiantes practiquen por su cuenta izada de los términos importantes definidos en cada capitulo, Bjercicios. Cada capitulo concluye con un diverso conjunto de eercicios,incluyendo recordatorios simples de termino- logia y concepros importantes; identifica los errores en muestras de c6digo, escribir instrucciones individuales de C++: «escribir pequefas porciones de funciones y clases; escribir funciones, clases y programas completos: y creat proyectos finales importantes. El extenso miimero de ejerccios permite alos insructores adaptar sus cursos las necesidades Gnicas desus estudiantes, y vara las asignaciones de los cursos cada semeste. Lo instructores pueden usar estos ejercicios para formar tarcas, xmenes corts, eximenes regulares y proyectos finales. En nuestro Centro de Recursos de Proyectos de Programacién (iww.dei tel .con/ProgranningProjects/) podri consultar muchos ejrcicios adiconales y posbilida desde proyectos. (IVOTA: No nos escriba para solicitar acceso al Centro de Recursos para Instructores. El acceso est limitado ‘strictamente a profesores universitarios que impartan clases con base en el libro. Sélo se puede obtener acceso a ‘través de los representantes de Pearson Educaciéa|. ‘Miles de entradas en el indice. Hemos incluido un extenso indice, que es en especial iil cuando se utiliza el libro como referencia, “Doble indexado” de ejemplos de cédigo activo de C++. Para cada programa de eigo fuente en el libro, indexamos la leyenda de la figura en forma alfabética y como subindice, bajo “Ejemplos’. Esto faciliea encontrar los ejemplos usando las caracterisias especiales. Recorrido a través del libro Alora vamos a dar un vstazo a las herramientas de C++ que estudiari en Cémo progiamar en Civ, sexta edici. La figura 1 itustea ls dependencias entre los capitulas. Le recomendamos estudiar los temas en el orden indicado por las flechas, aunque ¢s posible utilizar otras secuencias. Este libro se utiliza ampliamente en todos los niveles de cursos de progra- mmacién de C++, Busque en Web la palabra “programa de studios”, *C+4” y “Deitel” para encontrar los programas de estudios que se utilzan con las ediciones recientes de este libro, Capiculo 1, Introduccin a las computadoras, Internet y World Wide Web: abla sobre Jo que son las compu- ‘adoras, cémo trabajan y cémo se programan, Este capitulo presenta una breve historia del desarrollo de los lenguajes de programacién, partiendo desde los lenguajes méquina, pasando por los lenguajes ensambladores y terminando con los lenguajs de alo nivel, Se habla también sobre los origenes dl lenguaj de programacisn Cs-. El capitulo incluye una {neroduccién a un entorno de programacién comin en C++. Llevamos alos lectores através de un “recortido de prucba” de una aplcacién comin de C++ en ls plataformas Windows y Linux. También se presentan los concepros bisios y la terminologia dela tecnologia de objetos,y el Lenguaje Unificado de Modelido. Capitulo 2, Introduccién a la programacién en C++: offece una breve introduccisn la programacisn de apica- cones en al lenguaje de programacidn C++. Este capitulo presenta conceptos y construcciones bisicas de programacién para no programadores. Los programas de esce capitulo ilustran eémo mostrar datos en pantalla y cémo obtener datos del usuario mediante el teclado, El capitulo termina con un andlsis detallado de la toma de decsiones y las operaciones aitméticas Gapitulo 3, Introducci6n a las clases y los objetos: oficce una primera introduccién amigable alas clases y los objetos. Pone a los estudiantes a trabajar con la orientacién a objetos de una manera confortable desde el principio. Recorrido através del libro xoxiit | Inder ns computaons, Internet y Word Wide Web inuodcion ata progaacion en C+¥ mokacn aise A lnaeveciones de conto pare 1 5 Intvciones de convo: pate 2 ‘6 funconts yuna invodvcién a a ees Figura 1 | Gréfico de dependencias de los capitulos de Cémo programar en Cr+. sexta edicisn, El capfeulo se desarollé con la gua de un distinguido equipo de revisores académicos y de la industria, Presentamos las clases, os objetos, las funciones miembto, los constructores y los miembros de datos, uilizando una serie de ejemplos simples y reales. Desarrollamos un marco de trabajo bien disefiado para organizar programas orientados a objetos en Cr+. Primero, motivamos la noci6n de las clases con un ejemplo simple. Después presentamos una secuencia culdadosa- mente claborada de sete programas funcionales completes, para demostrar cSmo puede ceaty utilizar sus propias class. Estos ejemplos comienzan nuestro ejemplo practico integrado acerca del desarrollo de una clase de libro de calif- caciones, que los instrucrores pueden utilizar para administrar las califcaciones de las prucbas de sus estudiantes. Este «ejemplo prdctico se mejora lo largo de os siguientes captulos, culminando con la versién que se presenta en cl capitulo 7, ‘Arzegos vectores. El ejemplo peictico dela case LibroCaliFicaciones describe emo definiry utiliza una clase para xaxiv—Prefacio crear un objeto. También describe cémo declarary definr funciones miembro para implementar los comportamientos de la case, cSmo declarar miembros de datos para implementa los atsibutos de la case y eémo llamas a as funciones miembro de un objeto para que leven a cabo sus tareas, Prescntamos la clase string de la Biblioteca Estindar de C++ y ‘reams objetos string para almacenar el nombre de un curso representado por un objewo LibroCa1 ificactones. El capitulo 3 explica las diferencias entre los miembros de datos de una clase y as variables locales de una funcidn, y cémo uilizar un constructor para asegurar que se inicialicen los datos de un objeto ala hora de crearo, Le mostramos cmo promover la reutlizcién de software, separando la defnicién de una clase del cédigo cliente (por ejemplo, la funcién fran) que utiliza a esa clase. También introducimos otro principio fundamental de la buena ingenieria de software: separat la inerfaz de la implementacibn. El capitulo incluye un diagrama detallado y un analisis en cl que se explica el proceso de compilacién y vinculacién, que produce una aplicacién cjecuable. Capitulo 4, Instrucciones de control: parte I: se enfoca en el proceso de desarrollo de programas implicado en la cteacién de clases tiles. Este capitulo habla sobre emo tomar un enunciado del problema y, a partir de él, desarrollar un programa funcional en C++ incluyendo la realizacin de los pasos intermedios con seudocédigo. También incroduceciertas instrucciones simples de control para a toma de decsiones (ie if. .e1se) y la repetcidn (wile). Anlizamos la repeti cin controlada por contador y la repeticién contolada por centinela, usando la case LibroCal if icaciones del capiculo 3. y presentamos los operadores de incremento, decremento yasignacién de C+, Este capitulo incluye dos versiones mejo- radas de la clase LibroCalFicactones, cada una de ellas basada en la versin final del capitulo 3, Cada version incluye una funcién miembro que utiliza instrucciones de control para calcular el promedio de un conjunto de califcaciones de

S-ar putea să vă placă și