欢迎光临散文网 会员登陆 & 注册

教材错误?你们解释一下吧!

2023-02-17 16:18 作者:Soap_mac_tavish  | 我要投稿

  最近在抖音上刷到了关于“故天将降大任于是人也”的教材问题,当然,这个有可能是我们记错了,不是教材错了,毕竟语文这个东西,连作者本人说了都不算!是不,诡异的光?但是我接下来说的这个学科,那可不是人家编者说了算,这个学科得计算机说了算!这门学科就是信息技术。

  信息技术这个教材改动的事情,在社会上也是闹得沸沸扬扬,我这个局外人本不该过问,但我还是很好奇地翻看了一下,不因为别的,就因为我特别喜欢Python这个程序语言。我在读大三的时候,整天就弄Python这个玩意,但是我那个时候没有翻看高中教材。直到我弟弟现在在读高一,我开始翻开来看了看教材,我就想看看教材变化大不大。当我翻到教材第70页的时候,给大家看看教材原话:

  Python中的算术运算存在着优先级顺序,优先程度最高级别为1,级别数字越大,优先级越低。在同一个表达式中,如果有一个及以上的运算符,那么先执行优先级高的运算,同优先级的基本运算按照自左向右的顺序执行。例如表达式“123-123//100*100”的运算结果为23。

(普通高中教科书  信息技术  必修数据与计算  浙江教育出版社  国家中小学智慧教育平台)

  这不像语文有强烈的主观性,这是信息技术,和代码挂钩,都是板上钉钉的事情。就跟1+1在十进制的数学计算中等于2一样不可改变。好了我们来分析一下错在哪里了,首先声明,我这里是对教材内容的算术运算符进行分析。别扯到其他运算符去了。

  首先可以告诉大家,第一句话在教材中是没问题的,当然也可以说“优先程度最低级别为1,级别数字越高,优先级越高。”这是人定的,我们也不好说这句话是错的。

  第二句话中,“在同一个表达式中,如果有一个及以上的运算符,那么先执行优先级高的运算”,这句话也没有问题,毕竟小学数学学过加减乘除四项运算,先算乘除,再算加减。高中阶段补充了乘方运算,先算乘方,再算乘除,最后算加减。当然表达式有括号先算括号,这个也是小学生该知道的,后续就不提带括号的表达式了。但是后半句话“同优先级的基本运算按照自左向右的顺序执行”,这句话就错了,我们先来分析一下,首先,加减运算是同一级的,其运算顺序从左至右没毛病;其次乘除运算(含整除和取余运算)是同一级的,其运算顺序从左至右也没毛病;但是课本上还提到了乘方运算,其运算顺序也是从左至右吗?

大不了来一遍嘛!计算表达式:2 ** 4 ** 3,按照书本上的说法:2 ** 4 ** 3就等于16 ** 3,结果就等于4096,有的同学会说,我记得当年的教材(编程语言为VB)是这么说的:

“进行运算时,级别高的先执行;同级别自左向右顺序执行”(摘自浙江教育出版社出版的《普通高中课程标准实验教科书 信息技术基础》),难道这里也错了吗?试一下嘛!

'VB程序

Public Sub Command1_Click()

    Text1.Text = Str(2 ^ 4 ^ 3)

End Sub

确实文本框Text1会显示4096,所以说原教材没有问题,但是现在新教材了,我们在来试一下:

>>> 2 ** 4 ** 3

18446744073709551616

这个数,很多学计算机的同学会很眼熟,这不是2的64次方吗?即2 ** 64。那么这个运算顺序不就是2 ** 4 ** 3 = 2 ** 64,先计算4 ** 3 = 64,然后计算2 ** 64。是自右向左进行运算。

用相对专业一点的话说,这是由于运算符的结合性而定的,在Python中,乘方运算的结合性是自右向左,先算右边,再算左边。所以教材中“同优先级的基本运算按照自左向右的顺序执行”,这句话就错了。

其实不光是浙教版的教材,针对这个问题我还先后翻看了其它版本的教材,人教版教材第59页,粤教版教材第71页,华东师大版教材第54页也犯了这个错!

我是浙江出来的,技术是要高考的,所以我认为技术教材也一样容不得马虎。希望我的这篇文章能够让高中生看到,能够让高中的信息技术老师看到,能让编写教材的人看到。

文章编写于2023年2月17日16时10分

作者:程嘉诚

发布平台:B站、新浪微博


教材错误?你们解释一下吧!的评论 (共 条)

分享到微博请遵守国家法律