Paul Kelly,爱尔兰都柏林工业大学(DIT)的高级讲师Paul Kelly。Kelly 老师长期从事程序设计类课程的教学工作,在程序设计类课程教学方面教学实践经验丰富,在国外已先后出版多本程序设计语言类书籍。苏小红,哈尔滨工业大学计算机学院博士生导师,计算机应用技术专家,研究领域主要是色彩匹配,信息融合,空间计算,人工神经网络,进化算法,计算机图形学,灰色预测,彩色图像处理等。
目錄:
目 录
Chapter One Typographic Conventions(绪论)1
1.1 What is a computer program (什么是计算机程序 )1
1.2 Developing a computer program(开发计算机程序) 2
1.2.1 Program development cycle 2
1.3 Learning C++(学习 C++)4
1.4 Web site for this book(本书的网站)4
1.5 Brief history of C++(C++简史) 4
1.6 ANSIISO C++ standard(ANSIISO C++标准) 5
Chapter Two Beginning to Program in C++(C++编程入门)6
2.1 Constants(常量)6
2.2 Variables(变量)6
2.3 Simple output to the screen(简单的屏幕输出)7
2.4 Comments(注释)9
2.5 Data types(数据类型)10
2.5.1 Short integer data types10
2.5.2 Long integer data types10
2.5.3 Boolean data types11
2.5.4 Double floating-point data types11
2.5.5 Unsigned integer data types11
2.6 Data type sizes(数据类型的大小)11
2.7 Operators (运算符)12
2.7.1 The assignment operator12
2.7.2 Arithmetic operators12
2.7.3 Increment and decrement operators13
2.7.4 Combined assignment operators15
2.8 Operator precedence(运算符的优先级)16
2.9 Data type conversions and casts(类型转换和强转)18
Programming pitfalls20
Quick syntax reference21
Exercises22
Chapter Three Keyboard Input and Screen Output(键盘输入和屏幕输出)26
3.1 Simple keyboard input(简单的键盘输入)26
3.2 Manipulators(流操纵符)28
3.3 Single-character input and output(单个字符的输入和输出)30
Programming pitfalls32
Quick syntax reference32
Exercises32
Chapter Four Selection and Iteration(选择与循环)34
4.1 Selection(选择)34
4.1.1 The if statement34
4.1.2 The if-else statement35
4.1.3 Compound statements35
4.1.4 Logical operators37
4.1.5 Nested if statements37
4.1.6 The switch statement37
4.1.7 The conditional operator :39
4.2 Iteration(循环)40
4.2.1 The while statement40
4.2.2 The do-while loop42
4.2.3 The for statement43
4.2.4 Nested loops45
Programming pitfalls47
Quick syntax reference49
Exercises50
Chapter Five Arrays and Structures(数组和结构体)53
5.1 Arrays(数组)53
5.1.1 Introduction53
5.1.2 Initialising an array56
5.1.3 Two-dimensional arrays57
5.1.4 Initialising a two-dimensional array59
5.1.5 Multi-dimensional arrays60
5.2 Structures(结构体)60
5.2.1 Introduction60
5.2.2 Declaring a structure61
5.2.3 Initialising a structure variable63
5.2.4 Nested structures64
5.3 The typedef statement(typedef 语句)65
5.4 Arrays of structures(结构体数组)66
5.5 Enumerated data types(枚举数据类型)66
Programming pitfalls68
Quick syntax reference68
Exercises69
Chapter Six Strings(字符串)72
6.1 C-strings(C 风格字符串)72
6.2 C-string input and output(C 风格字符串的输入和输出)73
6.3 Accessing individual characters of a C-string(访问C 风格字符串中的单个字符)77
6.4 C-string functions(C 风格字符串函数)77
6.4.1 Finding the length of a C-string78
6.4.2 Copying a C-string78
6.4.3 C-string concatenation79
6.4.4 Comparing C-strings79
6.4.5 Other C-string functions79
6.4.6 Converting numeric C-strings to numbers80
6.5 C++ strings(C++ 字符串)80
6.5.1 string initialisation and assignment82
6.5.2 string concatenation84
6.5.3 string length, string indexing and sub-strings85
6.5.4 string replace, erase, insert and empty strings86
6.5.5 string searching88
6.5.6 string comparisons89
6.5.7 string input91
6.5.8 string conversions92
6.6 Arrays of strings(string 类型的数组)93
6.7 Character classification(字符分类)94
Programming pitfalls96
Quick syntax reference96
Exercises97
Chapter Seven Functions(函数)100
7.1 Introduction(引言)100
7.2 Function arguments(函数实参)102
7.3 Default parameter values(默认的形参值)105
7.4 Returning a value from a function(从函数返回一个值)106
7.5 Inline functions(内联函数)107
7.6 Passing arguments by value(按值传递实参)108
7.7 Passing arguments by reference(按引用传递实参)109
7.8 Passing a one-dimensional array to a function(向函数传递一维数组)112
7.9 Passing a multi-dimensional array to a function(向函数传递多维数组)115
7.10 Passing a structure variable to a function(向函数传递结构体变量)116
7.11 Passing a string to function(向函数传递字符串)118
7.11.1 Passing a C++ string to a function118
7.11.2 Passing a C-string to a function119
7.12 Recursion(递归)120
7.13 Function overloading(函数重载)122
7.14 Storage classes auto and static (auto 和static 存储类型)123
7.14.1 auto123
7.14.2 static124
7.15 The scope of a variable(变量的作用域)125
7.15.1 Block scope125
7.15.2 Global scope126
7.15.3 Reusing a variable name127
7.16 Mathematical functions(数学函数)129
7.16.1 Some trigonometric functions129
7.16.2 Pseudo-random number functions130
Programming pitfalls132
Quick syntax reference132
Exercises133
Chapter Eight Objects and Classes(对象和类)137
8.1 What is an object (什么是对象 )137
8.2 What is a class (什么是类 )137
8.3 Further examples of classes and objects(类和对象的更进一步的示例)140
8.3.1 A student class140
8.3.2 A bank account class140
8.4 Abstraction(抽象)141
8.5 Constructing a class in C++(用C++构造一个类)142
8.6 Using a class: defining and using objects(使用类:定义和使用对象)144
8.7 Abstract data types(抽象数据类型)145
8.8 Constructors(构造函数)146
8.9 Default class constructor(默认的类构造函数)148
8.10 Overloading class constructors(重载类构造函数)149
8.11 Constructor initialisation lists(构造函数初始化列表)151
8.12 Default argument values in a constructor(构造函数中的默认实参值)152
8.13 static class data members(静态类数据成员)154
8.14 Using return in a member function(在成员函数中使用return)157
8.15 Inline class member functions(内联成员函数)159
8.16 Class interface and class implementation(类的接口和类的实现)160
8.16.1 Separation of class interface and class implementation162
8.16.2 Use of namespaces in header files164
Programming pitfalls167
Quick syntax reference167
Exercises167
Chapter Nine Pointers and Dynamic Memory(指针和动态内存分配)171
9.1 Variable addresses(变量的地址)171
9.2 Pointer variables(指针变量)172
9.3 The dereference operator *(解引用运算符*)173
9.4 Using const with pointers(使用const 修饰指针变量)174
9.5 Pointers and one-dimensional arrays(指针和一维数组)175
9.6 Pointers and multi-dimensional arrays(指针和多维数组)177
9.7 Pointers to structures(指向结构体的指针)178
9.8 Pointers to class objects(指向类对象的指针)179
9.9 Pointers as function arguments(指针变量作为函数实参)180
9.10 Dynamic memory allocation(动态内存分配)182
9.10.1 Allocating memory dynamically for an array183
9.10.2 Initialisation with new184
9.10.3 Allocating memory for multi-dimensional arrays186
9.10.4 Out of memory error187
Programming pitfalls189
Quick syntax reference190
Exercises190
Chapter Ten Operator Overloading(运算符重载)193
10.1 The need for operator overloading(运算符重载的必要性)193
10.2 Overloading the addition operator +(重载加法运算符+)193
10.3 Rules of operator overloading(运算符重载的规则)200
10.4 Overloading ++(重载运算符++)200
10.4.1 Overloading prefix and postfix forms of ++203
10.4.2 Improving the prefix ++ operator member function206
10.5 Overloading relational operators(重载关系运算符)206
10.6 Overloading << and >> (重载运算符<<和>>)209
10.7 Conversion operators(转换运算符)214
10.8 Use of friend functions(使用友元函数)217
10.9 Overloading the assignment operator =(重载赋值运算符=)218
10.9.1 A class with a pointer data member218br
內容試閱:
Preface
This textbook teaches the fundamentals of programming using C, a programming language which supports the development of software using the object-oriented paradigm.
Although the book is primarily intended as a textbook for a programming module in a computer science course, it is equally suited to an individual familiar with another programming language and who now wants to learn how to program in C.
This book focuses on core concepts and features of C while keeping the explanations as simple as possible. Drawing on their professional experience, the authors teach C programming largely by way of examples that are organized for easy step-by-step learning.
Like so many other programming languages, C contains numerous English technical terms that are difficult for all students, including the native English speaking student.
Learn C through English and Chinese explains C concepts and terminology in English with additional explanatory annotations in Chinese. This bi-lingual approach will be appreciated by Chinese students and will help them focus on the C language without being over-burdened by English technical terminology. Despite C being available on a wide variety of platforms, this book is not specific to any particular machine, compiler, or operating system. All programs are designed to be portable with little or no modification to a wide variety of platforms.
Learn C through English and Chinese
Is a comprehensive introduction to programming in C.
Uses practical examples to explain difficult theoretical examples.
Uses a step-by-step approach with detailed explanation of programming examples.
Uses explanatory annotations written in Chinese.
Provides end-of-chapter programming pitfalls commonly experienced by learners.
Provides a quick syntax reference at the end of each chapter that summarises the C syntax covered in the chapter. This is a useful resource for experienced programmers as well as for learners.
Provides end-of-chapter exercises, allowing the learner to test and re-enforce their understanding of C.
Is suitable for students new to programming and those familiar with some other language, such as C or Basic, and who now wish to learn C.
Is accompanied by a web site containing the example programs, solutions to selected exercises, frequently asked questions and links to other useful resources.
Typographic Conventions
The line numbers to the left of the program examples are for reference purposes only and are not part of the C language.
When a new term is introduced it is in italic type.
C statements, keywords, program variables and values are in this font.
This font is used in examples to show values that should be typed at the keyboard by the user.