程序设计语言与程序设计方法.ppt
第第1章章 程序设计语言程序设计语言与程序设计方法与程序设计方法 制作者:钱瑛制作者:钱瑛本章的学习重点和难点本章的学习重点和难点程序设计的基本概念程序设计的基本概念 算法的概念和描述算法的概念和描述 结构化程序设计方法结构化程序设计方法 面向对象的程序设计概念和方法面向对象的程序设计概念和方法 1.1 程序设计语言简介程序设计语言简介 语言语言机器语言机器语言汇编语言汇编语言高级语言高级语言程序程序一个程序是完成某一一个程序是完成某一特定任务的一组指令特定任务的一组指令序列,或者说,为实序列,或者说,为实现某一算法的指令序现某一算法的指令序列称为列称为“程序程序”程序设计程序设计使用某种计算机语言,使用某种计算机语言,按照某种算法,编写按照某种算法,编写程序的活动程序的活动程序程序=数据结构数据结构+算法算法程序程序=算法算法+数据结构数据结构+程序设计方法程序设计方法+语言工语言工具和环境具和环境 1.2 算法及其描述算法及其描述 1.2.1 算法的概念算法的概念 算法算法算法算法解决某个问题或处理某件事的方法和步骤,解决某个问题或处理某件事的方法和步骤,在这儿所讲的算法是专指在这儿所讲的算法是专指用计算机解决某一问题的用计算机解决某一问题的方法和步骤方法和步骤 计算机算法的分类计算机算法的分类数值计算算法数值计算算法 非数值计算算法非数值计算算法1.2.2 算法举例算法举例 例题例题1-1 例题例题1-2例题例题1-3 例题例题1-1有两个杯子有两个杯子A和和B,分别盛放茶和咖啡,要求将杯分别盛放茶和咖啡,要求将杯中的饮料互换,即中的饮料互换,即A中盛放咖啡,中盛放咖啡,B中盛放茶中盛放茶 增加一个空杯增加一个空杯C作为过渡作为过渡算法可以表示为:算法可以表示为:步骤步骤1:先将:先将A杯中的茶倒入杯中的茶倒入C杯中杯中步骤步骤2:再将:再将B杯中的咖啡倒入杯中的咖啡倒入A杯中杯中步骤步骤3:最后将:最后将C杯中的茶倒入杯中的茶倒入B杯中杯中ACB茶茶茶茶咖啡咖啡咖啡咖啡茶茶该算法常常被用于实现该算法常常被用于实现两个数据内容的互换两个数据内容的互换两个数据内容的互换两个数据内容的互换(1)AC(2)BA(3)CB例题例题1-2求两个数求两个数A、B中的最大数中的最大数 算法可以表示为:算法可以表示为:步骤步骤1:将数将数A、B进行比较,如果进行比较,如果A大于大于B,则转向步则转向步骤骤2,否则转向步骤,否则转向步骤3。步骤步骤2:A是最大数是最大数 步骤步骤3:B是最大数是最大数 常常通过比较求最值或进行排序常常通过比较求最值或进行排序例题例题1-3求求n!分析:分析:如果如果n=4,则则4!=1*2*3*4,所以可以先假设,所以可以先假设S代表累乘之积,代表累乘之积,I代表累乘项代表累乘项算法可以表示为:算法可以表示为:步骤步骤1:S=1,I=1步骤步骤2:如果:如果In,则执行步骤则执行步骤3,否则停止,否则停止,S中的值中的值即为所求的即为所求的n!步骤步骤3:将:将S与与I的乘积存入的乘积存入S中中步骤步骤4:使:使I增增1,转向执行步骤,转向执行步骤21.2 算法及其描述算法及其描述 1.2.3 算法的特征算法的特征 有穷性有穷性确定性确定性 有零个或多个输入有零个或多个输入 有一个或多个输出有一个或多个输出 有效性有效性1.2.4 1.2.4 算法的表示算法的表示自然语言自然语言伪代码伪代码流程图流程图流程图流程图 图形符号图形符号 名称名称 输入输入/输出输出 处理处理 判断判断 起止起止 特定过程特定过程 流程线流程线 连接点连接点 例题例题1-4A和和B数据互换数据互换增加一个增加一个C作为过渡作为过渡算法可以表示为:算法可以表示为:步骤步骤1:AC步骤步骤2:BA步骤步骤3:CB开始开始结束结束输入数据输入数据输入数据输入数据A A、B B输出数据输出数据输出数据输出数据A A、B BACBACB例题例题1-5求两个数求两个数A、B中的最大数中的最大数 算法可以表示为:算法可以表示为:步骤步骤1:将数将数A、B进行比较,进行比较,如果如果A大于大于B,则转向步骤则转向步骤2,否则转向步骤,否则转向步骤3。步骤步骤2:A是最大数是最大数 步骤步骤3:B是最大数是最大数开始开始结束结束输入数据输入数据A、B输出最大数输出最大数MAXAMAXABABBMAXTrueFalse判断框判断框判断框判断框例题例题1-6求求n!算法可以表示为:算法可以表示为:步骤步骤1:S=1,I=1步骤步骤2:如果:如果In,则执行步骤则执行步骤3,否则停止,否则停止,S中的值即为所求中的值即为所求的的n!步骤步骤3:将:将S与与I的乘积存入的乘积存入S中中步骤步骤4:使:使I增增1,转向执行步骤,转向执行步骤2S*IS开始开始结束结束FalseTrue1S1IInIn输出输出n!的值的值SI+1I输入输入n例题例题1-5求两个数求两个数A、B中的最大数中的最大数 算法可以表示为:算法可以表示为:步骤步骤1:将数将数A、B进行比较,如果进行比较,如果A大于大于B,则转向步骤则转向步骤2,否则转向,否则转向步骤步骤3。步骤步骤2:A是最大数是最大数 步骤步骤3:B是最大数是最大数Private Sub main()Dim A As Integer,B As Integer,max As Integer 变量定义变量定义A=InputBox(Please input number A:)输入变量输入变量AB=InputBox(Please input number B:)输入变量输入变量BIf A B Then比较比较A与与Bmax=AElsemax=BEnd IfDebug.Print max打印最大值打印最大值End SubFalseTrue开始开始结束结束输入数据输入数据A、B输出最大数输出最大数MAXAMAXBMAXAB小结小结算法是解决问题的核心内容算法是解决问题的核心内容学会使用流程图来表示的算法,逻辑清楚,形象直学会使用流程图来表示的算法,逻辑清楚,形象直观,容易理解观,容易理解掌握相应语言掌握相应语言(如如VB)的组成要素及编写方法,容易的组成要素及编写方法,容易能编写出对应程序能编写出对应程序1.3 结构化程序设计结构化程序设计 1.3.1 基本算法结构基本算法结构结构化程序设计方法结构化程序设计方法算法的三种基本结构算法的三种基本结构顺序结构顺序结构顺序结构顺序结构分支结构分支结构分支结构分支结构循环结构循环结构循环结构循环结构任何一个程序都是这三种基本控制结构的组合任何一个程序都是这三种基本控制结构的组合三种基本结构的共同特点三种基本结构的共同特点只有单一的入口和单一的出口只有单一的入口和单一的出口结构中的每个部分都有执行到的可能结构中的每个部分都有执行到的可能结构内不存在永不终止的死循环结构内不存在永不终止的死循环 顺序结构顺序结构每个处理步骤每个处理步骤(A和和B)顺序执行顺序执行顺序执行顺序执行 A AB BN N分支结构分支结构e为判决条件为判决条件进入分支结构,首先判断进入分支结构,首先判断e成立与否,再根据判断成立与否,再根据判断结果,选择执行处理结果,选择执行处理A或或者处理者处理B后退出后退出 A Ae eTrueFalseB Be eTrueFalseA AB Be eTrueFalse循环结构循环结构当型循环当型循环当型循环当型循环“当当”条件条件e成立成立(即为即为True),就继续执行就继续执行A;否则否则(即条件为即条件为False)就结束循环。就结束循环。直到型循环直到型循环直到型循环直到型循环重复执行重复执行A,“直到直到”条件条件e成立成立(即为即为True),循环结束循环结束循环结构中的处理循环结构中的处理A A是要重复执行的操作,叫做是要重复执行的操作,叫做“循环体循环体循环体循环体”;e e是是控制循环执行的条件控制循环执行的条件A Ae eTrueFalsee eA AFalseTrue1.3 结构化程序设计结构化程序设计 1.3.2 结构化程序设计方法结构化程序设计方法 自顶向下自顶向下逐步细化(核心)逐步细化(核心)逐步细化(核心)逐步细化(核心)模块化模块化应用举例应用举例例题例题1-7例题例题1-7对于对于100个正整数,输出其中的个正整数,输出其中的回文数回文数(所谓回文数是指左右数所谓回文数是指左右数字完全对称的自然数。例如:字完全对称的自然数。例如:11,121,1221等都是回文数等都是回文数)自顶向下、模块化:自顶向下、模块化:(1)输入输入100个正整数个正整数(2)把其中的回文数找出把其中的回文数找出来来(3)输出这些回文数输出这些回文数逐步细化逐步细化逐步细化逐步细化分别对于每一部分分别对于每一部分进一步细化进一步细化找出找出回文数回文数输入输入100个正整数个正整数输出回文数输出回文数开始开始结束结束(1)输入)输入100个正整数个正整数考虑通过考虑通过a1a100来接收来接收这这100个数据个数据从第从第1个数据开始直到第个数据开始直到第100个个TrueFalsei100输入输入ai1ii+1i(2)找出回文数)找出回文数对于对于a1a100中每一个数逐中每一个数逐一判断,若判断它不是回一判断,若判断它不是回文数,则将它的值置为零,文数,则将它的值置为零,这样最后留下的非零数,这样最后留下的非零数,即为回文数即为回文数那么如何判断是否为回文那么如何判断是否为回文数呢?于是进一步细化,数呢?于是进一步细化,将将ai逆序得到逆序得到x,若,若ai等于等于x,则说明它是回文数则说明它是回文数 Truei100将将ai逆序逆序xFalse1i0aiaixTruei+1iFalse(3)输出回文数)输出回文数根据第二部分,只要对根据第二部分,只要对于于a1a100中每一个数中每一个数逐一判断逐一判断ai不等于零不等于零(它是回文数它是回文数),即可输,即可输出出ai 输出回文数输出回文数aiai0i100False1iTruei+1iFalseTrue1.4 面向对象的概念和方法面向对象的概念和方法 1.4.1 面向对象的概念面向对象的概念“面向对象程序设计面向对象程序设计”或或“面向对象编程面向对象编程”简称为简称为OOP(Object Oriented Programming)建立在传统结构化程序设计的基础上,其最重要的建立在传统结构化程序设计的基础上,其最重要的特色是特色是程序围绕被操作的对象来设计程序围绕被操作的对象来设计程序围绕被操作的对象来设计程序围绕被操作的对象来设计,而不是围绕,而不是围绕操作本身操作本身模块化模块化Visual Basic是一种采用面向对象的程序设计方法的是一种采用面向对象的程序设计方法的语言语言重要术语:重要术语:对象对象 (对象对象)类类 属性属性 方法方法 事件事件 事件驱动事件驱动对象对象动作体的逻辑模型动作体的逻辑模型,称为,称为“对象对象”对象经常被用来模拟现实世界中的某个具体的对象经常被用来模拟现实世界中的某个具体的实体实体实体实体,例如,你正在读的这本书是一个对象、你手中的这例如,你正在读的这本书是一个对象、你手中的这支笔是一个对象、你在大街上看到的某辆汽车也是支笔是一个对象、你在大街上看到的某辆汽车也是一个对象一个对象在在Visual Basic中,对象就是你可控制的某种东西,中,对象就是你可控制的某种东西,应用程序的每个应用程序的每个窗体窗体窗体窗体和窗体上的种种和窗体上的种种(界面元素界面元素)控控控控件件件件都是都是VB的对象的对象实例演示实例演示(对象对象)类类 类是对象的正式的抽象定义类是对象的正式的抽象定义类是对象的正式的抽象定义类是对象的正式的抽象定义,是将某些对象的共性,是将某些对象的共性的特征的特征(属性和方法等属性和方法等)抽取出来,形成一个关于这抽取出来,形成一个关于这些对象集合的抽象模型些对象集合的抽象模型对象与类之间的关系对象与类之间的关系对象是具有指定属性和方法的类的实例对象是具有指定属性和方法的类的实例对象是具有指定属性和方法的类的实例对象是具有指定属性和方法的类的实例由类得到对象的过程称为类的实例化由类得到对象的过程称为类的实例化实例演示实例演示属性属性 对象类定义了类的一般属性对象类定义了类的一般属性“属性属性”是对是对对象特性的描述对象特性的描述对象特性的描述对象特性的描述VB为每一类对象都规定了若干属性。对象除了继为每一类对象都规定了若干属性。对象除了继承对象类规定的各种属性承对象类规定的各种属性(这称为继承性这称为继承性)之外,还之外,还具有它的特殊属性具有它的特殊属性 实例演示实例演示方法方法 “方法方法”指的是指的是对象自身可以进行的动作或行为对象自身可以进行的动作或行为对象自身可以进行的动作或行为对象自身可以进行的动作或行为它实际上是对象本身所内含的一些特殊的函数或过它实际上是对象本身所内含的一些特殊的函数或过程,在面向对象的程序设计过程中,可以通过程,在面向对象的程序设计过程中,可以通过调用调用对象的方法实现该对象的动作及行为对象的方法实现该对象的动作及行为VB程序中每个窗体或控件对象,也具有改变其行程序中每个窗体或控件对象,也具有改变其行为或实现某个特定动作为或实现某个特定动作(操作操作)的方法。象窗体,就的方法。象窗体,就可被可被“显示显示”或被或被“隐藏隐藏”等等。显示等等。显示(show)和隐和隐藏藏(hide)都是控制窗体对象的方法都是控制窗体对象的方法 实例演示实例演示事件事件所谓所谓“事件事件”,就是,就是预先设置好的、能够被对象识预先设置好的、能够被对象识预先设置好的、能够被对象识预先设置好的、能够被对象识别的动作;它往往能使某个对象进入活动状态别的动作;它往往能使某个对象进入活动状态别的动作;它往往能使某个对象进入活动状态别的动作;它往往能使某个对象进入活动状态(又又又又称激活称激活称激活称激活),并体现了对象对于外部操作或动作响应,并体现了对象对于外部操作或动作响应,并体现了对象对于外部操作或动作响应,并体现了对象对于外部操作或动作响应的能力的能力的能力的能力只要程序设计者为某个对象在某个事件发生时,规只要程序设计者为某个对象在某个事件发生时,规定了具体操作,那么该对象响应识别了该事件后,定了具体操作,那么该对象响应识别了该事件后,就会按照规定的操作执行就会按照规定的操作执行用一个用一个“事件事件”激活某个对象,随着该对象的活动,激活某个对象,随着该对象的活动,会引发新的会引发新的“事件事件”,这个事件又可能使另一个,这个事件又可能使另一个“对象对象”激活,对象之间就是以这种方式联系在一起激活,对象之间就是以这种方式联系在一起的的 实例演示实例演示概念理解概念理解有一个红色、充满氢气的气球,如果人不小心松开有一个红色、充满氢气的气球,如果人不小心松开手抓的引线,就会飞走;如果用针刺它,则会爆破。手抓的引线,就会飞走;如果用针刺它,则会爆破。请问,对于气球对象,什么是属性、什么是事件、请问,对于气球对象,什么是属性、什么是事件、什么是方法?什么是方法?气球(气球(对象对象)颜色、充满氢气颜色、充满氢气描述对象的性质描述对象的性质属性属性飞走、爆炸飞走、爆炸对象自身的动作对象自身的动作方法方法方法方法松开引线、用针刺穿松开引线、用针刺穿对象对外部刺激的响应对象对外部刺激的响应事件事件事件事件概念理解概念理解一只漂亮的酒杯被摔碎了,则漂亮,酒杯,摔,碎一只漂亮的酒杯被摔碎了,则漂亮,酒杯,摔,碎了是了是什么?什么?一只白色的足球被踢进球门,则白色、足球、踢、一只白色的足球被踢进球门,则白色、足球、踢、进球门是进球门是什么?什么?属性、对象、事件、方法属性、对象、事件、方法作业作业事件驱动事件驱动传统的程序设计传统的程序设计面向过程,按规定流程,执行面向过程,按规定流程,执行过程中不可改变过程中不可改变事件驱动事件驱动由用户的动作掌握程序运行的流向由用户的动作掌握程序运行的流向由用户的动作掌握程序运行的流向由用户的动作掌握程序运行的流向Windows程序的事件或消息驱动方式工作模式程序的事件或消息驱动方式工作模式各个对象的动作以及各个对象之间的关联,完全取各个对象的动作以及各个对象之间的关联,完全取决于操作者所做的操作。即程序的运行,并没有固决于操作者所做的操作。即程序的运行,并没有固定的顺序,是通过事件驱动的,定的顺序,是通过事件驱动的,当在该对象上响应当在该对象上响应了某个用户或系统触发的事件后,就执行一个事先了某个用户或系统触发的事件后,就执行一个事先为该对象事件编写好的事件过程为该对象事件编写好的事件过程,当没有事件发生,当没有事件发生时,整个程序就处于等待状态时,整个程序就处于等待状态实例演示实例演示事件驱动事件驱动事件驱动方式的应用程序的设计原理事件驱动方式的应用程序的设计原理VB是是Windows环境下运行的一种语言,使用环境下运行的一种语言,使用VB不不仅可以非常便捷地设计出仅可以非常便捷地设计出Windows应用程序的窗口应用程序的窗口界面,设置界面中各种对象的属性,而且可以通过界面,设置界面中各种对象的属性,而且可以通过编写程序代码段为对象规定在被某个编写程序代码段为对象规定在被某个“事件事件”激活激活时应发生的各种动作以及所要进行的信息处理的具时应发生的各种动作以及所要进行的信息处理的具体内容,这样的代码段称为体内容,这样的代码段称为“过程过程”。为各个对象。为各个对象编写的过程集合在一起,就构成一个完整的应用程编写的过程集合在一起,就构成一个完整的应用程序序实例演示实例演示1.4 面向对象的概念和方法面向对象的概念和方法 1.4.2 面向对象工程化设计方法面向对象工程化设计方法系统调查和需求分析系统调查和需求分析 面向对象分析面向对象分析 面向对象设计面向对象设计面向对象实现面向对象实现 1.5 程序设计的步骤程序设计的步骤以以“对象对象”为中心的,重点考虑围绕这个对象的功为中心的,重点考虑围绕这个对象的功能编写能编写根据实际问题,采用逐步求精的方法分析问题,将根据实际问题,采用逐步求精的方法分析问题,将问题细化为若干子模块问题细化为若干子模块对每一个子模块进一步细化,设计好相应的算法解对每一个子模块进一步细化,设计好相应的算法解决决考虑程序界面,围绕界面上的对象,并结合每个子考虑程序界面,围绕界面上的对象,并结合每个子模块的算法,考虑在哪个对象的适合的事件过程中模块的算法,考虑在哪个对象的适合的事件过程中编写相应的过程代码编写相应的过程代码最后运行和调试程序,通过测试,直至满足问题的最后运行和调试程序,通过测试,直至满足问题的要求为止要求为止实例演示实例演示习题习题1.8含羞草是生长在阳光充足的草地上的一种低矮草本含羞草是生长在阳光充足的草地上的一种低矮草本植物,大约在盛夏以后开花,粉红色构成绒球状;植物,大约在盛夏以后开花,粉红色构成绒球状;含羞草生性敏感,当你一摸它,它的叶片就一片片含羞草生性敏感,当你一摸它,它的叶片就一片片的闭合起来,甚至连同枝干也收缩垂下的闭合起来,甚至连同枝干也收缩垂下 属性:属性:低矮草本植物、粉红色绒球状花低矮草本植物、粉红色绒球状花方法:生长、开花、叶片闭合、枝干收缩垂下方法:生长、开花、叶片闭合、枝干收缩垂下事件:触摸事件:触摸习题习题1.5(1)根据三边,求三角形的根据三边,求三角形的周长周长和和和和面积面积周长周长L=a+b+c面积面积S=p=(a+b+c)/2数据数据a、b、c能否构成能否构成三角形三边?三角形三边?两边之和大于第三边两边之和大于第三边:a+b c and b+c a and a+c b输出输出错误错误信息信息FalseTrue开始开始结束结束输入输入a、b、c输出周长输出周长L、面积面积Sa+b+c La+b cb+c aa+c bL/2 P习题习题1.5(2)判断用户的输入的一个整数是判断用户的输入的一个整数是奇数还是偶数奇数还是偶数奇数还是偶数?奇数还是偶数?如一个数能被如一个数能被2整除(余数为整除(余数为0),),则为偶数,否则为奇数则为偶数,否则为奇数FalseTrue开始开始结束结束输入整数输入整数a输出输出a是偶数是偶数a mod 2=0输出输出a是奇数是奇数习题习题1.5(3)求解一元二次方程求解一元二次方程axax2 2+bx+c=0+bx+c=0根根=b2-4acFalseTrue开始开始结束结束输入一元二次方程输入一元二次方程的系数的系数a、b、c输出实根输出实根x0输出虚根输出虚根x=b2-4ac习题习题1.5(4)找出找出1010个数据的最大数个数据的最大数先将该组数据中的第先将该组数据中的第一个数作为最大值的一个数作为最大值的初值初值然后依次将这组数据然后依次将这组数据中的其他数据与最大中的其他数据与最大值进行比较,若有大值进行比较,若有大于最大值的情况,则于最大值的情况,则将该数替换目前的最将该数替换目前的最大值,否则继续取下大值,否则继续取下一个数与最大值进行一个数与最大值进行比较比较 FalseTrue开始开始结束结束输入输入10个数据个数据存入存入a1a10i10输出输出MaxMaxa1Max aiMaxaiii+1TrueFalse习题习题1.5(5)将将2020个考生成绩中不及个考生成绩中不及格者的分数打印出来格者的分数打印出来依次对依次对2020个考生成绩个考生成绩进行是否进行是否6060的判断的判断,若小于若小于60,60,则输出该成则输出该成绩绩 FalseTrue开始开始结束结束输入输入20个成绩个成绩存入存入a1a10i=20i 1ai 60输出输出aiii+1FalseTrue习题习题1.5(6)求求S=1+2+3+4+100n!=1*2*3*4*n步骤步骤1:S=0,I=1步骤步骤2:如果:如果I100,则执行步骤则执行步骤3,否则停止,否则停止,S中的值即为所求中的值即为所求步骤步骤3:将:将S与与I的乘积存入的乘积存入S中中步骤步骤4:使:使I增增1,转向执行步骤,转向执行步骤2S*IS开始开始结束结束FalseTrue0S1III100100输出求和结果输出求和结果SI+1I