第12讲程序设计语言和编码.ppt

上传人:s****8 文档编号:67141407 上传时间:2022-12-23 格式:PPT 页数:55 大小:1.46MB
返回 下载 相关 举报
第12讲程序设计语言和编码.ppt_第1页
第1页 / 共55页
第12讲程序设计语言和编码.ppt_第2页
第2页 / 共55页
点击查看更多>>
资源描述

《第12讲程序设计语言和编码.ppt》由会员分享,可在线阅读,更多相关《第12讲程序设计语言和编码.ppt(55页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、软件工程软件工程第12讲 程序设计语言和编码潘俊 Phone:13605770868办公室:北7-1202-C上讲回顾上讲回顾n引言:引言:Windows界面的演变界面的演变n人的因素人的因素n人机界面风格人机界面风格n人机界面设计过程人机界面设计过程n人机界面设计的原则人机界面设计的原则n人机界面设计工具人机界面设计工具本讲内容本讲内容n引言:编程的境界引言:编程的境界n程序设计语言程序设计语言n编程风格编程风格n高质量程序设计高质量程序设计编程的境界编程的境界学编程学编程 学写作学写作学会写程序学会写程序 学字,词,文法,句法学字,词,文法,句法学会高效地写程序学会高效地写程序 快速地写文

2、章快速地写文章 学会写高效的程序学会写高效的程序 写简洁明快的好文章写简洁明快的好文章学会设计程序学会设计程序 选择结构,流程,方法选择结构,流程,方法学会设计有用的程序学会设计有用的程序 写人们喜欢看的文章写人们喜欢看的文章 编程的境界编程的境界Thus speak the master programmer:After three days without programming,life becomes meaningless.师曰:师曰:三日不编程,食肉无味。三日不编程,食肉无味。编程的境界编程的境界n编码阶段的任务是根据详细设计说明书编写程序编码阶段的任务是根据详细设计说明书编写程序

3、n程序设计语言的特性和程序设计风格会深刻地影响软件的质程序设计语言的特性和程序设计风格会深刻地影响软件的质量和可维护性量和可维护性n为了保证程序编码的质量,程序员必须深刻理解、熟练掌握为了保证程序编码的质量,程序员必须深刻理解、熟练掌握并正确地运用程序设计语言的特性并正确地运用程序设计语言的特性n此外,还要求源程序具有良好的结构性和良好的程序设计风此外,还要求源程序具有良好的结构性和良好的程序设计风格格本讲内容本讲内容n引言:编程的境界引言:编程的境界n程序设计语言程序设计语言n编程风格编程风格n程序设计支持环境程序设计支持环境程序设计语言的特性程序设计语言的特性n心理特性心理特性l从设计到编

4、码的转换基本上是人的活动,因此,语言的性能对程序员的心理影响将对转换产生重大影响l在维持现有机器的效率、容量和其它硬件限制条件的前提下,程序员总希望选择简单易学、使用方便的语言,以减少程序出错率,提高软件可靠性,从而提高用户对软件质量的可信度nThus speak the master programmer:A well-written program is its own heaven;a poorly-written program is its own hell.师曰:师曰:善程序者自善其身,不善程序者自毁其意。善程序者自善其身,不善程序者自毁其意。程序设计语言的特性程序设计语言的特性n

5、 影响程序员心理的语言特性有:影响程序员心理的语言特性有:l一致性:指语言采用的标记法(使用的符号)协调一致的程度。如,一符多用的标记法容易导致错误。l二义性:对语句不同理解所产生的二义性将导致程序员对程序理解的混乱。如,if then if then else x:=a*b*c程序设计语言的特性程序设计语言的特性l紧致性(compactness):指程序员必须记忆的与编码有关的信息总量。刻画紧致性的指标有:对结构化部件的支持程度,可用关键字和缩写的种类,算术及逻辑操作符的数目,预定义函数的个数等。l局部性:程序由模块组成,应采用高内聚低耦合高内聚低耦合、模块独立、局部化等原则。l线性:人们习

6、惯于按逻辑上线性的次序理解程序,程序中大量的分支和循环、随意的GOTO语句会破坏程序的线性,提倡结构化程序设计。程序设计语言的特性程序设计语言的特性n工程特性工程特性l程序设计语言的特性影响人们思考程序的方式,从而也限制了人们与计算机进行通信的方式。为满足软件工程的需要,程序设计语言还应该考虑:将设计翻译成代码的便利程度、编译器的效率、源代码的可移植性、配套的开发工具、软件的可复用性和可维护性。程序设计语言的特性程序设计语言的特性l将设计翻译成代码的便利程度:语言若直接支持结构化部件、复杂的数据结构、特殊I/O处理、按位操作和OO方法,则便于将设计转换成代码。l编译器的效率:编译器应生成效率高

7、的代码l源代码的可移植性:语言的标准化有助于提高程序代码的可移植性,源程序中应尽量不用标准文本以外的语句。程序设计语言的特性程序设计语言的特性l配套的开发工具:CASE工具可减少编码时间,提高代码质量。尽可能使用工具和程序设计支撑环境。l可复用性:指编程语言能否提供可复用的软件成分,复用时需要修改调整的内容多少 l可维护性:包括可理解性、可测试性、可修改性。源程序的可读性和文档化特性是影响可维护性的重要因素。程序设计语言的特性程序设计语言的特性n应用特性应用特性l不同的程序设计语言满足不同的技术特性,可以对应于不同的应用。例如Prolog语言适用于人工智能领域、SQL语言适用于关系数据库。语言

8、的技术特性对软件工程各阶段有一定的影响,特别是确定了软件需求之后,程序设计语言的特性就很重要了,要根据不同项目的特性选择相应特性的语言。程序设计语言的基本机制程序设计语言的基本机制n程序设计语言基本成份可归纳为四种:数据成分、运算成分、程序设计语言基本成份可归纳为四种:数据成分、运算成分、控制成分、传输成分控制成分、传输成分 l数据成分:它指明该语言能接受的数据,用来描述程序中的数据。如各种类型的变量、数组、指针、记录等。作为程序操作的对象,具有名称、类型和作用域等特征。使用前要对数据的这些特征加以说明。数据名称由用户通过标识符命名,类型说明数据需占用存储单元的多少和存放形式,作用域说明数据可

9、以使用的范围。程序设计语言的基本机制程序设计语言的基本机制n以以 C语言为例,其数据构造方式可分为基本类型和派生类型语言为例,其数据构造方式可分为基本类型和派生类型 程序设计语言的基本机制程序设计语言的基本机制n运算成分:它指明该语言允许执行的运算,用来描述程序中运算成分:它指明该语言允许执行的运算,用来描述程序中所需进行的运算。如所需进行的运算。如+、-、*、/等。等。n控制成分:它指明该语言允许的控制结构,人们可利用这些控制成分:它指明该语言允许的控制结构,人们可利用这些控制成分来构造程序中的控制逻辑。基本的控制成分包括:控制成分来构造程序中的控制逻辑。基本的控制成分包括:顺序结构、条件选

10、择结构和重复结构顺序结构、条件选择结构和重复结构。如下页图。如下页图程序设计语言的基本机制程序设计语言的基本机制基本程序控制基本程序控制结构构程序设计语言的基本机制程序设计语言的基本机制n传输成分:它指明该语言允许的数据传输方式,在程序中可传输成分:它指明该语言允许的数据传输方式,在程序中可用它进行数据传输。用它进行数据传输。n例如:例如:Turbo C语言标准库提供了两个控制台格式化输入、输语言标准库提供了两个控制台格式化输入、输出函数出函数printf()和和scanf(),这两个函数可以在标准输入输出,这两个函数可以在标准输入输出设备上以各种不同的格式读写数据。设备上以各种不同的格式读写

11、数据。Printf()函数用来向标函数用来向标准输出设备准输出设备(屏幕屏幕)写数据写数据,scanf()函数用来从标准输入设函数用来从标准输入设备备(键盘键盘)上读数据。上读数据。程序设计语言的基本机制程序设计语言的基本机制nA program should be light and agile,its subroutines connected like a strings of pearls.The spirit and intent of the program should be retained throughout.There should be neither too litt

12、le nor too much,neither needless loops nor useless variables,neither lack of structure nor overwhelming rigidity.n程序者,轻盈捷巧,子程序者,累若串珠,贯之程序者,轻盈捷巧,子程序者,累若串珠,贯之以精神。减一丝则少,增一分则多,循环、变量、以精神。减一丝则少,增一分则多,循环、变量、结构皆为其恰。结构皆为其恰。程序设计语言的演变和分类程序设计语言的演变和分类n按语言级别:低级语言和高级语言;按语言级别:低级语言和高级语言;n按应用范围:通用语言和专用语言;按应用范围:通用语言和专

13、用语言;n按用户要求:过程式语言和非过程式语言;按用户要求:过程式语言和非过程式语言;n按语言所含的成分:顺序语言、并发语言和分布式语言按语言所含的成分:顺序语言、并发语言和分布式语言 程序设计语言的发展史程序设计语言的发展史l第一代语言:机器语言和汇编语言l第二代语言:早期的高级语言,如BASIC,FORTRAN,COBOL等l第三代语言:具有很强的数据结构和过程描述能力,支持结构化编程,如Pascal,Modula,C,Ada等l第四代语言(4GL):这类语言出现于七十年代,其目的是为了提高程序开发速度,以及让非专业用户能直接编制计算机程序第四代语言的特点第四代语言的特点l对用户友善,一般

14、用类自然语言、图形或表格等描述方式,普通用户很容易掌握l多数与数据库系统相结合,可直接对数据库进行操作l对许多应用功能均有默认的假设,用户不必详细说明每一件事情的做法l程序码长度及获得结果的时间与使用COBOL语言相比约少一个数量级l支持结构化编程,易于理解和维护第四代语言的特点第四代语言的特点l目前,第四代语言的种类繁多,尚无标准,在语法和能力上有很大差异,其中一些支持非过程式编程,更多的是既含有非过程语句,也含有过程语句。l典型的4GL有:数据库查询语言、报表生成程序、应用生成程序、电子表格、图形语言等。l 多数4GL是面向领域的,很少是通用的。自然语言自然语言n最理想的是可以使用自然语言

15、(如英语、法语或汉语),使最理想的是可以使用自然语言(如英语、法语或汉语),使计算机能理解并立即执行请求。但迄今为止,自然语言理解计算机能理解并立即执行请求。但迄今为止,自然语言理解仍然是计算机科学研究中的一个难点,尽管在实验室的研究仍然是计算机科学研究中的一个难点,尽管在实验室的研究中取得了一定的成果,但在现实中的应用仍然是相当有限的。中取得了一定的成果,但在现实中的应用仍然是相当有限的。Java阵营阵营与与Microsoft的的较较量量编程之道编程之道 The Tao gave birth to machine language.Machine language gave birth to

16、 the assembler.The assembler gave birth to the compiler.Now there are ten thousand languages.Each language has its purpose,however humble.Each language expresses the Yin and Yang of software.Each language has its place within the Tao.道生机语,机语生汇编,汇编生道生机语,机语生汇编,汇编生compilercompiler,compilercompiler生程序。生

17、程序。程序负阴而抱阳,冲气以为和,各得其道。程序负阴而抱阳,冲气以为和,各得其道。程序设计语言的选择程序设计语言的选择n为一个特定的开发项目选择编程语言时,通常要考虑如下因为一个特定的开发项目选择编程语言时,通常要考虑如下因素:素:l应用领域l算法和计算复杂性l软件运行环境l用户需求,特别是性能需求l数据结构的复杂性l软件开发人员的知识水平l可用的编译器与交叉编译器程序设计语言的选择程序设计语言的选择n项目所属的应用领域常常是首要的标准项目所属的应用领域常常是首要的标准lCOBOL适用于商业领域lFORTRAN适用于工程和科学计算领域lProlog、Lisp适用于人工智能领域lSmalltal

18、k、C+适用于OO系统的开发l有些语言适用于多个应用领域,如Cn若有多种语言都适合于某项目的开发时,也可考虑选择开发若有多种语言都适合于某项目的开发时,也可考虑选择开发人员比较熟悉的语言人员比较熟悉的语言程序设计语言的选择程序设计语言的选择n选择高级语言还是低级语言选择高级语言还是低级语言l优先选择高级语言开发和维护高级语言程序比开发和维护低级语言程序容易得多l必要时使用低级语言高级语言程序经编译后所产生的目标程序的功效要比完成相同功能的低级语言程序低得多,所以在有些情况下会部分或全部使用低级语言程序设计语言的选择程序设计语言的选择n使用低级语言的情况:使用低级语言的情况:l对运行时间和存储空

19、间有过高要求的项目,如电子笔记本中的软件l在某些不能提供高级语言编译程序的计算机上开发程序,如单片机上的软件l大型系统中对系统执行时间起关键作用的模块本讲内容本讲内容n引言:编程的境界引言:编程的境界n程序设计语言程序设计语言n编程风格编程风格n高质量程序设计高质量程序设计程序设计风格程序设计风格n编程的依据是详细设计的结果,因此程序的质量主要取决于编程的依据是详细设计的结果,因此程序的质量主要取决于设计,但编程的质量也在很大程度上影响着程序的质量设计,但编程的质量也在很大程度上影响着程序的质量n编程风格主要包括:编程风格主要包括:l源程序中的内部文档l数据说明l语句构造l输入输出源程序文档化

20、源程序文档化 n在源程序中可包含一些内部文档,以帮助阅读和理解源程序在源程序中可包含一些内部文档,以帮助阅读和理解源程序n在源程序中的内部文档主要包括:在源程序中的内部文档主要包括:l标识符的命名l注解l程序的视觉组织标识符的命名标识符的命名n选择含义明确的名字,使其能正确提示标识符所代表的实体选择含义明确的名字,使其能正确提示标识符所代表的实体l例如,表示总量的变量名用Total,表示平均值的用Average等n名字不要太长,太长会增加打字量,且易出错。必要时可使名字不要太长,太长会增加打字量,且易出错。必要时可使用缩写用缩写n不用相似的名字,相似的名字容易混淆,不易发现错误不用相似的名字,

21、相似的名字容易混淆,不易发现错误l如cm,cn,cmn,cnm,cnn,cmm标识符的命名标识符的命名n不用关键字作标识符不用关键字作标识符n同一个名字不要有多个含义同一个名字不要有多个含义n名字中避免使用易混淆的字符。如数字名字中避免使用易混淆的字符。如数字0与字母与字母O;l数字1与字母I或l;l数字2与字母z等程序的注释程序的注释n程序中的注解用来帮助人们理解程序,决不是可有可无的程序中的注解用来帮助人们理解程序,决不是可有可无的n一些正规的程序文本中,注解行的数量约占整个源程序的一些正规的程序文本中,注解行的数量约占整个源程序的13到到12,甚至更多,甚至更多n注解分为序言性注解和功能

22、性注解注解分为序言性注解和功能性注解序言性注释序言性注释n通常置于每个程序模块的开头部分,主要描述:通常置于每个程序模块的开头部分,主要描述:l模块的功能l模块的接口:包括调用格式、参数的解释、该模块需要调用的其它子模块名l重要的局部变量:包括用途、约束和限制条件l开发历史:包括模块的设计者、评审者、评审日期、修改日期以及对修改的描述功能性注释功能性注释n通常嵌在源程序体内,主要描述程序段的功能。通常嵌在源程序体内,主要描述程序段的功能。n书写功能性注解时应注意的问题:书写功能性注解时应注意的问题:l注解要正确,错误的注解比没有注解更坏;l为程序段作注解,而不是为每一个语句作注解;l用缩进和空

23、行,使程序与注释容易区分;l注解应提供一些从程序本身难以得到的信息,而不是语句的重复。视觉组织视觉组织n通过在程序中添加一些空格、空行和缩进等技巧,帮助人们通过在程序中添加一些空格、空行和缩进等技巧,帮助人们从视觉上看清程序的结构从视觉上看清程序的结构n例如,通过缩进技巧可清晰地观察到程序的嵌套层次,同时例如,通过缩进技巧可清晰地观察到程序的嵌套层次,同时还容易发现诸如还容易发现诸如“遗漏遗漏end”那样的错误那样的错误本讲内容本讲内容n引言:编程的境界引言:编程的境界n程序设计语言程序设计语言n编程风格编程风格n高质量程序设计高质量程序设计文件结构文件结构n版权和版本的声明版权和版本的声明/

24、*Copyright(c)2001,ABC 公司*All rights reserved.*文件名称:filename.h*文件标识:*摘 要:简要描述本文件的内容*当前版本:1.1*作 者:输入作者(或修改者)名字*完成日期:*取代版本:1.0*原作者 :输入原作者(或修改者)名字*完成日期:*/文件结构文件结构n头文件的结构头文件的结构/版权和版本声明此处省略。#ifndefGRAPHICS_H /防止graphics.h被重复引用#defineGRAPHICS_H#include /引用标准库的头文件#include“myheader.h”/引用非标准库的头文件void Function

25、1();/全局函数声明class Box /类结构声明;#endif文件结构文件结构n定义文件的结构定义文件的结构/版权和版本声明,此处省略。#include“graphics.h”/引用头文件/全局函数的实现体void Function1()/类成员函数的实现体void Box:Draw()程序的版式程序的版式n空行起着分隔程序段落的作用空行起着分隔程序段落的作用/空行void Function1()/空行void Function2()/空行void Function3()/空行while(condition)statement1;/空行if(condition)statement2;el

26、se statement3;/空行statement4;程序的版式程序的版式n代码行:一行代码只做一件事情代码行:一行代码只做一件事情int width;/宽度int height;/高度int depth;/深度int width,height,depth;/宽度高度深度x=a+b;y=c+d;z=e+f;x a+b;y=c+d;z=e+f;if(width height)dosomething();if(width=very_longer_variable12)&(very_longer_variable3=very_longer_variable14)&(very_longer_vari

27、able5=very_longer_variable16)dosomething();virtual CMatrix CMultiplyMatrix(CMatrix leftMatrix,CMatrix rightMatrix);for(very_longer_initialization;very_longer_condition;very_longer_update)dosomething();表达式和基本语句表达式和基本语句n循环语句的效率循环语句的效率for(row=0;row100;row+)for(col=0;col5;col+)sum=sum+arowcol;for(col=0;

28、col5;col+)for(row=0;row100;row+)sum=sum+arowcol;表达式和基本语句表达式和基本语句n循环语句的效率:长循环放在内层,短循环放在外层循环语句的效率:长循环放在内层,短循环放在外层for(row=0;row100;row+)for(col=0;col5;col+)sum=sum+arowcol;for(col=0;col5;col+)for(row=0;row100;row+)sum=sum+arowcol;表达式和基本语句表达式和基本语句n循环语句的效率循环语句的效率for(i=0;iN;i+)if(condition)DoSomething();else DoOtherthing();if(condition)for(i=0;iN;i+)DoSomething();else for(i=0;iN;i+)DoOtherthing();作业作业n预习第预习第14章章nP205 8.2nTopicl任选以前的的一个Topic(课件在邮箱里)l自拟一个和软件工程相关的Topic Q&AQ&APractice,Practice,and Practice

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

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁