高等院校计算机教材系列·C++程序设计:思想与方法(第2版)

高等院校计算机教材系列·C++程序设计:思想与方法(第2版) pdf epub mobi txt 电子书 下载 2025

翁惠玉 著
图书标签:
  • C++
  • 程序设计
  • 高等教育
  • 教材
  • 计算机科学
  • 算法
  • 数据结构
  • 面向对象
  • 第2版
  • 编程入门
  • 教学参考
想要找书就要到 静思书屋
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 人民邮电出版社
ISBN:9787115268761
版次:2
商品编码:10907464
包装:平装
开本:16开
出版时间:2012-01-01
用纸:胶版纸
页数:358
正文语种:中文

具体描述

内容简介

《高等院校计算机教材系列·C++程序设计:思想与方法(第2版)》以C++为语言环境,全面介绍结构化程序设计和面向对象程序设计。书中注重实践性,强调解决问题的方法,让读者不但学会知识而且还会灵活运用知识。为此,作者采用以问题求解引出知识点的方法,在介绍C++语言要素的同时,重点讲授程序设计的思想和方法,目标是让学生先了解学习的目的,提高学习的兴趣,最后能利用学到的知识解决某些应用领域的问题。
本书内容丰富,覆盖面广,而且在内容的安排上采用了模块化的结构,教学时可以根据实际情况灵活选取和合理安排,不影响整个知识的连贯性。第2版增加了更多的习题和实例,更加注重问题求解过程的分析,很多章还增加了“编程规范与常见错误”一节,指导学生养成良好的编程习惯。

作者简介

翁惠玉,上海人,上海交通大学博士,现为上海交通大学计算机系副教授,主要从事计算机网络、数据库和信息系统的研究,并长期担任ACM班计算机科学导论、程序设计和数据结构课程的主讲教师,其中程序设计课程于2004年被评为上海市精品课程。翁老师科研成果颇丰,多次获得上海市科技进步奖,并多次获得上海交通大学的优秀教学奖,编写了多本教材,如《数据结构:思想与实现》和《数据结构:题解与拓展》等,还翻译了多本国外的教材。

目录

第1章 绪论
1.1 计算机硬件
1.2 计算机软件
1.3 程序设计
1.3.1 算法设计
1.3.2 编码
1.3.3 程序的编译和调试
小结
习题

第2章 通过例子学习
2.1 第一个程序:输出Hello world
2.1.1 注释
2.1.2 预编译
2.1.3 主程序
2.1.4 名字空间
2.2 第二个程序:计算圆的面积和周长
2.3 数据类型
2.3.1 整型
2.3.2 实型
2.3.3 字符型
2.3.4 布尔型
2.3.5 枚举类型
2.3.6 用typedef 重新命名类型名
2.3.7 变量赋初值
2.3.8 用sizeof 了解占用的内存量
2.4 符号常量
2.5 算术运算
2.5.1 主要的算术运算符
2.5.2 各种类型的数值间的混合运算
2.5.3 整数除法和取模运算符
2.5.4 优先级与结合性
2.5.5 数学函数库
2.6 赋值运算
2.6.1 赋值运算符
2.6.2 赋值时的自动类型转换
2.6.3 赋值的嵌套
2.6.4 多重赋值
2.6.5 复合赋值运算
2.7 自增和自减运算符
2.8 强制类型转换
2.9 数据的输入/输出
2.9.1 数据的输入
2.9.2 数据的输出
2.1 0 编程规范及常见错误
小结
习题

第3章 逻辑思维--分支程序设计
3.1 关系运算
3.1.1 关系运算符
3.1.2 关系表达式
3.2 逻辑运算
3.3 if 语句
3.3.1 if 语句的形式
3.3.2 if 语句的嵌套
3.3.3 if 语句的应用
3.3.4 条件表达式
3.4 switch 语句及其应用
3.5 编程规范及常见错误
小结
习题

第4章 重复控制--循环程序设计
4.1 for 循环
4.1.1 重复n 次操作
4.1.2 for 语句的进一步讨论
4.1.3 for 循环的嵌套
4.2 while 循环
4.3 do-while 循环
4.4 循环的中途退出
4.5 枚举法
4.6 贪婪法
4.7 编程规范和常见错误
小结
习题

第5章 批量数据处理--数组
5.1 一维数组
5.1.1 一维数组的定义
5.1.2 数组元素的引用
5.1.3 一维数组的初始化
5.1.4 一维数组在内存中的表示
5.1.5 一维数组的应用
5.2 查找和排序
5.2.1 查找
5.2.2 排序
5.3 二维数组
5.3.1 二维数组的定义
5.3.2 二维数组的初始化
5.3.3 二维数组在内存中的表示
5.3.4 二维数组的应用
5.4 字符串
5.4.1 字符串的存储及初始化
5.4.2 字符串的输入/输出
5.4.3 字符串处理函数
5.4.4 字符串的应用
5.5 编程规范及常见错误
小结
习题

第6章 过程封装--函数
6.1 函数的定义
6.1.1 return 语句
6.1.2 函数示例
6.2 函数的使用
6.2.1 函数原型的声明
6.2.2 函数的调用
6.2.3 将函数与主程序放在一起
6.2.4 函数调用过程
6.3 数组作为函数的参数
6.4 带默认值的函数
6.5 内联函数
6.6 重载函数
6.7 函数模板
6.8 变量的作用域
6.9 变量的存储类别
6.9.1 自动变量
6.9.2 静态变量
6.9.3 寄存器变量
6.9.4 外部变量
6.1 0 递归函数
6.1 0.1 递归函数的基本概念
6.1 0.2 递归函数的应用
6.1 1 基于递归的算法
6.1 1.1 回溯法
6.1 1.2 分治法
6.1 1.3 动态规划
6.1 2 编程规范及常见错误
小结
习题

第7章 间接访问--指针
7.1 指针的概念
7.1.1 指针变量的定义
7.1.2 指针的基本操作
7.2 指针运算与数组
7.2.1 指针运算
7.2.2 用指针访问数组
7.3 指针与动态内存分配
7.3.1 动态变量的创建
7.3.2 动态变量的回收
7.3.3 内存泄漏
7.3.4 查找new 操作的失误
7.4 字符串再讨论
7.5 指针与函数
7.5.1 指针作为形式参数
7.5.2 数组名作为形式参数的再讨论
7.5.3 字符串作为函数的参数
7.5.4 返回指针的函数
7.5.5 引用与引用传递
7.5.6 返回引用的函数
7.6 指针数组与多级指针
7.6.1 指针数组
7.6.2 main 函数的参数
7.6.3 多级指针
7.7 多维数组和指向数组的指针
7.8 指向函数的指针
7.8.1 作为函数的参数
7.8.2 用于菜单选择
7.9 编程规范与常见错误
小结
习题

第8章 数据封装--结构体
8.1 记录的概念
8.2 C++语言中记录的使用
8.2.1 结构体类型的定义
8.2.2 结构体类型的变量的定义
8.2.3 结构体类型的变量的使用
8.2.4 结构体数组
8.3 结构体作为函数的参数
8.4 链表
8.4.1 链表的概念
8.4.2 单链表的存储
8.4.3 单链表的操作
8.5 编程规范及常见错误
小结
习题

第9章 模块化开发
9.1 自顶向下分解
9.1.1 顶层分解
9.1.2 prn_instruction 函数的实现
9.1.3 play 函数的实现
9.1.4 get_call_from_user 函数的实现
9.2 模块划分
9.3 设计自己的库
9.4 编程规范及常见错误
小结
习题

第10章 创建工具--类的定义与使用
10.1 从过程化到面向对象
10.1.1 抽象的过程
10.1.2 面向对象程序设计的特点
10.1.3 库和类
10.2 类的定义
10.3 对象的使用
10.3.1 对象的定义
10.3.2 对象的操作
10.3.3 this 指针
10.3.4 对象的构造与析构
10.4 常量对象与常量成员函数
10.5 常量数据成员
10.6 静态数据成员与静态成员函数
10.6.1 静态数据成员的定义
10.6.2 静态成员函数
10.6.3 静态常量成员
10.7 友元
10.8 编程规范及常见错误
小结
习题

第11章 运算符重载
11.1 什么是运算符重载
11.2 运算符重载的方法
11.3 几个特殊运算符的重载
11.3.1 赋值运算符的重载
11.3.2 下标运算符的重载
11.3.3 函数调用运算符重载
11.3.4 ++和--运算符的重载
11.3.5 输入/输出运算符的重载
11.3.6 重载函数的原型设计考虑
11.4 自定义类型转换函数
11.4.1 内置类型到类类型的转换
11.4.2 类类型到其他类型的转换
11.5 运算符重载的应用
11.5.1 完整的Rational 类的定义和使用
11.5.2 完整的DoubleArray类的定义和使用
11.6 编程规范与常见错误
小结
习题

第12章 组合与继承
12.1 组合
12.2 继承
12.2.1 单继承
12.2.2 基类成员在派生类中的访问特性
12.2.3 派生类对象的构造、析构与赋值操作
12.2.4 重定义基类的函数
12.2.5 派生类作为基类
12.2.6 将派生类对象隐式转换为基类对象
12.3 多态性与虚函数
12.3.1 多态性
12.3.2 虚函数
12.3.3 虚析构函数
12.4 纯虚函数和抽象类
12.4.1 纯虚函数
12.4.2 抽象类
12.5 多继承
12.5.1 多继承的格式
12.5.2 名字冲突
12.5.3 虚基类
12.6 面向对象设计范例
12.7 编程规范和常见错误
小结
习题

第13章 泛型机制--模板
13.1 类模板的定义
13.2 类模板的实例化
13.3 模板的编译
13.4 非类型参数和参数的默认值
13.5 类模板的友元
13.5.1 普通友元
13.5.2 模板的特定实例的友元
13.6 类模板作为基类
13.7 编程规范及常见错误
小结
习题

第14章 输入/输出与文件
14.1 流与标准库
14.2 输入/输出缓冲
14.3 基于控制台的输入/输出
14.3.1 输出流
14.3.2 输入流
14.3.3 格式化的输入/输出
14.4 基于文件的输入/输出
14.4.1 文件的概念
14.4.2 文件和流
14.4.3 文件的顺序访问
14.4.4 文件的随机处理
14.4.5 用流式文件处理含有记录的文件
14.5 基于字符串的输入/输出
14.6 编程规范及常见错误
小结
习题

第15章 异常处理
15.1 传统的异常处理方法
15.2 异常处理机制
15.2.1 异常抛出
15.2.2 异常捕获
15.3 异常规格说明
15.4 编程规范和常见错误
小结
习题

第16章 容器和迭代器
16.1 容器
16.2 迭代器
16.3 容器和迭代器的设计示例
16.3.1 用数组实现的容器
16.3.2 用链表实现的容器
小结
习题
附录 ASCII 表
参考文献

前言/序言


C++程序设计:精炼实践与核心洞察 (第二版) 课程目标: 本课程旨在为计算机科学及相关专业的学生提供坚实的C++程序设计基础,并深入探究编程思想与方法。通过系统学习,学生将掌握C++语言的各项核心概念,理解面向对象程序设计的精髓,并能运用这些知识解决实际问题。课程将侧重于培养学生的逻辑思维能力、问题分解能力以及编写高效、可维护代码的能力。 课程内容概述: 本课程并非对C++语言特性的罗列,而是聚焦于“思想与方法”,旨在引导学生跳出语法层面的束缚,真正理解“如何思考”和“如何构建”程序。我们将从最基础的编程概念入手,逐步深入到C++的强大功能,并始终贯穿贯穿高效的编程实践。 第一部分:编程启蒙与基础构建 编程世界初探: 何为程序? 我们将从理解程序的作用和本质开始,探讨程序如何与计算机交互,解决现实世界的问题。 开发环境搭建: 学习如何安装和配置C++开发环境,包括集成开发环境(IDE)的选择与使用,为后续的实践操作打下基础。 第一个C++程序: 编写并理解经典的"Hello, World!"程序,学习基本的输入输出操作,感受代码运行的魅力。 数据与表达: 基本数据类型: 深入理解整数、浮点数、字符等基本数据类型的特性、存储方式及其使用场景。 变量与常量: 学习如何声明、初始化和使用变量,理解常量的概念及其在程序中的作用。 运算符与表达式: 掌握算术运算符、关系运算符、逻辑运算符、位运算符等,理解表达式的求值过程,以及运算符的优先级和结合性。 类型转换: 学习不同数据类型之间的隐式与显式转换,理解转换可能带来的潜在问题。 控制程序的流程: 顺序结构: 理解程序按顺序执行的基本原理。 选择结构: 掌握 `if`、`else if`、`else`、`switch` 语句,学会根据条件进行逻辑判断和分支执行。 循环结构: 深入理解 `for`、`while`、`do-while` 循环,学习如何重复执行代码块,以及 `break` 和 `continue` 语句的妙用。 跳转语句: 理解 `goto` 语句的特性(并强调其不推荐使用的原因),以及 `break` 和 `continue` 在循环中的应用。 组织代码与数据: 函数: 学习如何定义、调用函数,理解函数的参数传递(值传递、引用传递),以及函数的返回值。掌握函数的模块化思想,提高代码的可读性和复用性。 作用域与生命周期: 理解变量的作用域(局部变量、全局变量)和生命周期,避免命名冲突和不必要的资源占用。 预处理指令: 学习 `include`、`define` 等预处理指令,理解它们在编译过程中的作用,例如头文件的包含和宏定义。 第二部分:结构化与面向对象编程精髓 数据结构的基石: 数组: 掌握一维、多维数组的声明、初始化和访问,理解数组的内存存储方式。 字符串: 学习C++中字符串的处理方式,包括C风格字符串和C++标准库中的 `std::string`。 指针: 深入理解指针的概念,包括指针的声明、赋值、解引用,以及指针与数组的关系。学习指针在内存管理和动态数据结构中的重要作用。 引用: 学习引用的概念,理解引用与指针的区别和联系,以及引用在函数参数传递和返回值中的优势。 结构体与自定义数据类型: 结构体: 学习如何定义和使用结构体,将相关数据组合成一个整体,创建用户自定义的数据类型。 枚举类型: 了解枚举类型的概念,用以定义一组命名的整型常量,提高代码的可读性。 面向对象编程(OOP)的引入: 类与对象: 深入理解类(Class)作为蓝图和对象(Object)作为实例的概念。学习如何定义类,包括数据成员(属性)和成员函数(行为)。 封装: 理解封装的意义,将数据和操作数据的方法捆绑在一起,并通过访问控制(`public`, `private`, `protected`)来保护数据,实现信息隐藏。 构造函数与析构函数: 学习构造函数在对象创建时的作用,以及析构函数在对象销毁时的清理工作。理解默认构造函数、拷贝构造函数以及带参数的构造函数。 访问控制: 掌握 `public`、`private` 和 `protected` 访问修饰符,理解它们如何控制成员的访问权限。 对象作为函数参数与返回值: 学习如何将对象传递给函数以及作为函数的返回值,理解传值与传引用的区别对对象的影响。 面向对象的进阶: 继承: 理解继承的概念,允许一个类(派生类)继承另一个类(基类)的属性和行为,实现代码的重用和扩展。学习不同继承方式(公有、保护、私有继承)的特性。 多态: 深入理解多态的威力,允许不同对象对同一消息做出不同的响应。学习虚函数、纯虚函数和抽象类的概念,以及运行时多态的实现机制。 运算符重载: 学习如何为自定义类型重载运算符,使其行为更符合直觉,提高代码的可读性。 友元函数与友元类: 理解友元机制,允许非成员函数或另一个类访问类的私有和保护成员,但需谨慎使用。 第三部分:高级特性与现代C++实践 内存管理: 动态内存分配: 学习使用 `new` 和 `delete` 进行动态内存分配与释放,理解堆(Heap)与栈(Stack)的区别。 内存泄漏与悬空指针: 识别和避免常见的内存管理错误,例如内存泄漏和悬空指针。 智能指针: 介绍C++11引入的智能指针(`std::unique_ptr`, `std::shared_ptr`, `std::weak_ptr`),学习如何利用智能指针自动管理内存,减少手动内存管理的负担。 输入输出流: 标准输入输出流: 深入理解 `std::cin`、`std::cout`、`std::cerr`、`std::clog` 的用法。 文件流: 学习如何使用 `fstream` 库进行文件的读写操作,包括文本文件和二进制文件。 流的状态与格式控制: 掌握流的状态标志(如 `failbit`, `eofbit`),学习如何控制输出的格式(如精度、对齐)。 模板: 函数模板: 学习如何编写泛型函数,使其能够处理不同类型的数据,实现代码的通用性。 类模板: 学习如何编写泛型类,构建可以存储不同类型数据的容器,例如自定义的链表或栈。 模板的实例化与特化: 理解模板的实例化过程,并学习如何对特定类型进行模板特化,实现更精细化的控制。 异常处理: 异常的概念与机制: 学习如何使用 `try`、`catch`、`throw` 来处理程序运行时可能发生的错误,提高程序的健壮性。 标准异常类: 了解C++标准库提供的常见异常类,并学会如何捕获和处理它们。 STL(Standard Template Library)概览: 容器: 介绍STL中的常用容器,如 `vector`、`list`、`deque`、`set`、`map` 等,理解它们的特性和适用场景。 迭代器: 学习迭代器的概念,理解它们如何作为访问容器元素的统一接口。 算法: 介绍STL中的常用算法,如排序、查找、遍历等,学会利用STL算法提高开发效率。 教学方法: 本课程将采用理论讲解、代码演示、实例分析、上机实践相结合的教学模式。强调“做中学”,鼓励学生积极动手编写代码,独立思考和解决问题。通过丰富的编程练习,学生将逐步内化所学的知识,提升编程技能。 学习成果: 完成本课程后,学生将能够: 1. 熟练掌握C++语言的基本语法和核心概念。 2. 深刻理解面向对象程序设计的思想,并能运用其解决实际问题。 3. 掌握数据结构和算法的基础知识,并能应用于程序设计中。 4. 具备良好的程序设计习惯,能够编写出清晰、高效、可维护的代码。 5. 理解C++高级特性,为进一步学习和深入研究打下坚实基础。 6. 能够独立完成小型到中型的C++项目开发。 课后延伸: 鼓励学生阅读优秀C++开源项目的源代码,参与编程社区的讨论,关注C++语言的最新发展,不断提升自身的编程素养和工程实践能力。

用户评价

评分

作为一名有着一定编程基础的开发者,我常常在想,如何才能让自己的 C++ 代码更上一层楼?现有的很多教程,虽然覆盖了 C++ 的基本语法,但对于如何构建大型、健壮的 C++ 程序,如何应对复杂的工程化挑战,却鲜有涉及。我渴望一本能够深入探讨 C++ 程序设计思想和方法论的书籍。我希望它能教会我如何进行高层次的抽象,如何运用设计模式来解决常见的编程问题,如何进行有效的错误处理和异常机制的设计。我尤其关注那些能够提升代码质量和开发效率的方面,比如如何利用 C++ 的标准库来简化开发,如何进行代码的重构和优化,以及如何进行性能分析和调优。我希望这本书能够提供一些实用的技巧和最佳实践,帮助我避免在实际开发中常见的陷阱。我想要理解,优秀的 C++ 程序是如何被设计出来的,它们具备哪些共性,又如何在不断变化的软件需求中保持其灵活性和可维护性。我期待通过阅读这本书,能够建立起更系统化的编程思维,从而在未来的开发生涯中,能够设计和实现出更优秀、更可靠的 C++ 软件。

评分

我一直觉得,学习编程最令人沮丧的部分就是那种“只知其一,不知其二”的感觉。比如,当你学会了一个基本的循环语句,你知道它能做什么,但你可能不知道它在不同场景下的具体实现和性能差异;当你了解了函数,你知道它能封装代码,但你可能不清楚如何通过函数设计来提高代码的可读性和复用性。我特别希望有一本书,能够带我进入C++的“思想世界”,让我不仅仅满足于“会用”,更要“精通”。我想理解,为什么C++会有如此丰富的特性,这些特性背后蕴含着怎样的设计哲学。我希望能够深入了解,比如,STL容器的底层实现原理,为什么在不同的场景下,选择不同的容器会有如此大的性能差异?再比如,RAII(Resource Acquisition Is Initialization)这种编程习惯,它到底是如何优雅地解决资源管理问题的?我希望这本书能够通过大量的实例和深入的分析,让我不仅看到“是什么”,更能理解“为什么”,并且知道“怎么做”才能做得更好。我渴望能够提升自己的代码品味,写出那种让其他程序员看了也会赞叹的“漂亮”代码。

评分

作为一名即将步入职场的计算机专业毕业生,我深知理论知识与实际应用之间的差距。在学校的学习过程中,虽然接触了C++,但很多时候都停留在书本的理论层面,对于如何在实际项目中应用C++,如何写出符合工程规范的代码,心中并没有一个清晰的蓝图。我常常在想,那些优秀的程序员是如何将复杂的逻辑组织得井井有条,又是如何高效地解决实际工程中遇到的各种问题的?我迫切需要一本能够 bridging this gap 的书籍。我希望它能不仅仅是讲解C++的语法和特性,更能教会我如何将这些知识融会贯通,如何进行模块化设计,如何进行性能优化,以及如何在团队协作中有效地进行代码管理和维护。我渴望能够学习到一些通用的编程思想和方法,这些思想和方法不仅适用于C++,更能指导我在未来学习其他编程语言和技术时,能够快速掌握其核心。我希望这本书能够帮助我建立起一种“工程思维”,让我明白,写代码不仅仅是为了实现功能,更是为了创造可维护、可扩展、可复用的高质量软件。

评分

作为一个热爱编程、总是想把基础打得更扎实的普通大学生,我最近一直在琢磨如何更深入地理解C++这门语言。市面上C++的书籍琳琅满目,但很多都停留在语法层面的讲解,对我这种希望从“为什么”到“怎么做”都弄明白的读者来说,总觉得少了点什么。特别是涉及到一些抽象的概念,比如面向对象的思想,指针的精髓,还有 STL 的设计哲学,很多书都只是浅尝辄止,没有把其中的脉络讲透。我总觉得,学编程不仅仅是记住一堆函数和语法规则,更重要的是理解背后的设计思想和解决问题的方法论。我希望有一本书,能够引导我跳出代码本身,去思考“如何写出更优雅、更高效、更易于维护的代码”,而不是仅仅满足于“代码能跑就行”。尤其是在面对一些复杂的项目时,如何合理地组织代码结构,如何有效地进行调试,如何利用现有的工具和库来提高开发效率,这些都是我非常渴望学习和提升的方面。我希望这本书能够提供一些系统性的指导,帮助我建立起一套自己的编程思维框架,让我在未来的学习和开发道路上走得更稳健。

评分

最近参加了一个学校组织的编程竞赛,虽然我之前也接触过一些C++的算法题,但在实际比赛中,面对那些复杂的题目,我常常感到力不从心。很多时候,问题就出在对C++一些高级特性理解不够透彻,比如模板元编程、右值引用和移动语义等等。这些概念在教科书中往往是一笔带过,或者给出的例子也比较简单,难以迁移到实际的复杂场景中。我感觉自己就像是在用一把钝刀子切菜,虽然也能勉强完成任务,但效率低下,而且容易出错。我特别希望能够找到一本真正能够“启发”我的书,它不只是罗列知识点,而是能够通过深入的剖析和精妙的案例,让我感受到C++强大的表现力和灵活性。我想要理解,为什么C++会有这些特性,它们的设计初衷是什么,又能在哪些场景下发挥出巨大的作用。我想知道,如何才能写出那些被誉为“C++ic”的代码,那些既高效又富有表现力的代码。我希望这本书能够像一位经验丰富的导师,循循善诱,带领我一步步揭开C++的神秘面纱,让我真正掌握这门语言的精髓,从而在未来的编程实践中游刃有余。

评分

40.1元买入,儿子说还可以

评分

还不错,看起来不是很正版

评分

40.1元买入,儿子说还可以

评分

书用来学习还是蛮清楚的

评分

书本不错,知识体系很全

评分

正在试用中,还可以吧…

评分

书本不错,知识体系很全

评分

比第一版多出一些常见错误和总结等,还蛮实用的,其余部分基本木有差别。。

评分

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.idnshop.cc All Rights Reserved. 静思书屋 版权所有