您好,欢迎访问三七文档
第1章概观程序设计本章内容:计算机程序发展历程程序设计思想变迁史重点:面向对象编程思想目的:了解程序设计发展史1.1程序设计发展历程1.1.1什么是计算机程序自1946年世界上第一台电子计算机问世以来,计算机科学及其应用的发展十分迅猛,计算机被广泛地应用于人类生产、生活的各个领域,推动了社会的进步与发展。特别是随着国际互联网(Internet)日益深入千家万户,传统的信息收集、传输及交换方式正被革命性地改变,人类已经难以摆脱对计算机的依赖,计算机已将人类带入了一个新的时代—信息时代。一台计算机是由硬件系统和软件系统两大部分构成的。硬件是计算机的物质基础;而软件可以说是计算机的灵魂,没有软件,计算机只是一台“裸机”,是什么也不能干的,有了软件,才能灵动起来,成为一台真正的“电脑”。而所有的软件,都是使用计算机语言编写的。软件程序是控制计算机完成特定功能的一组有序指令的集合,编写程序所使用的语言称为程序设计语言。电脑所做的每一次动作,每一个步骤,都是按照已经用计算机语言编好的程序来执行的。程序是计算机要执行的动作的集合,而程序全部都是用程序设计者所掌握的程序语言来编写的。所以人们要控制计算机一定要通过计算机语言向计算机发出命令。程序设计语言经历了机器语言、汇编语言到高级语言的多个阶段。随着计算机技术的不断进步和计算机图形技术的发展,计算机程序提供了对现实世界越来越逼真的模拟,在这种情况下一种新的计算机程序出现了,这样的程序的目的不再是为了计算复杂的弹道数据,或是模拟宇宙的演化。它只是为了一个简单的目标:娱乐。电子游戏产生了,同时也产生了游戏程序员。游戏程序员的程序设计能力决定着他能为游戏策划实现哪些功能,能做出什么样的游戏。可以说程序员的水平决定了游戏的成败,对于游戏程序员而言,掌握一门高级语言及其基本的编程技能是必需的。不仅如此,作为专业技术人员,除了掌握本专业系统的基础知识外,-2-科学精神的培养、思维方法的锻炼、严谨踏实的科研作风养成,以及分析问题、解决问题的能力的训练,都是日后工作的基础。学习计算机语言,正是一种十分有益的训练方式,而语言本身又是与计算机进行交互的有力的工具。1.1.2计算机程序语言发展历史计算机程序设计发展的历史,也就是计算机程序设计语言的发展历史,它经历了从机器语言、汇编语言到高级语言的历程。1.机器语言电子计算机所使用的是由“0”和“1”组成的二进制数,二进制是计算机的语言基础。计算机发明之初,计算机所能识别的语言只有机器语言,即由0和1构成的代码。所以人们只能放弃自己的自然语言,用计算机的语言去命令计算机干这干那,也就是写出一串串由“0”和“1”组成的指令序列交由计算机执行,这种语言,就是机器语言。使用机器语言是十分痛苦的,特别是在程序有错需要修改时,更是如此。而且,由于每台计算机的指令系统往往各不相同,所以,在一台计算机上执行的程序,要想在另一台计算机上执行,必须另编程序,造成了重复工作。但由于使用的是针对特定型号计算机的语言,且不需要经过翻译、编译等过程,而是直接执行的,故而运算效率是所有语言中最高的。机器语言,是第一代计算机语言。2.汇编语言为了减轻使用机器语言编程的痛苦,提高程序开发的效率,人们进行了一种有益的改进:用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串,比如,用“ADD”代表加法,“MOV”代表数据传递等等。这样一来,人们就比较容易读懂并理解程序在干什么,纠错及维护都变得方便了,这种程序设计语言就称为汇编语言,即第二代计算机语言。然而计算机是不认识这些符号的,这就需要一个专门的程序,专门负责将这些符号翻译成二进制数的机器语言,这种翻译程序被称为汇编程序。汇编语言同样十分依赖于机器硬件,移植性不好,但效率仍十分高,针对计算机特定硬件而编制的汇编语言程序,能准确发挥计算机硬件的功能和特长,程序精炼而质量高,所以至今仍是一种常用而强有力的软件开发工具。3.高级语言从最初与计算机交流的痛苦经历中,人们意识到,应该设计一种这样的语言,这种语言接近于数学语言或人的自然语言,同时又不依赖于计算机硬件,编出的程序能在所有机器上通用。经过不懈努力,1954年,第一个完全脱离机器硬件的高级语言——FORTRAN问世了,40多年来,共有几百种高级语言出现,有重要意义的有几十种,影响较大、使用较普遍的有FORTRAN、ALGOL、COBOL、BASIC、LISP、SNOBOL、PL/1、Pascal、C、PROLOG、Ada、C++、Delphi、JAVA等。高级语言的发展也经历了从早期语言到结构化程序设计语言,从面向过程到面向对象程序语言的过程。相应地,软件的开发也由最初的个体手工作坊式的封闭式生产,发展为产业化、流水线式的工业化生产。-3-过去的软件的生产基本上是人自为战,缺乏科学规范的系统规划与测试、评估标准。当这样的工作方式,应用于大型软件的开发是,恶果是大批耗费巨资建立起来的软件系统,由于含有错误而无法使用,甚至带来巨大损失,软件给人的感觉是越来越不可靠,以致几乎没有不出错的软件。这一切,极大地震动了计算机界,史称“软件危机”。人们认识到:大型程序的编制不同于写小程序,它应该是一项新的技术,应该像处理工程一样处理软件研制的全过程。程序的设计应易于保证正确性,也便于验证正确性。1969年,提出了结构化程序设计方法,1970年,第一个结构化程序设计语言——Pascal语言出现,标志着结构化程序设计时期的开始。80年代初开始,在软件设计思想上,又产生了一次革命,其成果就是面向对象的程序设计思想。在此之前的高级语言,几乎都是面向过程的,程序的执行是流水线似的,在一个模块被执行完成前,人们不能干别的事,也无法动态地改变程序的执行方向。这和人们日常处理事物的方式是不一致的,对人而言,希望发生一件事就处理一件事。也就是说,不是面向过程,而应是面向具体的应用功能,也就是对象(Object)。其方法就是软件的集成化,如同硬件的集成电路一样,生产一些通用的、封装紧密的功能模块,称之为软件集成块,它与具体应用无关,但能相互组合,完成具体的应用功能,同时又能重复使用。对使用者来说,只关心它的接口(输入量、输出量)及能实现的功能,至于如何实现的,那是它内部的事,使用者完全不用关心,C++、Delphi就是这种语言的典型代表。随着技术的不断进步,高级语言的下一个发展目标是面向应用,也就是说:只需要告诉程序你要干什么,程序就能自动生成算法,自动进行处理,这就是非过程化的程序语言。1.2程序设计思想1.2.1结构化程序设计思想(SP:StructuredProgramming)“结构化程序设计(StructuredProgramming)”的思想是由荷兰学者E.W.Dijkstra提出的,它规定了一套方法,使程序具有合理的结构,以保证和验证程序的正确性。这种方法要求程序设计者不能随心所欲地编写程序,而要按照一定的结构形式来设计和编写程序。它的一个重要目的是使程序具有良好的结构,使程序易于设计,易于理解,易于调试修改,以提高设计和维护程序工作的效率。结构化程序设计是E.W.Dijkstra等人在研究的人的智力局限性随着程序规模的增大而表现出来的不适应之后,于1969年提出的一种程序设计方法,这是一种复杂任务时避免混乱的技术。它提出了把程序结构规范化的主张,要求对复杂问题的求解过程应按人们大脑容易理解的方式进行组织,而不是强迫人们的大脑去接受难以忍受的冲击。具体来说,结构化程序设计的思想包括以下三方面的内容:(1)程序由一些基本结构组成。任何一个大型的程序都由三种基本结构所组成,由这些基本结构顺序地构成了一个结构化的程序。这三种基本结构为:顺序结构,如图1-1:-4-图1-1选择结构亦称分支结构,如图1-2:图1-2和循环结构,如图1-3:图1-3同时结构化定理还进一步表明,任何一个复杂问题的程序设计都可以用顺序、选择和循环这三种基本结构组成,且它们都具有以下特点:只有一个入口;只有一个出口;结构中无死循环,程序中三种基本结构之间形成顺序执行关系。(2)一个大型程序应按功能分割成一些功能模块,并把这些模块按层次关系进行组织。(3)在程序设计时应采用自顶向下逐步细化的实施方法。用八个字来描述结构化程序设计的基本思想就是:“自顶向下,逐步求精”。“自顶向下”是将复杂、大的问题划分为小问题,找出问题的关键、重点所在,然后用精确的思维定性、定量地去描述问题。“逐步求精”是将现实世界的问题经抽象转化为逻辑空间或求解空间的问题。复杂问题经-5-抽象化处理变为相对比较简单的问题。经若干步抽象(精化)处理,最后到求解域中只是比较简单的编程问题。在这个“自顶向下,逐步求精”的细化过程中,要对系统功能逐层分解出许多易于理解和实现的、逻辑上相对独立的子功能,形成一棵功能树。在程序实现时,功能树上的每一个结点,对应一个函数。一个C程序是由一到多个函数组成;一个C++程序不但可以包含多个函数,而且还可以包含多个类,而一个类则包含一到多个成员函数。按结构化程序设计方法设计出的程序优点是:结构良好、各模块间的关系清晰简单、每一模块内都由基本单元组成。这样设计出的程序清晰易读,可理解性好,容易设计,容易验证其正确性,也容易维护。同时,由于采用了“自顶向下、逐步细化”的实施方法,能有效地组织人们的智力,有利于软件的工程化开发。1.2.2面向对象程序设计思想(OOP:Object-oritendprogramming)随着计算机技术的不断发展,其软硬件之间的差距越来越大,造成了计算机发展的不均衡,当系统较为复杂时,常规的软件工具、技术和概念已不足以应付,从而使软件开发陷入了困境,即所谓的“软件危机”。尽管软、硬件发展的这种差距自计算机出现以来始终存在,但进入90年代后这种差距更加明显,在这一背景下,面向对象(OOP)程序设计技术逐渐兴起,而C++这种最为优秀的面向对象语言也应运而生,随着它的不断完善,逐步进入实用阶段而受到广大软件开发者的青睐,吸引了众多的人士去研究、使用它。而面向对象的思想也在软件工程、人工智能等领域得到了十分广泛的应用。面向对象的程序设计语言的出现是计算机软件产业的一次革命。面向对象程序设计方法的基本思想是:认为世界由各种对象组成,任何事物都是对象,是某个对象类的实例;复杂的对象可以由比较简单的对象以某种方式组成。按照这个观点,整个世界也可以从一些最原始的对象开始,经过层层组合而成。因此,可以说整个世界就是一个最复杂的对象。在面向对象程序设计中,“对象(Object)”是系统中的基本运行实体,是有特殊属性(数据)和行为方式(方法)的实体。即对象由两个元素构成:一组包含数据的属性;和允许对属性中包含的数据进行操作的方法。也可以说,“对象”是将某些数据代码和对该数据的操作代码封装起来的模块,是有特殊属性(数据)和行为方式(方法)的逻辑实体。对象包含了数据和方法,每个对象就是一个微小的程序。由于其它对象不能直接操纵该对象的私有数据,只有对象自身的方法才能得到它,这就使对象具有很强的独立性,因此可把对象当作软件的基本组件。在面向对象的程序设计中,可使用若干对象来建立所需要的各种复杂的应用软件,即通过对象组合,创建具体的应用。因此,把所有对象都划分成各种对象类,每个对象类都定义了一组方法,所谓方法实际上是允许施加于该类对象上的各种操作。对象和传统的数据有本质区别,不是被动地等待对它执行某种操作;相反,它是进行处理的主体,必须发送消息请求对象执行它的某个操作,处理它的私有数据,而不能从外界直接对它的私有数据进行操作。对象之间除了互相传递消息的联系之外再没有其它联系。一切局部对象的信息和实现方法,都被封装于相应的对象类-6-的定义之中。在外界是不可见的、是封装的。面向对象程序语言中所最为精彩的是它的三大特性:继承性(Inheritance)、封装性(Encapsulation)和多态性(Polymorphism)中的多态性。封装就是将对象的属性和方法封装到具有适当定义接口的容器中。对象接口提供的方法和属性应使对象能够如期使用。封装
本文标题:ORACLE教学
链接地址:https://www.777doc.com/doc-2847885 .html