您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 6第6章编码电子教案
1第6章编码和编程语言学习目标了解编码的目的掌握编码的风格了解编码语言的发展掌握编码语言的选择2第6章编码和编程语言教学内容6.1编码的目的6.2编码的风格6.3编码语言本章小结36.1编码的目的编码的目的,是使用选定的程序设计语言,把模块的过程性描述翻译为用该语言书写的源程序。编码模块的过程性描述―――→源程序(不可执行的)(可执行的)编码产生的源程序,应该正确可靠,简明清晰,而且具有较高的效率。但是,清晰和效率却常有矛盾。对于大多数模块来讲,应该把简明清晰放在第一位,如果个别模块要求特别高的效率,就应把具体要求告诉程序员,以便作特殊的处理。46.1编码的目的设计是编码的前导。实践表明,编码中出现的问题主要是由设计中存在的问题引起的。但这并不是说,编码阶段无足轻重。恰恰相反,程序员应该向优秀的译员一样,在编码“翻译”时简明清晰、高质量地将系统设计付诸实施。顺便指出,除了在编码阶段要产生源程序外,在测试阶段也需要编写一些测试程序,用于对软件的测试。但这部分代码用过就可以废弃,不需要在程序质量上多费功夫。在演化模型软件开发中产生的原型代码,也有一部分或全部都是用过就废弃的代码。返回目录56.2编码的风格主要教学内容:6.2.1结构化程序设计6.2.2编码风格返回目录66.2编码的风格6.2.1结构化程序设计程序编码是把软件的详细设计变换成用某一种程序设计语言编写的可实现的源程序,结构化程序设计是在编写程序时首先必须考虑的问题。结构化程序设计技术主要包括两个方面:在编写程序时,强调使用几种基本控制结构。尽可能避免使用会使程序质量受到影响的GOTO语句。在程序设计过程中,尽量采用自顶向下和逐步细化的原则,由粗到细,一步步展开。76.2编码的风格1.结构化程序设计的原则使用语言中的顺序、选择、重复等有限的基本控制结构表示程序逻辑。选用的控制结构只准许有一个入口和一个出口。程序语句组成容易识别的块(block),每块只有一个入口和一个出口。复杂结构应该用基本控制结构进行组合嵌套来实现。语言中没有的控制结构,可用一段等价的程序段模拟,但要求该程序段在整个系统中应前后一致。严格控制GOTO语句。86.2编码的风格例6.1图6.1是使用FORTRANIV语言编写的一个打印A,B,C三数中最小者的程序的流程图。其中出现了6个GOTO语句,程序可读性很差。图6.1打印A,B,C三数中最小者if(A.LT.B)goto120if(B.LT.C)goto110100write(6,*)Cgoto140110write(6,*)Bgoto140120if(A.LT.C)goto130goto100130write(6,*)A140continue96.2编码的风格如果使用在FORTRANIV中没有,而FORTRAN77中才提供的if-then-else结构化构造,则上述程序段可改写成如下形式,这种程序结构清晰,可读性好。if(A.LT.B.AND.A.LT.C)thenwrite(6,*)Aelseif(A.GE.B.AND.B.LT.C)thenwrite(6,*)Belsewrite(6,*)Cendifendif106.2编码的风格例6.2用GOTO语句实现提前退出循环的情况下面一段程序是用Pascal书写的一个多出口循环程序()。其正常循环结束条件是C1=false。但一旦在执行中C2或C3有一个条件得到满足,就会提前退出循环。whilec1dobegin…ifc2thengoto20;…ifc3thengoto30;end;20:{codeforc2exit}goto40;30:{codeforc3exit}40:116.2编码的风格这一程序段有3个出口,明显违反了单出口的要求。可通过增加布尔变量将其修改为单出口结构。每次循环将这些标志检查一遍,以便决定要不要退出循环。修改后的程序段如下。exit1:=false;exit2:=false;while(C1)and(notexit1)and(notexit2)dobegin…ifc2thenexit1:=true;…ifc3thenexit2:=true;…end;if(exit1)thengoto20;if(exit2)thengoto30;20:{codeforc2exit}goto40;30:{codeforc3exit}40:返回目录126.2编码的风格2.程序设计自顶向下,逐步求精对于一个复杂的问题,不要急于马上用计算机指令、数字和逻辑符号来表示它,而应当先用较自然的抽象的语句来表示,从而得到抽象的程序。抽象程序对抽象的数据类型进行某些特定的运算,并用一些合适的记号(可以是自然语言)来表示。下一步对抽象程序再做分解,进入下一个抽象的层次。这样的细化过程一直进行下去,直到程序能被计算机接受为止。此时的程序已经是用某种高级语言或机器指令书写的了。136.2编码的风格自顶向下,逐步求精方法的优点:自顶向下,逐步求精方法符合人们解决复杂问题的普遍规律。可提高软件开发的成功率和生产率;用先全局后局部,先整体后细节,先抽象后具体的逐步求精的过程开发出来的程序具有清晰的层次结构,因此程序容易阅读和理解;程序自顶向下,逐步细化,分解成一个树形结构(如图6.2所示)。在同一层的结点上做的细化工作相互独立。在任何一步发生错误,一般只影响它下层的结点,同一层其它结点不受影响。在以后的测试中,也返回目录146.2编码的风格可以先独立地一个结点一个结点地做,最后再集成。程序清晰和模块化,使得在修改和重新设计一个软件时,可复用的代码量最大;每一步工作仅在上层结点的基础上做不多的设计扩展,便于检查;有利于设计的分工和组织工作。图6.2程序的树形结构返回目录156.2编码的风格6.2.2编码风格编码风格又称程序设计风格。在编程时,着重从以下4个方面入手:源程序文档化,数据说明,语句结构和输入/输出方法,力图提高程序的可读性,改善程序质量。1.源程序文档化编码产生源程序。源代码要文档。源程序文档化主要包括:选择好标识符(变量和标号)、安排好适当的注释以及程序的视觉组织等3方面。返回目录166.2编码的风格(1)标识符的命名标识符包括模块名、变量名、常量名、标号名、子程序名以及数据区名、缓冲区名等。(2)程序的注释程序的注释分为两种:序言性注释和功能性注释。(3)视觉组织—空格、空行和缩进一个优秀的程序员在利用空格、空行和缩进的技巧上显示了他们的经验。176.2编码的风格2.数据说明在编写程序时,则需要注意数据说明的风格。程序中数据说明要易于理解和维护,必须注意几点。(1)数据说明的次序应当规范化,使数据属性容易查找,也有利于测试、排错和维护。(2)当多个变量名用一个语句说明时,应当对这些变量按字母的顺序排列。(3)如果设计了一个复杂的数据结构,应当使用注释来说明在程序实现时这个数据结构的固有特点。186.2编码的风格3.语句结构每个语句都应该力求简单而直接,不能过分复杂化。下述规则有助于使语句简单明了。(1)不要为了节省空间而把多个语句写在同一行。(2)程序编写首先应当考虑清晰性,不要刻意追求技巧性,使程序编写得过于紧凑。(3)程序编写要简单、清楚,直截了当地说明用意。(4)除非对效率有特殊的要求,程序编写要做到清晰第一,效率第二。不要为了追求效率而丧失了清晰性。196.2编码的风格(5)首先要保证程序正确,然后才要求提高速度。(6)尽可能使用库函数。(7)避免使用临时变量而使可读性下降。(8)尽量用公共过程或子程序去代替重复的功能代码段。(9)避免不必要的转移。同时如果能保持程序的可读性,则不必用GOTO语句。(10)尽量只采用三种基本的控制结构来编写程序。206.2编码的风格4.输入和输出(I/O)输入和输出的方式和格式应当尽可能方便用户的使用。在设计和程序编码时都应考虑下列原则:(1)输入方面对所有的输入数据都进行检验,从而识别错误的输入,以保证每个数据的有效性;检查输入项的各种重要组合的合理性,必要时报告输入状态信息;输入步骤和操作尽可能简单,并保持简单的输入格式;216.2编码的风格应允许缺省值;输入一批数据时,最好使用输入结束标志,而不要由用户指定输入数据数目;在以交互式输入/输出方式进行输入时,要在屏幕上使用提示符明确提示交互输入的请求,指明可使用选择项的种类和取值范围;当程序设计语言对输入/输出格式有严格要求时,应保持输入格式与输入语句的要求的一致性;226.2编码的风格(2)输出方面给所有的输出数据加标志;设计良好的输出报表、报告格式;输出信息中不要有文字错误,保证输出结果的正确性。输入/输出风格还受到许多其它因素的影响。如输入/输出设备(例如终端的类型,图形设备,数字化转换设备等)、用户的熟练程度、以及通信环境等。236.2编码的风格Wasserman为“用户软件工程及交互系统的设计”提供了一组指导性原则,可供软件设计和编程参考:当用户使用程序时,能对用户做到“在线帮助”;对可能产生重大后果的请求,给出醒目的提示,待用户再次确认后才执行(如格式化操作等);区别对待不同的用户,使程序的输入要求和输出格式适应用户的习惯和水平;发生错误时能迅速恢复正常;有完备的输入出错检查和出错恢复措施,在程序执行过程中尽量排除由于用户的原因而造成程序出错的可能性;246.2编码的风格总之,要从程序编码的实践中,积累编制程序的经验,培养和学习良好的程序设计风格,使编写出来的程序清晰易懂,易于测试和维护。在程序编码阶段改善和提高软件的质量。返回目录256.3编码语言主要教学内容:6.3.1编码语言的发展6.3.2常用的编码语言6.3.3编码语言的选择返回目录266.3编码语言6.3.1编码语言的发展按照软件工程的观点,语言的发展至今已经历了4代。1.第一代语言−−−机器语言机器语言又叫低级语言。是由机器指令代码组成的语言。用这种语言编写的程序,都是二进制代码的形式,不需要翻译,直接被计算机识别和执行,因而程序占用内存少,执行效率高。但是由于程序都是二进制的形式,给编写和阅读带来很大的不便,不利于维护。另外,由于不同的机器有相应的一套机器语言,所以程序的可移植性很差。276.3编码语言2.第二代语言−−−汇编语言汇编语言又称符号语言。它把计算机所能识别的机器指令用符号表示出来,从而比用二进制表示的机器语言更直观,更方便阅读和排错。不同指令集的处理器系统就有自己相应的汇编语言。从软件工程的角度来看,汇编语言只是在高级语言无法满足设计要求时,或者不具备支持某种特定功能(例如特殊的输入/输出)的技术性能时,才被使用。286.3编码语言3.第三代语言−−−高级程序设计语言高级程序设计语言从语句结构看,它比较接近于人类自然语言,程序中所用的运算符和运算表达式也与数学中的形式差不多,因此,高级语言也称算法语言。和早期的语言和汇编语言相比,高级语言比较容易掌握和理解,并且通用性强,可以在不同的机器上运行,便于维护,极大地提高了程序设计的效率和可靠性。(1)传统的高级程序设计语言(2)通用的结构化程序设计语言(3)专用语言296.3编码语言4.第四代语言(4GL)上述的通用语言仍都是“过程化语言”。编码的时候,要详细描述问题求解的过程,告诉计算机每一步应该“怎么做”。为了把程序员从繁重的编码中解放出来,还需寻求进一步提高编码效率的新语言,这就是第四代语言(4GL)产生的背景。4GL用不同的文法表示程序结构和数据结构,但是它是在更高一级抽象的层次上表示这些结构,它不需规定太多的算法性细节。它是面向应用的,只需说明“做什么”。返回目录306.3编码语言第四代语言分为以下几种类型:(1)查询语言(2)程序生成器(3)其它4GL316.3编码语言6.3.2常用的编码语言高级语言种类繁多,总数已不下千种。从软件工程的角度,可以把高级语言分为基础语言、结构化语言和面向对象语言3大类。1.基础语言基础语言的特点是历史悠久、应用广泛,有大量的软件库,今天仍拥有广大用户。又
本文标题:6第6章编码电子教案
链接地址:https://www.777doc.com/doc-2895981 .html