APP下载

数据要求说明表在C语言程序设计中的应用探析

2009-09-23张武洪

新课程研究·职业教育 2009年7期
关键词:公倍数初值流程图

张武洪

摘要本文针对C语言程序设计初学者在编程阶段对数据的定义和使用困惑的问题,提出了数据要求说明表的解决方案。

关键词数据要求说明表C语言程序设计

C语言程序设计是电子信息类专业学习程序设计的入门课程,通过这门课程的学习,期望学生一方面掌握C语言的基本语法和算法。具有运用C编写小程序的能力;另一方面为后续软件系统开发课程的学习打下基础。

在C语言的教学过程中,以往都是要求学生按以下步骤解题:首先分析题意,找出算法;其次根据算法画出流程图;然后依据流程图编写程序;最后上机调试运行程序,分析结果。但是有很多学生在完成了前两步后,进行依据流程图编写程序步骤时,却不知道程序怎么编写了,问其原因。主要是不知道定义哪些数据,定义的数据又应该是什么数据类型。

一、数据要求说明表的引出

计算机程序的实质就是对特定数据进行特定操作。在算法和流程图中解决的是怎样实现对数据进行特定操作的问题,而对于操作的数据并没有说明,但是数据的名称、类型、初值、范围等情况却又是在程序编写过程中首先面对的问题,这就是学生在编写程序时突然卡壳的原因。

实际上,在各种C语言程序设计教材中,都没有对数据进行说明,包括谭浩强教授编写的也没有。为什么会出现这种情况呢?可能是C语言程序设计课程中所出现的问题,都是比较初级的,而对于具有C语言丰富编程经验的教材编写者,当然不会把数据的说明当做一个问题,就是出现数据定义遗漏和类型错误的问题,在程序调试阶段也可以轻松解决。因此,大家都想当然地认为初学者不会出现处理数据情况不明的问题。在这里,我们没有充分考虑学生的认知规律,结果造成了学生对数据的定义和使用的困惑。

根据软件工程的观点,在软件生命周期的需求分析阶段就要求编写《数据要求说明书》的软件文档。在该文档的“数据的逻辑描述”部分列出了静态数据、动态输入数据、动态输出数据、内部生成数据和以上数据的约定。在软件技术专业《程序设计逻辑》课程中,项目首先分析数据,然后绘制一个数据要求说明表。对所有数据进行标识名称、数据类型、使用意义的说明。学生在绘制流程图和编写程序时,数据的定义与使用都依据数据要求说明表进行。效果很好。

如果在C语言程序设计中引入数据要求说明,是否可以解决以上问题呢?

二、数据要求说明表在C语言程序设计中的实战应用

笔者设计的数据要求说明表是一个二维表。每条记录有五个说明字段:标识名称、数据类型、含义、初值、取值范围,前两项对数据定义有帮助,后三项有利于数据的使用,具体见表一。

例1:求两个正整数的最大公约数和最小公倍数。

本题有一个著名的解题算法——欧几里德算法(辗转相除法),但对于高职学生来说,该算法既不容易理解原理,又不容易记忆具体步骤。笔者提出了一种算法效率不高但容易实现的方法:在最大公约数和最小公倍数可以估计的取值范围内逐一判断。

在表1中,m和n是输入求解最大公约数、最小公倍数的两个数,i和j是起辅助作用的两个数据。i是求解最大公约数的循环控制变量,因而初值从取值范围的上界开始;j是求解最小公倍数的循环控制变量,因而初值从取值范围的下界开始。Min(m,n)是m和n的小者;mar(m,n)是m和n的大者,详情见表1。

有了上表,大部分学生很容易地想出算法,并绘制出流程图。在编程过程中,定义和使用数据也心知肚明。

例2:用以下公式求圆周率的近似值(圆周率pi表示)。

Pi14=1-1/3+115-117+……直到最后一项的绝对值小于10-6为止。

这是一道典型累加求和题,该类问题主要关心两个数据:和以及加数。和的表示比较简单,定义为单精度实型变量,初值为零;加数就复杂一点,它由符号、分子、分母三部分组成。有了这些认识,我们可以绘制表2,即求圆周率数据要求说明表。

注意:8、p和q三个变量中至少有一个定义为float型,如果都是int型,结果一定是零。本题各数据变量的取值范围没有讨论,其实在具体应用中,数据的标识名称、数据类型、含义是必填项,初值和取值范围根据实际情况选择填写。

笔者近几年在高职C语言程序设计课程教学过程中,引人数据要求说明的知识,取得了良好的教学效果,一方面帮助学生在定义和使用数据方面掌握了可操作性强的方法,另一方面培养学生形成了良好的编程习惯。

数据要求说明应用起来比较简单,但是作用却不小。一是有助于在程序中正确的定义与使用数据,二是和算法、程序流程图一起组成必要的文档,为程序的阅读、调试、修改提供依据。按照学生的认知规律,在教学实践中运用一些简单而实用的方法是应该提倡的。

猜你喜欢

公倍数初值流程图
云的识别指南
小小数迷泽西之小房间里的大世界(下)
公倍数
浅谈快速求最小公倍数法
美国三季度GDP初值创两年最高
《吉普林》欧元区经济持续低迷
快速求最小公倍数
流程图学习指南