资源简介 (共35张PPT)第一课时设计算法实现用数学公式计算信息技术沪教版必修1项目七用计算机计算圆周率——设计简单数值数据算法目录一数值数据及其运算二循环结构的算法构建五课后作业三实现循环结构的语句四计算圆周率一、数值数据及其运算整数浮点数(float)数值数据(int)数值数据的运算符号运算符含义示例运算结果+加法53+2174-减法63.1-2.260.9乘法3001.5450.0/除法1/80.125//整除1//80次幂238%求余数17%32运算符执行的是次幂运算01>>>4.8//1.24.0>>>5//1.24.0>>>7//23>>>3//4002ab等价于数学运算ab>>>238>>>160.54.0>>>1.62.53.23817232401242103运算符%执行的是求余数运算>>>x=34>>>x%20>>>x%31>>>x%170>>>x%42二、循环结构的算法构建构建循环结构要素变量的初值变量的终值重复分析问题变化的语句例1:求50!1.分析问题50!=12345……50,和累加问题类似,计算机算法的处理是逐项将1.2.3.……,50累乘到一介变量中。算法一算法二1.令s=1;2.令i=1;3.循环当i小于等于50;3.1s=si;3.2i=i+1.1.令s=1;2.s=s1;3.s=s2;……51.s=s50.例2:输入一个任意正整数,求它的逆序数。求一个正整数的逆序数的方法,是每次取该数的最后一位数字,构造出一个新的整。例如,726的逆序数的求解过程如下。1.分析问题构造循环控制时,可以将表示输入数的变量作为循环控制变量。输入初始值后,每次整除10,直到该数为0,循环结束。重复执行的操作是将原数的最后一位取下,通过位权值构造到新的逆序数中。2.设计算法设输入的数为num,逆序数为reverseNum。1.输入一个正整数到num;2.令reverseNum=0;3.循环当num>0;3.1reverseNum=reverseNum10+num%10;3.2num=num//10;4.输出reverseNum。三、实现循环结构的语句1.确定次数循环Python语言中通过for语句来实现确定次数循环。for<循环控制变量>in<遍历结构>;<语句块>1.确定次数循环用for语句实现求50!的语句块如下:s=1foriinrange(1,51);s=siprint(s)1.确定次数循环将1~50之间所有的奇数累加的语句块如下:s=0foriinrange(1,50,2);s=siprint(s)2.不确定次数循环Python语言中通过while语句来实现不确定次数循环:While<条件>:<语句块>2.不确定次数循环用while语句实现例2求逆序数的语句块如下:num=int(input(“请输入一个数:“))reverseNum=0while(num):reverseNum=reverseNum10+num%10num=num//10print(“它的逆序数是:”,reverseNum)while语句也可以用于完成确定次数循环,请用它实现求解50!。s=1i=1whilei<=50:s=sii=i+1print(s)四、计算圆周率观察欧拉发现的数学公式可知,它是一项一项连续相加的,且每一项都可由前一项经过有规律的变化得到。有规律的数据项连续相加的问题,称为累加问题,用计算机算法处理就是逐项累加。上述累加计算的算法可以用自然语言描述。1.分析问题1.设置累加器变量s的初值为0;2.s=s+1/(11);3.s=s+1/(22);……累加可以用一个公式来表示:s=s+item。这个式子称为累加的通项公式。对上述欧拉发现的公式来说,item的值是1/i2,即1/(ixi),i从1开始,每次增加1解决本问题需要重复进行的工作是;①累加item到s,即s=s+item;②构造item,即item=1/(ii),i=i+1。2.设计算法,编写程序frommathimportsqrti=1s=0item=1whileitem>0.000001:s=s+itemi=i+1item=1/(ii)pi=sqrt(6s)print(“pi的值是:",pi)1.令i=1,em=1.,s=0;2.循环当item大于等0.000001;2.1s=s+item;2.2i=i+1;2.3item=1/(ii);3.pi=4.输出pi的值。3.运行、调试程序在Python中创建并运行程序,检查运行结果。五、课后作业1.循环开始前,item的值是多少?循环结束后,item的值是多少?2.如果将第2.1步调至循环体的最后一行,该如何调整算法步骤来保证程序结果的正确?请上机运行检验。3.如果按累加n项的方法控制循环,该如何修改程序?如何分别用while语句和for语句实现?谢谢21世纪教育网(www.21cnjy.com)中小学教育资源网站有大把高质量资料?一线教师?一线教研员?欢迎加入21世纪教育网教师合作团队!!月薪过万不是梦!!详情请看:https://www.21cnjy.com/help/help_extract.php中小学教育资源及组卷应用平台项目七用计算机计算圆周率———设计简单数值数据算法第一课时设计算法实现用数学公式计算■教材分析“设计算法实现用数学公式计算”这一小节,使用欧拉公式设计算法实现圆周率的计算。首先,引出数值数据及其运算,然后从需求出发,分析问题并提出解决问题的方法,从而引出并重点探究循环结构的算法设计思路。考虑到循环结构中的初值、赋值过程、终值相对较难理解,教材中又设计了活动7.1——使用沃利斯公式法计算圆周率,教师可根据学生的掌握程度适当开展此活动,以进一步巩固学生对如何实现控制结构算法的认识,加深学生对循环结构的理解。■教学目标1、知识和技能探究循环结构的算法设计思路。2、过程与方法通过设计算法进一步巩固学生对如何实现控制结构算法的认识,加深学生对循环结构的理解。3、情感态度与价值观(1)提高分析问题和解决问题的能力,体会算法分析的魅力。(2)通过完成本项目,学生将体验使用不同的方法计算圆周率,激发学习兴趣。■教学重点:探究循环结构的算法设计思路。■教学难点:认识程序的循环结构。■教学准备计算机教室,Python,投影机。■教学素材教材案例的源代码.■教学过程:一.数值数据及其运算数值数据分为整数(int)和浮点数(float)。浮点数是带小数的数值。例如,1是整数,1.0是浮点数。在计算机中,两种数据的存储方式是不同的。数值数据的运算包括标准的算术符号,如下表所示。其中+、-、、/运算符的含义和用法和数学符号是一样的。运算符含义示例运算结果+加法53+2174-减法63.1-2.260.9乘法3001.5450.0/除法1/80.125//整除1//80次幂238%求余数17%32运算符//执行的是整数除运算,它会产生一个小数部分为0的结果,小数部分会被舍掉。运算符执行的是次幂运算,ab等价于数学运算ab。运算符%执行的是求余数运算。这三种运算符的用法举例如下:二、循环结构的算法构建要构建一个循环结构,需要解决两个问题:一是重复要做的是什么事,二是如何控制循环。对重复要做的是什么事,可以从分析问题入手解决。面对循环操作的控制,一般是通达使用一个循环控制变量来实现的。实现循环控制有三个要素:①循环控制变量的初值;②循环控制变量的终值;③在循环体中使循环控制变量由初值向终值变化的语句。例1:求50!1.分析问题50!=12345……50,和累加问题类似,计算机算法的处理是逐项将1.2.3.……,50累乘到一介变量中。与累加问题不同的是,累乘变量的初值应为1.2.设计算法一观察算法一,可以发现每一步都是在做乘法。虽然乘的数据不同,但是这些数据的变化是有规律的,可以得到通项公式:s=si。接下来要确定循环控制变量。求阶乘的循环控制是由通项公式的执行次数决定的,一共执行50次。此时循环控制变量相当于一个计数器,从1开始,到50结束,每一次递增1。循环控制变量的变化和通项公式中的变量i的变化规律一样,所以将i作为循环控制变量。3.设计算法二值得注意的是,在循环体中一定要有一句使该循环能趋于结束的语句,如这里i=i+1,这样循环控制变量才能从初值变化到终值,最终结束循环。利用循环结构解决问题时,也会遇到一些循环执行次数不确定的问题,如例2。例2:输入一个任意正整数,求它的逆序数。1.分析问题求一个正整数的逆序数的方法,是每次取该数的最后一位数字,构造出一个新的整。例如,726的逆序数的求解过程如下。构造循环控制时,可以将表示输入数的变量作为循环控制变量。输入初始值后,每次整除10,直到该数为0,循环结束。重复执行的操作是将原数的最后一位取下,通过位权值构造到新的逆序数中。2.设计算法在本例中,循环的次数在程序执行前是未知的,由数num是否为0决定循环是否停止执行。循环体中通过一个整除操作来改变num的值,使它不断向终值0变化,最终结束循环的运行。这里的循环控制变量num相当于一个标志量,根据它的值决定循环是否结束。三、实现循环结构的语句根据上面的分析,按循环执行次数的确定性划分,循环可以分为确定次数循环和不确定次数循环。1.确定次数循环确定次数循环指循环结构对循环次数有明确的定义,循环次数采用遍历结构中元素的个数来体现。Python语言中通过for语句来实现确定次数循环。for语句简化了循环控制变量计数的过程,用遍历结构提供循环控制变量的所有值的集合。每一次循环,循环控制变量依次取集合中的一个值。遍历结构可以是range函数产生的序列、组合数据对象(列表、字符串等)或文件对象。用for语句实现求50!的语句块如下:如果要将1~50之间所有的奇数累加,则可以用range函数的第三个参数设定循环控制变量变化的步长,其语句块如下:2.不确定次数循环不确定次数循环一直保持循环操作,直到特定循环条件一被满足时才结束,不需要提前知道循环次数。Python语言中通过while语句来实现不确定次数循环:用while语句实现例2求逆序数的语句块如下:while语句也可以用于完成确定次数循环,如用它实现求解50!的语句块如下:四、计算圆周率我们尝试用Python语言,根据欧拉发现的公式来计算圆周率。1.分析问题观察上面的数学公式可知,它是一项一项连续相加的,且每一项都可由前一项经过有规律的变化得到。有规律的数据项连续相加的问题,称为累加问题,用计算机算法处理就是逐项累加。上述累加计算的算法可以用自然语言描述,具体如下。累加可以用一个公式来表示:s=s+item。这个式子称为累加的通项公式。对上述欧拉发现的公式来说,item的值是1/i2,即1/(ixi),i从1开始,每次增加1解决本问题需要重复进行的工作是;①累加item到s,即s=s+item;②构造item,即item=1/(ii),i=i+1。完成公式的计算就是重复执行以上步骤,直到满足某一个循环控制条件。循环控制条件可以是计数执行n次,也可以是某一个变量达到指定值。先根据循环控制条件确定循环控制变量,进而确定循环控制变量的初值、终值和如何变化,如右图循环结构的流程图所示。2.设计算法,编写程序如果以累加项item的值小于0.000001为循环终止条件,那么用自然语言描述上述问题的算法如左下所示。在Python语言中,利用while语句可以实现该循环结构的算法,程序如右下所示。这里用pi表示圆周率π。在Python语言中,当只需引用外部模块中一个特定的系统函数时,可以使用from命令。Frommathimportsqrt语句的作用是从math库中载入数学函数sqrt,这个函数用于求一个数的平方根。3.运行、调试程序在Python中创建并运行程序,检查运行结果。五、课后作业1.循环开始前,item的值是多少?循环结束后,item的值是多少?2.如果将第2.1步调至循环体的最后一行,该如何调整算法步骤来保证程序结果的正确?请上机运行检验。3.如果按累加n项的方法控制循环,该如何修改程序?如何分别用while语句和for语句实现?>>>x=34>>>x%20>>>x%31>>>x%170>>>x%42>>>4.8//1.24.0>>>5//1.24.0>>>7//23>>>3//40>>>238>>>160.54.0>>>1.62.53.238172324012421算法一1.令s=1;2.s=s1;3.s=s2;……51.s=s50.算法二1.令s=1;2.令i=1;3.循环当i小于等于50;3.1s=si;3.2i=i+1.第一次726%10=6010+6=6726/10=72第二次72%10=2610+2=6272/10=7结束第三次7%10=76210+7=6277/10=0设输入的数为num,逆序数为reverseNum。1.输入一个正整数到num;2.令reverseNum=0;3.循环当num>0;3.1reverseNum=reverseNum10+num%10;3.2num=num//10;4.输出reverseNum。for<循环控制变量>in<遍历结构>;<语句块>s=1foriinrange(1,51);s=siprint(s)s=0foriinrange(1,50,2);s=siprint(s)While<条件>:<语句块>Num=int(input(“请输入一个数:“))reverseNum=0While(num):reverseNum=reverseNum10+num%10Num=num//10Print(“它的逆序数是:”,reverseNum)s=1i=1whilei<=50:s=sii=i+1Print(s)1.设置累加器变量s的初值为0;2.s=s+1/(11);3.s=s+1/(22);……frommathimportsqrti=1s=0item=1whileitem>0.000001:s=s+itemi=i+1item=1/(ii)pi=sqrt(6s)print(“pi的值是:",pi)1.令i=1,em=1.,s=0;2.循环当item大于等0.000001;2.1s=s+item;2.2i=i+1;2.3item=1/(ii);3.pi=4.输出pi的值。21世纪教育网www.21cnjy.com精品试卷·第2页(共2页)HYPERLINK"http://21世纪教育网(www.21cnjy.com)"21世纪教育网(www.21cnjy.com) 展开更多...... 收起↑ 资源列表 项目七第一课时设计算法实现用数学公式计算.doc 项目七第一课时设计算法实现用数学公式计算.pptx