编码(zhhf09)(语言特点)

上传人:子 文档编号:57134558 上传时间:2018-10-19 格式:PPT 页数:33 大小:164.50KB
返回 下载 相关 举报
编码(zhhf09)(语言特点)_第1页
第1页 / 共33页
编码(zhhf09)(语言特点)_第2页
第2页 / 共33页
编码(zhhf09)(语言特点)_第3页
第3页 / 共33页
编码(zhhf09)(语言特点)_第4页
第4页 / 共33页
编码(zhhf09)(语言特点)_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《编码(zhhf09)(语言特点)》由会员分享,可在线阅读,更多相关《编码(zhhf09)(语言特点)(33页珍藏版)》请在金锄头文库上搜索。

1、第 十 讲,编码(coding),本讲(第七章)的主要内容,编码的任务 程序设计语言 编码风格,编码的任务,两个相关概念 实现:体现“如何做”的程序文本称为实现。 规范:“做什么”的形式化描述通常称为规范。 编码阶段的任务: 编写源程序(source code); 编写文档(document); 单元测试(unit testing)。 软件质量主要取决于设计的质量,但不能忽略编码和程序设计语言的影响 编码需要遵循一定的标准,形成编码风格。,编码任务的流程,Pseudo code,Source code,Debug Test,Link,Object code,Executable code,Co

2、mpile,Coding,微软开发的经验注重标准,Cusumano 和Selby指出微软软件开发过程中,在保留了开发人员展示自己的创造力和个性的同时切实地融入软件工程概念。 微软开发小组都在各自独立的地方工作,使用常用的开发语言,公共的开发风格,标准的开发工具。,微软开发的经验注重标准,标准有助于交流,讨论问题,解决问题。 微软要求各自的小组收集一系列测试结果,包括出错信息和发现的潜在和修改了的错误。当继续开发产品时,这些测试结果指导将来的决策。 标准有助于把设计转化为代码和软件重用。 按照标准把代码结构化,你可以保留代码和设计中的相同部分。因此,设计的变化很容易在代码中体现。,程序设计语言分

3、类,机器语言(Machine Language) 汇编(Assemble Language) 高级语言 4GL,高级语言分类(应用特点观),基础语言:通用语言,应用广泛,如BASIC、FORTRAN等。 结构化语言:现代语言,提供结构化的控制结构,支持很强的过程能力和数据结构能力。如PASCAL、C、Ada等。 专用语言:为某种特殊应用而设计的具有独特语法形式的语言。如APL用于向量运算;LISP、PROLOG用于人工智能。,高级语言分类(内在特点观),系统实现语言:利于系统软件的设计,灵活的硬件资源管理。 静态高级语言:静态地分配存储。 块结构高级语言:提供有限地动态存储分配。 动态高级语言

4、:动态地完成所有存储管理。,程序设计语言的发展,参见WORD表格,从多方面测度设计语言的特点,名字说明 类型说明 初始化 程序对象的局部性 程序的模块特性 循环控制结构 分支控制结构 异常处理 独立编译,设计语言特点之一:名字说明,名字说明的意义和作用 名字(如变量名,函数名等)说明是指预先说明程序中所使用对象的名字,使得编译系统能够检查出程序中这些名字使用的合法性。 利于排查错误,提高软件的可靠性。 Fortran, Basic语言并不进行显式的名字说明,会容易出现错误,或者错误难以诊断。,设计语言特点之二:类型说明,类型说明的意义 与名字说明的概念是一致的 可以借助于编译系统检查错误 预先

5、说明数据类型有助于编译系统的类型检查,减少歧义性 用户可以自定义数据类型 Fortran语言规定,如果不显式地说明一个变量,那么,这个变量名字的第一个字母就隐含了该变量的类型。,设计语言特点之三:初始化,初始化的意义 减少程序出现错误的可能性。 提高系统的可靠性和安全性。 强迫程序员对变量进行初始化 如果引用之前没有初始化,系统会提示错误; 如果初始化之后没有被引用,系统也会提示错误。,语言特点之四:程序对象的局部性,程序对象的局部性的意义 对变量、常量、函数等程序对象的说明该靠近使用它的地方。 尽量使用局部的变量,以提高程序的可读性和可修改性。,语言特点之五:程序模块,有关程序模块的一些概念

6、 局部变量 全局变量(extern int x,y, 其作用域可以是同一文件的多个函数) 外部函数 (extern int function( ) 可以被其它文件中的函数调用) 内部函数 (static float function( ) 只能被同一个文件的其它函数调用),计语言特点之六:循环控制,循环控制结构 for语句 while-do语句 需要在循环体内任意一点测试循环结束条件(可以用if-then-else实现;Ada提供了exit语句,exit when ),语言特点之七:分支控制结构,分支控制结构 if then else case (表达式)的两个问题:一是表达式的值不在预定范围

7、内;二是由表达式的值所选择的分支取决于执行语句的排列次序。 case (表达式),由表达式的值匹配case标号选择执行分支,与排列次序无关。允许缺省标号( C语言的default)或补缺标号(Ada语言的other)。,语言特点之八:异常处理,异常:程序执行过程中发生的错误或意外事件。 异常处理 是设计语言为程序员提供的一组处理异常情况的功能。例如,PL/1、Ada语言提供了相应的异常处理机制,当子程序或函数多层嵌套调用时,可以将异常信息从一个函数方便地传送到另一个函数。,语言特点之九:独立编译,独立编译的意义 独立编译是指能够分别编译各个程序单元,然后再把他们集成为一个完整的程序。 只需要重

8、新编译修改了的模块,然后重新连接即可。例如对模块的修改,如果不影响到其它的模块,仅仅需要对模块重新编译即可。 对于大型软件来说,独立编译非常重要,程序设计语言的选择,汇编语言 高级语言,高级语言的选择,总的要求 利于提高软件质量 降低开发成本 便于测试和维护 独立编译等 具体的实用标准 系统用户的要求,对效率的考虑。 可以使用的编译系统,目标系统的运行环境等。 可以利用的软件开发平台和开发工具。,高级语言的选择(续),软件工程的规模,算法和计算以及数据结构复杂性。 程序员的知识水平和喜好 软件的应用领域 软件可移植性要求,编码风格,程序内部的文档 数据说明的次序标准化 语句结构应该简洁明了 效

9、 率 满足human-engineering的I/O风格 其它的风格,1. 程序内部的文档(P137),程序内部的文档包括意义明确的标识符、适当的注释和标准化的书写格式等。 变量名、函数名、数据结构名等具有明显的意义,可以提高程序的可读性,便于测试、维护。 注释要简明、适当和正确。序言性注释主要描述模块的功能、主要算法、接口特点,重要的数据结构说明等;与程序代码有关的注释要插在程序中对应的位置,解释有关代码的作用和必要性。 程序清单的布局要有层次性,要求结构清晰。,2. 数据说明的次序标准化,按照数据结构或数据类型确定说明的次序 对多个变量说明应该按照字母顺序排列,3. 语句结构应该简洁明了(

10、P138),尽量使用三种基本结构,允许使用扩展的结构化设计,尽量不用GOTO语句(或局部性使用)。 每行只写一条语句。 尽量避免复杂的条件判断和对“非”条件的判断。 避免大量使用循环嵌套和条件嵌套。 善于使用括号使表达式次序清晰直观。,4. 效率,程序运行时间(P139) 存储器效率 输入/输出的效率 从效率第一到清晰第一(对大多数模块清晰第一,个别模块效率第一),5. 满足human-engineering的I/O风格,对输入数据进行有效性检验,防止对程序的破坏 对多个相关输入项进行组合检查,剔除似是而非的输入值。 使用数据结束标记,不要要求用户用数据的数目来控制。 交互式输入的提示清楚,尽

11、量说明可用的选择或边界数值。 程序设计语言对格式有严格要求时,应保持输入格式一致。 为输出数据加标志或加以必要的说明以提醒读者 保持输入格式简单;设计良好的输出报表。,6. 其它的风格,对用户提供在线帮助。 对可能产生重大后果请求给出醒目提示,待用户再次确认。 使程序具有“防弹bulletproof”功能,不至于因用户的偶然错误使程序发生非正常的中断。,程序设计方法论,自顶向下 先实现软件结构的高层模块,再设计较低层次的模块 程序可读性较好,可靠性高 自底向上 先实现软件结构的低层模块,再设计较高层次的模块,直至实现所有的模块 往往局部是优化的,但系统的整体结构较差。可以较早发现关键算法的可行

12、性,以避免较大的返工,程序设计自动化,由用户需求定义直接生成程序代码 利用各种通用模块进行组装 基于领域 模块独立性好(可理解性、功能可以预测,强内聚,低耦合等 接口定义简单明了 模块库(构件库)丰富 扩展的自动化程序设计范型 基于知识的表达 非形式化规范到形式化规范 结合原型思想,程序设计工具,编译程序 诊断语法错误 生成高效率的机器代码 开发和优化编译程序 一般的语言系统还提供一些与编译系统联合使用的交叉调试工具 代码管理系统 便于各类人员之间的协调(记录程序模块开发和维护的历程,确定模块间的依赖关系) 保证同一系统不同版本中公共代码的一致 代码管理工具,如UNIX/PWB系统中的MAKE和SCCS。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号