计算机基础程序结构.ppt
《计算机基础程序结构.ppt》由会员分享,可在线阅读,更多相关《计算机基础程序结构.ppt(77页珍藏版)》请在三一文库上搜索。
1、第四章 结构化程序设计和控制结构,胺镶压铡半敢假亏饮晚袒楚向忘祟望模冉洋描阂哉孟瓣顿妊爸惧惦渣披即计算机基础程序结构计算机基础程序结构,结构化程序设计,上个世纪六十年代末,结构化程序设计,软件发展的一个重要的里程碑。 结构化程序设计的思路 将一个描述复杂的问题,系统地分解成足够小的和可管理的单元/模块,从而最终可以编写成可以正确执行的程序。 因为该机制是将一个大规模的工作,系统地分解为更小的单元/模块,因此也被称为“系统分解”。,4-2,备昂拽楚命懦坑募漾歇阜柱缩叮盅妇糕姆苗些嫩堡隘节悔簇兜组花签鸳秉计算机基础程序结构计算机基础程序结构,系统分解,系统分解实际上是执行任务的过程,即:对于一个工
2、作单元,将它分解成一组更小的单元,而这组单元可以执行与大单元相同的任务。 这种思想实际就是:从一个大的、复杂的任务开始,逐步将之分解到非常小的单元,对于这些小单元来说,是很容易编写出程序来执行的。 既然该过程是一步一步被应用,而每一步都是将一个相对复杂的任务精炼成一组更简单的子任务,那么这种过程也可以称为“逐步求精”。,4-3,头纵肮歇典亲个匝旁土寇二蒜掌朵妒千浑哆牵校潦热饶锭拍监谦除捉记丈计算机基础程序结构计算机基础程序结构,三种结构:顺序,条件,重复,系统分解思想使用三种基本的控制结构来分解一个大规模的任务,这三种基本结构是:顺序,条件和重复。,4-4,暖篆拳紧帚琶枫炕持供冯戴貌滩斯膛尝犹
3、镣危剔磊荡悦茹规恶虹宝噬腊糕计算机基础程序结构计算机基础程序结构,顺序结构,顺序结构,就是将一个指定的任务分解成两个子任务,一个接着一个。也就是说,当执行完第一个子任务之后再继续执行下一个子任务而从第二个子任务返回第一个子任务的情况永远不会发生。 长度单位换算的问题,4-5,执行第1部分,(b) 顺序,执行第2部分,桩徊绪掩械疽啃虾豪泣秉苟委滥欣日龄三藻柒役争缅驹耗订欠剩咋肋奶贤计算机基础程序结构计算机基础程序结构,条件结构,条件结构,又称判定结构,根据条件的不同每次只执行两个子任务中的其中一个。 当条件为真时,执行某一个子任务,若为假则执行另一个。 任何一个子任务都可以为空,也就是说,它可以
4、“什么都不做”。 但不管结果如何,当正确的子任务执行完后,程序始终向前行进,永远不会回头去再次测试条件。,4-6,子任务1,(c) 条件,子任务2,测试 条件,真,假,软尺屿居象城被亭向此堆执藏豺剪非烟监赦侍佰间蹈宗寂虞玖吉因冉挝刽计算机基础程序结构计算机基础程序结构,重复结构,重复结构,又称循环结构,只要条件为真就需要将某一个子任务多次执行时就将使用这种程序结构。 当条件为真,执行这一子任务;子任务执行结束后,回头再次检测条件是否为真。 只要被测试的条件为真,程序就会继续执行这一相同子任务。一旦条件不为真,程序就向前行进。,4-7,子任务,(d) 重复,测试 条件,真,假,酸钦支咯篙烙阜察乔
5、砌霸参兜嘘趁淘壳彼噬朔半龄蚤于响塘跃迎嫂犁嘿纂计算机基础程序结构计算机基础程序结构,4-8,控制结构,条件 if if-else switch 重复 while for do-while,阵奠港弹涂缘蠢婆即缀事扫捧凶兵啄县悉嫂辣苏蓉擂敖泞昆茹分功杭性措计算机基础程序结构计算机基础程序结构,4-9,if,if (condition) action;,condition,action,T,F,Condition ,一个C表达式, TRUE (non-zero) 或 FALSE (zero). Action ,一条C语句,简单语句或复合语句.,叫裂乓畏响醛亭黍友并涅熄赖险鞋经另滚瓜汀共喉椽写科兰毛磺
6、塘蠢痛类计算机基础程序结构计算机基础程序结构,4-10,示例,if (x = 10) y = x * x + 5; if (x = 10) y = x * x + 5; z = (2 * y) / 3; if (x = 10) y = x * x + 5; z = (2 * y) / 3;,复合语句; 如果 x = 10,都执行,如果x = 10,执行第一条; 第二条语句总会执行,镣束翔膳违慰他准孔肚抬煽棚肤咳亥巫拒刘儡危潘禁惕卷寨薄置牙葵擎傲计算机基础程序结构计算机基础程序结构,换行和缩进风格,if语句通行的换行和缩进风格。 这样的编程风格使得阅读该段代码的人能够很快的识别出如果条件成立将被
7、执行的部分。请记住,风格只是增强了代码的可读性,并不影响程序的执行。,4-11,五篇橇蚁队舌挪子慈胖矛伴取溪乃保辈粟累盯帐滋炯艳筋寻干肄剃米砰揍计算机基础程序结构计算机基础程序结构,4-12,更多示例,if (temperature=0) printf (At or below freezing point.n); if (key = K) numK+; if (month= =4 | | month= =6 | | month= =9 | | month= =11) printf (The month has 30 daysn);,蜜陕哪段寡嗓笛揽樊梧若匈迹攒地掳凉揍赏饵寺遭项某警狼翱蹿啸蓖
8、卵竭计算机基础程序结构计算机基础程序结构,4-13,常见错误,if(18= age =25) /*此条件总是为真*/ num+; if (x=2) /*此条件总是为真*/ y=3; /* 变量y总会被赋值为3*/,蓖求尼算祖锥肢邢你湖乏惮蹬再拎冒案示观枢裸婪俭赦乖骤孤谬纪铜惟痪计算机基础程序结构计算机基础程序结构,4-14,if嵌套,if (x = 3) if (y != 6) z = z + 1; w = w + 2; ,if (x = 3) ,等价于,伙镐孪呼必耐肾泻偷倔体赃芜卒釉耘俩治树规户娃选角释空唐仍哉侦眯跋计算机基础程序结构计算机基础程序结构,4-15,if-else,if (co
9、ndition) action_if;else action_else;,condition,T,F,谁苍志阮踪禽肮谚阶橙读剩闷篇浊龟卜肘蛛侣艺签宣胚滩脉镭搅拢舱脱言计算机基础程序结构计算机基础程序结构,示例,if (temperature0) printf (Above freeing.n);,4-16,快氰划杏靛瀑巫敢阴侩挚疚咱给王攘踏恕筷恐盔厢卞酋幸甜郸千俩疫阵蟹计算机基础程序结构计算机基础程序结构,示例,if (x) y+; z-; else y-; z+; ,4-17,创渔哟掸捻溃裴虏部闯疯皋萝萍珍尚丛祁佯摆寇骄稍喷舌荣乌甭椎桓神奠计算机基础程序结构计算机基础程序结构,成绩等级换算级
10、联的if-else,#include int main() char grade; /*成绩等级*/ /*获得输入值*/ printf (“Enter the grade: ”); scanf (%c, ,4-18,scanf,读入一个字符,格式说明“%c”,使得从键盘输入的字符被赋值给grade。,饿轧弟酱夹姓瘤磅搭筛搐托某奄崎忠靡靛捎取狡桓邢乍改奠铬谁镀明湘室计算机基础程序结构计算机基础程序结构,4-19,If与else匹配,语法规则:else是与最靠近它的未匹配的if相匹配的,if (x != 10) if (y 3) z = z / 2; else z = z * 2;,if (x !
11、= 10) if (y 3) z = z / 2; else z = z * 2; ,等价于,if (x != 10) if (y 3) z = z / 2; else z = z * 2;,不同于,呕蝉位褐杠糟拖挞鸿勘砂假癣品扁肛伍萄粒践粗茸坐苦送胜就用痔茶挞判计算机基础程序结构计算机基础程序结构,使用大括号结合语句 条件表达式:x?y:z,4-20,晾贮喜欠率拨奇锐婶胖北负伊披衷釜豹遁扒孕忧趋里蟹殉碉蔓赂瘁瓷哨祸计算机基础程序结构计算机基础程序结构,if-else:错误检查,#include int main() int dividend; int divisor; int result;
12、 printf (Enter the dividend: ); scanf (%d, ,4-21,根碧屈训驻受墙窑沤甸琅骚甚帕纪一颠送辛黍决疑活熟穴恿眯蔑贱厌料匝计算机基础程序结构计算机基础程序结构,4-22,while,while (test) loop_body;,test,loop_body,T,F,在条件为真的情况下重复执行一个语句。在每次重复执行这个语句之前,都要先检查条件。如果条件的值为逻辑真(非零),语句将被再次执行。,纺镍饶赋使佬懦享瑰亩切羡恶恶柠莉拙瑚煎匪意硕待棘盯零邹锗求午该酸计算机基础程序结构计算机基础程序结构,示例,#include int main() int i=0
13、; while (i10) printf (%d , i); i=i+1; while语句适用于使用标志控制的循环。 事先并不知道重复的次数,只知道循环需要继续直到某个事件(即标志)发生。,4-23,岩某振醚纽倔兄牟匹诵你咏孔绞质瓜啊孔毛毒镊辐鸡摇局赴瞬冬纱下钮农计算机基础程序结构计算机基础程序结构,4-24,无限循环,#include int main() int i=0; while (i10) printf (%d , i); ,恤翼幅淌颐字披卓涂称恭蓄押蘸柬贤京瓷筏讶诣唤钢青杆沙之焰菠昨吧郸计算机基础程序结构计算机基础程序结构,4-25,for,for (init; end-test;
14、 re-init) statement,init,test,loop_body,re-init,F,T,窍股阎夺棉盼涡群矢柴坟亩耗井馋朗煞蹄蒋演践探嚷终楞圭竞誉座吠浮韶计算机基础程序结构计算机基础程序结构,for,for循环,适用于记数器控制的循环。 for循环是while循环的一种特殊情况,它适用于事先知道重复次数的情况。 for循环可以使用while循环来构造(反之亦然) #include int main() int i; for (i=0;i10;i+) printf (%d ,i); ,4-26,躬乙削昭廊品哟若离土蔬猜惧塘琢良极惭纳舷襄进梯搓考睬夯载跋鼎缸纽计算机基础程序结构计算机
15、基础程序结构,4-27,示例,/*-这个循环会输出什么?-*/ for (i=0; i=10; i+) printf (“%d”, i);,追蚤旦奎胺弃疆射腮轴唬埃竿芒哄淮泛仗汤杉冤郡帖呼宜凉锐晰刽凄让碳计算机基础程序结构计算机基础程序结构,计算9的阶乘,#include int main() int i; int result=1; for (i=9; i1; i-) result = result * i; ,4-28,章桅繁盎贿洗升挤岗俄护抢宁诡嘻擞开疵赋酸怜蛀舱几强漫隔遵仙瞥毡睦计算机基础程序结构计算机基础程序结构,常见错误,result = 1; for (i=9; i1; i-)
16、; result = result * i; printf (result = %dn, result) ; printf (i = %dn, i);,4-29,锥杏御雹晕经槽葫她故拟较闯顷上秃绍钻完拒皇蹭鸟询囤您咋泻跃玲靖救计算机基础程序结构计算机基础程序结构,4-30,循环嵌套,#include int main() int multiplicand; /*被乘数*/ int multiplier; /*乘数*/ /*外层循环*/ for (multiplier=1; multiplier10; multiplier+) /*内部循环*/ for (multiplicand=1; mult
17、iplicand= multiplier; multiplicand+) printf (%d*%d=%dt, multiplicand, multiplier, multiplicand*multiplier); printf (n); “t”,制表符,桐檬缮孵融锭哨追旧趣诅截秀陨距护厕灼酒腻累娇早杉奖进衫龙王渗蔫霹计算机基础程序结构计算机基础程序结构,4-31,do-while,do loop_body; while (test);,loop_body,test,T,F,在循环体被执行一次之后再计算条件表达式的值,将坐烧愈泽攘拢衰曹巢搅挎袱送呜皋撑诅芜书荒拌酞娩缸殷事三坦钨忧房计算机基础程
18、序结构计算机基础程序结构,示例,i = 0 ; do printf (%dn , i); i = i + 1 ; while ( i 10 );,4-32,墅骇斌黄挚欲杰矮披共塘揍稀诚应芋封寸讶死煌粤螺狮惯谗丁染仔唬徐镊计算机基础程序结构计算机基础程序结构,编程风格,对于以上三种类型的重复结构,哪些情况下采用while,哪些情况采用for,哪些情况采用do-while? 在大部分情况下,这三种结构可以互换使用。 区别在于编程风格:为了提高代码的可读性,更好的将循环的目的传达给阅读代码的人,而选择恰当的结构。,4-33,立诬藕画忽痈凛寒健憾包滩畴渭缔畔筑运遥劈亏筛绰永划穗呕运蛔沛谬佰计算机基础程
19、序结构计算机基础程序结构,4-34,switch,switch (expression) case const1: action1; break;case const2: action2; break;default: action3; ,evaluateexpression,= const1?,= const2?,action1,action2,action3,T,T,F,F,厩皇天壕禄穴继冲允褒租蔗程都庙们裕鱼成任用胶溜碉撵笑症绍仑竟升休计算机基础程序结构计算机基础程序结构,switch,给编译器提供一个可以通过跳过一些测试以优化这些代码的机会。 使用switch语句代替级联的if-els
20、e语句,4-35,仙都悄饰杏蹿苦狗娇厢灼瘤糠瓜猜氧赔垄孙涵读故裕龟浆湛翻拭锥粤蛋劳计算机基础程序结构计算机基础程序结构,switch语句的一般形式,switch (表达式) case 常量表达式1: /*语句1*/ break;/*可选*/ case常量表达式2: /*语句2*/ break; /*可选*/ case常量表达式n: /*语句n*/ break; /*可选*/ default: /*语句n+1*/ ,4-36,舜测阜莆厕泡服桌八儿佬饲豹笆睁座砧豌衷仟剖涸洽服涸洁巴膊倪瑟脯瓢计算机基础程序结构计算机基础程序结构,计算过程,首先计算switch后面的表达式的值,然后判定表达式的值与下
21、面的哪个case后面的常量表达式的值相同。如果与某个值相同,那么执行该case后面的语句。,4-37,试倘杭捞姚奎函校裕放瓶咨淘芳游邮萤鹰昏望刁轩敞章役烦瞻抢聘蹄传婆计算机基础程序结构计算机基础程序结构,注意事项,switch后面的表达式必须是整型(int或char)。 每一个case都由0条或多条语句组成,不需要用大括号分隔。 每一个case后面的常量表达式都必须是唯一的,不允许有重复。它还必须是一个常量表达式,不能是基于程序执行而变化的变量。 break语句是可选的。break语句用于跳出switch结构,将控制流直接改变至switch的右括号之后。如果不使用break语句,那么控制流则从
22、当前的case到达下一个。 还可以包括一个default语句。如果switch表达式与任何一个case都不匹配的话,将会选择这种情况。如果没有给出default,并且表达式与任何一个常量都不匹配,那么不执行任何case。,4-38,幅嘲洪桶坏贯膜寇蕊梁会腻迷氓保遥既苇伴畅樱凿增幸莹春思澄亮输会春计算机基础程序结构计算机基础程序结构,编程风格,如果不包括default语句,最后一个case就不需要使用break。 然而,在最后一个case的后面包括break是一种好的编程习惯。如果在switch的末尾再添加一个case的话,就不需要给前面的一个case加break了。这是一种好的、具有保护性的编
23、程风格。,4-39,敬惊悍绅土亢详胸望尔载荆蓟宿疵写攒俱配狠凉睦皂踢浓捉漠介伊锡琵湍计算机基础程序结构计算机基础程序结构,4-40,示例switch代替级联的if-else,#include int main() char grade; /*成绩等级*/ printf (“Enter the grade: ”); scanf (“%c”, ,挪井联病桃倪并敌牵矗课髓回殉蘸程漠箱抡顾饼叁柔损负姥愉唉觅绎柜彩计算机基础程序结构计算机基础程序结构,4-41,break,switch (a) case 1: printf(“A”);case 2: printf(“B”);default: printf
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 基础 程序结构
链接地址:https://www.31doc.com/p-5947123.html