第15章程序设计基础.ppt
《第15章程序设计基础.ppt》由会员分享,可在线阅读,更多相关《第15章程序设计基础.ppt(55页珍藏版)》请在三一办公上搜索。
1、第15章 程序设计基础,【本章概述】本章介绍了计算机程序设计的基础概念,包括程序设计语言、算法、程序结构、程序设计的基本方法、程序调试以及选择编程语言等。通过本章的学习,使读者初步建立起程序设计的基本概念,理解程序设计的基本方法,为今后系统地学习程序课程打下良好的基础。,15.1 程序设计语言概述,15.1.1 程序设计语言的发展 几个主要阶段:1第一代语言 2第二代语言 3第三代语言 4第四代语言 5第五代语言,15.1.2 程序设计语言的组成 每一种程序设计语言都有规定的词汇,词汇集由标识符、保留字、特殊字符、数值等组成。当我们学习每一种程序设计语言时,应该注意它的语法和语义。语法 表示语
2、言的各个构成记号之间的组合规则。语义 表示的含义。,4种表示成分:数据、运算、控制和传输。1数据 描述程序所涉及的数据对象。在程序运行过程中,其值不变的数据称为“常量”,其值可以改变的数据称为“变量”;另外,有些可以不加任何说明就能引用的运算过程,称为“标准函数”,其函数值可以像常量或变量一样参加运算;由常量、变量、函数、运算符和圆括号组成的式子称为“表达式”,它在程序中代表一个值。程序设计语言所提供的数据结构是以数据类型的形式表现的,程序中的每一个数据都属于某一种数据类型(整型、实型、字符型等)。,2运算 描述程序中应该执行的数据操作。在程序中的运算一般都包括算术运算(加+、减-、乘*、除/
3、、乘方)、关系运算(大于、小于=、小于等于)和逻辑运算(与AND、或OR、非NOT)。,3控制 描述程序的操作流程控制结构。在程序中只要有3种形式的流程控制结构(即顺序结构、选择结构、循环结构),就足以表示出各种各样复杂的算法过程,这已从理论上得到证明。,4传输 表达程序中数据的输入和输出。任一种程序设计语言都包含有编制程序所必需的最基本的语句,这些语句分别是赋值语句、输入/输出语句、选择或条件语句、转移语句、循环语句。,15.1.3 语言翻译器,1.解释器 有些语言使用解释方式的语言翻译器,如BASIC、APL、Java等。我们称之解释式程序设计语言,其翻译器称为“解释器”(Interpre
4、ter)。解释器的工作方式是对你的源程序代码每转换一行,就执行一行。由于这种方式一次解释一行,执行一行,解释结果并不保留,以后再次执行该程序之前,仍需同样的解释。比如有这样一个含有循环结构的QBASIC程序片段:For I=l TO 100 PRINT“I=”;I NEXT I 在100次的运行中就被翻译了100次,显然做了一些重复的工作。因此这种方式下程序执行的速度慢。,2.编译器 编译器(Compiler),是指在编译过程中将你的高级语言源程序所有代码经过“编译器”转换为计算机能识别的目标程序代码。使用编译器时,如果程序有错误,必须在编译成功之前改正所有的错误。如FORTRAN、PASCA
5、L、C等语言都是这种编译型的程序设计语言。,15.2 程序和程序设计,15.2.1 过程程序设计 早期,人们把程序看作是处理数据的一系列过程(Procedure)。一个过程或函数(Function)是指一组特定的一个接一个顺序执行的指令,它们完成某一专门任务或计算出一个结果值。数据与过程是分离的,其程序设计的技巧主要是在处理过程之间的调用及完成任务或计算的算法,关心的是数据的变化。过程程序设计的关键是程序设计语言所提供的子程序及参数传递形式。从程序组织的角度来看,子程序是用于有组织地管理大量算法的有力工具 程序=算法+数据结构(包含数据和数据类型),15.2.2 模块程序设计 随着软件的发展,
6、考虑到程序的可重复使用,人们越来越注重于系统整体关系和对数据的组织,他们把数据与操作数据的相关过程称为模块(Module),程序是根据模块的需要来划分,并使数据隐藏在模块中,其程序设计的技巧主要是模块中过程的设计,在模块中既包含具体问题的数据,又包含这些数据上的操作。由于模块程序设计是把算法和数据结构(数据和数据类型)看作一个独立功能模块,程序就被描述为:程序=(算法+数据结构),15.2.3 面向对象程序设计 我们现在使用计算机的方式是利用按钮、菜单或窗口,通过选择后触发计算机去执行某一事件动作,这种编程方法称为“事件驱动”,是一种交互性很强的编程方法。面向对象程序设计可以满足上述的需求,它
7、能实现软件组件的可重用性,并把数据和操作数据的过程结合起来作为一个整体“对象”(Object),其程序设计的技巧是以“类”(Class)作为构造程序的基本单位,它具有封装、抽象、继承、多态性等特点。由于在面向对象中,算法与数据结构被结合在一起成为一个类,问题世界本身就是一个对象世界,任何对象都具有一定的属性与操作,所以,程序又被描述为:对象=(算法+数据结构)程序=(对象+对象+),15.2.4 程序设计的方法(1)分析问题:首先是明确要解决什么问题,确定所需的输入、处理和输出对象,把解题过程归纳为一系列的数学步骤,建立各种量之间的关系,即建立数学模型。(2)算法设计。对所确定的解题模型提出解
8、决的方法和步骤,选择适当的计算方法加以实现。算法设计过程中还要考虑数据的组织形式,即数据结构。(3)画出流程图。流程图是描述算法的常用工具,可以作为编写程序的依据来使用。,(4)编写程序。在确定算法和画出流程图后,用选定的程序设计语言编程。(5)程序调试。用测试数据对编好的程序上机调试,分析所得的运行结果,特别要注意程序中的逻辑错误。反复调试,直到运行结果正确。(6)文档整理。在程序设计的各个步骤中,都要注意建立文档资料,内容包括任务要求、算法、流程图、程序清单、输入/输出数据的内容及格式、出错处理方法等。在程序设计完成时,文档资料应全部建立完毕。文档也是软件的一个组成部分。,15.2.5 程
9、序的调试与运行 程序中出现的错误可以分为三类:编译错误运行时错误逻辑错误,1编译错误。编译错误是由结构不正确的代码造成的。如果键入了一个拼写错误的关键词,遗漏了某个必需的标点符号,或使用FOR语句时丢失了与之匹配的NEXT语句等。这类错误编译系统会做出提示,指出错误所在的行号,以便我们在调试时及时发现并改正。这类错误初学习编程者容易出现。,2运行错误 当一条语句试图执行一个不可能执行的操作时,会发生运行错误。最常见的运行错误便是除数为0错误。如程序中含有A=B/C这样的语句。但如果在运行时,变量C的值可能为0,则该除法是一个无效的运算,而语句本身是正确的,并且变量C的值如果不是0的情况下程序是
10、会得到正确结果的。另外,还有诸如求平方根函数的参数为负数等,这样一类错误,只有在程序运行时才能发现。,3逻辑错误 当应用程序没有按预定的方式运行,则发生的是逻辑错误。一个应用程序在句法上代码有效,运行时无任何无效的操作,即未发生以上两类错误,但得不到正确的运行结果。比如,在编写求球体积的程序中,使用的数学公式为4/3*3.14159*r*r,显然正确的球体积公式应该是4/3*3.14159*r*r*r。编译系统在编译时是不能查出此类错误的,因此,这类错误具有更大的隐蔽性,只有通过已知结果的数据进行运行测试并分析后,才能发现和改正。这类错误的排除难度更大,很大程度上需要的是程序调试者的经验和耐心
11、。,15.3 算法,15.3.1 问题描述 问题描述就是要说明一些能用来解决问题的要素。一个表达清晰的问题描述就具备以下三个特征:(1)能说明描述问题的任何假设。(2)列出所有的已知条件。(3)具体说明需要解决什么问题。,15.3.2 算法设计 算法是解决实际问题的方法,然而实际问题的解决往往会有多种方法,不同的方法也可能得到不同的结果。算法设计就是寻找一种适合的算法,那么什么是适合的算法呢?算法应具有以下特点:(1)有限性。任何一个算法应该经过有限多个操作步骤得出结果。(2)可行性。有限多个步骤应该在一个合理的范围内,且有限的时间内能够完成。(3)确定性。算法的每一步骤应该有明确的含义,无二
12、义性。(4)输入/输出。一个算法可以定义若干个输入和输出。,算法可分为两大类:数值运算算法和非数值运算方法。数值运算算法的目的是求数值解,例如,求解一元二次方程的根所用的求解算法等。而非数值运算算法,不一定有确定的数学公式,其对应的数据模型种类繁多,可以是表、树、图等。,15.3.3 算法表示下面介绍几种常用的算法表示方法。1.自然语言 2.流程图法 3.伪代码法,1.自然语言 自然语言描述法,它是用一种接近人类语言的方法来描述算法的,它能把算法正确地表达出来,而不涉及到具体的语法细节。但它是不能被计算机识别的,需要细化后再转化为程序代码,才能为计算机所执行。例如,在计算机上计算数学、语文、英
13、语三科的平均分。其过程用自然语言描述如下:第1步:输入数学成绩X、语文成绩Y、英语成绩Z;第2步:计算三科总分Total,Total=X+Y+Z;第3步:计算平均分Average,Average=Total/3;第4步:输出平均分Average的值。,2.流程图法 流程图(Flowchar)描述了计算机程序的输入、处理、输出模型的中间框图,它描述的是计算机如何一步一步地去完成指定的任务。,3.伪代码法 采用类似于某一种高级语言代码来描述算法,这种表示方法虽然不能为计算机所识别,但它稍加修改就能马上成为可执行的计算机程序。例如,求解一元二次方程ax2+bx+c=0两个实根的算法。由于该问题有现成
14、的数学公式,我们可以直接依据数学公式来设计此算法。用伪代码法算法描述如下:,Input a,b,c/输入a,b,c的值;d=b2-4*a*c/计算b2-4ac的值;IF(d=0)then x1=(-b+sqr(b2-4*a*c)/(2*a)x2=(-b-sqr(b2-4*a*c)/(2*a)/判断b2-4ac=0?若是,则计算两个实根;Else x1=(-b+sqr(4*a*c-b2)/(2*a)x2=(-b-sqr(4*a*c-b2)/(2*a)Endif,15.3.4 常用的几种算法 1.计数器 2.累加器 3.交换变量的值,15.4 程序结构,15.4.1 顺序结构 顺序结构(Seque
15、nce Structure),就是计算机按照程序中语句的书写先后顺序,逐一执行每一条语句。整个顺序结构只有一个入口和一个出口。其结构如图15-5所示。如下面一个QBASIC程序片段即是顺序结构:PRINT“R1,R2,R3,R4,U=?”INPUT R1,R2,R3,R4,U LET I=(R1+R2+R3+R4)*U PRINT“I=”;I END,15.4.2 选择结构,选择结构是用IF语句来实现的。如QBASIC的IF语句为:IF(条件)THEN 语句1ElSE 语句2 END IF 如下面一个QBASIC程序片段即是选择结构:IF ab THENmax=aELSE max=b END
16、IF,15.4.3 循环结构 循环结构(Loop Structure)又称重复控制结构或迭代结构。它可以使计算机反复多次执行同一段程序(循环体),节省代码,直到循环条件不满足时结束。其结构如图15-8所示。在高级程序设计语言中,基本的循环结构语句有while语句(当型循环)、do-while语句(直到型循环)和for语句(次数循环)。另外,goto语句和标号语句的联合使用也能实现循环。如下面给出的是QBASIC语言中用for循环结构求1-100之和的程序:SUM=0 FOR I=1 TO 100SUM=SUM+I NEXT I PRINT SUM,15.4.4 子程序和函数 所谓子程序,就是将
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 15 章程 设计 基础
链接地址:https://www.31ppt.com/p-2901819.html