【Scratch算法编程】顺序查找

一、顺序查找

顺序查找,又称为线性查找,是程序设计中最常用的算法之一。它简单易懂,是人们最熟悉的一种查找策略。它不要求数据是有序排列的,因而应用面很广。当数据量大时,该算法查找效率极低,所以,顺序查找算法适用于小量数据的场合。

该算法的查找过程是:按顺序由前往后(或由后往前)逐个查找数据集中的数据,如果找到目标数据,则返回其在数据集中的位置;否则就一直查找下去。如果到最后仍然没有找到目标数据,则查找失败。

【Scratch算法编程】顺序查找-少儿编程网

顺序查找算法一般是使用数组、循环结构和判断指令来实现,数组用于存储数据,循环结构用来遍历数组中的元素,判断指令用来匹配目标数据。

例如,有一组数据:2,13,17,3,5,19,7,11。请用Scratch编写程序求出19在这组数据中的位置。

解题步骤:

1、创建一个名为“数组”的列表,再把这组数据录入到列表中。

2、使用“重复执行直到……”指令构建一个循环结构,让变量 i 从1开始逐一递增,直到它大于数组的长度。

3、在循环体内使用“如果……那么”指令来判断目标数19是否与数组中的某个元素相等,如果相等则用“说”指令输出出变量 i 的值,即元素在列表中的位置。

代码实现:

【Scratch算法编程】顺序查找-少儿编程网

二、评委打分

在一次校园卡拉OK小歌手比赛中,3号选手雯雯表现出色, 10名评委们给出的得分情况是:93分、95分、91分、99分、92分、90分、79分、94分、92分、96分。

根据比赛规则,去掉一个最高分和一个最低分,再取剩下得分的平均分作为选手的最后得分。这样能避免1名或2名评委的个人因素而影响选手的真实成绩,使比赛更加公平。

请用Scratch编程计算3号选手雯雯的最后得分。

【Scratch编程解题】
1、创建一个名为“得分”的列表,再把10个得分数据录入到列表中。

2、去掉一个最高分和一个最低分。创建一个名为“去掉最高分和最低分”的模块,再创建两个变量:“最高”、“最低”,分别用于记录最高分和最低分的元素在列表中的位置。将这两个变量的初始值都设为1。

【Scratch算法编程】顺序查找-少儿编程网

接着,从列表中的第2个元素开始逐个比对,寻找出最高分和最分低所在的位置。在对比完列表中的全部元素之后,变量“最高”和“最低”中的值就是最高分和最低分的元素位置。

【Scratch算法编程】顺序查找-少儿编程网

之后,我们把这两个异常得分删除。由于删除列表中的元素会使列表的剩余元素重新排列,所以我们从列表的后面往前删除。比较“最高”和“最低”两个变量的值,先删除列表中位置靠后的元素。

【Scratch算法编程】顺序查找-少儿编程网

3、计算最后得分。先统计出剩余8个得分的总分,再计算出平均值,得到选手的最后得分。我们创建一个名为“计算最后得分”的模块来完成这些工作。

【Scratch算法编程】顺序查找-少儿编程网

4、编写入口程序,调用模块“去掉最高分和最低分”和“计算是后得分”来计算选手的最后得分。

【Scratch算法编程】顺序查找-少儿编程网

到这里,程序编写完毕。点击绿旗运行程序,得到结果:该选手最后得分93。

三、星座查询

星座是占星学中必不可少的组成部分之一,也是天上一群群的恒星组合。自从古代以来,人类便把三五成群的恒星与他们神话中的人物或器具联系起来,每个星座都有自己独特的故事和传说。

在西方占星学上,黄道12星座是宇宙方位的代名词,一个人出生时,各星体落入黄道上的位置,说明了一个人的先天性格及天赋。黄道12星座象征心理层面,反映出一个人行为的表现的方式。于是将黄道分成12个星座,称为黄道12星座。

【Scratch算法编程】顺序查找-少儿编程网

根据上面星座日期对照表,用Scratch编写程序,通过输入一个人的生日查询出所属的星座。

【Scratch编程解题】

1、数据整理。我们把星座名称、开始日期和结束日期分别保存到3个不同的文本文件中,每个数据占据一行。日期格式为:mmdd,即月和日分别用两位数字表示,比如1月1日,则输入0101。查询星座时也要按此格式输入日期。

【Scratch算法编程】顺序查找-少儿编程网

2、数据导入。分别创建三个列表:星座、开始日期、结束日期,再将星座数据导入这个三个列表中。在舞台上的列表的空白区域点击鼠标右键,在弹出的右键菜单中使用“导入”命令把整理好的三个数据文件的内容分别导入对应的列表中。

【Scratch算法编程】顺序查找-少儿编程网

3、编写入口程序。使用“询问……并等待”指令接收用户输入的出生日期,然后调用模块“星座查询”来查询用户属于哪个星座。

【Scratch算法编程】顺序查找-少儿编程网

4、编写模块“星座查询”。创建一个名为“星座查询”的模块,参数为:出生日期。再用“重复执行直到……”指令构建一个循环结构来遍历十二星座的开始日期和结束日期,并在循环体内“如果……那么”指令判断用户输入的出生日期是否在哪个星座所属的范围内。依次判断“开始日期”列表和“结束日期”列表中的各项,直到找到匹配的星座,就将星座名称用“说”指令输出,并结束程序运行。

判断出生日期是否在开始日期和结束日期的范围内有两种方式,可用伪码表示为:

1、“与”方式:

如果 开始日期 ≤ 出生日期 与 出生日期 ≤ 结束日期 那么

#找到星座

否则

#继续查找

由于Scratch中没有“≤”运算符,就需要把“<”和“=”两种运算符结合使用。这样整个表达式就显得长而复杂。

【Scratch算法编程】顺序查找-少儿编程网

2、“或”方式:

如果 出生日期 < 开始日期 或 出生日期 > 结束日期 那么

#继续查找

否则

#找到星座

我们使用这种简洁的方式。

模块“星座查询”的代码如下:

【Scratch算法编程】顺序查找-少儿编程网

到这里,星座查询的程序编写完毕。点击绿旗运行程序,就可以输入日期查询星座了。赶快试试吧!

如果你是摩羯座的,那么将查不到结果的,而是找到了一个严重的BUG。请查看前面的星座日期对照表中的摩羯座的数据,想想这是为什么?

【Scratch算法编程】顺序查找-少儿编程网

如果把摩羯座的数据修改为上面两行,并重新导入各个列表中,就能查询到结果了。

你想明白了吗?作为一个耐心而又细心的摩羯座,请你赶快修复这个BUG吧!

本文链接:【Scratch算法编程】顺序查找

转载声明:本站文章若无特别说明,皆为原创,转载请注明来源:少儿编程网,谢谢!^^


*文章为作者独立观点,不代表少儿编程网立场
发表评论

坐等沙发
相关文章
“少儿编程之父”米切尔教授:我们要像在幼儿园一样学习
“少儿编程之父”米切尔教授:我们要像在…
编程少年丨余疆海:个性十足却不失温度
编程少年丨余疆海:个性十足却不失温度
为什么大家都建议学习少儿编程要从Scratch开始?
为什么大家都建议学习少儿编程要从Scrat…
孩子学完各个阶段的编程课程能够参加哪些比赛?
孩子学完各个阶段的编程课程能够参加哪…
我的孩子从来没有接触过编程,0基础能不能学?
我的孩子从来没有接触过编程,0基础能不…
【精选作品】如何通过Scratch让小猪跑起来?(内附火影粉丝巨献,必看)
【精选作品】如何通过Scratch让小猪跑起…
Scratch是由麻省理工学院(MIT)设计开发的一款面向少年的简易编程工具,是适合于全世界儿童学习编程和交流的工具和平台