内容正文:
周而复始的循环
——计数循环
江苏省淮安中学 陈燕
【教材分析】教科版必修一《数据与计算》中讲解计数循环用了银行理财的例子,不够贴近学生的生活,所以本教学设计摒弃了教材上的例子。关于知识点的讲解顺序,教材上这一小节把列表放在前面,学生不容易理解列表的作用,在教学设计时调整了一下顺序,先讲解for语句的基本结构后讲解列表,这样更符合学生的认知规律。本案列用绘制图形来讲解循环语句,让学生有更直观更形象的认识,印象也更加深刻。
【学情分析】本校高一的学生大多在初中阶段没有学习过编程,都是第一次接触编程,对编程了解不多。在本节内容之前学习了Python的一些基础基本结构,用Python编程来解决一些简单的数学问题。
【教学目标】
1、掌握for语句的作用和格式。
2、掌握range函数的用法。
3、学会根据问题需求,抽象问题的本质,建立问题模型,设计相应算法,编写Python语言的程序,从而掌握编写程序的过程与方法。
【课时安排】1课时
【教学重点与难点】
教学重点:理解循环语句的工作原理;掌握循环语句的格式。
教学难点:能够使用循环语句解决实际问题。
【教学方法与手段】
1、教学方法:问题驱动法、讲授法、演示法
2、教学手段:极域网络教室、课件展示
【教学过程】
一、创设情境
教师展示万花尺绘图工具
提问:今天带大家怀旧一下,看看老师小时玩的游戏,大家想不想尝试一下这个游戏吗?(很多组合可以分发给学生尝试)。这种有规律的重复的旋转就绘制出各式可爱的图形,但是在绘制过程中很容易手一抖就会毁掉整个图案的美感,我们能不能借助电脑编程来画出完美的图案呢?
预设回答:可以用Python来解决
设计意图:用绘图游戏引入,让学生意识到手工绘制这种重复图形中容易发生的问题,引导学生用编程解决问题。同时让学生了解编程不仅仅可以解决数学问题,还以绘制图形或者做更多其他的事情。
2、 分解问题,解决问题
提问:大家用画板试一试图形的绘制,看一个这个图形到底是怎么画出来的?
(图一)
(图二)
(图三)
引导学生研究绘制图形的过程。
提问:这个过程用Python语句怎么实现呢?
图一代码:
import turtle
turtle.color("red","")
turtle.begin_fill() #填充
turtle.forward(200) #以默认向右的方向绘制长度200的横线
turtle.left(170) #画笔向左旋转170度
turtle.forward(200)
turtle.end_fill()
图二代码:
import turtle
turtle.color("red","")
turtle.begin_fill() #填充
turtle.forward(200) #以默认向右的方向绘制长度200的横线
turtle.left(170) #画笔向左旋转170度
turtle.forward(200)
turtle.left(170) #画笔向左旋转170度
turtle.forward(200)
turtle.left(170) #画笔向左旋转170度
turtle.forward(200)
turtle.left(170) #画笔向左旋转170度
turtle.forward(200)
turtle.left(170) #画笔向左旋转170度
turtle.forward(200)
turtle.left(170) #画笔向左旋转170度
turtle.forward(200)
turtle.end_fill()
提问:大家观察图一和图二的代码,你们推测图三的代码会是什么样子呢?
学生实践:根据给出的图一和图二的代码,请同学们自己尝试一下如何修改代码变成图三类似的效果。(学生在Python中调试运行)
设计意图:让学生切身感受利用已有知识解决该问题的繁琐之处,为后面循环语句做铺垫。
提问:经过大家的实践尝试,你们觉得代码有什么问题?这些代码有什么规律?
预设回答:太繁琐;规律是重复turtle.left(170) 和turtle.forward(200)
大家知道计算机很擅长来处理机械重复的问题,请同学们自学课本,看看能不能让我们从那么多重复的代码中解放出来。
(一)for语句基础
知识讲解--for语句的格式和for语句的例子
教师讲解Python中for语句的格式:
for 循环变量 in 列表:
语句或语句组(循环体)
思考:根据for语句的基本结构和老师给出的流程图,请同学思考下面一段代码的运行过程,并总结for语句的执行过程和优点。
for i in [“hello”,”world”]:
print(i)
请一个学生回答:先打印hello再打印world,fo