![Scratch 编程竞赛指南](https://wfqqreader-1252317822.image.myqcloud.com/cover/247/33094247/b_33094247.jpg)
1 基础入门
1.1 小猫数数
教学目标:认识编程、认识程序的三种基本结构。
编程,就是编写程序。
为了使计算机能够理解人的意图,人们就必须将需要解决的问题的思路、方法和手段通过计算机能够理解的方式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算体系之间交流的过程就是编程。
任何程序都由三种基本结构组成:顺序结构、循环结构、分支结构。
开发需求001:
给计算机下达一个指令,让小猫从1开始数数,一直数到5,如图1.1.1所示。
![](https://epubservercos.yuewen.com/DEB2E0/17718436707655106/epubprivate/OEBPS/Images/Figure-P13_263.jpg?sign=1739232046-BOfkAzldbiYWsNZ5mbQwySi9bIpOkhdH-0-bd04925345a74a760288e59ae91f1e1e)
图1.1.1
提示:
作为全书的第一题,建议学习时放慢脚步,慢慢地了解计算机及其程序的性格特点。此处先给出两个参考答案,可仔细地对比程序A和程序B。
![](https://epubservercos.yuewen.com/DEB2E0/17718436707655106/epubprivate/OEBPS/Images/Figure-P13_276.jpg?sign=1739232046-G9UcA0TJFTTgV3ikQ0PTQ1LM7ji8NCds-0-8a76908d71f002dc6fb9594f95494015)
(程序A)
![](https://epubservercos.yuewen.com/DEB2E0/17718436707655106/epubprivate/OEBPS/Images/Figure-P13_277.jpg?sign=1739232046-0cE5QUDivYmkogEuws4yWKORKdRL0NHb-0-67d72c487f198d4281586470ee6f3680)
(程序B)
程序A:运行后,小猫会直接说5。
程序B:运行后,小猫从1开始数,一直数到5。
造成这样的原因是什么呢?
分析:
首先,程序是从上到下依次运行的,所以必须肯定的是:两个程序都执行了从1说到5,那么问题就出在了两个“说……”积木的区别上。
此积木一旦运行,瞬间执行完,然后程序按照顺序结构继续向下执行。
此积木必须2秒才能执行完,然后程序再按照顺序结构继续向下执行。
其次,还需要知道的一点是计算机运行速度非常快。程序A,因瞬间执行完,所以只看到了说5。程序B,因为每一行指令要彻底执行完才能执行下一行指令,所以能看到小猫数数的全过程。
结论:
顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的指令就行,它的执行顺序是自上而下,依次执行。
开发需求002:
给计算机下达第二个指令,让小猫从1数到100。
分析:
乍一看,又是顺序结构,只要接着程序001继续往下编程就可以了,如果这样编程有可能致使工作量很大。假如不是数到100,而是数到1000,甚至数到10000呢?使用顺序结构显然十分的不合理。
计算机的特别之处在于:它可以不知疲倦的工作,且特别是适合做重复性的工作。那么这里就需要在程序中创建一个循环,在循环内每次都说出一个数,且这个数是不断变化的。为了表达出这个不断变化的数,我们就需要创建一个变量,命名为“n”。n是number的首字母,初始值设为0,在循环中每次增加1。
请读者找出下列哪个程序可以让小猫从1数到100。
![](https://epubservercos.yuewen.com/DEB2E0/17718436707655106/epubprivate/OEBPS/Images/Figure-P14_293.jpg?sign=1739232046-rxhWV0krgyTvx8uyTN5gFw53B7O5zwil-0-a3805128e78efb684d770e22dffe4198)
(程序A)
![](https://epubservercos.yuewen.com/DEB2E0/17718436707655106/epubprivate/OEBPS/Images/Figure-P14_11283.jpg?sign=1739232046-5gtAnJPezrM1g6kxVWS6QPlIv1kIyTCM-0-7e8d133930686f780e243a64fc670377)
(程序B)
![](https://epubservercos.yuewen.com/DEB2E0/17718436707655106/epubprivate/OEBPS/Images/Figure-P14_11284.jpg?sign=1739232046-LcAxWJVdhThBxAL6eKGEpxiDm4Oh0SHt-0-4567c2857a9e7b150e5fc1eb29826c98)
(程序C)
程序A:错误。这是一个无限循环,小猫会无休止的数下去。要注意这个循环积木的下面没有凸起部分,也就是说不能在循环体的外部继续进行编程。
程序B:正确。这是一个带有参数的重复执行,循环满100次以后,跳出循环体,程序继续向下执行。由于下方没有指令积木,所以程序终止。
程序C:错误。这是一个带有条件的重复执行,当条件满足的时候,跳出循环体,程序继续向下执行。要特别注意的是,这个条件判断发生在每次循环的最起始!当n等于100的时候,结束了循环,并没有执行说出100。
结论:
循环结构是指在程序中需要反复执行某个功能而设置的一种程序结构。在循环体中,程序也是按照顺序结构从上到下依次执行。当整个循环体中的指令全部执行完毕以后,要回到循环体的起始处,进行下一次重复执行。
在使用循环结构的时候,应注意跳出循环的条件,否则就会进入死循环(一个靠自身控制无法终止的程序)。下面是几种常见的循坏结构,如图1.1.2所示。
![](https://epubservercos.yuewen.com/DEB2E0/17718436707655106/epubprivate/OEBPS/Images/Figure-P15_332.jpg?sign=1739232046-teHbYllEw2YMLZIhENA673JXsskARziR-0-30e462d615b945474fc46ab03f1550e8)
图1.1.2
开发需求003:
在程序002的基础上,让小猫说完5以后停下来。程序如下图。
![](https://epubservercos.yuewen.com/DEB2E0/17718436707655106/epubprivate/OEBPS/Images/Figure-P15_333.jpg?sign=1739232046-rkBLe9uEsNfz3Oh4HgBp4ApqGeeEHyc1-0-fd338c9d366cfd630b1e63508b6f4597)
分析:
需要判断一下什么时候让程序终止。在编程中,用“如果……那么……”来判断。方法是在循环体中,每次小猫说完一个数,就判断一下是否符合终止条件。
拓展:
这里大家可以想一想,下面3个程序的区别:
![](https://epubservercos.yuewen.com/DEB2E0/17718436707655106/epubprivate/OEBPS/Images/Figure-P16_339.jpg?sign=1739232046-0XqFhoxy4RqcTCtap1lAMZWsEY5DjkZd-0-8ff4144ecb9a5ae30c381e974a3efbd8)
(程序A)
![](https://epubservercos.yuewen.com/DEB2E0/17718436707655106/epubprivate/OEBPS/Images/Figure-P16_340.jpg?sign=1739232046-psqm97NebH1GqVrm59zax3KNCjhwANvM-0-9ec0b3a9eb31536a21fe0f000c2dd0a0)
(程序B)
![](https://epubservercos.yuewen.com/DEB2E0/17718436707655106/epubprivate/OEBPS/Images/Figure-P16_341.jpg?sign=1739232046-0T74GStLwcsUf19QgbXIBhyB373rrFVx-0-84e8ddb582db7137227b0d0444c94b2e)
(程序C)
程序A:小猫说1,2,3,4。
程序B:小猫说1,2,3,4,5。
程序C:小猫说1,2,3,4。
由此可见,相同的指令,摆放位置不同,或者说执行的顺序不同,就会产生不同的结果。尤其是初学编程的读者,一定要注意。
结论:
分支结构,也叫选择结构,是指在程序中通过对条件的判断来选择程序执行的路径。几种常见的分支结构如图1.1.3所示。
![](https://epubservercos.yuewen.com/DEB2E0/17718436707655106/epubprivate/OEBPS/Images/Figure-P16_342.jpg?sign=1739232046-zoRdlQ8M2fZXfWUQYrtdgcEL2OgujfWq-0-46a733ff12d169bfd5a3164c22fc7b11)
图1.1.3
关于几种分支结构与循环结构具体的联系与区别,将在后续章节详细讲解。
试一试:
在高水准的竞赛中,出题者往往会更注重考察参赛选手对于多个知识点的综合使用能力,几乎不会遇到像开发需求001~003那样简单数数的题。真正的竞赛题目类似如下:
在舞台上有3个角色,以顺时针的方向,轮流往下数数,从1开始,每个数说1秒,遇到与3相关的数(包含3或者能被3整除)就说“过!”。
例如:当数到3,6,9……的时候,要喊“过!”,因为它们都能被3整除。除此以外,当数到13,23,31……时候,尽管它们不能被3整除,但由于它们含有数字“3”,所以也要喊“过!”。
呈现效果如图1.1.4所示。
![](https://epubservercos.yuewen.com/DEB2E0/17718436707655106/epubprivate/OEBPS/Images/Figure-P17_353.jpg?sign=1739232046-9GnsXWq8NqBt6Dy4SJ0gEZkP4xjhgkOp-0-4c464ca4f10dc70ff5cfa4d4302dfec5)
图1.1.4
提示:
判断一句话里是否包含某个/些字符,在Scratch 2.0的时候,还需要遍历字符串,但在Scratch 3.0中,有一个已经封装好的积木,直接使用即可。见下图。
![](https://epubservercos.yuewen.com/DEB2E0/17718436707655106/epubprivate/OEBPS/Images/Figure-P17_356.jpg?sign=1739232046-fhMqNTGIxV0qK7ithlrQGwhgJk5ozYHa-0-a9b59bf61e8c35403ca0aa7d8f23b779)