循环结构的程序实现—while语句教学设计
课程标准
教学目标
循环结构的程序实现—while语句
教材内容: 3.2.4 循环结构的程序实现 2.while语句
适应的课程标准:
1.7掌握一种程序设计语言的基本知识,使用程序设计语言实现简单算法。通过解决实际问题,体验程序设计的基本流程。
教学目标:
●掌握while语句的格式
●学会使用while语句编写循环结构的程序
学会按照问题需求,抽象问题的本质,建立问题模型,设计相应算法,编写Python语言的程序,从而掌握编写程序的过程与方法。
指向的核心素养:
计算思维:(1)在信息活动中能够采用计算机可以处理的方式界定问题、抽象特征、建立结构模型、合理组织数据。(2)通过判断、分析与综合各种信息资源,运用合理的算法形成解决问题的方案。
数字化学习与创新:掌握数字化学习系统、学习资源与学习工具的操作技能,用于开展自主学习。
学习环境:有教学控制软件的多媒体机房,需要安装Python编程环境。
建议课时:1课时
教学活动设计
教学环节
教学过程
设计意图
情境导入
教师引导学生一起体验本节课要完成的任务--猜数字游戏。
猜数字游戏:给定一个数字让用户猜,用户输入猜测的数字,计算机给出相应的提示:“偏大”、“偏小”或“正确”。若所猜数字正确,则游戏结束;否则继续猜数。
让学生体验几次猜数字游戏,随后回答如下的问题:
问题1:每次猜数字的过程中,计算机程序是否重复执行了特定的步骤?这个重新执行的特定步骤是什么?
参考答案:用户输入猜测的数字,若正确,游戏结束;若猜测的数字偏大,显示“偏大”,继续猜数;若猜测的数字偏小,显示“偏小”继续猜数。
问题2:每次猜到正确数字的次数是否相同?用for循环能够实现猜数字的游戏?
参考答案:不同。for语句用于循环次数明确的问题的编程,而猜数字游戏每次运行循环的次数都是不同的,因此无法使用for语句来编程解决该问题。
通过体验猜数字游戏明确本节课的任务。通过问题1让学生明白猜数字游戏的过程本质上是循环,通过问题2明确该猜数字游戏与上节课用for语句实现的循环算法问题不同,它的循环次数是不确定的,从而引出本节课的内容while语句。
while语句简单例子
新课教学
如果循环的执行次数是未知的,可以使用while循环来编程解决该类问题。
●自主学习--while语句的格式及其使用
(1)自主学习教师提供的微课--while语句的格式和的使用。
while循环的格式:
while 条件:
    <循环体>
while循环在执行时,首先会判断条件是否为真,如果条件为真,执行一次循环体,在此判断条件是否为真,如果仍威震,那么再执行一次循环体,以此类推,直到条件为假时推出while语句。
while语句的使用:
地球到月球的距离是38.4万千米,一张A4纸的厚度大约是0.1毫米,将这张A4纸不停的对折,请问对折多少次,纸的厚度将到达月球?
d = 38.4 * 10000 * 1000 * 100 * 10  # 地月距离
h = 0.1  # A4纸的厚度
c = 0  # 对折的次数
while h <= d:
    c += 1
    h *= 2
print(c)
(2)while语句程序填空
完成程序填空:程序从命令行输入一个大于1的整数,能够判断该数是否为素数。根据素数的定义,素数除了1和它本身以外不再有其他因数。所以判断n是否为素数,只要判断2到n-1是否存在n的因数即可。
分析该问题,只需要到2到n-1中的第一个因数就能证明n是非素数,程序便可以输出结果,所以不需要把2到n-1的所有数字都进行检验。但是,通过几次检验到因数是不确定的,所以该问题适合用while语句编程解决。在解决该问题时,可以先假设n是素数,然后依次检验2到n-1的数字,到第一个因子,假设不成立,循环结束,程序输出结果;如果2到n-1没有一个数字是n的因子,假设没有被推翻,n是素数。
参考答案(划线处为填空):
n = int(input("请输入一个大于1的整数:"))
i = 2
is_prime = True
while i <= n – 1 and is_prime:
    if n % i == 0:
        is_prime = False
    i += 1
if is_prime:
    print(str(n) + "是素数。")
else:
    print(str(n) + "不是素数。")
●学习任务“猜数字游戏”编程实现
编程实现本课开始演示的“猜数字游戏”。
    任务1:小组合作完成“猜数字游戏”的抽象与建模。
    参考答案:
    游戏中首先要确定一个数number,然后将用户猜测的数guess与number比较,直到相等为止。
    通过上述的问题抽象,建立如下模型:
                “正确”(guess=number),游戏结束。
    猜数结果    “偏小”(guess<number),继续猜数。
                “偏大”(guess>number),继续猜数。
任务2:小组合作讨论绘制该算法的流程图。
   
任务3:小组合作编写“热量消耗”计算的完整程序。
    参考答案:
running = True
number = 66
while running:
    guess = int(input("请输入猜测的数:"))
    if guess == number:
        print("正确")
        running = False
    else:
        if guess < number:
            print("偏小")
        else:
            print("偏大")
任务4:程序改进。(1)观看老师提供的关于break语句的微课,小组讨论在“猜数游戏”中,若不引入布尔型变量(本例中的running),程序该如何实现?(2)小组讨论,用户最多只能猜5次程序该如何实现?
参考答案:
(1)如果在循环条件仍然为假的时候想要跳出循环,可以用break语句。
(2)可以设置一个循环变量count,每次猜数字后将count的值累加1,count如果超过5,退出循环结束执行。
number = 66
count = 1
while count <= 5:
    guess = int(input("请输入猜测的数:"))
    if guess == number:
        print("正确")
        break
    else:
        if guess < number:
            print("偏小")
        else:
            print("偏大")
    count += 1
通过自主学习教师提供的while语句的格式和使用的微课理解while循环的格式和使用,初步理解while循环的循环变量与条件控制。
该任务需要学生在理解while语句格式和使用的基础上来解决问题,让学生在掌握while语句的格式和使用,特别是加深对while循环变量与控制条件的理解。
对“猜数字问题”进行抽象与建模,得到解决该问题的计算模型。
通过绘制“猜数字”算法流程图让学生进一步加强算法的设计与描述能力,对该算法有一个清晰的认识,为接下来的程序编写打下良好的基础。
通过编写“猜数字游戏”的完整程序,让学生进一步掌握while语句的使用,提升学生使用while语句解决真实情境问题的能力。该任务的解决,也让学生亲历“抽象与建模、设计算法、编写程序”的过程,能够使学生更加全面而深刻地掌握用算法解决问题的一般过程与方法,完成本节课的重点教学。
让学生掌握break语句的使用,能够根据真实情境的需求改进程序。通过让学生进一步的掌握while循环的循环变量与条件控制,突破本节课的难点。
课堂小结
知识梳理:
1. while语句的格式
2. while语句的特点与适用场景;
3. break语句的作用;
4. 算法解决问题的一般过程与方法。
通过回顾总结帮助学生巩固while语句的格式、特点、适用场景、使用,回顾“抽象与建模、设计算法、编写程序”的过程,使学生更牢固的掌握用算法解决问题的一般过程与方法。
作业布置
基础作业(面向所有学生):
本节配套课后作业
提升作业(面向学有余力学生):
“猜数字游戏”的程序能否可以使用for语句实现?如果能,请尝试使用for语句实现“猜数字游戏”的程序。
课后作业是课堂学习的延伸,是巩固和升华知识点的有效途径。根据学生的基础和能力设置不同难度的作业,以满足不同层次的学生需求。
教学设计思路
本课内容为循环结构的程序实现-while语句。while语句相比for语句是一种更加通用的循环结构的程序实现语句,适用性更加强。for语句的主要应用场景是循环次数已知的情况,对于某些循环次数未知的情况,for语句显得力不从心。而这恰恰是while语句擅长的,因此,while语句是解决循环次数未知的编程问题的一种重要的程序语法结构,学习本课,能够为后续解决各种循环次数未知的实际编程问题打下良好的基础。
在上一课学习for语句的过程中,学生已经亲历了“抽象与建模、设计算法、编写程序”的过程,有了使用循环结构的程序编程解决实际问题的经验。因此,本课在实施教学的时候采用案例教学法、任务驱动法和自主学习。学生在完成“猜数字游戏”的过程中,通过小组合作、自主学习来学习while语句的相关知识,并最终利用学到的知识完成“猜数字游戏”。
在教学中,首先让学生玩几次“猜数字游戏”,分析该问题的基本程序结构,循环次数是否固定来引出本节课的教学内容。随后,学生通过自主学习教师提供的数字化学习资源来掌握while语句的格式与使用,为了帮助学生进一步的理解和掌握while语句的使用,还给学生准备了一个简单的“判断素数”的问题供学生练手。在解决“判断素数”问题的过程中,使学生体验while语句解决循环次数不固定的问题的优势,对while语句循环变量与控制条件也有更进一步的思考,为本节课的难点教学做好铺垫。
学生在掌握了while语句格式与while语句使用的基础上,再解决“猜数字游戏”问题,培养、提升学生的计算思维。在上一节课的学习中,学生已经有了 “抽象与建模、设计算法、编写程序”的经历与体验,所以这个问题的解决完全可以放手给学生做,让学生小组合作完成该问题,教师在这个过程中只需要做好支持者和指导者的角,帮助学生更好的学习。
本节课主要通过完成“猜数字游戏”来完成本节课重点的教学。While语句的循环变量与控制条件是本节课的难点,学生在初次编写while语句的时候经常会忘记循环体中改变循环变量或者忘记修改循环的控制条件,从而导致死循环。对于该难点,在“判断素数”的问题中,已经让学生对于while循环的循环变量和条件控制有了一定的体验,在“猜数字游戏”的完成过程中,让学生进一步加强对于while循环的循环变量和条件控制的理解,通过限定猜数字的次数和使用break语句进一步加深学生对于while循环循环变量和条件控制的掌握,突破本节课的难点。
针对
核心素养培养的
设计考虑
考虑上一节课的学习内容,学生已经掌握了使用for语句编写解决循环结构的程序来解决问题的方法,在本节课的学习中可以把更多的主动权交给学生,让学生通过数字化学习来学习本节课的知识,培养学生的数字化学习与创新素养。本课所使用的案例“猜数字游戏”是一个基于真实情境的问题,因此,在解决该问题的过程中必定要经历计算机编程解决问题的一般步骤,而这恰恰非常适合计算思维的培养。
在本课的教学中,教师并不像往常那样讲解while语句的格式、while语句的使用、break语句的使用。而是提供给学生预先准备数字化学习资源,为什么进行数字化学习提供条件。学生通过自主学习教师提供的数字化学习资源来学习while语句的格式及其使用,通过学生自主的数字化学习来培养学生掌握数字化学习系统、学习资源与学习工具的操作技能,用于开展自主学习的数字化学习与创新素养。除了提供数字化学习资源,在自主学习的过程中,教师也要做好支持和指导的工作,数字化学习过程中的一些问题给予学生知道与帮助。
在掌握while语句的格式及使用以后,随后布置学习任务—“猜数字游戏”编程实现。按照算法解决问题过程的“抽象建模”—“设计算法”—“编写程序”的3个步骤,让学生小组分工合作最终完成“猜数字游戏”。在“抽象建模”阶段中培养了学生通过计算机可以处理的方式界定问题、抽象特征、建立结构模型、合理组织数据的计算思维。在“设计算法”阶段通过绘制解决该问题的流程图,培养学生分析与综合各种信息资源,运用合理的算法形成解决问题的方案的计算思维。在“编写程序”阶段培养学生能够编写简单程序用以解决问题的计算思维。为了进一步的提升学生计算思维,还设计了程序改进的任务,不引入布尔型变量的break的程序实现和限制猜数次数的程序实现。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。