高中信息技术算法与程序设计_第1页
高中信息技术算法与程序设计_第2页
高中信息技术算法与程序设计_第3页
高中信息技术算法与程序设计_第4页
高中信息技术算法与程序设计_第5页
已阅读5页,还剩187页未读, 继续免费阅读

下载本文档

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

文档简介

高中信息技术算法与程序设计无论使用人工解题还是使用计算机解题,都必须在正确理解题意地基础上寻找或设计正确的解题方法。使用人工解题最后需验算,而使用计算机解题则不需要。1.1.1从问题到算法问题:在一次班级联欢会上,同学们玩了一个猜商品价格的游戏。A同学出示一件商品,价格在1~1000元之间,价格为整数,要求B同学猜价格。B同学每猜一个价格,A同学需要回答猜对了,或猜大了,还是猜小了。要求B同学尽可能快地猜出商品的价格。【方法1】:B同学从1、2、3、……依次猜测商品的价格,直到猜对为止。【方法2】:B同学先从1~1000的中间数500开始猜,根据A同学的回答决定下一个要猜测的价格,如果A回答“猜大了”,则在1~499之间取中间数进行猜测;否则,取501~1000的中间数进行猜测,如此反复,直到猜对为止。21.1.2计算机与程序

看似无所不能的计算机,迄今为止也只能按照设计好的程序,一步步地进行运算处理。事实上,要使用计算机来解决问题,人们必须事先设计好解决问题的计算机程序。没有计算机程序,就不可能用计算机来解决问题。

计算机程序就是指示计算机如何去解决问题或完成任务的一组可执行的指令。 程序设计就是寻求解决问题的方法,并将其实现步骤编写成计算机可以执行的程序的过程。3计算机是一种按照设计好的程序,快速、自动地进行计算的电子设备。计算机开始计算之前,必须把解决某个问题地程序存储在计算机内存中。程序由指令部分和数据部分组成。指令部分由一系列指令构成,每条指令都是要求计算机执行地一个动作。由适当的指令构成一个序列,描述了解决这个问题的计算过程。数据部分用来存储计算过程中所需的原始数据、计算的中间结果和最终结果。指令就是用来规定计算机操作的命令。计算机的所有指令组成了计算机的指令集。一般而言,计算机的指令越丰富,功能也就越强大。4计算机指令的种类

输入通过输入设备,程序接收外界输入的数据,将数据存储到指定的变量中;输出把文字、变量中存储的数据或计算产生的结果,通过输出设备显示或打印出来;数学运算进行+、-、×、÷、平方、开平方、求余数等数学运算。通常,计算所需的的数据从变量中获得,计算的结果可以存储到指定的变量中。逻辑判断可以对指定的两个数据进行大小或相等性(>、<、≥、≤、≠、=)比较,比较的结果为逻辑值(真或假),也使用逻辑运算(如与、或、非),把若干个较简单的判断连接起来,成为一个复杂的判断。控制转移指令用来改变程序中指令的执行顺序。5现在由计算机来扮演A同学的角色,计算机应该按照下述过程进行工作:计算机得到B同学所猜的价格计算机对得到价格与实际价格进行比较,告诉B同学比较的结果(猜小了、猜大了、猜对了)计算机根据比较的结果决定是否继续猜测。使用计算机解决问题一般要经历以下三个阶段:分析问题并确定要计算机做什么寻找解决问题的途径和方法开始用计算机进行处理分析问题设计算法编写程序运行程序问题解决猜大了或是猜小了,则继续猜测猜对了则停止猜测,游戏结束6设计程序时需考虑的问题数据的存储:计算所需的原始数据、计算产生的中间结果、计算的最终结果需要存储在变量中。计算的过程:首先确定解决问题的方法;然后必须将该方法步骤化,即用计算机可以执行的步骤(指令),来描述问题的计算过程,这意味着程序的计算过程不仅必须指出动作,而且必须指出动作的次序。7输出指令输入指令逻辑判断指令控制转移指令8大家学习辛苦了,还是要坚持继续保持安静9变量的概念与用途程序中的变量是计算过程中要用到的数据的存储单元;通过输入指令的执行,程序将外界输入的数据存储到指定的变量中,程序计算的结果也可以存储到指定的变量中;一旦将数据存储到某个变量中,只要我们不再把新的数据存储到其中,那么在程序运行过程中,该变量将永久保存着原来的数据;在计算过程中如果要使用到该变量中的数据,我们可以从该变量中读取出其中的数据,这种读取是不会改变变量中存储的内容的。10指令区数据区图中的每行代表了内存中的一个存储单元,每个存储单元可以存放一条指令或一个数据。每个存储单元都有唯一的编号,称为地址。指令是依次逐条执行的,如果遇到转移指令,会按指令要求选择下一条要执行的指令。遇到结束指令,整个程序终止运行。11输入价格:500375250500250375猜大了!输入价格:猜小了!输入价格:猜对了!37512输入价格:1375212375猜小了!输入价格:猜小了!输入价格:猜对了!375...131.3算法的概念算法是在有限步骤内求解某一个问题所使用的具有精确定义的一系列操作规则。每条规则都必须是确定的、能行的、不能有二义性的。算法要有一个清晰的起始步骤,且每一个步骤都只能有一个确定的后继步骤,从而组成一个有限步骤序列。步骤终止时也给出了问题的解答。解决问题的过程就是实现算法的过程。算法是程序设计的“灵魂”,算法+数据结构=程序。算法独立于任何具体程序设计语言,一个算法可以用多种程序设计语言实现。1、算法的概念2、算法的特点(1)有穷性一个算法必须保证它的执行步骤是有限的,即它是能够终止的,操作步骤不能无限。算法可以有重复执行的步骤,只要这些步骤的执行能够终止。广义地说,“有穷性”是指操作步骤的数目或完成操作的时间在合理的范围内,如果一个算法虽然在操作步骤的数目是有限的,但它所花费的时间超过了合理的限度,这种算法并不是有效的算法。14(3)可行性算法中的每一个步骤都要是实际能做的,而且必须在有限的时间内可以完成。例如:步骤“输出:L/d”在d=0的情况下就不可以做。(4)有0个或多个输入所谓输入就是指算法在执行时要从外界获得数据,其目的是为算法建立某些初始状态;如果建立初始状态所需的信息已经包含算法中,那就不需要输入了。(5)有一个或多个输出算法的目的是用来求解问题,问题的结果应以一定的方式输出,以便用户知道。在数学中的”无解“对于算法来说也是一个输出,没有输出的算法是毫无意义的。(2)确定性算法的每个步骤必须有确切的含义,而不应当是含糊的、模棱两可的。例如:步骤“输出:L/正整数”是无法执行的,因为没有指定L除以哪一个正整数,这个步骤是不确定的。问题:步骤“输入一个正整数”是否是确定的?151.3算法的表示我们可以采用多种方法来描述一个算法,流程图是一种比较直观易用的、用图形来描述算法的方法。用流程图来描述算法要遵循一定的标准,这套标准中最常用的符号有:处理框输入、输出框判断框流程线开始、结束符在一般情况下,输入、输出框可以用处理框代替。开始结束开始结束16开始T>S结束显示:“输入价格:”输入价格到变量TT<S显示:“猜小了!”显示:“猜大了!”显示:“猜对了!”YYNN判断框表示条件判断:取出变量T、S中的数据,若T<S条件成立,则沿着标有Y(Yes)的有向线段,执行该有向线段所指向的指令(显示“猜小了!”);否则,则沿着标有N(No)的有向线段,执行该有向线段所指向的指令(判断条件T>S是否成立)。

17想一想[问题1]:键盘输入两个数,输出两个数的和与积?

(1)需要输入哪些数据?(2)需要计算机输出什么信息?(3)如何根据输入数据得到要输出的信息

?需要输入两个不同的数需要计算机输出两数的和与积

分别存入变量a、b中

两数之和存入变量sum中计算a+b,将结果存放在变量sum中;计算a×b,将结果存放在变量s中。最后输出sum、s。

两数之积存入变量s中18键盘输入两个不同的数,分别存入变量a、b中。计算a+b,将结果存放在变量sum中;计算a×b,将结果存放在变量s中。输出sum、s算法分析流程图描述开始输入a、b输出sum、ssum←a+bs←a×b结束顺序模式的特点:按照顺序一步一步执行。表示先计算a+b的值,然后将计算的结果存入变量sum中。“←”称为赋值符,它的计算过程是:先计算符号右侧的代数式的结果,然后将计算结果存储到符号左侧的变量中。19想一想[问题2]:键盘输入两个不同的数,存入不同的变量中,交换两变量中的数值并输出?

(1)需要输入哪些数据?(2)需要计算机输出什么信息?(3)如何根据输入数据得到要输出的信息

?需要输入两个不同的数需要计算机输出交换位置后的两个变量分别存入变量a、b中

将变量a的值存入变量b中;将变量b的值存入变量a中。最后输出变量a、b。

将变量a的值存入变量T中;将变量b的值存入变量a中。将变量T的值存入变量b中最后输出变量a、b。

20键盘输入两个不同的数,分别存入变量a、b中。输出变量a、b算法分析流程图描述开始输入变量a、b输出变量a、bT←aa←bb←T结束b←aa←b将变量a的值存入变量T中;将变量b的值存入变量a中。将变量T的值存入变量b中21【例1】已知矩形的长和宽,求矩形的面积。求矩形面积的方法是:矩形面积=长×宽。如果设计的程序只能计算固定的长和宽,那么,这个程序就没有什么实用性了。用变量a、b、s分别代表矩形的长、宽、面积,则s的值应该是a×b的计算结果。程序的执行流程应该是:输入两个数值给a、b通过计算a×b,将结果给变量s输出变量s的值开始输入长到变量a输入宽到变量b计算:s←a×b输出面积:s结束表示先计算a×b的值,然后将计算的结果存入变量s中。“←”称为赋值符,它的计算过程是:先计算符号右侧的代数式的结果,然后将计算结果存储到符号左侧的变量中。221.3.3算法的执行流程算法的执行流程,是指算法中各个处理步骤的执行次序和模式。通常需要如下三种不同的执行流程:1.顺序模式:执行完一个处理步骤step1后,接着执行下一个处理步骤step2。开始输入变量a、b输出变量a、bT←aa←bb←T结束b←aa←b23想一想【问题1】:该怎样过马路?

应观察交通信号灯并判断:红灯停;绿灯行。

信号灯是否为红灯?等待信号灯变为绿灯YN过马路24情况e为真?step1step2YN情况e为真?就是对某个条件进行判断,具体在判断框中用关系表达式或逻辑表达式来表达。

x>y?x>0且y>0?选择模式是先对某个情况e进行判断,当结果为真时,执行处理步骤step1,

否则执行处理步骤step2

。例如:选择模式可以使算法根据情况的不同,在两个预定的处理步骤中,选择执行其中一个处理步骤。

“预定的处理步骤”可以是一系列操作,亦可以是无操作。

当两个“预定的处理步骤”中有一个是无操作时,我们称其为单分支结构,如果均有操作,我们称其为双分支结构。判断条件“x大于y”判断条件“x、y均为正数”25想一想[问题2]:比较两个不同数的大小关系,输出其中较大的那个数?

(1)需要输入哪些数据?(2)需要计算机输出什么信息?(3)如何根据输入数据得到要输出的信息

?需要输入两个不同的数需要计算机输出两数中较大的数

分别存入变量a、b中

存入变量max中判断条件“a>b”

,若条件成立(情况为真),则max←a;否则(情况为假)max←b。最后输出max。

26键盘输入两个不同的数,分别存入变量a、b中。判断条件“a>b”,若条件成立(情况为真),则max←a;否则(情况为假)max←b。

输出max算法分析流程图描述开始输入a、b输出maxmax←amax←b结束a>b?YN27想一想[问题3]:比较三个不同数的大小关系,输出其中最大的那个数?

(1)需要输入哪些数据?(2)需要计算机输出什么信息?(3)如何根据输入数据得到要输出的信息

?需要输入三个不同的数需要计算机输出三个数中最大的数

分别存入变量a、b、c中

存入变量max中判断条件“a>b”

,若条件成立,则max←a;否则max←b。判断条件“max>c”

,若条件成立,则保持max不变;否则max←c。最后输出max。

28键盘输入三个不同的数,分别存入变量a、b、c中。判断条件“a>b”,若条件成立,则max←a;否则max←b。判断条件“max>c”

,若条件成立,则保持max不变;否则max←c。

输出max算法分析流程图描述开始输入a、b、c输出maxmax←amax←b结束a>b?YNmax←cmax>c?YN29开始输入a、b、c结束a>b且a>c?YNb>c?YNmax←amax←bmax←c输出max选择模式的嵌套30选择模式小结选择模式的特点

选择模式是由判断条件的成立与否来选择执行相应的操作步骤使用选择模式解决问题的要点判断框中的判断条件表达方式

判断框中的判断条件可以是关系表达式(如:a>b),也可以是逻辑表达式(如:a>b且a>c)。

1、当算法执行到某一步,如果其结果存在多种可能性时,就应使用选择模式来解决;2、全面考虑问题的所有可能性,合理设置判断条件;3、使用流程图描述算法时应注意各执行步骤的汇合点。313.重复模式(循环结构)问题:如果条件始终成立,会出现什么情况?当型循环结构的特点是:先判断条件,条件成立方能执行相应语句,继续判断条件,直到条件不成立退出循环。当型循环结构中,语句块可能一次都不执行。当型循环结构直到型循环结构直到型循环结构的特点是:先执行语句块,条件不成立继续重复执行语句块,直到条件成立退出循环。直到型循环结构中的语句块至少执行1次。32

是女生?游戏N聊天YY终于可以休息了,上网结束吃晚饭、睡觉(Day加一天)Day=星期天,完成作业Day=星期一开始Day=星期六?N上学去上完8节课放学、回家、吃晚饭、做作业睡觉,又过了一天(Day加一天)33设输入n的值是4k的值是5,条件不成立,输出s34开始sum

0i

1sum

sum+ii

i+1

i≤100?Y输出sum结束N......35开始sum

1i

1sum

sum+ii

i+2i≤5?Y输出总和:sum结束N11成立1+13成立1+1+35成立1+1+3+57不成立71036开始sum

1i

1sum

sum+ii

i+1sum≤5?Y输出总和:sum结束N11成立1+12成立1+1+23成立1+1+2+34不成立4737开始a

1b

1a

a+bba+ba≤10?Y输出:a,b结束N11成立1+12+1成立2+35+3成立5+813+8不成立211338考虑该问题中涉及的数据,使用以下变量来保存数据:c:用来记录非0数的个数。d:用来存储当前输入的数据。sum:用来存放有效数的和。这批数据由使用者从键盘输入,使用者预先不知道数据的个数。根据题意,计算的是非零数的平均值,所以我们以输入0表示本次计算所需的全部数据已输入完毕(即所有有效的数据,其值均不为0)。【例2】设计算法,求输入的若干非零数的平均值。对于输入的每一个数,如果不是0,则应进行两项处理:(1)将这个数加到总和里;(2)有效数的个数增加1。然后继续输入非零数据。重复上述两项处理,直到输入的数据为0时,结束这个累加和计数的过程。最后输出平均值(总和/个数)。391、在算法的开始阶段,我们应设置变量sum的初值为0,变量c的初值为0;2、通过输入指令,把使用者输入的数据(也可能是表示结束的0)送到变量d中;3、判断条件d=0是否成立,如果不成立,则d应该被累加到变量sum中,然后变量c的值增加1,表示接收到一个有效数据,转到步骤2;

如果条件d=0成立,执行步骤4;开始结束累加器置初值:sum←0计数器置初值:c←0显示:“请输入:”接收输入数据送到变量dd=0?把d累加到sum中:sum←sum+d计数器c计数:c←c+1c=0?输出平均值:sum/c输出平均值:04、输出平均值sum/c。YN4、判断条件c=0是否成立,如果条件不成立,说明有效数的个数不为0,输出sum/c;否则说明没有输入有效数据,输出0。NY问题:步骤4是否正确?为什么?40计数器(counter),算法执行过程中,用来记录某种事件发生次数的变量。假定变量c作为计数器。计数器的典型用法:1.在算法执行的准备阶段中,应预置初值0。向计数器c预置初值0的动作为:c←0。2.算法执行过程中,每当指定的事件发生时,对计数器c计数,即,把事件已经发生的次数(在计数器c中)加1后,结果仍然送回到计数器c中。计数器c的计数动作为:c←c+1。累加器(accumulator),算法执行过程中,用来形成并存储数据之和的变量。假定变量sum作为累加器,变量d中存储了符合要求的一个数据。累加器的典型用法:1.在求和开始前的准备阶段中,应预置初值0。向累加器sum预置初值0的动作为:sum←0。2.算法执行过程中,每遇到一个符合要求的数据时,把这个数据累加到累加器中,即,计算累加器与该数据之和,并把结果重新存贮到累加器中。数据d累加到sum的动作为:sum←sum+d。41考虑该问题中涉及的数据,使用以下变量来保存这些数据:n:用来存储最后一个要加入的数。sum:累加器,用来形成并存储数据之和。i:计数器,用来表示每次要加入的数据,加入后自动增加1。【例3】

设计一个算法,求sum=1+2+3+4+……+n,n由使用者输入,n为正整数。对于求和式中的每一个数,我们发现是有规律的(从1开始,后一个是前一个加1),所以不需要每个数都手工输入,使用初值为1的计数器变量就可以表示。对于计数器的当前值,应进行两项处理:(1)将计数器的当前值加到累加器里;(2)计数器自动增加1。重复上述两项处理,直到计数器的值超过使用者的输入值n时,结束这个累加和计数的过程。最后输出累加器。421、在算法的开始阶段,首先输入n的值,设置sum的初值为0,i的初值为1;2、判断条件i≤n是否成立,如果成立,将i的值累加入sum中(sum←sum+i)

,然后i增加1(i←i+1)

,执行步骤3;如果条件不成立,则跳到步骤4;3、转回到步骤2,4、此时i当前的值大于n

,表示所有的数据均累加入sum中,则输出sum的值。开始结束输入n累加器sum←0计数器i←1i≤n?sum←sum+ii←i+1输出sumYN......n个1(n+1)个1计数器i的作用:(1)控制循环次数(2)表示每次要加入累加器中的数据43习题3:设计一个算法,求sum=1×2×3×4×……×n,n为正整数,由使用者输入。提示:本题与例题3很相似,注意变量sum的初值应设置为多少。习题1:课本P11,“实践体验”,提示:注意计数器的作用与使用方法。习题2:课本P13,“实践体验”

,提示:注意本题与例题2的相似之处。作业要求:1、抄题目2、用直尺画流程图44开始T>S结束显示:“输入价格:”输入价格到变量TT<S显示:“猜小了!”显示:“猜大了!”显示:“猜对了!”YYNN计数器c置初值,c←0计数器c计数,c←c+1输出已猜次数:c输出已猜次数:c输出已猜次数:c输出已猜次数:c45考虑该问题中涉及的数据,使用以下变量来保存这些数据:n:用来存储最后一个要乘入的数。sum:累乘器,用来形成并存储数据之积。i:计数器,用来表示每次要加入的数据,加入后自动增加1。【习题2】设计算法,求sum=1×2×3×4×……×n,n由使用者输入,为正整数。对于求积式中的每一个数,我们发现是有规律的(从1开始,后一个是前一个加1),所以不需要每个数都手工输入,使用初值为1的计数器变量就可以表示。对于计数器的当前值,应进行两项处理:(1)将计数器的当前值乘到累乘器里;(2)计数器自动增加1。重复上述两项处理,直到计数器的值超过使用者的输入值n时,结束这个累乘和计数的过程。最后输出累乘器。461、在算法的开始阶段,首先输入n的值,设置sum的初值为,i的初值为1;2、判断条件i≤n是否成立,条件成立,将i的值累乘入sum中(sum←sum×i)

,然后i增加1(i←i+1)

,执行步骤3;条件不成立,跳到步骤4;3、转回到步骤2,4、此时i当前的值大于n

,表示所有的数据均累加入sum中,则输出sum的值。开始结束输入n累乘器sum←1计数器i←1i≤n?sum←sum×ii←i+1输出sumYN......n个1(n+1)个11计数器i的作用:(1)控制循环次数(2)表示每次要乘入累乘器中的数据47典型错误计数器i←1i≤n?i←i+1累乘器sum←0sum←sum×iYN开始结束输入n输出sum计数器i←1i≤n?i←i×1累乘器sum←1sum←sum×iYN开始输入n输出sum结束48计数器i←1i≤n?i←i+1累乘器sum←1sum←sum×1YN结束输入n输出sum开始计数器i←1i≤n?sum←sum×i累乘器sum←1i←i+1YN结束开始输入n输出sum49考虑该问题中涉及的数据,设计适当的变量来保存这些数据:d:用来存储从键盘输入的一个数据,或存储表示输入结束的数字记号0。c1:用来记录已经输入的正数数据的个数,即正数计数器。c2:用来记录已经输入的负数数据的个数,即负数计数器。这批数据由使用者从键盘输入,使用者预先不知道数据的个数。根据题意,计算的是非零数的平均值,所以我们以输入0表示本次计算所需的全部数据已输入完毕(即所有有效的数据,其值均不为0)。对于输入的每一个数,如果不是0,则应进行两项处理:(1)判断这个数是否为正数;(2)如果是正数,则正数的个数应该增加1;否则,负数的个数应该增加1。重复上述两项处理,直到输入的数据为0时,结束这个分类计数的过程。最后依次输出正数的个数和负数的个数。【习题3】设计一个算法,计算并输出一批数据中正数和负数的个数。这批数据由使用者从键盘输入,预先并不知道数据的个数,输入0时表示输入结束(所有输入的有效数据,其值均不为0)。501、在算法的开始阶段,我们应设置正数计数器c1,负数计数器c2的初值为0;2、通过输入指令,把使用者输入的数据(也可能是表示结束的0)送到变量d中。3、判断条件d=0是否成立,若不成立,则d是有效数据,如果条件d=0成立,说明输入结束,则执行步骤4;继续判断条件d>0是否成立,若条件成立,则d是正数,使正数计数器c1计数(c1←c1+1),转回步骤2;否则,说明d是负数,使负数计数器c2计数(c2←c2+1),转回步骤2;开始结束正数计数器c1置初值:c1←0负数计数器c2置初值:c2←0显示:“请输入:”接收输入数据送到变量dd=0?计数器c1计数:c1←c1+1d>0?输出正数个数:c1YNNY计数器c2计数:c2←c2+1输出负数个数:c24、输出正数的个数(正数计数器c1),负数的个数(负数计数器c2)。512.1解析算法问题1:已知一个三角形一条边的长度a和该边上的高h,则该三角形的面积是多少?问题2:在理想情况下,从h米高的楼顶让一个铁球自由落下,铁球落地时的速度是多少?解析算法是指用解析的方法找出表示问题的前提条件与结果之间关系的数学表达式,并通过表达式的计算来实现问题求解。利用数学公式中所反映的客观事务间的数量关系,以此为基础,设计出合适的算法,从而编制出正确的程序,利用计算机的高速计算能力,便能快速地获得问题的解。注意:并不是所有问题都可以找到与之相对应的数学公式。第2章算法实例52【例题1】计算并联电阻的总阻值(一)把2个电阻的两端分别连在一起,称为“2个电阻的并联”。。R1R2ABR此算法应分为如下三个步骤:1.输入两个电阻的阻值;2.计算总阻值;3.输出计算结果。开始结束输入R1、R2输出R计算:T←()计算:R←()计算:R←()53【例题2】一元二次方程求解一元二次方程ax2+bx+c=0(a≠0),输入方程系数a、b、c,求方程的解。根据一元二次方程的求解方法,首先需要判别b2-4ac的结果是大于0、小于0还是等于0,然后才能用求根公式进行计算。所以我们需要使用选择模式,根据条件判别的不同结果,输出两个解、一个解、“无解”。此算法应分为如下步骤:1.输入方程系数a、b、c;2.计算b2-4ac的值到变量d中;3.判断条件d≥0是否成立,条件成立,继续判断条件d>0是否成立,条件成立,计算并输出两个解;否则,计算并输出一个解。4.若条件d≥0不成立,则输出“无解”。开始输入a、b、cd←b*b-4*a*cd≥0?d>0?计算并输出两个解计算并输出一个解输出“无解”结束输出、输出YYNN54开始输入a、b、cd←b*b-4*a*cd≥0?d>0?输出“无解”结束题目改为:方程ax2+bx+c=0,输入方程系数a、b、c,求方程的解。输出、输出a=0?输出“非二次方程”YYNNYN55【例题3】计算并联电阻的总阻值(二)把n个电阻的一端都连在一起,把这n个电阻的另一端也都连在一起,这样的连接成的电阻称为“n个电阻的并联”。此时我们从并联的n个电阻的两端A、B测得的电阻,是这n个并联电阻的“总阻值”。R1R2ABR1R2ABR3n个并联电阻的总阻值R,其倒数是各个电阻阻值的倒数的和,即:RR561、在算法的开始阶段,我们应设置变量rs的初值为0;2、通过输入指令,把使用者输入的电阻阻值(也可能是表示结束的0)送到变量r中;3、判断条件r=0是否成立,如果不成立,则r的倒数应该被累加到变量rs中,转到步骤2;

如果条件r=0成立,执行步骤4;开始结束累加器置初值:rs←0输入电阻阻值送到变量rr=0?把r的倒数累加到rs中:rs=0?输出总电阻:1/rs输出“无电阻连接”4、输出总电阻值1/rs。YN4、判断条件rs=0是否成立,如果条件不成立,说明有效电阻的个数不为0,输出1/rs;否则说明没有连接电阻,输出“无电阻连接”。NY问题:步骤4是否正确?为什么?......57计数器c←1c≤n?c←c+1累乘器y←1y←y×aYN【例题4】设计算法计算y=an,a、n由使用者输入,a≠0,n为正整数。......n个1相加n个a相乘负整数c≤InI?开始输入a、n输出y结束输出1/yc≤-n?(n+1)个1相加|n|(-n)个a相乘n个a相乘58【习题1】设计算法完成下述功能:键盘输入三个正数,分别存储在变量a、b、c中,判断长度为a、b、c的三条线段是否能构成一个三角形,若能,计算并输出三角形的面积,否则,输出文字“不能构成三角形”。提示:(1)判断三条线段能否构成三角形的条件是什么?应如何使用判断框进行描述?(2)利用三角形的三条边长计算三角形面积的公式如下:59【习题2】:假定某银行储蓄的年利率为2.15%,按复利计算。设计一个算法,计算y元在该银行储蓄m年后所得的本金和利息之和是多少?提示:按复利计算是指每年产生的利息与本金合计作为下一年产生利息的本金,即每年产生利息的本金是上一年的本金与利息之和。按照复利计算,一笔数量为y元的存款,m年后的本息和为x:1年后到期的本息为:x=y+y×0.0215=y×1.0215;2年后到期的本息为:x=y+y×0.0215+(y+y×0.0215)

×0.0215=y×1.02152;以此类推,m年后到期的本息为:x=y×1.0215m1.0215m为高阶指数运算,计算机不能一次算出结果,应采用重复模式进行计算,让1.0215这个数做m次连乘即可。60【习题1】:设计算法完成下述功能:键盘输入三个正数,分别存储在变量a、b、c中,判断长度为a、b、c的三条线段是否能构成一个三角形,若能,计算并输出三角形的面积,否则,输出文字“不能构成三角形”。线段a、b、c能构成一个三角形的条件是:任何两条线段长度的和应该大于第三条线段的长度,即:a+b>c、b+c>a、a+c>b三个不等式同时成立。使用变量a、b、c:用来分别存储构成三角形的三条线段的长度。p用来存储周长的一半,s用来存储三角形的面积。计算的过程:1、在算法的开始阶段,首先输入变量a、b、c的值;2、判断变量a、b、c的值是否能够满足a+b>c、b+c>a、a+c>b三个不等式同时成立;3、如果三个不等式能够同时成立,则计算并输出三角形面积s;否则,输出“不能构成三角形”。输入:a、b、c开始a+b>c且b+c>a且c+a>b?a+b>c?b+c>a?a+c>b?输入:a、b、c开始输出s结束输出“不能构成三角形”输出s结束输出“不能构成三角形”YYYYNNNN61输入:“a、b、c”开始

a+b>c且b+c>a且c+a>b?输出“N”结束输出“s”YN62在输入、输出变量的值时,该变量名不能加引号;在输出文字内容时,该文字内容两端要加引号。利用数学公式进行解析算法设计时,不应习惯性的将公式中的等号带入使用,在算法流程图中,“=”代表判断等号左右两边的表达式的值是否相等,而我们实际的操作是将公式左侧的表达式经计算机计算后将其结果(即表达式的值)送入右侧的变量中,所以必须使用“←”。63【习题2】:假定某银行储蓄的年利率为2.15%,按复利计算。设计一个算法,计算y元在该银行储蓄m年后所得的本金和利息之和是多少?提示:按复利计算是指每年产生的利息与本金合计作为下一年产生利息的本金,即每年产生利息的本金是上一年的本金与利息之和。按照复利计算,一笔数量为y元的存款,m年后的本息和为x:1年后到期的本息为:x=y+y×0.0215=y×1.0215;2年后到期的本息为:x=y+y×0.0215+(y+y×0.0215)

×0.0215=y×1.02152;以此类推,m年后到期的本息为:x=y×1.0215m1.0215m为高阶指数运算,计算机不能一次算出结果,应采用重复模式进行计算,让1.0215这个数做m次连乘即可。64......m个1相加m个1.0215相乘计数器c←1c≤m?c←c+1累乘器t←1t←t×1.0215YN开始输入本金y、存期m输出x结束x←y×t(m+1)个1相加65......m个1相加m个1.0215相乘计数器c←1c≤

m?c←c+1y←y×1.0215YN开始输入本金y、存期m输出y结束(m+1)个1相加66典型错误计数器c←1c<=m?c←c+1累乘器t←1x←y×1.0215YN开始输入本金y、存期m输出x结束672.5递推算法问题1:观察一串数1、2、6、24、120、…找出相邻两个数的关系?问题2:观察一串数2、5、7、12、19、31、…找出31后的数应该是多少?递推法是从头开始一步步地推出问题的最终结果的方法。递推是序列计算中的一种常用方法。它是按照一定的规律来计算序列中的每个项,通常是通过计算前面的一些项来得到序列中指定项的结果。[例题1]计算斐波那奇数列的第n项68月份序号兔子对数121234512345611235869结论:从第3个月起,每个月的兔子对数总是等于上个月的兔子对数加上前个月的兔子对数,因此我们可以得到下面的这个数列:1,1,2,3,5,8,13,21,34,55,89,144,233……70输出c初始化:a←1,b←1,c←a+b,k←3k=n?项号变化k←k+1YN初始化:a←1,b←1,c←a+b,k←3,sum←a+b+c计算下一项:a←b,b←c,c←a+b计算下一项并累加求和:a←b,b←c,c←a+b,sum←sum+c输出c,sum开始结束输出1n<3?输入项号nYN3112143525233586sum1+1+21+1+2+31+1+2+3+51+1+2+3+5+8计算出斐波那契数列的第n项(n≥3),并求出前n项的和。71[例题3]

:讲义习题172计数器c←1c

≤n?c←c+1temp←x0temp←YN......开始输入x0,a,n输出temp结束73......[例题4]

:讲义习题274......75Ntemp←1计数器

c←1,s←0c≤n?c←c+1s

←s+tempe←s+1Y开始输出e结束输入n......762.2枚举算法问题1:有1把锁和一串钥匙(100把),只知道在这串钥匙中至少有1把钥匙可以打开锁,如何将所有可以开锁的钥匙都找出来?问题2:在一副已经混乱的扑克牌中,如何找出所有花色是“♥”的扑克牌?有一类问题可以采用一种盲目搜索的方法,在搜索结果的过程中,把各种可能的情况都考虑到,并对所得的结果逐一进行判断,过滤掉那些不合要求的结果,保留那些合乎要求的结果,这种方法称为枚举法。枚举法就是按照问题本身的性质,一一列举出该问题所有可能的解,并在逐一列举的过程中,检验每个可能的解是否是问题真正的解,若是,我们采纳它,否则,抛弃它。并不是所有问题都可以采用枚举法来寻找答案的,仅当问题的所有可能的解的个数不太多时,在可以接收的时间内获得问题所有的解。77【例题1】在1~2008这些自然数中,找出所有是37倍数的自然数。求余数运算mod,AmodB就是求A/B的余数例如:5mod3=2,10mod3=1此算法应分为如下步骤:1、设置n的初值为1;2、判断条件n≤2008是否成立,条件成立,继续判断条件nmod37=0是否成立,条件成立,输出n;条件n≤2008不成立,跳到步骤4;3、n的值增加1(n←n+1),转回步骤2;4、此时n当前的值大于2008

,表示所有的数据均检查过了,算法结束。开始n←1n≤2008?nmod37=0?输出nn←n+1结束YYNN开始n←37n≤2008?输出nn←n+37结束YN通过观察,我们发现1~2008中37的倍数是从37开始,每次增加37,最大不超过2008的这些数,所以,我们可以采用n初值设置为37,每次增加37的方法枚举出这些数。相对前面的方法,效率提高。78【例题2】单据中被涂抹的数字的推算一张单据上有一个5位数的编码,其千位数和百位数处已经变得模糊不清,如右图所示。但知道这个5位数是57或67的倍数。现在请设计一个算法,输出所有满足这些条件的数,并统计这样的数的个数。No.147No.147ij79我们可以从上述数学推导中得知:n的取值由i和j的取值共同决定,当我们确定当前i和j的值之后,n的取值自然也就确定了。80............共100种组合81n为真正解的数学判断方法82开始结束j≤9nmod57=0或nmod67=0i≤

9j←0i←0,计数器c←0j←j+1i←i+1输出真正解nYNYNYN计数器c计数,c←c+1n←10047+i×1000+j×100输出:计数器c的值对于每个符合条件的i的取值,我们让变量j从0开始逐次枚举到9,对于由i和j确定的n,判断其是否符合条件。具体步骤如下:1、变量j置初值0;2、判断条件j≤9是否成立若成立,计算出n的值;继续判断n是否符合条件条件成立,输出n,计数器c计数3、j增加1,转回步骤2;当条件j≤9不成立,说明当前i的所有可能解均完成验证。此时,应验证i的下一个取值对应的所有可能解。具体步骤如下:1、i增加1;2、判断条件i≤9是否成立若成立,开始验证对应的可能解否则,说明所有可能解都完成验证,输出计数器c,算法结束。i的取值0、1、2、......、9j的取值0、1、2、......、983问题1:如果原题中的5位数如下图1所示,课本上的算法是否还适用?问题2:如果原题中的5位数如下图2所示,课本上的算法是否还适用?No.157图1No.117图284【例题3】P23,“实践体验”,用10元与50元的两种纸币组成240元,共有几种组合方式,试用枚举算法列出所有不同的取法和种数。设240元由x张10元、y张50元纸币组成,则必有以下方程成立:10x+50y=24085..................86开始结束y≤

410x+50y=240x≤24y←0x←0,计数器c←0y←y+1x←x+1输出x、yYNYNYN计数器计数:c←c+1输出:计数器c对于每个符合条件的x的取值,我们让变量y从0开始逐次枚举到4,对于由x和y确定的方程,判断其是否成立。具体步骤如下:1、变量y置初值0;2、判断条件y≤4是否成立若成立,继续判断方程是否成立条件成立,输出x、y

计数器c计数3、y增加1,转回步骤2;当条件y≤4不成立,说明当前x的所有可能解均完成验证。此时,应验证x的下一个取值对应的所有可能解。具体步骤如下:1、x增加1;2、判断条件x≤24是否成立若成立,开始验证对应的可能解否则,说明所有可能解都完成验证,输出计数器c,算法结束。x的取值0、1、2、......、24y的取值0、1、2、3、487【例题4】包装问题包装600个变形金刚,要求是:(1)包装的规格分别是:小盒(每盒12个)、大盒(每盒15个);(2)每种规格的盒数都不能为0。请设计一个算法,输出所有可能的包装方案。设600个变形金刚分别装入x个小盒、y个大盒中,则必有以下方程成立:12x+15y=6008889..................90开始结束y≤3912x+15y=600x≤48y←1x←1y←y+1x←x+1输出x、yYNYNYN对于每个符合条件的x的取值,我们让变量y从1开始逐次枚举到39,对于由x和y确定的方程,判断其是否成立。具体步骤如下:1、变量y置初值1;2、判断条件y≤39是否成立若成立,继续判断方程是否成立条件成立,输出x、y3、y增加1,转回步骤2;当条件y≤39不成立,说明当前x的所有可能解均完成验证。此时,应验证x的下一个取值对应的所有可能解。具体步骤如下:1、x增加1;2、判断条件x≤48是否成立若成立,开始验证对应的可能解否则,说明所有可能解都完成验证,算法结束。x的取值1、2、3、......、48y的取值1、2、3、......、3991【例题5】求直角三角形边长整数解的算法在一直角三角形中,三条边a、b、c的长度都是正整数,本问题中一条直角边a的长度已经给定,斜边c的长度不能超过某个给定的正整数值maxc,算法的目标是找出满足上述条件的所有直角三角形。当一个直角三角形的三条边的边长都是整数,这样的三角形称为整数边长的直角三角形,代表边长的三个正整数成为一组“勾股数”。勾股弦92根据平面几何知识一个直角三角形应满足以下条件:1、勾股定理2、两边长度之和大于第三边长度3、斜边长度大于任何一条直角边长度93由勾股定理由两边长度之和大于第三边长度由斜边长度大于任何一条直角边长度949596开始结束b≤(c-1)c2-b2=a2c≤maxcb←c-a+1c←a+1b←b+1c←c+1输出a、b、cYNYNYN计数器ct计数,ct←ct+1输出:计数器ct的值计数器ct←0输入:直角边a的长度和斜边c的最大值maxc对于每个符合条件的c的取值,我们让变量b从(c-a+1)开始逐次枚举到(c-1),对于a、b,c的取值,判断其是否满足勾股定理。具体步骤如下:1、变量b置初值(c-a+1)

;2、判断条件b≤(c-1)是否成立若成立,继续判断a、b,c的取值是否满足勾股定理条件成立,输出a、b、c

计数器ct计数3、b增加1,转回步骤2;当条件b≤(c-1)不成立,说明当前c取值的所有可能解均完成验证。此时,应验证c的下一个取值对应的所有可能解。具体步骤如下:1、c增加1;2、判断条件c≤maxc是否成立若成立,开始验证对应的可能解否则,说明所以可能解都完成验证,输出计数器ct,算法结束。97思考1、对于变量c的不同取值,变量b的循环次数是否一直不变?2、随着变量c值的不断增大,变量b的循环次数有什么变化趋势?98【例6】1000内素数的推算素数,也叫质数。通常我们称正整数n为素数,是指:只有1和n本身才能整除它,即只有1和其本身是它的约数,或者说一个素数除了1和其本身,不能分解为其他正整数的乘积。1不是素数;2是最小的素数;除了2以外所有的素数都是奇数。例如:2只有1和2两个约数;17只有1和17两个约数,所以2和17是素数;6有1、2、3、6四个约数;15有1、3、5、15四个约数,所以6与15不是素数。(1)如何判断一个正整数j是另一个正整数i的约数?使用条件:imodj=0进行判断;条件成立,j是i的约数,否则,j不是i的约数。(2)正整数i是素数的条件除了1和其本身,没有任何其他约数(即其他约数的个数为0)。或者说:在从2到(i-1)范围内的正整数中,没有任何一个数是i的约数。99j←2j<i?j←j+1计数器c←0YNimodj=0?c←c+1YNc=0?YN条件imodj=0成立不成立正整数j是正整数i的约数正整数j不是正整数i的约数计数器c加1条件c=0成立不成立范围[2,i-1]内不存在i的约数范围[2,i-1]内存在i的约数i是素数i不是素数判断一个正整数i为素数的方法:测试[2,i-1]范围内的每个数是否为i的约数,并统计约数的个数。测试完成,约数的个数为0,则i为素数;否则,i不是素数。算法应分为如下步骤:1.j置初值2,计数器c置初值0;2.判断条件j<i是否成立,若不成立,跳到步骤4;若成立,继续判断条件imodj=0是否成立,若成立,计数器c计数;3.j增加1,转回步骤2;4.此时j的值超过了(i-1),说明范围内的数均测试完成,则去判断条件c=0是否成立若成立,则i是素数;否则,i不是素数。输出“不是素数”输出“是素数”100j←2j<i?j←j+1c←0YNimodj=0?c←c+1Nc=0?YN输出“不是素数”输出“是素数”输出2i←i+1i≤1000?开始i←2结束YYN输入ni≤n?i←i+2i←3在了解如何对一个数是否是素数进行判断的基础上,只要我们将2~1000中的999个正整数逐个进行判断就可以实现算法功能。具体步骤如下:1、变量i设置初值2;2、判断条件i≤1000是否成立,若成立,进行是否为素数的判断;否则,执行步骤43、i增加1,返回步骤2;4、条件i≤1000不成立,说明999个数均完成测试,算法结束。输出i除了2以外,所有的素数均为奇数,如何修改可以提高算法执行的效率?如果算法的功能改为:输出1~n之间所有素数,n>1,n为正整数,由键盘输入,应如何修改算法?101j←2j<i?j←j+1计数器c←0YNimodj=0?c←c+1YNc=0?YN我们发现,对于计数器c,最关键的是它的值是否保持着初始值0,而对于c在测试完成后的具体大小,则不是我们观察的重点,c的值是否发生变化是我们关注的焦点,到底变成多少则无所谓。对于这种情况,我们还可以使用布尔型变量来解决问题,布尔型变量只有两种取值True和False,用于表示条件成立与不成立,可直接在判断框中进行判断,如:变量f为布尔型变量:f的值为True,则执行标注Y方向的流程;f的值为False,则执行标注N方向的流程;f?YN对于本问题,我们可以使用布尔型变量f取代计数器c来解决:初始化布尔型变量f的值为True;imodj=0条件成立,将布尔型变量f的值改为False;测试结束,对布尔型变量f进行判断;f←Truef←Falsef?输出“不是素数”输出“是素数”102小结——使用枚举法解题的步骤理解题意,根据题意使用数学方法确定可能的解的范围确定检验每个可能解的条件确定算法流程使用流程图描述算法流程1032、使用枚举法解题的注意事项(1)在列举可能解的过程中,既不能遗漏也不能重复。(2)仅当所有可能解的个数不多时,使用枚举法才能在可以接受的时间内获得问题所有的解。104作业1:课本P80,第8题。105............共100种组合106开始结束j<=9nmod57=0或nmod67=0i<=9j←0i←0,计数器c←0j←j+1i←i+1输出真正解nYNYNYN计数器c计数,c←c+1n←10407+i×1000+j×10输出:计数器c的值107【作业2】设100元可以购买x只公鸡、y只母鸡,则必有以下方程成立:5x+3y=100108..................109开始结束y≤315x+3y=100x≤19y←1x←1y←y+1x←x+1输出x、yYNYNYN对于每个符合条件的x的取值,我们让变量y从1开始逐次枚举到39,对于由x和y确定的方程,判断其是否成立。具体步骤如下:1、变量y置初值1;2、判断条件y≤31是否成立若成立,继续判断方程是否成立条件成立,输出x、y3、y增加1,转回步骤2;当条件y≤31不成立,说明当前x的所有可能解均完成验证。此时,应验证x的下一个取值对应的所有可能解。具体步骤如下:1、x增加1;2、判断条件x≤19是否成立若成立,开始验证对应的可能解否则,说明所有可能解都完成验证,算法结束。x的取值1、2、3、......、19y的取值1、2、3、......、31110作业3:课本P80,第6题。111112开始结束b<cc2-b2=a2a<cb←1a←1b←b+1a←a+1输出a、b、cYNYNYN计数器ct计数,ct←ct+1输出:计数器ct的值计数器ct←0输入:斜边c113114115开始结束b<=c-1c2-b2=a2a<cb←a+1a←1b←b+1a←a+1输出a、b、cYNYNYN计数器ct计数,ct←ct+1输出:计数器ct的值计数器ct←0输入:斜边cb←1b<a116........................117开始结束b<=c-1c<=maxcb←c-a+1c←a+1b←b+1c←c+1输出a、b、cYNYNYN计数器ct计数,ct←ct+1输出:计数器ct的值计数器ct←0输入:直角边a的长度和斜边c的最大值maxc且118自1946年诞生世界上第一台计算机起,计算机程序设计语言的发展经历了四个阶段:1、机器语言阶段2、汇编语言阶段3、高级语言阶段4、面向对象程序设计阶段3.1面向对象的程序设计方法第3章程序设计基础

一、初期的程序设计119结构化程序设计(StructureProgramming)是一种强调功能抽象化和模块化的编程方法,它把求解问题的过程看作一个处理过程。三种基本的程序结构:顺序结构选择结构循环结构

二、结构化程序设计120

自顶向下、逐步求精、模块化设计原则:

结构化程序设计解决了由多人共同开发大型软件时,如何高效率地完成高可靠性系统的问题。结构化程序的可读性好、可维护性好已成为评价程序质量的首要条件。VB改变了原Basic语言的非结构程序设计思想,采用结构化程序设计的思想和方法。

二、结构化程序设计121

面向对象程序设计OOP(ObjectOrientedProgramming)是一种以对象为基础,以事件来驱动对象执行的程序设计技术。OOP将一个应用程序,逐步划分成相互关联的多个对象,并且建立起与这些对象相关联的事件过程,通过对象对所发生的事件产生响应,来执行相应事件过程,以引发对象状态的改变,从而最终达到运算、处理的目的。程序员在应用程序中只需说明对象应完成的任务,该任务通常仍由编程来完成,仍采用结构化程序设计的方法。

三、面向对象的程序设计122面向对象程序设计最早在20世纪80年代就已提出,起源于Smalltalk语言。此种方法引入了新的概念和思维方式,为使软件在程序设计阶段能够模仿建立真实世界的模型,此种设计方法对系统的复杂性进行概括、抽象和分类,使软件的设计与实现形成一个由抽象到具体、由简单到复杂的一个循序渐进的过程,从而解决了大型软件研制中存在的效率低、质量难以保证、调试复杂、维护困难等一系列问题,因此近年来面向对象的程序设计得到广泛的应用。目前在Windows环境下常用的面向对象程序设计语言有:VisualBasic、VisualJ++、VisualC++、VisualFoxPro等。

三、面向对象的程序设计123VisualBasic“Visual”指的是开发图形用户界面

(graphicaluserinterface,缩写为GUI)的方法,即可视化。GUI是一种通过屏幕上的图形、图像,如图标、命令按钮、菜单和文本框等,来展示程序功能的一种可视化计算环境。“Basic”指的是

BASIC(BeginnersAll-PurposeSymbolitInstructionCode)语言,一种在计算技术发展历史上应用得最为广泛的语言。VB中包括了BASIC语言中常用的语句、函数和关键字。124对象(object)功能的实现和表达是面向对象的程序设计的基础。在现实世界中,对象是客观存在的事物或概念。抽象的说,对象有以下特点:1.每个对象都有自己的状态,并且其状态是通过若干属性(property)来描述的。例如,表示某人:姓名=张三;性别=男;年龄=30岁;民族=汉;身高=1.80米;体重=60公斤。2.每个对象都有自己的行为,即对属性的操作和处理方法(method)。在面向对象的程序设计中,一个对象是由一组描述状态的数据和一组实现方法的代码封装在一起而构成的。3.1.1对象、属性和类对象状态(一组数据)方法(一组代码)数据用来表示对象的属性,一个对象可以有若干个属性,以反映该对象的状态。代码用来描述改变对象的状态的处理过程,称为该对象的方法。125类是创建对象实例的模板,是对相同性质的对象的集合与抽象,而一个对象则是类的一个实例。在VB中,所见到的类大多是系统已经设计完成,我们只需使用就可以了,VB工具箱中的可视类图标是VB系统设计好的标准类控件。具体的如:工具箱中的“TextBox”控件就是一个标准类,当我们从该类中“取出”某个TextBox控件后,这个TextBox控件就成为一个对象,它自动继承了TextBox类的各种特征。即当我们在窗体上画一个控件时,就将类转换为一个对象,也就创建了一个控件对象,控件对象简称控件。VB也允许程序员自行设计类。注意:窗体是个特例,它既是对象又是类。对象的属性、事件和方法属性

VB的控件具有自己的属性、事件和方法,我们可以将属性看作一个对象的性质,将事件看作对象的响应,将方法看作对象的动作,这三者构成了对象的三要素。对象中的数据保存在属性中,是用来描述和反映对象特征的参数。定义对象属性的方法有以下两种:(1)使用属性窗口(2)用程序语句定义语句形式:

<对象名.属性名>=<属性值>

126常见属性名及其含义Name——对象的名称,就是对象名;Backcolor——对象的背景色;Caption——对象的标题,对于Label类对象和CommandButton类对象,就是指对象上显示的内容;Height——对象的高度,以像素为单位;Width——对象的宽度,以像素为单位;Text——Textbox类对象中文本框中显示的内容;Font——对象显示内容的字体(包括字体、字形、大小、效果);1273.1.2事件、事件过程和事件驱动(1)事件对于对象而言,事件是发生在对象上的事情,通常这是用户在对象上激发的一种动作。VB系统为每一个对象预先定义了一系列的事件。如:单击(Click)、双击(DblClick)、获取焦点(GotFocus)、改变(Change)等。(3)事件过程事件是指在VB系统之外发生的、对系统有意义的所以活动和变化。事件发生的时刻是随机的。在应用程序运行时,可以发生各种事件,这些事件发生的次序是无法事先确定的。设计应用程序时,我们必须确定当哪些事件发生时,程序应该做什么处理工作,而另一些事件发生时,应用程序不必予以关心(实际上,当一个事件发生时,如果应用程序不关心,则将由VB自动地按照标准的方式处理这些事件)。当对象发生了事件后,应用程序就可能需要处理这个事件,而其处理的步骤就是事件过程。它是针对某一对象的过程,并与该对象的一个事件相联系。VB的编程工作主要就是为对象编写事件过程中的程序代码。事件过程的形式如下:SubX_Y([参数列表])在事件处理过程X_Y内使用的变量的说明语句序列EndSubX代表对象名,Y代表事件名([参数列表])在某些情况下,VB启动事件处理过程时,将向该过程传递某些必要的数据,这些数据就是参数列表,在圆括号中描述。即使括号内是空的,圆括号仍然是不可缺少的。(2)事件驱动一个事件的发生,可以引起某个对象上某个方法(事件处理过程)的执行,即由某个事件驱动了相应的事件处理过程。在事件处理过程中,可以按预先设置好的方式,改变某个对象的的相关属性值,使这个对象的状态得到相应的改变,从而使用户看到程序计算的结果。128VB常用对象的常见标准事件标准名在VB中,标准事件过程的形式如下:PrivateSub对象名_事件的标准名([参数列表])在事件处理过程X_Y内使用的变量的说明语句序列EndSub129变量及变量说明在事件处理过程中,将按算法所规定的计算过程对数据进行处理。数据可以以变量或常量的形式出现在程序中。常量是程序运行中值不变的数据或存储单元。变量则用来表示数据的存储区,在程序运行过程中,这些存储区的值是可以改变的。若事件处理过程需要使用某些变量,用来存储用户输入的数据,或是存储程序计算过程中的中间结果,则应该对这些变量进行说明。1、VB中变量的命名规则:

变量名必须以字母A~Z(或a~z)开头。

构成变量

温馨提示

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

评论

0/150

提交评论