Scratch 3.0少儿编程与算法一本通(txt+pdf+epub+mobi电子书下载)


发布时间:2020-09-18 06:39:51

点击下载

作者:快学习教育

出版社:机械工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Scratch 3.0少儿编程与算法一本通

Scratch 3.0少儿编程与算法一本通试读:

前言

算法是程序的思想和灵魂。本书将多种经典算法融入一个个设计精美的Scratch案例当中,帮助孩子培养编程的核心能力,为将来学习其他程序设计语言打好基础。

◎内容结构

全书共11章。第1章讲解算法的基础知识,主要内容包括算法的概念、特征、描述方法、基本结构、质量评定等,并对常见的算法做了简单介绍。第2~11章通过10个案例来展现各种算法的具体应用,带领孩子在实践中理解和领悟算法的原理,这10个案例包括求累加和、判定质数、判断闰年和平年、求最大公约数、找出水仙花数、进制转换、信息加密、成绩排名、计算车费、绘制二叉树。

◎编写特色

★循序渐进,更易掌握:本书根据“先易后难”的原则,从孩子最熟悉和最容易理解的数学问题入手,讲解相关的基础算法,再过渡到更复杂的进制转换、信息加密等问题,有助于孩子快速建立起学习的信心。

★案例精美,讲解详尽:书中的案例针对孩子的喜好和认知特点进行精心设计,能有效激发孩子的学习热情。案例的每个步骤都配有清晰直观的图文说明,孩子只需根据讲解一步步操作,就能轻松完成编程。

◎读者对象

本书适合作为已掌握Scratch入门知识的中小学生深入学习编程或参加信息学竞赛的教程,也可作为少儿编程培训机构的教学用书或课程设计的参考资料。

由于编者水平有限,本书难免有不足之处,恳请广大读者批评指正,除了扫描封面上的二维码关注公众号获取资讯以外,也可加入QQ群165941480与我们交流。编者2020年3月

如何获取学习资源

步骤1:扫描关注微信公众号

在手机微信的“发现”页面中点击“扫一扫”功能,进入“二维码/条码”界面,将手机摄像头对准右图中的二维码,扫描识别后进入“详细资料”页面,点击“关注公众号”按钮,关注我们的微信公众号。步骤2:获取学习资源下载地址和提取密码

点击公众号主页面左下角的小键盘图标,进入输入状态,在输入框中输入关键词“算法”,点击“发送”按钮,即可获取本书学习资源的下载地址和提取密码,如下图所示。步骤3:打开学习资源下载页面

在计算机的网页浏览器地址栏中输入前面获取的下载地址(输入时注意区分大小写),如右图所示,按【Enter】键即可打开学习资源下载页面。步骤4:输入密码并下载文件

在学习资源下载页面的“请输入提取密码”文本框中输入前面获取的提取密码(输入时注意区分大小写),再单击“提取文件”按钮。在新页面中单击打开资源文件夹,在要下载的文件名后单击“下载”按钮,即可将其下载到计算机中。如果页面中提示选择“高速下载”或“普通下载”,请选择“普通下载”。下载的文件如果为压缩包,可使用7-Zip、WinRAR等软件解压。

提示

读者在下载和使用学习资源的过程中如果遇到自己解决不了的问题,请加入QQ群165941480,下载群文件中的详细说明,或者向群管理员寻求帮助。第1章 算法的基础知识

本章将从少儿编程入门的角度讲解算法的一些基础知识,主要内容包括算法的概念、特征、描述方法、基本结构、质量评定等,并对常见的算法做了简单介绍,为后续进一步理解和掌握算法打好基础。为什么要学算法

近几十年来,许多技术创新和成果都依赖算法思想,这些创新和成果广泛应用在科学、医学、地产、交通、通信、娱乐等领域。算法可以将计算速度提高几个数量级,可以更有效地处理数据,可以使信息的交换更安全,可以让复杂的问题处理起来更简单。对于青少年来说,了解和学习算法主要有以下益处。有益于锻炼逻辑思维

编程是一项注重逻辑的工作,青少年刚开始学习编程时容易因为逻辑思维不强、考虑问题不周全,编出不能运行或得不到正确结果的程序。而算法是最能考验逻辑思维的,在学习算法的过程中,青少年的逻辑思维能得到很好的锻炼。让青少年更深入地理解计算机系统

计算机系统非常庞大而复杂,无论是操作系统、数据库,还是中间框架、网络等,都离不开高效的算法与合适的数据结构。

一个程序能否快速而有效地完成指定的任务取决于是否选对数据结构,而程序能否清楚而正确地解决问题则取决于算法。简单来说,就是算法会告诉计算机如何处理信息,如何执行任务。通过算法组织数据,我们才能有效地在计算机中完成数据的查找、处理、判断等复杂的工作。更有效地解决问题

一个普通算法与一个最优算法之间的差距是非常大的。假设一个书架上的书已经根据书名的首字母进行了排序,现在要从中找到某本书。如果采用顺序查找的方式,一本一本地依次查找,会非常耗费时间,如下图一所示;而如果采用二分查找的方式,从书架中间开始,每查找一次就会排除一半,这样就能节省很多时间,如下图二所示。

在当今这个人工智能和大数据的时代,算法思维显得尤为重要。让青少年掌握算法思维不仅对培养编程能力有很大帮助,而且能提高他们在日常学习和生活中解决问题的能力。算法的概念和特征

算法是用于解决某个问题的一系列步骤。在计算机领域,算法的定义为:为了完成某项工作或解决某个问题,经过明确定义的有限数量的指令与计算步骤,其将一个或一组值作为输入内容,经过处理后产生一个或一组值作为输出结果。在用计算机解决实际问题时,常常要先设计算法,再用某种程序设计语言来实现算法(即编程)。因此,算法设计的好坏会直接影响程序执行效率的高低,可以说算法是程序的思想和灵魂。

从算法的定义可以看出,一个算法具有输入、输出、有穷性、确切性和可行性5个重要的特征,具体如下。

▶输入(Input)

一个算法通常有一个或多个输入数据,以刻画运算对象的初始情况(如果算法本身给出了初始条件,也可以没有输入数据)。

▶输出(Output)

一个算法至少要有一个输出数据,以反映对输入数据进行加工处理的结果,否则这个算法便毫无意义。

▶有穷性(Finiteness)

一个算法必须能在执行有限个步骤之后终止。

▶确切性(Definiteness)

一个算法的每个步骤都必须有确切的定义,可以严格地、无歧义地执行。

▶可行性(Effectiveness)

又称为有效性,是指一个算法的任何步骤都可以被分解为可实现的基本操作和基本计算,并在有限时间内完成。算法的描述方法

算法设计者必须将自己设计的算法清楚、正确地记录下来,这个过程称为算法的描述。算法的描述方法有很多种,常用的方法有自然语言和流程图两种。自然语言

自然语言就是我们在日常生活中使用的语言,可以是汉语、英语、日语等。一般采用自然语言描述一些简单问题的算法,以达到通俗易懂的效果。例如,求正整数a和正整数b的最大公约数的算法,可以用自然语言描述如下。

第1步:输入a和b的值;

第2步:求a除以b的余数c;

第3步:若c等于0,则b为最大公约数,算法结束,否则执行第4步;

第4步:将b的值放在a中,将c的值放在b中;

第5步:重新执行第2步。流程图

流程图是一种传统的算法描述方法,它使用有特定含义的图形符号来表示算法的执行过程。流程图简单直观、易于理解,因而广泛应用于各个领域。目前较为通用的流程图图形符号是由ANSI(美国国家标准学会)制定的,其中常用的一些图形符号见下表。

绘制流程图时有三点需要注意:第一,要使用标准通用符号,符号内的文字尽量简明扼要;第二,绘制顺序应从上到下、从左到右;第三,流向符号的箭头方向要清楚,尽量避免线条太长或交叉的情况。仍然以求正整数a和正整数b的最大公约数的算法为例,用流程图描述该算法的效果如下图所示(图中的mod表示求余数)。算法的基本结构

任何复杂的算法都可以由顺序结构、选择结构和循环结构这3种基本结构组成,它们之间既可以并列,也可以相互包含,但不允许交叉,也不能从一个结构直接跳转到另一个结构的内部。顺序结构

顺序结构是最简单的线性结构,在顺序结构的程序中,操作是按照它们出现的先后顺序执行的。如下左图所示,只有执行完A框中的操作后,才会接着执行B框中的操作。例如,输入两个数,并分别赋给变量m和n,再分别输出变量m和n的值,采用顺序结构来实现的流程图如下右图所示。选择结构

选择结构又称分支结构,有两种形式。第一种形式如下左图所示,表示判断给定的条件P是否成立,若成立则执行A框,若不成立则执行B框;第二种形式如下右图所示,表示判断给定的条件P是否成立,若成立则执行A框,若不成立则不执行任何操作。

例如,输入一个数,并赋给变量n,然后判断该数是否为偶数(能否被2整除),并输出判断结果,采用选择结构来实现的流程图如下图所示。循环结构

循环结构又称重复结构,表示反复执行指定操作,直到某个条件成立或不成立时才终止。循环结构又可分为当型循环和直到型循环。

▶当型循环

顾名思义,当型循环是指“当”某个条件成立时反复执行指定操作,其基本形式如下左图所示。先判断条件P是否成立,若成立则执行A框,然后再次判断条件P是否成立,若成立则继续执行A框,如此反复,直到条件P不成立为止,此时不执行A框,跳出循环。如下右图所示为当型循环结构的另一种形式,它的不同点是先执行一次A框,再判断条件P是否成立。也就是说,下左图的形式是“先判断再执行”,有可能一次也不执行A框;而下右图的形式是“先执行再判断”,至少会执行一次A框。

▶直到型循环

直到型循环是指反复执行指定操作,“直到”某个条件成立才停止,它同样也有两种形式,分别如下左图和下右图所示。可以看出,直到型循环与当型循环的关键区别在于:直到型循环是在条件P成立时跳出循环,当型循环则是在条件P不成立时跳出循环。

两种循环结构在大多数情况下可相互转换。例如,计算1+2+3+…+50的和。采用当型循环结构来实现时,流程图如下一图所示;采用直到型循环结构来实现时,流程图如下二图所示。具体使用哪种循环结构,要根据所使用的编程语言提供的语句而定。算法的质量评定

同一个问题可以用不同的算法解决。中小学生学习编程时接触到的程序都不算复杂,可能还体会不到不同算法对编程的影响,但在大型的软件开发项目中,算法设计的合理性至关重要,因为这会影响开发效率和用户体验。下面就来简单了解算法质量好坏的评定标准。

▶正确性

正确性是评定算法质量最重要的一个标准。算法要能真正解决具体的问题,即对任何合理的输入,经过算法的处理,都能输出正确的结果。

▶可读性

可读性是指一个算法被人读懂的难易程度。一个算法被设计出来后,需要由人来阅读、理解和使用。只有通俗易懂、逻辑清晰的算法,才能得到更好的交流和推广。

▶健壮性

健壮性也称容错性,是指一个算法对输入的不合理数据的反应能力和处理能力。数据的形式多种多样,一个好的算法接收到不适合自己处理的数据时,应能做出适当反应,并对其进行处理,不会产生预料不到的运行结果。

▶时间复杂度与空间复杂度

简单来说,时间复杂度是指执行算法需要消耗的时间,空间复杂度是指执行算法需要消耗的内存空间。一个好的算法应该能在占用较少内存空间的情况下,快速得到需要的结果。常用的计算机算法

目前已知的计算机算法有很多,如枚举法、迭代法、分治法、递归法、排序算法、树结构算法等。下面就来分别介绍这些算法。枚举法

枚举法又称穷举法,是一种常见的数学方法,也是日常使用最多的算法之一。枚举法的核心思想是“列举出所有的可能”。具体来说就是逐一列举问题涉及的所有情形,并根据问题中规定的条件检验哪些情形符合条件,是问题的解,哪些情形不符合条件,应予以排除。枚举法的优点是比较直观、易于理解,缺点是速度太慢。

例如,著名的数学趣题“鸡兔同笼”:有若干只鸡和兔子同在一个笼子里,从上面数共有35个头,从下面数共有94只脚,求笼子中鸡和兔子各有几只。这个问题就可以使用枚举法求解,即从0开始逐一增加兔子的数量,并根据兔子的数量算出鸡的数量,然后判断鸡和兔子的总脚数是否等于94,直到找到符合条件的答案为止。算法过程见下表。迭代法

迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,它利用的是计算机运算速度快、适合做重复性操作的特点,让计算机重复执行一组指令,在每次执行这组指令时,都从变量的原值推出它的一个新值,从而得到最终的结果。

例如,经典的兔子繁殖问题:饲养场引进一只刚出生的新品种兔子,这种兔子从出生的下一个月开始,每月新生一只兔子,新生的兔子也如此繁殖。假如所有的兔子都不死,求第n个月时,该饲养场共有多少只兔子?这个问题的求解就可以使用迭代法。假设第1个月时兔子的只数为y,第2个月时兔子的只数为y,第3个月时兔子的只数12为y,……,第n个月时兔子的只数为y,根据题意,这种兔子从出生3n的下一个月开始,每月新生一只兔子,则有:

在编程时定义两个迭代变量y和x,分别对应y和y,就可以将nn-1上面的递推公式转换成如下迭代关系:y=x*2x=y分治法

分治法是把一个复杂的问题分成两个或更多个与原问题相似的子问题,再把子问题分成更小的子问题……直到子问题简单到可以直接求解,最后将各个子问题的解合并,就能得到原问题的答案。简单来说,分治法就是一个“分—治—合”的过程。

例如,要在给定的一组数字中找出最大值,就可以使用分治法将这组数字进行多次“一分为二”,再分别求解,算法过程如下:递归法

递归法与分治法有些类似,都是对一个复杂的算法问题进行分解,让其规模变得越来越小,最终使子问题容易求解。假如一个函数或过程是由其自定义或调用的,就称为递归。递归只需少量代码就可以描述出解题过程需要的多次重复计算,大大减少了程序的代码量。一般来说,递归至少要有两个要素:一个是可以反复执行的递归过程;另一个是跳出递归的出口。

例如,数学中的阶乘运算就可以看成一个比较典型的递归算法。一般以符号“!”代表阶乘运算,则n!的计算公式如下:n!=1×2×3×…×n

并且可以推导出:n!=n×(n-1)!

以5!为例逐步分解运算过程。通过仔细观察不难发现,阶乘问题非常适合用递归法来解决,它满足了递归的两大特性:一是反复执行的递归过程;二是跳出递归过程的出口。排序算法

排序就是将一组数字按照从小到大或从大到小的顺序排列。例如,将一组数字7、5、11、4、9从小到大排序,结果为4、5、7、9、11。

如果数字比较少,人工就能轻松完成排序,但是如果有成百上千个数字,要想高效地完成排序,就要使用排序算法。

因为排序时需要对序列中的数字进行交换,所以在学习排序算法之前,我们先来了解数字交换的算法。我们通常理解的交换是直接交换两个数字的位置。如下图所示,要交换数字10和20,只需要将10移到20所在的位置,将20移到10所在的位置。

在编程中,数字通常存储在变量、数组或列表等“容器”里,无法实现两个数字的直接交换,还需要借助一个额外容器,此容器在初始状态下没有存储任何数字。如下图所示,要在编程中交换数字10和20,需要先将10移到紫色方块代表的额外容器中,再将20移到原来10所在的容器(橙色方块)中,最后将10移到原来20所在的容器(蓝色方块)中。

了解完数字交换的算法,下面开始学习排序算法。排序算法的种类有很多,如冒泡排序、选择排序、插入排序、快速排序、希尔排序、基数排序等。下面简单介绍几种常用的排序算法。

▶冒泡排序

冒泡排序又称交换排序,其思路是从第一个元素开始比较相邻两个元素的大小,若大小顺序有误,就对调后再进行下一个元素的比较,仿佛气泡从水底逐渐上升到水面一样。如此比较一轮之后,就可以确保最后一个元素位于正确的顺序。接着使用相同的方法进行第2轮比较,直到完成所有元素的排序为止。下图所示为使用冒泡排序将一组数字从小到大排序的过程。

▶选择排序

以从小到大排序为例,选择排序法的基本思路是从待排序的一组数字中找到最小的那个元素,将其与第一个元素交换位置,然后在剩下的元素中再次找到最小的元素,与第二个元素交换位置,重复以上操作,最终完成排序,整个过程如下图所示。

用选择排序法进行从小到大排序也可以将最大的元素与最后一个元素交换位置,将第二大的元素与倒数第二个元素交换位置,依此类推。从大到小排序的思路也是类似的。

▶插入排序

插入排序是一种从一组数字的左端开始依次进行排序的算法,在排序过程中,左侧的数字陆续归位,称为已排序区域,而右侧留下的则是还未排序的数字,称为未排序区域。具体思路是把第一个元素作为初始的已排序区域,然后依次从未排序区域中取出第一个元素,插入已排序区域内的合适位置上,直到未排序区域中没有元素可取为止。使用插入排序法完成从小到大排序的过程如下图所示。

▶快速排序

快速排序也称分割排序,其思路是先在一组数字中随机选择一个数字作为基准,通常选取第一个数字作为基准,把比基准小的数字移到左边,比基准大的数字移到右边,然后用相同的方法分别递归左边和右边的部分,直到最后每个部分只有一个数字,排序就完成了。快速排序的过程如下图所示。第2章 求累加和

德国著名数学家高斯10岁时,老师给他出了一道算术难题——计算1+2+…+100的和。当大家都以为他会算很久时,高斯很快就算出了答案。他的计算方法是:(1+100)+…+(50+51)=101×50=5050。其实这道题并不难,无须使用高斯的方法,一个数一个数地慢慢相加就能得出结果,只是通过人工计算很烦琐,而用计算机来计算则非常简单,可以又快又准地得出结果。程序设定

设计一个程序,输入一个数字,求从1加到这个数的和。例如,输入50。算法分析

想要让计算机计算1+2+3+…+n的和,可以使用算法中的迭代法来完成。用变量sum代表累加的和,用变量i代表要累加的数,然后使用循环结构,在每一轮循环中用变量sum的旧值加上i,得到新值后赋给变量sum,然后将变量i的值增加1,如此循环往复,直到变量i的值大于n。思路详解

计算数字的累加和,需要先输入一个正整数n,然后创建一个用于存储累加和的变量sum。在累加的过程中,先判断是否已加到数字n,如果没有,就不断地累加并替换sum中的值,直到加到数字n为止。初始化变量

首先在Scratch中新建i、n、sum 3个变量。变量i用于存储参与计算的中间数,初始值为1;变量n用来存储题目提示输入的那个数;变量sum用来存储计算的结果,初始值为0。变量赋值

变量n为题目中要加到的那个数。应用“询问()并等待”积木块,询问并等待小朋友输入数字,输入后将该数字赋给变量n。例如,要计算1+2+3+…+50的和,则输入数字50,变量n的值就为50。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载