《汇编语言第2章程序设计基础.ppt》由会员分享,可在线阅读,更多相关《汇编语言第2章程序设计基础.ppt(30页珍藏版)》请在三一办公上搜索。
1、第2章 程序设计基础,语言是人们交流思想、传达信息的工具。人类在长期的历史发展过程中,为了交流思想、表达感情和交换信息,逐步形成了语言。这类语言,如汉语和英语,通常称为自然语言。另一方面,人们为了某种专门用途,创造出种种不同的语言,例如旗语和哑语,这类语言通常称为人工语言。专门用于人与计算机之间交流信息的各种人工语言称为计算机语言或程序设计语言。,2.1 程序设计语言,根据程序设计语言发展的历程,可将其大致分为机器语言、汇编语言、高级语言以及4GL语言四类。,2.1.1 机器语言,机器语言是用二进制代码表示的计算机能直接识别和执行的机器指令的集合,即处理器的指令系统。不同类型处理器的计算机,其
2、机器语言是不同的,按照一种计算机的机器指令编制的程序,不能在指令系统不同的计算机上执行。机器语言的优点是能够被计算机直接识别、执行速度快、占用内存空间少。其缺点是难记忆、难书写、难编程、易出错、可读性差、可移植性差。,2.1.2 汇编语言,为了克服机器语言的缺点,人们采用与代码指令实际含义相近的英文缩写词、字母和数字等符号来取代指令代码,产生了汇编语言(也称为符号语言)。汇编语言是由一条条助记符所组成的指令系统。使用汇编语言编写的程序(汇编语言源程序),计算机不能直接识别,需要由一种起翻译作用的程序(汇编程序),将其翻译成机器语言程序(目标程序),计算机方可执行,这一翻译过程称之为“汇编”。,
3、2.1.3 高级程序设计语言,计算机技术的发展,促使人们去寻求一些与人类自然语言相接近且能为计算机所接受的语意确定、规则明确、自然直观和通用易学的计算机语言。这种与自然语言相近并为计算机所接受和执行的语言称为高级语言。用高级语言编写程序时,程序员可以不必了解计算机的内部逻辑,而主要考虑问题的解决方法。高级语言的源程序需要翻译成机器语言程序才能执行,翻译方式有两种,编译方式和解释方式。编译方式是由编译程序把高级语言源程序“翻译”成目标程序;解释方式是由解释程序把高级语言的源程序逐条“翻译”执行,不生成目标程序。,传统的高级程序设计语言,1954年,约翰巴克斯发明了FORTRAN语言。FORTRA
4、N是最早出现的高级程序设计语言,主要应用在科学、工程计算领域。1958年,在FORTRAN基础上改进的ALGOL语言诞生了,与FORTRAN相比,ALGOL的优点引入了局部变量和递归过程概念,提供了较为丰富的控制结构和数据类型,对后来的高级语言产生了深刻的影响。1960年出现的COBOL是商用数据处理应用中广泛使用的标准语言。COBOL通用性强,容易移植,并提供了与事务处理有关的大范围的过程化技术。COBOL是世界上最早实现标准化的语言,它的出现、应用与发展,改变了人们“计算机只能用于数值计算”的观点。1964年,汤姆库斯和约翰凯孟尼创建了一种新的计算机高级语言,这种语言语句简洁、语法简单,风
5、格轻松活泼,又简便易学,被称为“初学者通用符号指令代码”,这就是著名的Basic语言。该语言在微型计算机上得到广泛应用。目前Basic语言有多种版本,如Borland公司的Turbo Basic、Microsoft公司的Visual Basic等。Microsoft Visual Basic是目前使用最广泛的Basic语言开发工具,它提供了一个可视的开发环境,具有图形设计工具、面向对象的结构化的事件驱动编程模式、开放的环境,使用户可以既快又简便的编制出Windows的各种应用程序。,通用的结构化程序设计语言,结构化程序设计语言的特点是具有很强的过程功能和数据结构功能,并提供结构化的逻辑构造。这
6、一类语言的代表有Pascal、C和Ada等,它们都是从ALGOL语言派生出来的。20世纪60年代末研制的Pascal语言体现了结构化程序设计的思想,以系统、精确、合理的方式表达了程序设计的基本概念,特别适合用来进行程序设计原理和高级语言的教学。Borland公司的Turbo Pascal是使用比较广泛的版本。1972年,美国贝尔实验室的Dennis Ritchie发明了C语言,它既有高级语言的特点,又可以实现汇编语言的许多功能,因此它适用于编写系统软件和应用软件。C语言主要特点是具有丰富的数据结构;基本程序结构是函数调用,支持用户自定义函数以扩充语言的功能;与汇编语言接口好;具有丰富的函数库;
7、具有比较强的图形处理能力。Borland公司的Turbo C是早期使用广泛的C语言开发工具。Ada语言是由美国国防部出资开发的,作为一种用于嵌入式实时计算机设计的标准语言。Ada语言在结构和符号方面类似于Pascal语言。,专用语言,专用语言是为特殊的应用而设计的语言。通常具有自己特殊的语法形式,面对特定的问题,输入结构及词汇与该问题的相应范围密切相关。有代表性的专用语言有APL、Lisp、Prolog、Smalltalk、C+、Java等。APL是一种简单的对数组和向量处理非常有效的语言。它几乎不支持结构化设计和数据类型划分,但它拥有丰富的操作运算符。主要用来解决一些数学计算问题。Lisp是
8、一种人工智能领域专用的语言,它特别适用于组合问题中常见的符号运算和表处理。Prolog是另一种广泛用于专家系统构造的程序设计语言。和Lisp一样,Prolog提供了支持知识表示的特性。这种语言用一种称为term的统一的数据结构来构造所有的数据和程序。每一个程序都由一组代表事实、规划和推理的子句组成。Lisp和Prolog都特别适合于处理对象及其相互关系的问题。Smalltalk是首先真正实现面向对象的程序设计语言之一。它引入了与传统程序设计语言根本不同的控制结构与数据结构。Smalltalk可以定义对象,对象由数据结构和指向一组方法(服务操作)的指针组成。每个对象都是一个类的实例。Smallt
9、alk提供的面向对象的方法可以支持程序部件的“可复用性”,从而使大型软件系统的开发时间和以源程序行数计算的程序量大大减少。,1980年,贝尔实验室的Bjarne Stroustrup发明了的“带类的C”,增加了面向对象程序设计所需要的抽象数据类型“类”,1983年带类的C语言被命名为C+,成为面向对象的程序设计语言。C+有丰富的类库、函数库,可嵌入汇编语言中,使程序优化,但这种语言难于学习掌握,需要有C语言编程的基础经验和较为广泛的知识。目前,C+成为当今最受欢迎的面向对象的程序设计语言,因为它既融合了面向对象的能力,又与C语言兼容,保留了C语言的许多重要特性。C+常见的开发工具有Borlan
10、d C+、Microsoft Visual C+等。Java是一种简单的、面向对象的、分布式的、强大的、安全的、解释的、高效的、结构无关的、易移植的、多线程的、动态的语言。Java设计接近C+语言,但做了许多重大修改。它不再支持运算符重载、多继承及许多自动强制等易混淆和较少使用的特性,增加了内存空间自动垃圾收集的功能。Java是面向对象语言,基本功能类似于C+,但增加了Objective C的扩充,可提供更多的动态解决方法。Java中提供了附加的例程库,通过它们的支持,Java应用程序能够自由地打开和访问网络上的对象,就像在本地文件系统中一样。Java有建立在公共密钥技术上的确认技术,指示器语
11、义的改变将使应用程序不能再去访问以前的数据结构或私有数据,这样大多数病毒也就无法破坏数据。因而,使用Java可以构造出无病毒、安全的系统。它适用于Internet环境并具有较强的交互性和实时性,提供了网络应用的支持和多媒体的存取,推动了Internet和企业网络的Web的进步。SUN公司的J2EE平台的发布,加速推动了Java在各个领域的应用。,2.1.4 4GL语言,4GL语言的出现,将语言的抽象层次又提高到一个新的高度。同其他人工语言一样,也采用不同的文法表示程序结构和数据结构,但它是在更高一级抽象的层次上表示这些结构,它不再需要规定算法的细节。关系数据库的标准语言SQL即属于该类语言。4
12、GL语言兼有过程性和非过程性的两重特性。程序员规定条件和相应的动作,这是过程性的部分,并且指出想要的结果,这是非过程部分。然后由4GL语言系统运用它的专门领域的知识来填充过程细节。,2.1.5 程序设计语言的比较,应用领域。算法和计算复杂性。软件运行环境。用户需求中关于性能方面的需要。数据结构的复杂性。软件开发人员的知识水平和心理因素等。,汇编语言适用于,程序执行占用较短的时间,或者占用较小存储容量的场合。程序与计算机硬件密切相关,程序直接控制硬件的场合。需提高大型软件性能的场合。没有合适的高级语言的场合。,2.2 结构化程序设计,由于软件危机的出现,人们开始研究程序设计方法,其中最受关注的是
13、结构化程序设计方法。20世纪70年代提出了“结构化程序设计(Structured Programming)”的思想和方法,该方法引入了工程思想和结构化思想,使大型软件的开发和编程都得到了极大的改善。,2.2.1 结构化程序设计思想,结构化程序设计方法是程序设计的先进方法和工具。采用结构化程序设计方法编写程序,可使程序结构清晰、易读、易理解、易维护。结构化程序设计具有三种基本结构:顺序结构、选择结构和循环结构。1966年,Boehm和Jacopini证明了任何单入口单出口没有“死循环”的程序都能由顺序、选择和循环三种最基本的控制结构构造出来。,顺序结构顺序结构是最基本、最常用的结构,如图2-1所
14、示。顺序结构就是按照程序语句行的自然顺序依次执行程序。,图2-1 顺序结构,选择结构选择结构又称为分支结构,这种结构可以根据设定的条件,判断应该选择哪一条分支来执行相应的语句序列。如图2-2所示。,图2-2 选择结构,循环结构循环结构是根据给定的条件,判断是否需要重复执行某一程序段。在程序设计语言中,循环结构对应两类循环语句,对先判断后执行循环体的称为当型循环结构,如图2-3所示;对先执行循环体后判断的称为直到型循环结构,如图2-4所示。,图2-3 当型循环结构 图2-4 直到型循环结构,结构化程序设计的基本思想:一是使用三种基本结构;二是采用自顶向下、逐步求精和模块化方法。结构化程序设计强调
15、程序设计风格和程序结构的规范化,其程序结构是按功能划分为若干个基本模块,这些模块形成一个树状结构,各模块之间的关系尽可能简单,且功能相对独立,每个模块内部均是由顺序、选择、循环三种基本结构组成,其模块化实现的具体方法是使用子程序(函数或过程)。结构化程序设计由于采用了模块化与功能分解、自顶向下、分而治之的方法,因而可将一个较为复杂的问题分解为若干个子问题,各个子问题分别由不同的人员解决,从而提高了程序开发速度,并且便于程序的调试,有利于软件的开发和维护。,2.2.2 结构化程序设计方法,结构化程序设计方法的基本原则可以概括为自顶向下、逐步求精、模块化、限制使用goto语句。,自顶向下程序设计时
16、,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。开始时不过多追求众多的细节,先从最上层总体目标开始设计,逐步使问题具体化,层次分明,结构清晰。逐步求精对复杂问题,应设计一些子目标作过渡,逐步细化。针对某个功能的宏观描述,进行不断分解,逐步确立过程细节,直到该功能用程序语言的算法实现为止。模块化将一个复杂问题,分解为若干个简单的问题。每个模块只有一个入口和一个出口,使程序有良好的结构特征,能降低程序的复杂度,增强程序的可读性、可维护性。限制使用goto语句因为使用goto语句会破坏程序的结构化,降低了程序的可读性,因而不提倡使用goto语句。,2.2.3 面向对象程序设计简介,面向对
17、象程序设计,是当前程序设计的主流方向,是程序设计方式在思维上和方法上的一次飞跃。面向对象程序设计方式是一种模仿人们建立现实世界模型的程序设计方式,是对程序设计的一种全新的认识。面向对象程序设计的基本思想,一是从现实世界中客观存在的事物(即对象)出发,尽可能运用人类的自然思维方式去构造软件系统,也就是直接以客观世界的事务为中心来思考问题、认识问题、分析问题和解决问题。二是将事物的本质特征经抽象后表示为软件系统的对象,以此作为系统构造的基本单位。三是使软件系统能直接映射问题,并保持问题中事物及其相互关系的本来面貌。因此,面向对象方法强调按照人类思维方法中的抽象、分类、继承、组合、封装等原则去解决问
18、题。这样,软件开发人员便能更有效地思考问题,更容易与客户沟通。,面向对象的方法,实质上是面向功能的方法在新形势下(由功能重用发展到代码重用)的回归与再现,是在一种高层次上(代码级重用)新的面向功能的方法论,它设计的“基本功能对象(类或构件)”,不仅包括属性(数据),而且包括与属性有关的功能(或方法,如增加、修改、移动、放大、缩小、删除、选择、计算、查找、排序、打开、关闭、存盘、显示和打印等)。它不但将属性与功能融为一个整体,而且对象之间可以继承、派生以及通信。因此,面向对象设计是一种新的、复杂的、动态的、高层次的面向功能设计。它的基本单元是对象,对象封装了与其有关的数据结构及相应层的处理方法,
19、从而实现了由问题空间到解析空间的映射。,2.3 程序设计风格,程序设计是一门技术,需要相应的理论、技术、方法和工具来支持。程序设计方法和技术的发展,主要经过了结构化程序设计和面向对象的程序设计阶段。除了好的程序设计方法和技术之外,程序设计风格也是很重要的。良好的程序设计风格可以使程序结构清晰合理,使程序代码便于测试和维护。程序设计风格是指编写程序时所表现出的特点、习惯和逻辑思路,为了测试和维护程序,往往还要阅读和跟踪程序,因此程序设计的风格总体而言应该强调简单和清晰,著名的“清晰第一,效率第二”的论点已成为当今主导的程序设计风格。,2.3.2 良好的程序设计风格,源程序文档化 源程序文档化主要
20、包括选择标识符的名字、安排注释和程序的视觉组织。符号名的命名。符号名的命名应具有一定的实际含义,以便于对程序功能的理解。程序注释。正确的注释能够帮助读者理解程序。注释分为序言性注释和功能性注释。序言性注释通常位于每个程序的开头部分,它给出程序的整体说明,主要描述内容可以包括:程序标题、程序功能说明、主要算法、接口说明、开发简历等。功能性注释嵌在源程序体之中,主要描述其后的语句或程序做什么。视觉组织。为了使程序的结构一目了然,在程序中利用空格、空行、缩进等技巧可使程序的逻辑结构清晰层次分明。,数据说明 在编写程序时,需要注意数据说明的风格,以便使程序中的数据说明更易于理解和维护。应注意如下几点:
21、数据说明的次序规范化。鉴于理解、阅读和维护的需要,数据说明先后次序固定,可以使数据的属性容易查找,也有利于程序的测试、排错和维护。说明语句中变量安排有序化。当一个说明语句说明多个变量时,变量按照字母顺序排列为好。使用注释,说明复杂数据的结构。,语句的结构 语句构造力求简单直接,不应该为提高效率而使语句复杂化。一般应注意:在一行内只写一条语句,并采用适当的缩进格式,使程序的逻辑和功能变得明确。程序编写应优先考虑清晰性。除非对效率有特殊要求,否则程序编写要做到清晰第一,效率第二。首先要保证程序正确,然后才要求提高速度。数据结构要有利于程序的简化。尽可能使用库函数。避免使用临时变量而使程序的可读性下
22、降。避免使用无条件转移语句。避免采用复杂的条件语句。避免过多的循环嵌套和条件嵌套。要模块化,使模块功能尽量单一。利用信息隐蔽,确保每一个模块的独立性。,输入和输出 输入、输出方式和格式,往往是用户对应用程序是否满意的一个因素,应尽可能方便用户的使用。在设计和编程时都应该考虑如下原则:对所有的输入数据都要检验数据的合法性。检查输入项的各种重要组合的合理性。输入格式要简单,输入的步骤和操作尽可能简捷。输入数据时,应允许使用自由格式。应允许缺省值。输入一批数据时,最好使用输入结束标志。在以交互式输入/输出方式进行输入时,要在屏幕上使用提示符明确提示输入的请求,同时在数据输入过程中和输入结束时,应在屏
23、幕上给出状态信息。当程序设计语言对输入格式有严格要求时,应保持输入格式与输入语句的一致性。给所有的输出加注释,并设计输出报表格式。,2.4 程序设计的基本过程,程序设计就是使用某种程序设计语言编写程序代码来驱动计算机完成特定功能的过程。程序设计的基本过程一般由分析所求解的问题、抽象数学模型、选择合适算法、编写程序、调试通过直至得到正确结果等几个阶段所组成,如图2-5所示。,图2-5 程序设计的基本步骤,设计步骤如下:,确定要解决的问题,对任务进行调查分析,明确要实现的功能。对要解决的问题进行分析,找出它们的运算和变化规律,建立数学模型;当一个问题有多个解决方案时,选择适合计算机解决问题的最佳方案。依据解决问题的方案确定数据结构和算法,绘制流程图。依据流程图描述的算法,选择一种用合适的计算机语言编写程序。通过反复执行所编写的程序,找出程序中的错误,直到程序的执行效果达到预期的目标。将解决问题整个过程的有关资料进行整理,编写程序使用说明书。,
链接地址:https://www.31ppt.com/p-6586421.html