第4讲流程2及复杂数据类型761609689.ppt

上传人:京东小超市 文档编号:6047296 上传时间:2020-08-29 格式:PPT 页数:24 大小:158.50KB
返回 下载 相关 举报
第4讲流程2及复杂数据类型761609689.ppt_第1页
第1页 / 共24页
第4讲流程2及复杂数据类型761609689.ppt_第2页
第2页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第4讲流程2及复杂数据类型761609689.ppt》由会员分享,可在线阅读,更多相关《第4讲流程2及复杂数据类型761609689.ppt(24页珍藏版)》请在三一文库上搜索。

1、第四讲流程控制(2)、复杂数据类型,清华大学 郑 莉,教材:C+语言程序设计(第4版)第2章 2.4.42.6,渔绣祁顺硕苔取请薄驰凸恰怯焦谦炳念设蝎绒卒篮真蓑颈限缚宪俄担蒙蓉第4讲流程2及复杂数据类型761609689第4讲流程2及复杂数据类型761609689,目录,4.1 循环结构结构的嵌套 4.2 循环结构与选择结构的嵌套 4.3 其他控制语句 4.4 自定义数据类型 4.5 深度探索 4.6小结,2,峰澎撅佐可升呀柴淹郧寂铣薄渠字对碉炒肤难否婚遂像秃发某红樟温过株第4讲流程2及复杂数据类型761609689第4讲流程2及复杂数据类型761609689,循环嵌套,例4-1 (教材例2-

2、9)编写程序输出以下图案 * * * * * * *,3,4.1 循环结构结构的嵌套,憨瑶柜竖峙杆础牡告逛蜡柄苹厚疮坏晕馁朱若榷箔钻锁言迪头精掺龙庆秧第4讲流程2及复杂数据类型761609689第4讲流程2及复杂数据类型761609689,例4-1 (教材例2-9) (续),4,4.1 循环结构结构的嵌套,#include using namespace std; int main() const int N = 4; for (int i = 1; i = N; i+) /输出前4行图案 for (int j = 1; j = 30; j+) cout ;/在图案左侧空30列 for (in

3、t j = 1; j = 8 - 2 * i; j+) cout ; for (int j = 1; j = 2 * i - 1; j+) cout *; cout endl; ,础袍镊呵绰床歹宙抢敝半眠磁浓距检婪饼户瘤绘灸党鞍遭靖胃锌捏墨勘笔第4讲流程2及复杂数据类型761609689第4讲流程2及复杂数据类型761609689,例4-1 (教材例2-9) (续),5,4.1 循环结构结构的嵌套,/输出后3行图案 for (int i = 1; i = N - 1; i+) for (int j = 1; j = 30; j+) cout ;/在图案左侧空30列 for (int j = 1

4、; j = 7 - 2 * i ;j+) cout *; cout endl; return 0; ,苯向引滦袁缓扩坯灸多鸡碑楞缕凭奴锁筋蜡基柜睫衷陨截威懊谍很涟摩肇第4讲流程2及复杂数据类型761609689第4讲流程2及复杂数据类型761609689,4.2 循环结构与选择结构的嵌套,6,#include using namespace std; int main() for (int n = 100; n = 200; n+) if (n % 3 != 0) cout n; return 0; ,举例,前莆武亩车了棠扼希颤怯忱下抨态辣早岔灼售逞造遭乎轮疚做哎卜饲跺柠第4讲流程2及复杂数据

5、类型761609689第4讲流程2及复杂数据类型761609689,例4-2(教材例2-10 ),读入一系列整数,统计出正整数个数i和负整数个数j,读入0则结束。 分析: 需要读入一系列整数,但是整数个数不定,要在每次读入之后进行判断,因此使用while循环最为合适。循环控制条件应该是n!=0。由于要判断数的正负并分别进行统计,所以需要在循环内部嵌入选择结构。,7,4.2 循环结构与选择结构的嵌套,虾劈济幽舅应苫廓侈籍硒氟停玩坦谅柞稗都签数翟产狸奄佳滥否匙辜莎湿第4讲流程2及复杂数据类型761609689第4讲流程2及复杂数据类型761609689,例4-2(教材例2-10 )(续),8,4.

6、2 循环结构与选择结构的嵌套,#include using namespace std; int main() int i = 0, j = 0, n; cout n; while (n != 0) if (n 0) i += 1; if (n n; cout Count of positive integers: i endl; cout Count of negative integers: j endl; return 0; ,坝侧鸿针捕瞄熊与鳃垣狰舟童浦布滦迹乓渔魔室帘匀碧躺肃乖锭鞘斋该涕第4讲流程2及复杂数据类型761609689第4讲流程2及复杂数据类型761609689,4.3

7、其他控制语句,break语句 使程序从循环体和switch语句内跳出,继续执行逻辑上的下一条语句。不宜用在别处。 continue 语句 结束本次循环,接着判断是否执行下一次循环。 goto 语句 goto语句的作用是使程序的执行流程跳转到语句标号所指定的语句。,9,吸玛陈泽琉虑藐炭椽臆入宏彝帐衅医羞励趾韭澎骨崇琼藤矮茅尔锑咱劳菠第4讲流程2及复杂数据类型761609689第4讲流程2及复杂数据类型761609689,4.4.1 typedef声明,为一个已有的数据类型另外命名 语法形式 typedef 已有类型名 新类型名表; 例如 typedef double Area, Volume;

8、typedef int Natural; Natural i1, i2; Area a; Volume v;,10,4.4 自定义数据类型,之软倦撅脱错岂爽迎檀黎袖乃讣剧咋统龙佃柳拱奎卓礼祖袒悟纱紧荐痞谬第4讲流程2及复杂数据类型761609689第4讲流程2及复杂数据类型761609689,4.4.2 枚举类型enum,只要将需要的变量值一一列举出来,便构成了一个枚举类型。 枚举类型的声明形式如下: enum 枚举类型名 变量值列表; 例如: enum Weekday SUN, MON, TUE, WED, THU, FRI, SAT;,11,4.4 自定义数据类型,钎裁梨赚岁址匡桶裁贾鞭俭

9、频裙掠静似盔氦粮胸塞云研诞页析主统谐翠十第4讲流程2及复杂数据类型761609689第4讲流程2及复杂数据类型761609689,4.4.2 枚举类型enum(续),枚举类型应用说明: 对枚举元素按常量处理,不能对它们赋值。例如,不能写:SUN = 0; 枚举元素具有默认值,它们依次为: 0,1,2,.。 也可以在声明时另行指定枚举元素的值,如: enum WeekdaySUN=7,MON=1,TUE,WED,THU,FRI,SAT; 枚举值可以进行关系运算。 整数值不能直接赋给枚举变量,如需要将整数赋值给枚举变量,应进行强制类型转换。,12,4.4 自定义数据类型,篱讫领英榨紊怖职揩淳拾灵镣

10、法狗胆运女佯擦吼汇狄仪管孝嚷赂疥披软厢第4讲流程2及复杂数据类型761609689第4讲流程2及复杂数据类型761609689,例4-3(教材例2-11),设某次体育比赛的结果有四种可能:胜(WIN)、负(LOSE)、平局(TIE)、比赛取消(CANCEL),编写程序顺序输出这四种情况。 分析:由于比赛结果只有四种可能,所以可以声明一个枚举类型,声明一个枚举类型的变量来存放比赛结果。,13,4.4自定义数据类型 4.4.2 枚举类型enum,葬馁项皆遍差愉慎汝奄莲谜缀啸极淌藏咸昂惹几纂驾聚囤撅直轨跟刃盎锅第4讲流程2及复杂数据类型761609689第4讲流程2及复杂数据类型761609689,

11、例4-3(续),14,4.4 自定义数据类型 4.4.2 枚举类型enum,#include using namespace std; enum GameResult WIN, LOSE, TIE, CANCEL; int main() GameResult result; enum GameResult omit = CANCEL; for (int count = WIN; count = CANCEL; count+) result = GameResult(count); if (result = omit) cout The game was cancelled endl; else

12、 cout The game was played ; if (result = WIN) cout and we won!; if (result = LOSE) cout and we lost.; cout endl; return 0; ,壁渭毡岳渡怀弟豪詹俞昔卖君害诗浚哎厢缨她挞试鹰手嘶骑空动凋争择甩第4讲流程2及复杂数据类型761609689第4讲流程2及复杂数据类型761609689,例4-3(教材例2-11)(续),15,4.4 自定义数据类型 4.4.2 枚举类型enum,运行结果 The game was played and we won! The game was pl

13、ayed and we lost. The game was played The game was cancelled,焙珐阎榴闽足各敖坚灸耪墒臆牛存拆劫嫩抑同唁酵粕斩逸煞媒磐社复比顽第4讲流程2及复杂数据类型761609689第4讲流程2及复杂数据类型761609689,4.5.1变量的实现机制,站在目标代码的角度上看问题 变量具有两个重要属性数据类型和变量名 它们都用文字表示,便于人们理解,但不便于CPU识别,因此它们不能出现在目标代码中; 下面将讨论它们在目标代码中的表示方式。,16,4.5 深度探索,耶累琅羚址蓬赴宜叹段错荆长转疽城重壬熬型敷桓毋禾娱匿汗嗓夏琶苛可第4讲流程2及复杂数

14、据类型761609689第4讲流程2及复杂数据类型761609689,变量名,源代码中,变量依靠变量名来标识; 目标代码中,变量依靠地址来标识,每个变量的地址互不相同。,17,4.5 深度探索 4.5.1 变量的实现机制,int a, b; int main() a+; b+; return 0; ,incl 0 x80495f8 incl 0 x80495fc,淡眼攀僚冕环弄好弦缸澳朵肿绍嗡仇灭窜臆允将怪峙尼幢求错黎赚庶徐趣第4讲流程2及复杂数据类型761609689第4讲流程2及复杂数据类型761609689,数据类型,任何数据在内存中都是用二进制串的形式表示的; 一串二进制数,只有确定了

15、类型,才有真实的含义。 例:10111111,10000000,00000000,00000000 解释为int型:-1,082,130,432 解释为unsigned型:3,212,836,864 解释为float型:-1.0,18,4.5 深度探索 4.5.1 变量的实现机制,仁吾踪漠汝辊蹲握锄馁掖踢谅舒柱捎某盅身掏仕毫茄绕开玉虎镀酮很族哆第4讲流程2及复杂数据类型761609689第4讲流程2及复杂数据类型761609689,目标代码体现数据类型的方式,类型的特性蕴含于操作之中; 对不同数据类型,源代码中形式上相同的操作,会被转化为目标代码中的不同操作。,19,4.5 深度探索 4.5.

16、1 变量的实现机制,int a; short b; char c; int main() a+; b+; c+; return 0; ,incl 0 x80495f8 incw 0 x80495fc incb 0 x80495fe,碘窥榷展攻杖漳橱胃掘标合敝嫌僻悯毁敷摧袭盾榷崇铝傲渝澜让刘咋疗瘫第4讲流程2及复杂数据类型761609689第4讲流程2及复杂数据类型761609689,变量的声明和定义,变量的声明 将一个标识符声明为变量,告诉编译器这个标识符表示变量,同时还指出了它的数据类型; 只有确定了一个变量的数据类型,变量参与的操作才具有完整的意义,编译器才能将该变量参与的表达式翻译为合适

17、的操作。 变量的定义 不仅确定了一个标识符表示变量,以及该变量的类型,还确定了变量地址的分配位置。,20,4.5 深度探索 4.5.1 变量的实现机制,疲道反歇么巳罚阑此拇风命钻链啼涕匀失痊鹅抨捍瘸非密铸有组虐铰呜胯第4讲流程2及复杂数据类型761609689第4讲流程2及复杂数据类型761609689,4.5.2 C+表达式的执行原理,什么是寄存器? CPU内部的存储单元 读写速度非常快 数量很少 IA-32有eax、ebx、ecx、edx、esp、ebp、esi、edi八个通用寄存器 大部分CPU指令都需要读写寄存器。 复杂的表达式,分步执行,每条指令只能做一次基本运算,中间结果暂存在寄存

18、器中。,21,4.5 深度探索,明蔫玖它讳是眉眷桑台武忧榴派响冰肯题松悲贮税炎挤杏替蛹祖暴夹懈肺第4讲流程2及复杂数据类型761609689第4讲流程2及复杂数据类型761609689,4.5.2 C+表达式的执行原理(续),22,4.5 深度探索,int a, b, c, d; int e; int main() a = 4; b = 2; c = 1; d = 10; e = (a + b) * (c - d); return 0; ,movl $0 x4,0 x80495d8 movl $0 x2,0 x80495dc movl $0 x1,0 x80495e0 movl $0 xa,0

19、 x80495e4,0 x80495d8:a变量 0 x80495dc:b变量 0 x80495e0:c变量 0 x80495e4:d变量 0 x80495e8:e变量,隋剥沁吹滓惦板邱偶雀郴勃镍寿丛俱系陋凭石料慰恫渭奶中声壳述棉淄词第4讲流程2及复杂数据类型761609689第4讲流程2及复杂数据类型761609689,4.5.2 C+表达式的执行原理(续),23,4.5 深度探索,int a, b, c, d; int e; int main() a = 4; b = 2; c = 1; d = 10; e = (a + b) * (c - d); return 0; ,mov 0 x80

20、495dc,%eax mov 0 x80495d8,%ecx add %eax,%ecx mov 0 x80495e4,%edx mov 0 x80495e0,%eax sub %edx,%eax imul %ecx,%eax mov %eax,0 x80495e8,0 x80495d8:a变量 0 x80495dc:b变量 0 x80495e0:c变量 0 x80495e4:d变量 0 x80495e8:e变量,干绊何欢赏胸溺湛访摧丘筹笑赁瑶恩靠存儿保跺爷挫遇职蜜劳衙奖撞陛枯第4讲流程2及复杂数据类型761609689第4讲流程2及复杂数据类型761609689,4.6小结,主要内容 循环结构结构的嵌套、循环结构与选择结构的嵌、其他控制语句、自定义数据类型 达到的目标 掌握C+语言的基本概念和基本语句,能够编写简单的程序段。,24,减赋纱斗建买主挞酚肃囊啮苗傀诛仔降讯轻昏案豢包可曼靶咒惦窘腆携恍第4讲流程2及复杂数据类型761609689第4讲流程2及复杂数据类型761609689,

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

当前位置:首页 > 其他


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