程序设计基础课件

上传人:汽*** 文档编号:573300769 上传时间:2024-08-14 格式:PPT 页数:72 大小:3.98MB
返回 下载 相关 举报
程序设计基础课件_第1页
第1页 / 共72页
程序设计基础课件_第2页
第2页 / 共72页
程序设计基础课件_第3页
第3页 / 共72页
程序设计基础课件_第4页
第4页 / 共72页
程序设计基础课件_第5页
第5页 / 共72页
点击查看更多>>
资源描述

《程序设计基础课件》由会员分享,可在线阅读,更多相关《程序设计基础课件(72页珍藏版)》请在金锄头文库上搜索。

1、第第6 6章章 程序设计基础程序设计基础-计算机学院计算机学院 第6章 程序设计基础纲要算法算法2 2程序设计的方法程序设计的方法4 4程序设计的步骤程序设计的步骤3 3 3 3概述概述3 3 1 12 2 6.1 概述 程序与程序设计程序与程序设计3 3 1 1程序设计语言的发展程序设计语言的发展3 3 2 2常见的程序设计语言常见的程序设计语言3 3 3 33 3 6.1 概述 6.1.1 6.1.1 程序与程序设计程序与程序设计计计算算机机是是依依靠靠硬硬件件和和软软件件的的配配合合进进行行工工作作的的,硬硬件件是是计计算算机机系系统统的的基基础础,软软件件附附着着在在硬硬件件上上,指指

2、挥挥和和控控制制硬硬件件工作。工作。那么,那么,软件是什么呢软件是什么呢软件是什么呢软件是什么呢? 软件软件软件软件 = = = = 计算机程序计算机程序计算机程序计算机程序 + + + + 文档资料文档资料文档资料文档资料计算机程序计算机程序(核心)(核心)文档资料文档资料软件软件软件安装说明书软件安装说明书 用户使用手册用户使用手册 有关技术资料、服务信息等有关技术资料、服务信息等 4 4 6.1.1 6.1.1 程序与程序设计程序与程序设计那么什么是那么什么是计算机程序计算机程序计算机程序计算机程序呢?呢? 事事实实上上,为为了了能能让让计计算算机机解解决决实实际际问问题题并并完完成成预

3、预定定功功能能,人人们们需需要要按按照照解解题题步步骤骤和和功功能能要要求求,从从计计算算机机的的指指令令系系统统中中选选出出相相关关的的指指令令并并进进行行编编排排( (称称为为编编程程) ),形形成成一一组组有序的指令集合。有序的指令集合。所所以以,计计算算机机程程序序就就是是计计算算机机为为完完成成某某一一任任务务所所必必须须执执行的一系列指令的集合。行的一系列指令的集合。 计算机程序计算机程序计算机程序计算机程序 = = = = 一系列指令的集合一系列指令的集合一系列指令的集合一系列指令的集合 6.1 概述 5 5 6.1 概述 6.1.1 6.1.1 程序与程序设计程序与程序设计下面

4、就是用于下面就是用于两个变量的值交换两个变量的值交换两个变量的值交换两个变量的值交换的一段程序:的一段程序: void void swap(intswap(int m, m, intint n) n) intint temp; temp; /*/*定义名叫定义名叫temptemp的整型变量的整型变量* */ / temp=m; m=n; n=temp;temp=m; m=n; n=temp; /*/*交换变量交换变量m m和和n n的值的值* */ / 而而用用程程序序设设计计语语言言( (也也称称计计算算机机语语言言) )来来编编写写计计算算机机程程序序的的过过程程就就叫叫程程序序设设计计。

5、上上面面这这段段程程序序就就是是用用C C程程序序设设计计语言语言编写的。编写的。6 6 6.1 概述 6.1.2 6.1.2 程序设计语言的发展程序设计语言的发展计算机程序设计语言经历了从计算机程序设计语言经历了从机器语言、机器语言、汇编汇编语言语言到到高高级语言级语言的发展历程。的发展历程。机器语言机器语言机器语言机器语言汇编语言汇编语言汇编语言汇编语言高级语言高级语言高级语言高级语言第第第第4 4 4 4代语言代语言代语言代语言1GL2GL3GL 4GL 7 7 6.1 概述 6.1.2 6.1.2 程序设计语言的发展程序设计语言的发展1. 1.机器语言机器语言 机机器器语语言言是是计计

6、算算机机诞诞生生和和发发展展初初期期使使用用的的语语言言。机机器器语语言言程程序序是是由由和和的的二二进进制制代代码码按按一一定定规规则则组组成成的的,并并能被机器直接理解和执行的指令集合。能被机器直接理解和执行的指令集合。例如,计算例如,计算A=8+12A=8+12的机器语言程序如下:的机器语言程序如下: 10110000 00000111 10110000 00000111 : :把把8 8放入累加器放入累加器A A中中 00101100 00001100 00101100 00001100 :12:12与累加器与累加器A A中的值相加,结果中的值相加,结果 仍放入仍放入A A中中 111

7、10100 11110100 : :结束,停机结束,停机8 8 6.1 概述 6.1.2 6.1.2 程序设计语言的发展程序设计语言的发展1. 1.机器语言机器语言 机机器器语语言言编编写写的的程程序序不不仅仅难难读读、难难懂懂、难难修修改改,而而且且不不同同机机器器使使用用的的指指令令系系统统也也不不尽尽相相同同,所所以以现现在在已已经经没没有有人使用人使用机器语言直接编程了。机器语言直接编程了。当当然然,机机器器语语言言也也有有其其优优点点,编编写写的的程程序序代代码码不不需需要要翻翻译,因此占用空间少,译,因此占用空间少,执行速度快执行速度快。 9 9 6.1 概述 6.1.2 6.1.

8、2 程序设计语言的发展程序设计语言的发展2. 2.汇编语言汇编语言 汇汇编编语语言言开开始始于于2020世世纪纪5050年年代代初初。为为了了克克服服机机器器语语言言的的缺缺点点,人人们们将将机机器器指指令令的的代代码码用用英英文文助助记记符符来来表表示示,例例如用如用ADDADD表示加、表示加、JMPJMP表示程序跳转等。表示程序跳转等。例如,计算例如,计算A=8+12A=8+12的汇编语言程序如下:的汇编语言程序如下: MOV MOV A , 8A , 8 : : 把把8 8放入累加器放入累加器A A中中 ADD ADD A , 12A , 12 : : 1212与累加器与累加器A A中的

9、值相加,结果仍放入中的值相加,结果仍放入A A中中 HLT HLT : : 结束,停机结束,停机 1010 6.1 概述 6.1.2 6.1.2 程序设计语言的发展程序设计语言的发展2. 2.汇编语言汇编语言汇汇编编语语言言克克服服了了机机器器语语言言难难读读、难难懂懂的的缺缺点点,同同时时又又保保持持了了其其编编程程质质量量高高,占占存存储储空空间间少少,执执行行速速度度快快的的优优点点。故故在在编编写写系系统统软软件件和和过过程程控控制制软软件件时时,仍仍经经常常采采用用汇汇编编语言。语言。 但但汇汇编编语语言言仍仍然然是是面面向向机机器器的的语语言言。使使用用汇汇编编语语言言编编程程需需

10、要要直直接接安安排排存存储储,规规定定寄寄存存器器和和运运算算器器的的动动作作次次序序等等。此此外外,不不同同计计算算机机的的指指令令长长度度、寻寻址址方方式式、寄寄存存器器数数目目等都不一样,所以汇编语言程序的通用性较差。等都不一样,所以汇编语言程序的通用性较差。 1111 6.1 概述 6.1.2 6.1.2 程序设计语言的发展程序设计语言的发展2. 2.汇编语言汇编语言汇汇编编语语言言编编写写的的程程序序( (源源程程序序) ),必必须须经经过过汇汇编编程程序序( (一一种种语语言言处处理理程程序序) )翻翻译译成成计计算算机机所所能能识识别别的的机机器器语语言后,才能被计算机执行言后,

11、才能被计算机执行 。 1212 6.1 概述 6.1.2 6.1.2 程序设计语言的发展程序设计语言的发展3.3.高级语言高级语言 从从最最初初与与计计算算机机交交流流的的痛痛苦苦经经历历中中,人人们们意意识识到到,应应该该设设计计一一种种这这样样的的语语言言,它它接接近近于于数数学学语语言言或或自自然然语语言言,同同时时又又不不依依赖赖于于计计算算机机硬硬件件,编编出出的的程程序序能能在在所所有有计计算算机机上上通通用用。经经过过努努力力,19541954年年,第第一一个个完完全全脱脱离离机机器器硬硬件的高级语言件的高级语言FORTRANFORTRAN语言问世语言问世了。了。高高级级语语言言

12、的的表表示示形形式式近近似似于于自自然然语语言言,对对各各种种公公式式的的表表示示近近似似于于数数学学公公式式。而而且且,一一条条高高级级语语言言语语句句的的功功能能往往往往相相当当于于十十几几条条甚甚至至几几十十条条汇汇编编语语言言的的指指令令,程程序序编编写写相相对对比比较较简简单单。因因此此,在在工工程程计计算算、数数据据处处理理等等方方面面,人们人们常用常用高级语言来编写程序。高级语言来编写程序。 1313 6.1 概述 6.1.2 6.1.2 程序设计语言的发展程序设计语言的发展3.3.高级语言高级语言 用用高高级级语语言言编编写写的的程程序序称称为为高高级级语语言言源源程程序序,也

13、也不不能能直直接接执执行行,必必须须经经过过语语言言处处理理程程序序的的解解解解释释释释或或或或编编编编译译译译后后才才能能执执行。行。1414 6.1 概述 6.1.2 6.1.2 程序设计语言的发展程序设计语言的发展4. 4.非过程化的程序语言非过程化的程序语言 人人们们称称高高级级语语言言是是第第代代语语言言,其其特特点点是是面面向向过过程程。面面向向过过程程是是指指用用户户在在程程序序中中不不但但要要说说明明解解决决什什么么问问题题,还还要告诉计算机如何去解决。要告诉计算机如何去解决。计计算算机机技技术术的的发发展展要要求求新新一一代代的的计计算算机机语语言言能能够够根根据据用用户户说

14、说明明的的问问题题,智智能能化化的的去去自自动动寻寻找找解解决决方方案案,具具有有这这种种功功能能的的语语言言称称为为第第4 4代代语语言言(Fourth(FourthGeneration Generation LanguageLanguage,4GL)4GL)。目目前前4GL4GL尚尚未未发发展展成成熟熟,主主要要面面向向基基于于数数据据库库应应用用的的领领域域,还还不不适适用用于于科科学学计计算算、高高速速实实时时系统和系统软件等的开发。系统和系统软件等的开发。1515 6.1 概述 6.1.3 6.1.3 常见的程序设计语言常见的程序设计语言第第一一个个高高级级程程序序设设计计语语言言是

15、是FORTRANFORTRAN语语言言, ,它它是是由由美美国国IBMIBM公公司司在在2020世世纪纪5050年年代代开开发发出出来来的的。之之后后, ,随随着着计计算算机机应应用用的的发发展展, ,先先后后出出现现了了COBOLCOBOL、BASICBASIC、PASCALPASCAL、C C、C+C+、JavaJava等高级语言。等高级语言。 1. FORTRAN1. FORTRAN1. FORTRAN1. FORTRAN语言语言语言语言由由美美国国著著名名的的计计算算机机先先驱驱人人物物约约翰翰巴巴克克斯斯( ( John John WamerWamer) )于于19541954年年提

16、提出出。FOUTRANFOUTRAN是是FORmulaFORmula TRANslatorTRANslator的的缩缩写写,意意思思是是“公公式式翻翻译译机机”。顾顾名名思思义义,该该语语言言主主要要用用于于科科学学计计算算。FORTRANFORTRAN自自推推出出之之日日起起,版版本本不不断断更更新新,功功能能不不断断增增强强,目目前前在在工工程程应应用用领领域域,FORTRANFORTRAN仍仍然然被被广广泛泛使用使用。 1616 6.1 概述 6.1.3 6.1.3 常见的程序设计语言常见的程序设计语言 2. COBOL2. COBOL2. COBOL2. COBOL语言语言语言语言 C

17、OBOLCOBOL(COmmon Business Oriented Language, 通用事务处理语言)是是在在美美国国国国防防部部推推动动下下,由由政政府府机机构构和和工工业业界界联联合合开开发发的的一一种种语语言言,于于19601960年年正正式式推推出出,主主要要用用于于商业数据处理。商业数据处理。 COBOLCOBOL语语言言曾曾经经使使用用非非常常广广泛泛,2020世世纪纪7070年年代代近近一一半半的的程程序序是是用用COBOLCOBOL语语言言编编写写的的。当当前前,在在商商业业领领域域, COBOLCOBOL语言仍然占有重要席位语言仍然占有重要席位。1717 6.1 概述

18、6.1.3 6.1.3 常见的程序设计语言常见的程序设计语言 3. BASIC3. BASIC3. BASIC3. BASIC语言语言语言语言 BASICBASIC(Beginners All-purpose Symbolic Instruction Code, 初学者的通用符号指令代码)是是19641964年年由由美美国国的的John John G. G. KemenyKemeny和和 Thomas Thomas E. E. Kurtz Kurtz 在在FORTRANFORTRAN语语言言的的基基础础上上开开发发的的。由由于于简简单单易易学学,BASICBASIC语语言言得得到到了了广广泛泛

19、普及。普及。 MicrosoftMicrosoft公公司司对对BASICBASIC可可谓谓是是一一往往情情深深,从从早早期期微微型型机机上上内内置置的的BASICBASIC,到到8080年年代代产产生生的的第第一一个个编编译译版版本本Quick Quick BASICBASIC,直直到到目目前前非非常常流流行行的的Visual Visual BasicBasic,一一直直没没有有中中断断过对过对BASICBASIC语言的的改进。语言的的改进。 最最新新出出现现的的Visual Visual Basic. Basic. NETNET,是是采采用用MicrosoftMicrosoft的的. . N

20、ETNET技术的技术的Visual BasicVisual Basic语言。语言。 1818 6.1 概述 6.1.3 6.1.3 常见的程序设计语言常见的程序设计语言 4. PASCAL4. PASCAL4. PASCAL4. PASCAL语言语言语言语言PASCALPASCAL是是由由瑞瑞士士计计算算机机科科学学家家NiklausNiklaus Wirth Wirth 设设计计的的一一种种语语言言,19681968年年提提出出后后被被全全世世界界广广泛泛接接受受。这这个个语语言言的的名名字字是是为为了了纪纪念念著著名名的的法法国国数数学学家家,也也是是计计算算科科学学的的先先驱驱Blais

21、eBlaise PascalPascal而而起起的的。由由于于结结构构小小巧巧、语语法法严严谨谨、数数据据类类型型丰丰富富,从从2020世世纪纪7070年年代代末末往往后后的的很很长长一一段段时时间间里里, PASCALPASCAL成成为为世世界范围的界范围的计算机专业教学语言计算机专业教学语言。 2020世世纪纪8080年年代代,随随着着C C语语言言的的流流行行,PASCALPASCAL走走向向了了衰衰落落。目目前前,在在商商业业上上仅仅有有BorlandBorland公公司司仍仍在在开开发发基基于于PASCALPASCAL语语言言系系统统的的DelphiDelphi,它它使使用用了了面面

22、向向对对象象与与软软件件组组件件的的概概念念,主主要要用于开发商用软件。用于开发商用软件。 1919 6.1 概述 6.1.3 6.1.3 常见的程序设计语言常见的程序设计语言5. C5. C与与C+C+语言语言是是由由美美国国贝贝尔尔实实验验室室的的KennetKennet L. L. ThompsonThompson和和Dennis Dennis M. M. RitchieRitchie于于19721972年年设设计计开开发发的的,当当时时主主要要用用于于编编写写UNIXUNIX操操作作系系统统。后后来来由由于于其其功功能能丰丰富富、使使用用灵灵活活、执执行行速速度度快快、可可移植性强,迅

23、速成为最广泛使用的程序设计语言之一。移植性强,迅速成为最广泛使用的程序设计语言之一。 C C语语言言既既可可以以用用来来开开发发系系统统软软件件,也也可可以以用用来来开开发发应应用用软软件件,应应用用领领域域很很广广泛泛。例例如如,在在中中国国广广泛泛使使用用的的计计算算机机辅辅助助设设计计软软件件AutoCADAutoCAD、数数学学软软件件系系统统MathematicaMathematica等等,以以及及许许多多语语言言编编译译系系统统本本身身,其其软软件件系系统统的的全全部部或或部部分分都都是是用用C C语语言言开发的。开发的。C C语言已经语言已经成为最重要的软件系统开发语言之一成为最

24、重要的软件系统开发语言之一。2020 6.1 概述 6.1.3 6.1.3 常见的程序设计语言常见的程序设计语言 5. C5. C5. C5. C与与与与C+C+C+C+语言语言语言语言 19801980年年,贝贝尔尔实实验验室室的的BjarneBjarne StroustrupStroustrup对对C C语语言言进进行行了了扩扩充充,加加入入了了面面向向对对象象的的概概念念,并并于于19831983年年改改名名为为 C+C+。目目前前,C+C+已已经经成成为为应应用用最最广广的的面面向向对对象象程程序序设设计计语语言言。MicrosoftMicrosoft公公司司的的Visual Visu

25、al C+C+和和BorlandBorland公公司司的的 C+ C+ BuilderBuilder是是C+C+语语言言最最常常用用的的开开发发工工具具,利利用用这这些些开开发发工工具具,可以高效率的开发出复杂的可以高效率的开发出复杂的WindowsWindows应用程序。应用程序。 最最新新出出现现的的C#C#语语言言使使用用了了C+C+的的语语法法和和语语义义,是是基基于于MicrosoftMicrosoft公公司司推推出出的的新新一一代代软软件件开开发发环环境境.NET.NET平平台台的的高高级级程序设计语言。程序设计语言。2121 6.1 概述 6.1.3 6.1.3 常见的程序设计语

26、言常见的程序设计语言 6. Java6. Java6. Java6. Java语言语言语言语言 JavaJava是是SunSun公公司司开开发发的的一一种种跨跨平平台台的的网网络络编编程程语语言言,于于19951995年年正正式式发发布布。其其语语言言风风格格与与C+C+接接近近,但但舍舍弃弃了了C+C+中一些不常用或容易被误用的成分,如指针等。中一些不常用或容易被误用的成分,如指针等。 JavaJava语语言言最最主主要要的的特特点点是是,同同一一个个JavaJava程程序序不不用用重重新新编编译译就就可可以以在在不不同同平平台台的的计计算算机机上上运运行行。JavaJava在在网网络络上上

27、的的独独特特优优势势以以及及其其跨跨平平台台的的特特点点,使使得得它它已已经经成成为为InternetInternet上最受欢迎的编程语言之一。上最受欢迎的编程语言之一。 2222 6.1 概述 6.1.3 6.1.3 常见的程序设计语言常见的程序设计语言 7.7.7.7.网页设计类语言网页设计类语言网页设计类语言网页设计类语言 目前,最常用的目前,最常用的3 3种动态网页设计语言有种动态网页设计语言有ASPASP(Active Server Active Server PagesPages)、)、JSPJSP(Java Server PagesJava Server Pages)、)、PHP

28、PHP(Hypertext Hypertext PreprocessorPreprocessor)。三者都提供在)。三者都提供在 HTMLHTML代码中混合某种程序代码、由语言代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。引擎解释执行程序代码的能力。 ASPASP是一个是一个WebWeb服务器端的开发环境,利用它可以产生和服务器端的开发环境,利用它可以产生和执行动态的、互动的、高性能的执行动态的、互动的、高性能的WebWeb服务应用程序。服务应用程序。ASPASP支持支持VBScriptVBScript、JScriptJScript等脚本语言。等脚本语言。 JSP JSP是用是用J

29、avaJava语言作为脚本语言的,并可以在语言作为脚本语言的,并可以在ServletServlet和和JavaBeanJavaBean的支持下,完成功能强大的站点程序。的支持下,完成功能强大的站点程序。 PHPPHP是一种跨平台的服务器端的嵌入式脚本语言。它大量是一种跨平台的服务器端的嵌入式脚本语言。它大量地借用地借用C C、JavaJava和和PerlPerl语言的语法,并融合语言的语法,并融合PHPPHP自己的特性,自己的特性,使使WebWeb开发者能够快速地写出动态生成页面。开发者能够快速地写出动态生成页面。 2323 6.2 算法 算法提出算法提出3 3 1 1算法的基本概念算法的基本

30、概念3 3 2 2算法的特征算法的特征3 3 3 3算法的表示方法算法的表示方法3 3 4 4算法的评价算法的评价3 3 5 5算法的应用举例算法的应用举例3 3 6 6数据结构数据结构3 3 7 72424 著名的计算机科学家沃思曾提出:著名的计算机科学家沃思曾提出: 程序程序程序程序 数据结构算法数据结构算法数据结构算法数据结构算法1) 1) 数数据据结结构构:是指程序中要指定数据的类型和数据的 组织形式。2) 2) 算法:算法:是指对数据进行操作的方法和步骤的描述。 但但实实际际上上,一一个个完完整整的的程程序序除除了了以以上上两两个个必必备备要要素素之之外外,还还应应当当采采用用一一定

31、定的的程程序序设设计计方方法法进进行行设设计计,并并用用某某种种计计算算机语言来表示。机语言来表示。 程序程序程序程序= = = =数据结构数据结构数据结构数据结构+ + + +算法算法算法算法+ + + +程序设计方法程序设计方法程序设计方法程序设计方法+ + + +语言工具和环境语言工具和环境语言工具和环境语言工具和环境 其中,其中,算法是程序的核心。算法是程序的核心。6.2 算法 2525 6.2 算法 6.2.1 6.2.1 算法的基本概念算法的基本概念广广义义的的说说,为为解解决决一一个个问问题题而而采采取取的的方方法法和和步步骤骤,就就称称为为“算算法法”。本本书书所所关关心心的的

32、当当然然只只限限于于“计计算算机机算算法法”。所所谓谓的的计计算算机机算算法法就就是是使使用用计计算算机机来来解解决决一一个个问问题题时时所所采采取取的特定的特定方法和步骤。方法和步骤。例例如如,要要求求出出1+2+3+1001+2+3+100的的和和,可可设设计计如如下下的的计计算算机机算算法。法。2626 6.2 算法 6.2.1 6.2.1 算法的基本概念算法的基本概念例例如如,要要求求出出1+2+3+1001+2+3+100的的和和,可可设设计计如如下下的的计计算算机机算算法。法。设设两两个个变变量量:一一个个变变量量sumsum用用来来存存放放求求和和的的结结果果,另另一一个个变量变

33、量i i用来存放每次被加的数值;用来存放每次被加的数值; S1S1:使:使0=sum;0=sum; S2 S2:使:使1=i ;1=i ;S3S3:使:使i i的值的值累加累加累加累加到到sumsum中,即中,即sum+isum+i=sum =sum ;S4S4:使:使i i的值加的值加1 1,i+1=i ;i+1=i ;S5S5:如果:如果i=100,ii , 0=count ;1=i , 0=count ;S2S2:输入:输入nini和和gigi;S3S3:使:使i+1=i ;i+1=i ;S4S4:如果:如果i=100ii ;1=i ; S6 S6:如果:如果gigi = 85, cou

34、nt+1=count = 85, count+1=count,并输出,并输出nini和和gigi; ;S7S7:使:使i+1=i ;i+1=i ;S8S8:如果:如果i=100ii , 0=count1=i , 0=count while i=100 while ii; i+1=i; 1=i; 1=i; while i=100 while i=85 count+1=count , print =85 count+1=count , print nini and and gigi i+1=I i+1=I print count print count /*/*输出统计出的人数输出统计出的人数*

35、*/ / end end /*/*算法结束算法结束* */ / 3939 6.2.6 6.2.6 数据结构数据结构 数据数据是信息的载体,它是计算机程序加工的“原料”。 数据类型数据类型是指具有相同性质的计算机数据的集合,在这个数据集合上可以进行一系列的操作。数据类型可以分为两种类型,一种是原子数据类型,这种类型是由计算机语言提供的,如整数类型、实数类型、字符类型等。例例6-26-2:记录某同学记录某同学大学英语大学英语课程的成绩。课程的成绩。 该问题中涉及的数据就只是一个数值,要用计算机对其该问题中涉及的数据就只是一个数值,要用计算机对其进行表示和处理是比较简单的,用恰当的数据类型来描述就进

36、行表示和处理是比较简单的,用恰当的数据类型来描述就可以了。可以了。 float s;float s; /*/*定义一个实数类型的变量定义一个实数类型的变量, ,用来存储某同学的英语用来存储某同学的英语成绩成绩* */ / s = 74.5;s = 74.5; /*/*把某同学的英语成绩存储到此变量中,就可进行后把某同学的英语成绩存储到此变量中,就可进行后续的处理和操作续的处理和操作* */ /6.2 算法 4040 6.2.6 6.2.6 数据结构数据结构 另一种数据类型是结构数据类型,这种类型是程序设计语言提供的一种描述数据元素间逻辑关系的机制,可由计算机语言提供,也可由用户自己定义。 如例

37、如例6-16-1,统计出公司年度绩效考核分数在,统计出公司年度绩效考核分数在8585分以上的员分以上的员工人数。工人数。 要解决该问题,首先要记录下公司所属要解决该问题,首先要记录下公司所属100100个员工的年度个员工的年度绩效考核分数。这些数据并不是一个简单的数值,而是具备绩效考核分数。这些数据并不是一个简单的数值,而是具备相同数据类型,即实数类型,并且有着顺序逻辑关系的一组相同数据类型,即实数类型,并且有着顺序逻辑关系的一组数据。所以可定义数组这种结构数据类型来存放这组数据。数据。所以可定义数组这种结构数据类型来存放这组数据。 float g100float g100; /*/*定义一个

38、实数类型的数组定义一个实数类型的数组g g,其中有,其中有100100个数组个数组元素,可以用来存储元素,可以用来存储100100个员工的年度绩效考核分数个员工的年度绩效考核分数* */ /6.2 算法 4141 6.2.6 6.2.6 数据结构数据结构 对于复杂的数据,在计算机中不能只用上面提到的一种对于复杂的数据,在计算机中不能只用上面提到的一种简单的数据类型来描述,因为它们除了含有数据本身的一简单的数据类型来描述,因为它们除了含有数据本身的一些属性外,数据间的逻辑关系也非常密切。要想管理好这些属性外,数据间的逻辑关系也非常密切。要想管理好这些数据,就要搞清楚它们之间的逻辑关系,并把这些关

39、系些数据,就要搞清楚它们之间的逻辑关系,并把这些关系恰当地表示出来,这就必然要用到数据结构的概念。恰当地表示出来,这就必然要用到数据结构的概念。 数据结构就是用来描述数据以及数据之间的相数据结构就是用来描述数据以及数据之间的相互关系的。这里的关系,具体地讲就是数据的组织互关系的。这里的关系,具体地讲就是数据的组织形式,关系通常包含如下两个方面的内容:形式,关系通常包含如下两个方面的内容: 数据之间的逻辑关系,即数据的逻辑结构;数据之间的逻辑关系,即数据的逻辑结构; 数据元素及其关系在计算机存储器内的表示,即数数据元素及其关系在计算机存储器内的表示,即数据的存储结构。据的存储结构。6.2 算法

40、4242 6.3 程序设计的步骤 广广义义的的程程序序设设计计并并不不是是简简单单的的编编写写程程序序,它它是是一一个个过过程程,包含了一系列的步骤。包含了一系列的步骤。对对于于一一个个功功能能相相对对简简单单的的计计算算任任务务来来说说,编编写写程程序序的的过过程程就就可可以以称称为为程程序序设设计计。程程序序设设计计的的一一般般步步骤骤如图如图6.86.8所示。所示。 4343 6.3 程序设计的步骤 1. 1. 分析问题分析问题 当当需需要要编编写写一一个个计计算算机机程程序序前前,首首先先要要搞搞清清楚楚为为什什么么要要编编写写这这个个程程序序,这这个个程程序序要要干干什什么么用用,需

41、需要要完完成成什什么么功功能。能。例例6.2 6.2 问问题题描描述述:王王欣欣同同学学毕毕业业后后找找到到一一份份高高薪薪的的工工作作,但但好好像像总总觉觉得得钱钱不不够够花花。于于是是他他决决定定管管理理好好自自己己的的账账目目,以以便便能能够够存存下下一一些些钱钱买买房房子子。首首先先,他他准准备备清清查查一一下下一一年年来来,每每个个月月银银行行的的结结余余是是多多少少,然然后后算算算算平平均均每每个个月月有有多少结余。多少结余。1.1.程程序序名名称称:计计算算月月平平均均结结 余;余;2.2.程程序序目目的的:通通过过计计算算一一年年的的月月平平均均结结余余,来来帮帮助助他他管管理

42、理好自己的账目;好自己的账目;3.3.功功能能要要求求:从从控控制制台台读读入入1212月月的的结结余余,然然后后计计算算平平均均值值并并输输出出。钱钱数数以以元元为为单单位位表表示,精确到分。示,精确到分。 4444 6.3 程序设计的步骤 2. 2.设计算法设计算法 假假设设用用f f变变量量来来存存放放每每个个月月的的的的结结余余,用用sumsum变变量量来来存存放放1212个个月月结结余余的的总总和和,i i变量变量来控制循环。来控制循环。 算算法法的的流流程程图图描描述述如如图图6.96.9所示。所示。 4545 6.3 程序设计的步骤 3. 3. 选择程序设计语言选择程序设计语言

43、一一般般来来说说,不不同同的的语语言言可可以以完完成成同同样样的的任任务务,因因此此选选择择什什么么语语言言都都行行。但但是是,在在实实际际工工作作中中,人人们们往往往往会会综综合合各种要求选择最适合的语言。例如各种要求选择最适合的语言。例如: : 如如果果时时间间紧紧迫迫,可可能能就就会会选选择择开开发发效效率率高高或或自自己己熟熟悉的语言悉的语言( (如如Visual BasicVisual Basic语言语言) ); 如如果果对对程程序序响响应应要要求求高高,可可能能就就会会选选择择运运行行效效率率高高的语言的语言( (如如C C语言语言) ); 如如果果要要求求在在多多种种平平台台上上

44、使使用用,可可能能就就会会选选择择移移植植性性好的语言好的语言( (如如JavaJava语言语言) )。 针对例针对例6.26.2,我们可以,我们可以选择选择C C语言语言作为程序设计语言。作为程序设计语言。4646 6.3 程序设计的步骤 4. 4. 编写程序代码编写程序代码 选选定定程程序序设设计计语语言言后后,就就可可以以以以算算法法为为蓝蓝本本,编编写写程程序代码实现要求的功能。序代码实现要求的功能。 编编写写程程序序代代码码就就是是根根据据所所选选定定的的语语言言所所规规定定的的词词汇汇、语法规则、构词语句来编辑程序。语法规则、构词语句来编辑程序。 编编辑辑程程序序可可以以用用一一般

45、般的的文文字字编编辑辑软软件件,如如记记事事本本、写写字板等。字板等。 但但为为了了提提高高效效率率,人人们们通通常常使使用用软软件件厂厂家家提提供供的的专专门门的的集集成成开开发发环环境境。例例如如,BorlandBorland公公司司的的Turbo Turbo C C 2.0/ 2.0/ Turbo C+ 3.0Turbo C+ 3.0等均可用于编写等均可用于编写C C语言程序。语言程序。 4747 6.3 程序设计的步骤 4. 4. 编写程序代码编写程序代码 #include #include void main() void main() /*/*主函数,每个主函数,每个C C语言程序

46、必须有一个主函数语言程序必须有一个主函数* */ / intint i; i; /*/*定义一个整数类型的变量,用它来控制循环定义一个整数类型的变量,用它来控制循环* */ / float f , sum=0.0 ; float f , sum=0.0 ; /*/*定义两个浮点类型的变量,可以存放定义两个浮点类型的变量,可以存放 带小数点的数值带小数点的数值* */ / for (i=0; i12; i+) for (i=0; imn=m,r=n;r=n;S5S5:重复步骤:重复步骤S2S4,S2S4,直到直到r=0,r=0,此时的此时的n n即为最大公约数;即为最大公约数;LcmLcm函数:

47、函数:最小公倍数最小公倍数 = = 两数乘积两数乘积/ /最大公约数最大公约数5555 6.4 程序设计的方法 6.4.1 6.4.1 结构化程序设计方法及应用举例结构化程序设计方法及应用举例3. 3. 采用三种基本控制结构编写程序采用三种基本控制结构编写程序( (以以C C语言为例语言为例) )#include “#include “stdio.hstdio.h” void main() void main() /*/*主函数:完成输入和输出主函数:完成输入和输出* */ / intint Gcd(intGcd(int, , intint); ); /*/*函数声明函数声明* */ / in

48、tint Lcm(intLcm(int, , intint, , intint); ); /*/*函数声明函数声明* */ / intint m, n, g, l ; m, n, g, l ; scanf(“%dscanf(“%d, %d”, &m, &n); , %d”, &m, &n); /*/*输入两个数分别到输入两个数分别到m m和和n n中中* */ / g= g=Gcd(m,nGcd(m,n); ); /*/*调用调用GcdGcd函数求得函数求得m,nm,n的最大公约数并放入变量的最大公约数并放入变量g g中中* */ / printf(“Greatestprintf(“Great

49、est commancomman denominator is % denominator is %dndn”, g); ”, g); /*/*输出最大公约数输出最大公约数* */ / l= l=Lcm(m,n,gLcm(m,n,g); ); /*/*调用调用LcmLcm函数求得函数求得m,nm,n的最小公约数的最小公约数* */ / printf(“Loweestprintf(“Loweest commancomman multiple is % multiple is %dndn”, l); ”, l); /*/*输出最小公倍数输出最小公倍数* */ 5656 6.4 程序设计的方法 6.

50、4.1 6.4.1 结构化程序设计方法及应用举例结构化程序设计方法及应用举例3. 3. 采用三种基本控制结构编写程序采用三种基本控制结构编写程序( (以以C C语言为例语言为例) )intint Gcd(intGcd(int m, m, intint n) n) /*/*GcdGcd函数:求出两个数的最大公约数函数:求出两个数的最大公约数* */ / intint r , temp; r , temp; if (nm) if (nm) /*/*选择结构选择结构* */ / temp=m; m=n; n=temp; temp=m; m=n; n=temp; /*/*顺序结构,实现两个数交换,确保

51、大的放在变量顺序结构,实现两个数交换,确保大的放在变量m m中中* */ / while (r= while (r=m%nm%n)!=0) )!=0) /*/*循环结构,实现循环结构,实现“辗转相除法辗转相除法”*”*/ / m=n; m=n; n=r; n=r; return n; return n; /*n/*n即为求得的最大公约数即为求得的最大公约数* */ / IntInt Lcm(intLcm(int m, m, intint n, n, intint g) g) /*Lcm/*Lcm函数:求出两个数的最小公倍数函数:求出两个数的最小公倍数* */ / return(mreturn(

52、m* *n/gn/g); ); 5757 6.4 程序设计的方法 6.4.26.4.2 面向对象程序设计方法及应用举例面向对象程序设计方法及应用举例面面向向对对象象的的程程序序设设计计方方法法是是2020世世纪纪8080年年初初提提出出的的,它它的的精精髓髓就就在在于于程程序序的的组组织织与与构构造造。用用结结构构化化程程序序设设计计方方法法解解决决问题,是将问题分解为过程。问题,是将问题分解为过程。而而用用面面向向对对象象的的方方法法解解决决问问题题,是是将将复复杂杂系系统统抽抽象象为为一一个个个个“对对象象”,以以“对对象象”为为思思考考问问题题的的出出发发点点:涉涉及及哪哪个个对对象象的

53、的功功能能,便便由由哪哪个个对对象象自自己己去去处处理理;不不同同对对象象之之间间通通过过消消息息或或事事件件发发生生联联系系;对对象象依依据据接接收收到到的的消消息息或或事事件件进进行工作。行工作。本本节节将将介介绍绍面面向向对对象象程程序序设设计计方方法法中中最最简简单单的的概概念念:对对象象、消息、事件、事件驱动消息、事件、事件驱动等等 。5858 6.4 程序设计的方法 6.4.26.4.2 面向对象程序设计方法及应用举例面向对象程序设计方法及应用举例1. 1.对象对象-什么是对象? 对对象象是是现现实实世世界界中中可可以以独独立立存存在在、可可以以区区分分的的实实体体,也也可可以以是

54、是一一些些概概念念上上的的实实体体。如如一一本本书书、一一个个人人、一一所所学学校校,甚甚至至一一个个地地球球,这这些些都都是是对对象象。还还有有一一些些抽抽象象事事件件,如如一一次演出、一次球赛、一次借书等也都可以看作是对象。次演出、一次球赛、一次借书等也都可以看作是对象。-如何描述对象呢?如何描述对象呢? 对象名对象名:每个对象应该有一个名字以区别于其他对象;:每个对象应该有一个名字以区别于其他对象; 属性:属性:是用一组状态来描述的对象的某些特征;是用一组状态来描述的对象的某些特征; 方方法法:是是对对对对象象属属性性的的各各种种操操作作,每每一一个个操操作作决决定定对对象象的一种功能或

55、行为。的一种功能或行为。 5959 6.4 程序设计的方法 6.4.26.4.2 面向对象程序设计方法及应用举例面向对象程序设计方法及应用举例1. 1.对象对象 例例如如,“王王宇宇”和和“演演唱唱会会”是是两两个个不不同同的的对对象象,可可以如表以如表 6.16.1这样来描述它们。这样来描述它们。 对象名对象名王宇王宇演唱会演唱会属属 性性性别:男性别:男身高:身高:1.72体重:体重:65kg演出时间:演出时间:2009-8-7演出地点:体育中心演出地点:体育中心演员人数:演员人数:32方方 法法回答身高回答身高回答体重回答体重回答性别回答性别回答演出时间回答演出时间回答演出地点回答演出地

56、点回答演员人数回答演员人数修改演出时间、地点、人数修改演出时间、地点、人数6060 6.4 程序设计的方法 6.4.26.4.2 面向对象程序设计方法及应用举例面向对象程序设计方法及应用举例2. 2.消息消息 在在面面向向对对象象的的系系统统中中,对对象象与与对对象象之之间间并并不不是是彼彼此此孤孤立立的的,它它们们之之间间存存在在着着联联系系。对对象象之之间间的的联联系系是是通通过过消消息息来来传递的传递的。 假假设设“王王宇宇”想想参参加加“演演唱唱会会”,但但不不清清楚楚演演唱唱会会的的具具体体时时间间。那那么么“王王宇宇”就就可可以以问问“演演唱唱会会”。这这种种“问问”可可以以认认为

57、为是是“王王宇宇”向向“演演唱唱会会”发发出出一一个个消消息息。“演演唱唱会会”在在收收到到消消息息后后,会会执执行行“回回答答演演出出时时间间”这这个个方方法法来做出相应回答。来做出相应回答。 当当一一个个对对象象需需要要其其他他对对象象为为其其服服务务时时,便便可可向向那那个个对对象象发发出出请请求求服服务务的的消消息息。收收到到消消息息的的对对象象会会根根据据这这个个消消息息执行相应的功能。执行相应的功能。 6161 6.4 程序设计的方法 6.4.26.4.2 面向对象程序设计方法及应用举例面向对象程序设计方法及应用举例3.3.事件事件 那那么么,什什么么是是事事件件呢呢?所所谓谓事事

58、件件就就是是一一些些能能够够激激活活对对象功能的动作。象功能的动作。 例例如如,在在学学校校,上上课课的的“铃铃声声响响起起”是是一一个个事事件件,老老师师听听到到铃铃声声就就要要准准备备开开始始讲讲课课。有有同同学学“举举手手”也也是是一一个个事事件,老师看到举手就会请同学起立发言。件,老师看到举手就会请同学起立发言。 可见,不同的事件往往引发对象不同的动作。可见,不同的事件往往引发对象不同的动作。 把把日日常常生生活活中中的的事事件件概概念念引引入入计计算算机机,不不难难理理解解用用户户按按键键、单单击击鼠鼠标标、打打开开文文件件、关关闭闭文文件件等等都都是是发发生生在在计计算算机机上上的

59、的事事件件。这这些些事事件件体体现现了了人人与与机机器器之之间间的的联联系系,计计算算机依据用户产生的这些事件执行相应的程序。机依据用户产生的这些事件执行相应的程序。 6262 6.4 程序设计的方法 6.4.26.4.2 面向对象程序设计方法及应用举例面向对象程序设计方法及应用举例4. 4.事件驱动事件驱动 在在传传统统的的面面向向过过程程的的应应用用程程序序中中,代代码码的的执执行行总总是是从从第第一一行行开开始始,随随着着程程序序流流程程执执行行代代码码的的不不同同部部分分。程程序序执执行行的的先先后后次次序序由由设设计计人人员员编编写写的的代代码码决决定定,用用户户无无法法改改变变程程

60、序的执行流程。序的执行流程。 而而在在面面向向对对象象的的程程序序设设计计中中,程程序序是是由由若若干干个个规规模模较较小小的的事事件件过过程程组组成成。当当程程序序处处于于运运行行状状态态时时,特特定定事事件件的的发生将引发对象执行相应的事件过程。发生将引发对象执行相应的事件过程。 例例如如,用用户户单单击击一一个个按按钮钮时时,可可能能引引发发一一段段程程序序的的执执行行;当用户关闭文件时,可能又引发另外一段处理程序执行。当用户关闭文件时,可能又引发另外一段处理程序执行。 6363 6.4 程序设计的方法 6.4.26.4.2 面向对象程序设计方法及应用举例面向对象程序设计方法及应用举例4

61、. 4.事件驱动事件驱动 例例如如,下下面面这这段段VBVB程程序序代代码码就就只只有有当当用用户户用用鼠鼠标标单单击击(Click)(Click)命命令令按按钮钮(Command1)(Command1)时时才才会会被被执执行行,这这就就所所谓谓的的事事件驱动机制件驱动机制 。Private Sub Command1_Click() Dim m As Integer, n As Integer Dim t As Integer m = Val(Text1.Text) n = Val(Text2.Text) End Sub6464 6.4 程序设计的方法 6.4.26.4.2 面向对象程序设计方

62、法及应用举例面向对象程序设计方法及应用举例 目目前前,这这种种“对对象象消消息息”的的面面向向对对象象的的程程序序设设计计模模式式有有取取代代传传统统的的“数数据据结结构构算算法法”的的面面向向过过程程的的程程序序设设计模式的趋向。计模式的趋向。 当当然然,面面向向对对象象的的程程序序设设计计并并不不是是要要抛抛弃弃结结构构化化程程序序设设计计方方法法,而而是是站站在在比比结结构构化化程程序序设设计计更更高高、更更抽抽象象的的层层次上解决问题。次上解决问题。 当当所所要要解解决决的的问问题题被被分分解解为为低低级级代代码码模模块块时时,仍仍需需要要结结构构化化编编程程的的方方法法和和技技巧巧,

63、但但是是,面面向向对对象象的的程程序序设设计计模模式式在在分分解解一一个个大大问问题题为为小小问问题题时时采采取取的的思思路路与与结结构构化化方方法法是完全不同的。是完全不同的。 6565 6.4 程序设计的方法 6.4.26.4.2 面向对象程序设计方法及应用举例面向对象程序设计方法及应用举例 采采用用面面向向对对象象技技术术的的开开发发过过程程一一般般分分为为面面向向对对象象分分析析( ( Object Object Oriented Oriented Analyzing, Analyzing, OOAOOA) )、 面面 向向 对对 象象 设设 计计(Object (Object Ori

64、ented Oriented Designing, Designing, OODOOD) )和和 面面 向向 对对 象象 编编 程程(Object Oriented Programming, (Object Oriented Programming, OOPOOP) )三个阶段三个阶段。6666 6.4 程序设计的方法 6.4.26.4.2 面向对象程序设计方法及应用举例面向对象程序设计方法及应用举例 面面向向对对象象分分析析(OOA):(OOA):是是一一种种软软件件开开发发过过程程分分析析的的方方法法学学。当当使使用用OOAOOA的的时时候候,必必须须把把软软件件开开发发过过程程中中的的每

65、每样样东东西西都都想想成成类类。从从类类中中建建立立的的每每个个新新的的个个体体称称为为类类的的一一个个实实例例。OOAOOA的过程主要关心怎样导出系统需要的类。的过程主要关心怎样导出系统需要的类。 面面向向对对象象设设计计(OOD)(OOD)阶阶段段的的焦焦点点是是软软件件系系统统的的“如如何何/ /怎怎样样”的的问问题题。设设计计阶阶段段的的典典型型问问题题包包括括“这这个个类类如如何何收收集数据集数据”、“这个类如何计算这个类如何计算”以及这个类如何打印报表。以及这个类如何打印报表。 面面向向对对象象的的编编程程(OOP)(OOP)是是采采用用面面向向对对象象的的语语言言具具体体实实现现

66、 OODOOD的的设设计计。在在WindowsWindows环环境境下下常常用用的的面面向向对对象象的的程程序序设设计计语语言言有有:C+C+、JavaJava、Visual Visual BasicBasic等等。虽虽然然它它们们风风格格各各异异,但都具有共同的思维和编程模式。但都具有共同的思维和编程模式。 6767 6.4 程序设计的方法 6.4.26.4.2 面向对象程序设计方法及应用举例面向对象程序设计方法及应用举例下面结合一个例子,简单说明在实际应用中如何使用面向下面结合一个例子,简单说明在实际应用中如何使用面向 对象的程序设计方法进行程序设计。对象的程序设计方法进行程序设计。例例6

67、.4 6.4 用用面面向向对对象象程程序序设设计计方方法法编编程程实实现现:输输入入两个正整数,求出它们的的最大公约数和最小公倍数两个正整数,求出它们的的最大公约数和最小公倍数。 这这个个简简单单问问题题的的编编程程( (以以Visual Visual BasicBasic为为例例) )可可分分两两步步进行。进行。 (1 1)界面设计)界面设计 (2 2)代码编写)代码编写 6868 6.4 程序设计的方法 6.4.26.4.2 面向对象程序设计方法及应用举例面向对象程序设计方法及应用举例(1 1)界面设计)界面设计6969 6.4 程序设计的方法 6.4.26.4.2 面向对象程序设计方法及

68、应用举例面向对象程序设计方法及应用举例(2 2)代码编写)代码编写Private Sub Command1_Click() Dim m As Integer, n As Integer 定义定义m, nm, n为整数类型的变量为整数类型的变量 Dim t As Integer, r As Integer m = Val(Text1.Text) 把把Text1Text1文本框输入的内容转换为数值文本框输入的内容转换为数值 后存入变量后存入变量m m中中 n = Val(Text2.Text) 把把Text2Text2文本框输入的内容转换为数值文本框输入的内容转换为数值 后存入变量后存入变量n n

69、中中 If m n Then 若若mnmn,则交换两个变量的值,确保较,则交换两个变量的值,确保较 大的值存入大的值存入m m中中 t = m m = n n =tEnd If7070 6.4 程序设计的方法 6.4.26.4.2 面向对象程序设计方法及应用举例面向对象程序设计方法及应用举例(2 2)代码编写)代码编写 t = m * n t = m * n 计算计算m m和和n n的乘积并存入变量的乘积并存入变量t t中中 r = m Mod n r = m Mod n 计算计算m m整除整除n n的余数并存入变量的余数并存入变量r r中中 Do While r 0 Do While r 0 “辗转相除辗转相除”求最大公约数求最大公约数 m = n: n = r: r = m Mod nm = n: n = r: r = m Mod n Loop Loop Text3.Text = nText3.Text = n 把求得的最大公约数把求得的最大公约数n n用用Text3Text3这个这个 文本框输出文本框输出 Text4.Text = t / nText4.Text = t / n 把求得的最小公倍数用把求得的最小公倍数用Text4Text4这个这个 文本框输出文本框输出End Sub End Sub 7171 7272

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号