《高级语言程序设计概述.ppt》由会员分享,可在线阅读,更多相关《高级语言程序设计概述.ppt(31页珍藏版)》请在三一办公上搜索。
1、1,2,第1章:概 述,主要知识点,程序设计语言的发展 常用程序设计语言 面向对象程序设计语言的特点 C语言程序的结构 算法的概念 软件工程的概念,本章导读 所有的软件都是用计算机程序设计语言编写的。程序设计语言(programming language)是一组用来定义计算机程序的语法规则,分为低级语言和高级语言。本章通过C程序实例,使读者理解高级语言程序设计的概念。,3,程序设计语言按照语言级别可以分为低级语言和高级语言。低级语言有机器语言和汇编语言。低级语言与特定的机器有关,其功效高,但使用复杂、繁琐、费时、易出差错。机器语言是表示成数码形式的机器基本指令集。汇编语言是机器语言中部分符号化
2、的结果。高级语言的表示方法要比低级语言更接近于待解问题的表示方法,其特点是在一定程度上与具体机器无关,易学、易用、易维护。,1.1 程序设计语言的发展,4,1.1.1 程序设计语言的简介,(1)机器语言 电子计算机使用的是由“0”和“1”组成的二进制数,二进制数是计算机的语言的基础。计算机发明之初,人们只能用计算机的语言去命令计算机工作,也就是写出一串串由“0”和“1”组成的指令序列交由计算机执行,这种语言就是机器语言。机器语言是第一代计算机语言。(2)汇编语言 为了克服机器语言难读、难编、难记和易出错的缺点,人们用与代码指令实际含义相近的英文缩写词、字母和数字等符号取代指令代码,例如,用AD
3、D代表加法,用MOV代表数据传递等,这样,人们能较容易读懂并理解程序,使得纠错及维护变得方便了,这种程序设计语言称为汇编语言。汇编语言是第二代计算机语言,仍然是面向机器的语言。,5,1.1.1 程序设计语言的简介,(3)高级语言 机器语言和汇编语言都依赖计算机硬件,要求使用者对计算机硬件结构及其工作原理十分熟悉,这对非计算机专业人员是难以做到的。计算机的发展应用促使人们寻求一些与人类自然语言相接近且能为计算机所接受的通用易学的计算机语言。这种与自然语言相近并被计算机接受和执行的计算机语言称高级语言。高级语言是面向用户的语言。机器的高级语言的发展经历了从早期语言到结构化程序设计语言,从面向过程到
4、非过程化程序语言的过程。(4)面向对象语言 8 0年代初开始,在软件设计思想上,又产生了一次革命,其成果就是面向对象的程序设计。,6,目前有各种高级程序设计语言,其中以下几种应用非常广泛。FORTRAN COBOL PASCAL C语言 LISP Java,1.1.2 常用的程序设计语言(略),7,1.1.3 发展趋势(略),程序设计语言是软件的重要方面。它的发展趋势是:可视化智能化构件化。,8,1.2.1 C语言的发展(自学)1.2.2 C语言的特点(略)(1)语言简洁紧凑、使用灵活方便(2)运算符丰富(3)数据结构丰富(4)C是结构式语言(5)语法限制不太严格、程序设计自由度大(6)允许直
5、接访问物理地址,可以直接对硬件进行操作(7)程序执行效率高(8)适用范围大,可移植性好,1.2 C程序及其程序的基本组成,9,1.2.3 C语言程序的结构,例1-1 输入两个整数,计算这两个整数的和。(上机演示),运行结果:The sum of two integer is 300,10,例1-2 用自定义函数的方法计算这两个整数的和。(上机演示),运行结果:The sum of two integer is 300,11,1.3 面向对象程序设计的基本思想(略),面向对象方法(Object-OrientedMethod,OO方法)是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统
6、方法,简称OO(Object-Oriented)方法,是建立在“对象”概念基础上的方法学。面向对象的程序设计方法强调在软件开发过程中面向待求解总是域中的事物,它的基本特征主要包括抽象性、封装性、继承性和多态性。,12,计算机产生的初期主要用于科学计算,这些问题的求解主要是过程计算,因此软件设计的主要目标是设计求解问题的过程,所以,传统的程序设计主要采用面向过程的设计方法。随着计算机技术的发展,计算机的应用越来越广泛,计算机的应用不再仅限于科学计算,计算机处理的问题变得庞大而复杂,面向过程的结构化程序设计方法的局限性明显表露出来,主要是结构化程序设计方法将数据与处理数据的过程分离,当数据结构改变
7、时,相关的处理过程通常需要全部或部分进行修改,因此代码的重用性差。另外,图形用户面的普及使软件的使用者越来越方便,而软件的开发者却越来越因难,它们很难用过程语言来实现,这时面向对象的程序设计方法产生了。,1.3.1 面向对象方法的产生,13,面向对象的程序设计方法有三个优点:(1)程序的可维护性好。面向对象程序易于阅读和理解,程序的复杂性有所降低;(2)程序易修改:程序员可以通过添加或删除对象,较容易地实现修改、添加或删除程序;(3)可重用性好:对象可以使用多次程序员可以根据需要将类和对象保存起来,随时插入到应用程序中,无需作修改。,14,面向对象程序设计的基本思想认为客观世界由各种各样的对象
8、组成,每一类型的对象都有各自的内部状态和行为规律,不同对象间的相互联系和作用构成了不同的系统,形成了客观世界。面向对象程序设计方法中的对象是构成软件系统的一个基本单位,是系统用以描述客观事物的一个实例。对象由一组属性和一组行为构成,属性是用来描述对象静态特征的数据项,行为是用来描述对象动态特征的一系列操作。对象是具有属性和行为的封装体。类是具有相同属性和行为的一组对象的集合,它是属于同一类的全部对象提供了统一的抽象描述。类是对象的集合和再抽象。类是具有相同属性和行为的一组对象的集合。它为属于该类的全部对象提供了统一的抽象描述。具有相同或相似性质的对象的抽象就是类。因此,对象的抽象是类,类的具体
9、化就是对象,也可以说类的实例是对象。,1.3.2 类与对象的概念,15,一个面向对象的程序由许多对象组成,这些对象之间需要相互沟通。对象之间通过收发消息相互沟通,类似于人与人之间的信息传递。不同对象之间通过发送消息向对方提出服务,接受消息的对象主动完成所请求的服务,这种通信机制称为消息传递。传递消息的内容包括接收消息的对象的名字,需要调用的函数的名字,以及必要的信息。同一个对象可以接受不同形式的多个消息,产生的消息各不相同;相同形式的消息可以发送给不同的对象,产生的响应可以各不相同;一个对象可以立即响应发送给它的消息,也可以暂不响应消息。程序的执行取决于事件发生的顺序,由所产生的消息来驱动程序
10、的执行,不需要预先确定消息产生的顺序。消息机制为对象间提供了一个动态联系的途径,使它们的行为能互相配合,构成一个有机的运行系统。,1.3.3 消息的概念,16,(1)抽象性 在系统开发中,抽象指的是在决定如何实现对象之前的对象的意义和行为。抽象指仅表现核心的特性而不描述背景细节的行为。使用抽象可以尽可能避免过早考虑一些细节。(2)封装性 把数据和函数包装在一个单独的单元(称为类)的行为称为封装。数据封装是类的最典型特点。一个对象就是一个封装了数据和操作这些数据的代码的逻辑实体。封装性构成了面向对象方法的基础,封装性是保证软件部件具有优良的模块性的基础。对象是封装的最基本单位。封装防止了程序相互
11、依赖性而带来的变动影响。面向对象的封装比传统语言的封装更为清晰、更为有力。因而,这种方法的创始人Codd和YOuMn认为,面向对象就是“对象十属性十方法”。,1.3.4 面向对象程序设计的特点,17,(3)继承性 继承性是面向对象程序设计语言不同于其它语言的最重要的特点,是其他语言所没有的。继承性是类特有的性质,类可以派生出子类,子类自动继承父类的属性与方法,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。这样可大大提高软件的可重用性。继承性是子类自动共享父类数据结构和方法的机制,在类层次
12、中,子类只继承一个父类的数据结构和方法,则称为单重继承,子类继承了多个父类的数据结构和方法,则称为多重继承。在软件开发中,类的继承性使所建立的软件具有开放性、可扩充性。(4)多态性 多态性是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。,1.3.4 面向对象程序设计的特点,18,目前常用的面向对象程序设计语言有C+、Java、Visual BASIC等。(1)C+C+是美国Bell实验室于二十世纪八十年代在C语言的基础上开发出来的,是目前已经得到广泛应用的面向对象程序设计语言。C+保留了C语言的全部优点,增加了面向对象的机制,支持面向对象程序设计方法。C+既可以用于结构化程
13、序设计,又可以用于面向对象程序设计,是一种混合型面向对象程序设计语言。C+是面向对象的大型程序设计语言,应用于各种应用领域。目前有各种版本的C+编译系统,国内比较流行的有Visual C+和Borland C+,C+的类库包括Borland的OWL和Microsoft的MFC。(2)Java语言 1995年6月Sun公司推出了一种纯粹面向对象程序设计的语言Java。传统的程序设计语言编写的软件一般与具体的实现环境有关,如果环境发生变化,则软件需要做较大的修改,而Java编写的软件的执行代码具有兼容性,它编写的软件可以在有Java解释器的各种系统上运行。Java程序有两种类型:一是可在网页上运行
14、的Applet小应用程序,它不能单独运行,必须嵌入HTML文件中,由Web浏览器执行;另一类是可以单独执行的Java应用程序,可完成各种功能。Java是网络世界的通用语言,它提供了丰富的类库,具有强大的图形、图像、动画、音频、视频、多线程及网络交互能力,具有面向对象性、与平台无关性、可移植性、安全性、动态性,并具有并发机制。目前Java已成为应用最广泛的网络编程语言之一。(3)Visual BASIC语言 1991年Microsoft在原BASIC语言的基础上推出了可视化面向对象编程语言Visual BASIC。VB继承了BASIC语言的特点,具有语法简单、容易学习、容易使用、数据处理能力强的
15、特点,同时采用了面向对象、事件驱动的编程机制和可视化程序设计方法,有效地提高了应用程序开发的效率。同时VB还具有强大的多媒体及网络编程功能,可以编写强大的多媒体处理程序和数据库应用程序。,1.3.5 面向对象程序设计语言,19,当C语言程序代码达到25000行以上后,维护和修改工作变得相当困难。为了满足管理程序复杂性的需要,贝尔实验室的Bjarne Stroustrup博士于1979年开始对C语言进行了改进和扩充,并引入了面向对象程序设计的内容,1983年命名为C+,后经过三次重大修订,于1994年制定了标准C+草案,之后经过为断完善,成为目前的C+。,1.4 C+的基本概念(略),20,C+
16、具有以下特点:(1)保持了与C语言的兼容性。绝大多数C语言程序不经修改可以直 接在C+环境中运行。(2)支持面向过程的程序设计。它是一种理想的结构化程序设计语言,又包含了面向对象程序设计的特征。C+由两部分组成:一是过程性语言部分,与C语言无本质区别;二是类和对象部分,是面向对象程序设计的主体。(3)具有程序效率高、灵活性强的特点。C+使程序结构清晰、易于扩展、易于维护而不失效率。(4)具有通用性和可移植性。C+是一种标准化的、与硬件基本无关的程序设计语言,C+程序通常无需修改或稍许修改便可在其他计算机上运行。(5)具有丰富的数据类型和运算符,并提供了强大的库函数。(6)具有面向对象的特性,C
17、+支持抽象性、封装性、继承性和多态性,1.4.1 C+的特点,21,Visual C+是C+集成开发环境之一,它已从最初的1.0版到目前的6.0版、C+.NET,系统功能日益强大和完善,是目前应用最广泛的C+语言。(1)Visual C+6.0(计算机等级考试采用、本课程采用)(2)Visual C+.NET,1.4.2 Visual C+,22,著名计算机科学家沃思提出一个公式:程序=数据结构+算法算法的基本概念:计算机算法是用计算机求解一个具体问题或执行特定任务的一组有序的操作步骤(或指令)。算法的特性(1)有穷性:一个算法必须保证执行有限步之后结束。在执行有限步之后,计算必须终止,并得到
18、解答。也就是说一个算法的实现应该在有限的时间内完成。(2)确切性:算法的每一步骤必须有确切的定义。算法中对每个步骤的解释是唯一的。(3)零个或多个输入:输入指在执行算法时需要从外界取得的必要的信息。一个算法有零个或多个输入,以刻画运算对象的初始情况。一个算法可以没有输入。(4)一个或多个输出:输出是算法的执行结果。一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的。(5)有效性:或可行性。算法中的每一个步骤能够精确地运行,并得到确定的结果。而且人们用笔和纸做有限次运算后即可完成。,1.5 算法概述,23,算法的描述算法的常用表示方法有如下三种:(1)使用自然语言
19、描述算法(2)使用流程图描述算法(3)使用伪代码描述算法下面以求解n!=1*2*3*4*5*(n-1)*n为例说明算法的三种描述方法。,24,第种:使用自然语言描述求n!的算法。确定一个n的值;假设等号右边的算式项中的初始值i为1;假设变量f中存放n!的值,且初始值为1;如果in时,执行,否则转出执行;计算f乘以i的值后,重新赋值给f;计算i加1,然后将值重新赋值给i;转去执行;输出f的值,即n!的值,算法结束。,25,第2种:使用流程图描述n!的算法。,26,第3种:使用伪代码描述n!的算法。算法开始输入 n 的值;置i的初值为1;置f的初值为1;当i=n 时,执行下面的操作 使f=f*i;
20、使i=i+1;(循环体到此结束)输出 sum 的值;算法结束也可以写成以下形式:BEGIN/*算法开始*/输入 n 的值;i 1;/*为变量 i 赋初值*/f 1;/*为变量 f 赋初值*/while i=n/*当变量 i=n 时,执行下面的循环体语句*/f f*i;i i+1;输出 sum 的值;END/*算法结束*/,1.6 软件工程概述,1.6.1 软件的概念 比较公认的软件定义由以下三部分组成:运行中能提供所希望的功能和性能的指令集(即程序);程序能够正确运行的数据结构;描述程序研制过程、方法所用的文挡。软件分为系统软件和应用软件。,1.6.2 软件工程概念,软件工程是研究和应用如何以
21、系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。软件工程的目标:在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并且满足用户需求的软件产品。追求这些目标有助于提高软件产品的质量和开发效率,减少维护的困难。,1.6.3 软件生存周期与软件开发模型,软件生存周期一般可分为以下阶段:问题定义及可行性分析需求分析设计:软件设计一般分为总体设计和详细设计编码测试运行与维护,30,9.1.1 启动Visual C+6.0环境9.1.2 建立或打开源程序文件9.1.3 程序的编辑、编译、链接与运行,9.1 Visual C+6.0开发环境(以1.3节例1-1、1-2为例),结论:使用VC 6.0环境编写程序,其文件后缀为.cpp,这种形式的程序称为源代码(Source Code),然后用编译器将源代码转换成二进制形式,文件后缀为.obj,这种形式的程序称为目标代码(Objective Code),最后,将若干目标代码和现有的二进制代码库经过连接器连接,产生可执行代码(Executable Code),文件后缀为.exe,只有.exe文件才能运行。,31,9.2 C语言程序调试的基本步骤(结合上机体会),