C++程序设计原理与实践

(美)Bjarne Stroustrup

文学

C++ 编程 程序设计 计算机 C/C++ Stroustrup Programming 程序开发

2010.7

机械工业出版社

目录
出版者的话 译者序 前言 第0章致读者 01本书结构 011一般方法 012简单练习、 习题等 013进阶学习 02讲授和学习本书的方法 021本书内容顺序的安排 022程序设计和程序设计语言 023可移植性 03程序设计和计算机科学 04创造性和问题求解 05反馈方法 06参考文献 07作者简介 第1章计算机、 人与程序设计 11介绍 12软件 13人 14计算机科学 15计算机已无处不在 151有屏幕和没有屏幕 152船舶 153电信 154医疗 155信息领域 156一种垂直的视角 157与C++程序设计有何联系 16程序员的理想 第一部分基 本 知 识 第2章Hello, World! 21程序 22经典的第一个程序 23编译 24链接 25编程环境 第3章对象、 类型和值 31输入 32变量 33输入和类型 34运算和运算符 35赋值和初始化 351实例: 删除重复单词 36组合赋值运算符 361实例: 重复单词统计 37命名 38类型和对象 39类型安全 391安全类型转换 392不安全类型转换 第4章计算 41计算 42目标和工具 43表达式 431常量表达式 432运算符 433类型转换 44语句 441选择语句 442循环语句 45函数 451使用函数的原因 452函数声明 46向量 461向量空间增长 462一个数值计算的例子 463一个文本处理的例子 47语言特性 第5章错误 51介绍 52错误的来源 53编译时错误 531语法错误 532类型错误 533警告 54连接时错误 55运行时错误 551调用者处理错误 552被调用者处理错误 553报告错误 56异常 561错误参数 562范围错误 563输入错误 564截断错误 57逻辑错误 58估计 59调试 591实用调试技术 510前置条件和后置条件 5101后置条件 511测试 第6章编写一个程序 61一个问题 62对问题的思考 621程序设计的几个阶段 622策略 63回到计算器问题 631第一步尝试 632单词 633实现单词 634使用单词 635重新开始 64文法 641英文文法 642设计一个文法 65将文法转换为程序 651实现文法规则 652表达式 653项 654基本表达式 66试验第一个版本 67试验第二个版本 68单词流 681实现Token_stream 682读单词 683读数值 69程序结构 第7章完成一个程序 71介绍 72输入和输出 73错误处理 74处理负数 75模运算: % 76清理代码 761符号常量 762使用函数 763代码格式 764注释 77错误恢复 78变量 781变量和定义 782引入单词name 783预定义名字 784我们到达目的地了吗 第8章函数相关的技术细节 81技术细节 82声明和定义 821声明的类别 822变量和常量声明 823默认初始化 83头文件 84作用域 85函数调用和返回 851声明参数和返回类型 852返回一个值 853传值参数 854传常量引用参数 855传引用参数 856传值与传引用的对比 857参数检查和转换 858实现函数调用 86求值顺序 861表达式求值 862全局初始化 87名字空间 871using声明和using指令 第9章类相关的技术细节 91用户自定义类型 92类和成员 93接口和实现 94演化一个类 941结构和函数 942成员函数和构造函数 943保持细节私有性 944定义成员函数 945引用当前对象 946报告错误 95枚举类型 96运算符重载 97类接口 971参数类型 972拷贝 973默认构造函数 974const成员函数 975类成员和“辅助函数” 98Date类 第二部分输入和输出 第10章输入/输出流 101输入和输出 102I/O流模型 103文件 104打开文件 105读写文件 106I/O错误处理 107读取单个值 1071将程序分解为易管理的 子模块 1072将人机对话从函数中分离 108用户自定义输出操作符 109用户自定义输入操作符 1010一个标准的输入循环 1011读取结构化的文件 10111内存表示 10112读取结构化的值 10113改变表示方法 第11章定制输入/输出 111有规律的和无规律的输入和输出 112格式化输出 1121输出整数 1122输入整数 1123输出浮点数 1124精度 1125域 113文件打开和定位 1131文件打开模式 1132二进制文件 1133在文件中定位 114字符串流 115面向行的输入 116字符分类 117使用非标准分隔符 118还有很多未讨论的内容 第12章一个显示模型 121为什么要使用图形用户界面 122一个显示模型 123第一个例子 124使用GUI库 125坐标系 126形状 127使用形状类 1271图形头文件和主函数 1272一个几乎空白的窗口 1273坐标轴 1274绘制函数图 1275Polygon 1276Rectangle 1277填充 1278文本 1279图片 12710还有很多未讨论的内容 128让图形程序运行起来 1281源文件 第13章图形类 131图形类概览 132Point和Line 133Lines 134Color 135Line_style 136Open_polyline 137Closed_polyline 138Polygon 139Rectangle 1310管理未命名对象 1311Text 1312Circle 1313Ellipse 1314Marked_polyline 1315Marks 1316Mark 1317Image 第14章设计图形类 141设计原则 1411类型 1412操作 1413命名 1414可变性 142Shape类 1421一个抽象类 1422访问控制 1423绘制形状 1424拷贝和可变性 143基类和派生类 1431对象布局 1432类的派生和虚函数定义 1433覆盖 1434访问 1435纯虚函数 144面向对象程序设计的好处 第15章绘制函数图和数据图 151介绍 152绘制简单函数图 153Function类 1531默认参数 1532更多的例子 154Axis类 155近似 156绘制数据图 1561读取文件 1562一般布局 1563数据比例 1564构造数据图 第16章图形用户界面 161用户界面的选择 162“Next”按钮 163一个简单的窗口 1631回调函数 1632等待循环 164Button和其他Widget 1641Widget 1642Button 1643In_box和Out_box 1644Menu 165一个实例 166控制流的反转 167添加菜单 168调试GUI代码 第三部分数据结构和算法 第17章向量和自由空间 171介绍 172向量的基本知识 173内存、 地址和指针 1731运算符sizeof 174自由空间和指针 1741自由空间分配 1742通过指针访问数据 1743指针范围 1744初始化 1745空指针 1746自由空间释放 175析构函数 1751生成的析构函数 1752析构函数和自由空间 176访问向量元素 177指向类对象的指针 178类型混用: 无类型指针和指针 类型转换 179指针和引用 1791指针参数和引用参数 1792指针、 引用和继承 1793实例: 列表 1794列表的操作 1795列表的使用 1710this指针 17101关于Link使用的更多讨论 第18章向量和数组 181介绍 182拷贝 1821拷贝构造函数 1822拷贝赋值 1823拷贝术语 183必要的操作 1831显示构造函数 1832调试构造函数与析构函数 184访问向量元素 1841对const对象重载运算符 185数组 1851指向数组元素的指针 1852指针和数组 1853数组初始化 1854指针问题 186实例: 回文 1861使用string实现回文 1862使用数组实现回文 1863使用指针实现回文 第19章向量、 模板和异常 191问题 192改变向量大小 1921方法描述 1922reserve和capacity 1923resize 1924push_back 1925赋值 1926到现在为止我们设计的 vector类 193模板 1931类型作为模板参数 1932泛型编程 1933容器和继承 1934整数作为模板参数 1935模板参数推导 1936一般化vector类 194范围检查和异常 1941附加讨论: 设计上的考虑 1942使用宏 195资源和异常 1951潜在的资源管理问题 1952资源获取即初始化 1953保证 1954auto_ptr 1955vector类的RAII 第20章容器和迭代器 201存储和处理数据 2011处理数据 2012一般化代码 202STL建议 203序列和迭代器 2031回到实例 204链表 2041列表操作 2042迭代 205再次一般化vector 206实例: 一个简单的文本编辑器 2061处理行 2062迭代 207vector、 list和 string 2071insert 和 erase 208调整vector类达到STL版本 的功能 209调整内置数组达到STL版本 的功能 2010容器概览 20101迭代器类别 第21章算法和映射 211标准库中的算法 212最简单的算法: find() 2121一些一般的应用 213通用搜索算法: find_if() 214函数对象 2141函数对象的抽象视图 2142类成员上的谓词 215数值算法 2151累积 2152一般化accumulate() 2153内积 2154一般化inner_product() 216关联容器 2161映射 2162map概览 2163另一个map实例 2164unordered_map 2165集合 217拷贝操作 2171拷贝 2172流迭代器 2173使用集合保持顺序 2174copy_if 218排序和搜索 第四部分拓 宽 视 野 第22章理念和历史 221历史、理念和专业水平 2211程序设计语言的目标和哲学 2212编程理念 2213风格/范型 222程序设计语言历史概览 2221最早的程序语言 2222现代程序设计语言的起源 2223Algol家族 2224Simula 2225C 2226C++ 2227今天的程序设计语言 2228参考资源 第23章文本处理 231文本 232字符串 233I/O流 234映射 2341实现细节 235一个问题 236正则表达式的思想 237用正则表达式进行搜索 238正则表达式语法 2381字符和特殊字符 2382字符集 2383重复 2384子模式 2385可选项 2386字符集和范围 2387正则表达式错误 239与正则表达式进行模式匹配 2310参考文献 第24章数值计算 241介绍 242大小、 精度和溢出 2421数值限制 243数组 244C 风格的多维数组 245Matrix库 2451矩阵的维和矩阵访问 2452一维矩阵 2453二维矩阵 2454矩阵I/O 2455三维矩阵 246实例: 求解线性方程组 2461经典的高斯消去法 2462选取主元 2463测试 247随机数 248标准数学函数 249复数 2410参考文献 第25章嵌入式系统程序设计 251嵌入式系统 252基本概念 2521可预测性 2522理想 2523生活在故障中 253内存管理 2531动态内存分配存在的问题 2532动态内存分配的替代方法 2533存储池实例 2534栈实例 254地址、 指针和数组 2541未经检查的类型转换 2542一个问题: 不正常的接口 2543解决方案: 接口类 2544继承和容器 255位、 字节和字 2551位和位运算 2552bitset 2553有符号数和无符号数 2554位运算 2555位域 2556实例: 简单加密 256编码规范 2561编码规范应该是怎样的 2562编码原则实例 2563实际编码规范 第26章测试 261我们想要什么 2611说明 262程序正确性证明 263测试 2631回归测试 2632单元测试 2633算法和非算法 2634系统测试 2635测试类 2636寻找不成立的假设 264测试方案设计 265调试 266性能 2661计时 267参考文献 第27章C语言 271C和C++: 兄弟 2711C/C++兼容性 2712C不支持的C++特性 2713C标准库 272函数 2721不支持函数名重载 2722函数参数类型检查 2723函数定义 2724C++调用C和C调用C++ 2725函数指针 273小的语言差异 2731结构标签名字空间 2732关键字 2733定义 2734C风格类型转换 2735void*的转换 2736枚举 2737名字空间 274动态内存分配 275C风格字符串 2751C风格字符串和const 2752字节操作 2753实例: strcpy() 2754一个风格问题 276输入/输出: stdio 2761输出 2762输入 2763文件 277常量和宏 278宏 2781类函数宏 2782语法宏 2783条件编译 279实例: 侵入式容器 术语表 参考书目 第五部分附录 附录AC++语言概要 附录B标准库概要 附录CVisual Studio简要入门教程 附录D安装FLTK 附录EGUI实现
【展开】
内容简介
本书是经典程序设计思想与C++开发实践的完美结合,是C++之父回归校园后对C++编程原理和技巧的全新阐述。书中全面地介绍了程序设计基本原理,包括基本概念、设计和编程技术、语言特性以及标准库等,教你学会如何编写具有输入、输出、计算以及简单图形显示等功能的程序。此外,本书通过对C++思想和历史的讨论、对经典实例(如矩阵运算、文本处理、测试以及嵌入式系统程序设计)的展示,以及对C语言的简单描述,为你呈现了一幅程序设计的全景图。 ● C++初学者的权威指南。无论你是从事软件开发还是其他领域的工作,本书将为你打开程序开发之门。 ● 中高级程序员的必备参考。通过观察程序设计大师如何处理编程中的各种问题,使你获得新的领悟和指引。 ● 全面阐释C++基本概念和技术。与传统的C++教材相比,本书对基本概念和技术的介绍更为深入,为你编写实用、正确、易维护和有效的代码打下坚实的基础。 ● 强调现代C++编程风格。本书从开篇就介绍现代C++程序设计技术,并揭示了大量关于如何使用C++标准库来简化程序设计的原理,使你快速掌握实用编成技巧。 ● 配套教辅资源丰富。本书网站(www.stroustrup.com/Programming)提供了丰富的辅助资料,包括实例源码、PPT、勘误等。
【展开】
下载说明

1、追日是作者栎年创作的原创作品,下载链接均为网友上传的的网盘链接!

2、相识电子书提供优质免费的txt、pdf等下载链接,所有电子书均为完整版!

下载链接
热门评论
  • 段涛1的评论
    下午在友谊书城看书,《C十十程序设计原理与实践》写得很好
  • 家有贤妻5578的评论
    收藏了《C 程序设计原理与实践 清晰版 300dpi高清PDF中文版》(Programming: Principles and Practice Using C )((美)斯特劳斯特鲁普)扫描版[PDF] #VeryCD资源收藏# 网页链接
  • NovemberEleven1111的评论
    我本C 程序设计原理与实践终于翻啦!哈哈
  • aridawson的评论
    我买了个C 程序设计原理与实践感觉不错哦~~使用心得:quite good,不仅仅是讲语法。有较强的可读性。。快来围观啊~ 网页链接