(
课件网) 算法设计 前 言 性质: 1、随机在正方形里撒一把豆子,每一颗豆子落在正方形内任何一点的可能性都是相等的。 2、落在每个区域中的豆子数与这个区域的面积近似成正比。 请同学们讨论出投点法求圆周率的算法: 导入新课 随机投点法 1. 整型(Integer):整型数据类型用来表示整数,可以是正数、负数或零。不同编程语言中的整型数据类型可能有不同的范围和长度,如C语言中的int类型,Java中的int类型等。 数值数据类型 2. 浮点型(Float/Double):浮点型数据类型用来表示带有小数部分的数值。浮点型数据类型通常包括单精度浮点型(float)和双精度浮点型(double),不同编程语言中的浮点型数据类型可能有不同的精度和范围。 数值数据类型 3.字符型(Character):字符型数据类型用来表示单个字符,可以是字母、数字、符号等。不同编程语言中的字符型数据类型可能有不同的表示方式,如C语言中的char类型,Java中的char类型等。 数值数据类型 4.字符串型(String):字符串型数据类型用来表示一串字符组成的文本,可以是字母、数字、符号等。字符串型数据类型通常用来处理文本数据,不同编程语言中的字符串型数据类型可能有不同的表示方式和操作方法。 数值数据类型 5. 布尔型(Boolean):布尔型数据类型用来表示真(True)或假(False)的值。布尔型数据类型通常用来进行逻辑判断和条件控制,不同编程语言中的布尔型数据类型可能有不同的表示方式,如C语言中的bool类型,Java中的boolean类型等。 数值数据类型 6. 数组(Array):数组是一种可以存储多个相同类型数据的集合。数组的元素可以通过索引访问,索引从0开始。不同编程语言中的数组可能有不同的表示方式和操作方法。 数值数据类型 darts为投放的总豆子数; hits为落在扇形内的豆子数。 hits/darts≈ S扇形/S正方形 圆周率π=S圆/R2 π=4×S扇形/S正方形 ≈4×hits/darts 新课讲解 如何模拟投豆子的过程? 随机函数random() random() 方法返回随机生成的一个实数, 它在[0,1)范围内 需要导入 random 模块 range()函数控制循环 分析问题 设计算法 算法: 1.输入总的投点数darts; 2.令hits=0; 3.循环i从0到darts-1,step1; 3.1 获取x,y的随机值; 3.2 如果,则hits增加1; 4.计算圆周率的近似值; 5.输出圆周率的近似值。 流程图: hits=hits+1 任务: 1、请同学们完成教材p97的空白代码 2、编写并运行、调试程序。 3、观察投点数分别为1000和5000的区别 编写、调试程序 思考与讨论: 1、分别输入 1000、5000、得到圆周率的近似值分别可以精确到第几位? 2、多次输入同样的总投点数 1000,会得到不同 的结果,这是为什么?如何减少这种不确定性? 1000点的效果图 5000点的效果图 思考与讨论 小结: 1、使用投点法求圆周率的原理; 2、使用循环和随机函数模拟投点过程; 3、投点数的不同得到圆周率的精度不同。 课堂小结 圆周率到底有没有尽头?科学家一直没有停止对它的探索,现在人类借助计算机已经将圆周率精确计算到62.8万亿位小数,但这仍然不是它的终点,有人说如果圆周率能够被算尽,或许我们目前学的所有科学知识都会被推翻,这将是非常恐怖的事情;同学们在学习过程中也要像圆周率一样,从不停歇,永无止境,活到老学到老,不断提升自我,超越自我! 结语 谢谢观看 ... ...