收藏 分享(赏)

程序设计语言【C++基础-讲稿】.doc

上传人:微传9988 文档编号:2516844 上传时间:2018-09-20 格式:DOC 页数:104 大小:2.17MB
下载 相关 举报
程序设计语言【C++基础-讲稿】.doc_第1页
第1页 / 共104页
程序设计语言【C++基础-讲稿】.doc_第2页
第2页 / 共104页
程序设计语言【C++基础-讲稿】.doc_第3页
第3页 / 共104页
程序设计语言【C++基础-讲稿】.doc_第4页
第4页 / 共104页
程序设计语言【C++基础-讲稿】.doc_第5页
第5页 / 共104页
点击查看更多>>
资源描述

1、C+基础董国雄9 年 9 月C+基础第 1 页 共 104 页目 录第 1 章 绪 论 .71.1 程序设计语言的用途 71.2 计算机解决问题的过程 71.3 软件开发运行环境 81.4 程序设计方法的演进 91.5 软件开发之“三个代表” 91.6 编程语言的基本成分 101.7 编程语言学习之道 101.8 对于一个软件的认识 111.9 如何得到可执行程序 111.10 一个简单的 C+控制台程序 121.10.1 程序是文件的集合 .131.10.2 文件是语句的集合 .131.10.3 语句是关键字、字面值(常量) 、操作符、标识符的集合 .131.10.4 程序的功能由编写的语句

2、功能和库函数提供的功能共同实现 .161.11 Visual Studio C+ 6.0 .171.12 Visual Studio C+ 6.0 使用入门 .171.13 上机实习 181.13.1 目的 .181.13.2 内容 .191.13.3 反馈 .19第 2 章 数据类型与表达式 .212.1 基本数据类型 212.2 C+中简单的输入和输出,使用库函数和对象 222.3 C+运算符 222.4 表达式 232.5 C+的字符串 232.6 上机实习 242.6.1 目的 .242.6.2 内容 .242.6.3 反馈 .24第 3 章 程序设计初步 .263.1 基本观点 26

3、3.2 C+程序的文件组织和结构 263.3 C+的输入和输出 263.4 程序的流程控制 273.4.1 流程控制的必要性 .273.4.2 三种基本的流程框图 .273.4.3 流程控制的决策依据 .293.4.4 C+的流程控制语句 .293.4.5 举例 .303.5 上机实习 303.5.1 目的 .303.5.2 内容 .303.5.3 反馈 .30第 4 章 函数及其调用 .324.1 函数的作用 324.2 函数(function)的声明和定义 .324.3 多文件组织和函数调用 324.4 函数的返回值和参数 344.5 函数调用中实参和形参结合的内幕 354.5.1 存储程

4、序执行过程 .354.5.2 程序的执行期的内存映像 .354.5.3 栈结构及基本操作 .364.5.4 函数调用过程 .374.6 引用 374.6.1 引用的基本概念 .374.6.2 引用作为函数参数 .374.6.3 函数参数的值传递和地址传递 .374.7 函数重载(function overloading) 384.8 模版函数(template function) 394.9 函数的缺省(default)参数 .404.10 函数的嵌套调用和递归(recursive) 404.11 上机实习 404.11.1 目的 .414.11.2 内容 .414.11.3 反馈 .41第

5、5 章 变量的作用域和编译预处理 .435.1 作用域 从空间角度看 435.2 生存期 从时间角度看 435.3 可见性 县官不如现管 435.4 举例 综合各种规则 445.5 编译预处理 445.6 上机实习 445.6.1 目的 .445.6.2 内容 .445.6.3 反馈 .45第 6 章 数组 .46C+基础第 3 页 共 104 页6.1 数组的概念 466.2 一维数组的定义与初始化 476.3 二维数组的定义与初始化 476.4 一维二维数组的简单应用举例 476.5 数组作为函数的参数 486.6 上机实习 486.6.1 目的 .486.6.2 内容 .486.6.3

6、反馈 .49第 7 章 指针 .507.1 指针的基本概念 507.2 指针作为函数参数 527.3 指针与数组 527.3.1 指针与一维数组 .537.3.2 字符指针和 null 结尾的字符串 .537.3.3 指针与二维数组 .547.4 指针数组和指向指针的指针 557.4.1 指针数组 .557.4.2 指向指针的指针 .557.5 指向函数的指针 567.6 动态内存申请和释放(new 和 delete) 567.6.1 动态内存管理的概念 .567.6.2 new 和 delete 操作符的基本用法 .577.7 二维数组的动态申请 577.8 上机实习 597.8.1 目的

7、.597.8.2 内容 .597.8.3 反馈 .59第 8 章 自定义数据类型 .608.1 结构体(struct) .608.2 共用体/联合(union) 618.3 枚举(enumeration ) 618.4 typedef 定义新的类型名 628.5 上机实习 628.5.1 目的 .628.5.2 内容 .62第 9 章 类和对象 .649.1 什么是面向对象的程序设计 649.2 OOP 语言的部分特点 659.3 类的定义和实现 659.3.1 一个简单的问题 .659.3.2 类的定义 置于头文件 .669.3.3 类的实现 置于代码文件 .679.3.4 对象的声明(实例

8、化)和成员访问 .679.3.5 封装(encapsulation )和信息隐蔽(information hiding) .679.3.6 使用类和对象 成绩管理问题的解决 .689.4 更多的类的抽象和实现 689.5 上机实习 689.5.1 目的 .689.5.2 内容 .689.5.3 反馈 .68第 10 章 类和对象的进一步讨论 .7010.1 构造函数 对象创建时对其进行初始化 7010.2 析构函数 对象销毁时释放对象使用的资源 7010.3 构造函数和析构函数举例 7010.4 常对象和常成员函数 7110.5 对象的赋值与复制 7110.6 静态成员 7210.6.1 静态

9、数据成员 .7210.6.2 静态成员函数 .7210.7 友元 7210.7.1 普通友元函数 .7210.7.2 友元类 .7310.7.3 友元使用原则 .7310.7.4 拓展举例 .7310.8 上机实习 7310.8.1 目的 .7310.8.2 内容 .7410.8.3 反馈 .74第 11 章 运算符重载 .7511.1 基本概念 7511.1.1 什么是运算符重载? .7511.1.2 什么运算符可以重载? .7511.2 基本的复数类 Complex.7511.3 使用成员函数重载运算符 7611.4 使用友元函数重载运算符 7611.5 重载插入运算符和提取运算符 761

10、1.5.1 输入输出流库 .7611.5.2 为复数类重载“”运算符 .7711.6 上机实习 77C+基础第 5 页 共 104 页11.6.1 目的 .7711.6.2 内容 .7711.6.3 反馈 .77第 12 章 类的继承与派生 .7812.1 继承的基本概念 7812.2 成员访问属性和派生方式的组合效果 7812.3 派生类对基类的修改和扩展 7812.4 派生类对象的构造和析构过程 7912.5 说明继承的例子 7912.6 继承示例的实现(仅讨论 public 派生) 8012.7 基类对象与派生类对象的转换 8012.8 类的合成 8112.8.1 什么是类的合成? .8

11、112.8.2 类的合成举例 .8112.9 上机实习 8212.9.1 目的 .8212.9.2 内容 .8212.9.3 反馈 .82第 13 章 多态性与虚函数 .8313.1 多态性的概念 8313.2 说明多态的例子 8313.3 相关类的实现和虚函数 8413.3.1 实现示例类 .8413.3.2 虚函数 .8513.4 纯虚函数和抽象类 8513.4.1 纯虚函数 .8513.4.2 抽象类及其作用 .86第 14 章 文件的输入输出 .8714.1 为什么需要文件输入输出? 8714.2 C+的输入输出 8714.3 标准输出输入流 8814.3.1 基本操作 .8814.3

12、.2 isteam 的几个输入函数 .8814.3.3 标准输入输出举例 .8914.4 文件输出输入流 8914.4.1 文件的概念和分类 .8914.4.2 输入输出文件流类 .9014.4.3 文件输入输出的步骤 .9014.4.4 文本文件输入输出 .9014.4.5 二进制文件输入输出 .9014.4.6 文件操作举例 .9114.4.7 求解一批一元二次方程 .9114.4.8 文件 copy 程序 .92第 15 章 模版类 .9315.1 C+中多态的实现方式 9315.2 模版函数(template function) 9315.3 模版类 94第 16 章 复习问题 .95

13、16.1 知识、能力要点 9516.1.1 知识要点 .9516.1.2 能力要点 .9516.2 概念及基础 9616.3 简单编程 9816.4 实际应用 98第 17 章 杂说 .10017.1 图灵奖及部分获奖者 10017.2 相关从业方向 10217.3 应用领域角色 10217.4 主流开发技术 102C+基础第 7 页 共 104 页第 1 章 绪 论1.1 程序设计语言的用途1) 程序设计语言即 Programming Language,有数百种之多。2) 作为语言,可类比于自然语言。如字、词、语法、文法。3) 程序员和计算机可共同理解,确切的说,语言编译器可理解。4) 用于

14、逻辑的描述和表达实际问题,以仿真和模拟的方法求解问题。1.2 计算机解决问题的过程1) 问题求解过程分 析 抽 象问 题 域映 射问 题 模 型 设 计 程 序运 行 求 解设 计 算 法解 域反 向 映 射解 决 结 果2) 问题域和解域(虚拟机)问 题 域科 学 计 算信 息 系 统自 动 控 制 解 域运 行 环 境编 程 语 言程 序 对 象 仿 真模 拟3) 问题求解实质用语言(解空间)提供的程序对象(数值、字符、变量、结构、对象等)及其作用表达或仿真实际问题(问题空间)中的对象及其作用。显然,程序对象类型越丰富,表达和仿真能力越强、过程越简单。用熟悉的事实说明“对象愈丰富,表达能力

15、愈强,仿真过程愈简单” 。4) 面向对象程序设计语言的优势面向对象的语言具有创建新的程序对象类型的能力。利用类、封装、继承、多态机制实现。什么是面向对象(Object-Oriented)?类似问题有“面向二十一世纪” 、 “面向未来” ;“面向过程” 、 “面向服务” 、 “面向方面”等。1.3 软件开发运行环境软件的开发和运行总是在一定的环境之下进行,即在一定的软件和硬件支持或约束之下进行,它们的总和即为开发运行环境。可以从以下三个方面理解软件开发和运行环境:C+基础第 9 页 共 104 页 操作系统:Windows 系列、Unix 系列、Linux 系列、各种嵌入式 OS(包括移动设备中

16、的 OS,如 WinCE、Palm)等。 计算模式:单机、区域网络(LAN) 、广域网络(WAN ) 、单片机、单板机等。 开发工具:程序设计语言、软件架构、软件组件。1.4 程序设计方法的演进1) 线性程序设计计算机应用的初期,只解决简单的应用问题,程序设计语言缺乏。2) 结构化程序设计(Structured Programming)结构化程序设计语言诞生,强调模块独立、信息隐蔽、自上而下、逐步细化。基本理念是应用问题由表示它们的数据结构和施加在其上的算法构成。于是有:3) 面向对象的程序设计(Object-Oriented Programming)面向对象的程序设计语言诞生,强调抽象(Ab

17、stract) 、封装(Encapsulation ) 、继承(Inheritance ) 、多态(Polymorphism ) 。基本理念是客观世界是由对象和对象之间的交互构成。于是有:4) 基于构件的程序设计(Component Based Programming)尽管手段和技术在不断进步,软件业正在向基于构件的组装前进,但大多数软件仍然是定制的。人月神话之“没有银弹” 。1.5 软件开发之“三个代表” 用户业务的代表:成为领域专家 开发方法的代表:应用软件工程 开发技术的代表:掌握成熟技术1.6 编程语言的基本成分1) 语言核心(language core) 基本数据类型 变量定义和赋值

18、运算 基本输入输出 算术运算、关系运算、逻辑运算 流程控制语句 程序基本结构、多源文件组织 复合数据结构(扩展处理对象) 类和对象机制(扩展处理对象) 文件操作(数据持久化)2) 库函数(library) ,用语言核心写成 标准库函数 第三方库函数什么是库函数可以在程序中直接调用的、完成确定功能的命名程序代码组成。对比数学中的常见函数求值。1.7 编程语言学习之道 知晓基本知识。包括词汇(关键字) 、语法(基本语句) 、文法(程序基本结构) 。应知道语言提供了什么机制?具体语法或用法从哪里可以查到? 掌握基本方法。对常见问题的常规解决方法、对特殊问题的特别方法、遵循一般的设计原则和模式。C+基

19、础第 11 页 共 104 页 培养应用能力。应用语言提供的机制解决问题是关键, “双基”的掌握并不意味着你可以解决问题。如:你与作家、诗人、笔杆子相比,对于自然语言的应用能力。1.8 对于一个软件的认识 处理流程的观点 内容分类的观点1.9 如何得到可执行程序 基本工具及步骤文本编辑器编译器C o m p i l e r链接器L i n k e r源 程 序 目 标 程 序 可 执 行 程 序 IDE(Integrated Development Environment)编辑 + 编译 + 链接 + 工程管理 + 各种向导 + 调试器 + 分析设计器等。输 入 信 息 处 理 信 息 输 出

20、 信 息 典型的 C+ IDETurbo C+系列、 Visual C+系列、C+Builder 系列、GNU C+系列。1.10 一个简单的 C+控制台程序/ Main.cpp : Defines the entry point for the console application. /单行注释#include /编译预处理指令。包含基本输入输出流库头文件。using namespace std; /引用标准命名空间。标准库中的程序对象从中定义。int main(int argc, char* argv) /main 函数,程序的入口,运行时从此开始执行。cout ) ,一旦包含了 C+库

21、提供的头文件,应该声明对于标准命名空间的应用(using namespace std;). 预定义输入输出对象cout、cin。代表系统的标准输入输出设备。使用时须包含头文件 。插入符“” 、提取符“ ”。输入的任何数据必须有存放的地方,即须先声明变量(按其类型分配一定的内存) ,以保存输入的内容。 数学函数库函数在程序中将对应的头文件包含进来(#include ) ,就可以使用常用的数学函数求值。从头文件中或帮助中查看由哪些函数可使用C+基础第 23 页 共 104 页2.3 C+运算符 运算符简介算术、关系、逻辑、其它。见 P31。 优先级问题优先级无需死记,加括号解决。 类型转换隐含由低

22、级到高级,强制类型转换。举例。2.4 表达式 表达式定义由运算符连接可运算的成分,完全类似于数学运算表达式。 赋值运算符和复合赋值运算符“a = 3”、 “a += 3”。+=、 -=、 *=、 /=、 %=、 =、 Title = “国家主席”;Name = Name + “是” + Title;几乎支持你能够想象到的对字符串的任何操作,如:字符串连接、求长度、取子串、比较大小等等。举例。2.6 上机实习2.6.1 目的 会使用简单的数据类型 声明变量和赋以初值,会使用常变量 不同类型量间的混合运算,书写正确的运算表达式 可以进行简单的输入、输出、处理 会使用常见的数学函数求值 启发发现手段

23、和方法的不充分2.6.2 内容 在屏幕上输出一个由“*”组成的等腰三角形。 输入一个圆的半径,计算并输出圆的面积。 输入一个整数,将其变换/映射到 0 到 99 之间。C+基础第 25 页 共 104 页 用异或运算实现一个字符串的加密解密。 照抄课本第二章中的所有程序,编译运行,体会程序的功能和编制方法。2.6.3 反馈 源文件游离于工程之外。只有在工程的文件视图中的文件才是工程中的文件,Build 和 Run 工程时,与编辑窗口中是否打开文件、打开什么文件没有关系。 使用未赋初值变量。变量在声明之后,其值是不确定的,一般无意义,一定要在引用其值之前,先给其赋值。 从程序外部输入的数据只能保

24、存在变量当中。提取符()后只能是变量,不能是常量,可以认为常量在程序中是不分配内存空间的,因此外部输入的值不可能存放在常量中。输入数据时,应严格按照程序中的读入数据的变量类型和个数输入数据,多个数据之间用 space、tab、enter 分开,最后用 enter 宣告输入完毕。 不了解字符屏幕输出的特点。在屏幕的输出的时候,屏幕上由一个当前缺省的显示位置,随着输出的不断进行,该位置从上到下,从左到右移动,类似与我们在纸上书写习惯,其显著特点是不能从后面的位置倒退到前面的位置。 一个实际的问题如何转化为程序?首先确定程序的功能,即程序干什么,其次搞清楚程序的 IPO 模型,即程序需要什么输入、有

25、什么输出、进行什么处理。 积极思考、感到限制:a) 如何有选择的执行程序中的部分语句?事实上需要分支执行程序。b) 如何多次运行一个程序?事实上是需要循环运行程序。c) 可否编号处理 n 个变量?事实上是需要数组和循环。d) 同一问题解决方法多样,最简单的是什么?如何灵活使用已知知识。第 3 章 程序设计初步3.1 基本观点 面向过程以过程(Procedure )或函数( Function)为程序的基本构成单位,通过过程或函数之间的相互调用实现整个程序的功能。 过程或函数具有相对独立功能的操作(或语句)集合,就是一个 IPO,需要输入、进行处理、输出结果。一定要广义的理解输入、处理、输出,不仅

26、指数值形式。 程序结构程序 = 算法 + 数据结构算法:解决问题时设定的一系列操作。数据结构:数据的组织和存储方法。3.2 C+程序的文件组织和结构程序文件 = 头文件,源程序文件程序 = 程序文件 1,程序文件 2, 程序文件的结构:见 P47。3.3 C+的输入和输出 输入输出流库属于 C+的标准库,其中定义了输入输出流对象。 预定义输入输出对象cout、cin。代表系统的标准输入输出设备。使用时须包含头文件 。插入符“”用于输入。 输入输出格式控制使用时须包含。C+基础第 27 页 共 104 页 输入输出函数。如:char getchar() 、putchar(char)3.4 程序的

27、流程控制 流程控制:控制程序语句执行的顺序,缺省情况下,程序中的语句是按书写顺序依次执行的。3.4.1 流程控制的必要性举例。求一元二次方程的根,说明流程控制的必要性。从源程序代码角度看,程序的功能是由语句的不断执行完成的。对于稍微复杂一点的功能,需要判断不同的情况采取不同的措施,换句话说,需要程序的分支执行;对于大量相似的操作(如计算 n 个人的平均成绩) ,需要反复执行相同的代码,这需要程序循环执行。总而言之,需要控制程序的执行流程。业已在理论上证明,程序的任何执行流程均可用“顺序” 、 “分支” 、 “循环”实现。3.4.2 三种基本的流程框图 顺序结构语 句 1语 句 2 语 句 n语

28、句按照书写顺序依次执行。 分支结构逻 辑 表 达 式语 句 集真假逻 辑 表 达 式语 句 集 2假语 句 集 1真根据逻辑表达式的值有选择的执行语句集合。 循环结构C+基础第 29 页 共 104 页逻 辑 表 达 式语 句 集( 循 环 体 )真假首先判断逻辑表达式,为真时执行循环体,再判断逻辑表达式,反复进行,直至逻辑表达式为假。3.4.3 流程控制的决策依据用逻辑(布尔)值进行判断决策。如何得到逻辑值?了解各类运算的操作数和操作结果。运算 操作数 操作结果算术运算 算术值 算术值关系运算 算术值 逻辑值逻辑运算 逻辑值 逻辑值位运算的操作数和操作结果是什么?3.4.4 C+的流程控制语句

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 学术论文 > 大学论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报