设计制作 第7课《走进程序世界》教案【湘科版】《综合实践活动课程资源包》 九年级

资源下载
  1. 二一教育资源

设计制作 第7课《走进程序世界》教案【湘科版】《综合实践活动课程资源包》 九年级

资源简介

中小学教育资源及组卷应用平台
第7课《走进程序世界》教学设计
课题 走进程序世界 单元 第三单元 学科 综合实践活动 年级 九年级
学习目标 价值体认:感受算法与程序在解决实际问题中的价值,体会从“使用者”到“创造者”的转变意义,激发对程序设计的兴趣与探索欲。责任担当:主动参与小组讨论与任务协作,承担算法设计、程序调试等职责;严谨对待编程语法与逻辑,培养精益求精的探究态度。解决问题:能运用问题分析、算法设计、流程图绘制等方法解决简单问题;掌握程序调试验证技巧,能排查基础语法与逻辑错误。创意物化:结合生活场景提炼可由计算机解决的问题,设计合理算法并转化为流程图;初步感知编程语言与程序实现过程,尝试将创意转化为简易解决方案。
重点 理解算法的含义及核心作用,掌握利用计算机解决问题的一般过程;学会设计简单算法,能用流程图表示算法;3. 了解程序实现与调试验证的基本思路。
难点 针对具体问题(如“百钱百鸡”“复利计算”)优化算法,提升问题解决效率;准确运用流程图基本要素表示算法逻辑,尤其是循环与判断结构;3. 理解算法与程序的关联,初步建立编程思维。
教学过程
教学环节 教师活动 学生活动 设计意图
导入新课 同学们,生活中手机密码锁解锁、计算器计算复利、游戏角色移动等这些功能都是通过程序实现的。你知道程序背后隐藏着怎样的逻辑吗?我们平时只是使用这些程序,能不能成为程序的创造者呢?其实程序的核心是解决问题的思路和方法,今天我们就带着这些疑问,一起走进程序世界,探究算法与程序的奥秘,学习如何从“程序使用者”转变为“程序创造者”。出示课题 思考课件展示的几个问题,小组之间讨论分享自己的感受。 通过欣赏视频,设置疑问活动,激发学生兴趣,引出本课教学主题。
讲授新课 一、探究新知(一)活动准备运用计算机解决实际问题,需要我们先找到解决问题的方法,然后根据这个方法编写计算机程序,最后由计算机运行程序解决问题。解决问题的方法我们称为算法。算法是计算机软件的灵魂,算法的设计直接影响问题解决的效率。★议一议著名的数学家华罗庚在1964年所著《统筹方法平话》一书中,举了一个“烧水泡茶”的例子。“烧水泡茶”有五道工序:烧开水,洗茶壶,洗茶杯,拿茶叶,泡茶。各道工序用时:烧开水15分钟,洗茶壶2分钟,洗茶杯1分钟,拿茶叶1分钟,泡茶1分钟。根据以上信息,小组讨论有几种烧水泡茶方案,哪一种花费时间最短?序号方案花费时间1洗茶壶→洗茶杯→拿茶叶→烧开水→泡茶(依次顺序进行)2+1+1+15+1=20分钟2烧开水(同时洗茶壶、洗茶杯、拿茶叶)→泡茶15+1=16分钟(最短)(二)活动实施1.利用计算机解决简单问题的一般过程如下:问题分析 算法设计 画流程图 程 序实现 调试验证2.问题分析与算法设计中国古代数学家张丘建在他的《算经》中提出了著名的“百钱百鸡问题”:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,问翁、母、雏各几何?首先,我们把这个问题用数学公式简洁地表达出来。设鸡翁、鸡母、鸡雏的只数分别为X、Y、Z,按照题意给定100钱共买100只鸡,则可以得到下面的公式:5X×3Y+Z/3=100(总共用掉100钱)X +Y+Z=100(鸡的总数为100只) 要解决这个问题,可以采用穷举的方法列举出鸡翁、鸡母、鸡雏的所有组合,其步骤如下: 步骤1:X从0变到100{X表示鸡翁的只数}。步骤2:对X的每一个取值,Y从0变到100{Y表示母鸡的只数}。步骤3:对X、Y的每一组取值,Z从0变到100{Z表示鸡雏的只数}。步骤4:如果满足(X+Y+Z=100)且(5X+3Y+Z/3=100),则输出满足条件的一组X、Y、Z(即一个解)。步骤5:当X、Y、Z的所有取值组合都验证过后,算法结束。1.议一议上面介绍的方法非常直接,但也很烦琐,需要进行上百万次尝试,小组讨论改进的方法。序 号 改进方法 最大尝试次数1利用方程消元简化:由X+Y+Z=100得Z=100-X-Y,代入钱的方程,减少Z的枚举;同时限定X≤20(5×20=100),Y≤33(3×33≈100)21×34=714次2进一步结合Z必须是3的倍数(鸡雏3只值钱1,钱数为整数),在Z=100-X-Y的基础上,只枚举满足Z能被3整除的X、Y组合约238次(714÷3)2.做中学(1)分析下列两个问题并设计算法。① 小明计划把A元存入银行,有两种方案: 存N年定期,计算到期后本息合计(年利率为r %)。算法:步骤1:输入本金A、年利率r 、存期N;步骤2:根据公式S=A×(1 + r ×N/100)计算本息合计S;步骤3:输出S。 存满1年后,把本金和利息取出再续存,重复进行N年,计算到期后本息合计(年利率为r %)。算法:步骤1:输入本金A、年利率r 、存期N;步骤2:初始化本息S=A,计数器M=1;步骤3:计算S=S×(1 + r /100),M=M+1;步骤4:判断M≤N是否成立,若是,返回步骤3;若否,执行步骤5;步骤5:输出S。② 小明忘记密码锁的密码,应如何打开密码锁?(假设是三位数字密码,范围000-999)算法:步骤1:初始化密码尝试值为000;步骤2:输入该密码尝试解锁;步骤3:判断是否解锁成功?若是,结束算法;若否,执行步骤4;步骤4:将尝试值加1(若为999则变为000);步骤5:判断是否已尝试所有组合(000-999)?若是,提示密码无法破解,结束;若否,返回步骤2。(2)从生活中选择一个适合用计算机解决的问题,并设计算法。问题:计算班级50名学生某学科考试的平均分、最高分和最低分。
算法:步骤1:初始化总分sum=0,最高分max=0,最低分min=100,计数器i=1;步骤2:输入第i名学生的成绩score;步骤3:sum=sum+score;步骤4:若score>max,则max=score;若score=N输出结果S的数值结束流程图说明输入起始本金、年利率和存期设置年计数器M,从1开始计数循环计算复利,每计算一次,M加1判断M是否大于等于存期:若否,继续循环计算;若是,终止循环,输出计算结果我们可以观察到,上面的流程图由三种基本结构组成:顺序结构、选择结构、循环结构做中学用流程图表示三维密码锁破解的过程。(假设密码为000-999)流程图:开始 → 初始化尝试密码code=000 → 输入code尝试解锁 → 判断解锁是否成功?→ 是→结束;否→ code=code+1(若为999则变为000)→ 判断code是否回到000且已尝试过?→ 是→输出“无法破解”→结束;否→返回输入code尝试解锁解释说明:以000为初始尝试密码,依次递增尝试所有三位数字组合(000-999);每尝试一次判断是否解锁,若成功则结束;若遍历所有组合仍未成功,提示无法破解,体现循环结构和选择结构的结合。4.算法的程序实现用流程图表示算法后,下一步我们需要用计算机能够“读懂的语言”—编程语言来编写程序,实现算法。下图为我们用C++编程语言编写的复利计算程序。★议一议(1)根据复利计算算法流程图,说一说每行代码的含义。① #include 引入输入输出流头文件,为后续输入输出操作做准备;② using namespace std;使用标准命名空间,简化代码书写(无需每次写std:);③ int main() {主函数入口,程序从这里开始执行;④ double A, r, S; int N, M=1;定义变量,A(本金)、r(年利率)、S(本息)为双精度浮点数,N(存期)、M(计数器)为整数,M初始化为1;⑤ cin > A > r > N;输入本金、年利率、存期;⑥ S = A;初始化本息S为初始本金A;⑦ while(M <= N) {循环条件,当M≤N时执行循环体;⑧ S = S * (1 + r/100);计算当年本息;⑨ M++;计数器M加1;⑩ }:循环体结束; cout << “本息合计:” << S << endl;输出本息合计; return 0;主函数返回0,程序正常结束; }(2)根据不同的需要,人们设计了各种不同的编程语言。通过上网搜索,了解下列三种常用语言的相关信息。(示例:Java、Python、C++)① Java:面向对象编程语言,跨平台性强(一次编写,多处运行),常用于企业级应用、安卓APP开发;语法严谨,需编译运行。② Python:语法简洁易懂,可读性强,属于解释型语言,无需编译直接运行;应用广泛,涵盖数据分析、人工智能、Web开发等领域。③ C++:在C语言基础上增加面向对象特性,运行速度快,底层控制能力强;常用于游戏开发、系统软件、嵌入式开发等。5.程序的调试验证计算机程序一般需要通过编译过程才能运行。每一种程序语言都有自己的语言规则和专用编译器。如果在程序中出现语法规则错误,编译器会给出错误提示,我们可以根据提示对程序进行修改、调试。如果程序通过了编译,就证明不存在语法错误,可以运行了。这时,我们可以通过输入测试数据来验证程序的正确性。如果运行结果不正确,就需要对算法或程序进行检查、修改,重新编译,直到得到正确的结果。警示灯:编译是将程序翻译成计算机可以执行的指令。如果出现任何错误或偏差,甚至是一个小小的符号不符合语法规定,都无法通过编译环节。(三)交流评价1. 分小组介绍自己设计的算法。我们小组设计的是“班级成绩统计”算法,核心是通过循环输入50名学生成绩,同步计算总分、最高分和最低分,最后求平均分;采用了循环结构和选择结构,能高效处理多组数据;优势是步骤清晰,可直接对应程序编写,不足是未考虑成绩为空的异常情况。2. 想一想自己的算法还有哪些需要改进的地方?① 未添加异常处理,若输入成绩为负数或非数字,算法会出错;② 只能处理固定50名学生,灵活性不足,可增加输入学生人数的步骤;③ 未考虑保留小数位数,输出结果可能不够规范。(四)拓展提升我还想完成以下任务: 学习更多的算法知识。 学习一种编程语言(如Python),实现设计的算法。 学习算法的时间复杂度分析,优化算法效率。 尝试编写一个简易的计算器程序,实现加减乘除及复利计算功能。(五)信息园地目前通用的编程语言有两种类型:汇编语言和高级语言。汇编语言与计算机能识别的机器语言很接近,它的指令采用了英文缩写的标识符,以便于识别和记忆。它需要编程者将每一步具体的操作用命令的形式写出来。汇编程序的每一句指令只能对应实际操作过程中的一个很细微的动作,例如移动、自增,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识,但源程序经汇编生成的可执行文件比较小,而且执行速度很快。高级语言相对汇编语言更容易编写和理解,并不是特指某一种具体的语言,而是包括了很多编程语言,如目前流行的Java、C++等,这些语言的应用场景不同,语法、命令格式也不尽相同,但编程的思想、方法都是类似的。二、知识拓展1. 算法优化的核心目的是什么?请结合“百钱百鸡问题”的穷举法改进,说明优化思路。核心目的是减少冗余操作,提高问题解决的效率。“百钱百鸡问题”初始穷举需尝试101×101×101=上百万次,优化思路:①利用方程消元,由X+Y+Z=100得Z=100-X-Y,减少Z的枚举;②限定变量范围(X≤20、Y≤33),缩小枚举区间;③结合Z需为3的倍数的条件,进一步减少无效尝试,最终将最大尝试次数降至约238次。2. 汇编语言和高级语言(如Java、Python)有哪些核心差异?分别适用于什么场景?差异:①可读性:汇编语言指令烦琐、难理解,高级语言语法简洁、易上手;②编程难度:汇编语言需要掌握更多计算机底层知识,高级语言无需关注底层细节;③执行效率:汇编语言生成的程序体积小、速度快,高级语言执行效率稍低。适用场景:汇编语言适用于对执行速度和内存占用要求高的场景(如嵌入式开发);高级语言适用于企业级应用、APP开发、数据分析等多数场景(如Java开发安卓APP,Python做数据分析)。3.流程图的三种基本结构(顺序结构、选择结构、循环结构)分别发挥什么作用?请举例说明。①顺序结构:按步骤依次执行,是算法的基础,如“定期存款本息计算”中“输入数据→计算本息→输出结果”的流程;②选择结构:根据条件判断执行不同分支,如“密码锁破解”中“解锁成功→结束,解锁失败→继续尝试”的判断;③循环结构:重复执行某段操作直至满足条件,如“复利计算”中“逐年计算本息,直至存期结束”的重复过程。4. 程序调试验证的核心步骤有哪些?为什么说“语法错误会导致程序无法编译”?核心步骤:①编译程序,排查语法错误;②输入测试数据运行程序,验证逻辑正确性;③若结果错误,检查算法或程序代码,修改后重新编译运行,直至结果正确。原因:编译的作用是将编程语言翻译成计算机可执行的指令,语法规则是编译的“准则”,若存在符号错误、格式错误等语法问题,编译器无法识别和翻译,程序便无法生成可执行文件,更无法运行。 了解算法的定义及作用,以小组为单位讨论 “烧水泡茶” 的不同实施方案,计算各方案耗时,找出耗时最短的优化方案。 学习 “百钱百鸡问题” 的初始穷举算法,小组讨论改进该算法以减少尝试次数;分析银行存款本息计算、三位数字密码锁解锁两个问题并设计对应算法;从生活中选取班级成绩统计问题,设计计算平均分、最高分和最低分的算法。 学习算法流程图的基本要素和三种基本结构(顺序、选择、循环),理解复利计算算法的流程图表示及说明;完成用流程图表示三维密码锁破解过程的实践,并理解该流程图中循环与选择结构的应用。学习将算法转化为 C++ 程序代码实现,分析复利计算程序中每行代码的含义;通过上网搜索,了解 Java、Python、C++ 三种常用编程语言的特性、运行方式及应用领域。了解程序编译运行的规则,知晓编译器可提示语法错误并据此修改调试程序;掌握程序编译通过后,通过输入测试数据验证程序正确性,若结果错误则检查修改算法或程序、重新编译直至得到正确结果的流程。小组介绍自主设计的 “班级成绩统计” 算法,说明其核心逻辑、所用结构、优势与不足;思考并梳理该算法在异常处理、灵活性、结果输出规范等方面存在的可改进之处。明确算法学习的拓展提升方向,制定进阶学习任务,包括学习更多算法知识、掌握 Python 编程语言以实现自研算法、学习算法时间复杂度分析来优化算法效率,以及尝试编写具备加减乘除和复利计算功能的简易计算器程序。学习普及编程语言的类型知识。 小组讨论、思考然后回答。 借助小组讨论不同烧水泡茶方案及最短用时方案,促使学生理解合理规划步骤(算法设计)对提升效率的关键作用,为后续深入学习计算机算法及程序设计奠定认知基础,培养学生分析问题、优化解决方案的思维能力。借助经典“百钱百鸡问题”,引导学生理解问题分析与算法设计的过程,通过探讨穷举法及其改进方法,培养学生优化算法、提升问题解决效率的意识与能力;通过设计存款利息计算、破解密码锁等问题的算法,以及自主选择生活问题设计算法,锻炼学生将实际问题转化为算法描述的能力,强化算法思维,为后续编程实现解决问题奠定基础 。 引导学生掌握用流程图直观表达算法的方法,理解算法的核心结构,提升算法可视化呈现能力与逻辑思维的具象化表达能力。 引导学生理解算法与编程语言的关联,掌握基础编程代码的解读能力,了解主流编程语言的特点与应用场景,搭建从算法设计到程序实现的认知桥梁。引导学生理解程序调试验证的核心逻辑,掌握排查程序错误的基本方法,培养严谨的程序开发与验证思维,建立程序 “编写 - 调试 - 验证” 的完整认知。引导学生展示交流算法设计成果,反思算法设计的短板,培养算法优化意识与严谨的问题解决思维,提升算法设计的完整性和实用性。引导学生自主规划后续学习方向,培养学生自主学习意识和能力,助力学生根据个人兴趣和需求在算法编程领域深入发展 。普及编程语言的类型知识,通过对比汇编语言和高级语言的特点,包括编写难易程度、指令对应动作、程序复杂度、对专业知识要求、生成可执行文件大小及执行速度等方面,让学生对编程语言有更全面、系统的认识,理解不同类型编程语言的优缺点,为后续根据实际需求选择合适的编程语言学习与应用奠定基础 。通过算法优化、语言差异、流程图结构及程序调试等核心知识点的讲解,帮助学生系统掌握算法设计与优化的方法、理解不同编程语言特性与应用场景、明确流程图在算法表达中的作用,以及掌握程序调试验证的步骤与原理,从而全面提升学生算法思维、编程实践与问题解决能力。
课堂练习 一、选择题1. 下列关于“算法”的描述,正确的是( )A. 算法就是计算机程序 B. 算法的设计不影响问题解决效率 C. 算法是解决问题的步骤和方法 D. 只有计算机才能执行算法2. 下列编程语言中,属于高级语言的是( )A. 机器语言 B. 汇编语言 C. Python D. 以上都不是3. 流程图中,用于表示“条件判断”的图形是( )A. 圆角矩形 B. 矩形 C. 菱形 D. 平行四边形二、填空题1. 利用计算机解决简单问题的一般过程为:________→算法设计→画流程图→________→调试验证。2. 流程图的三种基本结构是________、________、________。3. 目前通用的编程语言分为________和________两类,其中Java、C++属于________。三、判断正误题(对的打“√”,错的打“×”)1. 程序通过编译后,就一定能得到正确的运行结果。( )2. 穷举法是一种简单直接的算法,但可能存在效率低下的问题。( )3. 汇编语言比高级语言执行速度快,因此更适合初学者学习。( ) 想一想,做一做,完成课堂练习。 帮助学生及时巩固知识与技能。
课堂小结 通过这堂课的学习,我们不仅理解了算法是程序的灵魂,掌握了计算机解决问题的一般流程(问题分析→算法设计→画流程图→程序实现→调试验证),还学会了用流程图表示算法逻辑,培养了逻辑思维和问题优化意识。 总结回顾 对本节课内容进行总结概括。
板书 走进程序世界一、探究新知1.活动准备2.活动实施①问题分析与算法设计②使用流程图表示算法③算法的程序实现④程序的调式验证 3.交流评价4.拓展提升5.信息园地二、知识拓展 观看板书 回顾已讲知识点,观察学生对知识的掌握情况。
课后作业 设计一个“家庭月度开支统计”算法,要求:①明确问题分析要点(需统计的开支项目、数据来源等);②写出详细的算法步骤;③用流程图表示算法逻辑(标注基本结构)。 实践、体验、记录感受。 引导学生巩固算法设计流程,强化对顺序、选择、循环等基本结构的理解与应用,提升学生从实际问题中抽象出算法模型并清晰表达的能力,培养学生解决实际生活问题的思维与实践能力 。
21世纪教育网 www.21cnjy.com 精品试卷·第 2 页 (共 2 页)
HYPERLINK "http://www.21cnjy.com/" 21世纪教育网(www.21cnjy.com)

展开更多......

收起↑

资源预览