已阅读5页,还剩45页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件工程软件工程 第第1212章章 程序设计语言和编码程序设计语言和编码 编码阶段的任务是根据详细设计说明书 编写程序 程序设计语言的特性和程序设计风格会 深刻地影响软件的质量和可维护性 为了保证程序编码的质量,程序员必须 深刻理解、熟练掌握并正确地运用程序 设计语言的特性 此外,还要求源程序具有良好的结构性 和良好的程序设计风格 2 内容摘要内容摘要 程序设计语言 程序设计风格 3 内容摘要内容摘要 程序设计语言程序设计语言 程序设计风格 4 基本概念基本概念 程序设计语言是指用于书写计算机程序的 语言,它是一种实现性的软件语言 程序设计语言包含:语法、语义和语用 语法(syntax)用来表示构成语言的各个 记号之间的组合规则,它是构成语言结构 正确成分所需遵循的规则集合 如C语言中for语句的构成规则是: for(表达式1;表达式2;表达式3)语句 语法中不涉及到这些记号的含义,也不涉及使用者 5 语义(semantic)用来表示按照各种表示方式所表 示的各个记号的特定含义,但它不涉及到使用者。 如上述for语句中:表达式1表示循环初值;表达 式2表示循环条件;表达式3表示循环的增量;语句 为循环体。整个语句的语义是: (1)计算表达式1 (2)计算表达式2,若计算结果为0,则终止循环; 否则转(3) (3)执行循环体 (4)计算表达式3 (5)转向(2) 6 语用(pragmatic)用来表示构成语言的各 个记号和使用者的关系。 如:语言是否允许递归?是否要规定递归 层数的上界?这种上界如何确定?这些都属 于语用上的问题。 7 程序设计语言的基本成分程序设计语言的基本成分 程序设计语言基本成份可归纳为四种:数 据成分、运算成分、控制成分、传输成分 数据成分:它指明该语言能接受的数据,用 来描述程序中的数据。如各种类型的变量、 数组、指针、记录等。作为程序操作的对象 ,具有名称、类型和作用域等特征。使用前 要对数据的这些特征加以说明。数据名称由 用户通过标识符命名,类型说明数据需占用 存储单元的多少和存放形式,作用域说明数 据可以使用的范围。 8 以 C语言为例,其数据构造方式可分为基本 类型和派生类型 9 运算成分:它指明该语言允许执行的 运算,用来描述程序中所需进行的运 算。如 + 、- 、* 、/ 等。 控制成分:它指明该语言允许的控制 结构,人们可利用这些控制成分来构 造程序中的控制逻辑。基本的控制成 分包括:顺序结构、条件选择结构和 重复结构。如下页图 10 基本程序控制结构 11 传输成分:它指明该语言允许的数据传 输方式,在程序中可用它进行数据传输 。 例如:Turbo C语言标准库提供了两个 控制台格式化输入、输出函数printf ( ) 和scanf ( ),这两个函数可以在标准输 入输出设备上以各种不同的格式读写数 据。 Printf ( )函数用来向标准输出设 备(屏幕)写数据 ,scanf ( ) 函数用来 从标准输入设备(键盘)上读数据。 12 程序设计语言的发展和分类程序设计语言的发展和分类 程序设计语言的分类 按语言级别:低级语言和高级语言; 按应用范围:通用语言和专用语言; 按用户要求:过程式语言和非过程式语言 ; 按语言所含的成分:顺序语言、并发语言 和分布式语言 13 程序设计语言的发展史 第一代语言:机器语言和汇编语言 第二代语言:早期的高级语言,如BASIC ,FORTRAN,COBOL等 第三代语言:具有很强的数据结构和过程 描述能力,支持结构化编程,如Pascal, Modula,C,Ada等 第四代语言(4GL):这类语言出现于七 十年代,其目的是为了提高程序开发速度 ,以及让非专业用户能直接编制计算机程 序 14 第四代语言的特点: 对用户友善,一般用类自然语言、图形或 表格等描述方式,普通用户很容易掌握 多数与数据库系统相结合,可直接对数据 库进行操作 对许多应用功能均有默认的假设,用户不 必详细说明每一件事情的做法 程序码长度及获得结果的时间与使用 COBOL语言相比约少一个数量级 支持结构化编程,易于理解和维护 15 目前,第四代语言的种类繁多,尚无标准 ,在语法和能力上有很大差异,其中一些 支持非过程式编程,更多的是既含有非过 程语句,也含有过程语句。 典型的4GL有:数据库查询语言、报表生 成程序、应用生成程序、电子表格、图形 语言等。 多数4GL是面向领域的,很少是通用的。 16 自然语言 最理想的是可以使用自然语言(如英语 、法语或汉语),使计算机能理解并立 即执行请求。但迄今为止,自然语言理 解仍然是计算机科学研究中的一个难点 ,尽管在实验室的研究中取得了一定的 成果,但在现实中的应用仍然是相当有 限的。 17 程序设计语言的选择程序设计语言的选择 为一个特定的开发项目选择编程语言时 ,通常要考虑如下因素: 应用领域 算法和计算复杂性 软件运行环境 用户需求,特别是性能需求 数据结构的复杂性 软件开发人员的知识水平 可用的编译器与交叉编译器 18 项目所属的应用领域常常是首要的标准 COBOL适用于商业领域 FORTRAN适用于工程和科学计算领域 Prolog、Lisp适用于人工智能领域 Smalltalk、C+适用于OO系统的开发 有些语言适用于多个应用领域,如C 若有多种语言都适合于某项目的开发时 ,也可考虑选择开发人员比较熟悉的语 言 19 选择高级语言还是低级语言 优先选择高级语言 开发和维护高级语言程序比开发和维护低 级语言程序容易得多 必要时使用低级语言 高级语言程序经编译后所产生的目标程序 的功效要比完成相同功能的低级语言程序 低得多,所以在有些情况下会部分或全部 使用低级语言 20 使用低级语言的情况: 对运行时间和存储空间有过高要求的项 目,如电子笔记本中的软件 在某些不能提供高级语言编译程序的计 算机上开发程序,如单片机上的软件 大型系统中对系统执行时间起关键作用 的模块 21 内容摘要内容摘要 程序设计语言 程序设计风格 22 程序设计风格程序设计风格 编程的依据是详细设计的结果,因此程序 的质量主要取决于设计,但编程的质量也 在很大程度上影响着程序的质量 编程风格主要包括: 源程序中的内部文档 数据说明 语句构造 输入输出 23 源程序文档化源程序文档化 在源程序中可包含一些内部文档 ,以帮助阅读和理解源程序 在源程序中的内部文档主要包括 : 标识符的命名 注解 程序的视觉组织 24 标识符的命名标识符的命名 选择含义明确的名字,使其能正确提示标 识符所代表的实体 例如,表示总量的变量名用Total,表示平 均值的用Average等 名字不要太长,太长会增加打字量,且易 出错。必要时可使用缩写 不用相似的名字,相似的名字容易混淆, 不易发现错误 如cm,cn,cmn,cnm,cnn,cmm 25 不用关键字作标识符 同一个名字不要有多个含义 名字中避免使用易混淆的字符。 如数字0与字母O; 数字1与字母I或l; 数字2与字母z等 26 程序的注释程序的注释 程序中的注解用来帮助人们理解程序 ,决不是可有可无的 一些正规的程序文本中,注解行的数 量约占整个源程序的13到12, 甚至更多 注解分为序言性注解和功能性注解 27 通常置于每个程序模块的开头部分, 主要描述: 模块的功能 模块的接口:包括调用格式、参数的解释、该模 块需要调用的其它子模块名 重要的局部变量:包括用途、约束和限制条件 开发历史:包括模块的设计者、评审者、评审日 期、修改日期以及对修改的描述 序言性注释序言性注释 28 通常嵌在源程序体内,主要描述程序 段的功能。 书写功能性注解时应注意的问题: 注解要正确,错误的注解比没有注解更坏; 为程序段作注解,而不是为每一个语句作注解; 用缩进和空行,使程序与注释容易区分; 注解应提供一些从程序本身难以得到的信息,而 不是语句的重复。 功能性注释功能性注释 29 例如,下面的模块级注释描述了公共的和私有的过程(在类模块中称为“方法”)、属 性及其数据类型,以及如何将该类作为对象来使用的有关信息: 公共方法: MailAddRecipient(strName As String, Optional fType As Boolean) strName: /要加入到邮件中的收件人名称。 fType: Outlook MailItem Type /属性设置。 SendMail(Optional blnShowMailFirst As Boolean) blnShowMailFirst: /发送前是否显示 Outlook邮件信息。如果不 能解析收件人的地址,让代码将它设置为 True。 私有方法: InitializeOutlook() CreateMail() 公共属性: MailSubject:(Write only, String) MailMessage:(Write only, String) MailAttachments:(Write only, String) 30 通过在程序中添加一些空格、空 行和缩进等技巧,帮助人们从视 觉上看清程序的结构 例如,通过缩进技巧可清晰地观 察到程序的嵌套层次,同时还容 易发现诸如“遗漏end”那样的错误 视觉组织视觉组织 31 IF() THEN IF() THEN ELSE ENDIF ELSE ENDIF 32 自然的程序段之间可用空行隔开 可通过添加空格使语句成分清晰,如 (A17)ANDNOT(B49)ORC 可写成 (A17) AND NOT (B49) OR C 也可以通过添加括号突出运算的优先级 ,避免发生运算的错误,如 a*( b*c ) 33 放置大括号 一般首选的方法是K if (x = y) else if (x y) . else 34 数据说明数据说明 为了使程序中数据说明更易于 理解和维护,可采用以下风格 : 数据说明的次序应当规范化 说明语句中变量安排有序化 使用注解说明复杂数据结构 35 数据说明的次序应当规范化数据说明的次序应当规范化 数据说明次序规范化,使数据属性容 易查找,也有利于测试,排错和维护 原则上,数据说明的次序与语法无关 ,其次序是任意的。但出于阅读、理 解和维护的需要,最好使其规范化, 使说明的先后次序固定 36 说明语句中变量安排有序化说明语句中变量安排有序化 当多个变量名在一个说明语句中说明 时,可以将这些变量按字母的顺序排 列,以便于查找 37 使用注释说明复杂数据结构使用注释说明复杂数据结构 如果设计了一个复杂的数据结构,应 当使用注释来说明在程序实现时这个 数据结构的固有特点 例如用户自定义的数据类型,应当在注 释中做必要的补充说明 38 语句构造语句构造 编码阶段的主要任务就是书写程序语句 。有关书写语句的原则有几十种,总起 来说,希望每条语句尽可能简单明了, 能直截了当地反映程序员的意图,不能 为了片面追求效率而使语句复杂化。 常用的规则如下: 39 1. 1. 在一行内只写一条语句在一行内只写一条语句 在一行内只写一条语句,并且采 取适当添加空格的办法,使程序 的逻辑和功能变得更加明确。 许多程序设计语言允许在一行内 写多个语句。但这种方式会使程 序可读性变差。因而不可取。 40 2.2.程序编写首先应当考虑清晰性程序编写首先应当考虑清晰性 程序编写首先应当考虑清晰性, 不要刻意追求技巧性,使程序编 写得过于紧凑。 例如,有一个用 C 语句写出的 程序段: AI = AIAT; AT = AIAT; AI = AIAT; 41 此段程序可能不易看懂,有时还需 用实际数据试验一下。 实际上,这段程序的功能就是交换 AI和AT中的内容。目的是为了 节省一个工作单元。如果改一下: WORK = AT; AT = AI; AI = WORK; 就能让读者一目了然了。 42 3.3.程序要能直截了当地说明程序员的用意程序要能直截了当地说明程序员的用意 。 程序编写得要简单,写清楚,直截了当 地说明程序员的用意。例如, for ( i = 1; i = n; i+ ) for ( 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; 45 4.其他常用规则 让编译程序做简单的优化。 尽可能使用库函数 避免不必要的转移。 尽量只采用三种基本的控制结构来编 写程序。除顺序结构外,使用if- then-else来实现选择结构;使用do -until或do-while来实现循环结构。 46 输入
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水源监控与污染防控技术方案
- 气体供应安全保障与应急响应方案
- 滑坡防治工程设计与建设协调方案
- 工业园绿色供电设施维护方案
- 信托计划合同
- 未签订续签合同
- 2025-2030木材冷链物流成本控制与效率优化方案报告
- 2025-2030智能电表双向通信模块标准统一与海外市场拓展研究
- 2025-2030智能家居生态系统竞争格局与用户体验升级策略研究报告
- 商城上架合同
- 2025至2030中国注浆泵行业市场深度研究与战略咨询分析报告
- 合同能源托管方案
- 胆囊腺肌症的超声诊断
- 快递员安全培训课程
- 《红星照耀中国》课件
- 2025至2030年中国竹吸管行业市场竞争现状及发展趋向研判报告
- 陕西省专业技术人员继续教育2025公需课《党的二十届三中全会精神解读与高质量发展》20学时题库及答案
- 新疆乌鲁木齐市写字楼市场调研报告
- 中医药知识和技能培训
- 2025年中陆集团兰州中凯工贸有限责任公司招聘笔试参考题库含答案解析
- 格力工艺员笔试题及答案
评论
0/150
提交评论