本章内容包括:
- C语言和C++的发展历史和基本原理
- 过程性编程技术和面向对象编程技术
- C++是如何在C语言的基础上添加面向对象概念的
- C++是如何在C语言的基础上添加通用编程概念的
- 编程语言标准
- 创建程序的技巧
C++简介
编程系统
C++融合3种编程系统:C语言代表的过程性语言传统,C++在C语言基础上添加的类代表的面向对象语言的传统和C++模板支持的通用编程传统。
C和OOP
C语言
UNIX操作系统
1.操作系统是能够管理计算机资源、处理计算机和用户之间交互的一组程序。例如,操作系统将系统提示符(系统提示符(Prompt)是指在计算机系统中,用于表示等待用户输入命令或操作的符号或文本)显示在屏幕上并运行程序。
2.为在不同的计算机(平台)而设计,提供了高级语言开发和运行的环境。
3.高级语言不针对特定的硬件,编译器(是一种程序)将高级语言翻译成计算机内部语言,就可以通过对每个平台使用不同编译器来在不同平台上使用同一个程序了。
汇编语言
1.能够生成简洁、快速的程序,并能有效地控制硬件
2.汇编语言依赖于计算机的内部机器语言
3.汇编语言是低级语言,它针对于特定的计算机处理器,不利于汇编程序移植
C语言能将低级语言的效率和高级语言的通用性、可移植性融合在一起
C语言编程原理
数据和算法
1.数据是程序使用和处理的信息,算法是程序使用的方法
2.C语言是过程性语言,强调编程的算法。
3.过程化编程首先要确定计算机采取的操作,然后使用编程语言来实现操作
4.数据+算法=程序
结构化编程:更有序的编程方法
自顶向下的设计
将大型程序分解成小型、便于管理的任务
结构化编程技术反映了过程性编程的思想,根据执行的操作来构思一个程序
面向对象编程
1.与过程性编程的不同点:强调数据;试图让语言满足问题
2.类:
(1)一种规范,对象是根据这种规范构造的新型数据结构;
(2)通常,类规定了可使用哪些数据来表示对象以及可以对这些数据执行哪些操作
(3)类定义(数据和方法)描述了对每个类可执行的操作,程序员可以i设计一个使用这些类的对象的程序。从低级组织(eg.类)到高级组织(eg.程序)的处理过程叫做自下向上编程
(4)OOP有助于创建可重用的代码
(5)多态让程序员能够为操作符和函数创建多个定义,通过编程上下文来确定使用哪个定义;继承让程序员能够使用旧类派生出新类
C++和通用编程
1.通用编程是C++支持的另一种编程模式,与OOP的目标(使用代码和抽象通用概念技术更简单
)相同
2.通用编程与OOP的不同点:
(1)OOP强调数据,通用编程强调算法
(2)OOP是管理大型工程的工具,通用编程提供了执行常见任务(如对数据排序或合并链表)的工具
(3)“通用”指的是创建独立于类型的代码;通用编程需要对语言进行扩展,以便可以只编写一个通用类型函数,并将其用于各种实际类型。C++模板提供了完成这种任务的机制
C++的起源
1.在C的基础上创建C++,因为C语言简单,适合系统编程、使用广泛且与UNIX系统联系紧密
2.C++程序可以使用已有的C软件库。库是编程模块的集合,可以从程序调用。
3.OOP赋予了C++将问题所涉及的概念联系起来的能力,C则赋予了C++紧密联系硬件的能力;OOP提供高级抽象,C提供低级硬件访问
可移植性和标准
1.可移植性存在硬件障碍,硬件特定的程序不可移植。将依赖于硬件的部分放在函数模块中,可以降低可移植性问题。
2.可移植性存在语言障碍。
程序创建
编程步骤
源代码->编译器(将源代码翻译成机器语言)->目标代码(C++使用库将目标代码与其他代码链接起来)->链接程序(链接指的是将目标代码同使用的函数的目标代码以及一些标准的启动代码组合起来;启动代码、库代码)->可执行代码
创建源代码文件
- 有些C++实现提供了集成开发环境(IDE);有些实现只能处理编译和链接阶段,要求在系统命令行上输入命令,在这种情况下,可以使用任何文本编辑器来创建和修改源代码。
- 给源文件命名必须使用正确的后缀,表示该文件是C++源代码,并告知编译器。后缀由句点和多个字符组成,这些字符被称为扩展名。
spiffy.cpp//spiffy是文件名,cpp是扩展名
| C++实现 | 源代码的扩展名 |
| UNIX | C、cc、cxx、c |
| GNU C++ | C、cc、cxx、cpp、c++ |
| Digital Mars | cxx、cpp |
| Borland C++ | Cpp |
| Watcom | cpp |
| Microsoft C++ | cc、cxx、cpp |
| Borland C++ | cp、cc、cxx、cpp、c++ | - 编译和链接
- cfront编译器: 将C++源代码翻译成C源代码,然后使用一个标准C编译器对其进行编译。 这种方法简化了向C引入C++的过程。其他实现也采用这种方法将C++引入到其他平台。
C++编译器:直接将C++源代码生成目标代码。这种方法直接加速编译进程,并强调C++是一种独立语言。
编译:翻译并编译。
总结
- C语言新增了诸如控制结构和函数等特性,以便更好地控制程序流程,支持结构化和模块化程度更高的方法;C++增加了面向对象编程和通用编程的支持,这有助于提高模块化和创建可重用代码。
- ISO/ANSI C++标准为确保众多实现的相互兼容提供了基础。
- 创建C++程序,可创建一或多个源代码文件,这些文件是文本文件,它们经过编译和链接后得到机器语言文件,后者构成可执行程序。创建程序在IDE中完成,IDE提供了用于创建源代码文件的文本编辑器、用于生成可执行文件的编译器和连接器以及其他功能(如工程管理和调试功能)。