教学课件·面向对象程度设计基础(第2版)1.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《教学课件·面向对象程度设计基础(第2版)1.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学 课件 面向 对象 程度 设计 基础
- 资源描述:
-
1、第一章第一章 程序设计与C语言初步 算法、实体与程序 程序设计方法与程序设计语言 Backus-Naur范式 C+语言的程序结构 面向对象程序设计思维方式 概述 程序程序:完成一定功能的指令或语句序列 程序设计程序设计:编写计算机程序的活动 程序设计方法 程序设计语言 本课程以面向对象程序设计方法为核心,并选用C+程序设计语言为工具来介绍程序设计一、算法与程序 例例:求解最大公约数的欧几里德算法。步骤1:如果p a;cinb;c=a+b;coutc;n这个程序实现的算法是:输入a 输入b 计算a+b的和并存于c中 输出c的值(即a+b的和)a,b,c称为变量,是用来记录程序所需要的数据。程序在
2、计算机内部的表示 机器语言:二进制指令 汇编语言:用简单的符号表示二进制指令 高级语言 要把高级语言程序翻译成计算机能理解的机器语言 翻译 编译编译 解释解释二、程序设计的演变1.早期的程序设计手工作坊式手工作坊式2.结构化程序设计 采用三种基本结构:顺序、循环、选择分支顺序、循环、选择分支 单入口/单出口控制结构 以流程为主,围绕操作本身来设计3.面向对象程序设计 围绕被操作的数据来设计结构化程序设计 结构化程序设计的主要思想:由三种基本控制结构组成程序 这三种结构的示意图如下:可以看到,三种基本结构都具有以下特点:有一个入口。有一个出口。结构中每一部分都应当有被执行到的机会,也就是说,每一
3、部分都应当有一条从入口到出口的路径通过它(至少通过一次)。没有死循环(无终止的循环)。面向对象程序设计 1)实体:现实生活中的客观事物(人、动物、企业、部门等等)。一个实体应 有一个名字,应有描述这个实体特征的数据(状态),应有作用于这些实体上面的操作(行为)。2)对象:面向对象方法中的对象,是系统中用来描述客观事物的一个实体,它是用 于构成系统的一个基本单位。C+使用类类来描述对象三、C+语言程序 源程序(源代码)用程序设计语言编写的程序存放在一个文本文件中。后缀为.cpp 目标程序(目标代码)用编译程序将源程序转换为计算机能理解的形式 后缀为.obj 可执行代码 把目标代码和现有的库通过链
4、接程序产生可执行代码 后缀为.exe开发一个C+程序的过程源程序源程序目标程序目标程序可执行代码可执行代码库库编译程序链接程序.cpp.hpp.obj.exe1.编辑编辑 2.编译编译 3.链接链接 4.运行运行四、程序设计语言的定义程序设计语言的定义1.程序设计语言的描述 语法语法(syntax):由程序语言基本符号组成程序中各个语法成分的一组规则。语义语义(semantics):程序设计语言中按语法规则构成的各个语法成分的意义。2.字符集 字符集字符集:任何一种语言都是建立在某一个有限的字符集上的。C+语言使用的是ASCII字符集。单词单词:由字符集中的若干字符构成且具有某一特定含义的字符
5、序列。保留字保留字:有些语言中预先规定一些单词具有特殊的意义,并保留其名字,不允许程序员另作它用,这种单词被称为保留字。关键字关键字:还有些语言规定一些特殊单词在一定的上下文中具有预先定义的特殊意义,这种单词被称为关键字。注意注意 C/C是大小写字母是敏感的,同一字母的大写状态和小写状态将视为22个不同字符。下划线视为一个字母。3.语法描述 形式化定义程序设计语言的语法一般包括一个明确定义的字符集和一组有限的规则,这些规则规定符号如何组成表达式、语义 和程序等形式。较常用的语法定义方法是Backus-Naur范式(简写为BNF)和语法图。Backus-Naur范式(BNF)元符号:元符号:BN
6、F规定了一些符号作为描述语法的机制,称作元符号,包括::=表示“定义为”。|表示“或者”。表示“任选”,即方括号内的内容可以出现一次或不出现。表示“重复”,即花括号内的内容可以出现零次或任意多次。终结符号:终结符号:BNF中不必定义的符号或字符串,如A、B、0、1等 非终结符号:非终结符号:在用法规则中需要加以定义的语法变量,如字母、数字、标识符等每一个非终结符号都必须有一个规则定义它,非终结符号按规则总是可以展开为一串终结符号。例:标识符的BNF描述。标识符 :=字母 字母|数字 字母 :=A|B|Z|a|b|z|_数字 :=0|1|9 整数的BNF描述整数 :=正负号 无符号整数无符号整数
7、 :=数字 数字 正负号 :=+|-数字 :=0|1|9 非零数字非零数字 :=1|9数字 :=0|非零数字|0语法图 语法图是与BNF等价的另一种语法描述方法,但比BNF更加直观。一条BNF可转换成一个语法图BNF转换为语法图的规则 (1)每一个终结符号的出现对应于(2)每一个非终结符号X的出现对应于 X (3)形如P:=V1 V2 Vk则转换为 V1V2 Vk (4)形如P:=V1|V2|Vk则转换为V1V2Vk (5)形如P:=V 则转换为 V (6)形如P:=V 则转换为 V例:标识符可用以下语法图来定义 字母 字母 数字五、C C程序的基本结构程序的基本结构1.基本概念 程序程序:一
8、个程序是实体的属性及行为在计算机内的表示。类类:是对一群具有相同属性,表现相同行为的对象的描述。对象对象:具体的单个存在的实体。主函数主函数:具有特定名字“main”函数,由它去激活(调用)一个对象的行为(函数)。2.C+程序的基本结构 例1:一个很特殊的例子-只有一个主函数#include void main()coutComputer Science.n;注意:C+语言程序中有一个特殊的函数,称为主主函数函数main(),这是程序执行的入口,用于实现单入口/单出口结构。一个一个C语言程序有且只有一个主函数语言程序有且只有一个主函数/银行帐户存取款程序#include /利用函数库iostr
9、eam提供的操作在屏幕上输出数据class ACCOUNT float balance;/本帐户当前的余额public:/开设帐户,同时存入金额amount.ACCOUNT(float amount)balance=amount;/往帐户中存款,存款金额为amount.void deposit(float amount)balance=balance+amount;例2:一个带有类完整的C+语言程序。/从帐户中取款,取款金额为amount;如果取款成功则用1表示,否则用0表示。int withdraw(float amount)if(amountbalance)/判断是否透支 return 0
10、;/如果透支则不作取款,返回0表示取款不成功 else balance=balance-amount;/减少当前的存款余额 return 1;/返回1表示取款成功 /查询帐户中当前的余额。float get_balance()return balance;/返回当前的余额 ;/主函数main()/开设帐户 ACCOUNT acc1(500);/开设第一个帐户acc1,同时存入500元 ACCOUNT acc2(1500);/开设第二个帐户acc2,同时存入1500元 /存款与取款 acc1.deposit(255.5);/往帐户acc1中存入255.5元 acc2.deposit(500);/
11、往帐户acc2中存入500元 acc2.withdraw(700);/往帐户acc2中取出700元 acc1.withdraw(700);/往帐户acc1中取出700元 acc2.withdraw(350);/往帐户acc2中取出350元 /查询余额并在屏幕上显示 cout帐号1的余额还有acc1.get_balance()元n;cout帐号2的余额还有acc2.get_balance()元n;return 1;由一个主函数,加上0个或者若干个其它函数、0个或若干个其它的类组成。程序的执行总是从主函数开始,而不管主函数放在程序的任何位置;由主函数调用其它函数(类的行为)、主函数执行完,程序也就
12、执行完。归纳归纳C程序的基本构成:3.两种退化现象 1)只有函数,没有类。除主函数外,还可能有一些游离的函数,这些游离的函数不属于任何类。只有函数,没有类的C程序。#include /利用该库将数据输出到屏幕 int main()cout矩形的面积是”78*42balance)return 0;else balance=balance-amount;return 1;float get_balance()return balance;第二章第二章 基本数据类型 类型的作用 标识符命名风格 常量与变量 基本数据类型 运算符与表达式 隐式类型转换与强制类型转换 简单的输入输出2.1 数据类型概述
13、一、类型 C+语言中,用八进制、十六进制与十进制表示数据。十进制:A=496在计算机中的八进制:以0前导A=0760存储形式都是十六进制:以0 x前导A=0 x1F0 111110000 数据类型:具有相同特性的所有数据的集合。用数据类型:具有相同特性的所有数据的集合。用它来说明一个数据在数据分类中的归属。它来说明一个数据在数据分类中的归属。二、类型的作用 数据类型:决定了数据的表示方式、占内存的空间大小、取值范围以及对数据可以使用的操作。C+中,所有的数据都属于特定的类型 遵循“先声明、后使用”的原则 三、C+语言的类型 在对类型的要求上程序设计语言分两类:强类型:编译时严格检查操作是否满足
14、数据所属类型 弱类型:C+语言介乎强与弱类型之间 C+数据类型基本类型复合类型整型字符型浮点型枚举类型空类型单精度浮点型双精度浮点型指针类型引用类型构造类型函数类型数组结构体共用体2.2 保留字、标识符、常量与变量 一、单词 C+程序中有五种单词:保留字保留字、标识符标识符、常量常量、运算符运算符和分界符分界符(包括空格、制表符、回车换行、注释、(包括空格、制表符、回车换行、注释、分号)分号)。二、保留字、标识符 C+程序中使用标识符对程序中的各个元素加以命名。标识符是由字母或下划线开头的字母、数字与下划线的标识符是由字母或下划线开头的字母、数字与下划线的序列序列。C+程序中区分大小写,例如A
15、ccount和account是两个不同的标识符。选择合适的标识符一个简单的C+语言程序#include void main()const float PI=3.14;float Area;float r=2;Area=PI*r*r;/计算圆的面积coutThe area is:Area;输出结果:The area is 12.560000三、常量与变量 1、常量常量:在程序的执行过程中,其值不能被改变的量称为常量 常量区分为不同的类型 整型常量整型常量:10;20;t=5;浮点型常量浮点型常量:-1.2 字符常量字符常量:A;ch=B;字符串常量字符串常量:“Avafjfkslfjskljf”
16、符号常量符号常量:用标识符表示的常量 C+程序中符号常量的定义方法:1)#define 常量名常量名 常量值常量值宏定义预处理命令 例1:#define PI 3.14159 main()float Area;float r=1.5;Area=PI*r*r;2)const 数据类型数据类型 标识符名标识符名=常量值常量值;例2:main()const float PI=3.14159;float Area,r=1.5;Area=PI*r*r;2、变量:在程序执行过程中其值可以改变的量称为变量 C+程序中,所有变量都须先定义后使用 变量定义的方法数据类型 变量名(=初值);可连续定义同一类型的多
17、个变量int a,b,c;int a;int b;int c;变量通过赋值运算改变其值Area=PI*r*r;A=2*10;四、简单的输入输出 输出:将程序中的数据送到外部设备称为程序的输出 输入:程序从外部设备获得一个变量的值称为输入 C+语言的输入输出 利用库iostream实现简单的输入输出 使用iostream提供的库函数前,须加入:#include 输出:cout输出内容;例:cout“半径为”r “的圆面积为”输入变量;例:cin r;注意:由双引号括住的东西不经任何处理就输出,由双引号括住的东西不经任何处理就输出,否则就输出变量或表达式的值。否则就输出变量或表达式的值。2.3 基
18、本数据类型 一、基本数据类型(字宽:占内存的空间大小)类型类型名字宽取值范围有效位(有符号)字符(signed)char1-128127无符号字符unsignedchar10255(有符号)短整型(signed)short(int)2-32,76832,767(-215215-1)(有符号)整型(signed)int2/4-32,76832,767(-215215-1)无符号短整型 unsignedshort(int)2065,535无符号整型unsigned(int)2/4065,535(0216-1)(有符号)长整型(signed)long(int)4-2,147,483,6482,147
19、,483,647无符号长整型 unsignedlong(int)404,294,967,295单精度浮点型 float43.4E-383.4E+387位双精度浮点型 double81.7E-3081.7E+30815位长双精度浮点型longdouble103.4E-49321.1E+493219位浮点数据的有效位 在C+程序中,单精度浮点型数据的表示以6位小数为准 标准显示6位小数例:a=1234.567890;但是由于存储空间的限制,单精度浮点数在存储时只存7位有效位,即a的值存为1234.567,当输出a的值时,显示1234.567xxx,小数点的后3位是随机数。二、转义字符 用单引号括起
20、来的单个字符是字符型常量a b 使用转义字符来表示单引号本身、以及使用转义字符来表示单引号本身、以及ASCIIASCII码表中的控制字符(不可见字符)码表中的控制字符(不可见字符)转义字符的表示方法:用单引号括住,以反斜杆开头C+语言预定义的转义字符 转义字符ASCII码含义a0 x07响铃符(BEL-bell)n0 x0A换行符(LF-LineFeed)t0 x09水平制表符(HT-HorizontalTable)v0 x0B垂直制表符(VT-VerticalTable)b0 x08回退符(BS-Backspace)r0 x0D回车符(CR-CarriageReturn)f0 x0C换页符(
21、FF-FormFeed)0 x5C反斜杠()?0 x3F问号(?)0 x27单引号()0 x22双引号()八进制的表示:ddd1到3位八进制数所代表的字符 十六进制的表示:xdd1到2位十六进制数所代表的字符例1:char ch;ch=n;coutch;/输出回车例2:表示单引号表示反斜杆例3:字符常量A的表示方法:Ch=A;Ch=65;八进制表示法 Ch=101;Ch=0101;十六进制表示法 Ch=x41;Ch=0 x41;若coutch;则都输出字符A三、字符串常量 字符串常量是括在双引号内的字符序列,简称字符串。例如:This is a string constant.His name
22、 is John.n注意:x07n张三正在开会。n 如:coutncomputeris;输出形式:computeris如果用cout ncomputeris;则出错,语法错。应用举例 例例1输入矩形的长和宽,求面积输入矩形的长和宽,求面积 include void main()/操作系统把操作系统把main函数执行当调用一个函数执行当调用一个/函数,要求执行完后返回一个值函数,要求执行完后返回一个值 float width,length,area;coutlength;coutwidth;arealength*width;cout“n Area(length*width)=”area (x+y
23、)-z表达式的求值次序:由表达式中各种运算符的优先级与结合性决定1)括号内的运算先做2)优先级高的运算先做3)同一优先级的按结合性进行二、C+语言的运算符优先优先级级类型类型操作数操作数个数个数结合性结合性运算符运算符运算符名称运算符名称用法解释用法解释1初等运算1自左向右()圆括号冗余的括号不会减慢表达式的运算速度,鼓励多使用括号使运算顺序清晰 数组下标.成员运算符 结构名.成员名-成员指针运算符 结构指针名-成员名2单目运算1自右向左!逻辑非(逻辑运算)非零为真:!0得1,!1得0按位取反(位运算)产生整数的二进制反码例:a=5;(0000 0000 0000 0101)a为 1111 1
24、111 1111 1010+自增(算术运算)1)后置运算z=a+;=z=a;a=a+1;2)前置运算z=+a;=a=a+1;z=a;自增、自减运算只适用于整型变量-自减(算术运算)-负号(不是减法)例:a=b*-c;=a=b*(-c);(类型)强制类型转换float a=1.5;double b;b=(double)a;强制强制把把a转换成转换成double类型,使计算精度提高类型,使计算精度提高sizeof求类型长度计算其后内容占用的存储空间大小单位:字节。1)sizeof(数据类型名)2)sizeof(表达式);*指针运算(间接取值)取指针变量所指向的值&取地址取对象的地址:&对象;例:a
25、=&f;b=*a;temp=&*a;=temp=&(*a);优先优先级级类型类型操作数操作数个数个数结合性结合性运算符运算符运算符名称运算符名称用法解释用法解释3算术运算2自左向右*/乘法除法注意:区分浮点除和整除10.0/4.0得2.5,10/4得2:结果截尾%求余运算(模除)只能用于整数的求模。10%6=4 10.0%6不合法4算术运算2自左向右+-加法减法5位运算2自左向右左移右移只适用于整型、字符型变量变量变量左移位数左移位数 在右端补零,移出的位永远丢失例:a=0 xAF;a右移位数右移位数 右移方法1)对于无符号数:左边高位补02)对于有符号数:*逻辑右移:左边高位补0 *算术右移
展开阅读全文