数据结构验证性实验指导书(2015). 下载本文

内容发布更新时间 : 2024/10/18 22:36:21星期一 下面是文章的全部内容请认真阅读。

《数 据 结 构 基 础》 课 外 实 验 指 导 书

计算机学院 2015年9月

课外学时:16

要求:完成4个课外实验(实验题目自选),填写实验报告

注意:到教材科购买计算机学院上机实验报告 考核:实验报告成绩作为平时成绩的一部分 提交时间:第10周交给各班班长 地点:鉴主1108

一、上机实验概述

上机实验是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。通常,实验题中的问题比平时的习题复杂得多,也更接近实际。实验着眼于原理与应用的结合点,使读者学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变“活”,起到深化理解和灵活掌握教学内容的目的。平时的练习较偏重于如何编写功能单一的“小”算法,而实验题是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养。此外,还有很重要的一点是:机器是比任何教师都严厉的检查者。

每个实验题采取了统一的格式,由问题描述、基本要求、测试数据、实现提示和选做内容五个部分组成。问题描述旨在为读者建立问题提出的背景环境,指明问题“是什么”。基本要求则对问题进一步求精,划出问题的边界,指出具体的参量或前提条件,并规定该题的最低限度要求。测试数据部分旨在为检查学生上机作业提供方便,在完成实验题时应自己设计完整和严格的测试方案,当数据输入量较大时,提倡以文件形式向程序提供输入数据。在实现提示部分,对实现中的难点及其解法思路等问题作了简要提示。选做部分向那些尚有余力的读者提出了更严峻的挑战,同时也能开拓其他读者的思路,在完成基本要求时力求避免就事论事的不良思想方法,尽可能寻求具有普遍意义的解法,使得程序结构合理,容易修改扩充。

不难发现,这里与传统的做法不同,题目设计得非常详细。会不会限制读者的想象力,影响创造力的培养呢?回答是:软件发展的一条历史经验就

是要限制程序设计者在某些方面的创造性,从而使其创造能力集中地用到特别需要创造性的环节之上。实验题目本身就给出了问题说明和问题分解求精的范例,使读者在无形中学会模仿,它起到把读者的思路引上正轨的作用,避免坏结构程序和坏习惯,同时也传授了系统划分方法和程序设计的一些具体技术,保证实现预定的训练意图,使某些难点和重点不会被绕过去,而且也便于教学检查。题目的设计策略是:一方面使其难度和工作量都较大,另一方面给读者提供的辅助和可以模仿的成份也较多。当然还应指出的是,提示的实现方法未必是最好的,读者不应拘泥于此,而应努力开发更好的方法和结构。

实验要有严格的规范(见下一节)。一种普遍存在的错误观念是,调试程序全凭运气。学生花两个小时的上机时间只找出一个错误,甚至一无所获的情况是常见的。其原因在于,很多人只认识到找错误,而没有认识到努力预先避免错误的重要性,也不知道应该如何努力。实际上,结构不好、思路和概念不清的程序可能是根本无法调试正确的。严格按照实验步骤规范进行实验不但能有效地避免上述种种问题,更重要的是有利于培养软件工作者不可缺少的科学工作方法和作风。

二、实验步骤

随之计算机性能的提高,它所面临的软件开发的复杂度也日趋增加。然而,编制一个10,000行的程序的难度绝不仅仅是一个5,000行的程序两倍,因此软件开发需要系统的方法。一种常用的软件开发方法,是将软件开发过程划分为分析、设计、实现和维护四个阶段。虽然数据结构课程中的实验题的复杂度远不如(从实际问题中提出来的)一个“真正的“软件,但为了培养一个软件工作者所应具备的科学工作的方法和作风,我们制订了如下所述完成实验的五个步骤:

(一) 问题分析和任务定义

通常,实验题目的陈述比较简洁,或者说是有模棱两可的含义。因此,在进行设计之前,首先应该充分地分析和理解问题,明确问题要求做什么?限制条件是什么。注意本步骤强调的是做什么?而不是怎么做。对问题的描述应避开算法和所涉及的数据类型,而是对所需完成的任务作出明确的回答。例如:输入数据的类型、值的范围以及输入的形式;输出数据的类型、值的范围及输出的形式;若是会话式的输入,则结束标志是什么?是否接受非法的输入?对非法输入的回答方式是什么等。这一步还应该为调试程序准备好测试数据,包括合法的输入数据和非法形式的输入数据。

(二) 数据类型和系统设计在设计这一步骤中需分概要设计和详细设计两步实现。

概要设计指的是,对问题描述中涉及的操作对象定义相应的数据类型,