第5章软件编码掌握:程序设计语言分类、常见程序设计语言及其特点、程序设计语言的选择、编码规范、结构化程序设计的方法。5.1程序设计语言5.1.1程序设计语言分类1.机器语言机器语言又称“低级语言”,是以二进制代码表示的指令集合。占用内存少、执行效率高不易为人们理解、记忆和交流2.汇编语言汇编语言又称符号语言。,它把计算机能识别的机器指令用符号表示用汇编语言编写的程序更易理解、调试和维护3.高级语言与机器语言和汇编语言相比,高级语言比较容易理解和掌握,并且通用性好便于维护,这极大地提高了编程的效率和程序的可靠件性用高级语言编写的程序也不能直接被机器识别和执行5.1.2常见程序设计语言及其特点1.C语言C语言是一种编译型计算机程序设计语言,它既有高级语言的特点,又具有汇编语言的特点。C语言可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序,因此,其应用范围十分广泛。C语言的优点包括:(1)简洁紧凑、灵活方便。(2)运算符丰富。(3)数据结构丰富。(4)C语言是结构式语言。(5)C语言的语法限制不太严格,程序设计自由度大。(6)C语言允许直接访问物理地址,可以直接对硬件进行操作(7)C语言程序生成代码质量高,程序执行效率高。(8)C语言适用范围大,可移植性好。2.C++其优点主要包括:(1)与C语言兼容,既支持面向对象的程序设计,也支持结构化的程序设计。(2)修补了C语言中的一些漏洞(3)生成的目标程序质量高,程序执行效率高。(4)提供了异常处理机制,简化了程序的出错处理。(5)函数可以重载并可以使用缺省参数。(6)提供了模板机制。3.JavaJava的特点包括:(1)平台无关性。(2)安全性。(3)面向对象。(4)分布式。(5)健壮性。4.BasicBASIC是Beginner’sAll-purposeSymbolicCode(初学者通用符号指令代码)的缩写。BASIC语言是一种解释执行的会话语言,它简单易学,因此成为许多初学者学习程序设计的入门语言。5.C#C#是微软公司发布的一种面向对象的、运行于.NETFramework之上的高级程序设计语言。C#看起来与Java惊人的相似,它也包括了诸如单一继承、界面等特性,并具有与Java几乎同样的语法及编译成中间代码再运行的过程。C#与Java的不同之处在于它与COM(组件对象模型)是直接集成的。6.FORTRANFORTRAN是英文FormulaTranslator的缩写,译为“公式翻译器”,它是世界上最早出现的计算机高级程序设计语言。Fortran语言的最大特点是接近数学公式的自然描述,以及具有很高的执行效率。同时,它易学,语法严谨,并可以直接对矩阵和复数进行运算。7.PASCALPascal是最早出现的结构化编程语言,它具有丰富的数据类型和简洁灵活的操作语句,对于数值和非数值问题都具有很好的描述能力。Pascal语言现已成为使用最广泛的基于DOS的语言之一,其主要特点有:严格的结构化形式、丰富完备的数据类型、运行效率高、查错能力强。8.COBOLCOBOL是CommonBusinessOrientedLanguage(面向商业的公用语言)的缩写,这是商业数据处理中广泛使用的一种标准语言。它具有出色的适合商业应用的数据类型,能有效地支持与商业数据处理有关的各种技术,适合于计算简单、数据量大的应用场合,广泛应用于商业领域。9.ALGOLALGOL是结构化语言的前驱,它提供了特别丰富的过程构造及数据类型构造,在欧洲得到了广泛应用。但是,PASCAL语言和C语言问世以后,它的位置就逐渐被取代了。10.AdaAda是一种美国国防部为克服软件开发危机而耗费巨资,历时近20年研制成功的表现能力很强的通用程序设计语言,它被誉为第四代计算机语言的成功代表。Ada语言体现了许多现代软件的开发原理,并将这些原理付诸实现。Ada语言的使用大大提高了软件系统的清晰性、可靠性、有效性、可维护性。11.LISPLISP(ListProcessor,链表处理语言)是由约翰•麦卡锡在1960年左右创造的一种基于λ演算的函数式编程语言,它主要应用于人工智能领域。12.PrologProlog(ProgramminginLogic)是一种逻辑编程语言,它建立在逻辑学的理论基础之上,最初被运用于自然语言等研究领域。现在Prolog已广泛应用于人工智能的研究中,用来建造专家系统、自然语言理解、智能知识库等。使用Prolog能够比使用其他语言更快速地开发程序,因为它的编程方法更像是使用逻辑的语言来描述程序。13.SmallTalkSmalltalk被公认为历史上第二个面向对象的程序设计语言和第一个真正的集成开发环境(IDE),它由AlanKay,DanIngalls,TedKaehler,AdeleGoldberg等于20世纪70年代初在XeroxPARC开发。5.1.3程序设计语言的选择开发人员在选择程序设计语言时,应考虑以下因素:1.应用领域2.算法与数据结构的复杂性3.软件执行的环境4.软件执行的效率5.2编码规范5.2.1编排格式1.采用缩进风格2.控制代码行宽度3.使用空格字符实现缩进4.适当地使用空行5.不允许把多个短语句写在一行中6.适当使用空格5.2.2命名规则(1)尽量采用有意义的名字命名。(2)名字的长度无限制,但也不宜过长。(3)如果名字使用缩写,那么缩写规则须保持一致。5.2.3注释(1)每一个注释都应当有用,应避免无意义的注释。(2)合理使用序言性注释和功能性注释。以下一段代码是序言性注释的例子:/*名称:求平均值函数功能:计算数组的平均值输入:score–数组,元素类型为float,代表分数n–数组中元素的个数返回值:score数组中所有元素的平均值使用举例:aver=average(score,n)作者:张**11/12/2019版本号:1.1*/floataverage(score,n)intn;floatscore[];{inti;floatscore[];for(i=1;in;i++)sum=sum+socre[i];aver=sum/n;return(aver);}以下一段代码是功能性注释的例子:/*对每月销售额求和*/TOTAL=AMOUNT+TOTAL(3)对函数、过程、方法、变量等合理命名,可增加代码的可读性,从而减少不必要的注释。(4)注释格式应该尽量保持统一。5.2.4输入/输出(1)对所有输入数据都进行检验,以保证每个数据的有效性。例如,某系统中身份证号字段的输入,设计校验规则为:保证其不为空,并且由18位的纯数字组成。(2)检查输入项重要组合的合法性。(3)保持输入格式和输入步骤的简单。(4)使用数据结构标记,不要要求用户指定数据的数目。(5)明确提示交互式输入的请求,详细说明可用的选择或边界数值。(6)当程序设计语言的格式有严格要求时,应保持输入格式一致。(7)设计良好的输出报表。(8)给所有输出数据加标志。(9)当程序设计语言对输入/输出格式有严格要求时,应保持输入格式与输入语句的要求一致。5.2.5程序结构程序结构应符合以下原则:(1)尽量避免使用复杂的条件测试。(2)尽量减少对“非”条件的测试。(3)避免过多使用循环嵌套和条件嵌套。(4)利用括号使逻辑表达式和算术表达式的运算次序清晰、直观。(5)尽可能使用库函数。5.2.6效率和GOTO语句1.效率一般来说,对效率的追求需要明确以下几点:(1)效率是一个性能要求,其目标在需求分析阶段就应给出。(2)追求效率应建立在不损害程序可读性或可靠性的基础上,要先使程序正确,再提高程序效率;先使程序清晰,再提高程序效率。(3)提高程序效率的根本途径在于选择良好的设计方法、良好的数据结构算法。根据有关资料,以下原则对提高程序效率有一些帮助:(1)在编码之前,先化简算术表达式和逻辑表达式。(2)特别注意嵌套的循环,以确定是否有语句可以从循环内层移到循环外层。(3)尽量避免使用多维数组和复杂的表格。(4)尽量使用执行时间短的算术运算。(5)尽量避免混合使用不同数据类型的量。(6)尽量使用整型算术表达式和逻辑表达式。2.GOTO语句近年来,关于“一切GOTO语句都是有害的”的论断是否正确的争论仍在继续,是否应当去掉GOTO语句还未有定论。因此,除非确实需要,否则最好不使用GOTO语句;确实需要GOTO语句时,也要限制使用的范围,特别要避免GOTO语句相互交叉的情况发生。5.3结构化程序设计5.3.1结构化程序设计的形成1968年,Dijskstra在《计算机通讯》上发表文章,提出了“结构化程序设计”的思想。结构化程序设计的基本思想是采用“自顶向下,逐步求精”的程序设计方法和“单入口单出口”的控制结构。5.3.2结构化程序设计方法1.程序流程的基本结构1)顺序结构语句形式如下:语句A语句B2)选择结构单分支结构如图4-8所示,相应的语句形式如下:if(条件P)语句Aelse语句B多分支结构如图4-9所示,相应的语句形式如下:switch(V){caseV1:语句A1caseV2:语句A2caseVn:语句An……default:语句An+1}3)循环结构while循环语句形式为:while(条件表达式P){语句A}until循环语句形式为:do{语句A}until(条件表达式P)2.自顶向下,逐步求精结构化程序设计遵循的是自顶而下,逐步求精的设计方法。在分析一个问题的编程思路时,先将该问题分成若干个大的步骤;然后对每一步骤再进行细化,分成若干个小的步骤。这样逐级划分,直到最后能将每一个步骤直接翻译成为相应的计算机语言指令。5.4编程与程序员的基本素质要成为一名合格的程序员,不仅要具备编程功底和动手能力,还需要具备以下素质1.团队精神和协作能力2.文档习惯3.规范化和标准化的代码编写习惯4.复用性与模块化思维能力5.测试习惯6.学习和总结的能力第5章结束谢谢!