教材錯(cuò)誤?你們解釋一下吧!
最近在抖音上刷到了關(guān)于“故天將降大任于是人也”的教材問題,當(dāng)然,這個(gè)有可能是我們記錯(cuò)了,不是教材錯(cuò)了,畢竟語文這個(gè)東西,連作者本人說了都不算!是不,詭異的光?但是我接下來說的這個(gè)學(xué)科,那可不是人家編者說了算,這個(gè)學(xué)科得計(jì)算機(jī)說了算!這門學(xué)科就是信息技術(shù)。
信息技術(shù)這個(gè)教材改動(dòng)的事情,在社會(huì)上也是鬧得沸沸揚(yáng)揚(yáng),我這個(gè)局外人本不該過問,但我還是很好奇地翻看了一下,不因?yàn)閯e的,就因?yàn)槲姨貏e喜歡Python這個(gè)程序語言。我在讀大三的時(shí)候,整天就弄Python這個(gè)玩意,但是我那個(gè)時(shí)候沒有翻看高中教材。直到我弟弟現(xiàn)在在讀高一,我開始翻開來看了看教材,我就想看看教材變化大不大。當(dāng)我翻到教材第70頁的時(shí)候,給大家看看教材原話:
Python中的算術(shù)運(yùn)算存在著優(yōu)先級順序,優(yōu)先程度最高級別為1,級別數(shù)字越大,優(yōu)先級越低。在同一個(gè)表達(dá)式中,如果有一個(gè)及以上的運(yùn)算符,那么先執(zhí)行優(yōu)先級高的運(yùn)算,同優(yōu)先級的基本運(yùn)算按照自左向右的順序執(zhí)行。例如表達(dá)式“123-123//100*100”的運(yùn)算結(jié)果為23。
(普通高中教科書 ?信息技術(shù) ?必修1? 數(shù)據(jù)與計(jì)算 ?浙江教育出版社 ?國家中小學(xué)智慧教育平臺)
這不像語文有強(qiáng)烈的主觀性,這是信息技術(shù),和代碼掛鉤,都是板上釘釘?shù)氖虑椤>透?+1在十進(jìn)制的數(shù)學(xué)計(jì)算中等于2一樣不可改變。好了我們來分析一下錯(cuò)在哪里了,首先聲明,我這里是對教材內(nèi)容的算術(shù)運(yùn)算符進(jìn)行分析。別扯到其他運(yùn)算符去了。
首先可以告訴大家,第一句話在教材中是沒問題的,當(dāng)然也可以說“優(yōu)先程度最低級別為1,級別數(shù)字越高,優(yōu)先級越高?!边@是人定的,我們也不好說這句話是錯(cuò)的。
第二句話中,“在同一個(gè)表達(dá)式中,如果有一個(gè)及以上的運(yùn)算符,那么先執(zhí)行優(yōu)先級高的運(yùn)算”,這句話也沒有問題,畢竟小學(xué)數(shù)學(xué)學(xué)過加減乘除四項(xiàng)運(yùn)算,先算乘除,再算加減。高中階段補(bǔ)充了乘方運(yùn)算,先算乘方,再算乘除,最后算加減。當(dāng)然表達(dá)式有括號先算括號,這個(gè)也是小學(xué)生該知道的,后續(xù)就不提帶括號的表達(dá)式了。但是后半句話“同優(yōu)先級的基本運(yùn)算按照自左向右的順序執(zhí)行”,這句話就錯(cuò)了,我們先來分析一下,首先,加減運(yùn)算是同一級的,其運(yùn)算順序從左至右沒毛??;其次乘除運(yùn)算(含整除和取余運(yùn)算)是同一級的,其運(yùn)算順序從左至右也沒毛?。坏钦n本上還提到了乘方運(yùn)算,其運(yùn)算順序也是從左至右嗎?
大不了來一遍嘛!計(jì)算表達(dá)式:2 ** 4 ** 3,按照書本上的說法:2 ** 4 ** 3就等于16 ** 3,結(jié)果就等于4096,有的同學(xué)會(huì)說,我記得當(dāng)年的教材(編程語言為VB)是這么說的:
“進(jìn)行運(yùn)算時(shí),級別高的先執(zhí)行;同級別自左向右順序執(zhí)行”(摘自浙江教育出版社出版的《普通高中課程標(biāo)準(zhǔn)實(shí)驗(yàn)教科書 信息技術(shù)基礎(chǔ)》),難道這里也錯(cuò)了嗎?試一下嘛!
'VB程序
Public Sub Command1_Click()
??? Text1.Text = Str(2 ^ 4 ^ 3)
End Sub
確實(shí)文本框Text1會(huì)顯示4096,所以說原教材沒有問題,但是現(xiàn)在新教材了,我們在來試一下:
>>> 2 ** 4 ** 3
18446744073709551616
這個(gè)數(shù),很多學(xué)計(jì)算機(jī)的同學(xué)會(huì)很眼熟,這不是2的64次方嗎?即2 ** 64。那么這個(gè)運(yùn)算順序不就是2 ** 4 ** 3 = 2 ** 64,先計(jì)算4 ** 3 = 64,然后計(jì)算2 ** 64。是自右向左進(jìn)行運(yùn)算。
用相對專業(yè)一點(diǎn)的話說,這是由于運(yùn)算符的結(jié)合性而定的,在Python中,乘方運(yùn)算的結(jié)合性是自右向左,先算右邊,再算左邊。所以教材中“同優(yōu)先級的基本運(yùn)算按照自左向右的順序執(zhí)行”,這句話就錯(cuò)了。
其實(shí)不光是浙教版的教材,針對這個(gè)問題我還先后翻看了其它版本的教材,人教版教材第59頁,粵教版教材第71頁,華東師大版教材第54頁也犯了這個(gè)錯(cuò)!
我是浙江出來的,技術(shù)是要高考的,所以我認(rèn)為技術(shù)教材也一樣容不得馬虎。希望我的這篇文章能夠讓高中生看到,能夠讓高中的信息技術(shù)老師看到,能讓編寫教材的人看到。
文章編寫于2023年2月17日16時(shí)10分
作者:程嘉誠
發(fā)布平臺:B站、新浪微博