PowerPoint 演示文稿

Download Report

Transcript PowerPoint 演示文稿

C++ 语言
潘建瑜
华东师范大学数学系
[email protected]
1
课程目标
 掌握 C++ 基本语法规则
 熟练阅读和分析 C++ 程序源代码
 掌握 C++ 类与对象的相关知识
 掌握算法设计的基本概念、方法与技巧
 培养面向对象的程序设计能力
 掌握基本的编程和调试技术
2
课程基本信息
 教材:《C++程序设计》
Y. Dainel Liang著, 王刚等译, 机械工业出版社, 2008
 参考资料:
《
C++ Primer Plus 中文版) 》第 6 版
S. Prata 著, 张海龙等译, 人民邮电出版社, 2012.
《C++
Primer 中文版》第 5 版
S.B. Lippman 等编著, 王刚等译, 电子工业出版社, 2013.
《C++程序设计语言》(特别版)
B. Stroustrup 著, 裘宗燕译, 机械工业出版社, 2010.
3
课程基本信息
 上课时间:周四 1、2
 上机时间:周二 5、6 (第二周开始)
 答疑时间:周四下午 14:40 — 16:40
地点:数学楼 213
 课程主页:
http://math.ecnu.edu.cn/~jypan/Teaching
学习要求
 按时上课、认真听讲
 重基础,多练习,勤思考
I hear and I forget, I see and I remember,
I do and I understand -- Confucius
 总评成绩:
平时作业(上机实验)+期中上机考试+期末笔试
No Pains, No Gains
5
程序设计语言介绍
6
主要内容
 程序设计语言的发展
 程序设计的方法
 程序开发的基本概念
7
程序设计语言的发展
机器语言
汇编语言
CPU指令系统,由0、1构成
的指令码组成;是计算机唯
一能识别并直接执行的语言
用助记符号描述的指令系统
如 ADD, SUB;需翻译成机
器语言,符号化的机器语言
效率高
编程难
高级语言
面向过程
面向对象
面向应用
8
机器语言与汇编语言
 机器语言
- 由二进制指令组成的语言
- 优点:可以直接执行,效率很高
- 缺点:与人类自然语言存在着巨大的鸿沟
难懂,不易修改,移植性差
例如:1011 1111 1101
 汇编语言
- 将机器指令映射为一些易懂的助记符,如 ADD、SUB 等
- 优点:与人类自然语言的鸿沟略有缩小,但仍相差甚远
- 缺点:抽象层次太低,程序员仍需要考虑大量的机器细节
不能直接执行,需要编译生成目标程序后才能执行
例如:ADD X, Y
9
高级语言
 高级语言
- 高级语言屏蔽了机器的细节,提高了语言的抽象层次
- 程序中可以采用具有一定含义的数据命名和容易理解的
执行语句,这使得在书写程序时可以联系到程序所描述的
具体事物
- 不能直接被计算机识别,必须经过转换才能被执行
例: x=x+y;
 更接近人类自然语言
10
两种转换方式
 解释类语言
- 由解释器把源程序翻译成机器语言,每翻译一条执行
一条,每执行一次就要翻译一次,效率比较低
- 优点:比较灵活,可以动态地调整、修改应用程序
- 典型代表:Basic 、MATLAB
 编译类语言
- 由编译器将源程序编译成目标程序,然后执行目标程序
- 目标程序可以脱离其语言环境独立执行,可重复运行,
使用比较方便,效率较高
- 典型代表:FORTRAN 、C、C++
11
典型的高级语言
- FORTRAN:Formula Translation
1956年,高级语言产生的标志,简洁高效,科学计算主流语言
- BASIC:Beginner's All-purpose Symbolic Instruction Code
1964年,面向大众,特别是大学生
-C
1972年,通用的、过程式的编程语言,高效、灵活、功能
丰富,主流的系统软件开发和科学计算语言
- C++
1983年,继承 C 的所有优点,增加面向对象功能
12
高级语言的发展
52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96
Ada
Modula-2
Pascal
ALGOL60
ALGOL68
CPLBCPL B
C
C++
Smalltalk 80
Java
Simula 67
BASIC
FORTRAN
ANSI-BASIC
FORTRAN77
QBASIC VB
FORTRAN90
PL/1
COBOL
LISP
PROLOG
13
世界编程语言排行
Aug 2014
1
Aug 2013
2
http://www.tiobe.com/
Programming Language
C
2
1
Java
// Android
3
4
Objective-C
// IOS
4
3
C++
5
7
Basic
6
6
C#
7
8
Python
8
5
PHP
9
11
Perl
10
9
JavaScript
// WP
 展现编程语言的流行趋势,反映了某个编程语言的热门程度,但并不代
表它是一个最好的编程语言或是可以写出某些令人称赞的好程序。
14
程序设计方法
 程序设计的方法
 面向过程的结构化程序设计方法
 面向对象的程序设计方法
从结构化(过程化)编程入手,学习面向对象编程思想。
15
结构化程序设计
 设计思路
- 自顶向下、分而治之,采用模块分解与功能抽象
 程序结构
- 按功能划分为若干个基本模块
- 各模块间的关系尽可能简单,功能上相对独立
- 每一模块内部均是由顺序、选择和循环三种基本结构组成
- 其模块化实现的具体方法是使用子程序/函数
 优点
- 有效地将一个较复杂的程序系统设计任务分解成许多
易于控制和处理的子任务,便于开发和维护
16
结构化程序设计
 缺点
- 把数据和处理数据的过程分离为相互独立的实体
- 当数据结构改变时,所有相关的处理过程都要进行修改
- 随着程序规模不断扩大,模块数呈指数级递增,模块间的
数据传递五花八门,同一程序中模块之间的关系错综复杂,
结构化程序设计的规范已经不能保证程序的正确性,可维护
性和重用性,必须让语言具有自建数据结构的能力。
软件危机:
落后的软件生产方式无法满足迅速增长的计算机软件需求,
从而导致软件开发与维护过程中出现一系列严重问题的现象。
17
面向对象的方法
 将数据及对数据的操作方法封装在一起,作为一个整体(对象)
 对同类型对象抽象出其共性,形成类
 类通过一个简单的外部接口,与外界发生关系
 对象与对象之间通过消息进行通信
 特点
- 程序模块间的关系更为简单,程序模块的独立性、数据的
安全性就有了良好的保障
- 通过继承与多态性,可以大大提高程序的可重用性,使得
软件的开发和维护都更为方便
 几个基本概念:对象、类、封装、继承、多态性
18
程序开发
 程序开发
 几个基本概念
- 源程序/源代码、目标程序/目标代码
- 翻译程序/编译器:汇编、解释、编译
 程序开发过程
- 编写源程序:C++ 源程序的后缀名为 .cpp
- 编译:生成目标程序
- 连接:将目标程序和库文件连接生成一个可执行文件 .exe
- 运行调试
19
课程内容
 本课程主要内容
 C++编程基础
 面向过程的结构化程序设计
 面向对象程序设计的概念
20
结构化程序设计
 C++结构化程序设计
 C++基本元素:字符集,词汇,保留字
 基本数据类型,变量,常量
 表达式与语句
 算法与三种基本结构
 数组
 引用,指针,字符串
 函数,递归
 简单的文件输入输出
 预处理与多文件工程
21
面向对象方法
 C++面向对象程序设计
 类与对象
 构造函数与析构函数
 结构体与联合体
 数据的共享与保护
 对象的生存期
 静态成员与友元
 继承与派生、访问控制
 多态性、运算符重载
 文件操作
 标准模板库和泛型编程
22