最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

S9G3 小學(xué)進退位計數(shù)器

2021-04-12 12:43 作者:學(xué)用數(shù)學(xué)  | 我要投稿

這次以小學(xué)的進退位計數(shù)器為例,來展示用腳本按鈕來控制進位器的數(shù)珠的變化。主要使用 SetValue 與 If 來控制算珠的加減與進退位。除了腳本指令,最重要的是問題拆解的思維,讓我們用數(shù)學(xué)語言來描述現(xiàn)象。


一、將數(shù)字轉(zhuǎn)化為數(shù)珠串

說明:這節(jié)主要建立位值列表 ns={1,7,2,9} , 并且將這轉(zhuǎn)為數(shù)字 n 。同時用序列來繪制四堆數(shù)珠 nns 。

操作

ns = {1,7,2,9}

ds = {1000,100,10,1}

n = sum(ns*ds)

# 利用雙層序列來繪制數(shù)珠 nss。

nss=Sequence(Sequence(Circle((2*d,k-0.5),0.5),k,1,ns(d)),d,1,4)

# ls 水平線

ls=Sequence(Segment((0,k),(10,k)),k,0,30,5)

二、制作加減按鈕

說明:這節(jié)主要新增 +- 按鈕來用腳本控制每一串?dāng)?shù)珠的變化。

在個位?+ 的腳本為 SetValue(ns, ns+{0,0,0,1}) ,這是用 SetValue 來改變 ns 的值。其中 ns+{0,0,0,1} 為讓個位加 1。

而 - 按鈕的腳本要留意,其值不可為負。以千位的?- 腳本為例:?SetValue(ns, If(ns(1)>0,ns+{-1,0,0,0},ns))?。通過 If 判斷千位至少大于 0 時,才能對千位減 1。

步驟:

SetValue(ns, ns+{0,0,0,1})??# 個位的『+ 』腳本

SetValue(ns, ns+{0,0,1,0})??# 十位的『+?』腳本

SetValue(ns, ns+{0,1,0,0})??# 百位的『+?』腳本

SetValue(ns, ns+{1,0,0,0})?# 千位的『+?』腳本

SetValue(ns, If(ns(4)>0,ns+{0,0,0,-1},ns))??#?個位的『-』腳本

SetValue(ns, If(ns(3)>0,ns+{0,0,-1,0},ns))???#?十位的『+?』腳本

SetValue(ns, If(ns(2)>0,ns+{0,-1,0,0},ns))???#?百位的『+?』腳本

SetValue(ns, If(ns(1)>0,ns+{-1,0,0,0},ns))??# 千位的『+?』腳本

三、制作進位退位按鈕

說明:這節(jié)主要新增進退位按鈕來用腳本控制每一串?dāng)?shù)珠的變化。

以個位的進位為例,通過?SetValue(ns, ns+{0,0,+1,-10}) 可將個位少 10,十位多 1,來達到進位的效果。但要確保個位至少有 10 個數(shù)珠,才能滿十進一。因此,進位腳本要加入 If 判斷?SetValue(ns,?If(ns(4)>9,ns+{0,0,+1,-10},ns))?。

而退位的腳本也是類似,需要檢查至少有一可退位。以千位的退位為例,通過SetValue(ns,?If(ns(1)>0,ns+{-1,+10,0,0},ns))?。

步驟:

SetValue(ns,?If(ns(4)>9,ns+{0,0,+1,-10},ns))??#?個位的進位腳本

SetValue(ns,?If(ns(3)>9,ns+{0,+1,-10,0},ns))??# 十位的進位腳本

SetValue(ns,?If(ns(2)>9,ns+{+1,-10,0,0},ns))??# 百位的進位腳本

SetValue(ns,?If(ns(3)>0,ns+{0,0,-1,+10},ns))??#?十位的退位腳本

SetValue(ns,?If(ns(2)>0,ns+{0,-1,+10,0},ns))??# 百位的退位腳本

SetValue(ns,?If(ns(1)>0,ns+{-1,+10,0,0},ns))??# 千位的退位腳本

四、繪制進位退位框

說明:為了讓進退位時,顯示數(shù)珠的改變。加入序列?nds 來顯示這 10 個進位的小圓圈。而bcs 的位置利用 bdx,bdy 來記錄,并用 nd = 1,2,3,4 來切換每位的腳本。但這個進退位的 bcs 不是一直都處于顯示狀態(tài),所以需要一個真假值?backFlag 來切換其顯示。?

以百位退位為例,在百位退位按下后。先設(shè)定 nd=2, 并用?If( ns(nd)>0, ... , ...) 檢查是后可退位。若可退位,則將 backFlag 設(shè)定為 True。并同時設(shè)定 bdx = nd+1,bdy = ns(nd+1)-9。來設(shè)定 nds 的位置。其中 nds?表示十個紅色小圈,其指令為?nds=Sequence( Circle(?(2*ndx,k-0.5),0.5) , k, ndy,ndy+9) .?

以百位的進位為例,先設(shè)定 nd 為 2,接著檢查是否有滿十才能進一。若有的話,再設(shè)定 backFlag 為真。并且設(shè)定 ndx 為 nd,而 ndy 為 ns(nd)-9。來顯示將要進位的 10 個小紅圈。

接著再設(shè)定重置按鈕與數(shù)值 n ,并將 +,- 的按鈕加入 backFlag 為 False 的設(shè)定就可完成這進退位計數(shù)器。

步驟:

# 設(shè)定紅色小圈 nds 序列的相關(guān)參數(shù)?

ndx = Slider(1,4,1)

ndy = slider(1,30,1)

nds=Sequence( Circle(?(2*ndx,k-0.5),0.5) , k, ndy, ndy+9) .?

nd = Slider(1,4,1)

# 退位腳本(以百位為例?)

SetValue(nd,2)

SetValue(backFlag,If(ns(nd)>0,True,False))

SetValue(ndx,nd+1)

SetValue(ndy,ns(nd+1)+1)

SetValue(ns,If(ns(nd)>0,ns+{0,-1,+10,0},ns))

# 進位腳本(以百位為例?)

Setvalue(nd,2)

SetValue(backFlag,If(ns(nd)>9,True,False))

SetValue(ndx,nd)

SetValue(ndy,ns(nd)-9)

SetValue(ns,If(ns(nd)>9,ns+{1,-10,0,0},ns))

# + 腳本(以百位為例?)

SetValue(ns,?ns+{0,1,0,0})?#?千位的『+?』腳本

SetValue(backFlag,False))

# -?腳本(以百位為例?)

SetValue(ns, If(ns(2)>0,ns+{0,-1,0,0},ns))??#?個位的『-』腳本

SetValue(backFlag,False))

# 重置腳本

SetValue(backFlag,False))

SetValue(ns,{0,0,0,0}))

小結(jié)

此節(jié)的腳本指令較多,最想和大家分享的是問題拆解的思維。對于每個操作顯示,都要拆解為按鈕來觸發(fā)位值的改變。

在寫腳本時,要留意程式觸發(fā)的條件限制。例如,退位、進位時,要留意是否有足夠的數(shù)字可以進退位的轉(zhuǎn)化。

在顯示進退位的紅色小圈時,關(guān)鍵在于能拆解為描述紅圈的位置。

本節(jié)主要的腳本就是 setValue 與?If 的搭配使用,最重要的還是在練習(xí)用數(shù)學(xué)語言來描述現(xiàn)象,讓電腦可理解我們要它執(zhí)行的操作。


相關(guān)鏈接

【GGB】https://www.geogebra.org/classic/xtjr8wzj

【Bili】https://www.bilibili.com/video/bv1xv41177Qk

【youtube】https://www.youtube.com/playlist?list=PLXH05kw-i_5Im8iCK_hHB86v9e5E5Ewl2


S9G3 小學(xué)進退位計數(shù)器的評論 (共 條)

分享到微博請遵守國家法律
莱阳市| 博客| 民权县| 迁安市| 东辽县| 赫章县| 福清市| 荥经县| 油尖旺区| 海晏县| 高唐县| 巴彦淖尔市| 裕民县| 甘洛县| 柘荣县| 乌什县| 襄垣县| 内江市| 含山县| 玉林市| 宝丰县| 五莲县| 罗平县| 交城县| 晋城| 青河县| 唐海县| 榆林市| 河曲县| 香港| 丹棱县| 子洲县| 卢氏县| 三亚市| 巴塘县| 钦州市| 定边县| 彩票| 屯昌县| 惠水县| 西平县|