1、中华人民共和国程格式HB/Z 181.4-90 PASCAL 1主本标准规定了使用PASCAL语言编程的格式,本标准不涉及程序设计方法及编程技巧.本标准适用于软件开发中的编程工作。2基本约定2. 1 元符号符号用作缩格指示符(在实际的程序行文中并不出现),指示该行相对于上行向右缩格,箭头左端与上行左端对齐,箭头右端指示本行的开始位置(具体缩格数,可一次选定,一般为24格符号()为可选择符号,表示括在其内的内容是可有可无的(除去用于数组下标处外。2.2 程序单元长度一个程序单元(主程序,过程或函数,下同)的长度一般不超过4页打印纸(约240行,其中包括注释行)。2. 3 程序结构程序描述体PRR
2、AM标示符参数表,(-LABEL 标号序列(CONST 常量定义序列(TYPE 类型定义序列(VAR 变量说明序列(Fl刑CTION说明序列(PROCEDURE 说明序列BEGIN 语句序列END 航空航天工业部1990-09-18发布1991-02-01实施189 HB/Z 181.4-90 2.4 程序描述体程序描述体以注释形式给出,它至少包括下述信息,按顺序为2程序单元及其含义说明版本号及完成日期程序单元的功能编程人员的姓名,单位程序修改人员的姓名,单位,修改日期对环境的依赖性调用本程序单元的程序单元名本程序单元调用的其它程序单元名输入参数说明输出参数说明其它需说明的问题程序中定义的过程
3、和函数也应该在第一个说明语句前以注释的形式给出其描述体,但其中与主程序描述体内容相同的部分可以省略。描述体的具体格式见附录A。2.5 注释利用注释可以使程序变得清晰可读.注释行的度行数应占程序单元总行数的1/51/3o注释行要书写整齐.2.6 标识符所有标识符应尽量有明确的含义,必要时可通过注释加以说明。3 说明和语甸的格式约定3. 1 说明3. 1. 1 标号说明LABEL 标号序列伊tl,LABEL 10 , 11 , 12 ,ln ; 其中10,11,12,ln是19999之间的无符号整数。3. .2 常量定义CONST 常量定义序列例,CONSTMAX=6, PP=7, 3. 1. 3
4、类型定义说明3.1.3.1 枚举类型190 HB/Z 181.4-90 例TYPEunits = (inches ,feet ,furlongs ,miles) ; 3.1.3.2 子域类型例.TYPEindex =. 20, 3.1.3.3 集合类型例.TYPEthings=SET OF integer; 3.1.3.4 数组类型例.TYPEma.tter=ARRAY Cdirection) OF real, 3.1.3.5 记录类型例.TYPEman=RECORD name.ARRAYC1. .10) OF char, age :integer, address.ARRAYC1.60) O
5、F char END; 3.1.3.6 变体记录例.TYPEfigure=RECORD tag :shape; CASE shape OF point: (position :coodinate) , line: (xcoeff, ycoeff ,con : real) ; circle: (center : coordinate; radius :real) END, 3.1.3.7 文件类型例.TYPEcardfile=FILE OF ch.r, 3.1.3.8 指针类型例.TYPElink = t object, 列序明说量明战斗说ve量变,句a 191 HB/Z 181.4-90 伊M
6、,VARweight :real; note :integer; 3. 1. 5 函数说明3.1.5.1 无嵌套的函数说明FUNCTION标识符参数表z类型标识符;说明序列BEGIN 语句序列END, 3.1.5.2 有嵌套的函数说明FUNCTION标识符参数表g类型标识符g说明序列FUNCTION标识符参数表z类型标识符,说明序列BEGIN 语句序列列mw m阳川语mu目END, 3. 1. 6 过程说明3.1.6.1 无嵌套的过程说明PROCEDURE标识符参数表,说明序列BEGIN 语句序列END, 3.1.6.2 有嵌套的过程说明PROCEDURE标识符参数表e说明序列PROCEDUR
7、E标识符参数表$说明序列BEGIN 语句序列END, BEGIN 192 3.2语句语句序列ENO, 3.2. 1 复合语句BEGIN 语句序列ENO, 3. 2. 2 REPEA T语句REPEAT 语句序列UNTIL表达式3.2.3 WHILE语句WHILE表达式00语句3.2.4 FOR语句HB/Z 181.4-90 FOR标识符=表达式TO表达式00语句或FOR标识符:=表达式OOWNTO表达式00语句3.2.5 CASE语句CASE表达式OF常量序列z语句常量序列z语句END; 3.2.6 WITH语句3.2. 7 IF语句4 其它约定W.ITH变量序列00语句IF表达式THEN +
8、语句CELSE 语句4. 1 关于缺行的说明193 HB/Z 181.4-90 在程序中,除去括在字符串内的s外,其余在任何地方遇3均换行。换行后,除按该格式要求应缩格外,其余的均与上行左端对齐,例如说明序列中的说明、语句序列中的语句,每一语句(或说明)都与上一语句(或说明)对齐。根据该原则,可给出函数和过程的参数表的格式约定,如下例sFUNCTJON fina(tree ,ink; key ,den :integer) :link ; 参数换行后应与上行的参数起始位对齐。过程参数表的格式与此相同。4.2 关于折行的处理当个逻辑行超出由打印纸或屏幕提供的宽度时,需要折行,在折行时不应将一个单词
9、拆开,续行也要缩格。若遇到表达式中需折行,续行表达式与前一行表达式左端对齐。例如gmax , = (a+b)精c/(d +e); 4. 3 空格的使用适当地使用空格,可以使编写的程序更为清晰、易读,建议可在算术运算符+、一和赋值号z=的前后各留一个空格。194 NAME , VERSION , FUNCTION , AUTHOR , MODIFJED BY DEPENDENCE , CALLED BY , CALLS , INPUT , OUTPUT , OTHERS, HB/Z 181.4-90 附录A描述体细节(补充件)程序单元名及其含义说明版本号及完成日期)程序单元的功能编程人员姓名及所
10、在单位)修改人员姓名,单位,修改日期)对环境的依赖性调用本程序单元的程序单元名本程序单元调用的其它程序单元名输入参数名、输入参数类型说明、输入参数功能说明)(若无输入量则置NONE)输出参数名、输出参数类型说明、输出参数功能说明)(若无输出参数,则置NONE) 其它需说明的问题195 NAME. VERSION. FUNCTION. AUTHOR. MODlFIED BY. HB/Z 181.4-90 附录B实例(参考件perpoly一-perimeterof a polygon 1.0.1987.8.12 This program is used to compute perimeter o
11、f a polygon which is given by X and Y coordinates of t叩-points. Zhang Zirang .BU AA Liu Bing .BU AA DEPENDENT. Th部program部indepdentof machines. CALLS. findmeter INPUT. start .real, OUTPUT. perlmeter.rea1: PROGRAM perpoly(input .output), TYPE point = RECORD xcoord ! real; ycoord : real END, VAR 8taft
12、 :point; perimeter : real, FUNCTION findperim (start :point) ;real; NAME. FUNCTION. CALLED BY. CAtLS. INPUT. OUTPUT. VAR pointl, point2 : point J perim : real J findperim -finds the perimter of a polygon finds the perimter of a polygon. perpoly complength 8taft :point; none FUNCTION complength (poin
13、tl,point2 :point) :real, NAME. complength compute length from point1 196 HB/Z 181.4-90 to point2. FUNCTION , compute length from pointl to point2. findperim CALLED BY , CALLS, sqrt ,rea!, INPUT , point 1 ,point2 : point ; none OUTPUT , VAR length :real; BEGIN length: =sqrt (sqr(point2. xcoord -point
14、l. xcoord) +呵r(pa恤t2.ycoord -pointl. ycoord); print segment and !ength write (point 1. xcoord : 8: 2 ,point 1. ycoord : 8 z 2) writeln (point2. xcoord :8:2,point2. ycoord :8:2, !ength ,1 1 2); define function value complength: =Jength END, comp!ength BEGIN initialize perim ,point 1 and point2 perim:
15、 =0, point 1: =start, read (point2. xcoord ,point2. ycoord) ; add length of each side to perim writeln (Xl : 8,飞Yl:8,X2: 8,、Y2:8,、!ength,11), WITH point2 DO WHILE (xcoordstart. ycoord ) DO BEGIN add length of current side to perim perim: =perim +complength (pointl , point2) , advance ta next side po
16、intl: =point2, read (xcoord ,ycoord) END, 197 HB/Z 181.4-90 add length of 1ast side to perim and define r田ult)findperim: =perim +complength (pointl ,point2) I ENO; findperim) BEG1N read first endpoint) WIT H start 00 r四d(xcoord,ycrd) I compute perimeter perimeter: =findperim (8tart); print the final result) writeln (perimeter = I t perimeter I 12 I 2) ENO. 附加说明g本标准由航空航天工业部第三0一研究所提出。本标准由北京航空航天大学负责起草。198