
《判断平闰年》自主学习材料
“萌芽,考你个题,2018年是平年还是闰年?”
“我想想,能被4整除就是闰年……那2018应该是……”
“哈哈,萌芽,告诉你吧,2018年是平年!”
“斯凯,你怎么算的这么快?”
“因为我有秘密武器!”
“秘密武器?”
“告诉你吧,萌芽,我用Scratch编了一个判断平闰年的程序,只要输入年份,小猫会迅速计算出你所输入的年份是平年还是闰年。怎么样,萌芽,我牛不牛?”
“行啊,斯凯,进步很快啊!快给我说说你的思路!”
“咱们在数学上学过,如果某年能被4整除一般就是平年,但是还有特殊情况就是被100整除时它就是平年,但如果能被400整除时就又是闰年了。”
“对啊,也就是四年一闰,百年不闰,四百年再闰。”
“我就根据这个开始编程的。我想首先得先询问‘请输入年份’
。然后判断一般情况也就是如果年份除以4没有余数,那这一年就是闰年,否则是平年
,接着判断世纪年的情况,因为世纪年首先能整除4,所以这种情况要嵌套在第一种情况下
,同样的道理四百年再闰的情况也是世纪年的一个特例,因此它也应该嵌套在世纪年的判断中
。这样我最终的程序是这样的
,赶紧试试吧,萌芽!”
“好的,我先输入1996年,显示闰年,正确。我再输入1900年,它是一个世纪年,不能整除400,所以是平年,正确。我再输入2000年,它既是世纪年还能整除400,所以也是闰年,正确。我再输入1995年,它不能整除4,所以是平年,正确!行啊,斯凯,正是三日不见刮目相看啊!不过,斯凯,你的这个程序还可以优化一下。”
“优化一下?什么是优化?”
“就是对解决同一问题的几个不同的程序,进行比较、修改、调整或重新编写程序,把程序变为语句最少、处理速度最快、使用效率最高的最优程序。”
“噢,那我们应该怎样优化我们的程序呢?”
“我们可以用
中的
进行编程。‘且’就是并且的意思,要求前后两个条件都得同时满足。‘或’就是或者的意思,也就是前后两个条件只要有一个满足就可以。其实咱们说的‘四年一闰,百年不闰,四百年再闰’可以翻译成这样的一段话‘如果某年能整除4并且不能被100整除,它就是闰年。或者如果某年能被400整除,这一年就是闰年。’因此咱们可以把程序优化成如下
,是不是这样的程序更简洁?”
斯凯有点不服气,也有点怀疑,这程序能行吗?行不行,测试一下不就知道了吗?斯凯把刚才的几个年份1900、1995、1996、2000分别输入,结果正确!看着结果斯凯是心服口服了。
“好,萌芽,又跟你学了一招!下次咱们再找更有趣的题进行探索!”

《判断生肖》自主学习材料
“萌芽,你是哪一年出生的?”
“我是2009年出生的。”
“你的属相是不是牛啊?”
“对啊,你怎么知道的?”
“嘿嘿,我是通过我编写的小程序运算得出的!”
“斯凯,你太牛了,你是怎么编写的?赶紧和我说说,我也编一个程序试试!”
“嘿嘿,直接告诉你,你只能是‘比着葫芦画瓢’了,那多没意思啊!我和你一块分析一下,你自己动脑筋想出来,那才是真牛呢!”
“对,有道理,那咱们赶紧开始吧!”
“行,‘磨刀不误砍柴工’,在开始之前,我先考考你,你知道十二生肖都是哪十二生肖吗?”
“当然知道了,‘子鼠、丑牛、寅虎、卯兔、辰龙、巳蛇、午马、未羊、申猴、酉鸡、戌狗、亥猪’,我背的那可是滚瓜烂熟!”
“萌芽,你可知道它们之间有什么规律吗?”
“这……我倒是没考虑过……???”萌芽急的挠着耳朵说。
“萌芽,你看下面这个表格,根据这个表格中的年份与生肖的对应关系,你再找找规律。”

“斯凯,我找到了,每12年这些生肖就会重新轮一遍。”
“对,萌芽,这些生肖是每12年进行一次循环。萌芽,你再仔细观察一下这个表格,像不像是有12个紧挨着的抽屉,它们的名字分别为‘子鼠’抽屉、‘丑牛’抽屉、‘寅虎’抽屉……然后我们把相应的年份放到对应的抽屉中,从而我们就知道这个年份对应的生肖了?”
“对,斯凯。是12个连续的抽屉。”
“萌芽,在咱们的Scraino编程中,我们可以用链表来盛装这12个抽屉。就像下图一样。”

“对、对、对,那我们再怎样把年份与这12个抽屉对应起来呢?”
“萌芽,你再观察一下,是不是每个抽屉前面都有一个序号‘1、2、3……12’,咱们是不是把年份和这些序号联系起来就行了?”
“???应该怎么联系呢?我2009年出生,我的属相是牛,牛的序号是2,2008年出生的同学属鼠,鼠的序号是1,我好像快要找到规律了,……我再想想……,2008-2008=0,2009-2008=1,正好别序号都小1,我把它们的差加上1好像就和序号一致了。对,就是这样,我再试一个,2010年出生的同学属虎,2010-2008=2,2+1=3,虎的序号是3,对,规律就是这样,用某人的出生年份减去一个鼠年的年份再加一就能得到他的属相的序号了,然后根据序号查出他的属相就可以了!”
“萌芽,真不错,你的思路很正确,已经快全部找到了,我再给你一个小的提示,假设你有一个小弟弟或小妹妹恰好是2021年出生呢?正好比你小12岁,这是我们应该怎么办?”
“正好比我小12岁?……那他应该和我的属相一致,因为生肖12年一循环,但是2021-2008却等于13,序号中没有13这个数啊,那应该怎么办呢?我再好好想想……13、12、1……想起来了,13除以12的余数正好为1,然后再加上1就又变成牛的序号2了,我再试一个,2022年应该属虎,2022-2008=14,14除以12的余数为2,2+1=3,虎的序号为3。对,就是这样!”
“萌芽,真棒
!规律就是这样的。由于1900年是鼠年,便于从生肖表中找到,有时人们就把1900年作为基准年,用其他的年份与1900年相减,再与12取余,从而找到该年份对应的属相序号。在我们编程时,我们可以建立一个变量,并给它命名为‘指针’,用这个‘指针’变量去对应属相抽屉的序号。下面就是一种常见的判断属相的编程方法。”

“程序这么简单,却能很快就计算出属相来,编程真是太有趣了,同学们,你们也赶紧试试吧!记住,可一定要自己动脑筋思考啊!”

《解读身份证》自主学习资料
“萌芽,你在干什么呢?看着你在那里念念有词的样子。”
“我在背我的身份证号码呢,这么长,真难背!”
“噢,你在背身份证号码呀,你的身份证号码是多少啊?我很快就会背过的。”
“370303200901188523”
“嗯,我已经背过了,37030320090118852X。”
“哇,斯凯,你这么牛啊!快教教我,你是怎么背得这么快的?”
“嘿嘿,身份证号码其实是有规律的,我是根据它的规律来背的,所以背的快了!”
“有规律?有什么规律?赶紧和我说说!”
“身份证号码18位数字,按从左到右数1-6位表示出生地编码,7-10位出生年份,11、12位出生月份,13、14位出生日期,15、16位出生顺序编号,17位性别标号,18位效验码。其中的字母X是用来代替数字“10”的。”
“噢,原来如此。知道了规律背起来果然快了很多!谢谢,斯凯!”
“萌芽,其实我们还可以编一个小程序,只要人们输入他们的身份证号码,我们就能确定他(她)的出生地、年龄、性别等信息呢!”
“太好了,斯凯,那咱们开始吧!”
“不要着急,萌芽!俗话说‘心急吃不了热豆腐’,在编这个程序前,你得先了解几个基本知识。”
“哪几个基本知识啊?”
“首先你得知道,在Scraino中有三种数据类型,它们是布尔型、数字型和字符串型。今天我们主要用字符串型数据。”
“字符串型数据?它是一个什么东东?”
“简单地讲,字符串就是由字符组成的有序序列。字符包括(大写和小写)字母、汉字、数字以及符号(如+、-、&、@等)。因此,它可以存储姓名、地址、电话号码、图书标题等信息。在Scraino中,字符串中的字符是按顺序被存储的。例如,当变量name执行了将name设定为Karen,其字符的存储如图所示。
要得到字符串的某个字符,可以使用‘第……个字符’积木。例如,第1个字符:name返回字母K,第5个字符:name返回字母n。”
“嗯,知道了,斯凯。那要是我们想把身份证中的出生年份取出来,我们应该怎么做呢?”
“我们课程创立两个变量,一个命名为‘年份’,一个命名为‘序号’。其中‘年份’变量用来储存出生年份,‘序号’变量的初值设为7。萌芽,你知道为什么要把‘序号’变量的初值设为7吗?”
“让我想想,那是因为,因为……,对了,因为7-10位是出生年份。”
“对,咱们可以通过重复执行4次,从而使‘序号’变量由7增加到10,并把相应的字符储存到‘年份’变量中。编程如下。”

“我试试,真的,通过这种方法‘年份’的值就变为了我的出生年份2009了。”
“通过这种方法,我们再与
与
两块积木连用,就可以把被咨询人的出生年份及年龄计算出来了。
。因为第17位是性别标识,我们还可以把第17位的数字赋值给‘性别’变量,又因为当第17位数字位偶数时是女生,奇数时为男生,从而经过一个选择结构判断出性别,选择的条件是变量‘性别’与2取余,如果余数为0,说明是偶数,也就是女生,反之为男生。”

当我们把几个功能块合并在一起时,一个能判断出生年份、年龄、性别的‘身份证解读’小程序就完成了。

萌芽,赶紧试试吧!”