- 1、本文档共61页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
本章要点 选择程序设计语言考虑的因素:编程人员的水平和编程经历,待开发软件的类型,算法和计算复杂性,数据结构的复杂性,软件的开发成本和时间要求,软件的可移植性要求,可用的软件工具。 程序设计的风格主要考虑:基本风格、可读性、正确性和容错性、可重用和可移植性、输入和输出风格。 程序的效率是指程序的执行速度及程序所需占用的内存的存储空间。对效率无重要改善,不能牺牲程序的简单性、可读性和正确性。 * 考虑软件的开发成本和时间要求 不仅要考虑当前的开发成本,还要考虑今后的维护成本,如果选择的语言很生僻,即使现在以很快的速度开发出来,将来的维护工作量不得不考虑。 软件的可移植性 如果目标系统的运行环境不能确定,例如,可能运行在小型机的UNIX操作系统上,也可能运行在大型机的OS/400操作系统上,甚至还要运行在PC机的Windows操作系统环境中,这时选择的开发语言最好是JAVA。这样可以保证软件的跨平台运行。 可用的软件工具 选择语言时,特别是为大型软件选择语言时,一定要考虑可用的软件工具。如果某种语言有支持开发的工具,则开发和调试都会容易。 良好的编程习惯 良好的编程习惯 程序员编写的代码除了交给计算机运行外,还必须让其他程序员或设计人员能够看懂。如果程序代码的可读性好,则调试和维护的成本就可以大幅度降低,同时可以减小程序运行期间软件失效的可能性,提高程序的可靠性。 对于代码编写而言,要求程序具有良好的结构和风格。 结构化程序设计原则 尽量使用语言提供的基本控制结构,即顺序结构、选择结构和重复结构。 利用块机制将程序组织成容易识别的块,每块只有一个入口和一个出口。 复杂结构应该用基本控制结构组合或嵌套实现。 对于语言中没有的控制结构,可用一段等价的程序段模拟,但要求该程序段在整个系统中应前后一致 严格控制GOTO语句。 自顶向下、逐步细化 在详细设计和编码阶段,还应当采取自顶向下、逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,进而翻译成一系列用某种程序设计语言写成的程序。 [例] 用筛选法求100以内的素数。具体做法就是从2到100中去掉 2,3,…,9,10的倍数,剩下的就是100以内的素数。 为了解决这个问题,可先按程序功能写出一个框架。 main( ) { 建立2到100的数组A[ ],其中A[i]= i; ------1 建立2到10的素数表B[ ],存放2到10以内素数; ------2 若A[i] = i是B[ ]中任意一个数的倍数,则剔除A[i]; ------3 输出A[ ]中所有没有被剔除的数; ------4 } 程序设计风格 1)基本要求 2)可读性要求 3)正确性与容错性要求 4)可移植性要求 5)输入和输出要求 6)重用性要求 7)面向对象的程序设计风格 1)基本要求 程序结构清晰且简单易懂,单个函数的行数一般不要超过 100行。 算法设计应该简单,代码要精简,避免出现垃圾程序。 尽量使用标准库函数(类方法)和公共函数(类方法)。 最好使用括号以避免二义性。 2)可读性要求?注释 程序头,函数头说明:程序标题,该模块功能说明,主要算法说明;接口说明:调用形式,参数描述;子程序清单,有关数据的说明;模块位置:在哪个源文件中,隶属于哪一个软件包;开发历史:包括模块设计者,复审者,复审日期,修改日期及有关说明等 主要变量(结构、联合、类或对象):含义的注释。 处理过程的每个阶段和典型算法前都有相关注释说明,但是不要对每条语句注释。 应保持注释与代码完全一致。 2)可读性要求?格式 程序格式清晰:一行只写一条语句,一个程序如果写得密密麻麻、分不出层次,是很难看懂的。利用空格、空行和缩进显示程序的逻辑结构,缩进量统一为4个字节。 (A-17)AND NOT(B=49)OR C 写成 (A -17) AND NOT (B = 49) OR C 对于嵌套的循环和分支程序,层次不要超过五层。 2)可读性要求?程序本身 语句力求简单、清晰,不要片面追求效率,程序编写得过于紧凑,使语句复杂化。如: for (i=1; i=n; i++) for (j=1; j=n; j++) V[i][j] = (i/j) * (j/i) V是一个N×N单位矩阵,当I≠J时,V(I,J)=0;当I=J时,V(I,J)=1。这个程序构思巧妙,但不易理解。如果改成下面的形式,更容易了解程序的意图 for (i=1; i=n; i++)
文档评论(0)