1、解析算法(第十七课时)高中信息技术算法与问题解决 广义上讲,算法是解决一个特定问题而采取的确定的、有限的步骤。在计算机领域,算法作为一个精心设计的运算序列,描述了计算机如何将输入转化为输出的过程高中信息技术体验探索:绿灯时长的最优设置通常,行人的步行速度约为4.4 km/h,观察到信号灯变化后的反应时间约为2 s。如果要保证行人能走过一定距离的人行横道(例如:20 m),绿灯的时间至少需要设置多久?高中信息技术分析问题s/2.13600/4400Vm步行已知条件s2t反应m20S马路求解目标?绿灯长t确立数学关系,建立数学模型。高中信息技术设计算法步行马路过马路VSt反应过马路绿灯长ttt反应
2、步行马路绿灯长tVSt确立数学关系,建立数学模型。7.1821.220t绿灯长高中信息技术建立数学模型数学模型是用数学符号、数学式子、程序、图形等对实际问题本质属性的抽象而又简洁的刻画。建立数学模型,就是根据实际问题来简化假设、分析内在规律,之后抽象成为数学的符号和语言。高中信息技术解析算法通过分析问题的已知条件和求解目标,抽象成数学模型,借助解析式,用已知条件为变量赋值进行求解。例如:绿灯时长的最优设置反应步行马路tVS反应步行马路绿灯长tVSt绿灯长t已知求解解析式高中信息技术想一想解析算法指通过找出解决问题的前提条件与结果之间的关系表达式,并计算表达式来实现问题的求解。我们的日常生活中,
3、还有哪些可以利用解析算法解决的问题?高中信息技术生活中的问题解析“网上购物”,这种省时又省力的购物方式已经被越来越多的人接受并使用。在网上购物时,选择了商品和数量,页面上立即显示出总价。请思考:购物程序中的总价是如何计算出来的?已知单价、数量数学关系总价=单价*数量求解总价高中信息技术基于解析算法的问题解决编程编程调试调试已知已知条件条件求解求解目标目标二者二者关系关系计算计算高中信息技术基于解析算法的问题解决某地区为了开发山区农业,需要了解山地的气候变化。现已知该地山区海拔每升高100m,气温下降约0.5,山地最高海拔为1500m,山脚下的年平均气温为22(假设山脚海拔为0m)。高中信息技术
4、实践探索:山地气温分布问题1.根据气温随海拔升高而变化的规律,写出计算该山地不同海拔高度的气温的解析式,并编程实现。2.某种植物适宜生长在气温为18-20的山区,如果要分析这种植物应被种植在该山地多高的地区为宜,需要如何修改算法,请编程实现。高中信息技术分析问题已知求解海拔每升高100m,温度下降0.5最高海拔1500m,山脚平均气温22海拔与温度的关系式5.0100ht变化5.0100h-22th15000 h数学关系高中信息技术设计算法输入海拔h开始结束输出温度tt=22-h/100*0.5高中信息技术高中信息技术编程实现高中信息技术分析问题已知求解某种植物适宜生长在18-20植物适宜生长
5、的海拔区间1002t-22hh)(5.0100h-22th15000 h数学关系高中信息技术设计算法开始结束输出h1,h2h1=(22-t1)*2*100t1=18,t2=20h2=(22-t2)*2*100高中信息技术高中信息技术编程实现高中信息技术基于解析算法的问题解决目前,国内很多高速公路都启用了区间测速。区间测速是在同一路段布设两个监测点,基于车辆通过前后两个监测点的时间来计算车辆在该路段的平均行驶速度,并依据限速标识判定车辆是否超速。高中信息技术实践探索:区间测速现有一段长度为66 km的测速区间,汽车的限速是100 km/h。数据中心需要编写一段程序来判断汽车是否超速通过。高中信息
6、技术要判断小车是否在区间内超速,需要求得小车的,并与对比,如果大于限速则超速,否则就是正常通过。求平均时速需要提供和。区间距离已经明确,小车的通过时间可以由前后两个监测点的时间差判定,为简化问题,我们可以将通过时间设为输入数据。分析问题高中信息技术分析问题已知求解66S区间100V限速小车t小车V数学模型小车区间小车tSV高中信息技术设计算法输入ts=66v=s/t*60开始结束输出超速通过v100输出正常通过是否(t以分钟为单位。)高中信息技术高中信息技术编程实现高中信息技术基于解析算法的问题解决高中信息技术实践探索:抢红包微信红包是大家都熟悉的一种游戏娱乐方式。请思考:红包的数额是如何生成
7、的?为什么你打开的红包金额和别人的不一样?高中信息技术分析问题假设现在生成2个红包,总金额为x,单个红包的金额为整数,最小金额为1,求两个红包的金额。已知求解总金额 x红包数量 2红包a的金额 红包b的金额高中信息技术分析问题已知求解总金额 x红包数量 2红包a的金额 红包b的金额a=1,x-1之间的任意整数 b=x-a数学关系高中信息技术设计算法输入红包总额xb=x-a开始结束输出a,ba=randint(1,x-1)高中信息技术高中信息技术编程实现请思考:如果是3个或多个红包数量,应该如何修改程序解决问题?高中信息技术实践探索:抢红包如果红包数改成3个:a=1,总金额-2 之间的随机数;b
8、=1,(总金额-第1个红包)-1之间的随机数;c=总金额-第1个红包-第2个红包。如果是n个红包,应该如何设计算法呢?高中信息技术实践探索:抢红包比如100元,由10个人分,那么第一份:x1=1,100-9之间的随机整数。第二份:x2=1,(100-x1)-8之间的随机整数。第三份:x3=1,(100-x1-x2)-7之间的随机整数。第n份:xn=100-x1-x2-.-x(n-1)。高中信息技术实践探索:抢红包x(n-1)=1,(总额-x1-x2-x(n-2)+1之间的随机整数。xn=总额-x1-x2-.-x(n-1)。数学关系高中信息技术输入总额x,数量nx=x-a开始结束输出xa=ran
9、dint(1,x-n+1)n1输出an=n-1是否高中信息技术高中信息技术想一想抢红包小程序的算法只是一种可行的方法。实际上,生活中所用的小程序的算法要更加复杂和严谨。请你思考:如何改进算法,让程序更加严谨和规范呢?高中信息技术基于解析算法的问题解决思路Input输入:明确问题的前提条件;Output输出:明确要求的解;Process处理:寻找前提条件与结果之间的数学表达式,代入数值,完成计算。高中信息技术小结分析问题基于解析算法设计程序编程调试解解析析算算法法与与问问题题解解决决基于解析算法的问题解决基于解析算法的问题解决解析算法解析算法分析已知条件和求解目标抽象得出数学模型代入数值求解高中
10、信息技术课后练习收集学校周边的马路通行状况(马路宽度、高峰时段、人流量、车流量等信息),设计一种在智能交通环境下,控制十字路口红绿灯时长变化的合理方案。结合第八、十课时所学的交通信号灯和倒计时器小程序,优化交通信号灯程序。高中信息技术赋值语句练习1:判断以下赋值语句写法是否正确,为什么?(1)D=6+9 (2)F+3=E+6 (3)Z=X*Y (4)C$=goodnight练习2:下列程序的输出结果是多少?A=30A=A+10A=50print(A)是是5050否否是是否否高中信息技术目前,世界上包括我国在内的绝大多数国家都使用摄氏温度,而美、英等国家使用华氏温度。对于去美国旅行的中国游客来说
11、,需要将当地发布的华氏温度转换为摄氏温度,以符合自己的理解习惯;同样,来中国旅行的美国游客亦如此。请你想一想,能否利用计算机辅助旅行者进行温度转换?实践探索:温度转换高中信息技术分析问题如果用c表示摄氏温度,f表示华氏温度,那么把华氏温度转换为摄氏温度的公式为:8.1)32(fc根据这个公式,应该如何设计算法呢?高中信息技术设计算法输入华氏温度f=90利用公式计算摄氏温度输出摄氏温度c输入华氏温度fc=(f-32)/1.8开始结束输出摄氏温度c顺序结构顺序结构高中信息技术高中信息技术编程调试f=90c=(f-32)/1.8开始结束输出c如果是输入任意华氏温度并计算摄氏温度,应该如何修改呢?高中
12、信息技术Python语言主要用函数input()实现数据输入。函数input()主要用来接收键盘的键入,返回值为字符串型数据。通常,在输入时可以给出提示信息,例如:输入函数input()f=input(请输入华氏温度:)高中信息技术高中信息技术编程调试输入fc=(f-32)/1.8开始结束输出c程序是否正常运行并得到结果?高中信息技术在程序设计中,可以通过强制类型转换操作,把某个数据从一种数据类型转换成另一种数据类型。数据类型转换数据类型转换函数数据类型转换函数功能说明功能说明float(x)将x转换为一个浮点型数据int(x)将x转换为一个整型数据str(x)将x转换为字符串型数据高中信息技
13、术高中信息技术编程调试输入fc=(f-32)/1.8开始结束输出c如何让程序具有更友好的交互性?f=int(f)高中信息技术Python语言主要用函数print()实现数据输出。函数print()主要用于在屏幕上输出一个或多个输出项的值,多个输出项中间用逗号隔开,例如:输出函数print()print(c)print(f,转换为摄氏温度是:,c)高中信息技术编程调试-参考答案高中信息技术函数print()会自动在行末加上回车。如果不需回车,只需在函数print()的结尾添加一个逗号,并设置分隔符参数 end,就可以改变它的行为。输出函数print()print(f,end=n)以换行符结尾,换
14、行print(f)换行print(华氏温度:,end=)以空格结尾,不换行高中信息技术编程调试高中信息技术程序通常包括:和三部分。Input:程序输入,是程序的开始。Process:程序对输入进行处理,产生输出结果。Output:程序输出,展示运算结果。程序设计的IPO模式高中信息技术根据键盘输入的身高和体重值,编写程序计算体重指数BMI。(BMI=w/h/h,w为体重kg,h为身高m。)练一练提出问题分析问题设计方案编程调试解决问题高中信息技术练一练-参考答案输入w,hBMI=w/h/h输出BMI开始结束高中信息技术小结顺顺序序结结构构与与语语句句顺序结构顺序结构程序语句程序语句按照自上至下的排列顺序逐条执行。导入模块语句:import赋值语句输入输出语句高中信息技术1.一个三位数,百位上的数比十位上的数大1,个位上的数是百位上的数的2倍,若十位上的数为3,编程求这个三位数是多少?2.编写程序实现以下功能:用户输入任意一个三位数,运行程序将其逆序输出。例如:用户输入“123”,程序输出“321”。课后练习