计算机导论 课件 第13章 计算机编程_第1页
计算机导论 课件 第13章 计算机编程_第2页
计算机导论 课件 第13章 计算机编程_第3页
计算机导论 课件 第13章 计算机编程_第4页
计算机导论 课件 第13章 计算机编程_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第13章计算机编程主要内容编程基础知识过程化编程面向对象编程面向方面编程可适应和敏捷软件开发编程与编程语言计算机编程包括程序的设计、编码、测试和程序文档编写。编程语言是一套关键字和语法规则,旨在生成计算机可以理解和执行的指令。如数据库的SQL就是编程语言的一种,其他比较流行的编程语言如Java、C++、Python、C#等。在编程语言编写的程序中,每行代码都由关键字和参数按照语法规则组合在一起。关键字是由对应编程语言的编译器或解释器预先定义的,每个关键字都有其特殊的含义。编程语言2017年年年度编程语言排行榜(数据来源:IEEESpectrum)编程语言俗称计算机语言,是一套关键字和语法规则,旨在生成计算机可以理解和执行的指令。编程语言的分类编程语言可以按照多种方式进行分类:1.低级语言和高级语言低级语言直接为最底层硬件编写指令,可分为机器语言和汇编语言。机器语言完全由0、1二进制字符串组成,可直接交由处理器处理;汇编语言稍微简便一些——它可以使用处理器提供的特有指令(如移位操作、简单的加减法)。高级语言使用了符合人类语言的语法和关键字,通过使用容易理解的命令来代替难以理解的二进制代码或汇编代码——这一工作交由编译器或解释器进行。编程语言的分类2.代次(标准并不唯一)第一代编程语言(1GL,1stGenerationLanguage),即机器语言。第二代编程语言(2GL),即汇编语言。第三代编程语言(3GL),高级程序设计语言,如Fortran、Pascal、C、C++、Java。第四代编程语言(4GL),更接近人类语言的高级程序设计语言,如SQL。第五代编程语言(5GL)目前有两种定义,一种是可视化编程语言,即利用可视化或图形化接口编程;另一种是自然语言,即最接近日常生活用语的编程语言,LISP和Prolog正在向这方面靠近。编程语言的分类3.编程范例(编程语言是如何将任务概念化和结构化的)过程化编程。强调时间上的线性,按照程序执行过程按部就班地编写代码。面向对象编程(ObjectOrientedProgramming,简称OOP)。针对程序处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰、高效的逻辑单元划分,程序由一系列的对象和方法构成。说明性编程。专注于如何使用事实和规则,用人类易于理解的方式描述问题。事件驱动编程。用户的某种行为会触发相应的事件处理方法面向方面编程(AspectOrientedProgramming,简称AOP)。针对程序处理过程中的切面进行提取。程序设计大多数需要通过计算机程序求解的问题都是模糊的,即用户一般只提出需求,而不关心如何达成需求。因此在程序编码前,软件工程师或计算机程序员需要先将需求抽象成可以用编程语言编写的逻辑构造——这就是程序设计。在程序设计阶段,首先需要定义问题陈述,即明确问题的范围、清楚指定已知信息,并指定问题什么时候算是已经解决。明确问题的范围可以减少程序需要考虑的情况数。已知信息在程序中通常用变量或常量表示。大多数问题解决的标志是程序输出一个结果。程序设计在问题陈述定义好后,还需要选择一种软件开发方法,目前常用的软件开发方法有预测方法和敏捷方法。预测方法在设计阶段需要完成类似于信息系统分析与设计中的软件设计说明书,说明书中会指定人软件每个模块的逻辑流程额,编程人员按照说明书中的流程即可按部就班地编写程序。敏捷方法专注于灵活开发的过程,它的软件设计说明书是随着项目开发进度不断发展的。程序编码编程人员在编码时需要借助一些“载体”,如:文本编辑器。如Windows的“记事本”。程序编辑器。可以理解为是专门用来进行代码编写的文本编辑器,它们提供了辅助编程的工具,如将关键字用彩色显示、自动补全、查找替换、格式化代码等。可视化开发环境(VisualDevelopmentEnvironment,简称VDE)。提供了可视化编程的工具,编程人员可以在其中拖动代表对象的控件并设置其属性。程序编码可视化开发环境程序测试和文档当代码编写完毕后,编程人员需要进行测试以确保程序没有bug(即错误)。bug大体可分为以下几类:语法错误,即由于编码时的手误,或对于编程语言的不够熟悉,而导致程序无法通过编译。运行时错误,即程序在运行时突然出现的停止工作现象。逻辑错误,即程序可以正常运行,但输出的结果却是错的。当发现bug时,编程人员可以使用调试器来逐行检查程序。通过调试器可以检查程序执行到特定步骤时的变量值。编程工具文本编辑器、程序编辑器都属于编程工具,但在一般情况下,编程人员不会只使用它们进行编程工作,而是趋向于使用包含了大量编程工具的SDK或IDE。SDK(SoftwareDevelopmentKit,软件开发工具包)是指某种语言特有的工具集。SDK通常包含编译器、语言文档和安装说明,一些SDK还会包含编辑器、调试器、图形化用户界面设计和API(应用程序编程接口)。IDE(IntegratedDevelopmentEnvironment,集成开发环境)可以理解为是SDK的一种,它将多种开发工具整合到了一个统一的应用程序中(如Eclipse、MicrosoftVisualStudio),使它们拥有统一的菜单和控件集。编译器和解释器解释器在程序运行时,一次只会转换并执行一条语句。在一条语句被执行后,解释器才会转换到下一条语句,如此循环直到程序结束。这种方式效率较低,应用程序不能离开其解释器,但比较灵活,可以动态地调整、修改应用程序。使用编译器生成的目标程序可以脱离其语言环境独立运行,使用比较方便、效率较高。但如果需要修改应用程序,则需要先修改其源代码,再重新编译。APIAPI是指ApplicationProgramInterface(应用程序接口)或者ApplicationProgrammingInterface(应用编程程序接口)的缩写。API是程序员在自己编写的程序中可以访问的一组应用程序或操作系统的功能。过程化编程过程化编程编写的程序都有一个起始点和终结点,从开始到结束的流程基本上是线性的、按部就班的。过程化编程非常适合于编写不太复杂的算法——算法是指能够写下来并能够实现的用以达成需求的有限长步骤列表。如果输入是正确的,设计的算法是正确的,那么输出的结果就是正确的。表达算法算法并不依赖于任何编程语言,因此表达算法也不太适合用某种编程语言进行——不熟悉这种编程语言的人就很难理解算法了。表达算法可以用一种通用的格式进行,如伪代码。伪代码是一种类似自然语言的算法描述语言,它并没有统一的格式要求,只要能够清晰地表述出算法流程即可。伪代码结构清晰、代码简单、可读性好——使用伪代码的目的就是使被描述的算法可以容易地以任何一种编程语言实现。用伪代码表达冒泡排序算法顺序、选择和循环控制在通常情况下,程序是按从上到下的顺序按部就班地执行命令的,但也可以应用一些控制结构以改变程序对命令的执行顺序:顺序控制结构。可以通过调用函数将程序执行转移至函数体,函数执行完后再返回到主要的顺序执行路径。选择控制结构。可以使用if…else…或switch结构在程序执行时进行动态的分支判断。循环控制结构。可以使用do…while、while…、for…等多种命令控制循环。一个算法通常是由许多的顺序、选择与循环控制结构组成的,合理使用控制结构可以完美、高效地实现算法逻辑。顺序、选择和循环控制选择控制结构的流程图循环控制结构的流程图过程化语言及应用最初的编程语言都是过程化语言,常见的过程化语言如Fortran、Pascal、C等。 过程化编程最适合于可以通过按部就班的步骤来解决的问题——这正符合过程化编程的逻辑。过程化编程可以开发出运行速度快、系统资源利用效率高的程序;且过程化编程的灵活性很高,可以同时处理一类的问题,而只做少许修改甚至无需修改。过程化编程的缺点在于它并不适于非结构化问题或非常复杂的算法。面向对象编程面向对象编程将问题的解决方案抽象成一些对象的交互。在面向对象编程中常使用类和对象的概念:对象是一个抽象的或现实世界中的实体,是类的具体实例;而类则是具有相似特征的一组对象的抽象。例如,某个具体学生“张三”是学生类的一个实例,“张三”在这里就是一个对象。对象和类使用UML绘制的类图使用UML绘制的对象图封装可以对类属性设置作用域,如公有或私有等,公有属性可以被任何类访问,而私有属性只能被定义该属性的类访问。这种通过设置作用域而隐藏一部分类的细节的方式称为封装,封装是面向对象的特征之一。继承面向对象的另一特征是继承。继承是指将某些特征从一个类传递到其他类,其中被继承属性的类被称为超类,继承属性的类被称为子类。继承赋予了类很大的灵活性——如果多个类具有一些同样的属性,则可以把这些属性抽象为一个超类。继承继承示例方法、消息和多态面向对象编程中的方法和消息与过程化编程顺序控制结构中的函数类似。简单来说,方法就相当于函数,而消息相当于函数调用语句,用以激活方法。方法不仅支持继承——子类可以拥有超类的公有方法,还支持多态。多态是面向对象的第三个特征,它指的是在子类中重新定义方法的能力——即在子类中可以重写继承自超类的方法。方法、消息和多态多态示例类中的方法示例面向对象的程序结构在面向对象程序中,类只是一个模板,不代表任何实例。要使用类,需要通过主方法来创建类的对象,并进行对象间的操作。面向对象程序执行时,会寻找名为main()的主方法,并按部就班地执行其中的命令。面向对象的语言及应用面向对象的编程语言大多数也支持过程化的技术,因此这些语言也称混合语言,如C++、C#(读作CSharp)、Objective-C、Java等。面向对象编程适合于大规模软件的制作——如果使用过程化编程,这些软件的逻辑会变得非常复杂,甚至使得编程工作寸步难行;而面向对象编程则可以有效地梳理软件逻辑。面向对象编程与人感知世界的方式很相似,因此使用面向对象编程有助于设想问题的解决方案。面向对象的缺陷在于程序运行效率较低——由于有继承和多态的特性,一些调用需要在运行时才能判断。面向方面编程简介面向方面编程(AspectOrientedProgramming,简称AOP)是一种在总体软件程序设计基础上,继续把其分化为更小更可操控的部分,以最大限度地减少程序设计中功能上的重复性的程序设计方法。在过程化编程或面向对象编程中,一些模块(如安全检查、异常处理或打开一个数据库连接)会穿插分散于程序代码的成百上千个位置,在需要时难以修改。面向方面编程则不同,它能把这些功能模块封装在“方面”中,需要时不用重复代码而只使用“方面”即可——这能有效减少程序的冗余,提高软件的质量,并降低IT开发和维护的费用。可适应和敏捷软件开发简介可适应软件开发是指在程序开发过程中旨在使开发更快、更有效,并集中于适应程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论