programación y resolución de problemas con c++

Click here to load reader

Post on 18-Nov-2014

1.526 views

Category:

Software

5 download

Embed Size (px)

DESCRIPTION

Programación y resolución de problemas con c++ Esta Edición de programación y resolución de problemas con C++, continúa con la filosofía de que los temas considerados demasiado avanzados pueden ser enseñados con un primer curso. por ejemplo, se atienden de modo explícito los metalenguajes como medio formal de especificar la sintaxis del lenguaje de programación. se introduce la notación o mayúsculas (Big-O) al principio, y se usa para comparar algoritmos en capítulos posteriores.

TRANSCRIPT

  • 1. www.FreeLibros.me
  • 2. DALEPrel.indd iiDALEPrel.indd ii 4/12/06 18:30:514/12/06 18:30:51 www.FreeLibros.me
  • 3. C++ Programacin y resolucin de problemas con DALEPrel.indd iDALEPrel.indd i 4/12/06 18:30:474/12/06 18:30:47 www.FreeLibros.me
  • 4. DALEPrel.indd iiDALEPrel.indd ii 4/12/06 18:30:514/12/06 18:30:51 www.FreeLibros.me
  • 5. C++ Programacin y resolucin de problemas con Nell Dale University of Texas, Austin Chip Weems University of Massachusetts, Amherst Revisin tcnica Jorge Valeriano Assem Universidad Nacional Autnoma de Mxico, Facultad de Ingeniera MXICO BOGOT BUENOS AIRES CARACAS GUATEMALA LISBOA MADRID NUEVA YORK SAN JUAN SANTIAGO AUCKLAND LONDRES MILN MONTREAL NUEVA DELHI SAN FRANCISCO SINGAPUR SAN LUIS SIDNEY TORONTO DALEPrel.indd iiiDALEPrel.indd iii 4/12/06 18:30:524/12/06 18:30:52 www.FreeLibros.me
  • 6. Director Higher Education: Miguel ngel Toledo Castellanos Director editorial: Ricardo del Bosque Alayn Editor sponsor: Pablo E. Roig Vzquez Editora de desarrollo: Ana Laura Delgado Rodrguez Supervisor de produccin: Zeferino Garca Garca Diseo de portada: Utopa Visual Traductores: Francisco Snchez Fragoso Thomas Bartenbach Joest PROGRAMACIN Y RESOLUCIN DE PROBLEMAS CON C++ Prohibida la reproduccin total o parcial de esta obra, por cualquier medio, sin la autorizacin escrita del editor. DERECHOS RESERVADOS 2007, respecto a la primera edicin en espaol por McGRAW-HILL/INTERAMERICANA EDITORES, S.A. DE C.V. A Subsidiary of The McGraw-Hill Companies, Inc. Edicio Punta Santa Fe Prolongacin Paseo de la Reforma 1015, Torre A Piso 17, Colonia Desarrollo Santa Fe Delegacin lvaro Obregn C.P. 01376, Mxico, D.F. Miembro de la Cmara Nacional de la Industria Editorial Mexicana, Reg. Nm. 736 ISBN-13: 978-970-10-6110-7 ISBN-10: 970-10-6110-1 Traducido de la cuarta edicin de Programming and Problem Solving with C++. Copyright MMV by Jones and Bartlett Publishers, Inc. All rights reserved. ISBN: 0-7637-0798-8 1234567890 09865432107 Impreso en Mxico Printed in Mexico DALEPrel.indd ivDALEPrel.indd iv 4/12/06 18:30:544/12/06 18:30:54 www.FreeLibros.me
  • 7. A Al, mi esposo y mejor amigo, y a nuestros hijos e hijos de nuestros hijos. N.D. A Lisa, Charlie y Abby con amor. C.W. DALEPrel.indd vDALEPrel.indd v 4/12/06 18:30:554/12/06 18:30:55 www.FreeLibros.me
  • 8. Por mencionar a Mestfeles, uno de los demonios principales, y el temperamento de Fausto, ...Mi amigo, ser pedaggico, Y te digo que debes empezar con lgica... ...Se tendrn que invertir das para que aprendas Eso es lo que alguna vez hiciste de un golpe, Como comer y beber tan fcil y libre, Slo puede hacerse con uno, dos, tres. Sin embargo la red del pensamiento no tiene tales pliegues Y tiene ms parecido con las obras maestras de un tejedor; Un paso, miles de hilos surgen, Aqu y all dispara cada lanzadera, Los hilos uyen, invisibles y sutiles, Cada golpe afecta miles de enlaces. El lsofo viene con el anlisis Y demuestra que tiene que ser como esto; Lo primero fue as, lo segundo as, Y por tanto el tercero y cuarto fueron as, Y el primero y segundo no estuvieron aqu, Entonces el tercero y cuarto nunca podran aparecer. Eso es lo que creen los alumnos, Pero nunca han aprendido a tejer. J. W. von Goeth, Fausto, fragmento. Conforme lea este libro, no permita que la lgica de los algoritmos ciegue su imaginacin, por el contrario hgala su herramienta para tejer obras maestras del pensamiento. DALEPrel.indd viDALEPrel.indd vi 4/12/06 18:30:554/12/06 18:30:55 www.FreeLibros.me
  • 9. Prefacio A travs de las ediciones sucesivas de Programacin y resolucin de problemas con C++, una cosa no ha cambiado: nuestro compromiso con el alumno. Como siempre, nuestros esfuerzos estn dirigidos a hacer ms accesibles a los alumnos los conceptos de computacin en oca- siones difciles. Esta edicin de Programacin y resolucin de problemas con C++ contina con la losofa de que los temas considerados demasiado avanzados pueden ser enseados en un primer curso. Por ejemplo, se atienden de modo explcito los metalenguajes como medio formal de especicar la sintaxis del lenguaje de programacin. Se introduce la notacin O mayscula (Big-O) al principio, y se usa para comparar algoritmos en captulos posteriores. Se analiza el diseo modular en trminos de pasos abs- tractos, pasos concretos, equivalencia funcional y cohesin funcional. Las precondiciones y poscon- diciones se usan en el contexto de repaso del algoritmo, en el desarrollo de estrategias de prueba y como documentacin de interfaz para funciones escritas por el usuario. La discusin del diseo de interfaz de funcin incluye encapsulacin, abstraccin de control y complejidad de comunicacin. La abstraccin de datos y los tipos de datos abstractos (TDA) se explican junto con el mecanismo de clase C++, de modo que se crea una gua natural para la programacin orientada a objetos. C++ estndar ISO/ANSI se emplea en todo el libro, inclusive partes importantes de la nueva bi- blioteca estndar de C++. La presente edicin En esta edicin se han actualizado completamente los objetivos, los casos prcticos y los ejercicios. Adems, en el captulo 13, el lenguaje del material se ha vuelto ms orientado a objetos. Objetivos Los objetivos del captulo han sido organizados para reejar dos aspectos del aprendizaje: conocimiento y habilidades. As, los objetivos se dividen en dos secciones. La primera lista los obje- tivos de conocimiento, expresados en trminos de lo que el alumno debe saber despus de leer el captulo. La segunda rene lo que el alumno debe poder hacer despus de leer el captulo. Casos prcticos de resolucin de problemas Cada captulo tiene un caso prctico completamente nuevo. Los casos prcticos que comienzan con un enunciado de problema y terminan con un progra- ma probado han sido la marca distintiva de nuestros libros. En esta seccin se han aadido imgenes de pantallas que muestran el resultado para cada uno de los casos. El caso prctico del captulo 14 comienza con la construccin de un calendario de citas. El proyec- to se completa en el captulo 16. En el captulo 17 se cambia la ejecucin de una clase, enfatizando que tales cambios no afectan al usuario. El programa tambin se hace ms robusto al aadir y manejar DALEPref.indd viiDALEPref.indd vii 4/12/06 18:38:534/12/06 18:38:53 www.FreeLibros.me
  • 10. viii | Prefacio excepciones. En cada etapa del proyecto se escriben los controladores para probar las clases conforme se crean. Esta organizacin muestra en accin al diseo y la programacin orientados a objetos. Debido a que algunos de los ejemplos pequeos empleados en un captulo encuentran su camino en el cdigo de caso prctico, estos ejemplos han sido cambiados para que sean congruentes con los nuevos casos prcticos. Ejercicios Con excepcin del captulo 17, todos los ejercicios son nuevos. El nmero de ejercicios ha sido ampliado por entre veinte y treinta por ciento. Todos los problemas de programacin son nuevos. Lenguaje orientado a objetos La lista TDA del captulo 13 ha sido cambiada eliminando la operacin Print e introduciendo un par de iteradores, Reset y GetNestItem. Este cambio proporciona mejor encapsulacin. La lista no necesita saber nada acerca de los tems que contiene. La lista simplemente devuelve objetos al programa cliente, que debe conocer cules son los objetos. La desventaja en este diseo se seala en el captulo 14. Las operaciones Delete y BinSearch usan operadores relaciona- les, lo que limita el tipo de tem a tipos integrados. En este captulo, los operadores relacionales se remplazan por operaciones LessThan y Equal; la documentacin establece que ItemType debe llevar a cabo estas operaciones. Se analizan tambin los conceptos de responsabilidades de accin y responsabilidades de conocimiento. El uso de clases para construir tems cada vez ms complejos se remarca en los casos prcticos. Cada clase se prueba de modo independiente, remarcando la importancia de probar. C++ y programacin orientada a objetos Algunos profesores rechazan a la familia de lenguajes C (C, C++, Java) por ser demasiado permisiva y conducente a escribir programas no legibles y difciles de descifrar. Nuestra experiencia no apoya este punto de vista, siempre que el uso de caractersticas de lenguaje se modele de manera apropiada. El hecho de que la familia C permita un estilo de programacin conciso y compacto no se puede etiquetar simplemente como bueno o malo. Casi cualquier lenguaje de programacin se puede usar para escribir en un estilo que es demasiado conciso e inteligente para que sea entendido con facilidad. La familia C se puede de hecho de esta manera con ms frecuencia que los otros lenguajes, pero se ha encontrado que con instruccin cuidadosa en ingeniera de software y un estilo de pro- gramacin que sea directo, disciplinado y libre de caractersticas de lenguaje intrincadas, los alumnos pueden aprender a usar C++ para producir cdigo claro y legible. Se debe remarcar que aunque se usa C++ como un vehculo para ensear conceptos de compu- tacin, el libro no es un manual de lenguaje y no intenta hacer una cobertura completa de C++. Ciertas caractersticas de lenguaje, sobrecarga del operador, argumentos por omisin, informacin tipo tiempo de ejecuc