·
JavaScript,PHP,Qt C++,Unity C# 喜欢反复重构自己的代码、尽力让代码思路清晰。 喜欢人工智能。但对人工智能算法了解不多,正准备学习。 喜欢写长篇的、逻辑完整且清晰的文档,不喜欢口头交流。 喜欢有充足的时间,自由的思考、自由的决定自己做什么。无业,不就业,无经济压力。 喜欢玩策略游戏,例如《异星工厂》《群星》《国标麻将》。不喜欢动作游戏。

1.5:定义的技巧——分步定义

1.5.1:找最小值

现在有一串数字:5,7,6,2,9。需要你定义一个动词:排序。这个动词以一串数字为参数,输出这串数字从小到大排序的结果。

你可能没有头绪。

现在我换一个问题:还是这串数字。现在你需要定义一个动词:找最小值。

这个问题就简单了:

先假设第一个数字是最小值。
然后看第二个数字,如果它更小,那么就让第二个数字是最小值;否则,第一个数字就是最小值。
然后看第三个数字……
以此类推,直至看完所有数字。此时的最小值就是真正的最小值。

定义完【找最小值】之后,再看原本的问题:定义排序。此时就不难了:

先找到最小值。把它写在第一位。
然后看剩余数字,找它们的最小值,把它写在第二位。
然后看剩余数字,找它们的最小值……
以此类推。直至看完所有数字。

1.5.2:滚动条

滚动条怎么定义?

你可能没有头绪。

现在我问你:滚动条的本质是什么?

这个问题很简单:

滚动条的本质,就是【一个物体移动,另一个物体会跟着移动】。

现在回到原本的问题:滚动条的定义。此时就不难了:

有一个滚动块,一个滚动区域,一个被滚动区域。
如果滚动块向上移动,那么被滚动区域向下移动。反之亦然。
滚动块只可以上下移动(不可以左右移动)。