资源简介 第 2 章 算法与程序实现2.3 程序设计基本知识教学设计教学背景信息科技是现代科学技术领域的重要部分,主要研究以数字形式表达的信息及其应用中的科学原理、思维方法、处理过程和工程实现。当代高速发展的信息科技对全球经济、社会和文化发展起着越来越重要的作用。义务教育信息科技课程具有基础性、实践性和综合性,为高中阶段信息技术课程的学习奠定基础。信息科技课程旨在培养科学精神和科技伦理,提升自主可控意识,培育社会主义核心价值观,树立总体国家安全观,提升数字素养与技能。教材分析本节课的教学内容选自人教/地图出版社第 2 章 算法与程序实现 2.3 程序设计基本知识 ,信息技术的发展与普及为我们创造了一个全新的数字化生活环境。它们在给我们带来生活便利的同时,也在逐渐地改变着我们的生活方式。2017 年 10 月的一天,在杭州市中心路段开展了一场救护车施救演练。在全程近 7 km 的路段中,救护车获准优先通行 21 次,平均行驶速度达36 km/h,相较于该路段常规通行时间,省时近 900 s。优先通行“抢”出的这十几分钟,可能就是挽回病患生命的“黄金”时间。在这个现实版的生死时速演练案例中,批准救护车优先通行的正是杭州“城市大脑”工程的“交通模块”。截至 2018 年初,杭州的“城市大脑”已接管了市区内的主要路口信号灯,通过各类数据感知交通态势,进而优化信号灯配时,使车辆通行速度提升近 15 %。这就是通过算法与程序设计对大数据进行综合应用的奇妙之处。算法与程序浸润在我们生活的各个方面。计算机与移动终端已成为生活中不可或缺的工具,它们之所以能够帮助人们处理各种复杂的事情,主要借助于其中功能各异的程序。在本章的学习中,我们将通过“编程控灯利出行”项目活动,学习如何利用编程的方式实现算法并解决问题,从而发展计算思维,掌握利用计算思维解决问的方法与策略。学情分析此节课针对的对象是高一年级的学生,学生对信息技术的关键技术以及信息技术对生活与学习的影响有一定的了解,但对所学内容只是体验性和经验性的认识。依据解决问题的需要,设计和描述简单算法;利用程序设计语言实现简单算法,解决实际问题。教学目标1.掌握 Python 语言的基本知识,体验通过编程解决问题的基本过程,感受计算机编程的魅力。2.运用顺序、选择和循环三种结构编写程序,提高利用计算机解决问题的能力。教学重点与难点掌握 python 语言的顺序结构的特点、赋值语句、输入输出语句。教学方法与教学手段案例分析法、讲授法、任务驱动法。教学过程问题导入提出问题,引发思考:思考交通信号灯的实现,观看程序运行结果,解读程序。体验探索编程绘制交通信号灯我们可以编写 Python 程序绘制各种图形。例如,绘制一个圆形红色信号灯的程序代码如下:import turtlelight = turtle.Turtle()light.hideturtle()light.color("red", "red")light.begin_fill()light.circle(20)light.end_fill()参考教学资源平台中提供的“turtle 模块帮助 .docx”文件,理解各语句的功能,编程绘制交通信号灯。思考:1. 如果要绘制如图 2.3.1 所示的“红绿”信号灯,应该如何编写程序代码?分析其中两盏信号灯的位置坐标有何关系,描述对应的算法。2. 如果要绘制如图 2.3.2 所示的“红黄绿”信号灯,又应该如何修改程序代码?分析其中哪些语句是可以重复使用的数据类型在编写程序解决问题的过程中,为了更好地处理各种数据,程序设计语言提供了多种数据类型。Python 语言中常见的数据类型有整型、浮点型、字符串型、布尔型和列表等。表 2.3.1 中列出了 Python 语言的部分常用数据类型数据类型 类型标识符 类型说明及示例整型 int Python 中的整数理论上可以任意大(不存在计算机位数不够的情况),如3、-99、988 776 635 547 347 784浮点型 float 可以使用浮点型表示小数,如 3.141 59、0.008 1、2.318E+6(表示 2.318×10 6 )字符串型 str 字符串通常是用一对单引号(' ')或双引号(" ")括起来的一串字符 ,如:' 中国 '、"China"、"300451"、"\t"(制表符)布尔型 bool 布尔类型通常用于逻辑判断,只有两个值:True 和 False,分别代表真和假列表列表 list 是用来存放一组数据的序列。列表中存放的元素可以是各种类型的数据,它们被放置在一对中括号“[ ]”中,以逗号分隔,如:[1, 2, 3, 'A ', 5]、["《红楼梦》", "《水浒传》", "《三国演义》", "《西游记》"]实践活动确定数据类型根据表 2.3.2 中描述的现实事物或现象,列举出具体的数据,说明其对应的数据类型,完成表格填写。表 2.3.2 对应的数据类型现实事物或现象 列举的数据 数据类型倒计时的数字 15 整型列出信号灯的三种颜色名称按钮是否可用在“编程控灯利出行”项目中,编程完成“自助式人行过街红绿灯”的任务还需要使用哪些数据?分析其对应的数据类型。在程序设计中,可以通过强制类型转换操作,把某个数据从一种数据类型转换成为另一种数据类型。Python 语言提供了可以进行强制类型转换的函数,如表 2.3.3 给出的部分数据类型转换函数。表 2.3.3 Python 语言中部分数据类型转换函数数据类型转换函数 功能说明float(x) 将 x 转换为一个浮点型数据int(x) 将 x 转换为一个整型数据str(x) 将 x 转换为字符串型数据2.常量、变量及表达式在程序设计中,确定了数据的类型,也就确定了对该数据可以进行的处理操作。程序设计语言利用运算符来操作数据,运算符将数据连接成表达式,单个的常量或变量也是表达式。常量与变量1. 常量常量指程序运行过程中,其值不能改变的量,例如 1024、"red" 等。2. 变量变量指程序运行过程中,其值可以改变的量。变量是内存中存放数据的存储单元,用变量名来表示。Python 语言中,变量命名需要遵循以下规则:变量名可以包括字母、汉字、数字和下划线(_),但不能以数字开头。例如,name2 是合法变量名,而 2name 是非法变量名。变量名区分大小写,例如,myName、MyName、myname 和 Myname 是不同的变量。为了便于理解,变量名应具有一定含义,即“见名知意”。需要注意的是,不能用系统关键字作为变量名。系统关键字是程序设计语言中保留下来的用于特殊用途的标识符,每个关键字都有特殊的含义。在 Python 语言中,常用的系统关键字有 for、in、if、continue、break、else、and、not 和 or 等。Python 语言中的变量是在首次赋值时创建的。赋值语句是最基本的程序语句,其格式为:变量名 = 表达式例如,i = 1、colors = ["red", "yellow", "green"] 和 light = turtle.Turtle( ) 等都是赋值语句。需要注意的是,Python 语言中的变量必须在使用前被赋值,不能使用未被赋值的变量。在使用过程中,变量还能够被重新赋值。技术支持访问 Python 语言列表中元素的值Python 语言中的变量可以被赋值为列表类型的值,如 colors = ["red","yellow", "green"]。若要访问列表中某个元素的值,可用变量名加索引值的方式。例如,列表变量 colors 中的 3 个元素为:colors[n] 中的 n 表示列表的索引值(n=0,1,2),其中,colors [0] 的值为"red",colors [1] 的值为 "yellow",colors[2] 的值为 "green"。运算符与表达式运算符标明了对操作数(参与运算符计算的数据)所进行的运算,它与操作数连接而成的有意义的式子被称为表达式。表达式在进行运算处理后得到的结果称为表达式的值。例如,2+3 就是一个表达式,其中的操作数是 2 和 3,而运算符是“+”,表达式的值是 5。表达式的值可以赋给变量,也可以作为程序语句中的判断条件。不同类型的数据可以进行不同的运算,如整型数据有取模运算(%),而字符串没有。不同类型的数据使用同一种运算符运算时,常会产生不同的结果。例如,“+”除了可以进行数值加法运算,还可以对字符串、列表等数据进行连接运算,如 "China"+"521" 的运算结果是 "China521",[11, " 张明 "] + [90.5] 的运算结果是 [11, " 张明 ", 90.5]。常用的运算符有算术运算符、关系运算符和逻辑运算符等。1. 算术运算符算术运算符主要进行算术运算,运算的结果为整型或浮点型。常见的算术运算符有加(+)、减(-)、乘(*)、除(/)、整除(//)、取模(%)和幂(**)等。例如,9//2 的结果为 4,6%4 的结果为 2,2**3 的结果为 8。2. 关系运算符关系运算符主要用于比较两个值的大小,运算的结果为布尔值 True 或 False。Python语言中常见的关系运算符如表 2.3.4 所示。 3. 逻辑运算符逻辑运算符可以对关系式或布尔值进行逻辑运算,运算结果仍为布尔值 True 或 False。Python 语言中常见的逻辑运算符如表 2.3.5 所示。表 2.3.5 Python 语言中常见的逻辑运算符逻辑运算符 描述 用法 举例not 非 not a not 2==3 的结果为 Trueand 与 a and b 只有当两个操作数都为 True 时,其结果才为 True如:2<3 and 2>1 的结果为 Trueor 或 a or b 只要有一个操作数为 True,其结果就为 True如:2<3 or 1>2 的结果为 True如果两个或多个运算符出现在同一个表达式中,则要按照优先级确定运算顺序。优先级高的运算符先运算,优先级相同的一般会从左向右依次运算(个别运算除外,如幂运算会从右向左进行运算)。需要注意的是:当表达式中出现“( )”时,它的运算级别最高,应先运算“( )”内的表达式;运算符的优先级为:算术运算符 > 关系运算符 > 逻辑运算符;在同类运算符中也要注意不同的优先级。例如,逻辑运算符 not、and 和 or 的优先级为:not > and > or。实践活动写出 Python 语言表达式根据问题需求,写出对应的表达式,完成表 2.3.6。表 2.3.6 问题描述对应的 Python 语言表达式问题描述 Python语言表达式数学中的代数式: 2a/b+c将两个字符串 " 加油! " 和 " 中国 " 连成一个字符串表示 110 米栏成绩为 16.24 ~ 18.62 s(包括 16.24 s 和 18.62 s)语句与程序结构一般来说,程序是由语句组成的,执行程序就是按特定的次序执行程序中的语句。程序语句包括赋值语句、控制语句和输入输出语句等。其中,控制语句通过对程序流程的控制,决定了程序执行的路径,也决定了程序的结构。程序设计的三种基本结构包括顺序结构、选择结构和循环结构。顺序结构顺序结构指程序的执行按语句的排列顺序从上到下依次执行,直至结束。例如,“体验探索”中绘制红灯或绿灯的过程就是顺序结构。程序通常包括输入数据、处理数据和输出结果三部分。Python 语言主要用函数 input( )实现数据输入,用函数 print( ) 实现数据输出。输入函数 input( )函数 input( ) 主要用来接收键盘的输入,返回值为字符串型数据。通常,在输入时可以给出提示信息,例如:x = input(" 请输入一个正整数:")。输出函数 print( )函数 print( ) 主要用于在屏幕上输出一个或多个输出项的值,多个输出项中间用逗号隔开,例如:print(x, " 是奇数 ")。实践活动编程计算体重指数根据键盘输入的身高和体重值,编写程序计算体重指数,以 bmi.py 为名保存文件。1. 分析问题,找出已知条件和求解的目标,并确定二者之间的关系。2. 用流程图描述该问题求解的算法,并编程实现。想一想能否调整这些语句的书写顺序,为什么?技术支持函数程序中的函数是预先定义好的一段逻辑相对独立、功能相对单一的代码块。在需要时可以直接调用函数,而不必重写代码,这样提高了代码的可读性和可重用性。函数调用的一般格式为:函数名 ( 参数 )在编写程序时,既可以调用系统提供的内置函数,也可以根据功能需求自定义函数并调用。选择结构事实上,很多问题的解决并不是简单地依次顺序执行,有时需要根据条件有选择地处理。例如,在“自助式人行过街红绿灯”问题中,红绿灯在“按钮被按下”时,就会被启用,即红灯持续一段时间后变绿灯。因此,程序设计时就需要利用选择结构,对“按钮是否被按下”这一状态进行判断。在程序的选择结构中,某些语句会受到条件的制约,根据条件成立与否有选择地执行。选择结构利用条件语句,通过判断表达式的值(True 或 False),决定程序执行的分支。单分支结构和双分支结构是常见的两种选择结构,在 Python 语言中是由 if 语句实现的,基本格式见表 2.3.7,注意其中的冒号不能省略。例如,判断一个正整数奇偶性的方法通常是:如果一个正整数 x 能被 2 整除,那么这个数为偶数,否则为奇数。其流程图如图 2.3.3 所示。程序示例如下:x = int(input("请输入一个正整数:"))if x % 2 == 0:print(x, "是偶数。")else:print(x, "是奇数。")Python 语言用缩进的方式标识语句块,表示语句之间的层次关系。同一级语句块中的语句具有相同的缩进量。选择结构除了单分支和双分支结构,还有多分支结构。生活中很多问题也是需要依据多种不同情况分别进行处理的。例如,某城市轨道交通实行分段计程票价,起步票价为乘坐 5 站以内(含 5 站)单人票价 2 元;乘坐 5 站以上 10 站以下(含 10 站),单人票价 3 元;乘坐 10 站以上 16 站以下(含 16 站),单人票价 4 元;乘坐 16 站以上单人票价 5 元。那么该问题就有 4 种分支情况,如图 2.3.4 所示。Python 语言中,可以在 if 语句中配合使用 elif 语句来实现多分支结构,多分支结构的一般格式及“分段计程票价”程序示例如表 2.3.8 所示。在程序设计中,选择结构是处理分支问题的基本手段。在用选择结构进行问题求解时,需要先确定分支情况,然后再用恰当的 if 语句编写程序。实践活动评定体重指数等级依据《国家学生体质健康标准》体重指数单项评分表,如果高一年级男生体重指数值在 16.5 ~ 23.2 之内,则属于“正常”等级。完善程序(bmi.py)功能,实现输入某个高一男生的身高和体重值,就能输出他的体重指数等级。1. 用变量 bmi 表示体重指数值,写出判定 bmi 是否在“正常”等级范围内的表达式。2. 结合表 2.3.9 所示的高一学生体重指数评分表,实现对某个男生体重指数等级的完整评定,即根据输入的身高和体重值,显示对应的等级:“正常”“低体重”“超重”或“肥胖”。用流程图描述该问题求解的算法,并编程实现。3. 如果继续完善程序,使之能对任意高一学生(男生或女生)进行体重指数等级的判定,需要考虑哪些条件?试用流程图将求解的算法描述出来。 循环结构在解决问题过程中,还会遇到需要重复执行某些操作,才能得到最终结果的情况。例如,2.2 节中设计的“倒计时 15 s”的过程,就是一个反复执行 15 次“输出 t 的值─保持显示 1 s ─清除显示─ t ← t-1”的过程。此时,就需要利用循环结构实现这种重复性的操作。在循环结构中,一些语句在某一条件成立时,被重复执行,直到条件不成立时,才结束重复执行。这个条件称为循环控制条件,被重复执行的语句块称为循环体。循环结构的流程图如图 2.3.5 所示。Python 语言提供了两种基本的循环结构语句:while 语句和 for 语句。1. while 语句while 语句的基本格式为:while 语句中的表达式是循环控制条件,其值一般为布尔值(True 或 False),当表达式的值为 True 时,执行循环体内的语句,否则就退出循环,执行下一条语句。需要注意的是,while 表达式后面的冒号不能省略。技术支持Python 语言中的模块Python 语言中的模块是一个程序文件(扩展名是 .py),它将程序代码和数据封装起来。编写程序时,要先导入所需的模块,然后就可以在程序中调用该模块中的函数等。导入模块一般写在程序的开始位置,其基本格式为:import 模块名Python 语言内置了许多模块,常用的有:1. turtle 模块。turtle 模块可用于绘制图形。例如,“体验探索”中绘制的红灯和绿灯,就是通过导入 turtle 模块,利用其中的函数 circle( ) 绘制圆形。2. time 模块。time 模块主要用于处理时间,其中提供了一系列的控制时间的函数,如 sleep(n) 实现让程序在该语句位置休眠时间为 n(单位为 s),即延时 n 后再执行下一条语句。3. math 模块。math 模块可用于数学运算,如平方根、指数、对数和三角函数的运算等。由于问题解决的复杂性和独特性,当内置模块不能满足需要时,也可使用第三方模块或者自行开发新模块。在使用第三方模块之前,需要通过包管理工具 pip 进行模块安装。2. for 语句for 语句的基本格式为:for 循环变量 in 序列:语句块for 语句每次从序列中取出一个元素赋值给循环变量(循环变量初值即为序列中的第一个元素值),当依次访问完序列中所有元素后,循环结束。需要注意的是,for ... in 后面的冒号不能省略。技术支持 for 语句中的序列1. 在 Python 语言中,可以使用函数 range( ) 返回一个等差整数序列,格式为:range( 起始值 , 终值 , 步长 )。需要注意的是,生成的这个整数序列不包括终值,并且起始值和步长(序列中相邻两个元素之间的差)可以缺省,缺省时分别为 0 和 1,如表 2.3.10 所示。2. 在 for 语句中还可以直接使用列表等序列。例如:names = ["张明", "王丽", "李刚", "唐华"]for name in names:print(name)最后执行结果为:在 for 语句中,循环次数由序列中元素的个数决定,常用于确定循环次数的问题解决。对于不能确定次数的问题求解,需要使用 while 语句。实际上,while 语句既可以实现不确定次数的循环,也可以实现确定次数的循环。3. 循环嵌套一个循环结构内可以包含另一个循环,这样的结构称为循环嵌套,也称多重循环。常用的循环嵌套是二重循环,外层循环称为外循环,内层循环称为内循环。内循环是外循环的循环体。循环嵌套的执行过程是要首先执行外层循环,外循环每执行一次,内循环则需执行一个完整的循环。例如,输出显示“九九乘法表”,程序示例如下:# 外循环for i in range(1, 10):# 内循环for j in range(1, i + 1):# 通过end = ""设置函数print()不输出换行符print(i, " * ", j, " = ", i * j, "\t", end = "")# 设置换行操作(函数print()不输出任何字符,只进行换行)print()4. break 语句和 continue 语句在循环体中,可以使用 break 语句和 continue 语句控制程序的流程。break 语句用于终止某个循环,使程序跳到该循环结构之外的第一个可执行语句;continue 语句用于终止本次循环进入下一次循环,即跳过循环体内还未执行的语句,进入下一次循环的判定。break 和 continue 语句的用法比较,可以参考表 2.3.11 所示的程序示例及其运行结果。实践活动编写完整的体重指数“计算器”我们已经编程实现对高一年级学生体重指数的计算和等级判定,但该程序运行一次只能处理一名学生的信息。试继续完善程序(bmi.py)功能,编写一个完整的体重指数计算小程序,实现对多名学生进行体重指数的等级判断。1. 要实现多次判定高一学生体重指数等级的程序功能,应如何设置循环条件?该循环的次数是否固定?如何结束该循环?2. 画出该问题求解的流程图,并编程实现。程序设计过程中许多问题不可能只通过一种程序结构解决,往往需要将顺序结构、选择结构和循环结构综合起来使用。项目实施编写程序模拟实现“自助式人行过街红绿灯”一、项目活动结合本节程序设计知识的学习,尝试编写程序模拟实现“自助式人行过街红绿灯”的完整功能,参考效果如表 2.3.12 所示。1. 结合前面对“自助式人行过街红绿灯”项目问题的分析,思考:(1)如果行人甲按下按钮,在绿灯倒计时结束时刚过完马路,而行人乙此时恰好按下“按钮”请求过马路,那么,程序是否应该响应行人乙的请求?为什么?想一想实现该功能的程序语句。(2)按下“按钮”后,信号灯的状态变化及对应的倒计时显示等效果可以利用哪些语句实现?2. 用包管理工具 pip 安装 sinomaps 模块,并导入项目程序中,参考教学资源平台提供的“sinomaps 模块中函数和属性功能表 .docx”文件,完成“自助式人行过街红绿灯”问题的编程实现。二、项目检查编写程序,初步实现“自助式人行过街红绿灯”项目任务的功能。课后作业1. 设计算法编写程序实现如下功能:已知一元二次方程 ax 2 +bx+c=0,从键盘输入 a、b 和 c 的值,获取该一元二次方程解的情况。3. 设计算法编写程序,求任意两个正整数的最大公约数,直至用户输入“q”或“Q”才退出程序。4. 编写程序和计算机来一场有趣的猜数游戏。要求:由计算机随机生成一个 100 以内的正整数,用户有 5 次猜数机会,如果猜中提示“猜中了!”并退出程序;否则,提示“数偏大”或“数偏小”,然后继续猜数。如果 5 次均未猜中,屏幕显示计算机随机生成的整数,并换行给出提示“5 次没有猜中,很遗憾,游戏结束”,退出程序。提示:内置模块 random 可以生成一个指定范围内的随机数。参考语句为:m = random.randint(1, 100) # 生成一个指定范围为[1,100]的随机整数。板书设计第 2 章 算法与程序实现2.3 程序设计基本知识1.数据类型2.常量、变量及表达式3.语句与程序结构普通高中教科书信息技术 必 修 1 数据与计算编著人民教育出版衬课程教材研究所信息技术课程教材研究开发中心中国地图出版社教材出版分社总 主 编 :祝智庭 樊 磊副总主编 :高淑印 郭 芳 李 锋本册主编 :李 锋 高淑印编写人员 :程建娜 刘姝弘 夏燕萍 王 岚 史弘文 展开更多...... 收起↑ 资源预览