01 c++程序设计--导论

这一节是华东师范大学潘建瑜所讲授的C++程序设计中的导论课。这一节主要是引入了C++语言,以及学习这门课程的要求: 掌握 C++ 基本语法规则 熟练阅读和分析 C++ 程序源代码 掌握 C++ 类与对象的相关知识 掌握算法设计的基本概念、方法与技巧 培养面向对象的程序设计能力 掌握基本的编程和调试技术等。后面则向我们简单介介绍了程序设计语言以及其发展、机器语言、汇编语言以及高级语言。
展开查看详情

1.C++ 语言 潘建瑜 华东师范大学数学系 jypan@math.ecnu.edu.cn

2.2 课程目标 掌握 C++ 基本语法规则 熟练阅读和分析 C++ 程序源代码 掌握 C++ 类与对象的相关知识 掌握算法设计的基本概念、方法与技巧 培养面向对象的程序设计能力 掌握基本的编程和调试技术

3.3 课程基本信息 教材 : 以课堂讲义 为主

4.4 课程基本信息 参考资料:见课程主页 上机时间 : 周四 7 、 8 (第二周开始) 答疑时间 : 周二晚上 18:30 — 20:30 地点 : 数学楼 213 课程主页: http://math.ecnu.edu.cn/~jypan

5.5 学习要求 按时上课、认真听讲 重基础, 多练习 ,勤思考 总评成绩: 平时作业 ( 上机、考勤 ) + 上机小测试 + 期终笔试

6.6 程序设计语言介绍 程序设计语言的发展 程序设计的方法 程序开发的基本概念

7.7 程序设计语言的发展 CPU 指令系统,由 0 、 1 构成的指令码组成;是计算机唯一能识别并直接执行的语言 用助记符号描述的指令系统如 ADD, SUB ;需翻译成机器语言,符号化的机器语言 机器语言 汇编语言 高级语言 面向过程 面向对象 面向应用 效率高 编程难

8.8 机器语言与汇编语言 机器语言 汇编语言 - 将机器指令映射为一些易懂的助记符,如 ADD 、 SUB 等 - 优点:与人类自然语言的鸿沟略有缩小,但仍相差甚远 - 缺点:抽象层次低,程序员仍需要考虑大量的机器细节 - 由 二进制指令组成的语言 - 优点:可以直接执行,效率很高 - 缺点:与人类自然语言存在着 巨大的鸿沟 难懂,不易修改,移植性差 例 : 1011 1111 1101 例 : ADD X, Y

9.9 高级语言 高级语言 更接近人类自然语言,编程方便 不能直接被计算机识别,必须经过 转换 才能被执行 高级语言屏蔽了机器的细节,提高了语言的抽象层次 程序中可以采用具有一定含义的数据命名和容易理解的执行语句,这使得在书写程序时可以联系到程序所描述的具体事物 x= x+y ; 例:

10.10 两种转换方式 解释类语言 由解释器把源程序翻译成机器语言,每翻译一条执行 一条,每执行一次就要翻译一次 优点:比较灵活,可以动态地调整、修改应用程序 典型代表: MATLAB 、 Python 编译类语言 由编译器将源程序编译成目标程序,然后执行目标程序 目标程序可以脱离其语言环境独立执行,可重复运行, 使用方便,执行效率高 典型代表: FORTRAN 、 C 、 C++

11.11 高级语言典型代表 FORTRAN : Formula Translation 1956 年,高级语言诞生的标志,简洁高效,科学计算主流语言 C 1972 年,通用的、过程式的编程语言,高效、灵活、功能丰富,主流的系统软件开发和科学计算语言 C++ 1983 年,继承 C 的所有优点,增加面向对象功能

12.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 ALGOL60 ALGOL68 Pascal Modula-2 BCPL B C C++ Java LISP PROLOG COBOL FORTRAN77 FORTRAN PL/1 Simula 67 Smalltalk 80 BASIC ANSI-BASIC QBASIC VB FORTRAN90 CPL

13.13 世界编程语言排行 该排名仅仅展现编程语言的 流行趋势 ,反映了某个编程语言的 热门程度 ,但并不代表它是一个最好的编程语言或是可以写出某些令人称赞的好程序。 Sep 2017 Sep 2016 Programming Language 1 1 Java // Android , web 2 2 C 3 3 C++ 4 4 C# // WP 5 5 Python 6 7 PHP // web 7 6 JavaScript // web 8 9 Visual Basic .NET http://www.tiobe.com/tiobe-index/

14.14 IEEE 2017 编程语言排行榜 —— Find the programming languages that are most important to you Interactive: The Top Programming Languages 2017

15.15 程序设计方法 面向 过程 的 结构化 程序设计方法 面向 对象 的程序设计方法 程序设计的方法 从结构化编程入手,学习面向对象编程思想

16.16 结构化 程序设计 设计思路 - 自顶向下、分而治之 , 采用模块分解与功能抽象 程序结构 - 按功能划分为若干个基本模块 - 各模块间的关系尽可能简单,功能上相对独立 - 其模块化实现的具体方法是使用子程序 / 函数 优点 - 有效地将一个较复杂的程序系统设计任务分解成许多 易于控制和处理的子任务,便于开发和维护

17.17 结构化 程序设计 不足 - 数据和处理数据的过程相互独立: 当数据结构改变时,所有相关的处理过程都要进行修改 - 随着程序规模不断扩大,模块数呈指数级递增,模块间的数据传递五花八门,同一程序中模块之间的关系错综复杂,结构化程序设计方法对程序的可维护性和重用性越来越力不从心。因此有必要让语言具有自建数据结构的能力。 软件危机: 落后的软件生产方式无法满足迅速增长的计算机软件需求, 从而导致软件开发与维护过程中出现一系列严重问题的现象。

18.18 面向对象 的方法 特点 程序模块间的关系更为简单,程序模块的独立性、数据的安全性就有了良好的保障 通过继承与多态性,可以大大提高程序的可重用性,使得软件的开发和维护都更为方便 将数据及对数据的操作方法封装在一起,作为 一个 整体 ( 对象 ) 对同类型对象抽象出其共性,形成 类 类通过一个简单的外部接口,与外界发生关系 对象与对象之间通过消息进行通信

19.19 程序开发 源程序 / 源代码、目标程序 / 目标代码 翻译程序 / 编译器:汇编、解释、编译 几个基本概念 编写源程序: C++ 源程序的后缀名为 . cpp 编译:生成目标程序 连接:将目标程序和库文件连接生成一个可执行文件 .exe 运行、调试 程序开发过程 程序开发

20.20 课程内容 计算机基础(信息表示与存储,算法) C++ 编程基础 C++ 面向过程的 结构化程序设计 C++ 面向对象程序设计 常见算法设计(排序算法) 本课程主要内容

21.21 结构化程序设计 C++ 基本元素:字符集,词汇,保留字 基本数据类型,变量,常量 表达式与语句 算法与三种基本结构 数组 引用,指针,字符串 函数,递归 简单的文件输入输出 预处理与多文件工程 C++ 结构化程序设计

22.22 面向对象方法 类与对象 构造函数与析构函数 结构体与联合体 数据的共享与保护 对象的生存期 静态成员与友元 继承与派生、访问控制 多态性、运算符重载 文件操作 标准模板库和泛型编程 C++ 面向对象程序设计