内容正文:
3.2 数据与结构
(一)项目目标分析
【项目名称】网络购物
【项目目标】通过项目活动,认识相关数据的组织方法,了解数据之间的关系,理解几种典型的数据结构,为利用数据、实现数据的价值做准备。
(二)项目内容分析
本项目包含“任务一 探究网购订单处理”和“任务二探究快件配送过程”两个任务。
任务一包含两个活动:“活动1了解订单数据”,“活动2编制订单数据处理程序”。
任务二包含三个活动:“活动1了解快件派送线路”,“活动2了解物流网络”,“活动3规划取快递最快路线”。
任务一是让学生通过“活动1”,亲身体验数据的类型:字符串、数值(整数、浮点数)、布尔型(逻辑值),理解各种不同类型的数据的基本处理方式;通过“活动2”,以队列为例(Python中以列表实现),认识和掌握数据结构是对数据间关系的抽象和组织,引导学生深刻领会应用数据结构解决学习和生活实际问题,并能举一反三触类旁通。两个活动相互关联,前者主要是对数据的简单类型建立感性认识,后者是对简单数据类型进行组织和结构化(成为复合数据类型),以便与实际应用更好对接,建议任务一安排1课时。
任务二有三个重要内容:一是通过“活动1”,了解快递派送线路,领会可将快递(货物)运送的线路抽象为“树”结构,“透过现象看本质”(不再是一对一的线性关系,而是一对多的非线性关系)。二是通过“活动2”,了解物流网络,领会将物流网络抽象为“图结构”,认识“多对多”的关系。三是通过“活动3”,了解图的遍历,善于将深度优先遍历转化为树形结构进行分析,并计算最短用时。建议任务二安排1课时。
通过两个任务的学习,使学生能了解数据的简单类型,了解数据结构(列队、树、图)及其应用和简单操作。
(三)项目教学建议
计算机是处理数据的工具,不同类型的数据所表达的意义不一样,编码方式不一样,因此适用的运算也不一样,而且,更重要的是,许多零散的小规模的数据,往往还要用一定的结构形式组织起来(如集合、队列、栈、树、图),实现更复杂的结构,与实例应用对接。
项目教学法主张先练后讲,先学后教,强调学生的自主学习,主动参与,从尝试入手,从练习开始,调动学生学习的主动性、创造性、积极性等,学生唱“主角”,而老师转为“配角”,实现教师角色的换位,有利于加强对学生自学能力、创新能力的培养。
要善于引导学生从自己的学习和生活经历中,发现鲜活的实例。对于实践性强的项目或活动,要让每个学生充分参与、全程参与、深度参与,在体验、经验的基础上领悟、归纳、总结、运用。对于理论性较强的项目或活动,要充分铺垫、诱导、启发、示范、练习,课前学生作好预习,带着问题预习,教师充分准备各种情境下的教学预案,以及教学支架性材料,讲解时以例释理,避免直接灌输结论,更不要让学生机械背诵结论。
$$数据结构之栈的应用
活动:
数据结构之栈的应用
活动描述:
模仿队列的应用“订单数据处理程序”,编写栈的应用“单车道死胡同停车管理程序”。
1.选题理由
队列和栈,是线性数据结构中的典型代表。由于教材篇幅所限,讲了队列,没有讲栈,栈也是计算机中非常重要的数据结构,本活动可作为教材的有益补充。
2.操作建议
栈是先进后出(FILO)表。它的数据元素只能在同一端(称为栈顶)进行操作,添加(进栈),删除(出栈)。典型的例子如单车道死胡同停车,后进去的车先倒出来,先进去的车最后才能倒出来。
在Python中,列表既可用来表示队列,也可用来表示栈。列表的pop()方法可以删除列表的尾元素(相当于栈的“出栈”操作),append方法可以在列表尾部添加一个数据元素(相当于栈的“入栈”操作)。
栈的操作与队列相仿,可在学生掌握队列的基本操作的条件下,用类比的方式,引入栈的操作,达到知识牵移、触类旁通的效果。
3.注意问题
要讲透“栈”的本质特征,必须充分列举生活实例,如:组装物品与拆解维修,软件操作中普遍存在的撤销与恢复,表达式中圆括号的左右匹配,递归算法的实现等等。本活动借助于学生容易理解的生活实例“单车道死胡同停车与开出”,让学生加深对栈的理解,为后续学习打下基础。
(程序详见配套资源 “3-2综合项目单车道死胡同停车管理程序.py”)
$$A
A.B,A.C,A.D
B.E,B.F,B.G
D.H,D.I,D.J
G.K,G.L,G.M
$$X:0
X.A:2,X.B:5,X.C:10
A.D:4,A.E:6
B.F:4,B.G:4
C.H:6,C.I:4
D.J:4
E.K:4
F.L:6
G.M:6
H.N:4
I.O:4
J.P:10
K.Q:5
L.R:10
M.S:2
N.T:5
O.U:2
$$中华人民共和国
北京市
天津市
河北省
山西省
内蒙古自治区
辽宁省
吉林省
黑龙江省