网易首页 > 网易号 > 正文 申请入驻

少儿编程|Scratch实例11:精确计算圆周率程序(机器模拟割圆法

0
分享至

(点击 ↑蓝字,轻松关注。查看历史文章,收获最新资讯)

本文中,我们将使用程序求解圆周率,通过这个实例,我们可以感受到计算机程序给人类带来的巨大得计算能力提升,这种能力对需要大量计算的人群来说是无法想象的,比如以前的数学家、科学家等。

在编程之前,让我们一起回顾什么是圆周率,以及了解什么是圆周率计算方法“割圆术”。

圆周率与割圆术

什么是圆周率?

π is commonly defined as the ratio of a circle's circumference C to its diameter d.

The number π (/pa/) is a mathematical constant. Originally defined as the ratio of a circle's circumference to its diameter, it now has various equivalent definitions and appears in many formulas in all areas of mathematics and physics. It is approximately equal to 3.14159. It has been represented by the Greek letter "π" since the mid-18th century, though it is also sometimes spelled out as "pi". It is also called Archimedes' constant.

圆周率是一个数学常数,是一个圆的周长 C 和其直径 d 的比率,约等于3.1415926,它在18世纪中期之后一般用希腊字母 π 指代,有时也拼写为“pi”。

—— Wikipedia

如图,圆周率 = 圆的周长 ÷ 直径。

什么是割圆术?

“割圆术”是一个重要的求解圆周率的方法,三国时代的刘徽、南北朝数学家祖冲、希腊数学家阿基米德等等,都是使用割圆术完成自己对圆周率π的计算。

下面是刘徽的著作中关于割圆的描述,他算出的圆周率值是3.1416。

简单一点解释,割圆术就是在圆内绘制等边多边形,当多边形的边数越多时,多边形的周长与圆周越是接近,同时,多边形周长除以圆直径的结果越接近某一个固定值,这个值被称作“圆周率”。

下面分别是6边形、12边形、24边形、48边形,可以看出48边形比6边形更相似于圆,有理由相信,边数继续增加后,多边形会更加近似于圆。

在约公元480年,祖冲之利用割圆术计算24567形的边长,得到 π ≈ 355113(现在称其为密率),其数值为3.1415926~3.1415927,小数点后的前七位数都是正确值。直到一千多年后才由15世纪的阿拉伯数学家阿尔·卡西以17位有效数字打破此记录。为纪念这位伟大的中国古代数学家,有人将 π ≈ 355113 称作“祖率”。

00 算法分析

学习了割圆术,我们来思考怎样将它转化成程序语言。

首先,我们要动态的画出一个圆,更准确的说,我们要画一个圆的内接正多边形,通过逐步增大多边形的边数,观察多边形逐渐向圆形靠拢的过程,同时,观察圆周率逐渐变得精准的过程。这个动画过程,可能需要用到圆心、半径、边数、边长,具体用到哪些则取决于我们的算法。

再次提醒:圆周率 = (边长 × 边数) ÷ (半径 × 2)。

圆内接多边形的边数可以要求用户输入,假设边数是n。

知道了边数,就知道了n边形相邻两边的夹角,等于内切角,即360÷n;也知道了多边形中单独一个三角形的内切角,等于360÷n。

据此分析,引出了两种编程算法:

  • 方法一

从用户处获取n,并将圆的半径设置为固定值R,则,算出 多边形边长 = (sin(360÷n÷2))× R × 2,多边形周长 = 边长 × n,所以,圆周率 = 周长 ÷ (R × 2)。

这个算法的优点是:1)直径是精确值。不足之处是:1)画多边形困难 2)正弦函数对一些读者来说偏难。

  • 方法二

从用户处获取n,并将多边形的边长设置为固定值L,程序每画出一条边后转360÷n度并继续画下一边,直到绘制完n条边,则,算出 多边形周长 = L × n,间接得到直径(此法无法直接得到直径,可以通过画多边形过程“起点与n÷2处的点之间的长度”算出直径的约数d),所以,圆周率 = L × n ÷ d。

这个算法的优点是:1)周长是精确值 2)画多边形容易。不足之处是:1)求直径不直观。

综上分析,我们采用第二种方法作为我们本次的算法。

01 软件分析

需求说明:

编写一个计算程序,程序开始时让用户输入圆内接正多边形的边数n,从固定起点A开始绘制直线,直线长度为L,然后旋转360÷n度并继续画下一条边,以此类推,直到绘制完n条边。另外,在绘制第n÷2边时,记录下此时与A的距离,作为直径d。多边形绘制完成后,计算圆周率 = L × n ÷ d,在屏幕上显示结果。

需求分析:

  1. 1. 至少需要两个角色,一个角色询问边数,一个角色绘图;

  2. 2. 角色A通过输入框询问用户切割成几边形,存入变量n,然后通知角色B可以开始画图和计算了;

  3. 3. 角色B画图:绘图起点设置在y轴上,暂定坐标x=0、y=160。试运行时如发现不妥,可以再调整;

  4. 4. 多边形边长不能固定,而应该根据n的大小进行调整(请思考原因,此处不讲解了),暂定边长L=1000÷n;

  5. 5. 循环n÷2次画多边形的一半:画直线L,然后旋转360÷n度并继续画下一边。循环结束时,记录下与起点的距离,即直径d;

  6. 6. 继续循环n÷2次画多边形的另一半;

  7. 7. 计算圆周率 = L × n ÷ d,计算结束,结果输出在屏幕上显示。

02 添加角色

默认的小猫角色用来询问用户,再增加一个角色用来画圆。

对于第二个角色,我们使用“绘制角色”的方式,其实只要画个圆点即可。操作步骤是,点击【选择一个角色】,选择【绘制】,在造型编辑器中(是Scratch自带的画图软件),点击【画笔】,因为我们要在造型的中心画一个很小的点,所以先放大造型背景图,在清楚分辨背景图的中心十字星的时候,将鼠标移到中心之上,鼠标左键点击绘制一个小点。

03 调整角色的大小和位置

将角色调整到合适的大小,将小猫移到舞台的一角。

04 更换舞台背景

按照你自己的喜好,将默认的舞台背景替换成合适的背景图。

为了让大家看清楚编程中我们使用的坐标,和所绘制圆的精确位置,我使用下面的图。如果你觉得不美观,可以在程序调试成功后,将它替换成其他背景图。

背景图的名字是Xy-grid。

05 添加变量

增加4个变量:圆周率、边数、边长、直径。

06 小猫角色编码

小猫角色的编码很简单,询问多边形的边数,将变量值初始化归零。

07 画图角色的编码

画图角色的编码和需求分析中是一致的,每个积木编码的含义详见下图的图注。

其中有些需要着重讲解:

1、角色的朝向与转交

角色在多边形顶点时,角色的朝向与转角是比较难理解的内容。

请务必先自己思考,有了一定思路后,观察下图。

紫色箭头,表示了角色当前的朝向;

绿色θ角,表示了画下一条边之前,角色的旋转角;

2、“直径”计算

计算直径,其实就是计算“坐标系中两点的距离”。

计算两点距离有现成的方法,如下图

通过代码实现这个公式

使用上面的代码,计算结果完全正确。可是,我总觉得有些不完美的地方:1)积木代码太长了,看起来麻烦 2)求两点距离的公式有的读者还没学习或者难以理解运用。

针对“直径”计算,我们可以优化一下代码!

08 画图角色的编码(第2版)

一、添加一个新角色【起点】

首先,再增加一个角色【起点】,把它一直固定在绘图的起点位置,除此之外,不做其他事情。

操作步骤:

1、【可选】给画图角色改一个“见名知意”的名字;

2、从画图角色复制一个新角色,并改名为“起点”;

3、删除因复制自带过来的代码;

4、编写新代码

二、修改求直径的代码

然后,修改求直径的代码,只要求解【画图】角色与【起点】角色之间的距离即可。

09 完工!运行程序

至此,我们完成了“需求说明”中的全部内容,可以点击舞台左上角的小旗子运行程序,查看效果。

  • 解决程序运行慢的问题

但是,当你填写的边数特别大时,会发现程序运行了很长时间。如果你只想知道 π 的值而不关心动画过程,可以【打开加速模式】,这样程序就会瞬间运行完毕了。

附加练习

  • 用户输入时,如果小于3,不进行计算,直接提醒用户输入值不合理(思考为什么要控制不能小于3)

  • 去掉用户输入,将程序改成多边形的边数从3开始逐渐增加,观察各个变量和圆周率的变化

tag:#Scratch编程、#少儿编程、#儿童编程、#趣味编程、#青少年编程、#软件编程

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
黄粱一梦,俄国人加速撤离克岛,乌3位前总统集体退还波兰勋章

黄粱一梦,俄国人加速撤离克岛,乌3位前总统集体退还波兰勋章

史政先锋
2026-06-21 20:15:46
不光停发绩效,很多单位工资都发不出了!

不光停发绩效,很多单位工资都发不出了!

细说职场
2026-06-19 15:00:25
500亿交了昂贵学费!京东的外卖败局,给所有企业敲了警钟?

500亿交了昂贵学费!京东的外卖败局,给所有企业敲了警钟?

呼呼历史论
2026-06-21 13:34:59
「被WPS背刺了」冲上热搜!官方客服回应

「被WPS背刺了」冲上热搜!官方客服回应

鞭牛士
2026-06-21 15:40:08
虎扑网友深夜自曝:约到大长腿,仅2条评论

虎扑网友深夜自曝:约到大长腿,仅2条评论

赴一场山海啊
2026-06-22 01:08:41
大冷门!世界杯首支出局强队,三位天才成笑柄,世界名帅头号罪人

大冷门!世界杯首支出局强队,三位天才成笑柄,世界名帅头号罪人

晓徙娱乐
2026-06-22 04:22:30
乐坛天后主动示好?一份婚礼请柬成了橄榄枝

乐坛天后主动示好?一份婚礼请柬成了橄榄枝

时光慢旅人
2026-06-21 00:40:06
“我只为检出甲酰胺的孩子”——调查记者再发声,撕开遮羞布

“我只为检出甲酰胺的孩子”——调查记者再发声,撕开遮羞布

五星新闻
2026-06-22 02:28:27
18岁342天,亚马尔超越梅西升至世界杯历史最年轻进球榜第八

18岁342天,亚马尔超越梅西升至世界杯历史最年轻进球榜第八

懂球帝
2026-06-22 00:26:16
7万人泪目支持!伊朗逼平世界第10:升到小组第1 33岁门神逆天7扑

7万人泪目支持!伊朗逼平世界第10:升到小组第1 33岁门神逆天7扑

风过乡
2026-06-22 05:52:51
西班牙头号倒霉蛋?26岁射手离谱失单刀+进球被吹 世界杯连场拉胯

西班牙头号倒霉蛋?26岁射手离谱失单刀+进球被吹 世界杯连场拉胯

我爱英超
2026-06-22 02:32:09
上市公司突发公告:副总裁郭智超(女,1986年生),意外去世

上市公司突发公告:副总裁郭智超(女,1986年生),意外去世

极目新闻
2026-06-21 20:25:05
世界第10一胜难求!库尔图瓦屡献神扑 伊朗0-0十人比利时创纪录

世界第10一胜难求!库尔图瓦屡献神扑 伊朗0-0十人比利时创纪录

钉钉陌上花开
2026-06-22 05:00:44
老黄终于瞒不住了:直言大儿子确实去世了,大女儿一直在身边

老黄终于瞒不住了:直言大儿子确实去世了,大女儿一直在身边

以茶带书
2026-06-21 15:54:37
18岁斩世界杯首球!西班牙2亿天才连创5大纪录 超越梅西+比肩贝利

18岁斩世界杯首球!西班牙2亿天才连创5大纪录 超越梅西+比肩贝利

我爱英超
2026-06-22 00:52:15
小米徐洁云回应“雷军过早被质疑摆拍”:工作之余吃吃喝喝拍Vlog都两年了,如果有人非要往某些方面带,再怎么合理,似乎也都会变成不合理

小米徐洁云回应“雷军过早被质疑摆拍”:工作之余吃吃喝喝拍Vlog都两年了,如果有人非要往某些方面带,再怎么合理,似乎也都会变成不合理

潇湘晨报
2026-06-21 21:50:12
大冷门!世界杯首支出局强队,三位天才成笑柄,世界名帅头号罪人

大冷门!世界杯首支出局强队,三位天才成笑柄,世界名帅头号罪人

诺诺谈史
2026-06-22 04:23:47
德国总理站出来,呼吁27国联手,用美国搞垮日本那套,来对付中国

德国总理站出来,呼吁27国联手,用美国搞垮日本那套,来对付中国

流史岁月
2026-06-21 15:50:06
西班牙4球大胜!世界杯1303天首胜,4战沙特全胜,连刷7大纪录

西班牙4球大胜!世界杯1303天首胜,4战沙特全胜,连刷7大纪录

奥拜尔
2026-06-22 02:03:12
混子!巴萨两大水货世界杯现形,西班牙 4-0 大胜也洗不动

混子!巴萨两大水货世界杯现形,西班牙 4-0 大胜也洗不动

澜归序
2026-06-22 04:08:21
2026-06-22 07:40:49
青少儿编程
青少儿编程
分享儿童、青少年编程资讯
51文章数 289关注度
往期回顾 全部

科技要闻

马斯克拿下7800亿元天价薪酬 2028年可兑现

头条要闻

渐冻症女子被男护工猥亵案宣判 多次被对方亲吻、摸胸

头条要闻

渐冻症女子被男护工猥亵案宣判 多次被对方亲吻、摸胸

体育要闻

德国的超级替补,10年前还在工厂上班

娱乐要闻

原来她就是张颂文老婆

财经要闻

“床垫界的特斯拉”破产了

汽车要闻

惊出冷汗!重庆实测奥迪A5L,华为智驾这波操作绝了…

态度原创

本地
健康
教育
家居
公开课

本地新闻

龙腾资江 韵动邵阳

吃粽子的3条保胃法则,消化科医生推荐

教育要闻

翁虹晒女儿高中毕业,全年级前三,拿全A毕业,最终选择UCLA大学

家居要闻

绿意盎然 自然之境

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版