1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第4章 程序控制构造,第1页,程序基本构造,第2页,程序流程图用一系列图形、流程线和文字阐明描述程序基本操作和控制流程,它是程序分析和过程描述最基本方式,程序流程图,第3页,起止框表达一种程序开始和结束;,判断框判断一种条件与否成立,根据判断成果选择不一样样执行途径,处理框表达一组处理过程;,输入输出框表达数据输入或成果输出;,程序流程图,第4页,注释框增长程序解释;,流向线以带箭头直线或曲线形式指示程序执行途径;,连接点将多种
2、流程图连接到一起,常用于将一种较大流程图分割为若干部分。,程序流程图,第5页,程序流程图,第6页,次序构造是程序按照线性次序依次执行一种运行方式,如图4.3所示,其中S1和S2表达一种或一组次序执行语句。,程序基本构造,第7页,分支构造是程序根据条件判断成果而选择不一样样向前执行途径一种运行方式。由二分支构造会组合形成多分支构造。,程序基本构造,第8页,循环构造是程序根据条件判断成果向后反复执行一种运行方式,根据循环体触发条件不一样样,循环构造包括条件循环和遍历循环构造。,程序基本构造,第9页,对于一种计算问题,可以用IPO描述、流程图描述或者直接以Python代码方式描述。本书仅对这几种描述
3、进行简介,功能简朴问题提议大家直接编写Python代码,功能复杂问题读者可以采用IPO描述或流程图描述为手段。下面给出3个微实例,通过不一样样描述措施详细解释程序三种基本构造。,程序基本构造实例,第10页,根据圆半径计算圆面积和周长。图4.6分别给出了该问题IPO描述、流程图描述和Python代码描述。,微实例,4.1,:圆面积和周长计算。,输入,:圆半径,R,处理,:,圆面积:,S=*R*R,圆周长:,L=2*R,输出,:圆面积,S,、周长,L,第11页,程序描述方式重要有三类,分别是自然语言、流程图和伪代码。,自然语言描述方式指使用人类语言直接描述程序,IPO描述是此类一种。长处是灵活自然
4、,缺陷是比较繁琐,轻易出现二义性,一种描述可以产生多种不一样样程序代码。,流程图描述是程序最直观易懂表达方式,重要合用于较短算法。长处是直观、清晰且逻辑确定,缺陷是流程图绘制比较繁琐,当程序较大时流程图会很复杂,反而减少了表达清晰性。,程序基本构造实例,第12页,伪代码描述是介于自然语言与编程语言之间一种算法描述语言。使用伪代码不用拘泥于详细编程语言,对整个算法运行过程描述最靠近自然语言。与直接自然语言描述不一样样,伪代码在保持程序构造状况下描述算法,程序基本构造实例,第13页,计算顾客给定实数绝对值。图4.7分别给出了该计算问题IPO描述、流程图描述和Python代码描述。,微实例,4.2,
5、:实数绝对值计算,第14页,微实例,4.3,:整数累加。,输入:正整数,R,处理:,S=1+2+3+R,输出:输出,S,计算,1,到正整数,R,算术和。图,4.8,分别给出了该计算问题,IPO,描述、流程图描述和,Python,代码描述。,第15页,IPO描述、流程图描述和Python代码描述是处理计算问题三种描述方式,细致程度逐渐递进。IPO描述重要用于辨别程序输入输出关系,重点在于构造划分,重要采用自然语言描述。流程图描述侧重于描述算法详细流程关系,流程图构造化关系相比自然语言描述更深入,有助于论述算法详细操作过程。Python代码描述是最终程序产出,最为细致。,程序基本构造实例,第16页
6、,程序分支构造,第17页,Python中if语句语法格式如下:,if :,是if条件满足后执行一种或多种语句序列,中语句通过与if所在行形成缩进表达包括关系。,单分支构造:if语句,第18页,If语句首先评估成果值,假如成果为True,则执行里语句序列,然后控制转向程序下一条语句。假如成果为False,里语句会被跳过。if语句控制过程如图4.9所示,单分支构造:if语句,第19页,if语句中执行与否依赖于条件判断。但不管什么状况,控制都会转到if语句后与该语句同级别下一条语句。,if语句中部分可以使用任何可以产生True或False语句或函数。形成判断条件最常见方式是采用关系操作符。,单分支构
7、造:if语句,第20页,Python语言共有6个关系操作符,见表4.1所示。,单分支构造:if语句,操作符,数学符号,操作符含义,小于,=,大于等于,大于,=,=,等于,!=,不等于,第21页,一种简化版空气质量原则采用三级模式:0-35为优,35-75为良,75以上为污染。人们也许不关怀PM2.5指数值详细为多少,更关怀空气质量究竟怎样。计算机可以通过PM2.5指数分级公布空气质量提醒。,微实例,4.4,:,PM 2.5,空气质量提醒(,1,),第22页,该问题IPO描述如下:,输入:接受外部输入PM2.5值,处理:,if PM2.5值=75,打印空气污染警告,if 35=PM2.5值 75
8、,打印空气污染警告,if PM2.5值 35,打印空气质量优,提议户外运动,输出:打印空气质量提醒,微实例,4.4,:,PM 2.5,空气质量提醒(,1,),第23页,微实例,4.4,:,PM 2.5,空气质量提醒(,1,),第24页,微实例4.4展示了用数字进行条件比较例子,字符或字符串也可以用于条件比较。字符串比较本质上是字符串对应Unicode编码比较,因此,字符串比较按照字典次序进行。,例如,英文大写字符对应Unicode编码比小写字符小。如下是某些例子:,微实例,4.4,:,PM 2.5,空气质量提醒(,1,),第25页,Python中if-else语句用来形成二分支构造,语法格式如
9、下:,if :,else:,二分支构造:if-else语句,第26页,是在if条件满足后执行一种或多种语句序列,是if条件不满足后执行语句序列。,二分支语句用于辨别两种也许True或者False,分别形成执行途径。,二分支构造:if-else语句,第27页,二分支构造:if-else语句,第28页,二分支构造尚有一种更简洁表达方式,适合通过判断返回特定值,语法格式如下:,if else,其中,一般是数字类型或字符串类型一种值,微实例4-5可以改造为:,二分支构造:if-else语句,第29页,Pythonif-elif-else描述多分支构造,语句格式如下,如图4.10所示,if:,elif:
10、,.,else:,多分支构造:if-elif-else语句,第30页,多分支构造是二分支构造扩展,这种形式通常用于设置同一种判断条件多条执行途径。,Python依次评估寻找第一种成果为True条件,执行该条件下语句块,同步跳过整个if-elif-else构造,执行背面语句。假如没有任何条件成立,else下面语句块被执行。else子句是可选。,多分支构造:if-elif-else语句,第31页,微实例4.4通过多条独立if语句对同一种变量PM进行判断,这种状况更适合多分支构造,改造后裔码如下:,多分支构造:if-elif-else语句,第32页,实例,5:,身体质量指数,BMI,第33页,身体质
11、量指数,BMI,第34页,BMI值可以“客观”衡量个人肥胖程度或者说健康程度。世界卫生组织(WHO)根据对全球人口体重记录认为,BMI值低于18.5 kg/m2时属于“过轻”,表明个体也许营养不良或者饮食无法保障;BMI值高于25 kg/m2时属于“过重”。,分类,国际,BMI,值(,kg/m,2,),国内,BMI,值(,kg/m,2,),偏瘦,18.5,=30,=28,身体质量指数,BMI,第35页,本实例编写一种根据体重和身高计算BMI值程序,并同步输出国际和国内BMI指标提议值。该问题IPO描述如下:,输入:身高和体重值,处理:计算BMI值,并根据BMI指标分类找到合适分类,输出:打印指
12、标分类信息,身体质量指数,BMI,第36页,实例代码,5.1,第37页,实例代码,5.1,程序执行后效果如下:,第38页,实例代码5.1采用了多分支构造对BMI数值按照不一样样区间范围进行分类,这种采用if-elif-else分支语句进行程序设计方式十分常见。尽管需要同步打印国际和国内两套BMI原则,程序中采用两个if-elif-else语句分别计算两类不一样样BMI值。这种做法好处是代码清晰明了,轻易调试。,身体质量指数,BMI,第39页,实例代码,5.2,程序执行后效果如下:,第40页,比较实例代码5.1和实例代码5.2可以看到,if语句运用重要与程序编写者对问题理解及算法设计有关,采用一组if语句将两套BMI指标融合在一起,这实际上是算法变化。虽然对专业程序员来说,程序简洁性和可读性都比更少代码行数重要,这里,推荐采用实例代码5.1方式编写程序。,身体质量指数,BMI,第41页,