C++ 语言 潘建瑜 华东师范大学数学系 [email protected] 1 课程目标 掌握 C++ 基本语法规则 熟练阅读和分析 C++ 程序源代码 掌握 C++ 类与对象的相关知识 掌握算法设计的基本概念、方法与技巧 培养面向对象的程序设计能力 掌握基本的编程和调试技术 2 课程基本信息 教材:《C++程序设计》 第三版 Y. Dainel Liang 著, 刘晓光等译, 2013 参考资料: 《 C++ Primer Plus 中文版) 》第 6 版 S. Prata 著, 张海龙等译, 人民邮电出版社, 2012. 《C++ Primer 中文版》第 5 版 S.B. Lippman 等编著, 王刚等译, 电子工业出版社, 2013. 《C++程序设计语言》(特别版) B. Stroustrup 著, 裘宗燕译, 机械工业出版社, 2010. 3 课程基本信息 上课时间:周三 1、2 上机时间:周一 7、8 (第二周开始) 答疑时间:周一晚上 18:30 — 20:30 地点:数学楼 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年,高级语言产生的标志,简洁高效,科学计算主流语言 -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 世界编程语言排行 Sep 2014 2 Sep 2015 1 http://www.tiobe.com/ Programming Language Java // Android 1 2 C 4 3 C++ 5 4 C# 8 5 Python 7 6 PHP 9 7 JavaScript 11 8 Visual Basic .NET 12 9 Perl 3 10 Objective-C // WP // IOS 展现编程语言的流行趋势,反映了某个编程语言的热门程度,但并不代 表它是一个最好的编程语言或是可以写出某些令人称赞的好程序。 14 程序设计方法 程序设计的方法 面向过程的结构化程序设计方法 面向对象的程序设计方法 从结构化(过程化)编程入手,学习面向对象编程思想。 15 结构化程序设计 设计思路 - 自顶向下、分而治之,采用模块分解与功能抽象 程序结构 - 按功能划分为若干个基本模块 - 各模块间的关系尽可能简单,功能上相对独立 - 每一模块内部均是由顺序、选择和循环三种基本结构组成 - 其模块化实现的具体方法是使用子程序/函数 优点 - 有效地将一个较复杂的程序系统设计任务分解成许多 易于控制和处理的子任务,便于开发和维护 16 结构化程序设计 不足 - 把数据和处理数据的过程分离为相互独立的实体,当数据 结构改变时,所有相关的处理过程都要进行修改 - 随着程序规模不断扩大,模块数呈指数级递增,模块间的 数据传递五花八门,同一程序中模块之间的关系错综复杂, 结构化程序设计方法对程序的可维护性和重用性越来越力不 从心。因此有必要让语言具有自建数据结构的能力。 软件危机: 落后的软件生产方式无法满足迅速增长的计算机软件需求, 从而导致软件开发与维护过程中出现一系列严重问题的现象。 17 面向对象的方法 将数据及对数据的操作方法封装在一起,作为一个整体(对象) 对同类型对象抽象出其共性,形成类 类通过一个简单的外部接口,与外界发生关系 对象与对象之间通过消息进行通信 特点 - 程序模块间的关系更为简单,程序模块的独立性、数据的 安全性就有了良好的保障 - 通过继承与多态性,可以大大提高程序的可重用性,使得 软件的开发和维护都更为方便 18 程序开发 程序开发 几个基本概念 - 源程序/源代码、目标程序/目标代码 - 翻译程序/编译器:汇编、解释、编译 程序开发过程 - 编写源程序:C++ 源程序的后缀名为 .cpp - 编译:生成目标程序 - 连接:将目标程序和库文件连接生成一个可执行文件 .exe - 运行调试 19 课程内容 本课程主要内容 计算机基础(信息表示与存储,算法) C++编程基础 C++面向过程的结构化程序设计 C++面向对象程序设计的概念 20 结构化程序设计 C++结构化程序设计 C++基本元素:字符集,词汇,保留字 基本数据类型,变量,常量 表达式与语句 算法与三种基本结构 数组 引用,指针,字符串 函数,递归 简单的文件输入输出 预处理与多文件工程 21 面向对象方法 C++面向对象程序设计 类与对象 构造函数与析构函数 结构体与联合体 数据的共享与保护 对象的生存期 静态成员与友元 继承与派生、访问控制 多态性、运算符重载 文件操作 标准模板库和泛型编程 22
© Copyright 2025 ExpyDoc