




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 编码阶段的义务是根据详细设计阐明书编码阶段的义务是根据详细设计阐明书编写程序编写程序 程序设计言语的特性和程序设计风格会程序设计言语的特性和程序设计风格会深化地影响软件的质量和可维护性深化地影响软件的质量和可维护性 为了保证程序编码的质量,程序员必需为了保证程序编码的质量,程序员必需深化了解、熟练掌握并正确地运用程序深化了解、熟练掌握并正确地运用程序设计言语的特性设计言语的特性 此外,还要求源程序具有良好的构造性此外,还要求源程序具有良好的构造性和良好的程序设计风格和良好的程序设计风格2程序设计言语程序设计言语程序设计风格程序设计风格34 程序设计言语是指用于书写计算机程序的程序设计言语是指
2、用于书写计算机程序的言语,它是一种实现性的软件言语言语,它是一种实现性的软件言语 程序设计言语包含:语法、语义和语用程序设计言语包含:语法、语义和语用 语法语法syntax用来表示构成言语的各用来表示构成言语的各个记号之间的组合规那么,它是构成言语个记号之间的组合规那么,它是构成言语构造正确成分所需遵照的规那么集合构造正确成分所需遵照的规那么集合 如如C言语中言语中for语句的构成规那么是:语句的构成规那么是:for表达式表达式1;表达式;表达式2;表达式;表达式3语语句句语法中不涉及到这些记号的含义,也不涉语法中不涉及到这些记号的含义,也不涉及运用者及运用者5 语义语义semantic用来表
3、示按照各种表示方式所表用来表示按照各种表示方式所表示的各个记号的特定含义,但它不涉及到运用者。示的各个记号的特定含义,但它不涉及到运用者。 如上述如上述for语句中:表达式语句中:表达式1表示循环初值;表表示循环初值;表达式达式2表示循环条件;表达式表示循环条件;表达式3表示循环的增量;表示循环的增量;语句为循环体。整个语句的语义是:语句为循环体。整个语句的语义是: 1计算表达式计算表达式1 2计算表达式计算表达式2,假设计算结果为,假设计算结果为0,那么终止,那么终止循环;否那么转循环;否那么转3 3执行循环体执行循环体 4计算表达式计算表达式3 5转向转向26 语用语用pragmatic用
4、来表示构成言语的各用来表示构成言语的各个记号和运用者的关系。个记号和运用者的关系。 如:言语能否允许递归?能否要规定递如:言语能否允许递归?能否要规定递归层数的上界?这种上界如何确定?这些都归层数的上界?这种上界如何确定?这些都属于语用上的问题。属于语用上的问题。7 程序设计言语根本成份可归纳为四种:数程序设计言语根本成份可归纳为四种:数据成分、运算成分、控制成分、传输成分据成分、运算成分、控制成分、传输成分 数据成分:它指明该言语能接受的数据,数据成分:它指明该言语能接受的数据,用来描画程序中的数据。如各种类型的变用来描画程序中的数据。如各种类型的变量、数组、指针、记录等。作为程序操作量、数
5、组、指针、记录等。作为程序操作的对象,具有称号、类型和作用域等特征。的对象,具有称号、类型和作用域等特征。运用前要对数据的这些特征加以阐明。数运用前要对数据的这些特征加以阐明。数据称号由用户经过标识符命名,类型阐明据称号由用户经过标识符命名,类型阐明数据需占用存储单元的多少和存放方式,数据需占用存储单元的多少和存放方式,作用域阐明数据可以运用的范围。作用域阐明数据可以运用的范围。 8 以以 C言语为例,其数据构造方式可分为根言语为例,其数据构造方式可分为根本类型和派生类型本类型和派生类型 9 运算成分:它指明该言语允许执行的运算成分:它指明该言语允许执行的运算,用来描画程序中所需进展的运运算,
6、用来描画程序中所需进展的运算。如算。如 + 、- 、* 、/ 等。等。 控制成分:它指明该言语允许的控制控制成分:它指明该言语允许的控制构造,人们可利用这些控制成分来构构造,人们可利用这些控制成分来构造程序中的控制逻辑。根本的控制成造程序中的控制逻辑。根本的控制成分包括:顺序构造、条件选择构造和分包括:顺序构造、条件选择构造和反复构造。如下页图反复构造。如下页图10根本程序控制构造根本程序控制构造11 传输成分:它指明该言语允许的数据传传输成分:它指明该言语允许的数据传输方式,在程序中可用它进展数据传输。输方式,在程序中可用它进展数据传输。 例如:例如:Turbo C言语规范库提供了两言语规范
7、库提供了两个控制台格式化输入、输出函数个控制台格式化输入、输出函数printf ( )和和scanf ( ),这两个函数可以在规范,这两个函数可以在规范输入输出设备上以各种不同的格式读写输入输出设备上以各种不同的格式读写数据。数据。 Printf ( )函数用来向规范输出函数用来向规范输出设备设备(屏幕屏幕)写数据写数据 ,scanf ( ) 函数用函数用来从规范输入设备来从规范输入设备(键盘键盘)上读数据。上读数据。 12 程序设计言语的分类程序设计言语的分类 按言语级别:低级言语和高级言语;按言语级别:低级言语和高级言语; 按运用范围:通用言语和公用言语;按运用范围:通用言语和公用言语;
8、按用户要求:过程式言语和非过程式言按用户要求:过程式言语和非过程式言语;语; 按言语所含的成分:顺序文语、并发言按言语所含的成分:顺序文语、并发言语和分布式言语语和分布式言语 13 程序设计言语的开展史程序设计言语的开展史 第一代言语:机器言语和汇编言语第一代言语:机器言语和汇编言语 第二代言语:早期的高级言语,如第二代言语:早期的高级言语,如BASIC,FORTRAN,COBOL等等 第三代言语:具有很强的数据构造和过第三代言语:具有很强的数据构造和过程描画才干,支持构造化编程,如程描画才干,支持构造化编程,如Pascal,Modula,C,Ada等等 第四代言语第四代言语4GL:这类言语出
9、现于:这类言语出现于七十年代,其目的是为了提高程序开发七十年代,其目的是为了提高程序开发速度,以及让非专业用户能直接编制计速度,以及让非专业用户能直接编制计算机程序算机程序14第四代言语的特点:第四代言语的特点:对用户友善,普通用类自然言语、图形或表对用户友善,普通用类自然言语、图形或表格等描画方式,普通用户很容易掌握格等描画方式,普通用户很容易掌握多数与数据库系统相结合,可直接对数据库多数与数据库系统相结合,可直接对数据库进展操作进展操作对许多运用功能均有默许的假设,用户不用对许多运用功能均有默许的假设,用户不用详细阐明每一件事情的做法详细阐明每一件事情的做法程序码长度及获得结果的时间与运用
10、程序码长度及获得结果的时间与运用COBOL言语相比约少一个数量级言语相比约少一个数量级支持构造化编程,易于了解和维护支持构造化编程,易于了解和维护15 目前,第四代言语的种类繁多,尚无规范,目前,第四代言语的种类繁多,尚无规范,在语法和才干上有很大差别,其中一些支在语法和才干上有很大差别,其中一些支持非过程式编程,更多的是既含有非过程持非过程式编程,更多的是既含有非过程语句,也含有过程语句。语句,也含有过程语句。 典型的典型的4GL有:数据库查询言语、报表生有:数据库查询言语、报表生成程序、运用生成程序、电子表格、图形成程序、运用生成程序、电子表格、图形言语等。言语等。 多数多数4GL是面向领
11、域的,很少是通用的。是面向领域的,很少是通用的。16 自然言语自然言语 最理想的是可以运用自然言语如英语、最理想的是可以运用自然言语如英语、法语或汉语,使计算机能了解并立刻法语或汉语,使计算机能了解并立刻执行恳求。但迄今为止,自然言语了解执行恳求。但迄今为止,自然言语了解依然是计算机科学研讨中的一个难点,依然是计算机科学研讨中的一个难点,虽然在实验室的研讨中获得了一定的成虽然在实验室的研讨中获得了一定的成果,但在现实中的运用依然是相当有限果,但在现实中的运用依然是相当有限的。的。 17 为一个特定的开发工程选择编程言语时,为一个特定的开发工程选择编程言语时,通常要思索如下要素:通常要思索如下要
12、素: 运用领域运用领域 算法和计算复杂性算法和计算复杂性 软件运转环境软件运转环境 用户需求,特别是性能需求用户需求,特别是性能需求 数据构造的复杂性数据构造的复杂性 软件开发人员的知识程度软件开发人员的知识程度 可用的编译器与交叉编译器可用的编译器与交叉编译器18 工程所属的运用领域经常是首要的规范工程所属的运用领域经常是首要的规范 COBOL适用于商业领域适用于商业领域 FORTRAN适用于工程和科学计算领域适用于工程和科学计算领域 Prolog、Lisp适用于人工智能领域适用于人工智能领域 Smalltalk、C+适用于适用于OO系统的开发系统的开发 有些言语适用于多个运用领域,如有些言
13、语适用于多个运用领域,如C 假设有多种言语都适宜于某工程的开发假设有多种言语都适宜于某工程的开发时,也可思索选择开发人员比较熟习的时,也可思索选择开发人员比较熟习的言语言语19 选择高级言语还是低级言语选择高级言语还是低级言语 优先选择高级言语优先选择高级言语 开发和维护高级言语程序比开发和维开发和维护高级言语程序比开发和维护低级言语程序容易得多护低级言语程序容易得多 必要时运用低级言语必要时运用低级言语 高级言语程序经编译后所产生的目的高级言语程序经编译后所产生的目的程序的效果要比完成一样功能的低级言程序的效果要比完成一样功能的低级言语程序低得多,所以在有些情况下会部语程序低得多,所以在有些
14、情况下会部分或全部运用低级言语分或全部运用低级言语20 运用低级言语的情况:运用低级言语的情况:对运转时间和存储空间有过高要求的工程,对运转时间和存储空间有过高要求的工程,如电子笔记本中的软件如电子笔记本中的软件在某些不能提供高级言语编译程序的计算在某些不能提供高级言语编译程序的计算机上开发程序,如单片机上的软件机上开发程序,如单片机上的软件大型系统中对系统执行时间起关键作用的大型系统中对系统执行时间起关键作用的模块模块21程序设计言语程序设计言语程序设计风格程序设计风格22 编程的根据是详细设计的结果,因此程序编程的根据是详细设计的结果,因此程序的质量主要取决于设计,但编程的质量也的质量主要
15、取决于设计,但编程的质量也在很大程度上影响着程序的质量在很大程度上影响着程序的质量 编程风格主要包括:编程风格主要包括: 源程序中的内部文档源程序中的内部文档 数听阐明数听阐明 语句构造语句构造 输入输出输入输出23 在源程序中可包含一些内部文档,在源程序中可包含一些内部文档,以协助阅读和了解源程序以协助阅读和了解源程序 在源程序中的内部文档主要包括:在源程序中的内部文档主要包括: 标识符的命名标识符的命名 注解注解 程序的视觉组织程序的视觉组织24 选择含义明确的名字,使其能正确提示标选择含义明确的名字,使其能正确提示标识符所代表的实体识符所代表的实体 例如,表示总量的变量名用例如,表示总量
16、的变量名用Total,表示,表示平均值的用平均值的用Average等等 名字不要太长,太长会添加打字量,且易名字不要太长,太长会添加打字量,且易出错。必要时可运用缩写出错。必要时可运用缩写 不用类似的名字,类似的名字容易混淆,不用类似的名字,类似的名字容易混淆,不易发现错误不易发现错误 如如cm,cn,cmn,cnm,cnn,cmm25 不用关键字作标识符不用关键字作标识符 同一个名字不要有多个含义同一个名字不要有多个含义 名字中防止运用易混淆的字符。名字中防止运用易混淆的字符。如数字如数字0与字母与字母O; 数字数字1与字母与字母I或或l; 数字数字2与字母与字母z等等26 程序中的注解用来
17、协助人们了解程序,程序中的注解用来协助人们了解程序,决不是可有可无的决不是可有可无的 一些正规的程序文本中,注解行的数一些正规的程序文本中,注解行的数量约占整个源程序的量约占整个源程序的13到到12,甚至更多甚至更多 注解分为序文性注解和功能性注解注解分为序文性注解和功能性注解27 通常置于每个程序模块的开头部分,通常置于每个程序模块的开头部分,主要描画:主要描画: 模块的功能模块的功能 模块的接口:包括调用格式、参数的模块的接口:包括调用格式、参数的解释、该模块需求调用的其它子模块解释、该模块需求调用的其它子模块名名 重要的部分变量:包括用途、约束和重要的部分变量:包括用途、约束和限制条件限
18、制条件 开发历史:包括模块的设计者、评审开发历史:包括模块的设计者、评审者、评审日期、修正日期以及对修正者、评审日期、修正日期以及对修正的描画的描画28 通常嵌在源程序体内,主要描画程序通常嵌在源程序体内,主要描画程序段的功能。段的功能。 书写功能性注解时应留意的问题:书写功能性注解时应留意的问题: 注解要正确,错误的注解比没有注解注解要正确,错误的注解比没有注解更坏;更坏; 为程序段作注解,而不是为每一个语为程序段作注解,而不是为每一个语句作注解;句作注解; 用缩进和空行,使程序与注释容易区用缩进和空行,使程序与注释容易区分;分; 注解应提供一些从程序本身难以得到注解应提供一些从程序本身难以
19、得到的信息,而不是语句的反复。的信息,而不是语句的反复。29例如,下面的模块级注释描画了公共的和私有的过程在类模块中称为例如,下面的模块级注释描画了公共的和私有的过程在类模块中称为“方法、方法、属性及其数据类型,以及如何将该类作为对象来运用的有关信息:属性及其数据类型,以及如何将该类作为对象来运用的有关信息:公共方法:公共方法: MailAddRecipient(strName As String, Optional fType As Boolean) strName: /要参与到邮件中的收件人称号。要参与到邮件中的收件人称号。 fType: Outlook MailItem Type /属性
20、设置。属性设置。 SendMail(Optional blnShowMailFirst As Boolean) blnShowMailFirst: /发送前能否显示发送前能否显示 Outlook邮件信息。假设不能解析邮件信息。假设不能解析收件人的地址,让代码将它设置为收件人的地址,让代码将它设置为 True。私有方法:私有方法: InitializeOutlook() CreateMail() 公共属性:公共属性: MailSubject:(Write only, String) MailMessage:(Write only, String) MailAttachments:(Write o
21、nly, String)30 经过在程序中添加一些空格、空经过在程序中添加一些空格、空行和缩进等技巧,协助人们从视行和缩进等技巧,协助人们从视觉上看清程序的构造觉上看清程序的构造 例如,经过缩进技巧可明晰地察例如,经过缩进技巧可明晰地察看到程序的嵌套层次,同时还容看到程序的嵌套层次,同时还容易发现诸如易发现诸如“脱漏脱漏end那样的错那样的错误误31 IF THEN IF THEN ELSE ENDIF ELSE ENDIF32 自然的程序段之间可用空行隔开自然的程序段之间可用空行隔开 可经过添加空格使语句成分明晰,如可经过添加空格使语句成分明晰,如(A17)ANDNOT(B49)ORC可写成
22、可写成(A17) AND NOT (B49) OR C 也可以经过添加括号突出运算的优先级,也可以经过添加括号突出运算的优先级,防止发生运算的错误,如防止发生运算的错误,如 a*( b*c )33放置大括号放置大括号普通首选的方法是普通首选的方法是K&RK&R方法:把左括号放在行尾,右括号方法:把左括号放在行尾,右括号放在行首。如:放在行首。如:ifif (X)(X) Y Y 定义函数时该当把左右括号都放在行首,如:定义函数时该当把左右括号都放在行首,如: intint F(intF(int x) x) / 留意,右括号所在的行不该当有其它语句,除非跟随着留意,右括号所在的行不
23、该当有其它语句,除非跟随着一个条件判别。也就是一个条件判别。也就是do-whiledo-while语句中的语句中的“whilewhile和和if-elseif-else语句中的语句中的“elseelse。例如:。例如: dodo bodybody ofof do-loop do-loop whilewhile (condition);(condition);ifif (x(x = y)y) elseelse ifif (x(x y)y) . . elseelse 34 为了使程序中数听阐明更易于了解和维护,可采用以下风格: 数听阐明的次序该当规范化 阐明语句中变量安排有序化 运用注讲解明复杂数
24、据构造35 数听阐明次序规范化,使数据属性容数听阐明次序规范化,使数据属性容易查找,也有利于测试,排错和维护易查找,也有利于测试,排错和维护 原那么上,数听阐明的次序与语法无原那么上,数听阐明的次序与语法无关,其次序是恣意的。但出于阅读、关,其次序是恣意的。但出于阅读、了解和维护的需求,最好使其规范化,了解和维护的需求,最好使其规范化,使阐明的先后次序固定使阐明的先后次序固定36 当多个变量名在一个阐明语句中阐明当多个变量名在一个阐明语句中阐明时,可以将这些变量按字母的顺序陈时,可以将这些变量按字母的顺序陈列,以便于查找列,以便于查找37 假设设计了一个复杂的数据构造,该假设设计了一个复杂的数
25、据构造,该当运用注释来阐明在程序实现时这个当运用注释来阐明在程序实现时这个数据构造的固有特点数据构造的固有特点 例如用户自定义的数据类型,该当在例如用户自定义的数据类型,该当在注释中做必要的补充阐明注释中做必要的补充阐明38 编码阶段的主要义务就是书写程序语句。编码阶段的主要义务就是书写程序语句。有关书写语句的原那么有几十种,总起有关书写语句的原那么有几十种,总起来说,希望每条语句尽能够简单明了,来说,希望每条语句尽能够简单明了,能直截了当地反映程序员的意图,不能能直截了当地反映程序员的意图,不能为了片面追求效率而使语句复杂化。为了片面追求效率而使语句复杂化。 常用的规那么如下:常用的规那么如
26、下:39 在一行内只写一条语句,并且采在一行内只写一条语句,并且采取适当添加空格的方法,使程序取适当添加空格的方法,使程序的逻辑和功能变得更加明确。的逻辑和功能变得更加明确。 许多程序设计言语允许在一行内许多程序设计言语允许在一行内写多个语句。但这种方式会使程写多个语句。但这种方式会使程序可读性变差。因此不可取。序可读性变差。因此不可取。40 程序编写首先该当思索明晰性,程序编写首先该当思索明晰性,不要刻意追求技巧性,使程序编不要刻意追求技巧性,使程序编写得过于紧凑。写得过于紧凑。 例如,有一个用例如,有一个用 C 语句写出的语句写出的程序段:程序段: AI = AIAT; AT = AIAT
27、; AI = AIAT;41 此段程序能够不易看懂,有时还需此段程序能够不易看懂,有时还需用实践数据实验一下。用实践数据实验一下。 实践上,这段程序的功能就是交换实践上,这段程序的功能就是交换AI和和AT中的内容。目的是为了中的内容。目的是为了节省一个任务单元。假设改一下:节省一个任务单元。假设改一下: WORK = AT; AT = AI; AI = WORK;就能让读者一目了然了。就能让读者一目了然了。42 程序编写得要简单,写清楚,直截了当程序编写得要简单,写清楚,直截了当地阐明程序员的意图。例如,地阐明程序员的意图。例如, for ( i = 1; i = n; i+ ) for (
28、j = 1; j = n; j+ ) Vij ( ij ) * ( ji )除法运算在除数和被除数都是整除法运算在除数和被除数都是整型量时,其结果只取整数部分,而得到型量时,其结果只取整数部分,而得到整型量。整型量。43 当当 ij 时时, i / j = 0 当当 ji 时时, j / i = 0 得到的数组得到的数组 当当ij时时 Vij = ( ij ) * ( ji ) = 0当当ij时时 Vij = ( ij ) * ( ji ) = 1这样得到的结果这样得到的结果 V 是一个单位矩阵。是一个单位矩阵。44 写成以下的方式,就能让读者直写成以下的方式,就能让读者直接了解程序编写者的意图。接了解程序编写者的意图。for ( i1; i = n; i+ ) for ( j1; j = n; j+ ) if ( i = j ) Vij 1.0; ELSE Vij 0.0;454.其他常用规那么让编译程序做简单的优化。尽能够运用库函数防止不用要的转移。尽量只采用三种根本的控制构造来编写程序。除顺序构造外,运用if-then-else来实现选择构造;运用do-until或do-while来实
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年冷弯机项目合作计划书
- 2025年抛弃式温深计项目发展计划
- 2025年功能母粒项目发展计划
- 2024年宠物营养师考试内容回顾试题及答案
- 药理学考试形势分析的试题及答案
- 测量的实习报告5篇
- 2024年汽车维修工考试的报名信息解读试题及答案
- 安徽省定远重点中学高三5月高考模拟考试文科综合地理试题
- 发挥优势的二手车评估师学习笔记试题及答案
- 食物中有害物质检测试题及答案
- HG-T 6135-2022 非金属化工设备 玄武岩纤维增强塑料管道及管件
- 汽车制造与试验技术专业(现代学徒制)2022级人才培养方案(高职)
- 课程培训合作协议(3篇)
- 铝合金型材喷涂前处理技术优化
- 有机化学课件(李景宁主编)第1章-绪论
- 公务员职务与及职级并行规定课件
- 智能电网电力负荷调控系统项目环境影响评估报告
- 处理突发事件流程图
- 酒店住宿水单标准模板
- 污水排放检查记录表格模板
- 煤炭采矿煤矿PPT模板
评论
0/150
提交评论