欢迎来到天天文库
浏览记录
ID:33588511
大小:143.84 KB
页数:10页
时间:2019-02-27
《软件工程 jackson示例》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、【例1】设有如下的数据结构教职工名册表头姓名类别津贴表体我们可根据所给定的数据结构,画出Jackson图名册表头表体*表名行栏名行行姓名类别津贴。。教龄工龄生成名册印表头处理表体印表名行印栏名行处理行*印姓名印类别处理津贴。。印教龄印工龄可写出Jackson伪代码:名册seqopen名册表表头seq打印表名打印表栏名表头end表体iteruntil文件结束表行seq打印姓名打印类别津贴select教师类别打印教师津贴or职工类别打印职工津贴津贴end表行end表体endclose名册表名册end【例2】一个正文文件由若干个记录组成,每
2、个记录是一个字符串。要求统计每个记录中空格字符的个数,以及文件中空格字符的总个数。要求的输出数据格式是,每复制一行输入字符串之后,另起一行印出这个字符串中的空格数,最后印出文件中空格的总个数。对于这个简单例子而言,输正文文件输出表格入和输出数据的结构很容易确I定。图中是用Jackson图描绘的字符串*表格体空格总数输入/输出数据结构。II确定了输入/输出数据结字符**信息串构之后,下一步是分析确定在输S入数据结构和输出数据结构中。。有对应关系的数据单元。在这个空格非空格字符串空格数例子中哪些数据单元有对应关表示输入/输出数据结构的Ja
3、ckson图系呢?输出数据总是通过对输(a)输入数据结构(b)输出数据结构入数据的处理而得到的,因此在输入/输出数据结构最高层次的两个单元(在这个例子中是“正文文件”和“输出表格”)总是有对应关系的。这一对单元将和程序结构图中最顶层的方框(代表程序)相对应,也就是说经过程序的处理由正文文件得到输出表格。下面还有哪些有对应关系的单元呢?因为每处理输入数据中一个“字符串”之后,就可以得到输出数据中一个“串信息”,它们都是重复出现的数据单元,而且出现次序和重复次数都完全相同,因此,“字符串”和“串信息”也是一对有对应关系的单元。Jackso
4、n程序设计方法的第三步是从数据结构图导出程序结构图。按照前面已经讲述过的规则,这个步骤的大致过程是:首先,在描绘程序结构的Jackson图的最顶层画一个处理框“统计空格”,它与“正文文件”和“输出表格”这对最顶层的数据单元相对应。但是接下来还不能立即画与另一对数据单元(“字符串”和“串信息”)相对应的处理框,因为在输出数据结构中“串信息”的上层还有“表格体”和“空格总数”两个数据单元,在程序结构图的第二层应该有与这两个单元对应的处理框——“程序体”和“印总数”。因此,在程序结构图的第三层才是与“字符串”和“串信息”相对应的处理框——“
5、处理字符串”。在程序结构图的第四层似乎应该是和“字符串”、“字符”及“空格数”等数据单元对应的处理框“印字符串”、“分析字符”及“印空格数”,这三个处理是顺序执行的。但是,“字符”是重复出现的数据单元,因此“分析字符”也应该是重复执行的处理。改进的Jackson图规定顺序执行的处理中不允许混有重复执行或选择执行的处理,所以在“分析字符”这个处理框上面又增加了一个处理框“分析字符串”。最后得到的程序结构图为下图所示。统计空格程序体印总数I处理信息串*印字符串分析字符串印空格数I分析字符*S。。处理空格处理非空格描绘统计空格程序结构的Ja
6、ckson图Jackson程序设计方法的第四步是列出所有操作和条件,并且把它们分配到程序结构图的适当位置。首先,列出统计空格个数需要的全部操作和条件如下:⑴停止⑵打开文件⑶关闭文件⑷印出字符串⑸印出空格数目⑹印出空格总数⑺sum:=sum+1⑻totalsum:=totalsum+sum⑼读入字符串⑽sum:=O⑾totalsum:=0⑿pointer:=l⒀pointer:=pointer+1I⑴文件结束I⑵字符串结束S⑶字符是空格在上面的操作表中,sum是保存空格个数的变量,totalsum是保存空格总数的变量,而pointer是
7、用来指示当前分析的字符在字符串中的位置的变量。统计空格2911程序体印总数31I(1)处理信息串*印字符串1012分析字符串印空格数89I(2)4分析字符*5S(3)。。处理空格处理非空格71313图8.10把操作和条件分配到程序结构图的适当位置Jackson方法的最后一步是用伪码表示程序处理过程。因为Jackson使用的伪码和Jackson图之间存在简单的对应关系,所以从图8.10很容易得出下面的伪码:统计空格seq打开文件读入字符串totalsum:=0程序体iteruntil文件结束处理字符串seq印字符串seq印出字符串印字符
8、串endsum:=0pointer:=1分析字符串iteruntil字符串结束分析字符select字符是空格处理空格seqsum:=sum+1pointer:=pointer+1处理空格endor字符不是空格处理非空格s
此文档下载收益归作者所有