文档内容
普
通
高
中
普 通 高 中 教 科 书
教
科
书
信
息
技
术
信息技术
必
1
修
必修
1
数
数据与计算
据
与
计
算
Shuju yu Jisuan
广
东
教
育
出
版
社
广东教育出版社
定价:11.40元
批准文号:粤发改价格[2017]434号 举报电话:12315
ook2020信息技术必修1-封面.indd 1 2020/12/3 下午3:16普 通 高 中 教 科 书
信息技术
1
必修
数据与计算
Shuju yu Jisuan
徐福荫 主编
广东教育出版社
·广州·
ook2020信息技术-8扉页.indd 1 2020/5/28 下午2:52图书在版编目(CIP)数据
信息技术.必修1:数据与计算 / 徐福荫主编.—广州:
广东教育出版社,2019.7(2021. 1重印)
普通高中教科书
ISBN 978-7-5548-2529-7
Ⅰ. ①信… Ⅱ. ①徐… Ⅲ. ①计算机课—高中—教材
Ⅳ. ①G634.671
中国版本图书馆CIP数据核字(2019)第091632号
编写单位 广东教育出版社
主 编 徐福荫
副 主 编 朱光明 黄国洪
本册主编 黄国洪 陈明宏
核心编写人员(以姓氏笔画为序)
李秋燕 陈 妤 胡永跃
唐章辉 喻文喜 魏小山
责任编辑 李杰静
责任技编 杨启承 陈 瑾
装帧设计 何 维
信息技术 必修1 数据与计算
XINXI JISHU BIXIU 1 SHUJU YU JISUAN
广 东 教 育 出 版 社 出 版
(广州市环市东路472号12-15楼)
邮政编码:510075
网址:http://www.gjs.cn
广东新华发行集团股份有限公司发行
广东新华印刷有限公司南海分公司印刷
(佛山市南海区盐步河东中心路)
890毫米×1240毫米 16开本 9.75印张 244 000字
2019年7月第1版 2021年1月第4次印刷
ISBN 978-7-5548-2529-7
定价:11.40元
批准文号:粤发改价格[2017]434号 举报电话:12315
著作权所有·请勿擅用本书制作各类出版物·违者必究
如有印装质量或内容质量问题,请与我社联系。
质量监督电话:020-87613102 邮箱:gjs-quality@nfcb.com.cn
购书咨询电话:020-87772438
2
41X1939-前言.indd 2 2021/3/11 11:05:23
前 言
信息技术作为当今先进生产力的代表,已经成为我国经济发展的重要支
柱和网络强国的战略支撑。信息技术涵盖了获取、表示、传输、存储和加工
信息在内的各种技术。自电子计算机问世以来,信息技术沿着以计算机为核
心、到以互联网为核心、再到以数据为核心的发展脉络,深刻影响着社会的
经济结构和生产方式,加快了全球范围内的知识更新和技术创新,推动了社
会信息化、智能化的建设与发展,催生出现实空间与虚拟空间并存的信息社
会,并逐步构建出智慧社会。
信息技术与社会的交互融合引发了数据量的迅猛增长,数据对社会生产
和人们生活的影响日益凸显。本教科书针对数据(包括大数据)在信息社会
中的重要价值,分析数据与信息的关系,强调数据处理的基本方法与技能,
发展同学们利用信息技术解决问题的能力。本教科书是信息技术课程后续学
习的基础。
通过对本教科书的学习,同学们能认识到数据在信息社会中的重要价
值,合理处理与应用数据,掌握算法与程序设计的基本知识,根据需要运用
数字化工具解决生活与学习中的问题,认识到人工智能在信息社会中越来越
重要的促进作用,逐步成为信息社会的积极参与者。
本教科书按“数据与信息”“数据处理与应用”“算法与程序实现”三
部分内容展开,围绕信息技术学科核心素养,设计了“体验庆祝国庆多媒体
作品的数据与信息处理”“运用数字化工具探究数理知识”“设计从A市到B
市耗时最少的旅行路线方案”“设计购买纪念品的最佳方案”“网络购物平
台客户行为数据分析和可视化表达”“剖析空调企业智能客服机器人”项目
范例。教师围绕“情境→主题→规划→探究→实施→成果→评价”的项目范
例主线开展教学活动,帮助同学们掌握本教科书的基础知识、方法与技能,
增强信息意识,发展计算思维,提高数字化学习与创新能力,培养正确的信
息社会价值观和责任感,从而促进同学们的信息素养提升。
本教科书要求同学们对现实世界中的真实性问题进行自主、协作、探究
1
41X1939-前言.indd 1 2021/3/11 11:05:24前言
学习。同学们围绕“项目选题→项目规划→方案交流→探究活动→项目实
施→成果交流→活动评价”的项目学习主线开展学习活动,体验“做中学、
学中创、创中乐”的项目学习理念和“从实践入手、先学后教、先练后讲”
的项目学习策略,将知识建构、技能培养与思维发展融入运用数字化工具解
决问题和完成任务的过程中,从而促进信息意识、计算思维、数字化学习与
创新、信息社会责任的信息技术学科核心素养达成。
本教科书设置了“项目范例”“项目选题”“项目规划”“方案交
流”“探究活动”“项目实施”“成果交流”“活动评价”等学习栏目,指
导同学们开展项目学习活动。其中,“项目范例”是教师通过 “情境”“主
题”“规划”“探究”“实施”“成果”“评价”等活动,引导同学们了解
开展项目学习活动的全过程;“项目选题”是同学们从真实世界选择自己感
兴趣的项目主题;“项目规划”是同学们根据项目选题,制订自己的项目方
案;“方案交流”是同学们展示交流自己设计的项目方案,师生共同探究、
完善其方案;“探究活动”是同学们通过“问题”“观察”“分析”“阅
读”“思考”“交流”“实践”“实验”“体验”“调查”“讨论”“拓
展”等活动,获取知识和技能的过程;“项目实施”是同学们运用在项目学
习过程中所获得的知识和技能来完成项目方案;“成果交流”是教师组织同
学们展示交流项目成果,共享创造、分享快乐;“活动评价”是教师组织同
学们开展项目评价活动。
本教科书各章首页的导言,叙述了本章的学习目的与方式、学习目标与
内容,让同学们对整章有个总体认识。每章设置了“本章扼要回顾”,通过
知识结构图把每章的主要内容及它们之间的关系描述出来,这有助于同学们
建立自己的知识结构体系。每章结尾的“本章学业评价”设计了基于学业质
量水平的测试题,并通过本章的项目活动评价,让同学们综合评价自己在信
息技术知识与技能、解决实际问题的过程与方法,以及相关情感态度与价值
观的形成等方面,是否达到了本章的学习目标。此外,本教科书为同学们提
供了配套学习资源包,里面含有网络商城、购票网站等虚拟网站,智能客服
机器人虚拟仿真系统,以及各Python程序设计的源代码等,为同学们提供数
据采集、分析和可视化表达所需的实验数据和环境。当然,同学们还可以自
己收集素材,让自己的项目学习作品更有特色。
2 2
41X1939-前言.indd 2 2021/3/11 11:05:25CONTENTS
目目 录录
第一章 数据与信息 1
项目范例 体验庆祝国庆多媒体作品的数据与信息处理.............................2
1.1 数据及其特征..........................................................................................5
1.1.1 数据................................................................................................5
1.1.2 数据的基本特征...............................................................................7
1.2 数据编码..................................................................................................7
1.2.1 模拟信号与数字信号........................................................................7
1.2.2 编码的基本方式.............................................................................10
1.3 信息及其特征........................................................................................16
1.3.1 信息............................................................................................. 16
1.3.2 信息的基本特征............................................................................ 16
第二章 知识与数字化学习 21
..................................................
项目范例 运用数字化工具探究数理知识 22
2.1 知识与智慧............................................................................................25
2.1.1 知识..............................................................................................25
2.1.2 智慧..............................................................................................27
1 1
41X1939-目录.indd 1 2021/3/11 11:06:08目录
2.2 数字化学习与创新...............................................................................29
2.2.1 数字化工具与资源及其优势.............................................................29
2.2.2 体验数字化创新学习过程................................................................33
第三章 算法基础 39
........................
项目范例 设计从A市到B市耗时最少的旅行路线方案 40
3.1 体验计算机解决问题的过程................................................................43
3.1.1 人工解决问题的过程 .....................................................................43
3.1.2 计算机解决问题的过程 ................................................................. 46
3.2 算法及其描述.......................................................................................48
3.2.1 算法............................................................................................. 48
3.2.2 算法的描述................................................................................... 49
3.3 计算机程序与程序设计语言................................................................53
3.3.1 计算机程序................................................................................... 54
3.3.2 计算机程序设计语言......................................................................55
第四章 程序设计基础 63
...............................................
项目范例 设计购买纪念品的最佳方案 64
4.1 程序设计语言的基础知识....................................................................66
4.1.1 Python的常量和变量.................................................................... 67
4.1.2 Python的数据类型....................................................................... 68
4.1.3 Python的运算符与表达式............................................................. 69
4.1.4 Python的函数...............................................................................71
4.2 运用顺序结构描述问题求解过程........................................................73
4.2.1 数据的输入与输出.........................................................................73
4.2.2 顺序结构的应用............................................................................ 74
2 2
41X1939-目录.indd 2 2021/3/11 11:06:09目录
4.3 运用选择结构描述问题求解过程........................................................76
4.3.1 if语句的应用................................................................................. 76
4.3.2 if...elif...else语句的应用................................................................ 80
4.4 运用循环结构描述问题求解过程........................................................85
4.4.1 for循环的应用 ................................................................................85
4.4.2 while循环的应用 ............................................................................88
4.4.3 循环嵌套的应用 .............................................................................90
4.4.4 循环控制的应用 .............................................................................93
第五章 数据处理和可视化表达 97
..................
项目范例 网络购物平台客户行为数据分析和可视化表达 98
5.1 认识大数据......................................................................................... 101
5.1.1 大数据....................................................................................... 101
5.1.2 大数据的特征............................................................................. 101
5.1.3 大数据对日常生活的影响............................................................ 103
5.2 数据的采集........................................................................................ 104
5.2.1 数据采集的方法和工具................................................................ 104
5.2.2 数据的存储和保护...................................................................... 107
5.3 数据的分析........................................................................................ 111
5.3.1 特征探索.................................................................................... 112
5.3.2 关联分析.................................................................................... 113
5.3.3 聚类分析.................................................................................... 115
5.3.4 数据分类.................................................................................... 116
5.4 数据的可视化表达............................................................................ 118
5.4.1 数据可视化表达的方式................................................................ 119
5.4.2 数据可视化表达的工具................................................................ 120
3 3
41X1939-目录.indd 3 2021/3/11 11:06:09目录
第六章 人工智能及其应用 125
.....................................................
项目范例 剖析空调企业智能客服机器人 126
6.1 认识人工智能..................................................................................... 129
6.1.1 人工智能.................................................................................... 129
6.1.2 剖析领域知识智能问答机器人...................................................... 130
6.1.3 人工智能的诞生与发展................................................................ 132
6.2 人工智能的应用................................................................................ 134
6.2.1 智能制造.................................................................................... 134
6.2.2 智能家居.................................................................................... 136
6.2.3 智能教育.................................................................................... 137
6.2.4 智能交通.................................................................................... 137
6.2.5 智能安防.................................................................................... 138
6.2.6 智能医疗.................................................................................... 138
6.2.7 智能物流.................................................................................... 140
..........................................
附录1 部分术语、缩略语中英文对照表 145
..................................................................
附录2 项目活动评价表 146
4 4
41X1939-目录.indd 4 2021/3/11 11:06:09
第一章
数据与信息
信息技术涵盖了获取、表示、传输、存储和加工信息在内
的各种技术。自电子计算机问世以来,信息技术沿着以个人计
算机为核心、到以互联网为核心、再到以数据为核心的发展脉
络,深刻影响着社会的经济结构和生产方式,加快了全球范围
内的知识更新和技术创新。信息技术与社会的交互融合引发了
数据量的迅速增长,数据对社会生产和人们生活的影响日益凸
显,并具有重要价值。
本章将通过“多媒体作品的数据与信息处理”项目,进行
自主、协作、探究学习,让同学们在具体感知数据与信息的基
础上,描述数据与信息的特征,知道数据编码的基本方式,从
而将知识建构、技能培养与思维发展融入运用数字化工具解决
问题和完成任务的过程中,促进信息技术学科核心素养达成,
完成项目学习目标。
数据及其特征
数据编码
信息及其特征
1 1
41X1939 第一章.indd 1 2021/3/11 11:07:10第一章体 数据与验信息 庆祝国庆多媒体作品的数据与信息处理
体验庆祝国庆多媒体作品的数据与信息处理
项目范例
情 境
自古以来,科学技术就以一种不可逆转、不可抗拒的力量推动着人类社会向前发展。
纪录片《创新中国》集中呈现了党的十八大以来中国的最新科技成就,科技创新让人民生
活更为便捷,让企业发展更具活力,让国家实力更加强大。2016年8月16日,世界首颗量
子科学试验卫星“墨子号”发射升空;2016年9月25日,500米口径球面射电望远镜——
“中国天眼”正式落成启用;2017年5月5日,装配超过20个系统、数百万个零件、攻克
100多项核心关键技术的国产商用大飞机C919首飞成功;2019年1月3日,我国月球探测
器“嫦娥四号”成功在月球背面着陆,这是人类探测器首次造访月球背面……一项项成
就,都实现了一次次历史性的飞跃,创新科技铸造的中国正成为世界瞩目的国度(图
1-1)。党的十九大让全世界都再次聚焦到中国新时代的宏伟蓝图上来。
图1-1 创新科技铸造的中国正成为世界瞩目的国度
国庆节快到了,学校百灵创意社团通过网络、报纸和书籍进一步了解《创新中国》中
介绍的伟大成就,并对获得成就的数据和信息进行相应的处理,创作庆祝国庆的多媒
体作品。
主 题
体验庆祝国庆多媒体作品的数据与信息处理
2 2
41X1939 第一章.indd 2 2021/3/11 11:07:12体验庆祝国庆多媒体作品的数据与信息处理 体验庆祝国庆多媒体作品的数据与信息处理
规 划
根据项目范例的主题,在小组中组织讨论,利用思维导图工具,制订项目范例的学习
规划,如图1-2所示。
图1-2 “体验庆祝国庆多媒体作品的数据与信息处理”项目学习规划
探 究
根据项目学习规划的安排,通过调查、案例分析、文献阅读和网上资料搜索,开展
“体验庆祝国庆多媒体作品的数据与信息处理”项目学习探究活动,如表1-1所示。
表1-1 “体验庆祝国庆多媒体作品的数据与信息处理”项目学习探究活动
探究活动 学习内容 知识技能
知道数据的概念,了解数据记
认识数据,了解各种数据
录方式发展的基本历程,学会数
的记录方式。 具体感知数据。
数据采集 据采集的基本方法和过程。
描述数据的基本特征。
分析数据应用实例。 描述数据的特征。
知道模拟信号与数字信号的含
比较模拟信号与数字信号。
义及其相互关系。
开展模拟信号的数字化实 体验数据编码的基本方法和过 知道数据编码的基本
数据编码
验活动。 程,了解数据编码的作用。 方式。
了解文本、图像等多种类型数
列举常见数据的编码方式。
据的编码方式。
3 3
41X1939 第一章.indd 3 2021/3/11 11:07:14第一章 数据与信息
(续表)
探究活动 学习内容 知识技能
知道信息的概念、信息的价
列举信息的不同定义,分
值,了解信息呈现的基本方法和
析事例中的信息。
具体感知信息。
过程。
信息呈现
描述信息的特征。
描述信息的基本特征,分析现
分析信息应用实例。
实生活事例的信息特征。
实 施
实施项目学习各项探究活动,进一步体验庆祝国庆多媒体作品数据与信息的处理。
成 果
在小组开展项目范例学习过程中,利用思维导图工具梳理小组成员在“头脑风暴”活
动中的观点,建立观点结构图,运用多媒体创作工具(如演示文稿、在线编辑工具等),
综合加工和表达,形成项目范例可视化学习成果,并通过各种分享平台发布,共享创造、
分享快乐。例如,运用在线编辑工具制作的“体验庆祝国庆多媒体作品的数据与信息处
理”可视化报告,可以在教科书的配套学习资源包中查看,其目录截图如图1-3所示。
图1-3 “体验庆祝国庆多媒体作品的数据与信息处理”可视化报告目录截图
4 4
41X1939 第一章.indd 4 2021/3/11 11:07:151.1 数据及其特征
评 价
根据教科书附录2的“项目活动评价表”,对项目范例的学习过程和学习成果在小组
或班级上进行交流,开展项目学习活动评价。
项目选题
同学们以3~6人组成一个小组,选择下面一个参考主题,或者自拟一个感兴趣的主
题,开展项目学习。
1.体验庆祝国庆录音作品的数据与信息处理
2.体验庆祝国庆摄影作品的数据与信息处理
3.体验庆祝国庆视频作品的数据与信息处理
项目规划
各小组根据项目选题,参照项目范例的样式,利用思维导图工具,制订相应的项目
方案。
方案交流
各小组将完成的方案在全班进行展示交流,师生共同探讨、完善相应的项目方案。
1.1
数据及其特征
互联网、大数据时代,人们可以通过计算机和移动终端,随时随地获取信息、了解社
会。例如,《创新中国》系列纪录片对收集的大量数据[包括图形、图像、视频、音频、
文本(文字、数字、数值、字符)]进行存储、挖掘和分析后,以多媒体记录新闻事件,
满足人们对信息直观化、可视化的需求。
1 . 1 . 1 数据
数据是现实世界客观事物的符号记录,是信息的载体,是计算机加工的对象。
在日常生活中,人们常使用符号来表达客观事物。例如,180 cm、70 kg、36.5 ℃可以
分别表示人体的身高、体重、体温情况,200 m2、600 m3、120 km/h可以分别表示物体的面
积、体积、速度情况。世界任何客观事物在人脑中的反映(意识)离不开符号的表达和基
5 5
41X1939 第一章.indd 5 2021/3/11 11:07:15第一章 数据与信息
于符号的逻辑推理。
在计算机科学中,数据是对所有输入计算机并被计算机识别、存储和处理的符号的总
称,是联系现实世界和计算机世界的途径。即现实世界的各种符号,包括图形、图像、视
频、音频、文本(文字、数字、数值、字符)等数值性和非数值性符号,都可以被计算机
转化为二进制数(如数字“180”在计算机中表示为10110100,字符“cm”在计算机中表
示为0110001101101101),进行各种逻辑运算,处理成有意义的数据;然后将计算机运算
的二进制数转换成现实世界的视、听、触等各种感觉的信息,如图1-4所示。
(a) 人使用符号表达客观 (b) 计算机用二进制数表达客观事
事物(如体育运动符号) 物(如表情 的部分二进制码)
图1-4
在大数据时代,数据不仅是信息的载体,也是人们提取信息、做出决策的重要依据,
成为人们认识和理解现实世界客观事物的重要资源。
探究活动
体 验
请同学们赏析庆祝国庆多媒体作品。图1-5是该作品的截图。
图1-5 庆祝国庆多媒体作品的截图
6 6
41X1939 第一章.indd 6 2021/3/11 11:07:161.2 数据编码
1 . 1 . 2 数据的基本特征
人们在探索现实世界时,用数据记录自然现象与社会的发展。寻找数据的基本特
征和规律,就是探索与揭示自然和社会的发展规律。在计算机科学中,数据具有如下基
本特征:
(1)二进制。在计算机中,数据以二进制的形式存储、加工。
(2)语义性。语义是将数据符号解释为客观世界的事物。
(3)分散性。数据是分散的记录,分别记录不同客观事物的运动状态。
(4)多样性与感知性。数据记录的形式是多样的、可看的、可听的、可感知的,如
图形、图像、视频、音频、 文本等。
讨 论
以小组为单位,查阅并分享体现数据基本特征的例子,同时讨论数据还有哪些特征。
项目实施
各小组根据项目选题及拟订的项目方案,结合本节所学知识,开展以下活动。
1. 完成相应作品录音、录像或扫描图像等数据的采集和分析。
2. 总结与记录数据采集和分析的方法。
1.2
数据编码
将现实世界的事物现象符号化、数据化,需要有一个理解、抽象、推理的过程,这个
过程由计算机来完成。计算机将它们处理转换成0和1组成的二进制编码,进而采用基于二
进制的算术运算和逻辑运算进行处理。
1 . 2 . 1 模拟信号与数字信号
众所周知,声、光信号是人的感官所能识别和接收的信号,而计算机是一种采用电信
号进行运作的机器。要将人的感官所能识别的信号转换为计算机能够识别的信号,实现人
7 7
41X1939 第一章.indd 7 2021/3/11 11:07:16第一章 数据与信息
机交互,就必须清楚计算机是如何处理这些信号的。
1. 模拟信号
模拟信号是指用连续变化的物
理量所表达的信息。其信号的幅
度、频率或相位随时间作连续变
化,如声音信号、图形信号等。
模拟信号的波形可以是简单的,
也可以是复杂的。例如,由单一钢琴
定音器产生的声波,就是简单波形,
仅仅包括一个单一频率(图1-6);
图1-6 单一频率波形示意图
人类或管风琴的声音产生的声波,就
是复杂波形,包含了许多不同频率的组合(图1-7)。
图1-7 多频率组合波形示意图
模拟信号是传导能量的一种方式。例如,声波通过空气等介质来向远处传送能量,在
传播的过程中,能量会不断被损耗而逐渐衰减,
如图1-8所示。
无论是有线相连的电话,还是无线发送的广
播电视,都是通过模拟信号来传递信息的。
2. 数字信号
数字信号是离散时间信号的数字化表示。其
信号的自变量、因变量都是离散的。例如,开关
电路中输出电压和电流脉冲就是离散的信号,如
图1-9所示。 图1-8 模拟信号的衰减示意图
8 8
41X1939 第一章.indd 8 2021/3/11 11:07:171.2 数据编码
图1-9 离散的脉冲信号
在计算机中,数字信号的大小常用有限位的二进制数表示。例如,字长为2位的二进
制数可表示00、01、10和11四种数字信号。
尽管基于数字信号的数据通信才出现几十年,但因其抵抗电路本身干扰和环境干扰的
能力强,且数字信号有利于存储、加密与纠错,从而具有较强的保密性和可靠性。因此在
现代技术的信号处理中,数字信号发挥的作用越来越大,覆盖的范围越来越广。
探究活动
分 析
分析、比较模拟信号与数字信号在通信应用中的优劣,用简洁的文字将结论填入表
1-2中。
表1-2 模拟信号与数字信号比较
名称 优点 缺点
模拟信号
数字信号
进行远距离传送时用哪种信号比较好?
实 验
在航海灯语系统中,灯语是一种通信手段,用灯光一明一暗的间歇做出长短不同的信
号来传递信息。在古代,灯语对人们之间的交流起到很大的作用。随着科技的发展,灯语
已经通过计算机网络实现了灯光信号的自动发送、获取和识别。
1. 实验名称:用手电筒传递信息。
2. 实验目的:了解灯语的使用场景,理解数据编码的必要性。
9 9
41X1939 第一章.indd 9 2021/3/11 11:07:17第一章 数据与信息
3. 实验步骤:
(1)两人一组,一人控制手电筒开关,按照莫尔斯码发送一组字母,另一人观察手
电筒发出的光信号,记录数据,并使用莫尔斯码译出这组字母。
(2)双方核对信息,多次重复实验。
(3)通过分析实验数据,总结该方法传递信息的利弊,提出改进方法。
(4)设计一套自己的灯语,用“密码”传送信息。
1 . 2 . 2 编码的基本方式
在现代技术的信号处理中,数据基本上是通过编码将模拟信号转换为数字信号进行存
储和传输,文字、图像、声音等类型的数据都可经过编码进行存储和传输。
1. 文字编码
文字(字符)编码是效率相对较低的编码方式,有单字节码和双字节码两种。其中,
ASCII码、莫尔斯码属于单字节码,国标码(GBK)、统一码(Unicode)属于双字节码。
(1)ASCII码。
ASCII码(American Standard Code for Information Interchange)是美国信息交换标准代
码,用8位二进制码为所有的英文字母(大小写52个)、阿拉伯数字(10个)和常用的不
可见控制符(33个)以及标点符号、运算符号等(33个)建立了转换码,将符号转换为
“0”和“1”构成的编码。从表1-3可知,英文字母A和a的编码分别为01000001(十进制
数65)和01100001(十进制数97)。
表1-3 ASCII码表
二进制 0000 0001 0010 0011 0100 0101 0110 0111
0000 NUL DLE 空格 0 @ P ` p
0001 SOH DC1 ! 1 A Q a q
0010 STX DC2 " 2 B R b r
0011 ETX DC3 # 3 C S c s
0100 EOT DC4 $ 4 D T d t
0101 ENQ NAK % 5 E U e u
0110 ACK SYN & 6 F V f v
0111 BEL ETB ‘ 7 G W g w
10 10
41X1939 第一章.indd 10 2021/3/11 11:07:171.2 数据编码
(续表)
1000 BS CAN ( 8 H X h x
1001 HT EM ) 9 I Y i y
1010 LF SUB * : J Z j z
1011 VT ESC + ; K [ k {
1100 FF FS , < L \ l |
1101 CR GS - = M ] m }
1110 SOH RS . > N ^ n ~
1111 SI US / ? O _ o DEL
思 考
在计算机中,英文字母、数字、符号等都可用ASCII码来表示,如大写字母“C”
的编码为8位二进制数01000011,数字“9”的编码为00111001等。可是,中文却难以用
ASCII码来表示。如果要设计一套汉字的编码系统,可以如何进行?仿照ASCII编码系统的
方法,描述大致的设计思路,并在小组内交流。
仿照ASCII码,描述设计思路:
(2)国标码。
由于ASCII码只包含英文、数字和一些控制符号,并不能表示汉字,因此,我国设计
了用于处理汉字的简体中文的GB码和用于繁体中文的BIG5码(大五码)。
1980年发布的《信息交换用汉字编码字符集》(GB 2312)一共收录了7445个字符,
包括6763个汉字和682个其他符号。GB 2312主要分为两部分:编号127之前的符号跟ASCII
码所表示的意义相同,属于单字节码;编号127之后的符号统一用两个字节表示,包含了
几乎所有的简体中文字(中文编码高字节的最高位不为0)。
1995年公布的《汉字内码扩展规范》(GBK 1.0)收录了21 886个符号,分为汉字区
和图形符号区,汉字区包括21 003个字符。
11 11
41X1939 第一章.indd 11 2021/3/11 11:07:17第一章 数据与信息
2. 图像编码
图像编码是指在满足一定保真度的条件下,对图像数据进行变换、编码和压缩,以较
少比特数表示图像或图像中所包含的信息的技术。
我们以位图(Bitmap)为例来说明图像的编码原理与方法,以及图像文件的大小计算
方法。
(1)位图图像编码。
位图,最小单位为光栅点(或称像素),因而也叫作点阵图(或像素图)。
位图采用位映射存储格式,即将每一个像素映射为一个数据,存放在以字节为单位
的矩阵中。例如,在如图1-10所示的黑白图像中,共有32×2个像素,如果将黑、白像
素分别映射为1和0,就表示为11111111,00000110,10000110,11111111,10000001,
01100011,01111100,10000001,这就是该黑白图像的二进制编码。通常图像编码采用16
进制编码,因而图1-10的编码为“FF,06,86,FF,81,63,7C,81”。
图1-10 每一个像素只有两种可能性的黑白图像
(2)位图文件大小。
在计算机二进制数系统中,每个0或1就是一个位(bit,数据存储的最小单位),8个
位就称为一个字节(Byte)。
黑白图像,每一个像素有2种可选颜色(黑、白),称为1位图像。因此,图1-10中所
包含的图形数据为32×2÷8=8个字节。
16色图像,每一个像素有16种可选颜色,称为4位图像(24=16);256色图像称为8位
图像(28=256);24位图像的可选颜色更丰富,为224种。
实际上,一个位图文件除了包含图形数据,还包括文件头、位图信息头、颜色信息、
图形数据等几部分。
①文件头:包含文件的类型、大小和位图起始位置等信息,共14个字节。
②位图信息头:用于说明位图的尺寸等信息,占40个字节。
③颜色信息:用于说明位图中的颜色,有若干个表项,每一个表项定义一种颜色。当
图像量化位数为1、4、8时,分别有2、16、256种颜色,每个颜色表项占4个字节;当图像
量化位数为24时,没有颜色表项。
④图形数据:记录位图的每一个像素值,其记录顺序先从左到右,再从下到上。
一般情况下,位图文件所占用的空间可按以下公式计算:
文件的大小=文件头+信息头+颜色表项+图像分辨率×图像量化位数÷8
其中,图像分辨率=图像x方向的像素数×图像y方向的像素数。图像量化位数,也叫
图像深度,是指图像中每个像素点记录颜色所用二进制数的位数。
12 12
41X1939 第一章.indd 12 2021/3/11 11:07:171.2 数据编码
3. 声音编码
对声音进行数据编码,必须经过前期的数据采样和数据量化。
(1)采样。采样就是把输入的模拟信号按适当的时间间隔得到各个时刻的样本值,
使其转换为时间上离散、幅度上连续的脉冲信号。
根据奈奎斯特(Harry Nyquist,物理学家,1889 —1976)采样定理,如果以一定时间
间隔对某个信号 f(t)进行采样,并且采样频率高于该信号最高频率的两倍,则采样值包
含了原信号的全部信息,如图1-11所示。
图1-11 奈奎斯特采样定理示意图
对于音频信号,常用的采样频率有三种:44.1 kHz、22.05 kHz和11.025 kHz。
(2)量化。量化是把样值信号的无限多个可能的取值,近似地用有限个数的数值来
表示。首先是将采样信号幅度划分为若干量化等级(国标声音量化等级分为256个,即28
个),然后将采样后的信号幅度与所划分的各个量化等级进行比较,向下取最接近的量化
等级的数值,如图1-12所示。
图1-12 脉冲幅度调制信号的量化
(3)编码。编码是将量化后的采样值用二进制数码表示,并转换为由二进制编码0和
1组成的数字信号。模拟信号采样后可用8位二进制数表示,最高位表示符号,正数为0,
负数为1。例如,采样值48的二进制编码为00110000,-100的二进制编码为11100100,如
表1-4所示。
1313
41X1939 第一章.indd 13 2021/3/11 11:07:18第一章 数据与信息
表1-4 声音信号的数据编码
模拟量 26 45 48 40 14
编码 00011010 00101101 00110000 00101000 000010110
模拟量 -51 -100 -50 44 127
编码 10110011 11100100 10110010 00101100 01111111
模拟量 125 105 90 78 65
编码 01111101 01101001 01011010 01001110 01000001
编码时采用的二进制位数越多,数据量越大,占用的存储空间也越大。以声音信息为
例,其存储空间遵循如下公式:
声音存储空间=采样频率×量化位数×声道数×时间÷8
例如,采样频率为44.1 kHz、量化位数为16位的立体声,1秒声音所需字节数为
44.1×1000×16×2×1÷8=176 400(B)。
编码后的信号可以实现无差错的数据传输,如图1-13所示。
图1-13 数字信号的传送
讨 论
各小组讨论如何减少声音信号还原时的失真,提高声音的保真度。提出改进方案后,
继续实验探索,直到得出结论。
实 践
1.有一幅24位的位图图像,像素为1024×800。试确定其数据文件的大小。
2.若将上述图像另存为256色位图图像,则文件大小为多大?
3.试上网查询有关视频编码的知识,了解视频是如何被编码的。
实际上,不仅文字、图像、声音等类型的数据可以被编码,视频等数据也都可以被编
码成数据文件。
程序设计,简称编程,也属于编码,是运用程序设计语言,实现人机交互,提高计算
机应用效率,为实现操作程序化要求所进行的编码。有关程序设计的内容将在后续章节中
学习。总之,编码是数据存储及其表现的基础,也是人们认识世界的基础。
14 14
41X1939 第一章.indd 14 2021/3/11 11:07:191.2 数据编码
拓 展
布尔代数与图灵机
现实世界的任何事物,如果用计算系统进行识别、存储和计算,首先需要将其符号
化。所谓符号化,是指将现实世界的任何事物用符号表达,进而进行基于符号的计算的一
种思维方式。将事物表达为不同的符号,便可采用不同的工具(或数学方法)进行计算;
将符号赋予不同事物的意义,则能计算不同的现实世界问题。
所谓逻辑,是指事物因果之间所遵循的规律,是现实中普遍的思维方式。布尔在汲取
亚里士多德和莱布尼茨形式逻辑符号化思想的基础上,创立了用0和1表达、处理现实中命
题判断与推理(1表示真/0表示假)的基于二进制逻辑的代数系统,为电子计算机的开关
电路设计提供了重要的数学方法和理论基础。
二进制由0和1两个数码组成,逢2进1,借1当2,第i数位的权值为2i
-1
。之所以青睐二
进制,是因为:①二进制算术运算规则简单;②二进制算术运算可以与逻辑运算实现统
一,或者说可以用逻辑运算实现算术运算;③能表示两种状态的元器件容易找到,如继电
器开关、灯泡、二极管或三极管等。因此,计算机硬件存储和处理的是二进制数。
20世纪30年代,图灵提出了图灵机模型,直观且形象地说明了通用计算机器的工作机
理,建立了指令、程序及通用机器执行程序的理论模型,奠定了计算理论的基础。图灵
认为,所谓计算就是计算者(人或机器)对一条两端可无限延长的纸带上的一串0或1执行
指令,一步一步地改变纸带上的0或1,经过有限步骤,最后得到一个满足预先规定的符号
串的变换过程,如图1-14所示。数据被制成一串0和1的纸带送入机器中,作为输入,如
0001000001000011…机器可对输入纸带执行的基
本动作包括翻转0为1,或翻转1为0,前移一位,
停止。机器对基本动作的执行是由指令来控制
的,机器是按照指令的控制选择执行哪个动作,
指令也可以用0和1来表示:01表示翻转0为1(当
输入为1时不变),10表示翻转1为0(当输入0时
不变),11表示前移一位,00表示停止。输入如
何变为输出的控制可以用指令编写一个程序来
完成,如011110110111011100。机器能够读取程
序,按程序中的指令顺序读取指令,读一条指令
执行一条指令,由此实现自动计算。因此可以
说,图灵机就是一个最简单的计算机模型,图灵
机将控制处理的规则用0和1表达,将待处理的信
图1-14 图灵机模型
息及处理结果也用0和1表达,处理即是对0和1的
变换,这样可以用机械或电子系统实现。
1515
41X1939 第一章.indd 15 2021/3/11 11:07:19第一章 数据与信息
项目实施
各小组根据项目选题及拟定的项目方案,结合本节所学知识,掌握数据的编码过程。
1. 分析常见编码方式与相应作品数据的编码过程。
2. 总结与记录数据编码的方法和步骤。
1.3
信息及其特征
在互联网时代,数据正以越来越快的速度不断增长。移动电话、社交媒体和用于
医疗诊断的影像技术等新业务,每天都会产生大量新数据。从这些数据中分析并提炼
出有用的信息,将为人们的日常生活带来便利,并对推进科技、生产和社会的发展有
重大意义。
1 . 3 . 1 信息
信息是经过加工处理的、具有意义的数据。信息是对客观世界中各种事物的运动状态
和变化的反映,是客观事物之间相互联系和相互作用的表征。人们通过获得、识别自然界
和人类社会的不同信息来区别不同事物,得以认识和改造世界。
探究活动
交 流
结合生活实际中的例子,在小组内交流信息和数据的区别与联系。
1 . 3 . 2 信息的基本特征
信息在人类社会活动中发挥着重要的作用,因而受到人们高度重视。那么,信息具有
哪些特征?对人类活动又产生了什么影响?
(1)普遍性。信息不是虚无缥缈的事物,只要有事物运动,有数据存在,就会有信
息存在。信息普遍存在于自然界和人类社会发展的始终,可以被人们感知、获取、传递和
利用。
16 16
41X1939 第一章.indd 16 2021/3/11 11:07:191.3 信息及其特征
(2)传递性。信息的传递打破了时间和空间的限制。例如,我们可以借助计算机、
网络、手机等工具了解发生在世界各地的许多事情。
(3)共享性。信息作为一种资源,通过交流可以在不同个体或群体间共享。信息交
流与实物交流有本质上的不同:实物交流,一方有所得,另一方必有所失。例如,两个
人交换手中的一个苹果,每人得到的是对方的那一个苹果。而信息交流则不然,两个人
交换则都拥有了两份信息。因此,人们悟出以下道理:分享、沟通与行动是将知识转化为
智慧的关键。
(4)依附性和可处理性。各种信息必须依附一定的图像、文字、声音等符号才能够
表现出来,为人们所接收,并按照某种需要进行处理和存储。信息经过分析和处理,往往
会产生新的信息,使信息得到增值。
(5)时效性。信息不是一成不变的东西,会随着客观事物的变化而变化。如果信息
不能反映事物的最新变化状态,它的效用就会降低,一旦超过其“生命周期”,信息就失
去原有的效用,成为历史记录。
(6)真伪性。人们接收到的信息,并不都是对事物的真实反映,因此,信息具有真
伪性。产生伪信息的原因很多:有些是出于某种目的,被人故意采用窜改、捏造、欺骗、
夸大等手段人为制造的;有些是由于人们的认识能力或表达能力不足导致的;有些则是传
递过程中的失误造成的。因而,对信息的真伪性需要加以鉴别。
(7)价值相对性。信息作为一种特殊的资源,具有相应的使用价值,能够满足人们
某些方面的需要。但信息使用价值的大小是相对的,取决于接收信息者的需求及其对信息
的理解、认识和利用的能力。
拓 展
香农与信息论
关于文字、数字、图形、声音的知识已有几千年历史了。但是它们的总称是什么,如
何统一地计量,直到19世纪末还没有被正确地提出来,更谈不上如何去解决了。20世纪初
期,随着电报、电话、照片、电视、无线电、雷达等技术的发展,如何计量信号中信息量
的问题被隐约地提上日程。
克劳德·艾尔伍德·香农(Claude Elwood Shannon ,1916—2001)是美国数学家、信
息论的创始人。他先后发表了论文《通信的数学原理》和《噪声下的通信》,系统论述了
信息的定义、怎样数量化信息、怎样更好地对信息进行编码等通信的基本问题,给出了信
息熵的概念和通信系统的模型,提出了信息量的数学表达式,并解决了信道容量、信源统
计特性、信源编码、信道编码等一系列基本技术问题,为信息论和数字通信奠定了基础。
香农被誉为“信息论之父”。
香农在引入熵(指体系的混乱的程度)的概念进行信息的定量计算的时候,明确地把
信息量定义为随机不确定性程度的减少。这就表明了他对信息的理解,即信息是用来减少
随机不定性的东西,或信息是确定性程度的增加。
1717
41X1939 第一章.indd 17 2021/3/11 11:07:19第一章 数据与信息
项目实施
各小组根据项目选题及拟订的项目方案,结合本节所学知识,了解信息及其基本特
征,进一步完善该项目方案中的各项学习活动,并参照项目范例的样式,撰写相应的项目
成果报告。
成果交流
各小组运用数字化学习工具,将所完成的项目成果,在小组或班级上进行展示与交
流,共享创造、分享快乐。
活动评价
各小组根据项目选题、拟订的项目方案、实施情况以及所形成的项目成果,利用教科
书附录2的“项目活动评价表”,开展项目学习活动评价。
18 18
41X1939 第一章.indd 18 2021/3/11 11:07:20本章扼要回顾
本章扼要回顾
同学们通过本章学习,根据“数据与信息”知识结构图,扼要回顾、总结、归纳学过
的内容,建立自己的知识结构体系。
回顾与总结
1919
41X1939 第一章.indd 19 2021/3/11 11:07:22第一章 数据与信息
本章学业评价
同学们完成下列测试题(更多的测试题可以在教科书的配套学习资源包中查看),并
通过“本章扼要回顾”以及本章的项目活动评价,综合评价自己在信息技术知识与技能、
解决实际问题的过程与方法,以及相关情感态度与价值观的形成等方面,是否达到了本章
的学习目标。
1.单选题
(1)数据是现实世界原始事物现象的( ),是信息的载体。
A. 符号记录 B. 还原 C. 反映 D. 提升
(2)下列编码方式中,属于图像编码的是( )。
A. ASCII码 B. GBK C. 图像压缩 D. 统一码
(3)有人写了一个数制转换的式子:70-25=41。若要使该等式成立,则70、25、41
有可能分别为( )。
A.十进制、十进制、十六进制 B.十进制、十六进制、八进制
C.十六进制、八进制、十进制 D.八进制、八进制、十六进制
2.思考题
在信息时代如何判别信息的真伪?谈谈你的方法或经验。
3.情境题
数据压缩。
RLE(Run-Length Encoding,行程长度编码)是一种编码方式,也是一种简单的无损
压缩法,压缩和解压缩效率高。
RLE压缩法:利用控制字节的最高位来标识是否进行了压缩。当最高位为1时,则后
面7位表示的是数据的重复次数;当最高位为0时,则后面7个位的数是被压缩的数据。
例如,如果有15个十六进制数都是30,那么,压缩后的编码为8F 30。
说明:十六进制数8F转换为二进制是10001111,最高位是1,后面的7位0001111表示
字节的重复次数15;十六进制数30转换为二进制是00110000,最高位是0,30是被重复的
数据。采取这种方法,一个字符只有重复两次以上,才能被压缩。即使一个数据只重复3
次,也可以获得30%的压缩比。
问题1:如果经过RLE方法压缩后的数据为8A 6F,那么解压缩前的数据是什么?
问题2:根据RLE压缩方法,下列字符数据经过压缩后的数据是什么?
20,30,30,30,35,35,…,35,64。其中,十六进制数30共有3个,35共有60个。
20 20
41X1939 第一章.indd 20 2021/3/11 11:07:22
第二章
知识与数字化学习
在人类文明的历史长河中,无论是描述自然现象的实验科
学、以牛顿运动定律和麦克斯韦方程等为代表的理论科学,还
是模拟复杂现象的计算科学以及数据密集型科学,数据和处理
数据的工具都始终驱动着人类文明和社会向前发展。
本章将通过“运用数字化工具探究知识”项目,进行自
主、协作、探究学习,让同学们体验数字化学习过程,理解数
据、信息与知识的相互关系,感受利用数字化工具和资源的优
势,从而将知识建构、技能培养与思维发展融入运用数字化工
具解决问题和完成任务的过程中,促进信息技术学科核心素养
达成,完成项目学习目标。
知识与智慧
数字化学习与创新
2121
41X1939 第二章.indd 21 2021/3/11 11:12:08运用数字化工具探究数理知识
第二章 知识与数字化学习
运用数字化工具探究数理知识
项目范例
情 境
未来教室里,教师们运用Python、思维导图、网络画板(图2-1)等各类数字化学习
工具进行个性化教学,使教学更加形象、直观、易懂;同学们利用数字化学习工具进行个
性化学习,不仅可以开阔视野、开发思维、启迪智慧,而且可以直观地感受知识形成的过
程,提高学习效率。
网络画板
思维导图
图2-1 未来教室里的数字化学习工具
主 题
运用数字化工具探究数理知识
规 划
根据项目范例的主题,在小组中组织讨论,利用思维导图工具,制订项目范例的学习
规划,如图2-2所示。
22 22
41X1939 第二章.indd 22 2021/3/11 11:12:09运用数字化工具探究数理知识
运用数字化工具探究数理知识
图2-2 “运用数字化工具探究数理知识”项目学习规划
探 究
根据项目学习规划的安排,通过调查、案例分析、文献阅读和网上资料搜索,开展
“运用数字化工具探究数理知识”项目学习探究活动,如表2-1所示。
表2-1 “运用数字化工具探究数理知识”项目学习探究活动
探究活动 学习内容 知识技能
根据观察的现象,选择实验仪器,合
收集实验数据。 理设计实验。
体验数字化学习过程,
操作仪器收集实验数据,并记录数据。 熟练运用数字化工具收
探究电流与 根据记录的实验数据,运用Python的 集和储存数据。
电压、电阻的 分析数据,建立 绘图功能,制作散点图。 理解数据、信息与知
关系 识的相互关系。
模型。 通过观察、分析、猜想和试探,选择
认识到数据对人们日
趋势线的类型,形成探索性模型。
常生活的影响。
再次进行实验,收集数据验证探索性
实验验证模型。
模型。
用“网络画 可以根据问题,选择适当的数字化学
利用数字化工具 感受利用数字化资源
板”体验投针 习工具。
进行数学实验。 和工具的优势。
实验 利用数字化工具,开展学习活动。
2323
41X1939 第二章.indd 23 2021/3/11 11:12:10第二章 知识与数字化学习
实 施
实施项目学习各项探究活动,进一步运用数字化工具探究数理知识。
成 果
在小组开展项目范例学习过程中,利用思维导图工具梳理小组成员在“头脑风暴”活
动中的观点,建立观点结构图,运用多媒体创作工具(如演示文稿、在线编辑工具等),
综合加工和表达,形成项目范例可视化学习成果,并通过各种分享平台发布,共享创造、
分享快乐。例如,运用在线编辑工具制作的“运用数字化工具探究数理知识”可视化报
告,可以在教科书的配套学习资源包中查看,其目录截图如图2-3所示。
图2-3 “运用数字化工具探究数理知识”可视化报告目录截图
评 价
根据教科书附录2的“项目活动评价表”,对项目范例的学习过程和学习成果在小组
或班级上进行交流,开展项目学习活动评价。
项目选题
同学们以3~6人组成一个小组,选择下面一个参考主题,或者自拟一个感兴趣的主
题,开展项目学习。
24 24
41X1939 第二章.indd 24 2021/3/11 11:12:122.1 知识与智慧
1. 运用数字化工具探究化学知识
2. 运用数字化工具探究生物知识
3. 运用数字化工具探究地理知识
项目规划
各小组根据项目选题,参照项目范例的样式,利用思维导图工具,制订相应的项目
方案。
方案交流
各小组将完成的方案在全班进行展示交流,师生共同探讨、完善相应的项目方案。
2.1
知识与智慧
在人类的生产、生活和研究活动中,人们会不断学习、总结、发现认识自然、探究
规律的方法。“做实验→获取观察数据→分析处理数据→推理建立数学模型→实验验证
模型→形成知识→应用知识解决问题”是一条非常有效的知识发现路径。
2 . 1 . 1 知识
知识是人们运用大脑对获取或积累的信息进行系统化地提炼、研究和分析的结果,能
够精确地反映事物的本质。它来源于实践,经过加工提炼,又高于实践。
探究活动
实 验
欧姆在研究电流与电压、电阻关系的实验中利用了控制变量法,即保持电压不变,探
究电流和电阻的关系;或保持电阻不变,探究电流和电压的关系。
下面我们运用Python工具,利用控制变量法采集实验数据,研究当导体电压保持不变
时,通过导体的电流随导体电阻变化的规律。
2525
41X1939 第二章.indd 25 2021/3/11 11:12:12第二章 知识与数字化学习
1. 实验仪器
电压表、电流表、电池、开关、导线、滑动变阻器和10个不同阻值的电阻。
2.实验步骤
(1)收集实验数据。
①连接电路图如图2-4所示。连接电路时注意:接
线时开关要断开;闭合开关前,滑动变阻器的滑片要滑
到最大阻值处。
②把电阻 R (记下阻值)接入电路,移动滑动变阻
1
器的滑片,使电压表示数U=3 V,记录电流表示数 I 。
1
③把电阻 R 换成电阻 R (记下阻值),再次移动滑
1 2
动变阻器的滑片,使电压表示数U=3 V,记录电流表示
图2-4 欧姆定律实验简化示意图
数 I。
2
④如此类推,把电阻 R 换成电阻 R ,再次移动滑片,使电压表示数U=3 V,记录电流
9 10
表示数 I 。
10
所得到实验数据如表2-2所示。
表2-2 欧姆定律实验的观察数据
电阻R/Ω 5 10 15 20 25 30 35 40 45 50
电流I/mA 586 291 198 143 101 98 72 68 59 55
(2)运用Python工具处理数据,绘制图像。
①绘制散点图。可以从教科书配套学习资源包中安装Python解释器Jupyter notebook,
运行配套学习资源包“第二章\课本素材\绘制散点图”程序,把表2-2中的数据输入程序
中,执行程序后得到如图2-5所示的电流 I 与电阻 R 关系数据散点图。
②在“绘制散点图”程序中加上指令“plt.plot(x0,y0)”,执行程序后,得到如图
2-6所示的电流 I 与电阻 R 关系数据曲线图。
图2-5 电流 I 与电阻 R 关系数据散点图 图2-6 电流 I 与电阻 R 关系数据曲线图
26 26
41X1939 第二章.indd 26 2021/3/11 11:12:122.1 知识与智慧
③观察电流 I 与电阻 R 关系数据曲线
图后,可以猜想电流 I 与电阻 R 的关系是
反比例关系,于是按 I = 的关系对数据
做曲线拟合。打开配套学习资源包“第
二章\课本素材\曲线拟合”程序,执行
程序后得到如图2-7所示的电流I与电
阻 R 关 系 数 据 曲 线 拟 合 图 。 其中,
U=2905.67607341 mV与电压表的示数基
本吻合,即I = 。
④经过推理和实验验证,电流 I 与电
阻 R 反比例关系成立,即 I = 。
从以上实验数据的采集、分析、建模
和验证过程可以知道,知识的发现不仅可
以通过实验、观察和总结为特征的方法获
取,还可以通过直接观察获取数据,对数
图2-7 电流 I 与电阻 R 关系数据曲线拟合图
据进行分析,进而发现规律,获得知识。
2 . 1 . 2 智慧
在日常生活中,我们要调节台灯的亮度、电视机音量的大小,都要应用欧姆定律的
知识,设计一个可变电阻,去调节它们的变化。
探究与应用欧姆定律,揭示了数据、信息、知识和智慧的相互关系(图2-8):数据是现
实世界客观事物的符号记录;信息是经加工处理的、具有意义的数据;知识是人们运用大脑
对获取或积累的信息进行系统化地提炼、研究和分析的结果,能够精确地反映事物的本质;
智慧是为了达到预定目标而运用知识解决问题的创新思维能力。
图2-8 数据、信息、知识和智慧的相互关系
2727
41X1939 第二章.indd 27 2021/3/11 11:12:13第二章 知识与数字化学习
数据、信息、知识和智慧是逐渐递进的概念,前者是后者的基础和前提,后者是前者
的抽象与升华。从数据到信息的转化,主要理解数据间的相互联系;从信息到知识的转
化,主要理解信息间的相互联系,发现和抽象其规律;从知识到智慧的转化,主要理解和
应用知识原理与法则解决现实世界的问题。
讨 论
举例说明数据、信息、知识和智慧的相互关系。
拓 展
科学研究的第三种方法——计算方法
科学研究主要依靠理论方法和实验方法。理论方法是指以数学学科为代表,以推
理和演绎为特征的方法。研究人员通过构建分析模型和理论推导进行规律预测与发
现。实验方法是指以物理学科为代表,以实验、观察和总结为特征的方法。研究人员
通过直接观察获取数据,对数据进行分析,进而发现规律,获得知识。
随着移动互联网和物联网的飞速发展,现实世界的各种事物都变得可感知、可度量,
从而生成数量庞大的数据或数据群,基于庞大数据形成的仿真系统成为可能。因此,依靠
计算发现和预测规律成为与理论方法和实验方法并存的科学研究的第三种方法。研究人员
通过建立仿真的分析模型和有效的算法,利用计算工具来进行规律发现和预测。
依靠计算方法发现和预测规律已成为不同学科的科学家进行研究的重要方法。例如,
生物学家利用计算方法研究生命体的特性,化学家利用计算方法研究化学反应的机理,建
筑学家利用计算方法来研究建筑结构的抗震性,社会学家利用计算方法研究社会群体网络
的各种特性等。
由此,计算方法与各学科结合形成了所谓的计算科学,如计算物理学、计算化学、计
算生物学、计算经济学等。
著名的计算机科学家、1972年图灵奖得主Edsger Dijkstra说:“我们所使用的工具影响
着我们的思维方式和思维习惯,从而也深刻影响着我们的思维能力。”
研究人员在利用计算方法进行创新研究的同时,也在不断地研究新型的计算方法。
这种结合不同专业的新型计算方法的研究需要专业知识与计算思维的结合。1998年,John
Pople便因成功地研究出量子化学综合软件包Gaussian而获得诺贝尔奖,Gaussian已成为研究
化学领域许多课题的重要的计算方法。另一个典型的计算方法是求解应力或疲劳等结构力
学、多物理场耦合的有限元分析方法。利用先进的计算方法的虚拟现实、增强现实等技术
也在各个领域创造出令人惊喜的视觉效果。
28 28
41X1939 第二章.indd 28 2021/3/11 11:12:132.2 数字化学习与创新
项目实施
各小组根据项目选题及拟订的项目方案,结合本节所学知识,了解科学研究的思维方
法与步骤。
1. 体验实验数据收集、分析、建模和验证的过程。
2. 总结归纳科学研究的思维方法与步骤。
2.2
数字化学习与创新
数字化学习与创新是指个体通过评估并选用常见的数字化资源与工具,有效地管理
学习过程与学习资源,创造性地解决问题,从而完成学习任务,形成创新作品的能力。具
备数字化学习与创新能力的学生,能够认识数字化学习环境的优势和局限,适应数字化学
习环境,养成数字化学习与创新的习惯;掌握数字化学习系统、学习资源与学习工具的操作
技能,用于开展自主学习、协同工作、知识分享与创新创造,助力终身学习能力的提高。
2 . 2 . 1 数字化工具与资源及其优势
1. 数字化工具与资源
数字化工具是指能够采集、获取、检索、表示、传输、存储和加工多媒体数字化资源
的设备装置。按其功能不同,数字化工具可大致分为以下几种:
(1)数据采集(模数转换)工具。如声卡、视频卡、数码照相机、数码录像机、手
写板、扫描仪等。
(2)信息获取工具。如台式电脑、笔记本电脑、平板电脑和手机等。
(3)信息检索工具。如搜索引擎和电子词典等。
(4)数字化可视化表达工具。如思维导图和演示文稿等。
(5)信息通信交流与传输工具。如电子邮件、博客、社交软件和视频会议系统等。
(6)信息存储工具。如光盘、U盘、硬盘和服务器等。
(7)信息加工工具。如编程软件、多媒体制作软件、网站制作工具和信息系统制作
工具等。
(8)三维设计工具。如3D制作软件、3D打印机、虚拟现实和增强现实制作系统等。
数字化资源是指经过数字化工具处理,可以在多媒体计算机上或网络环境下运行的,
且可以实现共享的多媒体材料。按其呈现方式不同,数字化资源可分为数字图形、图像、
2929
41X1939 第二章.indd 29 2021/3/11 11:12:13第二章 知识与数字化学习
视频、音频、文本,多媒体应用软件、网站、信息系统(数字图书馆、科技馆、博物馆
等),计算机模拟、数据文件、数据库等。
2. 数字化工具与资源的优势
(1)获取的便捷性。
利用数字化工具与资源学习的学习者可以不受时空和传递呈现方式的限制,通过多种
设备,使用各种学习平台获得高质量课程相关信息,可以实现信息的传送、接收、共享、
组织和储存。
(2)形式的多样性。
数字化工具与资源以电子数据的形式表现信息内容,其主要的媒体呈现形式有文本、
图像、声音、动画、视频等,极大地丰富了信息内容的表现力。除此之外,其友好的交互
界面、超文本结构极大地方便了学习者的学习,虚拟仿真的应用也更有助于学习者对知识
的记忆与理解。
(3)资源的共享性。
数字化工具与资源具有共享性属性,可以不断地反复利用、复制、传递和再生,为广
泛的使用者所享有,而信息量不变。
(4)平台的互动性。
数字化工具与资源和传统的学习工具与资源相比较,其最大的优势在于互动性。无论
是通过网络媒介进行的学习方式,还是通过光盘等进行的学习方式,其双向交流的互动方
式正得到越来越多学习者的喜爱。一方面,学习者可以通过网络上的交流工具,实现与教
师或学习者之间的交互;另一方面,学习者还可以从学习软件的数据库中寻求问题的答
案,同时也可将软件数据库自行更新。
(5)内容的扩展性。
数字化工具与资源的扩展性主要表现为可操作性和可再生性。在可操作性方面,数字
化学习的过程,既是将课程内容进行数字化处理的过程,同时又是利用共享的数字化资源
与课程教学进行融合的过程。这些数字化学习内容能够被评价、被修改和再生产,它允许
学习者和教师用多种先进的数字化工具对其进行运用与再创造。在可再生性方面,经数字
化处理的课程学习内容能够激发学习者主动学习的兴趣。
探究活动
交 流
和同学们一起交流自己使用过的数字化工具与资源及其优势。
调 查
以小组为单位,调查各学科教师在教学中所运用到的数字化资源类型,并填入表2-3中。
30 30
41X1939 第二章.indd 30 2021/3/11 11:12:132.2 数字化学习与创新
表2-3 各学科教师在教学中所运用到的数字化资源
学科 多媒体课件 数字视频 数字音频 电子书 软件 其他
语文
数学
英语
物理
信息技术
生物
地理
其他
3.数字化学习的特点
数字化学习是伴随计算机多媒体技术、互联网通信技术的发展而产生的,是信息社会
的重要特征。与传统的学习方式不同,数字化学习具有问题化、合作性、个性化、创造性
和再生性、开放性等特点。
(1)问题化。产生学习的根本原因是问题,数字化学习特别强调问题在学习活动中
的重要作用。在数字化学习的过程中,学习者一方面参与决定学习问题(或主题),并围
绕问题开展学习,将问题看作学习的动力、起点和贯穿学习全过程的主线;另一方面通过
学习生成问题、提出问题、分析问题和解决问题。
(2)合作性。数字化学习平台为学习者提供了一个信息交流、资源共享和协作学习
的环境。学习者可以在任何时间通过网络向教师提出问题和请求指导;也可以和其他学习
者进行学习交流,而且这种交流是双向的,多对多的。数字化学习能使学习者从个体封闭
的学习和认知中走出来,学会合作学习。
(3)个性化。数字化学习能满足以学习者为中心的、灵活的和个性化学习的需
要。在传统课堂教学中,针对每一名学习者较难展开因材施教与个性化学习。而数字
化学习,使这种教与学的方式成为可能。学习者可以根据自己的特点自行安排学习进
度,从互联网上选择自己需要的资源,按照适合自己的方式进行学习。在整个学习过
程中,学习者通过数字化学习进行主动的意义建构,从而获取知识,真正成为学习的
主人,如图2-9所示。
3131
41X1939 第二章.indd 31 2021/3/11 11:12:13第二章 知识与数字化学习
图2-9 个性化学习
(4)创造性和再生性。数字化学习具有创造性和再生性。互联网采用超文本链接的
形式联结信息,非线性、跳跃性是其重要特征。网络课程的组织方式符合人们的思维规
律,有利于人的发散性思维的发展,也有利于丰富想象力的培养和创新意识、创新思维的
发展。
数字化的课程学习内容使学习过程变得不再枯燥,学习者更愿意参与和沉浸到学习中
去。学习者不再是被动地接收信息,而是采用新颖、熟练的数字化加工方法,进行知识的
整合、再创造,并作为学习者的学习成果。数字化学习的可再生性,不仅能很好地激发学
习者的创造力,而且为学习者创造力的发挥提供了更大的可能。
(5)开放性。在社会已进入移动互联时代的今天,数字化学习资源的全球共享,
虚拟课堂、虚拟学校的出现,使得人们可以随时随地通过互联网进入数字化的学习环
境,实现碎片化学习。学习空间正变得无围墙、无界限。同时,个体的学习也不再是阶
段性的,而是终身的;数字化学习为构建学习型社会提供了有力的保障,推动了终身教
育的发展。
深入了解数字化学习的各种特点,既有利于我们准确地把握和理解数字化学习的基本
内涵,也有利于我们根据数字化学习的特点,有效地运用数字化学习工具开展自主学习、
协同工作与知识分享,适应数字化学习环境。
分 析
1.收集身边的、生活中常见的数字化学习事例,分析人们是如何利用数字化学习为
生活、学习服务的。
2.分析传统学习与数字化学习两种方式的区别,填写表2-4。
32 32
41X1939 第二章.indd 32 2021/3/11 11:12:142.2 数字化学习与创新
表2-4 传统学习与数字化学习两种方式的比较
学习方式
比较内容
传统学习 数字化学习
学习问题
学习效率
学习时间及地点
情感交流的效果
……
2 . 2 . 2 体验数字化创新学习过程
在信息时代,学习者不仅可以向教师与课本学习,而且可以高效利用数字化工具与资
源的优势,在数字化学习环境中,与同伴和教师高效开展自主、协作、探究学习,创造性
地完成具体的学习任务。
体 验
投针实验
蒙特卡洛方法是计算机模拟的基础,起源于18世纪数学家蒲丰的投针实验。投针实验
是指在平面上画有一组间距为d的平行线(图2-10),将一根长度为l(l≤d)的针任意掷
在这个平面上,求此针与平行线中任一条相交的概率。这是一个数学上的概率问题。当人
们反复进行大量随机投针实验后,发现了一个独特的现象,即针与平行线中任一条相交的
概率是一个常数。那这个常数的倒数是什么呢?
下面我们利用开放共享的“网络画板”平台
模拟投针实验,体验使用计算机模拟随机实验处
理确定性数学问题的思维方法。我们设定平行线
的间距d=1,针长l=0.5,抛掷次数a从100到5000,
k为记录针与平行线中任一条相交的次数,探究
针与平行线中任一条相交的概率的倒数P= 的变
化。具体操作步骤如下:
图2-10 投针实验
(1)在线打开“网络画板”平台,点击“开
始作图”按钮,进入画板的作图界面。
(2)点击“文件”菜单的“打开本地文件”按钮,打开并运行配套学习资源包中
“第二章\课本素材\投针实验.npc”文件,如图2-11所示。
3333
41X1939 第二章.indd 33 2021/3/11 11:12:14第二章 知识与数字化学习
投针长度
图2-11 投针实验界面图
(3)点击“抛掷”按钮,开启或停止“抛掷”,观察P值的变化,重复多次操作,可
发现P≈π的近似值,如图2-12所示。
图2-12 投针实验过程图
34 34
41X1939 第二章.indd 34 2021/3/11 11:12:142.2 数字化学习与创新
交 流
1.查阅初中数学教材或上网查阅有关资料,讨论针与平行线中任一条相交的概率的
倒数P= ≈π的推理过程,感受数字化模拟实验的过程,体验数字化学习工具的优势。
2.以小组为单位,运用思维导图软件绘制思维导图,分类列举在项目实施过程中所
涉及的数字化工具,生成JPG文件,并在班级开展交流与评价。
因数字化学习环境和资源利用方式不同,学习工具、途径和方法多样,数字化学习模
式也不尽相同。因此,只有牢固树立数字化学习的意识,学会数字化学习的技术手段和方
法,养成数字化学习的习惯,才能促进终身学习,实现自主发展。
分 析
1.利用数字化学习的特点,运用数字化学习方式,针对小组选定的项目,各小组广
泛收集与项目相关的研究资料。资料的来源可以是报纸杂志、书籍、广播、电视等,也可
以是学习网站、教育资源平台、论坛、电子邮件及搜索引擎等。
2.按照一定规则将研究素材分门别类进行整理,便于开展研究性学习。
讨 论
思维导图既可以手绘,也可以使用软件绘制。对于绘制思维导图的软件,目前比较
知名的有XMind、Mindmanager、FreeMind等。现以小组为单位,自行安装应用XMind、
Mindmanager、FreeMind三种软件绘制思维导图,小组讨论比较三者之间的异同,并填写
表2-5。
表2-5 三种思维导图软件比较
软件
比较项目
XMind Mindmanager FreeMind
是否开源
支持平台
模板功能
导出格式
3535
41X1939 第二章.indd 35 2021/3/11 11:12:14第二章 知识与数字化学习
(续表)
软件
比较项目
XMind Mindmanager FreeMind
优点
不足之处
综合评价
项目实施
各小组根据项目选题及拟订的项目方案,结合本节所学知识,了解数字化工具与资源
及其优势,进一步完善该项目方案中的各项学习活动,并参照项目范例的样式,撰写本组
的项目成果报告。
成果交流
各小组运用数字化学习工具,将所完成的项目成果,在小组或班级上进行展示与交
流,共享创造、分享快乐。
活动评价
各小组根据项目选题、拟订的项目方案、实施情况以及所形成的项目成果,利用教科
书附录2的“项目活动评价表”,开展项目学习活动评价。
36 36
41X1939 第二章.indd 36 2021/3/11 11:12:14本章扼
要回顾
本章扼要回顾
本章扼要回顾
同学们通过本章学习,根据“知识与数字化学习”知识结构图,扼要回顾、总结、归
纳学过的内容,建立自己的知识结构体系。
回顾与总结
3737
41X1939 第二章.indd 37 2021/3/11 11:12:15第二章 知识与数字化学习
本章学业评价
同学们完成下列测试题(更多的测试题可以在教科书的配套学习资源包中查看),并
通过“本章扼要回顾”以及本章的项目活动评价,综合评价自己在信息技术知识与技能、
解决实际问题的过程与方法,以及相关情感态度与价值观的形成等方面,是否达到了本章
的学习目标。
1.单选题
(1)下列工具中,更适用于免费在线存储学习资源的是( )。
A.微信 B.云盘 C.博客 D.微博
(2)以下关于数据、信息和知识相互关系的理解,不正确的是( )。
A.数据是原始事物现象的符号记录
B.信息等同于知识
C.信息是经加工处理的、具有意义的数据
D.知识是人们运用大脑对获取或积累的信息进行系统化地提炼、研究和分析的结果
(3)下列属于数字化学习工具的是( )。
A.视频 B.音频 C.多媒体课件 D.思维导图软件
2.思考题
用思维导图描述数据、信息、知识和智慧之间的关系。
3.情境题
(1)在公交车或地铁上,我们经常看到人们使用手机、平板电脑等智能设备,或阅
读电子书籍,或看新闻,或发微博、微信等,充分利用碎片化时间进行阅读……
任务:针对这种情况,对比纸质读物,请说明数字化阅读的利弊。
(2)新学期开始,某一中学投入资金配置了演播室。
接下来,校团委招募了十几名同学,成立了“校园电视台”
学生社团,定期制作播报校园新闻。由于演播室的设备尚未
配备齐全,为便于主持人顺利报道新闻,需要设计一个自动
播放文本的程序,实现现场提词器的功能,如右图所示。
任务:应用数字化学习的方法,完成上述任务,并简述
其制作过程。
现场提词器
38 38
41X1939 第二章.indd 38 2021/3/11 11:12:15第一章
第一章 数据与信息
数据与信息
第三章
算法基础
数据在信息社会中具有重要价值,掌握数据处理的基本方
法与技能具有重要意义。随着数据的快速增长,掌握利用计算
机和算法更高效地分析和解决海量数据问题的方法对人类社会
发展具有重要作用。
本章将通过“设计从A市到B市最佳的旅行路线方案”项
目,进行自主、协作、探究学习,让同学们体验计算机解决问
题的过程,理解和概述算法的概念与特征,学会运用恰当的描
述方法和控制结构表示简单算法,懂得描述程序设计语言产生
与发展的过程,了解不同种类程序设计语言的特点,从而将知
识建构、技能培养与思维发展融入运用数字化工具解决问题和
完成任务的过程中,促进信息技术学科核心素养达成,完成项
目学习目标。
体验计算机解决问题的过程
算法及其描述
计算机程序与程序设计语言
3939
41X1939 第三章.indd 39 2021/3/11 11:09:24第三章 算法基础 设计从A市到B市耗时最少的旅行路线方案
设计从A市到B市耗时最少的旅行路线方案
项目范例
情 境
中国桥、中国路、中国车、中国港、中国网,一个个奇迹般的工程,让人民切切实实
地感受到生活的便捷、美好和幸福。截至2017年10月,中国高速公路里程13.1万千米,
位居世界第一,2020 年将达15万千米;高铁里程2.2万千米,位居世界第一(图3-1);
城市轨道交通4153千米,位居世界第一;光缆线路3041万千米,位居世界第一;世界前
10的斜拉桥,中国占7座;世界前10的悬索桥,中国占6座;吞吐量世界前10的港口,中
国占7席。
图3-1 中国高铁
当从A市到B市没有直达的交通工具时(不考虑水上交通工具),人们可以利用铁路
公司、汽车客运公司和航空公司公布的信息,设计出耗时最少的旅行路线。
主 题
设计从A市到B市耗时最少的旅行路线方案
规 划
根据项目范例的主题,在小组中组织讨论,利用思维导图工具,制订项目范例的学习
规划,如图3-2所示。
40 40
41X1939 第三章.indd 40 2021/3/11 11:09:25设计从A市到B市耗时最少的旅行路线方案 设计从A市到B市耗时最少的旅行路线方案
图3-2 “设计从A市到B市耗时最少的旅行路线方案”项目学习规划
探 究
根据项目学习规划的安排,通过调查、案例分析、文献阅读和网上资料搜索,开展
“设计从A市到B市耗时最少的旅行路线方案”项目学习探究活动,如表3-1所示。
表3-1 “设计从A市到B市耗时最少的旅行路线方案”项目学习探究活动
探究活动 学习内容 知识技能
体验人工
人工解决问题的过程。
设计从A市到B市
与计算机解
耗时最少旅行路线 体验计算机解决问题的过程。
决问题的过
的问题分析。
计算机解决问题的过程。
程
探究计算 设计从A市到B市 算法的概念与特征。 理解和概述算法的概念与特征。
机解决问题 耗时最少旅行路线 运用恰当的描述方法和控制结
的算法 的算法。 算法的描述方法。 构表示简单算法。
描述程序设计语言产生与发展
了解计算 编写求解从A市到 计算机程序。
的过程。
机解决问题 B市耗时最少的旅行
了解不同种类程序设计语言的
的程序 路线问题的程序。 程序设计语言的产生与发展。
特点。
4141
41X1939 第三章.indd 41 2021/3/11 11:09:26第三章 算法基础
实 施
实施项目学习各项探究活动,进一步设计耗时最少的旅行路线。
成 果
在小组开展项目范例学习过程中,利用思维导图工具梳理小组成员在“头脑风暴”活
动中的观点,建立观点结构图,运用多媒体创作工具(如演示文稿、在线编辑工具等),
综合加工和表达,形成项目范例可视化学习成果,并通过各种分享平台发布,共享创造、
分享快乐。例如,运用在线编辑工具制作的“设计从A市到B市耗时最少的旅行路线方
案”可视化报告,可以在教科书的配套学习资源包中查看,其目录截图如图3-3所示。
图3-3 “从A市到B市耗时最少的旅行路线方案”可视化报告目录截图
评 价
根据教科书附录2的“项目活动评价表”,对项目范例的学习过程和学习成果在小组
或班级上进行交流,开展项目学习活动评价。
项目选题
同学们以3~6人组成一个小组,选择下面一个参考主题,或者自拟一个感兴趣的主
题,开展项目学习。
1. 设计从A市到B市交通费最少的旅行路线方案
2. 设计从A市到B市路程最短的旅行路线方案
3. 设计从A市到B市交通费大约相同而耗时最少的旅行路线方案
42 42
41X1939 第三章.indd 42 2021/3/11 11:09:273.1 体验计算机解决问题的过程
项目规划
各小组根据项目选题,参照项目范例的样式,利用思维导图工具,制订相应的项目
方案。
方案交流
各小组将完成的方案在全班进行展示交流,师生共同探讨、完善相应的项目方案。
3.1
体验计算机解决问题的过程
在现实生活中,我们经常需要对数据进行统计、分析。当数据量不多时,我们可以采
用人工方法来处理;然而,当数据量变多时,我们运用计算机来解决问题将是一种更高
效、更便捷的方法。
3 . 1 . 1 人工解决问题的过程
采用人工方法来解决问题,首先需要明确所要解决的问题和给出的条件,然后再根据
已有的经验和知识确定解决问题的方法,从而解决问题。
探究活动
思 考
如何设计从A市到B市耗时最少的旅行路线方案呢?假如我们从铁路公司、各航空公
司和汽车客运公司网站得知,直达B市的交通工具只有火车和汽车两种,出发地有B ,
1
B ,…,B 市(没有A市),从A市出发到B ,B ,…,B 市的交通工具有飞机、火车和汽
2 k 1 2 k
车三种,这样从A市经B ,B ,…,B 市到B市的交通情况如图3-4所示。
1 2 k
由于从A市到B ,B ,…,B 市有不同的交通工具,每一种交通工具又有不同的班
1 2 k
次,因此从A市出发到中转城市B ,B ,…,B 市就有M ,M ,…,M 种班次。同样,
1 2 k 1 2 k
4343
41X1939 第三章.indd 43 2021/3/11 11:09:27第三章 算法基础
从中转城市B ,B ,…,B 市到B市也有不
1 2 k
同的交通工具,每一种交通工具有不同的班
次,因此从中转城市B ,B ,…,B 市到B市
1 2 k
就有N ,N ,…,N 种班次。于是从A市经
1 2 k
B ,B ,…,B 市到B市的交通班车(班机)
1 2 k
数共有:
S=M ×N +M ×N +…+M ×N
1 1 2 2 k k
寻找从A市到B市耗时最少的旅行路线问题
就转化为在S种联运班次中找到一种耗时最少的
联运班次。这样就需要遍历每一个班次进行比
较。若用人工方式找出能够中转且等待时间和
行驶时间最少的班次,工作量将极其浩大! 图3-4 从A市经B 1 ,B 2 ,…,B k 市到
B市的交通情况
假设从A市到B市的中转城市只有B ,B
1 2
市,从A市经B ,B 市到B市的交通情况如表
1 2
3-2和表3-3所示。
表3-2 从A市经B 市到B市的交通情况
1
从A市到B 市的交通工具 发车时间 行驶时间/时 从B 市到B市的交通工具 发车时间 行驶时间/时
1 1
9:00 3
飞机 12:00 2.5 飞机 无 无
16:00 2
8:00 12 9:00 1.5
10:00 11 11:00 1.33
火车 火车
12:00 9.6 15:00 1
13:00 9.5 18:00 2
8:00 1.8
9:00 2
汽车 无 无 汽车 13:00 2.2
15:00 2.66
18:00 1.66
44 44
41X1939 第三章.indd 44 2021/3/11 11:09:273.1 体验计算机解决问题的过程
表3-3 从A市经B 市到B市的交通情况
2
从A市到B 市的交通工具 发车时间 行驶时间/时 从B 市到B市的交通工具 发车时间 行驶时间/时
2 2
9:00 3
飞机 11:00 2.5 飞机 无 无
15:00 2.5
8:30 12.6 8:00 1.5
11:20 11 10:00 1.3
火车 火车
14:00 10.6 14:00 1
16:00 11.6 19:00 2
8:30 22.6 8:00 1.8
11:20 21 9:00 2.1
汽车 14:00 19.6 汽车 13:00 2.5
16:00 19.6 16:00 2.2
18:00 20 19:00 1.7
从以上两表可知,从A市经B 市到B市的联运班次有7×9=63(班),从A市经B 市到
1 2
B市的联运班次有12×9=108(班),合计为S=63+108=171(班)。然后在171班次中找到
能够中转且等待时间加上行驶时间最少的联运班次,如图3-5所示。
图3-5 从A市到B市的班次状况
分 析
根据表3-2和表3-3给出的已知条件,可以采用以下的思路求解耗时最少的联运班次
问题:
(1)找出能够中转的从A市经B 市到达B市的联运班次,并计算所用的时间。
1
(2)找到能够中转的从A市经B 市到达B市的联运班次中耗时最少的联运班次。
1
(3)找出能够中转的从A市经B 市到达B市的联运班次,并计算所用的时间。
2
(4)找到能够中转的从A市经B 市到达B市的联运班次中耗时最少的联运班次。
2
(5)取两条线路中耗时最少的联运班次为最佳旅行路线。
上述问题中,假如中转城市很多,交通班次也很多,找出耗时最少路线的工作量会非
常大,若用人工穷举遍历,其效率就会很低。
4545
41X1939 第三章.indd 45 2021/3/11 11:09:28第三章 算法基础
3 . 1 . 2 计算机解决问题的过程
当数据量很大,人工处理效率很低时,我们可以借助计算机,通过编写计算机程序解
决问题。编写计算机程序解决问题要经过分析问题、设计算法、编写程序、调试运行程序
等若干个步骤。
1. 分析问题
在利用计算机解决问题之前,我们首先要分析问题的需求情况、已知条件和需要解决
的问题。
例如,在从A市到B市耗时最少的旅行路线问题中,在不知道有多少个中转城市和每
个城市有多少班车(或飞机)的情况下,我们可以利用大数据挖掘技术中的爬虫程序(参
见配套学习资源包“第三章\课本素材\程序3-1”)到铁路网站、各航空公司和汽车客运公
司网站获取从A市经中转城市B ,B ,…,B 市到达B市的交通班次信息,再经过数据清洗
1 2 k
后,形成结构化的数据存储为Excel文件(例如,班次查询结果的截图如图3-6所示,详细
文件可参见配套学习资源包“第三章\课本素材\Excel”文件夹)。
清洗后的数据表B Sheet1
1
清洗后的数据表B Sheet2
1
图3-6 班次查询结果的截图
2. 设计算法
问题分析清楚后,需要给出解决问题的详细方法和步骤,这一过程称为设计算法。
例如,对于从A市到B市耗时最少的旅行路线问题,根据获取的从A市到B市的中转城市
46 46
41X1939 第三章.indd 46 2021/3/11 11:09:283.1 体验计算机解决问题的过程
B,B,…,B的班次,以及各城市各交通班次的发车时间和行驶时间等信息,采用以下的思
1 2 k
路找出耗时最少的联运班次问题:
(1)分别找出能够中转且中转等待时间不小于1小时的从A市经B ,B ,…,B 市到
1 2 k
达B市的联运班次,并计算所用的时间。
(2)分别找到能够中转的从A市经B ,B ,…,B 市到达B市的联运班次中耗时最少
1 2 k
的联运班次,共k条线路。
(3)取k条线路中耗时最少的联运班次为最佳旅行路线。
3. 编写程序
有了清晰可操作的算法描述,就可以选择一种计算机语言工具来编写程序,实现算
法。一般来说,只要算法确定,对计算机程序设计语言的选择没有特别的限定,通常根据
问题的特性和编程人员对语言的熟悉程度来选定编写程序。
例如,用Python语言编写从A市到B市耗时最少的旅行路线问题的算法的程序可参见配套
学习资源包“第三章\课本素材\程序3-1”。其中,找出能够从A市经B(i=1,2,…,k)市到达B
i
市的中转联运班次,并计算所用的时间以及找到耗时最少的联运路线的关键程序段如下。
m=99
for i in range(1,rs1):
t14 = table_1.cell(i,4).value
t12 = t14-table_1.cell(i,2).value
for j in range(1,rs2):
t22 = table_2.cell(j,2).value
if t22-t14>=1/24 :
m1=t12+(t22-t14)+(table_2.cell(j,4).value-t22)
if m>m1:
m=m1
r1=i
r2=j
4. 调试运行程序
程序编写完成以后,再通过键盘把程序输入计算机中运行,检查程序能否按预想的效
果执行,这一过程称为程序的调试运行。计算机只能识别程序设计语言中所规定的语法规
则,如果编写程序时与规则不一致,哪怕是一个标点符号出错,也会因程序出错而中断运
行。此时,我们可以根据计算机提示的出错信息修改程序,重新调试运行。由于Python是
解释程序,因此它的调试是在运行过程中逐行进行的。
当程序能够顺利运行以后,我们还需要对程序运行的结果进行检查。因为如果程
序语句符合语法规则,而程序中却有逻辑或计算方法等错误,计算机是检查不出来
的。因此,如果结果不合理,还要对程序甚至算法进行修改,直到程序的功能符合设
计要求为止。
4747
41X1939 第三章.indd 47 2021/3/11 11:09:28第三章 算法基础
实 践
打开配套学习资源包“第三章\课本素材\程序3-1”,调试并运行程序3-1,找出从A市到
B市耗时最少的旅行路线问题的结果,如图3-7所示。
从A地出发经B到达B地,最少耗时为:4.333333333333332小时。具体行程请查看文件ZHXC.XLS。
2
(a)运行结果
(b)ZHXC.XLS文件截图
图3-7 从A市到B市耗时最少的旅行路线问题的程序运行结果
项目实施
各小组根据项目选题及拟订的项目方案,结合本节所学知识,体验计算机解决问题的过程。
1. 体验运用计算机解决问题经历的问题描述、数据抽象和结构分析、模型建立、算
法设计、程序编写、程序调试和测试验证等过程。
2. 总结归纳运用计算机解决问题的方法和步骤。
3.2
算法及其描述
3 . 2 . 1 算法
1. 算法
算法是指在有限步骤内求解某一问题所使用的一组定义明确的规则。通俗地说,算法
就是用计算机求解某一问题的方法,是能被机械地执行的动作或指令的有穷集合。
探究活动
观 察
若要求方程6x+5y+4z=50的正整数解的个数t,则解决问题的算法步骤如下:
at=0;
48 48
41X1939 第三章.indd 48 2021/3/11 11:09:283.2 算法及其描述
bx=1;
cy=1;
dz=1;
e如果满足式子6x+5y+4z=50,则解的个数加1(即t=t+1,表示右边式子的值赋值给
左边式子),并输出这个解(即输出t,x,y,z的值);
fz=z+1;
g如果z≤12则转步骤e,否则继续步骤h;
hy=y+1;
i如果y≤10则转步骤d,否则继续步骤j;
jx=x+1;
!1如果x≤8则转步骤c,否则继续步骤!2;
!2结束。
2. 算法的特征
算法作为能确实解决某个问题的策略,具有五个方面的重要特征:
(1)有穷性。一个算法在执行有穷步之后必须结束,即一个算法所包含的计算步骤是
有限的。例如,在上面的算法中,x的值从1开始穷举,重复执行语句,直到x>8时终止执行。
(2)确定性。算法执行的每一个步骤必须有确切的定义,不能出现模棱两可的情
况。例如,上面算法步骤⑤就明确规定:当满足式子6x+5y+4z=50时,则解的个数加1(即
t=t+1),并输出这个解。
(3)数据输入。一个算法必须有零个或多个数据输入,以刻画运算对象的初始情
况。例如,在上面的算法中,就没有数据输入。
(4)数据输出。一个算法有一个或多个数据输出,以反映对输入数据加工后的结
果,没有输出的算法是毫无意义的。例如,在上面的算法中,有两个输出,即步骤⑤的个
数t和具体解(x,y,z的值)。
(5)可行性。算法中执行的任何计算步骤都可以被分解为基本的可执行的操作步
骤,即每个计算步骤都可以在有限时间内完成。例如,上面的算法中每一步都是可以在有
限时间内完成的。
3 . 2 . 2 算法的描述
算法是对解题过程的精确描述,且需要使用某种方法将其表示出来。
1. 描述算法的常用方法
描述算法的常用方法有自然语言描述算法、流程图描述算法和伪代码描述算法。
(1)用自然语言描述算法。
用自然语言描述算法,就是用人们日常所用的语言,如汉语、英语等来描述算法。例
如,从A市到B市耗时最少的旅行路线问题的算法描述,即使用了自然语言。
使用自然语言描述算法比较容易掌握,但也存在明显的缺点。例如,当算法中含有多
分支或循环操作较多时,使用自然语言很难将其清晰地表示出来;并且由于自然语言的歧
4949
41X1939 第三章.indd 49 2021/3/11 11:09:28第三章 算法基础
义性,也容易导致算法执行的不确定性。
(2)用流程图描述算法。
用流程图描述算法是用程序框图来描述算法的一种表示方法。使用流程图描述算法,
可使算法的流程描述得清晰、简洁。流程图的基本图形及其功能如表3-4所示。
表3-4 流程图的基本图形及其功能
图形 名称 功能
开始/结束 表示算法的开始或结束。
输入/输出 表示算法中变量的输入或输出。
处理 表示算法中变量的计算与赋值。
判断 表示算法中的条件判断。
流程线 表示算法中的流向。
连接点 表示算法中的转接。
例如,用流程图描述求方程6x+5y+4z=50的正整数解的算法,如图3-8所示。
图3-8 求方程正整数解的流程图
50 50
41X1939 第三章.indd 50 2021/3/11 11:09:303.2 算法及其描述
(3)用伪代码描述算法。
用伪代码描述算法就是用介于自然语言和计算机语言之间的文字和符号来描述算
法。它不用图形符号,书写方便,格式紧凑,易于理解,便于向计算机程序设计语言
过渡。
例如,用伪代码描述求解方程6x+5y+4z=50的正整数解的算法如下:
t=0
for x in range(1,9):
for y in range(1,11):
for z in range(1,13):
if(x*6+y*5+z*4==50)
{ t=t+1;
给出解的个数t及对应的三个整数x,y,z}
交 流
1.根据求解不定方程的知识,简化方程6x+5y+4z=50中变量x、y、z的筛选范围,设计
并交流更加简洁高效的算法。
2.各小组交流三种算法描述方法的优势和不足,并完成表3-5。
表3-5 三种算法描述方法的比较
算法描述的方法 优势 不足
自然语言描述法
流程图描述法
伪代码描述法
实 践
在《几何原本》一书中,欧几里得阐述了关于求两个正整数的最大公约数的过程,这
就是著名的欧几里得算法——辗转相除法,其具体过程如下:
设给定的两个正整数为m和n,求它们的最大公约数的步骤为:
①以m除以n,令所得的余数为R。
②若R=0,则输出结果n,算法结束;否则,继续步骤③。
③令m=n,n=R,并返回步骤①继续进行。
用流程图将上述算法表示出来,试探索欧几里得算法在现实生活中有哪些应用,举出
两个应用实例。
5151
41X1939 第三章.indd 51 2021/3/11 11:09:30第三章 算法基础
2. 三种基本控制结构
前面的算法描述中,我们用到了顺序结构、选择结构和循环结构这三种基本控制结
构(其流程图如图3-9所示),而任何复杂的算法都可以用这三种基本控制结构组合来
表示。
图3-9 三种基本控制结构
这三种基本控制结构的主要作用是:
(1)顺序结构表示程序中的各步操作按出现的先后顺序执行。
(2)选择结构表示程序的处理步骤出现了分支,需要根据某一特定的条件选择其中
的一个分支执行。选择结构有单选择、双选择和多选择三种。
(3)循环结构表示程序反复执行某个或某些操作,直到判断条件为假(或为真)时
才可终止循环。
使用三种基本控制结构的组合来描述算法,可以改善算法的清晰度,提高算法的可读
性,原因如下:
(1)以控制结构为单位,只有一个入口和一个出口,各单位之间接口简单,比较容
易独立地理解每一单位。
(2)缩小了算法的静态描述与动态执行过程之间的差异,使得两者容易对应,易于
理解。
项目实施
各小组根据项目选题及拟订的项目方案,结合本节所学知识,开展以下活动。
1. 完成相应问题的算法设计及其描述。
2. 总结归纳所采用的方法和步骤。
52 52
41X1939 第三章.indd 52 2021/3/11 11:09:303.3 计算机程序与程序设计语言
3.3
计算机程序与程序设计语言
目前,我们已对计算机解决问题的基本过程和算法有了一定的了解。通过对本节任
务的探究学习,我们将更深切体会计算机程序在解决问题过程中的重要作用。
探究活动
思 考
在完成问题分析和算法设计两个环节之后,接下来就要开始编写计算机程序对数据进
行统计分析,进而形成解决问题的方案。各小组交流什么是计算机程序语言。
1.围绕交流的问题展开“头脑风暴”活动,确定认识计算机程序需要解决的问题和
知识,具体可参考表3-6。
表3-6 认识计算机程序的问题列表及分工表
班级: 小组编号: 组长:
信息的获取过程
问题 选择信息 确定信息 评价 分工及时间 认知程度
来源 获取方法 信息 安排 (认识/了解/描述/掌握)
问题1:什么是计算
机程序?
问题2:程序设计语
言有哪些?
问题3:
问题4:
5353
41X1939 第三章.indd 53 2021/3/11 11:09:30第三章 算法基础
2.表3-6中所要解决的每一个问题都可以制作成各类相关图表,如思维导图、概
念图或者时间线表等。参考表3-7,思考其他问题的列表形式。
表3-7 高级程序设计语言的发展时间线表
时间 高级语言名称 功能简述
Fortran,亦译为福传,是英文“FORmula TRANslator”的缩写,意思是
“公式翻译器”,是世界上最早出现的计算机高级程序设计语言,广泛
1954年 Fortran
应用于科学和工程计算领域。Fortran语言以其特有的功能在数值、科学和
工程计算领域发挥着重要作用。
1958年
1959年
……
3 . 3 . 1 计算机程序
计算机程序是指为了得到某种结果而可以由计算机等具有信息处理能力的装置执行的
代码化指令序列,或者可被自动转换成代码化指令序列的符号化指令序列或者符号化语句
序列。简而言之,计算机程序就是指计算机可以识别运行的指令集合。
常用的计算机主要包括运算器、控制器、存储器、输入设备和输出设备五大基本部
件。计算机内部采用二进制形式表示和存储指令或数据,把解决问题的程序和需要加工处
理的原始数据事先转换成二进制数,并存入存储器中。计算机的工作过程实际上是周而复
始地获取指令、执行指令的过程,如图3-10所示。
图3-10 计算机程序运行图
54 54
41X1939 第三章.indd 54 2021/3/11 11:09:353.3 计算机程序与程序设计语言
3 . 3 . 2 计算机程序设计语言
在用计算机解决问题时,用自然语言、流程图或是伪代码所描述的解决问题的算法都
不能被计算机直接执行,还必须将算法按照一定的规则编写成计算机能够识别和运行
的程序。而人们编写程序时需要遵循的规则就是计算机语言规则。计算机程序设计语
言,是指一组用来定义计算机程序的语法规则,通常简称为“编程语言”。它是一种
被标准化的交流技巧,用于向计算机发出指令。正确地使用计算机程序设计语言,能
让程序员准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应执行
的命令。
计算机程序设计语言的发展,经历了从机器语言、汇编语言到高级语言的发展历程。
1. 机器语言
目前,计算机采用的物理器件主要是电子元件,但由于电子元件的物理特性,计算机
只能识别“0”和“1”组成的二进制数。因此,二进制是计算机语言的基础。计算机发明
之初,人们只能使用计算机的基础语言(图3-11)。因此,早期的程序设计语言是由
“0”和“1”所表示的二进制代码指令组表示的。这样的语言是计算机能直接接收和执行
的,通常被称为“机器语言”。机器语言是第一代计算机语言。
图3-11 机器语言示意图
不同计算机的机器指令系统会有所不同,但每一条机器指令都包含两个主要部分:操
作(指出计算机应做什么)和被操作的对象(指出处理的数据或它的地址)。在这些指令
的控制下,计算机可以实现最基本的算术运算和逻辑运算。例如,表3-8是用Intel 80386完
成“9+8”加法运算的机器指令。
表3-8 用Intel 80386机器指令完成“9+8”的加法运算表
指令序号 机器指令 指令功能
10110000
1 把加数9送到累加器AL中。
00001001
00000100 把累加器AL中的内容与另一个数8相加,结果存在累加器AL中(即完
2
00001000 成9+8的运算)。
3 11110100 停止操作。
5555
41X1939 第三章.indd 55 2021/3/11 11:09:36第三章 算法基础
早期人们与计算机的通信都是通过机器语言编写的程序完成的,程序中的所有语句都
被分解成一系列由0和1组成的代码记录在穿孔带上,如图3-12所示。
图3-12 穿孔纸带
这种机器语言所编写的程序难以被理解,程序设计任务也非常繁重,而且在程序出现
错误需要修改时,效率更是低下。除此之外,由于每台计算机的指令系统往往各不相同,
所以在一台计算机上执行的程序,如果想要在另一台计算机上执行,就必须另编程序,这
就造成了重复工作。由此可见,机器语言与人类的自然语言之间存在着巨大的鸿沟。但由
于使用的是针对特定型号计算机的语言,因此运算效率也是所有语言中最高的。
2. 汇编语言
为了让使用机器语言编写的程序更容易被理解,人们使用了一种类似英文缩略词且带
有助记性符号的语言,来替代一个特定的指令二进制串,每条指令都和一条机器指令相对
应,只是指令码和操作数都采用符号形式,这种程序设计语言就被称为汇编语言,即第二
代计算机语言。例如,指令码用“ADD”代表加法,用“MOV”代表数据传递等。这样一
来,人们就会比较容易读懂并理解程序,纠错及维护也会变得更加方便了。例如,表3-9
列出了用汇编语言来实现“9+8”加法运算的有关指令。
表3-9 用汇编语言来实现“9+8”运算的有关指令表
指令序号 汇编语言指令 指令功能
1 MOV AL,9 把加数9送到累加器AL中。
把累加器AL中的内容与另一个数8相加,结果存在累加器AL中
2 ADD AL,8
(即完成9+8的运算)。
3 HTL 停止操作。
但是,计算机是不能直接认识这些符号的,计算机还需要一个专门的语言翻译器,负
责将程序中的每条语句都翻译成用二进制数表示的机器语言(图3-13)。
图3-13 汇编语言被翻译成机器语言示意图
56 56
41X1939 第三章.indd 56 2021/3/11 11:09:373.3 计算机程序与程序设计语言
汇编语言同样与特定的机器及特定的微处理器相关,这也导致了汇编语言的移植性不
好。这一点与机器语言相比差异不大,然而汇编语言程序的效率仍然很高。针对计算机特
定硬件而编制的汇编语言程序,能准确发挥计算机硬件的功能和特长,其编写的程序不仅
精练、质量高,而且易于理解,所以至今在一些领域仍是一种常用而强有力的软件开发
工具。
3. 高级语言
人们在使用机器语言和汇编语言这两种语言与计算机交流的过程中,依然存在很大
的障碍,而且对于程序的理解和调试仍然十分困难。于是,高级语言应运而生。高级语
言接近于数学语言和人的自然语言,并且不再过度地依赖某种特定的机器或环境。第
一种高级语言是Fortran语言,它主要用于科学和工程计算。在Fortran语言之后,出现了
许多高级语言,如ALGOL、COBOL、Basic、LISP、SNOBOL、Pascal、C、PROLOG、
Ada、VC、VB、Delphi、Java、Python等。例如,在计算“9+8”的问题时,若使用高级
语言Python,则只需要语句“print(9+8)”就能完成,既简单又易于理解。
用高级语言编写的程序也不能直接被计算机所识别和执行,必须经过编译程序或解释
程序将其翻译成机器语言(图3-14)。所谓编译程序是指计算机把高级语言程序的每一条
语句都编译成机器语言,并保存成二进制文件后才运行的程序。解释程序是指计算机在执
行高级语言程序时,逐条语句解释成机器语言并立即执行的程序。
由于高级语言抽象度高,源代码无须与硬件、系统底层操作对应,所以移植性非常
好,理想的情况下甚至不必为不同的系统平台或者机器改动源代码。
图3-14 高级语言被翻译成机器语言示意图
高级语言的出现为计算机的应用开辟了广阔的前景,它的发展也经历了从早期语言到
结构化程序设计语言、从面向过程到非过程化程序设计语言的过程。所谓非过程化程序设
计语言,就是面向应用,即只需要告诉程序要干什么,程序就能自动生成算法,自动进行
处理,这是高级语言的下一个发展目标,将给人们解决问题带来更大的便利。
交 流
以小组为单位开展交流活动,试用自己的语言表述程序与程序设计语言之间的关系。
5757
41X1939 第三章.indd 57 2021/3/11 11:09:37第三章 算法基础
讨 论
1.一个高质量的程序应具备哪些条件?
2.学习了本节的有关内容后,我们是否能够用生活中熟悉的事物来形容或比喻程序
及其功能?
3.高级语言的翻译程序有两种类型:编译程序和解释程序。试通过网络检索相关知
识,比较编译型语言和解释型语言的优势和不足,并填写在表3-10中。
表3-10 编译型语言和解释型语言的比较表
语言种类 优势 不足
编译型语言
解释型语言
4.高级语言的编译过程和解释过程是不同的,请通过查阅相关资料,将两个不同的
执行过程用图表形式呈现出来,完成图3-15。
图3-15 编译过程和解释过程
58 58
41X1939 第三章.indd 58 2021/3/11 11:09:373.3 计算机程序与程序设计语言
5.以程序设计语言的发展过程为主题,预测程序设计语言将来的发展趋势,就其便捷性
及其功能等方面,大胆展望未来程序设计语言的特点,自拟调查提纲,写一篇调查报告。
拓 展
自动计算思想发展回顾
一般而言,计算与自动计算要解决以下四个问题:①数据的表示;②数据的存储及自
动存储;③计算规则表示;④计算规则的执行及自动执行。
算盘是一种计算工具,算盘上的珠子可以表示和存储数,计算规则是一套口诀,按照
口诀拨动珠子可以进行四则运算。然而所有的操作都要靠人的大脑和手完成,因此算盘被
认为是一种计算辅助工具,不能被归入自动计算工具范畴。
1642年,法国科学家帕斯卡发明了著名的帕斯卡机械计算机,首次确立了计算机器
的概念。该机器用齿轮来表示和存储十进各数位上的数字,通过齿轮比来解决进位问
题。低位上的齿轮每转动10圈,高位上的齿轮只转动1圈。机器可自动执行一些计算规
则,“数”在计算过程中自动存储。帕斯卡机的意义是让人们认识到“用纯机械装置可
代替人的思维和记忆”,开辟了自动计算的道路。如图3-16所示是一台手摇计算器。
1674年,莱布尼茨提出了“二进
制”数的概念。1847年,英国的数学
家布尔发表著作《逻辑的数学分析》
和《思维规律的研究——逻辑与概率
的数学理论基础》,创立了一门全新
的学科——布尔代数,为百年后出现
的数字计算机的开关电路设计提供了
重要的数学方法和理论基础。
1938年,香农发表了著名的论
文《继电器和开关电路的符号分
析》,首次用布尔代数进行开关电
图3-16 手摇计算器
路分析,并证明布尔代数的逻辑运
算可以通过继电器电路来实现,明确地给出了实现加、减、乘、除等运算的电子电路的
设计方法。这篇论文成为开关电路理论的开端。
1936年,阿兰·图灵提出了抽象计算模型——“图灵机”。一切可计算的函数都可用
图灵机计算,反之亦然。
1940年,“控制论之父”维纳提出了计算机五原则:①不是模拟式,而是数字式;
②由电子元件构成,尽量减少机械部件;③采用二进制,而不是十进制;④内部存放计算
表,计算控制规则;⑤在计算机内部存储数据。
5959
41X1939 第三章.indd 59 2021/3/11 11:09:38第三章 算法基础
本章扼
要回顾
1945年,美国宾夕法尼亚大学
“莫尔小组”汲取前人关于计算机的
结构、存储程序和二进制编码等研究
思想,设计制造了世界上的一台早期
计算机ENIAC(图3-17)。ENIAC
是可编程的通用计算机,可以解决不
同的问题。
图3-17 计算机ENIAC
项目实施
各小组根据项目选题及拟订的项目方案,结合本节所学知识,安装相应的计算机程序
语言软件,了解计算机程序设计语言的特点,进一步完善该项目方案中的各项学习活动,
并参照项目范例的样式,撰写相应的项目成果报告。
成果交流
各小组运用数字化学习工具,将所完成的项目成果,在小组或班级上进行展示与交
流,共享创造、分享快乐。
活动评价
各小组根据项目选题、拟订的项目方案、实施情况以及所形成的项目成果,利用教科
书附录2的“项目活动评价表”,开展项目学习活动评价。
60 60
41X1939 第三章.indd 60 2021/3/11 11:09:38本章扼要回顾
本章扼
要回顾
本章扼要回顾
同学们通过本章学习,根据“算法基础”知识结构图,扼要回顾、总结、归纳学过的
内容,建立自己的知识结构体系。
回顾与总结
6161
41X1939 第三章.indd 61 2021/3/11 11:09:39第三章 算法基础
本章学业评价
同学们完成下列测试题(更多的测试题可以在教科书的配套学习资源包中查看),并
通过“本章扼要回顾”以及本章的项目活动评价,综合评价自己在信息技术知识与技能、
解决实际问题的过程与方法,以及相关情感态度与价值观的形成等方面,是否达到了本章
的学习目标。
1. 单选题
(1)人们利用计算机解决问题的基本过程为( )。
①调试运行程序 ②分析问题 ③设计算法 ④问题解决 ⑤编写程序
A.①②③④⑤ B.②④③⑤① C.④②③⑤① D.②③⑤①④
(2)下面关于算法的描述,正确的是( )。
A.算法不可以用自然语言描述
B.算法只能用流程图来描述
C.一个算法必须保证它的执行步骤是有限的
D.算法的流程图表示法有零个或多个输入,但只能有一个输出
(3)计算机能直接识别、理解执行的语言是( )。
A.汇编语言 B.Python语言 C.Basic语言 D.机器语言
2. 思考题
写出“求一个任意实数C的算术平方根G(精确到0.0001)”的算法设计思想。
3. 情境题
某自动售货机(如右图)是由微处理器控制的。张明同学在自
动售货机选择了一种价值5元的饮料,然后在收款口放入10元。自
动售货机接收货币后,在商品取出口给出了张明所要的饮料,并找
了5元。
(1)说明自动售货机中微处理器这次自动售货的大致过程。
(2)如果张明同学在自动售货机购物没有成功,请列出没有
成功的三种可能原因。
自动售货机
62 62
41X1939 第三章.indd 62 2021/3/11 11:09:39第六章
第六章 程序设计基础
程序设计基础
第四章
程序设计基础
在运用计算机解决实际问题的过程中,如何把求解问题的
算法告知计算机,就需要有一种能够实现人机交互的语言,而
这种语言就是计算机程序设计语言。
本章将通过“设计购买物品的最佳方案”项目,进行自
主、协作、探究学习,让同学们了解Python程序设计语言的基
础知识,掌握程序的顺序结构、选择结构和循环结构三种控制
结构,学会使用程序设计语言实现简单算法,体验程序设计的
基本流程,掌握程序调试与运行的方法,从而将知识建构、技
能培养与思维发展融入运用数字化工具解决问题和完成任务的过
程中,促进信息技术学科核心素养达成,完成项目学习目标。
程序设计语言的基础知识
运用顺序结构描述问题求解过程
运用选择结构描述问题求解过程
运用循环结构描述问题求解过程
6363
41X1939 第四章 .indd 63 2021/3/11 11:08:52设计购买纪念品的最佳方案
第四章 程序设计基础
设计购买纪念品的最佳方案
项目范例
情 境
如今,网上购物已经成为人们生活中的一部分。通过网
购,人们不仅可以方便地在各家电商中获取商品的相关信
息,而且可以对商品进行比质比价,从而以优惠的价格购得
心仪的商品(图4-1)。为了购得既经济适用又美观大方的
商品,人们就要根据需求设计好购买方案。
主 题
图4-1 网上购物
设计购买纪念品的最佳方案
规 划
根据项目范例的主题,在小组中组织讨论,利用思维导图工具,制订项目范例的学习
规划,如图4-2所示。
图4-2 “设计购买纪念品的最佳方案”项目学习规划
探 究
根据项目学习规划的安排,通过调查、案例分析、文献阅读和网上资料搜索,开展
“设计购买纪念品的最佳方案”项目学习探究活动,如表4-1所示。
64 64
41X1939 第四章 .indd 64 2021/3/11 11:08:54设计购买纪念品的最佳方案
设计购买纪念品的最佳方案
表4-1 “设计购买纪念品的最佳方案”项目学习探究活动
探究活动 学习内容 知识技能
Python的常量和变量。
了解实现算法的程序设 Python的数据类型。
了解程序设计语言的基础知识。
计语言 Python的运算符和表达式。
Python的函数。
运用顺序结构设计最佳方案。 掌握程序的顺序结构、选择结构
和循环结构。
运用选择结构设计最佳方案。
运用程序控制结构设计 学会使用程序设计语言实现简单
运用循环结构设计最佳方案。
购买纪念品的最佳方案 算法。
体验程序设计的基本流程。
综合运用三种结构设计最佳方案。
掌握程序调试与运行的方法。
实 施
实施项目学习各项探究活动,进一步设计购买纪念品的最佳方案。
成 果
在小组开展项目范例学习过程中,利用思维导图工具梳理小组成员在“头脑风暴”活
动中的观点,建立观点结构图,运用多媒体创作工具(如演示文稿、在线编辑工具等)综
合加工和表达,形成项目范例可视化学习成果,并通过各种分享平台发布,共享创造、分
享快乐。例如,运用在线编辑工具制作的“设计购买纪念品的最佳方案”可视化报告,可
以在教科书的配套学习资源包中查看,其目录截图如图4-3所示。
图4-3 “设计购买纪念品的最佳方案”可视化报告目录截图
6565
41X1939 第四章 .indd 65 2021/3/11 11:08:55第四章 程序设计基础
评 价
根据教科书附录2的“项目活动评价表”,对项目范例学习过程和学习成果在小组或
班级上进行交流,开展项目学习活动评价。
项目选题
同学们以3~6人组成一个小组,选择下面一个参考主题,或者自拟一个感兴趣的主
题,开展项目学习。
1.设计购买电信服务的最佳方案
2.设计购买家用电器的最佳方案
3.设计购买图书的最佳方案
项目规划
各小组根据项目选题,参照项目范例的样式,利用思维导图工具,制订相应的项目
方案。
方案交流
各小组将完成的方案在全班进行展示交流,师生共同探讨、完善相应的项目方案。
4.1
程序设计语言的基础知识
在运用计算机程序求解问题时,需要有一种能够实现人机交流的语言,即程序设计语
言。人们通过这种语言把求解的方法和步骤告诉计算机,计算机则按照程序的流程自动求
解问题。
例如,求解购买纪念品的最佳方案问题,需要知道各商品的单价,才能设计出最佳方
案。现在设总预算为S,需要购买10个不同品种的商品数量为x ,x ,…,x ,则求解问题
1 2 10
的思路如下 :
(1)上网搜索各个商品的价格。
(2)求出各个商品的最低单价a ,a ,…,a 。
1 2 10
66 66
41X1939 第四章 .indd 66 2021/3/11 11:08:564.1 程序设计语言的基础知识
(3)令E=S-(a ×x +a ×x +…+a ×x ),求x ,x ,…,x 的值(其中x ,x ,…,
1 1 2 2 10 10 1 2 10 1 2
x 为正整数),使E最小(E≥0)。
10
在编写上述求解算法程序前,首先应掌握程序设计的一些基础知识,包括程序的常量
和变量、数据类型、运算符与表达式及函数等。我们以Python语言为例。
4 . 1 . 1 Python的常量和变量
数据总是以常量或变量两种形式出现在程序中。
1. 常量
常量是指在程序运行过程中其值始终不发生变化的量,通常是固定的数值或字符串。
例如,45,-30.2001,'Hello','Good'等都是常量。常量可以在程序中直接使用,如语句
“x=30*40”表示将30乘40的结果赋值给x,其中30和40都是常量,可以直接在程序中使用
以表示数值30和40。
2. 变量
变量是指在程序运行过程中其值可以发生变化的量。在程序设计语言中,变量可以用
指定的名字来代表,即变量由变量的“标识符”(又称“名字”)和变量的“内容”(又
称“值”)两部分组成。
Python程序设计语言规定标识符由字母(A~Z,a~z)、数字(0~9)、下划线组成,并
且其第一个字符必须是字母或下划线,而不能是数字,如s1,k,num,pai等。在标识符
中,字母大小写是有区别的,如“value”与“Value”是两个不同的标识符。
在Python中,如果使用非法标识符,在运行程序时会有相关报错信息。例如,以下是
报错非法标识符的程序:
>>> a1=3
>>> a1
3
>>> 1a=3 不能以数字开头
SyntaxError: invalid syntax
变量的内容在程序运行过程中是可以变化的。例如,一个变量的名字为E,其内容可
以为50,也可以为70。变量就像一个房间一样,变量名相当于房间的房间号,内容相当于
居住于房间的不同的人员等。
需要注意的是,Python是动态语言,动态语言的变量不需要进行定义数据类型,其数
据类型可以不固定,是动态的,需要根据其赋予的值来确定其数据类型。与之对应的是静
态语言,静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报
6767
41X1939 第四章 .indd 67 2021/3/11 11:08:56第四章 程序设计基础
错。因此,和静态语言相比,动态语言更灵活。同样一个变量是可以重复赋值的,而且
可以被赋予不同类型的值,如表4-2所示。同时,Python支持多种数据类型,在计算机内
部,可以把任何数据都看成一个“对象”,而变量就是在程序中用来指向这些数据对象
的,对变量赋值就是把数据和变量关联起来。
表4-2 变量动态赋值代码示例
变量动态赋值代码 结果
a=5 5
print(a) ABC
a='ABC'
print(a)
4 . 1 . 2 Python的数据类型
计算机能处理的远不只数值数据,还可以是文本、图形、音频、视频、网页等各种
各样的数据。不同的数据,需要定义不同的数据类型。Python能够直接处理的常用数据类
型有Number(数值)、String(字符串)、List(列表)、Tuple(元组)、Sets(集合)、
Dictionary(字典)等。表4-3中列出了Python常用的基本数据类型。
表4-3 Python常用的基本数据类型
数据类型 类型说明
Python主要支持以下三种不同的数值类型:
整型(int),通常被称为整型或整数。在Python 3.x版本中,整型数没有限制大小。
浮点型(float)。浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法
Number(数值)
表示,如2.5e2 =2.5×102=250。
复数(complex)。复数由实数部分和虚数部分构成,可以用a+bj或者complex(a, b)表
示,复数的实部a和虚部b都是浮点型。
字符串是以单引号或双引号括起来的任意文本,如'abc' "xyz"等。字符串的索引从0开
String(字符串)
始,-1 为从末尾开始的位置。
列表是写在方括号“[ ]”之间、用逗号分隔开的元素列表。例如,list1=['Good', 'Run',
List(列表) 1997, 2000]和list2=[1, 2, 3, 4, 5, 6, 7 ]。
列表的数据项不需要具有相同的类型。与字符串的索引一样,列表索引从0开始。
Python已经内置确定列表的长度以及确定最大和最小的元素的方法。
68 68
41X1939 第四章 .indd 68 2021/3/11 11:08:564.1 程序设计语言的基础知识
(续表)
数据类型 类型说明
Python 的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,
创建元组只需要在括号中添加元素,并使用逗号隔开。例如,tup1=('Good','Run',
Tuple(元组)
1997,2000)和tup2=(1,2,3,4,5)。元组与字符串类似,可以被索引且下标索引从0开始,-1
为从末尾开始的位置,也可以进行截取。
集合是一个无序不重复元素的序列。基本功能是进行成员关系测试和删除重复元
Sets(集合) 素。可以使用大括号{ }或者set( )函数创建集合。创建一个空集合必须用 set( ) 而不
是{ },因为{ }是用来创建一个空字典的。
字典是无序的对象集合。与列表的区别在于:列表是有序的对象集合。字典当中的
Dictionary 元素是通过键来存取的,而不是通过偏移存取。字典用{ }标识,它是一个无序的“键
(字典) (key):值(value)”对集合。键必须使用不可变类型。在同一个字典中,键必须是
唯一的。
探究活动
交 流
各小组讨论、交流相应项目选题实施过程中可能用到的数据类型。
讨 论
各小组对“合理定义数据类型可以优化程序的运行”这一观点进行交流和讨论,并举
例说明。
4 . 1 . 3 Python的运算符与表达式
在Python程序设计语言中对常量或变量进行运算或处理的符号称为运算符,参与运算
的对象称为操作数。常用的运算符有算术运算符、逻辑运算符、关系运算符、赋值运算
符、成员运算符等。由运算符、操作数连接而成的式子称为表达式。操作数可以是常量、
变量、函数等。
1. 算术运算符与算术表达式
算术运算符包括“+”“-”“*”“/”“%”“**”和“//”,分别表示加、减、
乘、除、求余、幂运算和整除。例如,“7%3=1”表示7除以3的余数,即1;“10**20”
表示10的20次方,即1020。由算术运算符连接的表达式称为算术表达式。例如,
“a+3*c”“(x+y)*n-7”等。
6969
41X1939 第四章 .indd 69 2021/3/11 11:08:56第四章 程序设计基础
2. 逻辑运算符与逻辑表达式
逻辑运算符包括“and”(与)、“or”(或)、“not”(非)共三个。由逻辑运算
符连接而成的表达式称为逻辑表达式。逻辑表达式的值为True或False,可对应于整数1或0
直接参与其他运算。逻辑表达式的运算顺序要根据逻辑运算符的优先级而定。假设变量a
为0,b为1,c为2,则对应的逻辑表达式及其值如表4-4所示。
表4-4 逻辑表达式及对应运算结果
运算符 逻辑表达式 描述 示例
“与”。如果 x为 False,x and y 返回 False,否则它 (a and b) 返回0。
and x and y
返回 y 的计算值。 (c and b) 返回1。
“或”。如果 x 是 True,它返回 x 的值,否则它返回 (a or b) 返回1。
or x or y
y 的计算值。 (c or b) 返回2。
“非”。如果 x为 True,返回 False;如果 x 为 not(a and b) 返回
not not x
False,它返回 True。 True。
3. 关系运算符与关系表达式
判断数据大小关系的运算符称为关系运算符,关系运算符有“>”(大于)、“>=”
(大于等于)、“<”(小于)、“<=”(小于等于)、“==”(等于)、“!= ”(不等
于)。
由关系运算符连接而成的表达式称为关系表达式。关系表达式的值为True或False,对
应于整数1或0直接参与其他运算。例如,关系表达式“5>=3”的值为True,“9<8”的值
为False 。
4. 赋值运算符与赋值表达式
在Python中对变量的赋值通过赋值运算符“=”来完成。赋值号不是等号,具有方向
性,由右边赋给左边,且赋值号左边只能是变量,而不能是常量或表达式。Python的赋值
运算符有多种,具体描述如表4-5所示。
表4-5 Python语言的赋值运算符
赋值运算符 描述 示例 赋值运算符 描述 示例
= 直接赋值。 x=y。 /= 除法赋值。 x/=y相当于x=x/y。
+= 加法赋值。 x+=y相当于x=x+y。 %= 求余赋值。 x%=y相当于x=x%y。
-= 减法赋值。 x-=y相当于x=x-y。 **= 指数幂赋值。 x**=y相当于x=x**y。
*= 乘法赋值。 x*=y相当于x=x*y。 //= 整除赋值。 x//=y相当于x=x//y。
5. 成员运算符
除了前面的运算符,Python用成员运算符判断序列中是否有某个成员。Python的成员
运算符描述如表4-6所示。
70 70
41X1939 第四章 .indd 70 2021/3/11 11:08:564.1 程序设计语言的基础知识
表4-6 Python语言的成员运算符
成员运算符 描述 示例
x in y。如果x是序列y的成员,则计算结 3 in [1,2,3,4],计算结果为True。
in
果为True,否则为False。 5 in [1,2,3,4],计算结果为False。
x not in y。如果x不是序列y的成员,则计 3 not in [1,2,3,4],计算结果为False。
not in
算结果为True,否则为False。 5 not in [1,2,3,4],计算结果为True。
6. 运算符的优先级
当一个表达式中有多种运算符时,运算的顺序将根据运算符的优先级由高到低进行运
算。如果是同级运算则按从左到右的顺序进行。Python常用运算符的优先级如表4-7
所示。
表4-7 Python常用运算符的优先级
优先级 运算符 功能及说明 优先级 运算符 功能及说明
=、%=、/=、//=
1 ** 指数运算。 6 赋值运算。
-=、+=、*=、**=
2 *、/、%、// 乘、除、求余、整除。 7 is、is not 标识运算符。
3 +、- 加运算、减运算。 8 in、not in 成员运算符。
>、>= 大于、大于等于。 9 not 逻辑非运算。
4
<、<= 小于、小于等于。 10 and 逻辑与运算。
5 ==、!= 等于、不等于。 11 or 逻辑或运算。
思 考
各小组思考程序设计中的运算符与表达式跟数学中的运算符与表达式的异同。
4 . 1 . 4 Python的函数
函数是Python语言程序的基石,是组织好的、可重复使用的、用来实现单一或相关联
功能的代码段。Python 默认带有一些常用的函数,如求绝对值函数、求和函数、求最大值
和最小值函数等。Python中常用的函数如表4-8所示。
表4-8 Python常用函数
函数名称 使用说明
abs(x) 返回x的绝对值。
len(x) 计算变量x的长度,但x必须是可以计算长度的类型。
7171
41X1939 第四章 .indd 71 2021/3/11 11:08:57第四章 程序设计基础
(续表)
函数名称 使用说明
min(x) 返回变量x的最小值。
max(x) 返回变量x的最大值。
int(x) 把变量x转换成整型。
float(x) 将变量x转换成浮点型。
sum(x) 计算变量x中元素的总和。
bin(x) 把数值x转换为二进制数字。
bool(x) x如果是False、None或是空值就返回False。
chr(x) 返回整数x对应的ASCII字符。
divmod(a,b) 返回a/b的商和余数,以元组的方式返回。
all(x) x中的所有元素都是True才会返回True。
any(x) x中的所有元素中只要有一个是True就会返回True。
input(x) 显示出信息x,并要求输入数据。
print( ) 输出函数。
拓 展
Python程序设计开发环境
Python是一种面向对象的解释型计算机程序设计语言。Python语言的安装包内置了开
发环境IDLE。为了快捷、方便地掌握Python语言编程,这里介绍另一个开源的Python发行
版本Anaconda及其程序设计开发环境Jupyter notebook,它包含了Python语言完整的内核、
功能强大的标准库和第三方扩展库等。
按照教科书配套学习资源包“关于Python语言编程环境及各章程序使用说明”的指引
方法,获取并运行文件安装Anaconda。安装成功后,双击“Anaconda Navigator”图标,选
择“Jupyter notebook”,即可进入Python程序设计开发环境,其界面如图4-4所示。
图4-4 Jupyter notebook 界面
72 72
41X1939 第四章 .indd 72 2021/3/11 11:08:574.2 运用顺序结构描述问题求解过程
Python程序设计开发环境Jupyter notebook的使用操作,可查看教科书的配套学习资
源包。
项目实施
各小组根据项目选题及拟订的项目方案,结合本节所学知识,开展以下活动。
1. 分析相应的程序设计语言的基本知识。
2. 分析所选程序设计语言的特点。
4.2
运用顺序结构描述问题求解过程
将程序的基本结构按一定规律组成并对算法进行描述,是保证和提高算法的质量,以
及编写优质程序的基础。按语句的先后顺序执行的结构称为“顺序结构”。顺序结构是结
构化程序的基本结构之一。
探究活动
问 题
项目小组成员在某网购站点上获取到如下信息:笔记本1的单价是3元,笔记本2的单
价是5元,如果两种笔记本同时购买,价格可以打八折。计算一下,购买笔记本1和笔记本
2各n本,可以优惠多少元?(以元为单位,四舍五入到小数点后两位。)
4 . 2 . 1 数据的输入与输出
在程序设计中,数据的输入输出是最基本的操作之一。在Python中,数据的输入输出
通过函数来实现。
1. 数据的输入
在Python程序设计语言中,数据输入通过input( ) 函数来实现,input( ) 的一般格式为:
< 变量 > =input('提示信息:')
该函数返回输入的对象,可输入数字、字符串和其他任意类型对象。在Python 3.x中,
不论用户输入什么类型的数据,input( )函数的返回结果都是字符串,如果需要可将其转换
为相应的类型再处理。
7373
41X1939 第四章 .indd 73 2021/3/11 11:08:57第四章 程序设计基础
2. 数据的输出
在Python 3.x中,数据输出可通过print( )函数来实现,print( )的一般格式为:
print( [object, …][, sep=' '][,end='\n'] )
说明:
(1)方括号中的项是可选的,可以省略,如省略则取系统的默认值。
(2)object是要输出的对象,可以是常量、变量或表达式等。
(3)sep后面的空格(可以指定为其他字符)表示每个输出对象之间的分隔符,如果
缺省的话,默认值是一个单个的空格。
例如,“print(4,5,6,sep='***')”,则输出结果为“4***5***6”。
(4)end后面的字符串含义为输出文本尾的一个字符串,如果缺省的话,默认值是一
个\n换行符。如果设为其他字符,如end=' ',则输出当前行的所有内容后,在末尾加一个
空格,不换行接着输出下一个print( )的输出对象。
例如,print( )输出示例程序如下:
print("hello",end=' ')
print("world")
输出为“hello world”。
(5)print( )函数支持参数格式化,与C语言的printf类似。
4 . 2 . 2 顺序结构的应用
顺序结构是最常用、最简单的程序结构,其语句执行顺序是自上而下依次执行的。如
第三章第二节“三种基本控制结构”所述,只要按照解决问题的顺序写出相应的语句,便
可设计出程序的顺序结构。顺序结构的流程图如图4-5所示。
图4-5 顺序结构的流程图
实 践
各小组编程解决本节探究活动“购买笔记本的费用优惠”的问题。
74 74
41X1939 第四章 .indd 74 2021/3/11 11:08:574.2 运用顺序结构描述问题求解过程
观 察
按照“3.1.2 计算机解决问题的过程”,解决上述问题的方法有多种,其中一种方法
步骤如下:
(1)分析问题。
先求出不使用优惠而单独购买所需费用,再求出使
用优惠方案购买所需费用,两者相减即为节省的费用。
(2)设计算法。
根据上面的分析,设计算法如下:
①输入n的值;
②令a=3×n;
③令b=5×n;
④令y=(a+b)×(1-0.8);
⑤输出结果y;
⑥结束。
图4-6 实现购买笔记本优惠
其顺序结构流程图如图4-6所示。
问题的顺序结构流程图
(3)编写程序。
根据上面设计的算法,可以编写出该问题的程序代码(见配套学习资源包“第四章\课本素
材\程序4-1”)如下:
程序4-1
n=int(input("输入购买的笔记本1和笔记本2的本数均为:"))
a=3*n
b=5*n
y=(a+b)*(1-0.8)
print("购买笔记本1和笔记本2的数量均为:",n,"本")
print("可节省的费用为:","%.2f"%y,"元")
(4)调试程序。
将程序4-1的程序代码输入计算机,然后运行程序,输入n的值为50,得到结果如下所
示。经验算,结果正确。
输入购买的笔记本1和笔记本2的本数均为:50
购买笔记本1和笔记本2的数量均为:50本
可节省的费用为:80.00元
7575
41X1939 第四章 .indd 75 2021/3/11 11:08:57第四章 程序设计基础
交 流
各小组讨论、交流以下问题:
(1)解决“购买笔记本的费用优惠”问题的其他方法。
(2)顺序结构的特点。
(3)Python程序设计语言中,还提供了位运算。查找相关资料,与项目小组成员分
享、交流关于位运算的用法。
4.3
运用选择结构描述问题求解过程
4 . 3 . 1 if语句的应用
在解决问题的过程中,常常需要对事物进行判断和选择。在程序设计中,主要使用条
件语句(if语句)来实现判断和选择。if语句在使用中包括单分支if语句和双分支if语句。
1. 单分支if语句
(1)单分支if语句的格式:
if (条件表达式):
语句A
在使用单分支if语句时需要注意:①if(条件表达式)后面
加冒号“:”;②当语句A是由多个语句构成的复合语句时,所
有语句严格遵循相同的缩进。
(2)单分支if语句的执行过程。
如果条件表达式为真,则执行语句A,然后继续往下执行;
如果条件表达式为假,则不执行语句A,然后继续往下执行。其
执行过程如图4-7所示。
图4-7 if语句的执行过程
问 题
项目小组成员在某购物网站上了解到某种笔记本搞优惠活动,规定一次购买6本以上
(含6本)10本以下(含10本)打九折,一次购买11本以上(含11本)打八折。怎样根据
笔记本的单价和购买数量编写程序计算总费用?
思 考
上述问题给出了什么条件,需要解决什么问题,解决问题的方法和步骤是怎样的?
76 76
41X1939 第四章 .indd 76 2021/3/11 11:08:584.3 运用选择结构描述问题求解过程
观 察
解决上述问题的方法有多种,其中一种步骤如下:
(1)分析问题。
设项目小组购买笔记本的数量为s本,笔记本
的单价为p元,折扣系数为j,总费用为t。根据题
意,有:
如果s<6,则j=1.0;
如果6≤s≤10,则j=0.9;
如果s≥11,则j=0.8;
又t=s×p×j,求出t的值即为所求的总费用。
(2)设计算法。
根据上面对问题的分析,解决问题的算法描述
如下:
①输入s,p的值;
②如果s<6,则j=1.0;
③如果6≤s≤10,则j=0.9;
④如果s≥11,则j=0.8;
⑤t=s×p×j;
⑥输出t的值;
⑦结束。
图4-8 网购笔记本的金额计算流程图
算法的流程图如图4-8所示。
(3)编写程序。
根据上面设计的算法,编写出解决该问题的程序(见配套学习资源包“第四章\课本
素材\程序4-2”)如下:
程序4-2
s=input("请输入购买的笔记本的数量(多少本):")
s=int(s)
p=float(input("请输入笔记本的单价(每本多少元):"))
if s<6:
j=1.0
if s>=6 and s<=10:
j=0.9
if s>=11:
j=0.8
t=s*p*j
print("总费用为:","%.1f"%t,"元")
7777
41X1939 第四章 .indd 77 2021/3/11 11:08:59第四章 程序设计基础
(4)调试程序。
将程序4-2输入计算机进行调试运行,并输入s的值为100,p的值为3.2,得到结果
如下:
请输入购买笔记本的数量(多少本):100
请输入笔记本的单价(每本多少元):3.2
总费用为:256.0元
2. 双分支if语句
(1)双分支if语句的格式:
if (条件表达式):
语句A
else:
语句B
在使用双分支if语句时需要注意:①if(条件表达式)后面加冒号“:”;②当语句A
和语句B是由多个语句构成的复合语句时,所有语句严格遵循相同的缩进。
(2)双分支if语句的执行过程。
如果条件表达式为真,则执行语句A,然后继续往下执行。如果条件表达式为假,则
执行语句B,然后继续往下执行。其执行过程如图4-9所示。
图4-9 双分支if语句执行过程
问 题
项目小组成员在某购物网站上看到三种笔记本的优惠价各不相同,笔记本1、笔记本2
和笔记本3每本分别优惠价为a元、b元和c元,编程输出其优惠价的最大值。
思 考
“求网购笔记本的费用”和“求网购笔记本优惠的最大值”有何区别?在“求网购笔
记本优惠的最大值”中,求最值的方法有哪些,该如何编程实现?
观 察
解决上述问题的方法有多种,其中一种的方法步骤如下:
78 78
41X1939 第四章 .indd 78 2021/3/11 11:08:594.3 运用选择结构描述问题求解过程
(1)分析问题。
对于输入的三个数a,b,c,设其中的最大数为m,先找出a和b中较大的数赋给m,然
后将m与c比较,从而找出三个数中最大的数。
(2)设计算法。
根据上面的分析,解决问题的算法描述如下:
①输入三个数a,b,c;
②如果a>b,则m=a;否则m=b;
③如果c>m,则m=c;
④输出m的值;
⑤结束。
(3)编写程序。
根据前面设计的算法,编写出解决该问题的程序(见配套学习资源包“第四章\课本
素材\程序4-3”)如下:
程序4-3
print("请输入三种笔记本的优惠价(元):")
a,b,c=input( ).split( )
a=float(a)
b=float(b)
c=float(c)
if a>b:
m=a
else:
m=b
if c>m:
m=c
print("优惠价最大的为:",m,"元")
(4)调试程序。
将程序4-3输入计算机进行调试运行,并输入a,b,c的值分别为32.5,63.4,78,结
果如下:
请输入三种笔记本的优惠价(元):
32.5 63.4 78
优惠价最大的为:78.0元
3. if语句的嵌套
if语句允许嵌套,即if语句中的语句A和语句B还可以是if语句。
7979
41X1939 第四章 .indd 79 2021/3/11 11:08:59第四章 程序设计基础
4 . 3 . 2 if...elif...else语句的应用
应用if条件语句可以快速地实现程序的分支选择,但当分支比较多时,用if...elif...else
语句来实现比较简便。
(1)if...elif...else语句格式如下:
if (表达式1):
语句1
elif (表达式2):
语句2
……
elif (表达式N):
语句N
else:
语句N+1
(2)if...elif...else语句的执行过程。
if...elif...else语句的执行过程如图4-10所示。
图4-10 if...elif...else语句执行过程
80 80
41X1939 第四章 .indd 80 2021/3/11 11:08:594.3 运用选择结构描述问题求解过程
问 题
项目小组成员经过比较,打算在某购物网站购买三种笔记本作为奖品和纪念品,它们
的单价分别为6元、5元和4元。若项目小组共有经费x元,他们希望买尽可能多的笔记本作
为奖品和纪念品,并能把经费用完。那么,这三种笔记本各可以买多少本?
思 考
根据上述问题给出的条件,思考如何编程找出符合条件的采购方案。
观 察
解决上述问题的方法有多种,其中一种方法步骤如下:
(1)分析问题。
因为要买尽量多的笔记本,所以选择4元的笔记本,可以买到的本数最多为 本,但不
一定能刚好把经费用完。因此,项目小组可以按如下方案购买笔记本:
如果买完 本单价为4元的笔记本,还剩1元,则单价为4元的笔记本少买1本,换成买
一本单价为5元的笔记本即可;如果买完 本单价为4元的笔记本,还剩2元,则单价为4元
的笔记本少买1本,换成买一本单价为6元的笔记本即可;如果买完 本单价为4元的笔记
本,还剩3元,则单价为4元的笔记本少买2本,换成买一本单价为5元的和一本单价为6元
的笔记本即可。
(2)设计算法。
根据分析,可先设购买笔记本的经费总费用共为x元,购买单价为6元、5元、4元笔记
本的数量分别为m,n,k,具体算法描述如下:
①输入x的值;
②k=x//4;
③y=x%4;
④如果y的值为0,则m=0,n=0;
⑤如果y的值为1,则m=0,n=1,k=k-1;
⑥如果y的值为2,则m=1,n=0,k=k-1;
⑦如果y的值为3,则m=1,n=1,k=k-2;
⑧输出m,n,k的值;
⑨结束。
(3)编写程序。
根据设计的算法,编写出解决该问题的程序(见配套学习资源包“第四章\课本素材\程
序4-4”)如下:
8181
41X1939 第四章 .indd 81 2021/3/11 11:08:59第四章 程序设计基础
程序4-4
x=int(input("输入经费的值:"))
k=x//4
y=x%4
if y==0:
m=0
n=0
elif y==1:
m=0
n=1
k=k-1
elif y==2:
m=1
n=0
k=k-1
elif y==3:
m=1
n=1
k=k-2
print("6元的笔记本为:%d 本"% m)
print("5元的笔记本为:%d 本"% n)
print("4元的笔记本为:%d 本"% k)
(4)调试程序。
将程序4-4输入计算机进行调试运行,如输入x的值为398,结果如下:
输入经费的值:398
6元的笔记本为:1本
5元的笔记本为:0本
4元的笔记本为:98本
讨 论
各小组讨论以下问题:
(1)if语句和if...elif...else语句在格式、功能、应用等方面的异同。
(2)选择结构的特点。
82 82
41X1939 第四章 .indd 82 2021/3/11 11:09:004.3 运用选择结构描述问题求解过程
实 践
某学习小组的三名同学为判断某年是否为闰年的问题,各编写程序如下:
程序1:
x=int(input("请输入年份:"))
year=x
if x%100==0:
if x%400==0:
print("%d年是闰年"%d x)
else:
print("%d年不是闰年"%d x)
elif x%4==0:
print("%d年是闰年"%d x)
else:
print("%d年不是闰年"%d x)
程序2:
x=int(input("请输入年份:"))
year=x
if x%100==0:
if x%400==0:
x=x/100
if x%4>0:
print("%d年不是闰年"%d year)
else:
print("%d年是闰年"%d year)
程序3:
x=int(input("请输入年份:"))
year=x
if x%100==0 or (x%100>0 and x%4==0 ):
print("%d年是闰年"%d x)
else:
print("%d年不是闰年"%d x)
各小组完成以下实践内容:
(1)上机调试程序,分别验证三个程序的正确性。
(2)在这三个程序中,分别采用了不同的表达式作为判断闰年的条件。分析、讨论
哪一种更好。
8383
41X1939 第四章 .indd 83 2021/3/11 11:09:00第四章 程序设计基础
拓 展
Python语言程序调试
Python 是解释型语言,翻译一行就执行一行,因此在运行程序的过程中,只要任何一
行出现错误,程序就会立即显示出错误信息并停止执行。此种方式虽然在调试上比较低效
(因为每次只会发现一个错误),但是却很容易知道错误发生的原因以及位置。
%debug命令用于调试代码,它有两种用法:一种是在执行代码之前设置断点进行调
试;第二种则是在代码抛出异常之后,执行%debug命令查看调用堆栈。如图4-11是代码
执行后出现的异常信息。
图4-11 异常提示
上面的程序中出现了ZeroDivision Error异常,下面用%debug查看调用堆栈。在调试模式
下可以使用ipdb模块提供的调试命令,例如用p x显示变量x的值,如图4-12所示。
图4-12 %debug调试
84 84
41X1939 第四章 .indd 84 2021/3/11 11:09:014.4 运用循环结构描述问题求解过程
调试程序时,我们还可以先设置断点,然后运行程序。但是%debug的断点需要指定文
件名和行号,使用起来并不方便。用%%func_debug单元命令,可以中断指定运行的函数。
在如图4-13所示的例子中,程序是在np.unique( )的第一行中断运行,然后通过输入n命令
单步运行程序,最后输入c继续运行。
图4-13 %%func_debug调试
4.4
运用循环结构描述问题求解过程
程序的循环结构是程序设计中常用到的基本结构之一。循环是让计算机自动完成重
复工作的常见方式。for循环、while循环、循环嵌套、循环控制等都是程序循环结构的主
要内容。
4 . 4 . 1 for循环的应用
for循环语句的一般格式如下:
for 循环变量 in 列表:
语句或语句组
for循环依次把列表中的每个元素逐个迭代出来。冒号“:”代表下一行是循环的第一
行,但是循环体在书写时需要缩进。在for循环中,从for语句末尾的冒号开始至其下面没有
缩进的代码之间都是其包含的需要重复执行的部分。因此,for循环所包含的语句是以缩进
为标志的。具体如表4-9所示。
8585
41X1939 第四章 .indd 85 2021/3/11 11:09:02第四章 程序设计基础
表4-9 缩进循环体示例
是否缩进 循环体示例代码 示例结果
1
good
2
for value in [1,2,3,4,5]:
good
print(value)
3
有缩进 print('good')
good
4
good
5
good
1
for value in [1,2,3,4,5]: 2
print(value) 3
无缩进
print('good') 4
5
good
需要注意的是,列表可以有几种表达方式:
(1)直接罗列的方式。
如表4-9中代码“for value in [1,2,3,4,5]:”就是直接罗列的方式。
(2)先定义后使用的方式,如表4-10所示。
表4-10 先定义后使用的列表示例
循环体先定义后使用示例代码 示例结果
1
values=[1,2,3,4,5] 2
for value in values: 3
print(value) 4
print('good') 5
good
(3)使用range( )函数。
range( )函数是让Python从指定的第一个值开始数,并在到达所指的第二个值后停
止,因此不包含第二个值。如range(1,6)其实是生成一个1~6的整数(不包含6),如表
4-11所示。
86 86
41X1939 第四章 .indd 86 2021/3/11 11:09:024.4 运用循环结构描述问题求解过程
表4-11 range( )函数示例
range()函数示例代码 示例结果
1
for value in range(1,6): 2
print(value) 3
print('good') 4
5
good
使用range( )函数时,还可指定步长,如表4-12所示。
表4-12 range( )函数指定步长示例
range()函数指定步长示例代码 示例结果
2
for value in range(2,11,2):
4
print(value)
6
8
10
当然,使用range( )函数时,数值列表也可以是降序的,如range(10,1,-2)就是生成10至2
的偶数(降序),具体如表4-13所示。
表4-13 range( )函数降序功能示例
range()函数降序示例代码 示例结果
for value in range(10,1,-2): 10
print(value) 8
6
4
2
问 题
假如项目小组经过讨论,决定先网购单价为1元至10元的十种笔记本各1本,且每一种
只买1本,那么该如何编程计算一共要花多少元?
思 考
如何用for循环语句编程解决上述“网购物品累计费用计算”问题?
8787
41X1939 第四章 .indd 87 2021/3/11 11:09:02第四章 程序设计基础
观 察
解决上述问题的方法有很多,其中一种方法步骤如下:
(1)分析问题。
这个问题相当于要计算从1到10的累加值。1~10的累加就是
计算1+2+…+10,可以用for循环结构编程来解决这个问题。
(2)设计算法。
根据上述分析,可设计如下算法:需要有一个循环变量从
1变化到10,将该变量命名为i;还需要另外一个临时变量不断
和该变量进行加法运算,并记录运算结果,将临时变量命名为
sum;变量i每增加1时,就和变量sum进行一次加法运算,变量
sum记录的是累加的结果。该算法流程图如图4-14所示。
(3)编写程序。
根据上面设计的算法,编写出解决该问题的程序(见配套学
图4-14 累加算法流程图
习资源包“第四章\课本素材\程序4-5”)如下:
程序4-5
sum=0
for i in range(1,11):
sum=sum+i
print("the result:",sum)
(4)调试程序。
将程序4-5输入计算机进行调试运行,所得结果为“the result:55”。
4 . 4 . 2 while循环的应用
while循环是当型循环,只要条件满足,就不断循环;否则,退出循环。while循环语句
的格式:
while (表达式):
语句或语句组
(1)表达式一般是一个关系表达式或一个逻辑表达式,表达式的值应该是一个逻辑
值真(True)或假(False)。
(2)当表达式的值为真时,执行循环体语句;当表达式的值为假时,退出循环,执
行循环体外的下一条语句(即while后面没有缩进的第一条语句)。
(3)每次循环都是执行完循环体语句后回到表达式处重新开始判断,重新计算表达
88 88
41X1939 第四章 .indd 88 2021/3/11 11:09:024.4 运用循环结构描述问题求解过程
式的值。一旦表达式的值为假就退出循环,为真时就继续执行循环体语句。
(4)循环体中必须有改变条件表达式值的语句,否则将成为死循环。
(5)while循环可以用流程图来演示执行过程,如图4-15所示。
图4-15 while循环执行过程流程图
问 题
项目小组为了筹集购买奖品和纪念品的费用,准备开展一次募捐活动,计划向第一个
赞助人募集20元,向第二个赞助人募集25元……后一个比前一个多募捐5元,依次下去,
第几个人募捐后募集到的总费用累计超过500元?
思 考
如何用while循环语句编程解决上述的募集费用计算问题?
观 察
用while循环语句编程解决上述问题的方法有多种,编程时要注意条件表达式的构成,
现给出其中一种方法的步骤如下:
(1)分析问题。
设所拉赞助人的数量为num(num=1,2,3,…),每次募集的费用为money,每次募
集之后总费用为sum,则sum可以用如下的式子表示:
sum=20+25+30+…
于是这个问题就可以转化为:当sum≥500时,求num的值。
(2)设计算法。
根据上述的分析,设计算法如下:
①令num=1;
②令money=20;
③令sum=20;
8989
41X1939 第四章 .indd 89 2021/3/11 11:09:03第四章 程序设计基础
④num=num+1;
⑤money=money+5;
⑥sum=sum+money;
⑦如果sum<500,则返回步骤④;
⑧输出num的值;
⑨结束。
(3)编写程序。
根据上面设计的算法,编写出解决该问题的程序(见配套学习资源包“第四章\课本
素材\程序4-6”)如下:
程序4-6
num=1
money=20
sum=20
while sum<500:
num=num+1
money=money+5
sum=sum+money
print(num)
(4)调试程序。
将程序4-6输入计算机进行调试运行,得出结果为12。
交 流
各小组讨论、交流如下问题:
(1)如何根据上述解法的自然语言描述画出其算法流程图?
(2)对于上述问题的解法,如果改变几个变量的初始值,假设令“num=0,money=20,
sum=0”,那么,while循环体中的程序段应该如何编写?它们之间的语序能改变吗?为
什么?
4 . 4 . 3 循环嵌套的应用
单独使用for循环或while循环单循环语句,往往无法解决复杂的问题。如需要解决类
似“工作要做很多遍,而每一遍工作都是需要重复做一些事情”的问题,就要用到多重循
环,即“循环嵌套”。如果某一种循环语句中包含着自身或其他循环语句,就称为循环的
“嵌套”。for循环或while循环之间可以相互嵌套。
90 90
41X1939 第四章 .indd 90 2021/3/11 11:09:034.4 运用循环结构描述问题求解过程
问 题
项目小组经过讨论,最后选择购买单价分别为1.8元的笔记本、1.9元的笔、2.1元的
小饰品作为活动的奖品和纪念品,每一种物品至少买100件,并且尽可能地用完1000元经
费。如何设计方案,才能实现购买物品数量最多呢?如数量相同的情况下余额最小的方案
为最佳,则最佳方案中每一种物品的数量是多少?余额是多少?
思 考
如何运用循环嵌套的方法编程解决上述的最优采购方案设计问题?
观 察
要解决这个问题,需要用到循环嵌套的知识,下面提供了其中一种解法:
(1)分析问题。
设购买单价为1.8元、1.9元、2.1元的物品数量分别为x,y,z,当前余额为r元,所买
物品总数量为s,根据题意有下面关系式:1.8x+1.9y+2.1z≤1000(x,y,z∈N*,N*为自
然数)。我们分别将x,y,z从100至555,526,476逐个穷举,如果x,y,z的值满足式子
1.8x+1.9y+2.1z≤1000(x,y,z∈N*,N*表示自然数),如x+y+z>s,则s=x+y+z,r=1000-
(1.8x+1.9y+2.1z),并记录此时x,y,z的值;如x+y+z=s,且1000-(1.8x+1.9y+2.1z)s,则s=x+y+z,r=1000-(1.8x+1.9y+2.1z),
x1=x,y1=y,z1=z;若x+y+z=s,且1000-(1.8x+1.9y+2.1z)s:
s=x+y+z
r=1000-(1.8*x+1.9*y+2.1*z)
x1=x
y1=y
z1=z
if x+y+z==s and r>=1000-(1.8*x+1.9*y+2.1*z):
s=x+y+z
r=1000-(1.8*x+1.9*y+2.1*z)
x1=x
y1=y
z1=z
else:
break # 当1.8*x+1.9*y+2.1*z>1000,则可以退出循环,
避免循环空转而浪费时间
print("符合条件的最优方案是:")
print("单价1.8元的物品的数量是:",x1)
print("单价1.9元的物品的数量是:",y1)
print("单价2.1元的物品的数量是:",z1)
print("共买到的礼物总数量为:",s)
print("余款还剩:",r,"元")
(4)调试运行。
将程序4-7输入计算机进行调试运行,结果如下:
符合条件的最优方案是:
单价1.8元的物品的数量是:327
单价1.9元的物品的数量是:106
单价2.1元的物品的数量是:100
共买到的礼物总数量为:533
余款还剩:0.0元
92 92
41X1939 第四章 .indd 92 2021/3/11 11:09:034.4 运用循环结构描述问题求解过程
交 流
各小组讨论、交流for循环、while循环语句在格式、功能、应用等方面的异同及其各
自的特点。
实 践
1.我们用for循环计算了从1到10的累加值,并且使用的循环控制变量为递增方式。借
助此问题的学习,尝试设计用递减方式的循环控制编写代码。
2.用while循环编程实现计算从1到10的累加值,并对for循环、while循环的使用进行
对比。
4 . 4 . 4 循环控制的应用
循环控制包含控制循环变量的变化方式和控制循环的跳转。无论是for循环还是while循
环,都需要一个控制循环的变量来控制循环的执行。但是,有些循环仅靠循环变量自身的
变化难以达到想要的控制效果,因此需要用到控制循环的跳转语句。实现控制循环的跳转
需要用到break和continue两个关键字。其中,break是中断循环,continue是跳出本次循环体
的执行。
1. break语句
在循环结构中,可以用break语句跳出当前循环体,从而中断当前循环。在实际运用
中,往往是在循环体中使用某一个条件来选择是否中断循环,即跳出当前循环,继而执行
当前循环外的下一条语句。也就是说,当某个条件成立的时候,需要立即退出循环,不再
运行循环中余下的代码,也不管循环控制变量的条件测试的结果如何。使用break语句,即
可让程序能按照要求执行要执行的代码。
2. continue语句
continue语句是对break语句的补充。continue不是立即跳出循环体,而是当条件符合需
要跳转的时候,跳过该次循环结束前的语句,回到循环开头的条件测试部分,重新开始执
行循环。同理,在实际运用中,往往是在循环体中使用某一个条件来选择是否跳转循环。
项目实施
各小组根据项目选题及拟订的项目方案,结合本节所学知识,比较程序设计几种基本
结构的特点,利用几种程序结构完成相应的程序编写,进一步完善该项目方案中的各项学
习活动,并参照项目范例的样式,撰写相应的项目成果报告。
9393
41X1939 第四章 .indd 93 2021/3/11 11:09:04第四章 程序设计基础
本章扼要回顾
成果交流
各小组运用数字化学习工具,将所完成的项目成果,在小组或班级上进行展示与交
流,共享创造、分享快乐。
活动评价
各小组根据项目选题、拟订的项目方案、实施情况以及所形成的项目成果,利用教科
书附录2的“项目活动评价表”,开展项目学习活动评价。
拓 展
函数的定义与调用
在面对较大项目的时候,随着堆砌的代码越来越多,编程人员发现有很多功能重复的
模块被反复地键入和执行。因此需要考虑是否可以将这些功能具体且经常使用的代码段,
从程序中抽离出来单独封装。于是,函数的概念出现在编程语言里。在对函数的设计方
面,我们可以向函数提供必要的参数输入,同时可以调用函数获取所需的返回值。Python
采用def 作为关键词来定义一个函数,具体例子如下:
定义和调用函数getValue(b,r,n),根据本金b、年利率r和年数n,计算最终收益v。提
示:v=b(1+r)n。
def getValue(b,r,n): #创建函数对象getValue
v=b*((1+r)**n) #计算最终收益v
return v #使用return返回值
total = getValue(1000,0.05,5) #调用函数getValue
print(total) #打印结果
程序运行结果为:1276.2815625000003。
94 94
41X1939 第四章 .indd 94 2021/3/11 11:09:04本章扼要回顾
本章扼要回顾
本章扼要回顾
同学们通过本章学习,根据“程序设计基础”知识结构图,扼要回顾、总结、归纳学
过的内容,建立自己的知识结构体系。
回顾与总结
9595
41X1939 第四章 .indd 95 2021/3/11 11:09:06第四章 程序设计基础
本章学业评价
同学们完成下列测试题(更多的测试题可以在教科书的配套学习资源包中查看),并
通过“本章扼要回顾”以及本章的项目活动评价,综合评价自己在信息技术知识与技能、
解决实际问题的过程与方法,以及相关情感态度与价值观的形成等方面,是否达到了本章
的学习目标。
1. 单选题
(1)在Python中,元素是无序不重复的是( )。
A.列表 B.元组 C.集合 D.字符串
(2)在以下运算符中,优先级最低的运算符是( )。
A.* B.!= C.+ D.=
(3)有以下程序段:
sum=1
for i in range(1,5):
sum=sum*i
print(sum,i)
程序的运行结果为( )。
A.24 5 B.120 5 C.24 4 D.120 4
2. 思考题
编写函数,接收一个正偶数为参数,输出两个素数,并且这两个素数之和等于原来的
正偶数。如果存在多组符合条件的素数,则全部输出。
3. 情境题
依法纳税是每一个公民应尽的义务。同学们上网学习2018年8月31日第七次修正的
《中华人民共和国个人所得税法》,了解居民个人应纳税所得额的含义和个人所得税税率
表(综合所得适用),试设计一个程序计算以下人员应缴个人所得税额。
人员 A B C D E
全年应纳税所
763 000 550 000 360 000 125 000 35 000
得额/元
应缴个人所得
税额/元
96 96
41X1939 第四章 .indd 96 2021/3/11 11:09:06第第六一章章
第六章 程序设计基础
程数序据设与计信基息础
第五章
数据处理和可视化表达
随着移动互联网和物联网的飞速发展,人类社会产生的数
据以惊人的速度增长。海量的数据几乎包含一切形式的结构
化、半结构化以及非结构化的数据,如网络日志、音频、视
频、图片、地理位置信息等。如何高效地对这些数据进行采
集、存储、处理,并从中发掘到有价值的信息,是数据分析处
理需要解决的问题。
本章将通过“网络平台的客户行为数据分析和可视化表
达”项目,进行自主、协作、探究学习,让同学们认识大数据
及其特征,认识大数据对人们日常生活的影响,了解数据采
集、分析和可视化表达的基本方法;学会选用恰当的软件工具
或平台处理数据,完成分析报告;理解对数据进行保护的意
义,从而将知识建构、技能培养与思维发展融入运用数字化工
具解决问题和完成任务的过程中,促进信息技术学科核心素养
达成,完成项目学习目标。
认识大数据
数据的采集
数据的分析
数据的可视化表达
9797
41X1939 第五章.indd 97 2021/3/11 11:08:19第五章 数据处理和可视化表达
网络购
物平台客户行为数据分析和可视化表达
网络购物平台客户行为数据分析和可视化表达
项目范例
情 境
网络购物中,消费者购物的任何行为细节都会被服务器所记录。通过大数据分析,商
家可以了解消费者的偏好甚至预测其购买行为,如图5-1所示。大数据分析使得商家可以
追踪客户的行为并确定最有效的方式以提升客户对购物平台的忠诚度,根据客户的个性化
需求提供相应的产品或服务以获得更大的市场占有率。
图5-1 客户网购行为分析
主 题
网络购物平台客户行为数据分析和可视化表达
规 划
根据项目范例的主题,在小组中组织讨论,利用思维导图工具,制订项目范例的学习
规划,如图5-2所示。
98 98
41X1939 第五章.indd 98 2021/3/11 11:08:21网络购物平台客户行为数据分析和可视化表达
网络购
物平台客户行为数据分析和可视化表达
图5-2 “网络购物平台客户行为数据分析和可视化表达”项目学习规划
探 究
根据项目学习规划的安排,通过调查、案例分析、文献阅读和网上资料搜索,开展
“网络购物平台客户行为数据分析和可视化表达”项目学习探究活动,如表5-1所示。
表5-1 “网络购物平台客户行为数据分析和可视化表达”项目学习探究活动
探究活动 学习内容 知识技能
大数据及其特征。
认识大数据及其特征。
数据的来源。
了解数据采集的基本方法。
网购行为数据采集
理解数据对日常生活的影响。
数据对日常生活的影响。
理解对数据进行保护的意义。
数据保护的意义。
数据分析方法。
了解数据分析的基本方法。
网购行为数据分析
学会选用恰当工具处理数据。
选择数据分析处理工具。
可视化的方法和方式。
网购行为数据 了解数据可视化表达的基本方法。
可视化表达 学会选用恰当工具可视化表达数据。
选择数据可视化表达处理工具。
实 施
实施项目学习各项探究活动,进一步认识消费者网络购物行为特点。
9999
41X1939 第五章.indd 99 2021/3/11 11:08:22第五章 数据处理和可视化表达
成 果
在小组开展项目范例学习过程中,利用思维导图工具梳理小组成员在“头脑风暴”活
动中的观点,建立观点结构图,运用多媒体创作工具(如演示文稿、在线编辑工具等),
综合加工和表达,形成项目范例可视化学习成果,并通过各种分享平台发布,共享创造、
分享快乐。例如,运用在线编辑工具制作的“网络购物平台客户行为数据分析和可视化表
达”可视化报告,可以在教科书配套学习资源包中查看,其目录截图如图5-3所示。
图5-3 “网络购物平台客户行为数据分析和可视化表达”可视化报告目录截图
评 价
根据教科书附录2的“项目活动评价表”,对项目范例的学习过程和学习成果在小组
或班级上进行交流,开展项目学习活动评价。
项目选题
同学们以3~6人组成一个小组,选择下面一个参考主题,或者自拟一个感兴趣的主
题,开展项目学习。
1.网约车平台客户行为的数据分析和可视化表达
2.社交平台用户行为的数据分析和可视化表达
3.网络学习平台学生行为的数据分析和可视化表达
项目规划
各小组根据项目选题,参照项目范例的样式,利用思维导图工具,制订相应的项目
方案。
100100
41X1939 第五章.indd 100 2021/3/11 11:08:225.1 认识大数据
方案交流
各小组将完成的方案在全班进行展示交流,师生共同探讨、完善相应的项目方案。
5.1
认识大数据
在日常工作、生活和学习等活动中,人们的一举一动基本上都可以数字化。例如,从
家中出门到达工作地点选择的交通工具、路线和所用时间;每刷一次微博、拨打一次电
话、发送一条短信、网上银行转账或者浏览相关网站,甚至所在的地理位置信息等都产生
了大量数据。
在第一章,我们已经介绍了数据的基本概念与特征,下面我们将学习大数据的基本概
念与特征。
5 . 1 . 1 大数据
大数据是指无法在可承受的时间范围内用常规软件工具进行高效捕捉、管理和处理的
数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海
量、高增长率和多样化的信息资产。
大数据的产生是与人类日益普及的网络行为所伴生的:物联网、云计算、移动互联
网、车联网、手机、电脑以及遍布地球各个角落的各种各样的传感器,无一不是数据的来
源或是承载的方式。互联网生成的数据量,不仅远超此前一切人类所生成的数据量的总
和,而且在以大爆发性的速度不断增长。
在天气预报、大气监测、地球物理探矿和天体运动观测等科学实验和科学观察等活动
中,各种各样的传感器每时每刻都在产生大量的数据。
大数据已成为人们提取信息、做出决策的重要依据,是推动信息社会发展的重要资源。
5 . 1 . 2 大数据的特征
我们正处于一个大数据时代,大数据使人们的生活、工作与思维方式等都产生了巨大
的变革。那么,大数据究竟具有哪些特征?
101101
41X1939 第五章.indd 101 2021/3/11 11:08:22第五章 数据处理和可视化表达
探究活动
分 析
仔细阅读以下案例,分析大数据具有哪些特征。
案例1:某市交通智能化分析平台的数据来源于道路交通、电信、地理信息系统等各
行各业。例如,交通卡刷卡每天产生1900万条记录,手机定位数据每天产生1800万条,出
租车运营数据每天产生100万条,电子停车收费系统数据每天产生50万条,等等。这些数
据在体量和速度上都达到了大数据的规模。
案例2:搜索引擎公司通过跟踪网民对“感冒症状”以及“治疗”等关键词的搜索,
发现某个时段在某个区域内搜索数量急剧增长,从而成功预测了甲型H1N1流感的暴发时
间、地域。
案例3:目前,某基于大数据的网约车平台已覆盖全国400多个城市,涵盖出租车、快
车、顺风车、代驾、专车、试驾以及租车等多项业务,为人们的出行带来极大的便利。我
们只需在网约车APP上输入或者说出目的地,强大的智能系统就立刻分配订单,即时通知
附近司机;借助定时定位系统,我们可以看到司机的大致位置以及预计到达时间。
(1)从互联网产生大数据的角度来看,大数据具有“4V”特征:大量(Volume)、
多样(Variety)、低价值密度(Value)、高速(Velocity)。
第一,数据体量巨大。从TB级别跃升到PB级别。
第二,数据类型繁多。如网络日志、视频、图片、地理位置信息等。
第三,价值密度低。以视频为例,在连续不间断的监控过程中,有用的数据可能仅仅
一两秒。
第四,变化速度快。数据来自世界各地的网络终端,且以秒为单位快速变化。
(2)从互联网思维的角度来看,大数据具有三个特征:样本渐趋于总体,精确让位
于模糊,相关性重于因果。
第一,在大数据时代强调数据要全量而不是抽样,即强调数据规模全量,而不是强调
数量巨大。大数据时代有了更好的数据采集手段,让获取全量数据成为可能。
第二,大数据时代研究的数据如此之多,追求的不是精确性,而是模糊性。在大数据
时代,只要掌握了大体的发展方向即可,适当忽略微观层面上的精确度,会让我们在宏观
层面拥有更好的洞察力。
第三,大数据时代不是因果关系,而是相关关系。在大数据时代,无须再紧盯事物之
间的因果关系,而应该寻找事物之间的相关关系;相关关系也许不能准确地告诉我们某件
事情为何会发生,但是会提醒我们这件事情正在发生。
(3)从大数据存储与计算的角度来看,大数据具有两个特征:分布式存储和分布式
并行计算。
第一,大数据存储在互联网不同的服务器与各客户终端。
第二,应用分布式并行计算处理互联网的大数据。
102102
41X1939 第五章.indd 102 2021/3/11 11:08:225.1 认识大数据
讨 论
以小组为单位上网搜索资料,讨论传统数据与大数据的区别,并填入表5-2中。
表5-2 传统数据与大数据的区别
传统数据 大数据
5 . 1 . 3 大数据对日常生活的影响
1.大数据使人们日常生活更为便捷
(1)方便支付。中国的移动支付发展得特别快。在中国,每三个手机用户,就有两
个在使用移动支付。中国是全球最大的移动支付市场。医院、餐厅、菜市场、加油站,
甚至路边摊,都在使用移动支付。中国人今天的生活,已经越来越有科技含量。
(2)方便出行。应用交通系统的大数据,网络约车出行,智能导航行车避免堵车,
无人驾驶,智能地图方便寻路,等等。
(3)方便购物与产品推介。网络购物不但节省人们出行购物的时间,而且帮助企业
有效判断用户的信息需求和消费需求,对客户进行产品推介,方便人们选购产品。
(4)方便看病与诊病。应用网络预约挂号,减轻与节省患者排队挂号看病的辛劳与
时间;同时,又方便医生提前分析患者的病史数据,以便更科学诊病。
2.大数据对人们日常生活产生的负面影响
(1)个人信息泄露。在大数据时代,我们使用的手机、计算机、网络、信用卡等信
息科技,都会产生数据。这些数据时刻存在泄露的风险。
(2)信息伤害与诈骗。在大数据时代,我们的网络信息随时都可能被不法分子窃
取,并对我们及身边的亲人造成伤害。
103103
41X1939 第五章.indd 103 2021/3/11 11:08:22第五章 数据处理和可视化表达
5.2
数据的采集
数据的来源广泛(主要是互联网和物联网)、类型丰富、规模巨大。采集数据首先要
明确数据应用项目的需求,围绕选定的项目主题,制订数据采集的需求清单和内容大纲,
再采用适当的方法和工具进行采集。
5 . 2 . 1 数据采集的方法和工具
数据采集的基本方法包括系统日志采集法、网络数据采集法和其他数据采集法。
1.系统日志采集法
在信息系统中,系统日志是记录系统中硬件、软件和系统问题的信息文件。系统日志
包括操作系统日志、应用程序日志和安全日志。系统日志采集数据的方法通常是在目标主
机上安装一个小程序,将目标主机的文本、应用程序、数据库等日志信息有选择地定向推
送到日志服务器进行存储、监控和管理。
通过日志服务器可以监视系统中发生的事件,可以检查错误发生的原因,或者寻找受
到攻击时攻击者留下的痕迹。例如,安全管理信息系统就是以系统日志服务器采集原始日
志数据,以日志记录文本文件实现日志数据的监控和保存,以数据库操作进行日志有效信
息的管理工作。
2.网络数据采集法
网络数据采集是指通过网络爬虫或网站公开API(Application Programming Interface,
应用程序接口)等方式从网站上获取数据信息。网络爬虫从一个或若干初始网页的URL
(Uniform Resource Locator,统一资
源定位符)开始,获得初始网页上的
URL,在抓取网页的过程中,不断从
当前页面上抽取新的URL放入队列,
直到满足系统的一定停止条件(图
5-4)。该方法可以将非结构化数据
从网页中抽取出来,将其存储为统一
的本地数据文件,并以结构化的方式
存储。它支持图片、音频、视频等文
件或附件的采集,附件与正文可以自
动关联。
图5-4 网络爬虫
104104
41X1939 第五章.indd 104 2021/3/11 11:08:235.2 数据的采集
拓 展
Python网络数据采集程序使用的扩展库
在众多的数据采集工具中,Python以其简洁、开源和包容的特性在数据采集和分析领
域独树一帜。由于Python可以安装第三方扩展库模块来扩展功能,因此使用Python进行网
络数据采集和分析显得简单易用。以下是使用Python进行网络数据采集和分析所需要的一
些第三方扩展库。
(1)NumPy。
NumPy(Numerical Python)是构建科学计算最基础的软件库,为Python中的n维数组
和矩阵的操作提供了大量有用的功能。该库还提供了NumPy数组类型的数学运算向量化,
可以提升性能,加快执行速度。
(2)SciPy。
SciPy是一个工程和科学软件库,包含线性代数、优化、集成和统计的模块。SciPy库
的主要功能建立在 NumPy 的基础之上,因此它的数组大量使用了NumPy。它通过其特定
的子模块提供高效的数值例程操作,如数值积分等。SciPy的所有子模块中的函数都有详细
的介绍文档。
(3)Pandas。
Pandas是一个Python包,旨在通过标记(labeled)和关系(relational)数据进行工作,
简单直观。Pandas主要用于快速简单的数据操作、聚合和可视化呈现。库中有两个主要的
数据结构,一维数组(Series)和二维数组(DataFrame)结构。
(4)Matplotlib。
Matplotlib是Python的一个2D绘图库,以各种硬拷贝格式和跨平台的交互式环境生成
出版质量级别的图形。在NumPy、SciPy和Pandas的帮助下,通过 Matplotlib,开发者仅需
输入几行代码,便可以生成绘图、直方图、功率谱、条形图、散点图等。
在Python模块库中有大量模块可供使用,要想使用这些文件,就需要用import语句把
指定模块导入当前程序中。使用import语句导入模块的语法如下:
import module
关键字 模块名
from import语句也是导入模块的一种方法,是导入指定模块内的指定函数方法。使用
from import语句导入模块内指定方法的语法如下:
from module import name
关键字 模块名 关键字 方法名
体 验
打开并运行配套学习资源包“第五章\课本素材\程序5-1”文件,其截图如图5-5所
示,指出程序中import语句的作用。
105105
41X1939 第五章.indd 105 2021/3/11 11:08:23第五章 数据处理和可视化表达
图5-5 程序5-1和绘图结果
实 践
利用配套学习资源包提供的装虚拟机文件,搭建“网络商城”网站,具体操作详见配
套学习资源包的说明文件。
打开并运行配套学习资源包“第五章\课本素材\程序5-2”。其中,语句import bs4和
import requests用于调用爬虫模块,import re用于调用正则表达式模块,import xlwt用于调
用Excel模块,import datetime用于调用日期和时间模块。程序5-2的关键过程及语句如下:
(1)爬取页面设置。
for i in range(0, 5): # 循环5次,就是5个页面的商品数据
payload['page'] = i+ 1 # 此处为页码,根据网页参数具体设置
resp = requests.get(url, params=payload)
soup = bs4.BeautifulSoup(resp.text, "html.parser")
print(resp.url) # 打印访问的网址
resp.encoding = 'utf-8' # 设置编码
106106
41X1939 第五章.indd 106 2021/3/11 11:08:235.2 数据的采集
(2)爬取商品标题。
all_title = soup.find_all('a', class_=re.compile("history-item product"))
for j in all_title:
soup_title = bs4.BeautifulSoup(str(j), "html.parser")
title.append(soup_title.a['title'])
(3)爬取商品价格。
all_price = soup.find_all('span', itemprop="price")
for k in all_price:
soup_price = bs4.BeautifulSoup(str(k), "html.parser")
price.append(soup_price.span.string)
(4)爬取商品订单量。
all_order = soup.find_all('a', class_=re.compile("order-num-a"))
for l in all_order:
soup_order = bs4.BeautifulSoup(str(l), "html.parser")
order.append(soup_order.em.string)
(5)爬取出售商品的店铺名称。
all_store = soup.find_all('div', class_="store-name util-clearfix")
for m in all_store:
soup_store = bs4.BeautifulSoup(str(m), "html.parser")
store.append(soup_store.a.string)
3.其他数据采集法
对于企业生产经营或科学研究等保密性要求较高的数据,可通过与企业或研究机构合
作,使用特定系统接口等相关方式收集数据。例如,科学研究的数据是通过科学实验的各
种传感器采集,并传输到数据库管理系统中的。
5 . 2 . 2 数据的存储和保护
1.数据的存储
存储数据主要有两种方式,一种是把数据存在本地内部,另一种是把数据放在第三方
107107
41X1939 第五章.indd 107 2021/3/11 11:08:23第五章 数据处理和可视化表达
公共或私有的“云端”存储,如图5-6所示。
图5-6 数据的存储
云存储已经成为存储发展的一种趋势,其技术也日益成熟。云存储是把各类数据存储
在虚拟的逻辑模型里,其物理空间存储在跨越多个地域放置的众多服务器中,为用户提供
统一、灵活、安全的“云存储服务”。云存储供应商拥有并管理这些服务器,负责管理数
据的使用和访问权限,以及云存储环境的日常运营和维护。对于用户而言,无须关注云存
储系统的具体运行,仅需获取存储空间,把自己的数据存储进去。
数据的存储采用分布式文件存储或NoSQL数据库存储。分布式文件存储的特点之一是
为了解决复杂问题而将大任务分解为多项小任务,通过让多个处理器或多个计算机节点并
行计算来提高解决问题的效率。分布式文件存储系统能够支持多台主机通过网络同时访问
共享文件和存储目录,大部分采用了关系数据模型并且支持SQL语句查询。
2.数据的保护
如今,无论是政府部门、企业还是个人,对数据的依赖性已越来越强。然而,数据安
全的隐患无处不在,一旦数据泄密或丢失,造成的损失和影响将是巨大的。因此,对数据
安全的保护非常重要。研究表明,如果在发生数据灾难后的两个星期内无法恢复公司的业
务系统,75%的公司业务将会完全停顿,43%的公司将再也无法开业。在信息化社会,对
数据的保护刻不容缓。
(1)数据安全保护技术。数据安全保护指数据不被破坏、更改、泄露或丢失。安装
杀毒软件和防火墙只能防备数据安全隐患,而采用拷贝、备份、复制、镜像、持续备份等
技术进行数据保护才是更为彻底、有效的方法。一般的数据安全保护技术的使用特点如表
5-3所示。
108108
41X1939 第五章.indd 108 2021/3/11 11:08:235.2 数据的采集
表5-3 数据安全保护技术的使用特点一览表
数据安全
适用场合 备份介质 备份距离 管理
保护技术
简单小数据量备份,个
拷贝/FTP 磁盘。 近。 手动执行,占用人力资源。
人不定期的文件保护等。
备份软件对使用者要求较
磁带机、磁 近,以本地备份
备份 有归档需求的用户等。 高,需要掌握数据库、文件
带库、磁盘。 为主。
系统等综合知识。
设定策略后无须人工干
复制技术 企业等。 磁盘。 远近皆可。 预,复制与恢复的过程都很
简单。
近,带宽和距离影
镜像技术 企业等。 磁盘。 响延迟时间和性能, 简单。
因此多以本地为主。
连续备份,可以实现过去任
持续备份 企业等。 磁盘。 远近皆可。
意一个时间点的数据恢复。
为了防止他人对机密的数据、数据库进行非法访问、删除、修改、拷贝等操作,可以
采用对数据进行加密等方法,保护数据在存储和传递过程中不被修改或泄露。选择何种加
密算法、需要多高的安全级别、各算法之间如何协作等,都是进行数据加密要考虑的因
素。加密技术通常分为对称式加密和非对称式加密两大类。对称式加密指加密和解密用的
是同一个密钥。非对称式加密指加密和解密用的是两个不同的密钥,必须配对使用,否则
不能打开加密数据。
(2)数据的隐私保护。任何事物都有两面性,数据正在变成生活的第三只眼,敏锐
地洞察却也正监控着我们的生活。我们上网浏览、出行、购物等数据,统统都被记录了,
人人都成了数据的产生者和贡献者。数据带来的整体性变革,也使得数据的隐私保护的形
势显得越发严峻。
隐私泄露的问题不是大数据时代特有的,在没有大数据的时候,我们就已经有很多隐
私泄露的问题。可是到了大数据时代,数据发布多了,信息范围扩大了,信息传播和共享
速度加快了,若不加以控制,其所含的商业信息或私密信息就可能泄露(图5-7)。解决
办法有三个:一是技术手段,常用的隐私保护有:①数据收集时进行数据精度处理;②数
据共享时进行访问控制;③数据发布时进行人工加扰;④数据分析时进行数据匿名处理
等。二是提高自身的保护意识。三是要对数据使用者进行道德和法律上的约束。
图5-7 隐私泄露的途径
109109
41X1939 第五章.indd 109 2021/3/11 11:08:24第五章 数据处理和可视化表达
数据作为一种资产,用在什么地方、掌握在谁手里都是次要的,关键是看怎样利用这
个工具。在安全的前提下,实现数据共享,才能真正创造数据价值,发挥数据真正的作用。
分 析
某用户在电脑客户端打开了某电商的网站,随意搜索了一下“行李箱”的购物信息,
浏览了几个店铺,便关闭了该网站。然而,当他打开其他网站时,却“惊喜”地发现几乎
所有的网页上都闪烁着行李箱的图片和价格,即使网页上没有出现广告,右下角也会弹出
一个广告框,里面的内容依然是行李箱。
用户主动访问某些网站时,便产生了网络缓存(Cookies)。Cookies是指用户浏览网
页时,网络服务器以文本格式存储在用户电脑硬盘上的少量数据。Cookies的主要目的是
帮助网站记忆用户之前可能进行的操作。网站通过获取并分析属于用户的Cookies,为用
户提供设置或推送服务。这样使得网站更人性化,操作更方便快捷。
实 践
1.选择网页浏览器,右键选择“属性”。
2.在弹出的“Internet选项”窗口选择“设置”按钮,如图5-8所示。
3.在弹出的新窗口“网站数据设置”中,当前位置就是Cookies所在的位置,可以选
择“查看文件”按钮找到文件所在处,如图5-9所示。
图5-8 “Internet选项”窗口 图5-9 “网站数据设置”窗口
110110
41X1939 第五章.indd 110 2021/3/11 11:08:245.3 数据的分析
交 流
很多网站利用Cookies跟踪用户行为。有人认为网站可能存在侵犯用户隐私的问题,
也有人认为网站利用Cookies给用户带来了很多便利,免去了用户重复登录网站的麻烦。
在小组中讨论交流,谈谈如何有效阻止Cookies跟踪或者跨站跟踪的行为。
拓 展
《中华人民共和国网络安全法》(节录)
(2016年11月7日第十二届全国人民代表大会常务委员会第二十四次会议通过)
第十八条 国家鼓励开发网络数据安全保护和利用技术,促进公共数据资源开放,推
动技术创新和经济社会发展。国家支持创新网络安全管理方式,运用网络新技术,提升网
络安全保护水平。
第二十七条 任何个人和组织不得从事非法侵入他人网络、干扰他人网络正常功能、
窃取网络数据等危害网络安全的活动;不得提供专门用于从事侵入网络、干扰网络正常功
能及防护措施、窃取网络数据等危害网络安全活动的程序、工具;明知他人从事危害网络
安全的活动的,不得为其提供技术支持、广告推广、支付结算等帮助。
第三十一条 国家对公共通信和信息服务、能源、交通、水利、金融、公共服务、电
子政务等重要行业和领域,以及其他一旦遭到破坏、丧失功能或者数据泄露,可能严重危
害国家安全、国计民生、公共利益的关键信息基础设施,在网络安全等级保护制度的基础
上,实行重点保护。关键信息基础设施的具体范围和安全保护办法由国务院制定。国家鼓
励关键信息基础设施以外的网络运营者自愿参与关键信息基础设施保护体系。
项目实施
各小组根据项目选题及拟订的项目方案,并结合本节所学知识,开展以下活动。
1. 完成相应的数据采集。
2. 总结归纳数据采集的方法和步骤。
5.3
数据的分析
数据分析就是在一大批杂乱无章的数据中,运用数字化工具和技术,探索数据内在的
结构和规律,构建数学模型,并进行可视化表达,通过验证将模型转化为知识,为诊断过
去、预测未来发挥作用。数据分析一般包括特征探索、关联分析、聚类与分类、建立模型
和模型评价等。
111111
41X1939 第五章.indd 111 2021/3/11 11:08:24第五章 数据处理和可视化表达
5 . 3 . 1 特征探索
数据特征探索的主要任务是对数据进行预处理,发现和处理缺失值、异常数据,绘制
直方图,观察分析数据的分布特征,求最大值、最小值、极差等描述性统计量。
探究活动
实 践
打开并运行配套学习资源包“第五章\课本素材\程序5-3数据预处理”,观察数据预处
理结果。程序5-3数据预处理的关键过程及部分程序段如下:
(1)数据清洗,发现缺失值。
x=0
data["price"][(data["price"]==0)]=None
for i in data.columns:
for j in range(len(data)):
if(data[i].isnull())[j]:
data[i][j]="64"
x+=1
print(x)
(2)异常值处理中,利用画散点图发现异常值部分。
data2=data.T
price=data2.values[2]
comt=data2.values[3]
pyl.plot(price,comt,"o")
pyl.show( )
(3)求最大值和最小值。
pricemax=da2[2].max( )
pricemin=da2[2].min( )
commentmax=da2[3].max( )
commentmin=da2[3].min( )
112112
41X1939 第五章.indd 112 2021/3/11 11:08:245.3 数据的分析
(4)求极差。
pricerg=pricemax-pricemin
commentrg=commentmax-commentmin
(5)求组距。
pricedst=pricerg/13
commentdst=commentrg/13
(6)绘制价格直方图。
pricesty=npy.arange(pricemin,pricemax,pricedst)
pyl.hist(da2[2],pricesty)
pyl.show( )
(7)绘制评论数直方图。
commentsty=npy.arange(commentmin,commentmax,commentdst)
pyl.hist(da2[2],commentsty)
pyl.show( )
5 . 3 . 2 关联分析
关联分析就是分析并发现存在于大量数据之间的关联性或相关性,从而描述一个事物
中某些属性同时出现的规律和模式。关联分析的基本算法如下:
(1)扫描历史数据,并对每项数据进行频率次数统计。
(2)构建候选项集C1,并计算其支持度,即数据出现频率次数与总数的比。
(3)对候选项集的支持度进行筛选,筛选的数据项支持度应当不小于最小支持度,
从而形成频繁项集L1。
(4)对频繁项集L2进行连接生成候选项集C2,重复上述步骤,最终形成频繁K项集或
者最大频繁项集。
观 察
打开并运行教科书配套学习资源包“第五章\课本素材\程序5-4关联分析”,观察程
序的运行结果。程序5-4关联分析的关键过程及程序段如下:
(1)自定义连接函数,用于实现L_{k-1}到C_k的连接。
113113
41X1939 第五章.indd 113 2021/3/11 11:08:24第五章 数据处理和可视化表达
def connect_string(x,ms):
x=list(map(lambda i:sorted(i.split(ms)),x))
l=len(x[0])
r=[]
for i in range(len(x)):
for j in range(i,len(x)):
if x[i][:l-1]==x[j][:l-1] and x[i][l-1]!=x[j][l-1]:
r.append(x[i][:l-1]+sorted([x[j][l-1],x[i][l-1]]))
return r
(2)寻找关联规则。
result=pd.DataFrame(index=['support','confidence']) # 定义输出结果
support_series=1.0*d.sum()/len(d) # 支持度序列
column=list(support_series[support_series>support].index) # 初步根据支持度筛选
k=0
while len(column)>1:
k=k+1
print(u'\n正在进行第%s次搜索...'%k)
column=connect_string(column,ms)
print(u'数目:%s...'%len(column))
sf=lambda i:d[i].prod(axis=1,numeric_only=True) # 新一批支持度的计算函数
(3)创建连接数据。
d_2=pd.DataFrame(list(map(sf,column)),index=[ms.join(i)for i in column]).T
support_series_2=1.0*d_2[[ms.join(i) for i in column]].sum()/len(d)
column=list(support_series_2[support_series_2>support].index)
support_series=support_series.append(support_series_2)
column2=[]
(4)遍历可能的推理。
for i in column:
i=i.split(ms)
for j in range(len(i)):
column2.append(i[:j]+i[j+1:]+i[j:j+1])
114114
41X1939 第五章.indd 114 2021/3/11 11:08:255.3 数据的分析
(5)计算置信度序列。
for i in column2:
cofidence_series[ms.join(i)]=support_series[ms.join(sorted(i))]/support_series[
ms.join(i[:len(i) - 1])]
(6)置信度筛选。
for i in cofidence_series[cofidence_series>confidence].index:
result[i]=0.0
result[i]['confidence']=cofidence_series[i]
result[i]['support']=support_series[ms.join(sorted(i.split(ms)))]
5 . 3 . 3 聚类分析
聚类分析是一种探索性的分析,在分类的过程中,人们不必事先给出一个分类的标
准,聚类分析能够从样本数据出发,自动进行分类。聚类分析的算法有很多,其中K-平均
(K-Means)算法是一种经典的自下而上的聚类分析方法。K-平均算法的基本思想就是在
空间N个点中,初始选择K个点作为中心聚类点,然后将N个点分别与K个点计算距离,选
择自己最近的点作为自己的中心点,再不断更新中心聚集点,以达到“物以类聚,人以群
分”的效果,如图5-10所示。
图5-10 聚类分析K-平均算法
聚类分析的基本算法如下:
(1)从数据点集合中随机选择K个点作为初始的聚集中心,每个中心点代表着每个聚
集中心的平均值。
(2)对其余的每个数据点,依次判断其与K个中心点的距离,距离最近的表明它属于
这项聚类。
(3)重新计算新的聚簇集合的平均值即中心点。整个过程不断迭代计算,直到达到
预先设定的迭代次数或中心点不再频繁波动。
115115
41X1939 第五章.indd 115 2021/3/11 11:08:25第五章 数据处理和可视化表达
实 践
打开并运行教科书配套学习资源包“第五章\课本素材\程序5-5聚类分析”文件,观
察程序的运行结果。程序5-5直接调用了Python语言的sklearn机器学习模块,其对数据进行
聚类分析的关键程序段如下:
from sklearn.cluster import KMeans
kms=KMeans(n_clusters=3)
y=kms.fit_predict(x)
print(y)
5 . 3 . 4 数据分类
数据分类是数据分析处理中最基本的方法。数据分类通常的做法是,基于样本数
据先训练构建分类函数或者分类模型(也称为分类器),该分类器具有将待分类数据
项映射到某一特点类别的功能。数据分类和回归分析都可用于预测,预测是指从基于
样本数据记录,根据分类准则自动给出对未知数据的推广描述,从而实现对未知数据
进行预测。
贝叶斯分类技术在众多分类技术中占有重要地位,也属于统计学分类的范畴,是一种
非规则的分类方法。贝叶斯分类技术通过对已分类的样本子集进行训练,学习归纳出分类
函数(对离散变量的预测称作分类,对连续变量的分类称为回归),利用训练得到的分类
器实现对未分类数据的分类。
问 题
如表5-4所示是某网络商城客户购物行为特征的一组统计资料。已知某客户购物行为特
征A为数值182.8,特征B为数值58.9,特征C为数值26,请问这人是重要客户还是普通客户?
表5-4 客户购物行为特征表
客户 特征A 特征B 特征C
重要客户 182.8 81.6 30
重要客户 180.4 86.1 29
重要客户 170.0 77.1 30
重要客户 180.4 74.8 28
普通客户 152.4 45.3 24
普通客户 167.6 68.0 26
116116
41X1939 第五章.indd 116 2021/3/11 11:08:255.3 数据的分析
(续表)
客户 特征A 特征B 特征C
普通客户 165.2 58.9 25
普通客户 175.2 68.0 27
根据表5-4的资料,得到一个已分类的样本子集:
X=[[182.8,81.6,30],[180.4,86.1,29],[170.0,77.1,30],[180.4,74.8,28],[152.4,45.3,24],[167.6,68.0,26],
[165.2,58.9,25],[175.2,68.0,27]]和Y=[1,1,1,1,0,0,0,0](1代表重要客户,0代表普通客户)。
打开教科书配套学习资源包“第五章\课本素材\程序5-6”文件,把已分类的样本
子集(X,Y)和测试样本[182.8,58.9,26]输入到程序5-6中,具体(高斯朴素贝叶斯)如
下:
程序5-6
import numpy as np
X=np.array([[182.8,81.6,30],[180.4,86.1,29],[170.0,77.1,30],[180.4,74.8,28],
[152.4,45.3,24],[167.6,68.0,26],[165.2,58.9,25],[175.2,68.0,27]])
Y=np.array([1,1,1,1,0,0,0,0])
from sklearn.naive_bayes import GaussianNB
clf=GaussianNB().fit(X,Y)
print(clf.predict([[182.8,58.9,26]]))
运行程序5-6后,得到结果为:[0]。由此可以判断这人为普通客户。
程序5-6使用语句from sklearn.naive_bayes import GaussianNB调用了sklearn.naive_bayes模
块,使得程序简单明了。
拓 展
贝叶斯与概率分类
贝叶斯(Thomas Bayes, 1701—1761),英国数学家,发明了概率统计学原理,将归纳
推理法用于概率论基础理论,创立了贝叶斯统计理论,对统计决策函数、统计推断、统计
的估算等做出了贡献。
在概率统计理论中,条件概率是指事件A在另外一个事件B已经发生条件下的发生概
率,表示为P(A|B),读作“在B的条件下A的概率”。贝叶斯发现在事件B出现的前提下
事件A出现的概率,等于事件A出现的前提下事件B出现的概率乘以事件A出现的概率再除
以事件B出现的概率。这就是著名的贝叶斯定理。具体计算公式为:
P(B|A)P(A)
P(A|B) =
P(B)
117117
41X1939 第五章.indd 117 2021/3/11 11:08:25第五章 数据处理和可视化表达
运用贝叶斯定理对事物进行分类,是一种非常有效的思维方法,是贝叶斯决策理论方
法的基本思想。例如,假设有一个数据集,由两类组成,且已知每个样本的分类,数据分
布如图5-11所示。用p (x, y)表示数据点(x, y)属于红色一类的概率,用p (x, y)表示数据点(x, y)
1 2
属于蓝色一类的概率。
图5-11 数据分布
那么如何判断对于一个新的点C(x, y)属于红色还是蓝色类别呢?通常人们会按以下步
骤解答这个问题:
(1)求新的点C(x, y)属于红色一类的概率p (x, y)。
1
(2)求新的点C(x, y)属于蓝色一类的概率p (x, y)。
2
(3)选择概率高的一类作为新点C(x, y)的分类。即如果p (x, y)>p (x, y),则C(x, y)为红色
1 2
一类;如果p (x, y)