小学《人工智能编程》课程教案
第13讲 偷懒的好办法
1.教学内容分析
本节内容首先情境带入,引出循环语句的知识内容;随后,以Python编程软件为辅助,讲解基本For循环和扩展for循环语句;之后,开展实践任务,以分糖果为例,熟悉循环语句的使用方法;然后,思维拓展,讲解程序的描述方式及流程图表示方法等知识,最后,能力提升,通过Python编程设计解决棋盘麦粒问题。
2.学习者分析
1.学生具有一定的Python编程语言基础;
2.学生对循环语句有一定的基础认识;
3.学生具备一定的逻辑推理能力,知识迁移能力,对人工智能的技术有较强的学习兴趣。
3.学习目标确定
1.知识与技能:
①掌握基本 for 循环的结构,正确运用 for 循环的缩进格式;
②掌握扩展 for 循环的结构,正确运用 for 循环中的 else 语句;
③学生能够了解流程图的表示方法。
2.过程与方法:
①通过学习for循环结构,体会Python编程的循环语句的应用;
②通过项目的编程练习,培养学生设计能力和举一反三的能力。
3.情感态度与价值观:
①养成自主学习、自主探究的能力;
②培养发现问题、解决问题的探究能力;
③通过对项目的讨论、分析、制作等活动,培养严密的逻辑思维能力。
4.教学重点难点
教学重点:1.理解循环语句的逻辑;
2.掌握扩展for循环的编程设计;
教学难点:1.结合range()函数的用法,合理使用 for 循环结构动手编程;
2.灵活运用软件完成项目的制作。
5.教学流程图
情境导入
原理讲解
项目制作
思维拓展
展示小结
能力提升
6.教学活动
环节一:(情境导入)5min |
教学活动1 1.教师讲授情境故事,设置悬念,吸引学生兴趣;(教师播放PPT) 教师:“小楷平时比较粗心,上交作文时经常忘记写名字,于是老师惩罚他将自己的名字打印100遍。小楷会偷懒,他利用计算机录入一次名字,然后通过复制和粘贴文本的方式完成了100遍名字的录入,减少了工作量。阿兰学习了编程,他对小楷说:“计算机最擅长做重复性的工作,可以帮我们节约出很多时间。我用几个语句编程就可以很快完成100次名字的复制任务。同学们,你们能够通过编程的方法替小楷完成任务吗?设计类似重复性操作功能需要学习哪些编程知识?” 学生聆听情境故事,积极回应老师,思考如何快速复制名字; 教师:“好的,同学们,我们一起去学习一下利用Python编程快速复制名字吧!今天我们的学习将分成三个模块,第一个模块,认识循环语句和for循环;第二个模块,一起完成分糖果的实践任务;第三个模块,思维拓展,学习程序化描述及流程图表示法等知识。” 学生聆听教师讲授。 |
活动意图说明: 通过情境故事吸引学生的注意力,激发学生的学习兴趣,导入本节课的内容----偷懒的好办法 |
环节二:(原理讲解)20min |
教学活动2 1.教师讲解循环语句知识内容; 教师:“顾名思义,循环语句就是允许重复执行一个语句或语句组多次。 Python语言中,循环语句的执行逻辑如图所示。根据循环执行的次数,循环可以分为确定次数循环和非确定次数循环。确定次数的循环指循环体对循环次数有明确的指定,一般称为遍历循环。非确定次数循环指程序不确定循环体可能执行的次数,是一种需要根据判断条件执行循环体的无限循环。Python 提供了for循环和while循环,还允许进行复杂的嵌套循环。” 学生聆听教师讲解循环语句知识内容; 2.教师讲解基本 for 循环知识内容,并进行相关演示; 教师:“Python通过for循环实现遍历循环,可以遍历一个序列结构。 for 循环的基本语法格式如图:上述格式中,循环变量用于存放从序列结构中读取出来的元素,待遍历的序列结构可以是字符串、列表、元组、字典、集合、文件等。适用于可遍历的序列可以是任何有顺序的数据结构串。in是运算符,依次读取序列中的元素。语句块指的是具有相同缩进格式的多行代码。语句块由于和循环结构联用,又被称为循环体。如图所示。遍历循环就是从遍历结构中逐一提取元素,放在循环变量中,对于所提取的每个元素执行一次循环体语句块。可以这样来理解:遍历就是不重复,不遗漏,逐个走遍。遍历结构可以是字符串、列表、文件、组合数据类型等,也可以是rang()函数。range() 函数是Python的常用内置函数,用于生成一系列连续整数,多用于for 循环中。接下来做一个编程练习,利用for 循环进行数值循环计算,解答高斯求和数学题。德国着名数学家高斯幼年时代聪明过人,他上学时,老师曾出了一道题让全班同学计算: 1+ 2+ 3+ 4+…+ 99+ 100。老师出完题后,其他同学都在埋头计算,小高斯却很快算出答案等于5050,这就是广为人知的高斯求和法。我们可以利用基本的for 循环结构,进行数值循环计算,实现从1到100的累加,验证高斯求和结果的正确性。编程代码参考如图:在python编辑器中运行的结果为:计算 1+2+...+100 的结果为:5050,然后,再做一个编程练习,利用for 循环进行数值循环计算,计算斐波那契数列。斐波那契数列(Fibonacci sequence),又称黄金分隔数列,据说是数学家斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。它指的是这样一个数列: 1、 1、 2、 3、 5、 8、 13、 21、 34、……。斐波那契数列看起来杂乱,其实有其规律,可以按以下递推的方法进行定义: F(1)=1, F(2)=1, F(n)=F(n - 1)+F(n - 2)( n≥ 3, n ∈ N*),即从第3个数起每个数项是前两项的和。神奇的是,分别用这些斐波那契数作为边长画正方形,然后以正方形的边长为直径画一个四分之一圆,就会得到漂亮的螺旋线(斐波纳契弧线)。斐波纳契弧线接近黄金分隔 比率,应用在生活中给人们带来美的享受。如图所示。根据斐波那契数的生成规律,我们可以利用基本的for 循环结构,编程输出更多的斐波那契数。编程代码及结果如图:请同学们在python编辑器中运行以上代码,观察输出结果,并思考一下上述代码是否可以再做优化。” 学生聆听教师讲解基本 for 循环知识内容,教师播放PPT,进行相关操作演示; 3. 教师讲解扩展for循环知识内容,并进行操作演示; 教师:“Python遍历循环还允许使用一种带else语句的扩展for循环模式,语法格式如图:在这种扩展模式中,当for循环正常执行之后,程序会继续执行else 语句中的语句块。 else 语句只在循环正常执行并结束之后才执行,可以在<语句块2 >中使用判断循环执行情况的语句。即在for … else扩展结构中, for中的语句与以往没有区别,else 中的语句会在循环正常执行完,以便区分后续会介绍的一些强行中断for循环的编程方法。接下来做一个用for 循环求质数的编程练习,质数又称素数,是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。合数则是指在大于1的整数中除了能被1和本身整除外,还能被其他数(0除外)整除的数。任何一个合数都可以分解为几个质数的积。 利用带else语句的扩展for循环结构,我们可以设计搜索出1到100间所有质数的程序。编程思路如下:1.区间设定为1~100的所有自然数;2.通过外层循环,遍历范围内的数字,逐一提取进行判断3.通过内层循环,进行取余计算,判断是否为质数编程代码及结果如图:#以下代码输出2~100的质(素)数:” 学生聆听教师讲解扩展for循环知识内容,教师播放PPT,进行相关操作演示; |
活动意图说明 配合PPT和Python编程语言进行讲解,让学生从亲身经验中体会for循环结构及使用方法。 |
环节三:(项目制作)25min |
教学活动3 教师带领学生借助软件完成分糖果的编程设计; 教师:“儿童节到了,小楷同学带了一大袋糖果前来参加班级Party。有同学协助分糖果,如果3颗分一组,最后会剩下2颗;如果5颗分一组,最后会剩下3颗;如果7颗分一组,最后也会剩下2颗。那么,这些糖果一共有多少颗?小楷同学正在学Python,他马上想到了可以利用for循环和range函数来编程计算。 他的想法是:先从0开始,到100为止,生成一个序列,依次判断序列中的数是不是同时满足被3除余2,被5除余3,被7除余2这三个条件。如果满足,就是要的数,把这个数打印出来,如图所示。程序如图所示,他的编程逻辑是:(1)使用range函数,生成0~100的序列。(2)使用for循环遍历序列,当数列中的元素同时满足被3除余2,被5除余3,被7除余2,就打印出来。(3)取余运算的运算符是%。小明同学也在学Python,他看了小楷的程序就说,你这里循环了100次,计算速度会慢。我们减少循环数来提高计算效率。你看,除以7余2,那么数字一定在2, 2+7,2+7+7……之中,所以我们这样来编程,循环量会少了许多:程序如图所示,小楷和小明同学的程序运行结果都是23。小楷说这个结果不对,我带来了一大袋糖果,远远不止这个数。同学们也来参与计算吧:(1)小楷和小明编程的方法正确吗?谁的思路更好呢?(2)小楷说计算出来的糖果数目少了,问题在哪里呢?(3)动手完成编程,计算出合理的糖果数。” 教师操作Python编程语言,并讲解根据具体操作步骤完成分糖果的编程设计,并进行操作演示; 学生聆听教师讲解利用Python完成分糖果的编程设计的过程和方法; 教师讲解完成后,教师可留给学生5min时间让学生自己操作学习; |
活动意图说明 屏幕共享,教师演示操作,培养学生动手操作能力,让学生直观学习编程设计过程,掌握逻辑结构。 |
环节四:(思维拓展)10min |
教学活动4 1.教师讲解程序的描述方式的相关内容; 教师:“程序的描述方式主要有自然语言、流程图、伪代码等。自然语言描述是指使用人类语言直接描述程序,其特定是灵活自然,但是容易出现二义性。程序流程图使用特定图形、流程线和文字说明来描述程序的基本操作和控制流程,是程序分析和过程描述的基本方式,适用于规模较小的程序。伪代码是介于自然语言与编程语言之间的一种程序描述语言,独立于具体的编程语言,在保存程序结构的情况下描述程序逻辑。” 学生认真聆听教师讲解程序的描述方式的相关内容; 2.教师讲解流程图表示法; 教师:“流程图体现了抽象的计算思维,是描述算法和程序执行过程的好方法。将一个事件发生的整个过程抽象成为各个步骤,利用特定的图形符号加上说明,简明地描述各步骤之间的关系。流程图是最常见的算法图形化表达,它使用美国国家标准化协会(ANSI)规定的一组几何图形描述算法,在图形上使用简明的文字和符号表示各种不同性质的操作,用流程线指示算法的执行方向。常见的流程图符号如图所示。图13-10中各流程图符号具体含义如下: 1.起止框:表示算法的开始或结束; 2.判断框:表示对一个给定的条件进行判断。它有一个入口,两个出口,分别对应条件成立与否,算法的不同执行方向; 3.输入输出框:表示算法的输入、输出操作; 4.处理框:表示一般的处理操作,如计算、赋值等; 5.注释框:非算法部分,用于帮助理解算法; 6.流程线:用流程线连接各框图,表示算法的执行顺序; 7.连接点:连接点总是成对出现,同一对连接点标注相同的数字或文字,用于将画在不同地方的流程线连接起来,从而避免流程线的交叉或过长,使流程图清晰。” 学生认真聆听教师讲解流程图表示法的相关内容; |
活动意图说明 增强学生对程序描述的认识及流程图表示,更好利用Python语言进行编程设计。 |
环节五:(展示小结)5min |
教学活动5 1.学生发言,展示作品,进行逻辑代码讲解; 2.教师对学生作品进行评价; 教师:“同学们,在看了大家的作品后,老师觉得大家都完成的非常好,老师给同学们一个大大的赞。” 1.总结本节课的知识内容,巩固本节课的知识点,铺垫下一节课。 |
教学活动6 1.教师讲解棋盘麦粒问题; 教师:“在印度有一个古老的传说:舍罕王打算奖赏国际象棋的发明人——宰相西萨 · 班 · 达依尔。国王问他想要什么,他对国王说:“陛下,请您在这张棋盘的第1个小格里,赏给我1粒麦子,在第2个小格里给2粒,第3小格给4粒,以后每一小格都比前一小格加一倍。请您把这样摆满棋盘上所有的64格的麦粒,都赏给您的仆人吧!”国王觉得这要求太容易满足了,就命令给他这些麦粒。当人们把一袋一袋的麦子搬来开始计数时,国王才现:就是把全印度的麦粒全拿来,也满足不了那位宰相的要求。这就是著名的棋盘麦粒问题。那么,宰相要求得到的麦粒到底有多少呢? 什么编程课比较好学生聆听教师讲解棋盘麦粒问题; 2.根据所学知识,利用Python编程设计解决棋盘麦粒问题; 教师:“请编程计算一下吧。要求画出解决棋盘麦粒问题的流程图,并完成Python代码的编写。” |
活动意图说明 通过项目式学习的体验效果,让学生可以更直接的体验Python编程的应用,提高学生的参与感。 |
7.板书设计
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论