棋盘中的麦粒
循环结构(2)
活动任务
在印度有一个古老的传说:
舍罕王打算奖赏国际象棋的发明人——宰相西萨?班?达依尔。舍罕王问他想要什么?他对国王说:“陛下,请您按照棋盘的格子赏赐我一点麦子吧!第1个小格,赏给我1粒麦子,在第2个小格赏给2粒,第3个小格赏给4粒,以后每一小格赏的麦粒数都比前一小格增加一倍。请您把棋盘上所有64格按照这样方法得到的麦粒,都赏给您的仆人吧! ”舍罕王觉得这要求太容易满足了,就答应赏给他这些麦粒。当把一袋袋的麦子搬来开始计数时,舍罕王才发现:就是把全印度甚至全世界的麦粒全拿来,也满足不了宰相的要求。
那么,宰相西萨?班?达依尔要求得到的麦粒到底有多少呢?设计一个程序帮这位国王算一算。程序参考界面如图2 - 31所示。
图2-31 程序界面示例
我的问题
? 分析问题题目从哪个角度入手?
? 怎样找到题目的规律?
? 如何确定循环结构的各项参数?
活动建议
1.找规律
通过分析题目,可以看出,从第2格开始,麦粒数都是2的倍数,而且每增加一格,麦粒数就是上一格的2倍,即:
从变化规律可以看出,第n格的麦粒数,就是2 粒。我们要计算 的是所有格于中麦粒数,即求 的和。如果从左向右,一项项相加,也就是反复计算:
麦粒数=麦粒数+当前格里的麦粒数
2.计算方法
计算方法可以用图2-32所示的流程图直观地表示。
图2-32 求麦粒数的算法流程图
准备知识
1.“求次方”命令
“求次方”语句的格式、功能及参数含义
格式:求次方(欲求次方数值,次方数)
功能:返回指定数值的指定次方。
参数含义:欲求次方数值指定欲求其某次方的数值;次方
数指定对欲求次方数值的运算指数。
举例:语句“求次方(3, 4) ”计算的是34,其值为81。
2.数据类型
每个变量除了有变量名外,还必须有确定的数据类型,即变量能
够存储的数据的种类。易语言中常用变量类型如表2 -10所示。
标2-10 常用变量类型及其说明
操作界面
一、界面设计
1.选择组件创建对象
程序的提示信息和最终麦粒数的显示可以使用标签对象;执行累加操作,
可以使用按钮。程序参考界面如图2-33所示。
图2-33 麦粒总数计算界面设计示例
2.设置属性
图2-33中对象的属性值设置可参考表2-11。
表2-11 属性值设置表
谢 谢