- 1、本文档共313页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
由图4.68可机械地产生PASCAl。程序如下:
BEGIN
FIRST:--K[1];
SECOND:一O;
FORI:=2TON
DOBEGINIFK[1]~SECONDTHEN
BEGINIFK[I]FIRsT
THENBEGINSECOND:=FIRST;
FIRST:--K[I]
END
FLSESECOND:--K[I]
END
END
END图4.65图4.66图4.67图4.68如果是编写FORTRAN、COBOL程序,只要事先准备好对应表(类似于图4.65),方法也是相同的。
与流程图相比,PAD有逻辑结构清晰,图形标准化等优点;更重要的是,它强制设计人员使用SP方法,因而提高了产品的质量;另外,通过机械地“走树”可以从PAD直接产生程序,这一过程可望用计算机自动实现,10.4将介绍一个从PAD自动编程的系统。4.11.4程序设计语言(PDL)
详细设计的结果也可以用语言来描述,程序设计语言就是一个典型的代表。
程序设计语言(ProgramDesignLanguage,简称PDL)是一种非形式的比较灵活的语言,它用于描述模块内部的具体算法,以便在开发人员之间比较精确地进行交流。PDL的语法是开放式的,其外层语法是确定的,而内层语法则故意不确定。外层语法描述控制结构它用类似于一般编程语言控制结构的关键字(如IF—THEN—ELSE、WHILE—DO、REPEAT-UNTIL等)表示,所以是确定的,内层语法描述具体操作,考虑到不同软件系统的实际操阼种类繁多,内层语法故意不确定,它可以按系统的具体情况和不同的设计层次灵活选胃,实际上任意英语语句都可用来描述所需的具体操作例如,在PDL.描述
ifXisnotnegative
then
return(squarerootofXasarealnumber);
else
return(squarerootof—Xasanimaginarynumber);
中,外层语法IF—THEN—ELSE是确定的,内层操作“spuarerootofx”是不确定的,下面一段PDL描述了某个模块的内部算法,这个模块在给定长度的字符串中找出某个字符出现的位置和次数PROCEDUREFIND(string,char,len,occurrence,positions)
thisprocedurefindsthenumberofoccurrencesofacharacter,char,inanalphanu—
mericstringandstoresalinthecorrespondingbitpositionofapositionsarray
DECLAREstring(1en)ASSTRINGARG
charASCHARARG
index==0
lenASSCALARARG
occurrenceASSCALARARG
positionsASBITARRAYARGsetpositionsto0
occurrence==0
DOWHILEstring(index)-/-end—of—string
IFstring(index)==char
THENBEGIN
occurrence--occurrence+1
setposition(index)tol
ENDELSEskip
ENDIF
incrementindex
ENDDo
RETURN
ENDFIND可以看出,PDL的总体结构同一般程序相同,它也包括注释部分、数据说明部分和过程部分;其内层则可以是任意的英语语句。由于PDL同程序很相似,所以也称为伪程序(PoseudeCode),但是我们必须认识到PDL同程序是完全不同的,它仅仅是对算法的一种描述。
下面一段PDL描述的算法同图4.58的流程图或图4.62的NS图相同:
executeprocessa
REPEATUNTILconditionz8
execute
文档评论(0)