第2章数据表达与程序流程控制.ppt

上传人:本田雅阁 文档编号:2252410 上传时间:2019-03-11 格式:PPT 页数:79 大小:539.01KB
返回 下载 相关 举报
第2章数据表达与程序流程控制.ppt_第1页
第1页 / 共79页
第2章数据表达与程序流程控制.ppt_第2页
第2页 / 共79页
第2章数据表达与程序流程控制.ppt_第3页
第3页 / 共79页
亲,该文档总共79页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第2章数据表达与程序流程控制.ppt》由会员分享,可在线阅读,更多相关《第2章数据表达与程序流程控制.ppt(79页珍藏版)》请在三一文库上搜索。

1、第2章数据表达与程序流程控制,简单对象的声明与使用,运算符,表达式,语句,预定义数据类型,数据的存储:存储空间分配和数据输入,数据的处理,结果数据的输出,函数,2.1 内部预定义类型,存储器组织 编译过的程序和数据都存储在计算机的存储器中。计算机的存储器按字节(Byte)编址,0xFFFFF0,0xFFFFF1,存储单元地址,内容,存储单元中的内容可以经常变化的。而地址相对不变。,字长 一台计算机用来表示一个整数(int)所需的字节数。字长一定,这台计算机中能表示的整数范围就确定。比如字长为4(即32位)的机器中,无符号整数(unsigned int)表示范围:04294967295。 000

2、00000 00000000 00000000 00000000=0 00000000 00000000 00000000 00000001=1 00000000 00000000 00000000 00000010=2 00000000 00000000 00000000 00000011=3 11111111 11111111 11111111 11111111= 232-1=4294967295,一个数据存储在计算机中: 从哪个地址开始?占用几个字节?,01000001,A在机器中的表示,预定义基本数据类型:程序设计语言事先定义好,供程序员直接使用,不同类型的数据在内存中所占用的字节数不

3、同,内部预定义或简单对象,通常用来表示复杂对象的属性。,C+的基本数据类型,基本类型 整型 短整型(short int) 整型(int) 长整型(long int) 字符型(char) 浮点型 单精度型(float) 双精度型(double) 长双精度型(long double),基本类型 布尔型(bool) 构造类型 枚举类型(enum) 数组类型 结构体类型(struct) 共用体类型(union) 类类型(class) 指针类型 引用类型 空类型(void),数据类型,C+并没有统一规定各类数据的精度、数值范围和在内存中所占的字节数,各C+编译系统根据自己的情况作出安排。 For exa

4、mle:ch1/1-1.cpp,2.2 简单对象的声明与使用,任何对象,先声明,后读写,在高级语言中,通常不直接用存储器地址来标识存储空间,而用变量来表示,如: int number; /声明一个整型变量,变量名为number number = 1; /变量number的内容为1 number = 2; /变量number的内容可以覆盖 char ch; ch = A; ch = a;,标识符和关键字,对象名技术上称为”标识符”,C+语言的标识符规定由字母、数字以及下划线组成,且第一个字符必须是字母或下划线。 保留字(关键字): 它们是C+语言规定的、赋予它们以特定含义、有专门用途的标识符。比

5、如: int、if、for等。,常量,在程序中不变的值。如: x = x + 123; 常量的值是不能改变的,一般从其字面形式即可判别是否为常量。常量包括两大类,即数值型常量(即常数)和字符型常量。如: 整型常量: 123 缺省为int型,十进制 0173 八进制的int型 0x53 十六进制的int型 123L(或123l) 为long int的十进制,字符常量: A 字符常量用单引号扩起来的单个字符。在内存中以ASCII码存储。故可以: int i = a; char ch = 97; ch = ch + 1;,字符常量-特殊打印字符: n 换行符 r 回到本行开始处 t 水平制表符 0

6、空字符 For exapme: ch1/1-2.cpp,字符串常量: “A” 字符 串常量用双引号扩起来的一系列字符。字符串在内存中总是以0空字符结束。,01100101,“A”在内存中的表示,0,实型常量: 4.6,-1.23 为double型十进制常量; .23 23. 47e-4 科学表示法 47*10-4 67.F(或67.f) 为float型十进制常量,C+的数据包括常量与变量,常量与变量都具有类型。由以上这些基本数据类型构成更复杂的数据结构_对象。比如: Washer , IceBox。,Class student private: int number; string name;

7、 string sex; string speciality; grade double; ;,例2.1:下面的程序用公式 C = (5/9) (F-3 2 ) 打印华氏温度与摄氏温度对照表: 0 -17 20 -6 40 4 60 15 Example 2,变量的声明与使用 在C+语言中,所有变量都必须先说明后使用。说明用于声明变量的性质(大小和操作),它由一个类型名与若干所要说明的变量组成,例如: int Fahrenheit,celsius; Fahrenheit = 10; 变量的赋值 int a=10; cina; 变量的输出 cout a;,2.3 运算符,算术运算符 + 单目正,

8、 +a - 单目负, -a + 二目加, a+b - 二目减, a-b * 二目乘, a*b / 对于两个整数,取整,如: 1/3=0 对于浮点数,就是普通除法 % 表达式x % y的结果是x除以y的余数,当y能整除x时,x % y的结果为0。,+ 增1运算 - 减1运算 例:int n=3,k; k = +n; /前缀增1,先加1后使用,k=4,n=4 k = n+;/后缀增1,先使用后加1 ,k=3,n=4 n=3; k = -n; /前缀减1,先减1后使用,k=2,n=2 k = n-;/后缀减1,先使用后减1 ,k=3,n=2,算术运算符的优先级和结合性,单目 + - + - 双目 *

9、 / % 双目 + -,右结合(从右向左),-5 + 3%2 = (-5) + (3%2) = -4 3 * 5 % 3 = (3*5) % 3 = 0 -i+,-(i+),左结合,关系运算符 比较两个操作数,比较的结果:真(true) 假(false) 大于 = 大于等于 小于 = 小于等于 = 恒等于 != 不等于,在C+中真与假的处理: 1)bool类型 bool a; a=false;/在内存中,假表现为0 a=true;/在内存中,真表现为1,int a=1,b=2,c; c=(ab); For example: ch2/2-8.cpp,逻辑运算符 & 逻辑与 (ab) & (cd)

10、 | 逻辑或 (ab) | (cd) ! 逻辑非 !a,表达式:由运算符和运算对象(操作数)组成的有意义的运算式子,它的值和类型由参加运算的运算符和运算对象决定。 运算符:具有运算功能的符号 运算对象:常量、变量和函数等表达式.,2.4 表达式,在表达式中常遇到不同类型数据之间进行运算,如 10+a+1.5-8765.1234*b 在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。转换的规则按图所示。,2.4.1 表达式中各类数值型数据间的混合运算,水平方向:自动 垂直方向:低 高,A + 12 10.05 65 77 66.95,自动类型转换(赋值运算),变量 表达式 计算赋值运

11、算符右侧表达式的值 将赋值运算符右侧表达式的值赋给左侧的变量,将赋值运算符右侧表达式的类型 自动转换成 赋值号左侧变量的类型,自动类型转换(赋值运算),double x; x = 1;,x = ?,short a = 1000; char b = A; long c; c = a + b;,c = ?,int ai; ai = 2.56;,ai = ?,short bi; bi = 0x12345678L,bi = ?,强制类型转换,强制类型转换运算符 (类型名) 表达式 (double)3 (int)3.8 (double)(5/2) (double)5/2,3.0 3 2.0 2.5,算术

12、表达式、赋值表达式、关系表达式、逻辑表达式、条件表达式和逗号表达式等,2.4.2 各种表达式,算术表达式,例 数学式 C/C+表达式 s(s-a)(s-b)(s-c) (x+2)e2x,s*(s-a)*(s-b)*(s-c),(x+2)*exp(2*x),赋值表达式,赋值运算符 = x = 3*4; 优先级较低,结合性从右向左 x = y = 3; 等价于,x = (y = 3);,复合赋值运算符,赋值运算符 简单赋值运算符 = 复合赋值运算符 复合算术赋值运算符 += -= *= /= %= 复合位赋值运算符 赋值表达式: 变量 赋值运算符 表达式 x += exp ;等价于 x = x +

13、 exp; x *= y 3;,x = x * (y-3) ;,关系表达式关系运算符,比较两个操作数,比较的结果:真 假 x y x = y x != y 优先级 算术运算符 = = != 赋值运算符 左结合,a b = c d = a b ch a + 1 d = a + b c 3 = x = 5 b - 1 = a != c,(a b)= c d = (a b) ch (a + 1) d = (a + b) c) (3 = x) = 5 (b - 1) = a) != c,关系表达式,用关系运算符将2个表达式连接起来的式子 关系运算的结果 真 true 1(或非零值) 假 false 0

14、 For example:ch2/2-8.cpp,逻辑表达式逻辑运算符,逻辑与 & 逻辑或 | 逻辑非 ! 例如: (ch = a & ch = A & ch = 3 & x = 5,逻辑表达式逻辑运算符,逻辑运算结果:1(真) 0 (假) 逻辑运算对象:关系表达式或逻辑量 x = 5 & !x 判断逻辑量的真假:非0 (真) 0 (假),逻辑运算的规则真值表,x y x&y x|y !x 假 假 0 0 1 假 真 0 1 1 真 假 0 1 0 真 真 1 1 0,0 0 0 非0 非0 0 非0 非0,优先级 ! 算术运算符 关系运算符 & | 赋值运算符 左结合,逻辑运算符的优先级和结

15、合性,a | b & c !a & b x = 3 & x = 5 !x = 2 a | 3 + 10 & 2,a | (b & c) (!a) & b (x = 3) & (x = 5) (!x) = 2 a | (3 + 10) & 2),逻辑表达式,exp1 & exp2 先算exp1,若其值为0,STOP exp1 | exp2 先算exp1,若其值为1,STOP,运用逻辑表达式,例2-20 写出满足下列要求的表达式 (1) ch 是小写英文字母 ch = a & ch = z (2) x 为零 关系表达式 x = 0 或 逻辑表达式 !x 验证:,x取0 !x 真 x取非0 !x 假

16、,x取0 x=0 真 x取非0 x=0 假,等价,(3) x 不为零 x != 0 或 x,例220,(4) x 和 y 不同时为零 !(x = 0 & y=0) 或 x != 0 | y!=0 或 x | y (5) year 是闰年,即 year 能被 4 整除但不能被 100 整除,或 year 能被 400 整除。 (year % 4 = 0 & year % 100 != 0) | (year % 400 = = 0) 或 (!(year % 4) & year % 100) | !(year % 400 ),条件表达式,exp1 ? exp2 : exp3,非0,0,exp1,y

17、= (x0) ? x+2 : x*x;,if ( x0 ) y=x+2; else y=x*x;, 逗号表达式,表达式1, 表达式2, ,表达式n 先计算表达式,然后计算表达式,,最后计算表达式n的值,并将表达式n的值作为逗号表达式的值. int a, b, c; (a=2), (b=3), (c=a+b); 逗号运算符的优先级最低,左结合,a=2, b=3, c=a+b,2.5 语句_流程控制,任何程序都可以将模块通过3种基本的控制结构进行组合来实现。,顺序结构,循环结构,分支结构,3种基本的控制结构 顺序控制结构:自然顺序执行 分支控制结构(选择结构):根据不同的条件来选择所要执行的模块

18、循环控制结构:重复执行某个模块,For example:ch2/2-9.cpp,2.5 语句_ if语句和复合语句,分支结构一般分为二分支和多分支两种结构 用条件语句(if 和 switch)实现选择 2.5.1 二分支结构和基本的 if 语句,二分支结构和基本的 if 语句,if (表达式) 语句1 else 语句2,if (表达式) 语句1,一条语句,二分支结构示例,例2-10 输入2个数,如果它们的值不相等,则交换并输出它们的值;否则,输出“a=b”。 交换a和b的值 temp=a; a=b; b=temp;,Example 2-10,例2-11 输入3个整数,输出其中的最大值,基本的

19、if 语句示例,2.5语句_循环语句,使用格里高利公式求的近似值,要求精确到最后一项的绝对值小于105。 2.5.1 while语句 程序解析 2-12.cpp 2.5.2 for语句 2.5.3 do语句,while (条件) 循环体语句;,int i=0,sum=0; while( +i=10000 ) sum = sum+i;,int i=1,sum=0; while( i=10000 ) sum = sum+i; i = i+1; ,复合语句,循环条件,循环体,for(表达式1; 表达式2; 表达式3) 循环体语句;,int i,sum=0; for( i = 10000; i = 1

20、 ;i-) sum = sum+i; for(i=1;i=10000;i+) sum+=i;,循环变量,2-12.cpp,while 语句和for语句 都是在循环前先判断条件,表达式1; while (表达式2) for的循环体语句; 表达式3; ,把for语句改写成while语句 for(表达式1; 表达式2; 表达式3) 循环体语句;,while 和 for 的比较,for (i = 1; i = 10; i+) sum = sum + i;,i = 1; /循环变量赋初值 while (i = 10) /循环条件 sum = sum + i; i+; /循环变量的改变 ,循环体,例2-1

21、3 从键盘输入一批学生的成绩,统计平均分。 分析: 求累加和 确定循环条件 不知道输入数据的个数,所以无法事先确定循环次数 用1个特殊的数据作为正常输入数据的结束标志,比如选用一个负数作为结束标志。,do - while 语句,do 循环体语句; while (表达式),循环体语句,表达式,真,假,下一条语句,先循环,后判断,程序解析统计一个整数的位数, 如:3452 整数位数为4. For example:2-14.cpp,while 是先判别条件,再决定是否循环; do-while 是先至少循环一次,然后再根据循环的结果决定是否继续循环。,while 和 do-while 的比较,循环语句

22、的选择,if(循环次数已知) 使用for语句 else /* 循环次数未知 */ if (循环条件在进入循环时明确) 使用while语句 else /* 循环条件需要在循环体中明确 */ 使用do-while语句,2.5语句_ break语句 和continue语句,例2-15:输入一个正整数m,判断它是否为素数。,算法:除了1和m,不能被其它数整除。 设 i 取值 2, m-1 如果m不能被该区间上的任何一个数整除,即对每个i,m%i 都不为0,则m是素数 只要找到一个i,使m%i为0,则m肯定不是素数 m %2 %3 %4 %5 %(m-1) 不是素数 | =0 =0 是素数 & !=0

23、!=0 m不可能被大于 m/2 的数整除 i 取值 2, m-1 、 2, m/2 、 2, ,for(i = 2; i m/2) cout “yesn“; else cout “non”;,break 语句,while(exp) 语句1 if (expb) break; 语句2 ,for (i = 2; i m/2 ) cout “Yes“; else cout “No!n“;,当循环有多个出口时: 表示循环条件 区分结束条件,continue 语句,while(exp) 语句1 if (expb) continue; 语句2 ,跳过continue后面的语句,继续下一次循环,break 和

24、 continue,For example:2-16.cpp,无限循环: for(; ; ) 循环体; While(1) 循环体;,例: 求1! + 2! + . + 100!,int i, item =1; sum=0; for (i = 1; i = 100; i+) item = i ! sum = sum + item; ,嵌套循环,for(i = 1; i = 100; i+) item = 1; for (j = 1; j = i; j+) item = item * j; sum = sum + item; ,2-17.cpp,内层循环的初始化,分析嵌套循环的执行过程,for(i = 1; i = 100; i+) item = 1; for (j = 1; j = i; j+) item = item * j; sum = sum + item; ,外层循环变量 i 的每个值 内层循环变量 j 变化一个轮次; 内外层循环变量不能相同 分别用 i 和 j,for (i = 1; i = 100; i+) for (j = 1; j = i; j+) cout i j ;,Lab and Exercise,Exercise: Next Lab: 实验3.doc 实验4.doc,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1