Java程序設(shè)計(jì)

出版時(shí)間:2009-5  出版社:清華大學(xué)出版社  作者:Robert Sedgewick  頁(yè)數(shù):693  
Tag標(biāo)簽:無(wú)  

前言

  THE BASis FOR EDucwrlON IN THE last millennium was "reading, writing, and  arithmetic;" now it is reading, writing, and computing. Learning to program is an  essential part of the education of every student in the sciences and engineering.  Beyond direct applications, it is the first step in understanding the nature of  computer sciences undeniable impact on the modern world. This book aims to teach  programming to those who need or want to learn it, in a scientific context.  Our primary goal is to empower students by supplying the experience and  basic tools necessary to use computation effectiVely. Our approach is to teach  students that writing a program is a natural, satisfying, and creatiVe experience (not  an onerous task reserved for experts). We progressiVely introduce essential  concepts, embrace classic applications from applied mathematics and the sciences to  illustrate the concepts, and provide opportunities for students to write programs  to solve engaging problems.  We use the Java programming language for all of the programs in this book-  we refer to Java after programming in the title to emphasize the idea that the book  is about fundamental concepts in programming, not Java per sc. This book teaches  basic skills for computational problem--solVing that are applicable in many modern  computing environments, and is a self-contained treatment intended for people  with no previous experience in programming.  This book is an interdisciplinary approach to the traditional CSI curriculum,  where we highlight the role of computing in other disciplines, from materials  science to genomics to astrophysics to network systems. This approach emphasizes  for students the essential idea that mathematics, science, engineering, and  computing are intertwined in the modern world. While it is a CSI textbook designed  for any first-year college student interested in mathematics, science, or  engineering (including computer science), the book also can be used for self--study or as a  supplement in a course that integrates programming with another field.  III    Coverage The book is organized around four stages of learning to program:  babe rhe book is organized around four stages of learning to program:  ba. 1  sic elements, functions, object-oriented programming, and algorithms (with data    \  structures). We provide the basic information readers need to build confidence in  .. 1 1 1  writing programs at each level before moving to the next level. An essential feature  b programs at each level before moving to the next level. An essential feature  o f our approach is to use example programs that solVe intriguing problems,  sup.,..  ported with exercises ranging from self-study drills to challenging problems that  call for creative solutions.  Basic elements include variables, assignment statements, built-in types of  data, flow of control (conditionals and loops), arrays, and input/output, including  graphics and sound.  Functions and modules are the students first exposure to modular  program1. TI 11r. 1 ...11.lr. ..,r  ining We build UDon familiarity with mathematical functions to introduce lava  b. aam build upon familiarity with mathematical functions to introduce Java  ., 1 1. 1.,..  static methods, and then consider the implications of programming with  func.., 1.,.,.  nons, including libraries of functions and recursion. We stress the fundamental  idea of diViding a program into comDonents that can be indeDendentlv debugged,  b a program into components that can be independently debugged,  .. 1 1  . 1 1 1  maintained, and reused.  Oblect-oriented Droqramminq is our introduction to data abstraction. We  emject-oriented programming is our introduction to data abstraction. We  emphasize the concepts of a data type (a set of values and a set of operations on them)  and an obiect (an entity that holds a data-type value) and their implementation  )ect (an entity that holds a data-type value) and their implementation  . X, 1 1. T T 1 1, 1. 1  using lavas class mechanism. We teach students how to use, create, and design data  b java s class mechanism. We teach students how to use, create, and design data  .  types. Modularity, encapsulation, and other modern programming paradigms are  the central concepts of this stage.  Algorithms and data structures combine these modern Drogramming  Darao programming  paradigms with classic methods of organizing and processing data that remain  effec.  tlve for modern applications. We provide an introduction to classical algorithms  pplications. We provide an introduction to classical algorithms  for sorting and searching as well as fundamental data structures (including stacks,  o b as well as fundamental data structures (including stacks,  queues, and symbol tables) and their application, emphasizing the use of the  scientific method to understand performance characteristics of implementations.  ADDlications in science and engineering are a key feature of the text. We  motiPPlications in science and engineering are a key feature of the text. We  mott,. 1,....  vate each programming concept that we address by examining its impact on  spe.  cific applications. We draw examples from applied mathematics, the physical and  biological sciences, and computer science itself, and include simulation of physical  .ical sciences, and computer science itself, and include simulation of physical  ., 1,.,....  . 1 1 1 1. 1.. 1 1..  systems, numerical methods, data visualization, sound synthesis, image  process.  lug, financial simulation, and information technology. Specific examples include a  .,  treatment in the first chapter of Markov chains for web page ranks and case  studs page ranks and case  stud., 1 1., 1  ies that address the percolation problem, N-body simulation, and the small-world  .  IV    phenomenon. These applications are an integral part of the text. They engage  students in the material, illustrate the importance of the programming concepts, and  provide persuasive evidence of the critical role played by computation in modern  . 1..  science and enZineering  bineering.  Our primary goal is to teach the specific mechanisms and skills that are  needed to develop effectiVe solutions to any programming problem. We work with  comp effectiVe solutions to any programming problem. We work with  complete Java programs and encourage readers to use them. We focus on programming  by indiViduals, not library programming or programming in the large (which we  treat brieny in an appendix).  ] in an appendix).  Use in the Curriculum This book is intended for a first-year college course  I b  . 1,...,  aimed at teaching novices to Drogram in the context of scientific applications.  b novices to program in the context of scientific applications.  Taught from this book, prospective maiors in any area of science and  engineer.ilt from this book, prospective majors in any area of science and  engineer.. 11 1.  lug will learn to program in a familiar context. Any student completing a course  based on this book will be well--prepared to apply their skills in later courses in  science and engineering and to recognize when further education in comDuter science  .ineering and to recognize when further education in computer science  might be beneficial.  Prospective computer science majors, in particular, can benetit from learning  pective computer science majors, in particular, can benefit from learning  .  to program in the context of scientific applications. A computer scientist needs the  same basic background in the scientific method and the same exDosure to the role  .found in the scientific method and the same exposure to the role  o f computation in science as does a biologist, an engineer, or a physicist.  Indeed, our interdisciplinary approach enables colleges and uniVersities to  teach prospectiVe computer science majors and prospective majors in other fields  o f science and engineering in the same course. We cover the material Drescribed by  .ineering in the same course. We cover the material prescribed by  CSI, but our focus on applications brings life to the concepts and motivates  students to learn them. Our interdisciplinary approach exposes students to problems  . 1. or 1..,. 1 1. 1. 1 1.  In many different disciDlines, helping them to more wisely choose a major.  J pnnes, helping them to more wisely choose a major.  Whatever the specific mechanism, the use of this book is best positioned early  ..,  in the curriculum. First, this positioning allows us to leverage familiar material  in high school mathematics and science. Second, students who learn to program  .if school mathematics and science. Second, students who learn to program  early in their coheRe curriculum will then be able to use comDuters more effectiVely  j D puters more effectiVely  when movinZ on to courses in their SDecialtv Like reading and writing  Drogramb pecialty. Like reading and writing,  program... 1. 1. 1 1  mlnR is certain to be an essential skill for any scientist or enZineer. Students who  o is certain to be an essential skill for any scientist or engineer. Students who  have grasDed the conceDts in this book will continually develoD that skill through a  hi asped the concepts in this book will continually develop that skill through a  lifetime, reaping the benefits of exploiting computation to solVe or to better  understand the problems and projects that arise in their chosen field.  v    Prerequisites This book is meant to be suitable for typical science and  engilulsltes This book is meant to be suitable for typical science and  engi.,.,.  neerlnR students in their nrst year of coheRe. That is, we do not exDect DreDaration  b .indents in their first year of college. That is, we do not expect preparation  beyond what is typically required for other entry-level science and mathematics  courses.  Mathematical maturity is important. While we do not dwell on mathematical  may is important. While we do not dwell on mathematical  ma. 1  tenal, we do refer to the mathematics curriculum that students have taken in high  school, including algebra, geometry, and trigonometry. Most students in our target  audience (those intending to major in the sciences and engineering) automatically  ,.  1.  meet these requirements. Indeed, we take advantage of their familiarity with the  basic curriculum to introduce basic programming concepts.  Scientihc curiosity is also an essential ingredient. Science and engineering students  ilo curiosity is also an essential ingredient. Science and engineering students  bring with them a sense of fascination in the ability of scientinc inauiry to helD  exs with them a sense of fascination in the ability of scientific inquiry to help  explain what goes on in nature. We leverage this predilection with examples of simple  1 1, 1 1  -l 1 1 1 1 1 1 1 T  programs that speak volumes about the natural world. We do not assume any  specinc knowledge beyond that provided by typical high school courses in  mathemato Jond that provided by typical high school courses in  mathemat. 1. 1. 1 1.  ics, physics, biology, or chemistry.  Programming experience is not necessary, but also is not harmful. Teaching  proo o perlence is not necessary, but also is not harmful. Teaching  pro... 1...  gramming is our primary goal, so we assume no prior programming experience.  But writing a Drogram to solVe a new problem is a challenging intellectual task, so  b a program to solVe a new problem is a challenging intellectual task, so  , 1..,. 1 1 1 1  students who have written numerous programs in high school can benefit from  taking an introductory programming course based on this book (just as students  o 1 programming course based on this book (just as students  who have written numerous essays in high school can benent from an introductory  ] a in high school can benefit from an introductory  ... 1 \ h  writing course in coheRe). The book can support teaching students with varying  c, o ). foe book can support teaching students with varying  backgrounds because the applications appeal to both novices and exDerts alike.  .founds because the applications appeal to both novices and experts alike.  Experience using a computer is also not necessary, but also is not at all a problem.  EVery coheRe student nowadays uses a comDuter regularly, to communicate with  ] college student nowadays uses a computer regularly, to communicate with  friends and relatives, listen to music, process photos, and many other actiVities. The  realization that they can harness the Dower of their own comDuter in interesting  ] power of their own computer in interesting  and important ways is an exciting and lasting lesson for most students.  In summary, virtually all students in science and engineering are prepared to take a  y, virtually all students in science and engineering are prepared to take a  1 1 1. 1 1  course based on this book as a part of their first-semester curriculum.    yi    GOals What can instructors of upper--level courses in science and engineering  expect of students who have completed a course based on this book  We cover the CSI curriculum, but anyone who has taught an introductory  yone who has taught an introductory  .,,  programming course knows that expectations of instructors in later courses are  typically high: each instructor expects all students to be familiar with the computing  ., 1, 1  environment and approach that he or she wants to use. A physics professor might  .,, 1. 1.  expect some students to design a program over the weekend to run a simulation; an  ..  r. 1 1 1 1.. 1 1  engineering professor might expect other students to be using a particular package  to numerically solVe differential eouations; or a computer science Drofessor might  j i, or a computer science professor might  expect knoWledge of the details of a particular programming environment. Is it  realistic to meet such diVerse expectations Should there be a different introductory  course for each set of students Colleges and universities have been wrestling with  b b  such questions since computers came into widespread use in the latter part of the  20th century Our answer to them is found in this common introductory treatment  ). j  of programming, which is analogous to commonly accepted introductory courses  ..  in mathematics, physics, biology, and chemistry. An introduction to Programming  .., 1.. 1,, 1..,  strwes to provide the basic preparation needed by all students in science and  en.. 1 .1 1. 1 1 1 1. 1 1 1  gineering, while sending the clear message that there is much more to understand  about computer science than programming. Instructors teaching students who  have studied from this book can expect that they have the knowledge and  expert,,,..  1 1 -1 1. 1. 1  ence necessary to enable them to adaDt to new comDutational environments and to  J to enable them to adapt to new computational environments and to  effectiVely exDloit comDuters in diVerse aDplications.  ] ploit computers in diVerse applications.  What can students who have completed a course based on this book expect to  accomplish in later courses  Our messaZe is that DroZramminR is not difficult to learn and that  harnesso programming is not difficult to learn and that  harness.  lug the power of the computer is rewarding. Students who master the material in  this book are prepared to address computational challenges wherever they might  appear later in their careers. They learn that modern programming environments,  such as the one provided by Java, help open the door to any computational  problem they might encounter later, and they Rain the conndence to learn, evaluate,  j but encounter later, and they gain the confidence to learn, evaluate,  and use other computational tools. Students interested in computer science will be  well-prepared to pursue that interest; students in science and engineering will be  .  ready to integrate comDutation into their studies.  j crate computation into their studies.  -  yi I    Booksite An extensiVe amount of information that supplements this text may  be found on the web at  http: //www. cs. p ri nceton. edu/Int rop rog rammi ng  For economy, we refer to this site as the booksite throughout. It contains material  ], we refer to this site as the booksite throughout. It contains material  for instructors, students, and casual readers of the book. We briefly describe this  j  ., 1 1 1 1 1.. 1 1.  material here, though, as all web users know, it is best surveyed by browsing. With a  few exceptions to support testing, the material is all publicly available.  One of the most important implications of the booksite is that it  empow.,. 1 1,  ers instructors and students to use their own computers to teach and learn the  .  . 1 ^. 1 1 1 1. 1.  material. Anyone with a comDuter and a browser can begin learninZ to DroZram  j puter and a browser can begin learning to program  by following a few instructions on the booksite. The process is no more difficult  than downloading a media Dlaver or a souR As with any website, our booksite is  b a media player or a song. As with any website, our booksite is  . 1 1.,  continually evolVing it is an essential resource for everyone who owns this book. In  j b. It is an essential resource for everyone who owns this book. In  . 1...  . 1 1 1 1. 1.. 1 1 r 1.  particular, the supplemental materials are critical to our goal of making computer  ..  1  science an integral comDonent of the education of all scientists and engineers.  .raf component of the education of all scientists and engineers.  For instructors, the booksite contains information about teaching. This  information is primarily organized around a teaching style that we have developed  1 1  1 1 1 1 re 1 1 1 1.  over the past decade, where we offer two lectures per week to a large audience,  past decade, where we offer two lectures per week to a large audience,  1 1 1 1. 1 1 1. 11  supplemented by two class sessions per week where students meet in small groups  .... m  with instructors or teaching assistants. The booksite has Dresentation slides for the  b assistants. The booksite has presentation slides for the  lectures, which set the tone.  For teaching assistants, the booksite contains detailed problem sets and  prod [he booksite contains detailed problem sets and  pro..,. 1  1. 1 1 1. r 1 1 1 1. 1  gramming projects, which are based on exercises from the book but contain much  1 .1 v 1.... 1 1 1 1  more detail. Each programming assignment is intended to teach a relevant concept  programming assignment is intended to teach a relevant concept  .,  in the context of an interesting application while presenting an inviting and  engage pplication while presenting an inviting and  engag. 1 11 1 1 al. r. 1 1.  lug challenge to each student. The progression of assignments embodies our  ape 1.. al 1 1.  proach to teaching programming. The booksite fully specifies all the assignments  1. 1 1 .1 1 1.  and provides detailed, structured information to help students complete them in  the allotted time, including descriptions of suggested approaches and outlines for  what should be taught in class sessions.  .lit in class sessions.  For students, the booksite contains quick access to much of the material in the  book, including source code, plus extra material to encourage self--learning.  Solu.. 1 1  nons are provided for many of the books exercises, including complete program  1 1 1 al. 1 1 r. r.. 1. 1.  code and test data. There is a wealth of information associated with programming  .. 1. 1 1, 1.  . 1 1. 1 1 1 1 1.  assignments, including suggested approaches, checklists, FAQs, and test data.  .nments, including suggested approaches, checklists, FAQs, and test data.  - -  yi 11    For casual readers (including instructors, teaching assistants, and students!),  the booksite is a resource for accessing all manner of extra information associated  b all manner of extra information associated  with the books content. All of the booksite content provides web links and other  .  routes to pursue more information about the topic under consideration. There is  r pie under consideration. There is  far more information accessible than any indiVidual could fully digest, but our goal  ) indiVidual could fully digest, but our goal  .. 1.  is to provide enough to whet any readers appetite for more information about the  t an to whet any readers appetite for more information about the  books content.  Acknowledgements This project has been under development since 1992, so  a project has been under development since 1992, so  far too many pooDle have contributed to its success for us to acknowledge them  ] people have contributed to its success for us to acknowledge them  all here. Special thanks are due to Anne Rogers for helping to start the ball rolling;  to Dave Hanson, Andrew APpel, and Chris van Wyk, for their patience in  explain. 1 1. 1,  lug data abstraction; and to Lisa WOrthington, for being the first to truly relish  the challenZe of teaching this material to first-year students. We also gratefully  ace o Lhis material to first-year students. We also gratefully  acknoWledZe the efforts of /dev/126 (the summer students who have contributed  b /dev/126 (the summer students who have contributed  so much of the content); the faculty, graduate students, and teaching staff who  have dedicated themselVes to teaching this material over the past 15 years here at  b past 15 years here at  Princeton; and the thousands of undergraduates who have dedicated themselves to  learning it.  b it.  .  IX

內(nèi)容概要

本書(shū)由計(jì)算機(jī)著名專(zhuān)家Robert Sedgewick編寫(xiě)。本書(shū)根據(jù)學(xué)習(xí)編程的四個(gè)階段(基本元素、函數(shù)、面向?qū)ο蟪绦蛟O(shè)計(jì)、算法和數(shù)據(jù)結(jié)構(gòu))來(lái)組織。基本元素包括變量、賦值語(yǔ)句、數(shù)據(jù)的內(nèi)置類(lèi)型、控制流(條件和循環(huán))、數(shù)組和輸入輸出、包括圖和聲音。函數(shù)包括庫(kù)函數(shù)和遞歸函數(shù),將程序劃分成可以獨(dú)立調(diào)試、維護(hù)和復(fù)用的程序段。然后介紹如何使用、創(chuàng)建和設(shè)計(jì)數(shù)據(jù)類(lèi)型。最后介紹了經(jīng)典的排序和搜索算法,同時(shí)也介紹了基本的數(shù)據(jù)結(jié)構(gòu)(包括堆棧、隊(duì)列和符號(hào)表)及它們的應(yīng)用,強(qiáng)調(diào)了使用科學(xué)方法來(lái)理解實(shí)現(xiàn)的性能特性。本書(shū)示例豐富,涉及了Java在各種學(xué)科之中的應(yīng)用,具有很高的參考價(jià)值?! ”緯?shū)適用于高等院校計(jì)算機(jī)及相關(guān)專(zhuān)業(yè)的研究生和本科生,以及從事編程工作的專(zhuān)業(yè)人員。

作者簡(jiǎn)介

Robert Sedgewick,普林斯頓大學(xué)計(jì)算機(jī)科學(xué)系教授,在美國(guó)斯坦福大學(xué)獲得博士學(xué)位,師從算法與程序設(shè)計(jì)大師Donald E. Knuth教授。他所著作的《算法》系列書(shū)在計(jì)算機(jī)界有著舉足輕重的影響力。

書(shū)籍目錄

PrefaceElements o[Programming 1.1 Your First Program  1.2 Built-in Types of Data  1.3 Conditionals and Loops  1.4 Arrays  1.5 Input and Output  1.6 Case Study: Random Web Surfer Functions and Modules 2.1 Static Methods  2.2 Libraries and Clients  2.3 Recursion  2.4 Case Study: Percolation Object-Oriented Programming 3.1 Data Types  3.2 Creating Data Types  3.3 Designing Data Types  3.4 Case study: N-body Simulation Algorithms and Data Structures 4.1 Performance  4.2 Sorting and Searching   4.3 Stacks and Queues   4.4 SymbolTables   4.5 Case study: small World

編輯推薦

  按學(xué)習(xí)編程的四個(gè)階段來(lái)組織本書(shū)?! ∈纠S富,涉及了Java在各種學(xué)科之中的應(yīng)用,具有很高的參考價(jià)值。  內(nèi)容齊備的配套網(wǎng)址,編碼示例、附加練習(xí)等內(nèi)容可以從

圖書(shū)封面

圖書(shū)標(biāo)簽Tags

無(wú)

評(píng)論、評(píng)分、閱讀與下載


    Java程序設(shè)計(jì) PDF格式下載


用戶(hù)評(píng)論 (總計(jì)4條)

 
 

  •   好,為了結(jié)合算法4才買(mǎi)的
  •   講的比較系統(tǒng)。我是計(jì)算機(jī)專(zhuān)業(yè)的,不過(guò)很久沒(méi)碰Java了,重新熟悉起來(lái)。
  •   喜歡不錯(cuò)大家好
  •   一起給送了幾本書(shū),太臟,還有的給折了。
 

250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版

京ICP備13047387號(hào)-7