第 1 章 C++ 编程体系概述
description
Transcript of 第 1 章 C++ 编程体系概述
第 1 章 C++ 编程体系概述
内容提要 本章主要介绍编程语言的产生历史,着重介绍
C 语言的产生过程和 C++ 语言的产生过程。
总体上介绍目前常见编程语言的体系划分,介绍 C++ 语言的优势、 C++ 语言包括的内容、C++ 的编译工具以及学习方法。
为了熟悉编程工具,利用程序说明 C++ 语言编写、编译和执行的过程。
编程语言的产生 最早的计算机是机器语言(也称为第一
代语言),完全由二进制数字 0 和 1 组成,能够被计算机直接识别和执行,具有灵活、速度快等优点。
但是,程序员要熟悉全部的指令及其含义,手工处理每条指令和每个数据。
C 语言的产生 1967 年剑桥大学学者 Richard 在 CPL 语言的基础上推出
了 BCPL 语言。 1970 年美国贝尔实验室对 BCPL 语言进行了简化,并取 BCPL 的第一个字母“ B” 作为新语言的名称。
1972 年,贝尔实验室的 Kernighan 和 Ritchie 对“ B” 语言进行了完善和扩充,在保留强大的硬件处理能力的基础上,扩充了数据类型,恢复了通用性,并取“ BCPL” 的第二个字母作为新语言的名称——这就是著名的 C 语言。
此 后 两 个 人 采 用 C 语 言 重 写 了 UNIX 操 作 系 统 , 随 着UNIX 的广泛应用, C 语言成为一种极受欢迎的计算机语言。 1987 年美国标准化协会( ANSI )制定了 C 语言标准,也就是 ANSI C 。
C++ 语言的产生 1982 年,美国 AT&T 公司贝尔实验室的 Bjarne Stroustrup 博
士在 C 语言的基础上,扩充了 Simula67 语言中面向对象的概念,发明了一种新的语言,这种新语言被命名为C ++ 语言。
1990 年, Bjarne Stroustrup 博士出版了 The Annotated C++ Reference Manual ( ARM ),由于当时还没有出台 C++标准, ARM 成为事实上的标准。 1990 年, C++ 引入了模板和异常的概念,使 C++ 具备了泛型编程和更好的错误处理能力。
1993 年 , 运 行 时 类 型 识 别 ( RTTI ) 和 命 名 空 间( Namespace )的概念被加入到 C++ 中。 1998 年, ANSI和 ISO 先后批准 C++ 语言成为美国国家标准和国际标准。
编程语言的体系划分 目前流行两大语法体系: Basic 语系和
C 语系。同一个语系下语言的基本语法是一样。两大语系如图
C C / C++ / J ava / Perl / C#/ J avaScri pt语系: 语言 语言 语言 语言Basi c Basi c / VB6. 0/ VB. NET/ VBScri pt/ VBA语系: 语言
程序设计方法 用计算机语言为计算机编写程序,解决某种问
题,称之为程序设计。程序设计需要一定的方法来指导,以便提高程序的可维护性、可读性、稳定性以及编程效率。
目前有两种重要的程序设计方法:结构化程序设计方法和面向对象程序设计方法。
结构化程序设计方法 结构化程序设计有两个主要特征:
( 1 )总是由三种基本结构组成,即由顺序结构、选择结构和循环结构构成。这三种结构都是单入口/单出口的程序结构。
( 2 )自顶向下、逐步求精和模块化是结构化程序设计方法中最典型、最具有代表性的方法。
结构化程序设计的缺点是: ( 1 )数据与处理数据的方法(函数)相分离,这
使得对函数的理解变得很难。 ( 2 )可重用性差。希望程序设计具有可重用性,
能够使用已经设计好的代码。
面向对象程序设计方法 面向对象程序设计语言的三个主要特征是:封装性、继承性和多态性。
封装性:也叫数据隐藏,用户无需知道内部工作流程,只要知道接口和操作就可以,一般用类来实现封装。
继承性:一种支持重用的思想,用现有的类型派生出新的子类,例如新型电视机在原有型号的电视机基础上,增加若干中功能,新型电视机是原有电视机的派生,继承了原由电视机的属性,并增加了新的功能。
多态性 ::指在类中定义的属性或行为,被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。
C++ 语言编程体系 C 语言是一种简单的语言。它真正提供的只有宏、
指针、结构、数组和函数。不管什么问题, C 语言都靠宏、指针、结构、数组和函数来解决。
C++不是这样。宏、指针、结构、数组和函数当然还存在,此外还有私有和保护型成员、函数重载、缺省参数、构造和析构函数、自定义操作符、内联函数、引用、友元、模板、异常、命名空间,等等。用 C++比用 C 具有更宽广的空间,因为设计时有更多的选择可以考虑。
C++ 语言的优势 总的来说, C++ 语言具有 4个方面的优
点。 ( 1 )降低程序开发和维护的成本。 ( 2 )比用 C 语言编写的程序更加有效率。 ( 3 ) C++允许程序员更自由地使用各种库。 ( 4) C++ 的异常处理机制能够保证在运行期间检查到错误,并转至相应的处理程序,减少了代码的长度和复杂度。
C++ 语言的内容 C++ 语言是一门难学易用的语言, C++ 的难
学,不仅在其广博的语法、语法背后的语义、语义背后的深层思维、深层思维背后的程序模型
还在于它提供了四种不同的程序设计思维模式:基于过程程序设计( Procedural-based ),基于对象程序设计( Object-based ),面向对象程序设计( Object-Oriented )和基于泛型程序设计( Generic Paradigm )。
C++ 程序结构初步 从总体上看, C++ 程序文件一般可以分成 4
个部分:预处理指令、全局说明、程序的主函数和用户自定义函数。预处理指令就是源程序中所包含的各种编译指令。
所有的预处理指令都以“ #”开始。 全局说明一般包括一些程序所要使用的全局变量、类说明等等;任何一个 C++ 程序都有且仅有一个主函数 main() 。
预处理指示符初步 头 文 件 通 过 include 预 处 理 指 令
( Preprocessor include directive )而成为程序的一部分。预处理指令用“ #” 标识。
#include 指示符读入指定文件的内容,有两种格式 :
#include <somefile.h> #include "myfile.h"
注释 注释是用来帮助程序员读程序,用来概括程序的算法、
标识变量的意义或者阐明一段比较难懂的代码。注释不会增加程序的可执行代码。在代码生成以前,编译器会将注释从程序删除。
C++ 有两种注释符号,一种是注释对( /*,*/),与C 语言中的一样。编译器把“ /*” 和“ */” 之间的代码当作注释。注释可以放在程序的任意位置,可以跨越多行程序。
另一种注释是双斜线( //),用来注释一个单行,程序行注释符右边的内容都被当作注释而被编译器忽略。
使用 C++ 语言编写简单代码 C++ 语言经过不断的发展,大体经过四
个主要的阶段。 1 、面向过程的 C 语言。 2 、面向对象的 C++ 语言。 3 、 SDK ( Software Development
Kit )编程。 4 、 MFC 编 程 ( Microsoft Foundation
Class :微软基类库)。
面向过程的 C 语言 案例名称:使用 C 语言编程程序名称: proj1_02.cpp #include <stdio.h>main(){
printf("Hello C\n");}
面向过程的 C++ 语言 案例名称:读取命令行参数程序名称: proj1_03.cpp #include <iostream.h>int main(int argc, char *argv[ ]){
int i;for (i = 1; i < argc; i++){
cout<<argv[i]<<endl;}return 0;
}
面向对象的 C++ 语言 案例名称:在 C++ 中使用类程序名称: proj1_04.cpp #include <iostream.h>class person{public: int heart; char *name; int run() // 定义成员函数 run()
{heart = heart + 20;return heart;
}};void main(){
int iRunStop;person ZhangSan;ZhangSan.name = "张三 ";ZhangSan.heart = 72;cout<< "姓名 :" <<ZhangSan.name <<endl;cout<< "跑步前心跳 " <<ZhangSan.heart<<endl;//run() 为对象的方法iRunStop = ZhangSan.run();cout<< "跑步后心跳 " <<iRunStop<<endl;
}
小结 本章需要了解 C 语言和 C++ 语言的产生和发
展,熟悉两种常用的程序设计方法 熟悉面向对象程序设计方法优于结构化程序设
计方法原因。 熟悉 C++ 语言的优势以及内容。掌握编程工
具 VC++6.0 的使用方法。 熟悉 C++ 程序的结构,掌握使用 VC++6.0
编写简单的 C++ 程序。
本章习题 一、选择题 1 、最初的计算机编程语言是 ___________ 。 A) 机器语言 B) 汇编语言 C) 高级语言 D) 低级语言 2 、下列各种高级语言中, ___________ 是面向对象编程语言。 A) BASIC B) C 语言 C) C++ 语言 D) Pascal 语言 3 、结构化程序设计的基本结构不包含 ___________ 。 A) 顺序 B) 选择 C) 跳转 D) 循环 4 、 ___________ 不是面向对象程序设计的主要特征。 A) 封装 B) 继承 C) 多态 D) 结构 5 、关于 C++ 与 C 语言的关系的描述中, ___________ 是错误的。 A) C 语言是 C++ 的一个子集。 B) C 语言与 C++ 是兼容的 C) C++ 对 C 语言进行了一些改进 D) C++ 和 C 语言都是面向对象的
二、填空题
1 、目前,有两种重要的程序设计方法,分别是 ___________和___________。
2 、 C++ 程序一般可以分成 4个部分,它们分别是 ___________、 ___________、 ___________和 ___________。
3 、目前流行两大语法体系: ___________和 ___________。 4、 C++ 提供了四种不同的程序设计思维模式: ___________,___________, ___________, ___________。
5、学习编程需要经历三大步: ___________ ; ___________ ;___________。
6 、 C++ 有两种注释符号,一种是 __________,另一种是 ___________。
三、简答题和程序设计题 1 、简述 C 语言和 C++ 包含的内容有何不同。
2 、简述 C++ 语言的优势。 3 、编写程序,并利用 VC++6.0 编译
成可执行文件,读取命令行参数。