第10章 程序设计基础_第1页
第10章 程序设计基础_第2页
第10章 程序设计基础_第3页
第10章 程序设计基础_第4页
第10章 程序设计基础_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

第10章程序设计基础1本章教学目的: 了解程序设计的基本概念、思想和方法,为今后更好地学习程序设计语言打好基础。2本章教学内容:程序设计语言概述2.程序:程序的类型及程序的执行方式。3.软件工程:目前软件开发和维护的方法。4.软件生命周期:软件开发的具体步骤。310.1程序设计语言概述软件是程序、数据及相关文档的集合,是用户与硬件之间的接口。任何以计算机为处理工具的任务都是对处理对象和处理规则的完整描述,称为程序。4机器语言是计算机硬件系统能唯一识别并执行的语言,计算机指令。计算机指令是硬件唯一能识别的、实现计算机基本功能的二进制编码,是指挥计算机工作的基本命令。计算机指令是计算机执行命令的最小功能单位,是软件与硬件的接口。

5一般来说,指令由操作码和操作数两部分组成:操作码用于指明操作,不同指令具有不同的操作码。操作数可以是要操作的数据(称为立即数),也可以是存放操作数的内存单元地址或寄存器地址等。操作码操作数62.指令系统指令系统:一台计算机中全部指令的集合构成指令系统。一台计算机的指令系统决定了它的基本性能,现代计算机一般都有几十条到上百条指令。7早期计算机,从简化计算机硬件结构和降低成本考虑,指令系统都比较简单,指令条数少、功能弱。为增加计算机功能及缩小指令系统与高级程序设计语言之间的差异,人们研制了复杂指令系统计算机(CISC,ComplexInstructionSetComputer)。CISC计算机指令条数多达二三百条,能直接处理多种数据类型。8RISC,ReducedInstructionSetComputer,指令系统具有指令少、功能简单、指令执行时间短等特点,RISC成为计算机设计的主流。9101110000000100000000000

000001010000011100000000计算A=8+7机器语言为:汇编语言为:MOVAX,8ADDAX,7;将8存入累加器A中;7与累加器A中的内容相加,;结果仍存放在A中10.1.2汇编语言10汇编语言:指令由英文单词或缩写构成,用符号和十进制数代替机器语言中的二进制编码,便于人们记忆和书写。11计算机程序设计语言总体上可以分为低级语言和高级语言两大类,低级语言是指机器语言和汇编语言;低级语言的低级并不是说语言的功能性差,而是指与计算机硬件密切相关,编写程序难度较大。机器语言和汇编语言都与计算机类型有关;汇编语言一般用于编制系统软件和过程控制软件1210.1.3结构化程序设计语言20世纪50年代后期,出现了许多脱离具体计算机硬件结构的程序设计语言,人们称之为高级程序设计语言或结构化程序设计语言。例如Basic、FORTRAN,Pascal等。例如,计算A=8+7并输出结果的BASIC语言程序段如下:

A=8+7 PrintA13结构化程序设计语言:脱离具体计算机硬件结构的程序设计语言。程序设计的核心是数据结构和算法;通过数据结构定义数据的存储形式;通过算法研究如何用快捷、高效的方法来组织解决问题的具体过程。

14结构化程序设计语言将注意力从机器转移到问题本身,它致力于用计算机能理解的逻辑来描述解决问题的具体方法和步骤。151.结构化程序设计语言的基本特征:程序内部结构化:程序由顺序、选择(分支)和重复(循环)3种结构组成。程序模块化:一个大程序由若干个功能独立的、相互关联的程序模块(子程序、函数等)组成。程序模块之间通过调用关系完成程序的整体功能。可移植性好:即为一类计算机设计的程序,经少量改动后可以在另一类计算机上运行。与低级语言相比,结构化程序具有较好的移植性。16具有代表性的结构化程序设计语言:FORTRAN语言:是FormulaTranslator的缩写,在工程、数学和科学研究上是使用最广泛的语言,尤其是在科学计算中发挥着极其重要的作用。Pascal语言:作为一门实用程序设计语言和教学工具,Pascal语言在高校计算机软件教学中一直处于主导地位。

C语言:适合于系统描述,可以用于编写系统和应用软件。1710.1.4面向对象的程序设计语言ObjectOrientedProgramming,OOP早在20世纪60年代在实验室中就提出了面向对象方法,最早的面向对象软件是1966年开发的SimulaⅠ它首次提出模拟人类思维方式,将数据和相关操作集成在一起。使得数据和处理数据的方法融为一体,更方便处理现实世界中复杂的事物。18面向对象的程序设计语言:对象:是程序中最基本的运行实体,一个程序由若干个对象组成,各个对象既相互独立,又通过消息相互联系。类:是具有相同特征对象的抽象,是创建对象的模板

192.可视化程序设计在可视化程序设计中,

属性、事件和方法是用于控制和管理对象的3个要素。属性:用于描述对象的特征。事件:是对象响应某种操作时的一种反映机制,是响应某种操作的程序代码入口。方法:一种子程序,调用时依附于对象,运行时执行相关的操作,也称之为对象函数。20具有代表性的面向对象程序设计语言:

C++语言:在C语言基础上增加了面向对象的支持,基本兼容C语言程序。其特点是既支持结构化程序设计方法,又支持面向对象程序设计方法,因此,也称之为混合型语言。

Delphi语言:是在Pascal基础上开发出来的可视化程序设计语言,是真正的面向对象编程语言,执行效率高,具有强大的数据库管理功能,是开发中小型数据库软件的理想编程工具。

Java语言:Java也是一种跨平台的程序设计语言,适合开发基于网络、多媒体、与平台无关的应用程序,应用程序可以在网络上传输,并可以运行在任何计算机上。21网页设计语言:通过网络浏览器浏览的网页可分为动态网页、静态网页两种。标记语言主要用于设计静态网页,利用标记标注信息的类型和位置。HTML脚本语言是介于HTML和编程语言之间的一种语言,主要用于设计动态网页。VBScriptJava22在计算机中,通常将结构化程序设计语言和面向对象程序设计语言统称为高级程序设计语言,简称高级语言。2310.2程序任何以计算机为处理工具的任务都是对处理对象和规则的完整描述,这种描述称为程序。程序是用计算机语言设计的,为完成某一任务、按一定顺序编排的指令序列。

要使程序起作用,必须将其装入到内存中执行,程序的实际工作过程称为执行或运行。24

在屏幕上显示字符串“HelloWorld”DSEG SEGMENTSTRING DB‘HelloWorld’,0DH,OAH,’$’;定义缓冲区

DSEG ENDSCSEG SEGMENT ASSUMECS:CSEG,DS:DSEGSTART: MOVAX,DSEG MOVDS,AX LEADX,STRING MOVAH,09H INT21H MOVAH,4CH INT21HCSEG ENDS ENDSTART25【例8.1】计算阶乘的C语言程序JSJC.C。Longfun(Intx) /*函数fun,用来计算x的阶乘*/{LongResult=1; /*result是变量,用来保存计算结果*/

IntI; /*i为循环控制变量*/

For(i=2;i<=x;i++) /*循环控制语句,用于实现语句的多次执行*/Result=Result*i; /*循环体,实现计算*/Returnresult; /*返回语句,将计算结果提交给调用者*/}Main() /*C语言主程序*/{

Inti=1; /*i为循环控制变量*/Longs; /*s是变量,保存计算结果*/

While(i!=0) /*循环语句,用于实现多次计算*/{

Printf("PleaseInputI(I=0Over):");/*输入数据提示*/

Scanf(“%d”,&i); /*输入数据语句,输入数据保存在变量i中*/

If(i==0) /*分支语句,用于输入数据判断*/Exit(0); /*输入i值为0,调用函数exit结束程序*/Else /*分支否定条件,当输入i值不为零时*/If(i<0||i>10) /*判断输入数据范围*/{Printf(“Datamustbewteen1and10.\n”); /*数据超界,提示合理范围*/Continue; /*回到循环开始位置,继续判断循环条件*/}s=fun(i); /*调用函数fun计算i阶乘,结果存于变量s中*/

Printf("%d!=%ld\n",I,s); /*在屏幕上输出计算结果*

}}26DimaAsIntegerDimbAsIntegerPrivateSubCommand1_Click()k=InStr(a,Text2,Text1)Ifk>0ThenCommand1.Caption="查找下一个"a=k+Len(Text1)Text2.SetFocusText2.SelStart=k-1Text2.SelLength=Len(Text1)b=b+1Else

MsgBox"查找完毕!共找到"&b&"个"&Text1Command1.Caption="查找“

a=1EndIf'PrintkEndSub27根据程序所处的开发阶段或运行方式的不同,程序主要有源程序、可执行程序和动态链接库3种类型。人们将利用程序设计语言设计的内容称为源程序。将保存这些内容的文件称为源程序文件。28可执行程序是由源程序翻译(编译)生成的、真实的机器语言程序。在Windows中,最常用的可执行程序文件扩展名为EXE和COM。29动态链接库是由源程序生成的机器语言程序的另一种形式,主要作为可执行程序的辅助文件,不能独立运行。主要作用:(1)提供应用程序接口(API),User32.dll(2)程序动态加载305.源程序的翻译方式:编译方式:通过程序设计语言提供的编译器或生成工具,系统自动对整个源程序逐句进行词法分析、语法分析并翻译成机器语言指令。解释方式:在程序设计语言环境中直接运行源程序,在执行每条语句前,系统先分析语句的词法和语法,若语句正确,则生成并执行机器语言指令,直到程序运行结束。3110.3软件工程基础软件工程是将系统的、规范的、可度量的方法应用于软件开发和维护整体过程的一门科学,用数学、计算机科学和管理科学的原理,借助传统工程科学的原则和方法创建与维护软件,从而达到提高软件质量、降低软件成本的目的。软件工程学出现的目的是为缓解软件危机。32软件工程的诞生背景程序设计时代:用机器语言和汇编语言进行程序设计的时代。软件开发主要是个体手工劳动,完全依赖程序设计者的个人技能,不重视程序设计方法。

程序系统时代:高级程序设计语言出现后,提出了结构化程序设计的方法,并成为软件开发的主要工具,称此阶段为程序系统时代。

33供需矛盾;开发成本和时间失控;质量难以保障;维护困难。主要表现

:软件危机是泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

软件发展速度落后于硬件发展水平,人们对软件的需求得不到满足。管理人员缺少开发软件的经验,需求描述不准确,而开发人员又缺少管理经验,二者之间缺乏交流工具,过分依赖开发人员在软件开发过程中的技巧和创造力,因此,很难开发出高质量的实用软件。由于缺乏软件开发规范和技术文档,人们很难阅读和修改其他人开发的软件,使软件维护、移植和升级困难,导致软件重复开发问题严重,软件复用性降低。

34软件工程主要包括软件开发技术和软件工程管理。

软件工程是一门交叉科学,包含方法、工具和过程3个要素。35软件工程包括三个要素:方法、工具和过程。

1.方法:完成软件工程项目的技术手段,如支持项目计划和估算、系统和软件需求分析、软件设计、编码、测试和维护。

2.工具:支持软件的开发和管理,支持各种软件文档的生成。人们将用于软件开发的软、硬件工具和软件工程数据库集成在一起,建立了集成软件工程环境;

3.过程:支持软件开发各个环节的控制、管理。36软件工程的基本目标是付出较低的开发成本,达到要求的软件功能;按时完成开发任务,及时交付使用;开发出来的软件具有良好的稳定性、可靠性、适应性和可操作性,易于移植和维护。

37在软件开发过程中,必须遵循抽象性、信息隐藏性、模块化、局部化、一致性、完整性和可验证性等原则。抽取事物最基本的特性和行为,忽略某些无关紧要的细节。

模块化是程序中逻辑上相对独立的成分,是功能相对独立的程序单位(VB语言中的子程序、窗体等),具有良好的接口定义(如子程序的形式参数、对象的事件等)。隐藏信息模块的实现细节(如子程序实现代码、对象的构造代码等),通过模块接口实现操作,将注意力集中在更高层次的对象上。一个模块的功能尽量独立和完整,不受其他模块运行的干扰,其他模块只能通过接口与之建立联系。在一个软件系统的各个模块中,使用规范、统一的符号和术语;模块内外接口一致;系统规格说明书与软件系统的行为一致等。

软件系统不丢失任何重要成分,完全实现系统所需要的功能。

开发大型软件系统需要逐步分解,系统分解应遵循系统容易检查、测试和评审的原则,以保证系统的可验证性。

3810.4软件生命周期软件产品从形成概念开始,经过开发、使用和维护,直到最后退役的全过程称为软件的生命周期。39在“计算机软件开发规范”的国家标准中,将软件生存周期划分为可行性研究、需求分析、概要设计、详细设计、代码实现、软件测试、使用与维护7个阶段,在每个阶段中都明确规定了任务、实施方法、步骤和完成标志等,并要求产生相关的文档。40软件定义阶段:1.可行性研究:也称软件计划或策划阶段

。此阶段主要对待开发系统涉及到的经费、软/硬件技术、效益和法律等方面的问题进行可行性论证,制定系统开发任务的实施计划。

2.需求分析:需求是用户对目标软件系统在功能、行为、性能和约束等方面的要求或期望。需求分析是对应用问题及其环境的理解与分析,为应用问题涉及的事物、功能及系统行为建立模型,将需求精确化和完整化,最终形成需求规格说明书。

41需求分析的主要工作:获取资料系统分析员与用户进行业务交流和探讨,理解需求,澄清模糊的概念,对有争议的业务环节达成共识等。资料分析

系统分析员对收集的资料进行综合分析和总结,确认业务范围和处理细节,规划业务流程,排除不合理的需求,确定应用问题的解决方案、目标系统的功能模块以及数据模型(如E–R图形),建立各功能模块之间的关联等。42形成需求规格说明书

需求分析的成果是需求规格说明书,通常包括数据描述、功能描述和性能描述等信息。它是待开发软件系统的预期目标,同时作为系统功能测试、评估和验收的依据。需求评审对需求规格说明书进行审核,验证文档的一致性、完整性、正确性、可行性和有效性。43软件开发阶段:3.概要设计:也称结构设计或总体设计,根据需求确定软件和数据的总体框架。数据结构设计:也称数据对象设计,主要任务是依据需求分析的数据模型,结合程序中涉及的算法,设计数据文件的逻辑结构。软件结构设计:按自顶向下、逐步求精和模块化的设计原则,将一个软件分解和规划成若干个模块,确定各模块之间的关联信息。

概要文档:概要设计说明书、数据结构或数据库设计说明书和软件集成调试计划等。

44软件开发阶段3.概要设计:也称结构设计或总体设计,根据需求确定软件和数据的总体框架。数据结构设计:也称数据对象设计,主要任务是依据需求分析的数据模型,结合程序中涉及的算法,设计数据文件的逻辑结构。软件结构设计:按自顶向下、逐步求精和模块化的设计原则,将一个软件分解和规划成若干个模块,确定各模块之间的关联信息。

概要文档:概要设计说明书、数据结构或数据库设计说明书和软件集成调试计划等。

45软件开发阶段4.详细设计:主要任务是设计软件功能结构图中每个最低层模块的局部算法(如数据排序、查找、统计等算法)和数据结构(如需要的变量、数组等),确定每个模块调用和数据传输接口(如参数、函数返回值、存储数据的文件或表名等)。描述算法的常用工具有伪代码(ProcedureDesignLanguage,PDL)、程序流程图和N–S图等,设计成果是详细设计说明书。46软件开发阶段5.编码实现:需要选择一种程序设计语言,进入程序设计阶段。通常利用菜单或窗口结合工具栏设计软件功能结构图的总体框架,依据详细设计中的算法和数据结构设计每个功能模块的程序代码,设计成果是源程序。47软件开发阶段6.软件测试:是对需求规格说明书、概要设计说明书及程序代码等内容的最后复审。软件质量保证贯穿于软件开发的整个过程,其中关键步骤是软件测试;软件测试目的是在软件产品交付使用之前尽可能发现潜在的错误;软件测试主要检测和更正语义和功能错误

。48软件开发阶段软件测试的方法:静态测试:不需要运行软件,由人工直接进行阅读和检查源程序,包括代码检查、静态结构分析和代码质量度量等。动态测试:是基于计算机的测试,通过运行软件发现错误。这种方法需要测试人员根据软件开发规格说明和程序内部结构精心地设计测试用例,通过输入数据和预期的输出结果发现软件中的错误

温馨提示

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

评论

0/150

提交评论