内容正文:
3.1用计算机编程解决问题的一般过程(教学设计)
授课年级
高一年级
授课时间
2025年10月27日
课题
3.1用计算机编程解决问题的一般过程
教学目标
1. 理解计算机编程解决问题的基本流程。
2. 掌握问题分析、算法设计、编写程序、调试运行的四个核心步骤。
3. 通过实际案例感受编程的逻辑性与创造性。
教学重难点
重点:掌握编程四步流程(问题分析→算法设计→编码→调试运行),理解其逻辑递进关系。
难点:学会将现实问题抽象为结构化算法。
教学准备
电脑室、多媒体课件、学习任务单
教学过程
教师活动
学生活动
章节导入
1、 章节导入
1、编程——打开数字世界的钥匙
呈现一张汇总的程序设计语言图片。
用计算机程序解决问题时,需要将算法用某种计算机程序设计语言精确描述(也称“编写程序”),并在计算机上调试运行直至正确,才能最终解决问题。
在计算机科学中,常见的程序设计语言有Python、C++、Java、Ruby、Visual Basic等,并用通俗易懂且有趣的短句形容。
同一个算法可以用不同的程序设计语言来实现。尽管不同的程序设计语言特点不同,语法规则也可能不同,但是程序设计方法基本相同。
2、 分组问题探究
思考“人脑解题”与“计算机解题”的区别。
了解常见程序设计语言和计算机程序解决问题的简单过程。
思考“人脑解题”与“计算机解题”的区别,进行分组问题探究。
新课导入
2、 课堂导入
1、 智能画笔的魔法
播放智能画笔动画模拟视频,根据相关指令自动绘制图形,同时让同学们带着问题去观看视频。
问:如果让你使用智能画笔画一个图形,你需要告诉它哪些信息?如果画笔画错了,你会如何调整指令?
答:告诉智能画笔形状、边长、颜色等等。画错时要修改输入指令中的参数或逻辑。
接下来引导学生思考智能画笔是如何实现的,编程在其中起到什么作用?进而引出“计算机编程”,编程就算是在“指挥”这只画笔。
通过接下来这段话过渡出本节课的课题主要内容。“智能画笔”不过是编程能力的冰山一角,事实上计算机凭借强大的数据处理、算法优化和自动化控制能力,已深度融入人类生活、科学探索与工业生产等全领域,成为推动社会进步的核心引擎。
但由于现实问题的多样性,并不是所有的问题都可以用现成的计算机程序来解决。因此,针对这些问题,需要通过抽象与建模、设计算法、编写计算机程序、调式运行程序来解决。
本节课将通过编写计算机程序绘制一个正多边形为例,深入学习用计算机编程解决问题的四个关键过程。
观看视频,思考智能画笔是如何实现的?
认识计算机的作用和地位,以及用计算机编程解决问题的四个过程。
知识新授
3、 知识新授
(1) 抽象与建模
· 任务1:如何设计一个计算机程序绘制正多边形?
让同学们在小组内合作探究,分析计算机程序绘制正多边形的方法。
1、 明确条件:正多边形的各边边长相等,各内角度数也相等。
2、 绘制方法:画一条边,旋转一定角度后,再画一条边,重复执行。
· 任务2:以正六边形为例,想想如何绘制出一个正六边形?
同学们根据前面的分析,讨论如何画出一个正六边形(将过程画在学习任务单中)
· 建模:用数学符号描述解决问题的计算模型。
同学们基于以上分析,得出绘制正六边形的计算模型。
(2) 设计算法
基于问题的抽象与建模,如何描述出绘制一个正多边形的算法?引导学生进行小组合作探究,尝试描述出绘制一个正多边形的算法。
(3) 编写程序
要让计算机按照预先设计的算法进行处理,需要将该算法用计算机程序设计语言描述,形成计算机程序。绘制正多边形的算法用Python语言描述如下:
(4) 调试运行程序
引导学生认真阅读课本,由教师在IDLE中演示如何调试并运行程序,展示算法进行程序实现时可能会导致程序不能正常运行或输出错误的情况,以此让同学们思考“为什么要对程序进行调试?”
答:通过运行程序,计算机会自动执行程序中的命令。但是,在将算法进行程序实现时可能会因为录人错误、语法错误、逻辑错误等原因,导致程序不能正常运行或输出错误的结果。
此时,需要对程序进行调试,以便发现错误并进行修正。
(五)问题与讨论
· 在用计算机编程解决问题的过程中,算法与程序两者之间的关系如何?
(六)实操练习
· 任务3:尝试运行该程序绘制其他正多边形。
让同学们运行前面任务中绘制正六边形的计算机程序,绘制出其他正多边形,仔细观察代码是否需要修改,得出结论,并进行小组和班级分享。
1、正三角形
2、正五边形
3、正七边形
结论:
1 无需对代码进行任何修改,便能绘制出多样的正多边形。只需在输入时调整边数和边长的数值,这表明所编写的程序具有通用性,解决的是某一类问题,而非单个特定问题。
2 运用计算机编程来解决一般性问题,通常涵盖以下几个关键步骤:首先进行抽象与建模,接着设计相应的算法,然后进行编写代码,最后运行并调试代码
小组合作探究,得出计算机程序绘制正多边形的方法。
分析讨论如何画出一个正六边形,将过程画在任务单中。
建立计算模型,并将结果同步写在任务单中。
小组合作探究,根据上节课的知识点,描述出绘制正多边形的算法。
体会算法变成计算机程序的过程。
观看教师演示调试并运行代码,思考为什么要先调试后运行。
思考算法与程序之间的关系、联系。
上手实操练习,运行程序绘制出其他正多边形,例如正三角形、正五边形、正八边形等等。
观察代码是否发生改变,分析讨论得出结论并进行小组分享。
得出结论,融会贯通。
巩固提高
4、 巩固提高
· 任务4:请同学们描述用计算机编程验证“哥德巴赫猜想”的一般过程。
先讲解哥德巴赫猜想的理论概念,用现代的数学语言,哥德巴赫猜想可以陈述为:任一大于2的偶数都可写成两个素数之和。
1、 抽象与建模
首先我们将其抽象为计算机能处理的数学模型。设定一个验证范围,比如从4到某个上限值N。对于这个范围内的每一个偶数n,我们要找到两个质数p和q,满足n=p+q这个等式。这就把数学猜想转化为了在特定范围内对每个偶数进行质数组合查找的问题。
2、 设计算法
①判断质数
先设计一个函数来判断一个数是否为质数。一个数如果只能被1和它自身整除,那么这个数就是质数。
我们可以让该函数对输入的数m从2开始到m进行遍历,检查m能否被这些数整除。如果都不能整除,那么m就是质数,返回True;否则返回False。
②验证猜想
对于给定范围内的每个偶数n,从2开始遍历到n//2(因为两个质数相加顺序不影响结果,这样能减少重复计算),对于每个数p,判断p是否为质数,同时判断n−p是否为质数。如果都满足,那么就找到了符合条件的两个质数,该偶数验证通过。
3、 编写程序
#判断质数的函数
def is_prime(m):
if m < 2:
return False
for i in range(2, int(m**0.5) + 1):
if m % i == 0:
return False
return True
# 验证哥德巴赫猜想
def goldbach_conjecture(N):
for n in range(4, N + 1, 2):
found = False
for p in range(2, n // 2 + 1):
if is_prime(p) and is_prime(n - p):
print(f"{n} = {p} + {n - p}")
found = True
break
if not found:
print(f"在范围内,{n} 无法写成两个质数之和,哥德巴赫猜想不成立")
#设置验证范围上限
N = 100
goldbach_conjecture(N)
4、 调试运行程序
根据本节课学习到的知识,以验证哥德巴赫猜想为例,描述出用计算机程序解决该问题的一般过程。
抽象出数学模型。
根据哥德巴赫猜想的原理,分析如何得出质数并验证该猜想。
初步观察算法转换成计算机代码的对应过程,感受函数的魅力。
在IDLE上运行教师下发的python文件,设置一定的验证范围上限,观察运行结果。
课堂小结
5、 课堂小结
采用图文结合的形式,形象直观地呈现出本节课的重难点。先总结四个关键步骤,进而采用填空的形式,在学习任务单中完善“核心逻辑关系图”,深度总结四个关键步骤的作用。
1. 抽象与建模是基础,决定问题解决的方向。
2. 算法设计是桥梁,连接问题与代码。
3. 编写程序需严谨,避免低级错误。
4. 调试运行是保障,确保程序正确高效。
· 反馈循环:调试中发现的问题可能需回溯到建模或算法阶段修正(如模型假设错误导致算法无法实现)。
总结提炼出本节课学习的四个关键步骤,将每个步骤的主要内容概括出来。
完成核心逻辑关系图填空题,将内容补充完整。
体会其中的逻辑关系。
课堂练习
6、 课堂练习
1、以下关于用计算机编程解决问题一般过程的排序,正确的是( )
①分析问题 ②编写程序 ③设计算法 ④调试运行程序
A. ①②③④
B. ①③②④
C. ③①②④
D. ②①③④
解析:用计算机编程解决问题,首先要分析问题,了解问题的本质和需求;接着设计算法,规划出解决问题的具体步骤;然后根据算法编写程序,将算法转化为计算机语言;最后对编写好的程序进行调试运行,检查并修正错误。所以正确的顺序是①③②④,答案选B。
2、用计算机编程解决“计算 1 到 100 的所有整数之和”这一问题,在分析问题阶段,以下对问题的理解错误的是( )
A. 明确要计算的是从 1 开始到 100 结束的连续整数相加
B. 清楚最终结果是一个整数
C. 认为计算过程中不需要考虑数据的存储方式,直接计算即可
D. 知道该问题可以通过循环结构来实现累加操作
解析:在编程解决问题时,必须考虑数据的存储方式。例如,要使用一个变量来存储累加的结果,在循环过程中不断更新这个变量的值。如果不考虑数据存储,就无法正确实现累加计算,C选项错误。
3、小刚写完计算同学语文成绩平均分的程序后直接运行,结果出错。以下关于程序错误及调试必要性的分析,最准确的是( )
A. 录入时字符误输(如字母变数字),会引发运行异常,凸显输入校验重要性。
B. 编程语法有特定规则,用错语句标点会导致中断,体现语法检查的必要性。
C. 逻辑错误(如算平均分除数用错)隐蔽难发现,说明逻辑审查不可或缺。
D. 程序出错可能源于录入、语法或逻辑错误,编写后调试是修正错误、保障正确运行的关键。
解析:
A选项:聚焦录入错误,指出字符误输会致运行异常,强调了输入校验的重要性,但未全面涵盖其他错误类型。
B选项:关注语法错误,说明语句标点用错会中断程序,体现了语法检查的必要性,但同样忽略了其他方面。
C选项:着重逻辑错误,表明其隐蔽性及逻辑审查的重要性,但未综合考虑所有可能错误。
D选项:全面指出程序出错可能由录入、语法或逻辑错误导致,强调编写后调试对修正错误、保障程序正确运行的关键作用,既精简又联系到程序调试中的多个重要知识点。
课后思考
7、 课后思考
· 若程序运行结果与预期不符,应优先检查哪个环节?为什么?
答:优先检查算法逻辑,因其错误可能导致后续代码无意义。若代码报错,则先检查语法错误。
反思评价
8、 反思评价
整体结构清晰,目标明确,通过四个核心步骤(问题分析、算法设计、编写程序、调试运行)的讲解与实操,有效帮助学生理解了计算机编程解决问题的基本流程。教学设计中融入了智能画笔动画模拟视频,增强了课程的趣味性和直观性,激发了学生的学习兴趣。通过小组合作探究和实操练习,学生不仅掌握了理论知识,还提升了实践能力和团队协作能力。然而,在教学过程中也发现部分学生对算法抽象与建模的理解存在困难,未来可增加更多生活化案例,帮助学生更好地将现实问题转化为计算机可处理的模型,进一步提升教学效果。
1 / 2
学科网(北京)股份有限公司
$