用少兒編程工具計算圓周率

2021-02-08 科技傳播坊

授權轉載 | 千裡馬快樂編程 qianlima_biancheng

原文作者 | CG

原文標題 | 3.14 π日 - 用少兒編程工具計算圓周率

標籤:難度中級;數學;多邊形;圓周率;學科結合;


因為圓周率的前三位是3.14,所以3月14日叫做π日。圓周率(Pi)是圓的周長與直徑的比值,一般用希臘字母π表示,是一個在數學及物理學中經常用到的一個非常重要的數學常數。今天,我們就來學習下怎樣用Scratch來計算圓周率π。


公元480年左右,我們南北朝時期的數學家祖衝之第一次計算出π精確到小數點後7位的結果(3.1415926 ~ 3.1415927之間),是世界上第一次哦。下面我們看看在一千多年後如何用少兒編程工具Scratch來計算π:


1 正多邊形

正多邊形是所有角都相等、並且所有邊長都相等的多邊形。下面這些都是正多邊形: 


細心的同學是不是可以發現一個規律:「隨著邊數的增多,正多邊形越來越像圓形了」? 對的,圓形就可以看成是一個邊數無限多,邊長無限小的正多邊型。圓的周長就近似於所有邊的長度加起來,圓的直徑就近似於最長對角線的長度。所以圓周率π就可以用以下的公式計算:

π=所有邊的長度之和/最長對角線長度


下面這些例子裡,「正多邊形所有邊的長度之和」就是藍色的線條,「最長對角線長度」就是紅色的直線: 

好了,知道了這個計算方法之後,我們就可以用Scratch來計算了。大家記住關鍵一點:正多邊形的邊數越多,就越像圓形了。


2 Scratch編程

Scratch是一款由麻省理工學院(MIT) 設計開發的少兒編程工具。使用者可以不認識英文單詞,也可以不會使用鍵盤。構成程序的命令和參數通過積木形狀的模塊來實現。用滑鼠拖動模塊到程序編輯欄就可以了。大家可以下載該工具,或直接使用官網使用網頁版(https://scratch.mit.edu/projects/editor/)。


我們就用正多邊形的特點「所有角都相等、並且所有邊長都相等」來畫正多邊形,以正六邊形為例。根據正多邊形內角計算公式:內角角度 = 180° - (360° / n),其中n是正多邊形的邊數,可知正六邊形的每個內角為120°。繪製的過程是: 

1、首先是向右畫第一條邊。Scratch規定向上的方向是0°,向右是90°。所以第一步是面向90°畫一次邊。(從點0到點1)

2、接下來向右轉(180°-120°內角角度)= 60°,再畫第二條邊。(從點1到點2)

3、接下來再向右轉(180°-120°內角角度)= 60°,再畫第三條邊。(從點2到點3)

4、接下來再向右轉(180°-120°內角角度)= 60°,再畫第四條邊。(從點3到點4)

5、接下來再向右轉(180°-120°內角角度)= 60°,再畫第五條邊。(從點4到點5)

6、接下來再向右轉(180°-120°內角角度)= 60°,再畫第六條邊。(從點5回到點0)


仔細觀察步驟,可以發現規律:它們都是向右旋轉相同的角度(180°-內角角度),然後畫一次邊長。再看看第1步也有畫一次邊長的操作。所以,我們可以總結出一個畫正六邊形的「規律」:

1、畫一次邊長

2、向右轉360° / n (=『180°-內角角度』 = 180°-(180°  - (360° / n)))

3、重複上面步驟1和2共n次。


上面的n代表邊數,六邊形就是6。我們嘗試增減n的大小。發現這個規律都是適用的。就是說我們可以用這種方法畫任意正多變形。用Scratch來實現這個規律就是:

上面就是畫正多變形的方法。畫好後就可以計算「所有邊的長度之和」和「最長對角線長度」了:「所有邊的長度之和」就是 邊長 × n。


「最長對角線長度」有一點點複雜,觀察多邊形的圖片我們可以知道,它等於起點(正六邊形例子中的0點)到中間的點(正六邊形例子中的3點)的距離。我們用兩個變量(對角X和對角Y)分別記錄中間點的X軸和Y軸位置。通過計算起點和中間點的距離,就得到「最長對角線長度」了。


首先我們創建一個叫『起點』的角色,指令開始時記錄下起點位置:


在畫多邊形過程中,把中間點X軸和Y軸位置記錄在變量裡:


在畫完多邊形後,讓『筆』去到中間點:


計算「最長對角線長度」:


然後計算圓周率π:

π=所有邊的長度之和/最長對角線長度


我們看看邊數為100,1000,10000時π的計算值。可以發現邊數越大,計算的結果越準確(π = 3.1415926535)。

當然邊數越大的時候,計算(循環)的次數也就越多了,需要計算的時間也會越多哦。下面就是完整的指令:


好了,大家如果對於Scratch編程有興趣,歡迎添加公眾號 qianlima_biancheng,與我們交流討論。

相關焦點

  • 祖衝之如何算出圓周率?用編程還原計算過程,結果令人感嘆不已
    今天,我們要詳細了解祖先生使用的圓周率算法,並且通過Scratch3.0編程還原整個計算過程,是不是很期待呢?周長法原理原理就是這樣的,但當時祖衝之是如何測量、如何計算,至今仍是未解之謎!(據考證算盤實在唐、宋時期才出現的)祖衝之計算時使用的是一些小木棍——算籌,且不論測量時如何解決誤差問題,僅是計算時面臨的困難,其難度可想而知。今天,我們還原祖衝之周長法計算圓周率,當然不用再拿尺子去量了,藉助計算機的強大運算能力,學習少兒編程的小朋友使用Scratch編程也能輕易計算出更精準的π。
  • LabVIEW編程實例:計算圓周率pi,學while循環,學移位寄存器
    LabVIEW又稱為G語言,簡單易學、形象直觀,採用圖形化的編程方式,是專為測試、測量和控制應用而設計的系統工程軟體。不同於C語言,在LabVIEW編程中,循環又往往伴隨著移位寄存器的使用,稍不注意,可能就會出錯。下面通過一個例子演示while循環的使用方法。
  • 少兒編程軟體哪個好?國產最強大少兒編程工具推薦
    如果要問目前市場上功能最強大、最適合中小學生學習少兒編程的工具是什麼?毫無疑問,首推帕拉卡(Paracraft)3D動畫編程創作工具,這是一個讓小學生愛不釋手的少兒編程學習工具。,還實現了一個工具完美覆蓋7-18歲全年齡段的學生學習少兒編程,更有利於學生持續化的編程學習。
  • 解析計算思維與少兒編程的關係
    少兒編程風頭正勁,有傳言編程將取代英語,成為下一個進入高考的科目。那麼,被機構熱炒的「全世界多個國家都在全民推廣的少兒編程」,真相究竟如何呢?其實,少兒編程在上個世紀60年代就已經出現並得到推廣(《》),而且目前國際上公認的少兒階段培養目標並不是學習編程,而是利用編程促進計算思維的培養。學習少兒編程是不是就等於培養計算思維呢?二者之間是什麼樣的內在聯繫呢?
  • Python之圓周率計算的算法
    由於正方形面積比較容易求得,因此可以通過正方形面積與圓的面積的比值,就能求出圓的面積,進而求出圓周率。蒙特卡洛方法計算圓周率蒙特卡洛方法求解圓周率的編程實現蒙特卡洛方法求解圓周率的編程實現公式法>公式法計算圓周率結合上面公式,利用python中的for循環即可求解圓周率,不再贅述。
  • 用Scratch來計算圓周率π,小朋友也能懂
    之前電腦報刊登了一篇用VB計算圓周率π值的文章。使用了π/4=1-1/3+1/5+…+1/i,計算π的近似值,i值越大精度越高。這種算法不夠直觀,其實不太容易理解。我另外選了兩種計算π的算法:蒙特卡羅方法和直接測量法,並用Scratch編程來計算圓周率,這樣小朋友都能很容易理解圓周率的定義和計算了。
  • 少兒編程、少兒機器人編程是什麼?
    少兒編程其實是一個籠統的稱呼,其實分為少兒編程和少兒機器人編程,少兒編程指的是軟體編程,通過圖像化的積木模塊的拖拽,實現對角色對象的操作,可以製作出動畫、遊戲和簡單的應用,少兒機器人編程指的是拼搭帶有電子元器件的積木機器人,或PVP板和螺絲固件裝配一個機器人,並對機器人進行編程,讓機器人實現既定的動作,那麼什麼是編程?
  • 少兒編程篇01少兒編程的起源
    關注了很久少兒編程,也對少兒編程進行相對系統地研究。今天就來說說少兒編程的起源隨著資訊時代的到來,人工智慧、大數據等技術的蓬勃發展,編程已經成為21世紀必不可少的技能。在未來,如果不懂得編程,就會像以前不會上網、打字一樣,而成為新一代的「文盲」,這可能使孩子錯失很多機會。在國內少兒編程的發展時間並不長,但是在國外卻一直很重視少兒編程培訓。其實,有很多我們耳熟能詳的人,小時候都學習過少兒編程。
  • 少兒編程與少兒編程教育
    ​1.什麼是少兒編程?編程簡單來說就是依靠編寫程序來告訴計算機要做什麼。少兒編程往往會把大家帶入一個誤區,即少兒編程就是讓孩子寫代碼!​其實,少兒編程主要是通過一些編程遊戲和可視化的圖形編程所以,少兒編程不等於寫代碼。
  • 少兒編程第二課(體驗編程和計算之美)—雞兔同籠問題
    許多小學算術應用題,都可以轉化為雞兔同籠問題加以計算。一個籠子裡裝有雞和兔子共35隻,一共有94條腿,雞有______只,兔子有______只.小朋友可以擴展下,通過編程解決平時遇到的計算應用題!作為少兒科技教育前線的工作人員,小蟹認為:少兒編程教育並不是要培養未來的程式設計師,而是讓孩子能掌握新科技並應用新科技表達自己,由科技時代的消費者轉變為創造者;同時,少兒編程是培養小朋友思維能力的理想載體。
  • 學習少兒編程,教學工具選擇很重要!
    美國前總統歐巴馬,連續兩年親自為編程宣傳「編程一小時」活動,並憑一行「MoveForward(100)」成為了全球首個寫過代碼的總統。更有人提出:「少兒編程應該是未來信息化時代孩子的基礎學科」,幾乎所有的聲音都在告訴家長,少兒編程很重要!
  • 【每周一坑】暴力計算圓周率 +【解答】生成/識別二維碼
    我講過,用電腦程式來解編程題有個很有意思的思路,就是暴力解法。就是利用電腦的計算能力,去模擬大量的情況(甚至所有情況),得出統計數據。這種方法雖然從數學角度來說不是絕對和精確的,但可以很方便地應付很多需求,以及作為計算結果的輔助驗證。
  • 你知道孩子為什麼要學編程,少兒編程有什麼用嗎?
    什麼是少兒編程?是通過編程遊戲啟蒙、可視化圖形編程等課程,培養學生的計算思維和創新解難能力的課程 ,學了少兒編程可以潛移默化對語文,數學,英語,科學影響。少兒編程幾歲開始學比較好?少兒編程學習年齡段:針對6歲到18歲的青少兒。6歲至9歲:少兒編程小遊戲這一階段不必刻意學習,可以玩一些不含字母的編程小遊戲,比如用指令控制一個角色到達終點,繞過障礙物,用循環來完成重複任務等等。
  • 圓周率π的計算曆程
    這正反映了早期人們對圓周率 π 和√2 這兩個無理數的粗略估計。東漢時期官方還明文規定圓周率取3為計算面積的標準。後人稱之為「古率」。  早期的人們還使用了其它的粗糙方法。如古埃及、古希臘人曾用穀粒擺在圓形上,以數粒數與方形對比的方法取得數值。或用勻重木板鋸成圓形和方形以秤量對比取值……由此,得到圓周率的稍好些的值。如古埃及人應用了約四千年的 4 (8/9)2 = 3.1605。
  • 最適合少兒編程的網課工具評測
    少兒編程,近年來十分火爆。由於其編程的屬性,天然就比較適合線上教學。但是目前線上教學的工具,五花八門。到底什麼樣的網課工具,才是最適合少兒編程呢?其次,我們再去判斷哪些時少兒編程課的剛需,最後,是看易用性,功能的豐富性。基於以上三點可以判斷出什麼樣的工具最適合。 1、上課的目的是效果,網課要有好的效果,就必須要有嚴格的課堂紀律。就是學生和老師不在同一個空間,老師依然能管得住學生。學生依然對課堂有尊重。並且,能進行互動,形成課堂的氣氛。不會讓學生覺得自己獨自一人,而無法集中注意力。
  • 少兒編程工具之戰:開源、免費的Scratch招惹了誰?
    Scratch軟體作為一款開源、免費的少兒編程教育工具,工具本身是沒有傾向性的。國內的少兒編程工作者們利用單機版軟體和對開原始碼的二次開發實現了Scratch教學應用的「本地化」,以低成本工具,搭建符合中國兒童學習需求的少兒編程教育體系和課程內容,推動國內少兒編程教育標準化的建立和深化普及的進程。
  • 機器人少兒編程到底是什麼?用什麼作用
    少兒機器人編程顧名思義就是適合孩子學習的一種編程教育,主要是針對少年、兒童的編程活動。採用圖形化的編程工具,像組裝積木一樣,通過拖拽、點擊等簡單的操作就可以製作屬於自己的動畫、遊戲、音樂、繪畫等等,甚至可以用它來學習數理化知識。
  • 為什麼說少兒編程不是為了教孩子編程技能?|推薦
    編程貓還專門出了一本百科全書叫做《生活中的計算思維》,比如怎麼排座位,物品如何分類檢索等都可以用計算思維去解決。很多人認為編程非常高深莫測,其實它跟人們的生活息息相關。因此學編程不是一定要當程式設計師,就像學英語不一定當翻譯。
  • scratch圖形化的少兒編程很簡單?少兒編程老師表示不服
    最近看到一句話:「所謂的少兒編程只是簡單的圖形化編程,跟真正的編程是兩碼事。」圖形化的少兒編程很簡單?國內目前很多少兒編程機構用的也都是scratch,或者在它本身源碼的基礎上做一些更改,完全自己去開發一個圖像化少兒編程工具是很難的。
  • 少兒編程之用Scratch編程計算三角形面積(7分鐘課堂)
    很多人把Scratch當成一款遊戲軟體,其實這是初編程的啟蒙工具,很多剛開始學編程的孩子都選擇從Scratch入門,通過Scratch編程能夠解決不少數學和實際問題。比如三角形面積的計算,運用數學公式計算大家都會,直接套用公式就可以了,但用Scratch編程來計算三角形面積,你會嗎?下面「7分鐘課堂」來教教你。