Scratch教程

当前位置:小码王 > 学习教程 > Scratch教程

一道程序猿笔试面试必会题怎样用scratch做出来
导读:有一些家长觉得scratch的门槛会不会太简单了,只要孩子拖动一下代码就可以了,在此南京小码王scratch培训机构小编想说,其实scratch的门槛虽然低,但是他却是高上限,为何会这样说呢?今天我们就和小编就为大家分享一下一道

  有一些家长觉得scratch的门槛会不会太简单了,只要孩子拖动一下代码就可以了,在此南京小码王scratch培训机构小编想说,其实scratch的门槛虽然低,但是他却是高上限,为何会这样说呢?今天我们就和小编就为大家分享一下一道程序猿笔试面试必会题怎样用scratch做出来。

  题目的任务叙述很简单:对一个已知数组,按照从小到大(或大到小)排序

  用scratch我们可以很快让计算机给出任意数组,比如,可以有10个任意数字

  


  工作:(1)建一个列表【L】; (2)列表通常的初始化工作——删除全部项目; (3)重复10次插入1-100的任意自然数

  这样我们就有了10个任意数

  


  接下来,就是排序了。程序猿考试考的是算法,什么冒泡排序、选择排序、插入排序等等。一个优秀的算法能使程序的性质带来质的飞跃,在scratch里面同样可以用这些算法来解决问题(谢声涛《scratch趣味编程进阶——妙趣横生的数学和算法》书中第12章“扑克学算法”就将这些算法描述得非常透彻)。

  在这里我们就用“选择排序”的思路带着大家用scratch实现从小到大排序

  思路是这样的:

  第一轮:我们用第一个数字跟剩余的9个数比较大小,如果第一个数字比其他数字大,就交换这两个数字的位置(因为我们的排序是从小到大,就让小的数字在前面)。

  具体:

  1、第一个数字和第二个数字比较后,第一个数字89比第二个数字62大,就让两个数字换顺序;2、再让新的第一位置数字62和第三个数字45比较,比较之后45排到第一位置;3、新的第一位置数字45再跟第四个数字比较……

  以此类推,最终排在第一位置的数字是整个数组【L】中最小的数字。

  


  程序脚本体现如下

  


  我们新设一个变量【i】代表除了第1项以外的其他项,先将i设为2,通过让i每次增加1,实现第一个数字(L的第一项)与其他各个数字比较。

  在替换之前,需要设一个变量【temp】,作为数字交换过程中一个承接数字的临时空间(我们通常称为“罐子”,交换数据的原理可以用两个杯子中的水交换来理解)。

  第二轮:用与第一轮同样的方法,让第二个数字40跟剩余的8个数比较大小(第一个数字一旦排好了就不需要再动),也就是让数组【L】的第2项,分别与从第3项、第4项、第5项……第10项逐一比较。

  


  本次需要将i设为3,让第2项与从第3项开始的其余8个数比较

  得到如下顺序的数组:

  


  第三轮:用同样的方法,让第三个数字53跟剩余的7个数比较大小

  


  第四轮:用同样的方法,让第四个数字跟剩余的6个数比较大小

  ……

  最终得出排序结果

  


  看到这里,您对这个排序程序的算法步骤应该是很明白了,但如果按照这样下来这个脚本也太长了(即把以上所有脚本都要拼接起来),用scratch做反而很麻烦。那么有什么办法可以简化呢?

  我们看到,在每一轮的第一个数字与其他几个数字比较,可以用重复执行数字顺序i+1就可以完成。而第二轮、第三轮……第十轮都是重复与第一轮一样的方法,是不是也可以嵌套一个重复执行的顺序呢?

  答案当然是可以的!

  为了使我们两个数的比较更加清楚,我们可以设两个变量作为数组【L】的项目顺序,一个设为【n】,一个设为【i】,以 n 来控制轮数,以 i 来实现每一轮里已确定一个比较数后另一个比较数的变更。脚本程序可以缩减如下:

  


  当n=1时,i=n+1=2,i重复增加1,直到执行到10

  当n=2时,i=n+1=3,i重复增加1,直到执行到10当n=3时,i=n+1=4,i重复增加1,直到执行到10……直到n执行到10(全部比较完毕)

  这个用scratch排列数字的程序就基本完成了!

  当然还可以用“制作新的积木”的方式将交换顺序的脚本封装,这就大大简化了接着用冒泡排序、插入排序、希尔排序等等方式再来玩一遍数字排序!

  


  制作新积木块“交换数字”

  所以说,用scratch一样能玩C、C++、python中的算法!在很多竞赛中就体现了排序这种算法的题。

  到这里,你可能会松了一口气,还好,这是竞赛。我们成年人做这种题可能都有点绕晕啊!那么告诉你,软件编程预备级(scratch等级考试)4级中可能就会有类似难度的题!

  知识点讲完了,下面就给大家出一道scratch初级组(1-3年级)的一道编程题:

  任务:小明和几名同学在周末一起参加了一场苹果采摘活动,他们每个人摘到的苹果的数量已经存到了【苹果数量】列表里面,请你编写代码自动计算出摘的最多的比摘的最少的多摘了几个,把结果保存到变量【结果】中。

  举例:摘的最多的摘了30 个,最少的摘了12 个,【结果】应该为18。

  当然现在现在scratch的案例有很多,作为家长的您,也是可以和自己的孩子一起来学习少儿编程的,这样也可以让孩子的编程能力得到提高,同时还有和孩子的共同话题,也可以很好的辅导自己的孩子,这何乐而不为呢?当然您也可以和我们南京scratch培训机构的在线老师进行一次沟通。

下一篇:没有了