- 825.00 KB
- 2022-07-27 发布
- 1、本文档由用户上传,淘文库整理发布,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,请立即联系网站客服。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细阅读内容确认后进行付费下载。
- 网站客服QQ:403074932
主题一利用计算机解决问题的基本过程点击考点1、了解利用计算机解决问题的基本过程2、了解问题分析与算法设计之间的关系3、了解算法的基本特征4、能用自然语言、流程图或伪代码描述算法5、了解程序设计语言产生与发展过程考点注解1、了解利用计算机解决问题的基本过程一般来说,用计算机解决一个具体问题时,大致经过以下几个步骤:首先要从具体问题抽象出一个适当的数学模型,然后设计一个解此数学模型的算法,最后编出程序进行测试调整直道到最终解答。寻求数学模型的实质就是分析问题,从中提取操作的对象,并找出这些操作对象之间含有的关系,然后用数学的语言加以描述。2、了解问题分析与算法设计之间的关系任何一个问题必须弄清楚其内容、性质、规模,才能找到解决问题的方法,所以分析问题就是要确定用计算机做什么,接下来,就解决怎么做的问题,也就是算法。算法就是解决问题的方法与步骤。有了算法才能转化成指令代码,计算机才能按照指令代码一步一步去执行,直到得到问题的解。算法是程序设计的灵魂,算法独立于任何一种程序设计语言,一个算法可以用多种程序设计语言来实现。一个问题,可能有多种算法,应该通过分析、比较、挑选一种最优的算法。一个好算法必须用到科学的方法,应该好好学习各学科处理问题的科学方法。3、了解算法的基本特征一个算法应该具有以下特征:1)有穷性:一个算法必须保证它的执行步骤是有限的,即它是能终止的。2)确定性:算法中的每一个步骤必须有确切的含义,而不应当是模糊的,模棱两可的。3)可行性:算法的每一步原则上都能精确运行4)有零个或多个输入:所谓输入是指算法在执行时需要从外界获得数据,其目的是为算法建立某些初始状态。如果建立初始状态所需的数据已经包含在算法中了,那就不再需要输入了。5)有一个或多个输出:算法的目的是用来求解问题的,问题求解的结果应以一定的形式输出。4、能用自然语言、流程图或伪代码描述算法一个算法可以用多种不同的方法来描述。一般用自然语言、流程图、伪代码描述。1)自然语言\n自然语言是人们日常所用的语言,如汉语、英语、德语等。用自然语言描述算法符合我们的表达习惯,并且容易理解。缺点:书写较烦、不确定性、对复杂的问题难以表达准确、不能被计算机识别和执行。用自然语言描述一下解决以下问题的算法:借助一个空杯将一杯橙汁和一杯可乐互换所盛放的杯子。(1)橙汁倒入空杯;(2)可乐倒入刚空出的杯子;(3)橙汁倒入刚倒出可乐的杯子2)流程图流程图是由一些图框和流程线组成的,其中图框表示各种操作的类型,图框中的文字和符号表示操作的内容,流程线表示操作的先后次序。也称为程序框图,它是算法的一种图形化表示方法。优点:形象、直观、容易理解。由键盘输入一个任意值作为n,求1到n的累加值。用流程图的方法描述一下求一元二次方程ax2+bx+c=0(其中a≠0)的实数解的算法。\nInput三个实数值(其中a≠0)Toa,b,cd=b^2-4*a*cIfd大于等于0ThenX1=(-b-d)/2*aX2=(-b+d)/2*a输出X1和X2的值Else输出方程无实数解3)伪代码伪代码是介于自然语言和计算机程序语言之间的一种算法描述。优点:简洁、易懂、修改容易缺点:不直观、错误不容易排查比如: IF九点以前THEN do私人事务; ELSE9点到18点THEN 工作; ELSE 下班; ENDIF这样不但可以达到文档的效果,同时可以节约时间.更重要的是,使结构比较清晰,表达方式更加直观.1、了解程序设计语言产生与发展过程程序设计语言泛指一切用于书写计算机程序的语言。计算机语言的发展经历了从机器语言、汇编语言到高级语言的历程,如图1-1所示。1)机器语言(MachineLanguage)\n计算机使用的是由“0”和“1”组成的二进制数,二进制编码方式是计算机语言的基础。计算机发明之初,科学家只能用二进制数编制的指令控制计算机运行。每一条计算机指令均由一组“0”、“1”数字,按一定的规则排列组成,若要计算机执行一项简单的任务,需要编写大量的这种指令。这种有规则的二进制数组成的指令集,就是机器语言(也称为指令系统)。不同系列的CPU,具有不同的机器语言,如目前个人计算机中常用AMD公司的系列CPU和Intel公司的系列CPU,具有不同的机器语言。机器语言是计算机唯一能识别并直接执行的语言,与汇编语言或高级语言相比,其执行效率高。但其可读性差,不易记忆;编写程序既难又繁,容易出错;程序调试和修改难度巨大,不容易掌握和使用。此外,因为机器语言直接依赖于中央处理器,所以用某种机器语言编写的程序只能在相应的计算机上执行,无法在其他型号的计算机上执行,也就是说,可移植性差。2)汇编语言(AssembleLanguage)为了减轻使用机器语言编程的痛苦,20世纪50年代初,出现了汇编语言。汇编语言用比较容易识别、记忆的助记符替代特定的二进制串。下面是几条Intel80x86的汇编指令:ADDAX,BX;表示将寄存器AX和BX中的内容相加,结果保存在寄存器AX中。SUBAX,NUM;表示将寄存器AX中的内容减去NUM,结果保存在寄存器AX中。MOVAX,NUM;表示把数NUM保存在寄存器AX中。通过这种助记符,人们就能较容易地读懂程序,调试和维护也更方便了。但这些助记符号计算机无法识别,需要一个专门的程序将其翻译成机器语言,这种翻译程序被称为汇编程序。汇编语言的一条汇编指令对应一条机器指令,与机器语言性质上是一样的,只是表示方式做了改进,其可移植性与机器语言一样不好。总之,汇编语言是符号化的机器语言,执行效率仍接近于机器语言,因此,汇编语言至今仍是一种常用的软件开发工具。3)高级语言尽管汇编语言比机器语言方便,但汇编语言仍然具有许多不便之处,程序编写的效率远远不能满足需要。1954年,第一个高级语言—FORTRAN问世了。高级语言是一种用能表达各种意义的“词”和“数学公式”按一定的“语法规则”编写程序的语言,也称为高级程序设计语言或算法语言。半个多世纪以来,有几百种高级语言问世,影响较大、使用较普遍的有FORTRAN、ALGOL、COBOL、BASIC、LISP、SNOBOL、PL/1、Pascal、C、PROLOG、Ada、C++、VisualC++、VisualBasic、Delphi、Java等。高级语言的发展也经历了从早期语言到结构化程序设计语言、面向对象程序设计语言的过程。高级语言与自然语言和数学表达式相当接近,不依赖于计算机型号,通用性较好。高级语言的使用,大大提高了程序编写的效率和程序的可读性。与汇编语言一样,计算机无法直接识别和执行高级语言,必须翻译成等价的机器语言程序(称为目标程序)才能执行,如图1-2所示。高级语言源程序翻译成机器语言程序的方法有“解释”和“编译”两种。解释方法采用边解释边执行的方法,如早期的BASIC\n语言即采用解释方法,在执行BASIC源程序时,解释一条BASIC语句,执行一条语句。编译方法采用相应语言的编译程序,先把源程序编译成指定机型的机器语言目标程序,然后再把目标程序和各种标准库函数连接装配成完整的目标程序,在相应的机型上执行。如C、C++、VisualC++及VisualBasic等均采用编译的方法。编译方法比解释方法更具有效率。同步集训一、选择题1、人们利用计算机解决问题的基本过程一般有如下五个步骤(①~⑤),请按各步骤的先后顺序在下列选项(A~D)中选择正确的答案( )①调试运行程序②分析问题③设计算法④问题解决⑤编写程序A、①②③④⑤B、②④③⑤①C、④②③⑤①D、②③⑤①④2、在下图中利用计算机解决问题的基本步骤流程图中,对于标注为(1)的流程线,以下说明正确的是()A.该流程线可有可无B.当程序运行不出结果时,才需要该部分流程线C.该部分流程线保证了问题解决的正确性D.该部分流程线有错3、下列三种算法的描述,缺乏直观性、简洁性,最容易产生歧义的是()A、自然语言描述法B、流程图C、伪代码4、流程图中表示判断的是( )A、矩形框 B、菱形框 C、圆形框 D、椭圆形框5、“分支判断”作为解决问题的算法的一个基本步骤,正是体现了计算机的()能力。A、算术运算能力B、逻辑运算能力C、分布式运算能力D、记忆存储能力\n6、下面关于算法的描述,正确的是()A、算法不可以用自然语言描述B、算法只能用框图来描述C、一个算法必须保证它的执行步骤是有限的D、算法的框图表示法有0个或多个输入,但只能有一个输出7、下面关于算法的描述,正确的是()A、一个问题只有一个算法B、一个问题可能有多种算法C、能解决问题的算法都是好算法,没优劣之分D、算法不是程序设计所必需的8、下列关于算法的叙述,正确的是()A、解决一个问题的算法只有一种B、有穷性是算法的基本特征之一C、可行性不属于算法基本特征D、算法对程序设计没有任何作用9、下列关于算法的叙述,正确的是()A、解决一个问题的算法只有一种B、算法必定有一个或一个以上的输出C、算法中可以存在不确切的步骤D、描述算法的步骤可以是无穷的10、从以下计算S的算法可以看出,S的代数式表示是()①变量S的初值是0;②变量I从1起循环到N;③循环表达式为S=S+(-1)*i;④输出变量S的值A.1-2+3-4+…+(-1)N*(N-1)B.1-2+3-4+…+(-1)N-1*nC.1+2+3+4+…+(n-1)+nD.-1-2-3-4-…-(n-1)-n11、下列选项都是属于高级语言的是()A、汇编语言机器语言B、Basic语言Pascal语言C、汇编语言Basic语言D、机器语言Pascal语言12、下列选项都是属于低级语言的是()A、汇编语言机器语言B、Basic语言Pascal语言C、汇编语言Basic语言D、机器语言Pascal语言13、________是计算机能直接识别,理解执行的语言。A、汇编语言B、Pascal语言C、Basic语言D、机器语言14、下列关于程序设计言中机器语言的说法,正确的是()A、VisualBasic属于机器语言的一种\nB、机器语言就是VisualBasicC、机器语言比高级语言更早出现D、高级语言比机器语言更早出现15、下列选项中,最先出现的程序设计语言是()A、汇编语言B、高级语言C、VisualBasicD、机器语言16、不能被计算机直接识别,理解执行的语言需要转换,这种转换是()A、人工转换或机器转换B、计算机语言提供的解释器或编译器负责转换C、操作系统负责转换D、人工智能技术中的自然语言理解二、简答题1、简述什么是计算机程序、程序设计、程序设计语言、算法2、简述算法的特征。3、简述程序设计语言的发展历程4、高级语言编制的源程序计算机无法直接识别,必须经过转换才能被计算机执行。请问有哪些转换方式,这些方式有什么区别?三、阅读流程图,写出其处理的任务问题开始输入正整数n赋初值s=0i=1s=s+ii=i+1i>n吗输出s的值结束否是1、该流程图处理的任务是:备注:xmody是x除y的余数,如10mod4余数是22、该流程图处理的任务是:开始输入正整数n赋初值s=0i=1s=s+ii=i+1i>n吗输出s的值结束否是\n四、用流程图表示如下问题的算法,由键盘输入两个整数a、b,输出其中较大的数。主题一利用计算机解决问题的基本过程同步集训答案一选择题:1、D2、C3、A4、B5、B6、C7、B8、B9、B10、D11、B12、A13、D14、C15、D16、B1、简答题1、计算机程序就是指计算机如何去解决问题或完成任务的一组机器操作的指令或语句的序列,是算法的一种描述,简称程序。程序设计就是寻求解决问题的方法,并将其实现步骤编写成计算机可以执行的程序的过程。程序设计语言泛指一切用于书写计算机程序的语言。算法就是解决问题的方法和步骤。2、一个算法应该具有以下特征:1)有穷性:一个算法必须保证它的执行步骤是有限的,即它是能终止的。2)确定性:算法中的每一个步骤必须有确切的含义,而不应当是模糊的,模棱两可的。3)可行性:算法的每一步原则上都能精确运行4)有零个或多个输入:所谓输入是指算法在执行时需要从外界获得数据,其目的是为算法建立某些初始状态。如果建立初始状态所需的数据已经包含在算法中了,那就不再需要输入了。5)有一个或多个输出:算法的目的是用来求解问题的,问题求解的结果应以一定的形式输出。3、计算机语言的发展经历了从机器语言、汇编语言到高级语言的历程4、高级语言源程序翻译成机器语言程序的方法有“解释”和“编译”两种。解释方法采用边解释边执行的方法,如早期的BASIC语言即采用解释方法,在执行BASIC源程序时,解释一条BASIC语句,执行一条语句。编译方法采用相应语言的编译程序,先把源程序编译成指定机型的机器语言目标程序,然后再把目标程序和各种标准库函数连接装配成完整的目标程序,在相应的机型上执行。如C、C++、VisualC++及VisualBasic等均采用编译的方法。编译方法比解释方法更具有效率。三、阅读流程图,写出其处理的任务问题1、该流程图处理的任务是:输入两个数a和b,求出它们的最大公约数并输出。2、该流程图处理的任务是:输入一个数n,计算并输出1到n的和四、用流程图表示如下问题的算法\n主题二程序设计基础点击考点1、能够使用可视化程序开发工具设计简单的用户界面。2、知道常用的数据类型、变量、常量的含义;学会定义常量、变量的数据类型。3、知道程序中运算符、函数、表达式的表示方式,能够转换数学表达式为程序接受的表达式。4、学会使用顺序结构设计程序的基本方法。5、学会使用选择结构设计程序的基本方法。6、学会使用循环结构设计程序的基本方法。7、了解程序的编辑与翻译过程方法,比较编译型语言与解释型语言的优势与不足。考点注解1、能够使用可视化程序开发工具设计简单的用户界面。VisualBasic是可视化程序设计语言。可视化程序让程序设计人员利用软件提供的各种控件,像搭积木式地构造应用程序的各种界面。VB的集成开发环境如下:面向对象的程序设计以对象为中心,以事件为过程执行起点。在可视化程序开发环境中,文本框、标签、命令按钮等控件都叫对象。对象的特征称为对象的属性。在对象上发生的事情称为事件,常用的有单击(click),双击(dblclick),加载(load),按键(keypress)等对象能够执行的操作叫方法。如form1.cls的作用是清除窗体form1中的内容。2、知道常用的数据类型、变量、常量的含义;学会定义常量、变量的数据类型。数据是程序处理的对象,不同类型的数据有不同的处理方法。数据可以依照类型进行分类。数据类型用于确定一个变量所具有的值在计算机内的存储方式,以及对变量可以进行何种操作。VB语言的数据类型比较丰富,此外还可以通过数据类型定义语句在基本数据类型的基础上定义新的数据类型(自定义数据类型)。VB数据类型\n常量在程序执行过程中,其值不能改变的量称为常量。常量可以直接用一个数来表示,称为常数(或称为直接常量),也可以用一个符号来表示,称为符号常量。1)直接常量(常数)各种数据类型都有其常量表示,如表所示。2)符号常量常量在程序中也可用符号表示。符号常量的定义格式如下:[访问权限]Const<常量名>[As数据类型]=<数值>如:ConstPIAsSingle=3.1416表示定义PI为符号常量,代表单精度型数值3.1416。变量\n在程序执行过程中,其值可以改变的量称为变量。1)变量的命名规则(1)变量名首字符必须是字母;(2)变量名只能由字母、数字和下划线组成;(3)变量名不能使用VB中的关键字(保留字);(4)变量名在同一个作用域内必须唯一;(5)变量名长度不超过255;(6)变量的命名最好还应遵守一定的编程约定。2)变量的作用域变量的作用域是指变量的有效范围,根据变量说明方式的不同,变量有三个作用域,见表3)变量定义语句(1)定义模块或过程局部变量Dim<变量名>As<类型>[,<变量名>As<类型>]…(2)定义全局变量Public<变量名>As<类型>[,<变量名>As<类型>]…1、知道程序中运算符、函数、表达式的表示方式,能够转换数学表达式为程序接受的表达式。运算符是在代码中对各种数据进行运算的符号。例如,有进行加、减、乘、除算术运算的运算符,有进行与、或、非、异或逻辑运算的运算符。表达式是由运算符和运算对象及圆括号组成的一个序列,它是由常量、变量、函数等用运算符连接而成的式子。表达式是构成程序代码的最基本要素。1)赋值运算符赋值语句的语法格式为:<变量名>=<表达式>例如:Count=5。2)算术运算符与算术表达式(1)算术运算符VB中算术运算符有+(加)、-(减)、*(乘)、/(除)、\(整除)、mod(模运算,求余数)和^(幂)。(2)算术运算符及优先级:^(乘方)→*、/→\(整除)→mod(取余)→+、-(3)算术表达式:用算术运算符和括号将运算对象连接起来的式子称为算术表达式。运算运算对象可以是常量、变量或函数等。例如:DimaAsInteger,xAsSinglea=5x=a^2*a-1.5+a\2+aMod2运算结果为X=5^2*5-1.5+5\2+5mod2=125-1.5+2+1=126.53)字符串运算符\nVB中的字符串运算符主要用来将两个字符串连接成一个字符串。VB提供了两个字符串运算符:“&”和“+”。如:"中国"&"江苏""中国"+"江苏"结果均为"中国江苏"4)关系运算符与关系表达式(1)关系运算符VB的关系运算符用于对两个数据进行比较,其运算结果为逻辑值True或False。关系运算符有:=、<>、<、>、>=、<=、IS(用于比较两个对象的引用变量)。(2)关系表达式:由常量、变量、函数等用关系运算符连接而成的式子称为关系表达式。例如:DimaAsInteger,bAsInteger,xAsBooleana=3b=5x=a3And3>1NotxOr(b>c)逻辑表达式的值是一个逻辑值,用True或False来表示。例如,逻辑表达式5>3And3>1,其结果为True。6)运算规则运算符优先级运算符的优先级:算术运算符→字符运算符→关系运算符→逻辑运算符→赋值运算符。\n算术函数字符函数转换函数日期与时间函数\n1、学会使用顺序结构设计程序的基本方法。按照语句代码出现的先后顺序依次执行的程序结构称为顺序结构,如图所示2、学会使用选择结构设计程序的基本方法。在一种以上可能的操作中按条件选取一个执行的结构称为分支结构。(1)两路分支:在两种可能的操作中按条件选取一个执行的结构称为两路分支结构,也称双分支结构。左图为双分支结构流程图。(2)多路分支:在多种可能的操作中按条件选取一个执行的结构称为多分支结构。右图为多分支结构流程图,执行时从B1至Bn依次判断每个条件是否成立,成立时,就执行相应的操作,如果所有条件都不成立,就执行Sn+1操作。VB中用于实现分支结构程序设计的语句有两种,即If与Select语句。1、If语句\nVB中有三种形式的If语句,分别是单分支、双分支和多分支If语句。1)单分支If语句单分支If语句的使用格式通常是:If<条件>Then<语句>EndIf2)双选条件语句If<条件>Then<语句1>Else<语句2>EndIf执行过程:当表达式的值为真时,执行语句1,否则执行语句2。3)多选条件语句If<条件>Then<语句1>ElseIf<条件2>Then<语句2>.…… ElseIf<条件n-1>Then<语句n-1>Else<语句n>EndIf2、SelectCase语句当程序中分支较多,尤其需要多重嵌套的时候,使用If分支语句比较冗长,而且结构也不清晰,为此VB提供了一种更加简洁的分支语句SelectCase。该语句对一个结果的多种情况进行判断,语法格式如下:SelectCase<条件表达式>Case<表达式1><语句1>Case<表达式2><语句2>…… Case<表达式n-1><语句n-1>CaseElse<语句n>EndSelect1、学会使用循环结构设计程序的基本方法。按条件重复执行一种操作的结构称为循环结构。循环结构有两种形式,即当型循环结构和直到型循环结构。(1)当型循环结构:先进行判断,然后根据判断结果(真或假)再决定是否执行循环体的循环结构称为当型循环结构,如左图所示。(2)直到型循环结构:先执行一次循环体,然后再根据判断结果(真或假)决定是否继续执行循环体的循环结构称为直到型循环结构,如下图所示。\n从上述两种循环结构的流程图可以看出,对于当型循环结构,程序有可能一次也不执行循环体;对于直到型循环结构,程序至少要执行一次循环体。循环语句实现循环结构。VB中循环语句有两种:Do…Loop语句和For…Next语句。Do…Loop语句是条件型循环,当循环的执行是由条件控制,在循环的次数不确定时通常选用该语句;For语句是计数循环,在循环次数已知时选用该语句。1、Do…Loop语句(1)当型循环语句① DoWhile…Loop语句语句格式为:DoWhile<条件表达式>语句LoopDoWhile…Loop语句的执行过程是,先计算条件表达式的值,当其值为True时,执行循环体中的语句序列,然后再重新计算条件表达式的值,当条件表达式的值为False时,循环终止,执行Loop语句后的语句。②DoUntil…Loop语句语句格式为:DoUntil<条件>语句LoopDoUntil…Loop语句的执行过程是,先计算条件表达式的值,当其值为False时,执行循环体中的语句序列,然后再重新计算条件表达式的值,直到条件表达式的值为True时,循环终止,执行DoUntil…Loop语句的下一条语句。(2)直到型循环语句①Do…LoopWhile语句语句格式为:Do语句LoopWhile<条件>Do…LoopWhile语句的执行过程是:先执行循环语句,再判断条件表达式的值,当条件条件表达式的值为True时继续执行循环体,当条件表达式的值为False结束循环,转而执行LoopWhile后面的语句。②Do…LoopUntil语句语句格式为:Do语句Loop\nUntil<条件>Do…LoopUntil语句的执行过程是:先执行循环语句,再判断条件表达式的值,当条件条件表达式的值为False时继续执行循环体,直到条件为True结束循环转而执行LoopUntil后面的语句。2、For…Next语句在循环次数已知的情况下,采用For…Next语句实现循环结构是比较合适的选择。For…Next语句的格式如下:For<循环变量>=初值To终值[Step步长]<语句>[ExitFor]<语句>Next<循环变量>1、了解程序的编辑与翻译过程方法,比较编译型语言与解释型语言的优势与不足。高级语言与自然语言和数学表达式相当接近,不依赖于计算机型号,通用性较好。高级语言的使用,大大提高了程序编写的效率和程序的可读性。与汇编语言一样,计算机无法直接识别和执行高级语言,必须翻译成等价的机器语言程序(称为目标程序)才能执行,高级语言源程序翻译成机器语言程序的方法有“解释”和“编译”两种。解释方法采用边解释边执行的方法,如早期的BASIC语言即采用解释方法,在执行BASIC源程序时,解释一条BASIC语句,执行一条语句。编译方法采用相应语言的编译程序,先把源程序编译成指定机型的机器语言目标程序,然后再把目标程序和各种标准库函数连接装配成完整的目标程序,在相应的机型上执行。如C、C++、VisualC++及VisualBasic等均采用编译的方法。编译方法比解释方法更具有效率。同步集训一、单项选择题1.以下窗口可以在设计时直观的调整窗口在屏幕上的位置 ( )A.代码窗口 B.窗体布局窗口C.窗体设计窗口 D.属性窗口2.在VisualBasic中,所有的窗体和控件都必定具有一个属性是 ( )A.N ameB.FontC.CaptionD.Fillcolor3.VisualBasic窗体设计器的主要功能是: ( )A.建立用户界面B.编写源程序代码C.画图 D.显示文字4.VisualBasic中窗体文件的扩展名是 ( )A.VBPB.FRMC.VBWD.PDM5.当一个工程含有多个窗体时,其中的启动窗体是( )A.启动VisualBasic时建立的窗体B.第一个添加的窗体C.最后一个添加的窗体D.在“工程属性”对话框中指定的窗体6.在窗体上画一个名称为Label1的标签。当单击标签时,在标签中显示“我喜欢学习VB语言”。下列能实现上述功能的程序是 ( )A.PrivateSubLabel1_Click()Label1.Caption="我喜欢学习VB语言"\nEndSubB.PrivateSubForm1_Click()Label1.Caption="我喜欢学习VB语言"EndSubC. PrivateSubLabel1_Click()Label1.Enabled="我喜欢学习VB语言"EndSubD. PrivateSubLabel1_Click()Label1.Visible="我喜欢学习VB语言"EndSub7.VisualBasic中工程文件的扩展名是 ( )A.VBPB.FRMC.VBWD.PDM8.下面的四个VB逻辑表达式语法中,正确的是()A.x>y.And.x<>yB.x>y~zC.x>yAnd<>zD.x>yAndy<>z9.表达式”123”+”A”&100的值是()A.123100B.123A100C.”123A100”D.123010010.代数式ab2÷(5c+d)的VB表达式是()A.a*b^b/(5c+d)B.a×b×b/(5×c+d)C.a*b*b/5*c+dD.a*b*b/(5*c+d)11.按变量名的命名规则,下面字符中不能用于构成变量名的是()A.字母B.数字C.下划线D.空格12.在程序中用到某一整型变量的数据范围为-32768~40000,则该变量类型应声明为()A.IntegerB.ByteC.LongD.Double13.设a=2,b=3,c=4,d=5,表达式3>2*bORa=cANDb<>cORc>d的值是 ( )A.1B.-1C.FalseD.True14.实现数值转换字符串的函数是 ( )A.STR()B.CHR()C.VAL()D.ASC()15.实现字符串转换数值的函数是 ( )A.STR()B.CHR()C.VAL()D.ASC()二、填空题1.在窗体上画一个标签按钮(名称为Label1),编写如下事件过程:PrivateSubLabel1_Click()Dima,b,cAsIntegerb=5c=6Printa=b+c\nEndSub程序运行后,单击标签,输出的结果是:______________。2.VB应用程序中窗体文件的扩展名是____________。3.VB是一种面向对象的程序设计语言,构成对象的三要素是___________、__________、___________。4.下列程序段执行后,a=5b=9c=14a=a+bc=c-b则a=_______、b=_________、c=__________。5.若X=-1,则Abs(X)=_________。6.表达式8<>5+3OrNot10>12–3的值是_________。7.表达式9^2Mod6^3\3^2的值为__________。8.若s=”IamJohn”,则LEN(s)的值为_________。9.ABS(-2)+SQR(16)=__________。10.补充完善下列程序段①从键盘输入圆的半径R,输出圆的周长L和面积S。DimRAsSingleDimLAsSingleDimSAsSingle_____=InputBox("输入半径R") L=2*3.14*RS=3.14*R*RPrint"圆的周长L=";LPrint"圆的面积S=";S②计算旅客的行李费,收费标准为:20千克以下(包括20千克)不收费,超过20千克的部分每千克收20元。X表示行李重量,Y表示行李费。 DimXAsSingle DimYAsSingle X=InputBox("输入行李重量") If________ Then Y=0 Else Y=20*(X-20) EndIf Print"行李费=";Y③求s=2+4+6+……+100之和。DimiAsIntegerDimsAsIntegers=0Fori=2To100Step2 s=_________\nNextiPrints④输出100以内(包含100)能被3整除的数。DimIAsIntegerI=1Do If I Mod3=0ThenPrintI EndIfI=I+1LoopUntil_________⑤.有一张单据上有一个5位数的号码67□□8,其中百位和十位上的数字看不清了,但知道该数能够被78整除,也能被67整除,下面是用穷举法求出该号码的程序段:DimaAsInteger,bAsIntegerDimnAsLongFora=0To9 Forb=0To① n=67008+② *100+b*10 If n Mod78=0③n Mod67=0 Then Print ④ EndIf NextbNexta请将应填写的内容写在下面相应的空格内并运行程序写出该号码(每空3分,共12分)。①_____________②_____________③_____________④_____________主题二程序设计基础同步集训答案一选择题:1、B2、A3、A4、B5、D6、A7、A8、D9、B10、C11、D12、C13、C14、A15、C16、B二、填空题1、111、frm2、属性、事件、方法3、a=14b=9c=54、x=15、False6、97、98、69、1)r2)x<=203)s+i4)i=1005)9aandn\n主题三算法与程序实现点击考点1、理解解析法的基本思想。2、了解枚(穷)举算法求解问题的过程3、了解使用数组存储批量数据的基本方法4、理解顺序查找、二分查找算法思想5、了解一到两种经典排序算法思想(如插入排序、冒泡排序)。6、了解递归思想与递归的数学意义。考点注解1、理解解析法的基本思想。所谓解析法(analysisalgorithm)是指用解析的方法找出表示问题的前提条件与结果之间关系的数学表达式,并通过表达式的计算来实现问题求解。解析法举例:【出租车计费】某城市的出租车计费标准为起步价10元(3公里内),此外,在3公里到10公里之间每公里2.1元,超过10公里部分每公里3元,输入行车距离x,输出车费y。编写数学表达式:设车程数为X公里,车费为Y元,则Y=10(x<=3)10+2.1*(x-3)(310)VB代码:Privatsubcommand1_click()Dimx,yassingleX=val(inputbox("请输入行车距离"))Ifx<=3thenY=10Elseifx>3andx<=10thenY=10+2.1*(x-3)ElseY=10+2.1*7+3*(x-10)EndifPrintyEndsub小结:用解析法解决问题的关键就是找到求解问题的解析表达式。2、了解枚(穷)举算法求解问题的过程穷举法也叫枚举法或列举法。在研究对象是由有限个元素构成的集合时,把所有对象一一列举出来,再对其一一进行研究。带入实际,一个个检验是否符合,穷举完所有对象问题将最终得以解决。这种方法一般在计算机中运用,因为计算机计算速度快,可以很快验证答案是否正确。穷举法举例:百钱买百鸡问题。用100元钱买100只鸡,公鸡每只5元,母鸡每只3元,小鸡3只1元,要求每种都买,问能买公鸡、母鸡、小鸡各买几只?算法分析:\n设x为公鸡数量,取值从1只到20只,y为母鸡的数量,取值从1只到33只,z为小鸡的数量,判断5元*x+3元*y+z/3是否等于100元,输出每次符合条件的x,y,z即为所求。VB代码:Privatsubcommand1_click()Dimx,y,zasintegerForx=1to20step1Fory=1to33step1z=100-x-yIf5*x+3*y+z/3=100thenPrintx,y,zNextyNextxEndsub小结:穷举法的思路与解题步骤穷举法的基本思路:把问题涉及的可能情况一一罗列出来,并且根据题目的条件和实际背景逐个作出判断,从中挑选出符合条件的解答。穷举法的解题步骤:1)、分析问题,找出条件与未知数,确定变量;2)、列举出变量所有可能的情况,用循环或循环的嵌套实现;3)、写出符合条件的判断语句,用选择语句实现;4)、输出符合条件的情况;5)、优化程序。1、了解使用数组存储批量数据的基本方法。数组在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。在VB中定义数组的格式为:Dim数组名(常量)as数据类型下面举例说明定长数组的定义:①Dima(1to3)AsInteger②Dimb(5to9)AsString③Dimc(7)AsInteger其中,例①定义了一个具有三个元素的整型数组,其下标从1到3。例②定义了一个具有五个元素的字符型数组,其下标从5到9。例③缺省了下界,它定义了一个具有八个元素的整型数组,其下标从0到7。数组的赋值一般是通过循环来完成的。例如Fori=0to50step1Chinese(i)=100Nexti数组元素是组成数组的基本单元。数组元素也是一种变量,其标识方法为数组名后跟一个下标。下标表示了元素在数组中的顺序号。数组中的数据在逻辑上应该是相互关联的。2、理解顺序查找、二分查找算法思想【顺序查找】\n所谓顺序查找就是从数组的第一个数开始,逐个与要查找的数进行比较,如果相同则输出找到的信息。以下程序是随机生成num个整数放在数组d中,然后输入一个数,在数组d中顺序查找,如果找到就输出在数组中的位置,否则输出在数组中没有找到的信息。Dimd(1To1000)AsIntegerDimnumAsIntegerPrivateSubCommand1_Click()'生成随机数按钮num=Val(Text1.Text)Ifnum<=0Ornum>=1000ThenText1.Text="数据个数不符合"ExitSubEndIfRandomize'初始化随机函数List1.ClearFori=1Tonumj=Round(Rnd*1000)'rnd函数生成一个[0,1)之间的随机数List1.AddItemStr(i)+""+Str(j)d(i)=jNextEndSubPrivateSubCommand3_Click()Key=Val(Text2.Text)j=1DoWhilej<=numIfd(j)=KeyThenLabel5.Caption="在数组的"+Str(j)+"位置中"ExitDoEndIfj=j+1LoopIfj=num+1ThenLabel5.Caption="在数组中没有找到"+Str(Key)EndIfEndSub【二分查找】又称折半查找,它是一种效率较高的查找方法。【二分查找要求】:1.必须采用顺序存储结构2.必须按关键字大小有序排列。 【优缺点】折半查找法的优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。 【算法思想】首先,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。 重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。\n以下程序是在上面的command1_click中随机生成num个整数放在数组d中,然后使用冒泡排序方法将数组d中的数从小到大排好序,然后输入一个数,在数组d中二分查找,如果找到就输出在数组中的位置,否则输出在数组中没有找到的信息。Dimd(1To1000)AsIntegerDimnumAsIntegerPrivateSubCommand1_Click()'生成随机数按钮num=Val(Text1.Text)Ifnum<=0Ornum>=1000ThenText1.Text="数据个数不符合"ExitSubEndIfRandomize'初始化随机函数List1.ClearFori=1Tonumj=Round(Rnd*1000)'rnd函数生成一个[0,1)之间的随机数List1.AddItemStr(i)+""+Str(j)d(i)=jNextEndSubPrivateSubCommand2_Click()'冒泡排序按钮List2.ClearFori=1Tonum-1'冒泡排序递增Forj=1Tonum-iStep1Ifd(j)>d(j+1)Then'如果下个数据小,则于上一个数据交换temp=d(j)d(j)=d(j+1)d(j+1)=tempEndIfNextjNextiFori=1Tonum'在列表2中显示排序后的数据List2.AddItemStr(i)+""+Str(d(i))NextiEndSubPrivateSubCommand4_Click()Key=Val(Text2.Text)i=1j=numDoWhilei<=jM=(j+i)\2Ifd(M)=KeyThenLabel6.Caption="在数组的"+Str(M)+"位置中"\nExitSubEndIfIfd(M)=1000ThenText1.Text="数据个数不符合"ExitSubEndIfRandomize'初始化随机函数List1.ClearFori=1Tonumj=Round(Rnd*1000)'rnd函数生成一个[0,1)之间的随机数List1.AddItemStr(i)+""+Str(j)d(i)=jNextEndSubPrivateSubCommand2_Click()'冒泡排序按钮List2.ClearFori=1Tonum-1'冒泡排序递增Forj=1Tonum-iStep1Ifd(j)>d(j+1)Then'如果下个数据小,则于上一个数据交换temp=d(j)d(j)=d(j+1)d(j+1)=tempEndIfNextjNextiFori=1Tonum'在列表2中显示排序后的数据List2.AddItemStr(i)+""+Str(d(i))NextiEndSub\n【选择排序】(BubbleSort)的基本概念是:(1)从n个数中选出最小数的下标,出了循环,将最小数与第一个数交换位置;(2)除第一个数外,在剩下的n-1个数中再按方法(1)选出次小的数,与第二个数交换位置;(3)以此类推,最后构成递增序列。选择排序算法步骤:1、从原始数列{a1,a2,a3,…,an}开始进行排序,比较n-1次,从中选出最小关键字,放在有序数列中形成{a1}、{a2,a3,…,an}有序数列和无序数列两部分,完成第1趟排序。2、处理第i趟排序时(i=2,3,…,n),从剩下的n-i+1个元素中找出最小关键字,放在有序数列的后面3.重复第二步,共进行n-1趟的选择处理,数列全部有序。选择排序举例:设有数列{18,12,10,12,30,16}初始状态:{},{18,12,10,12,30,16} 比较次数i=1 {10},{18,12,12,30,16} 5i=2 {10,12},{12,18,30,16} 4i=3{10,12,12},{18,30,16} 3i=4{10,12,12,16},{18,30} 2i=5 {10,12,12,16,18},{30} 1总计: 15次比较次数,5次交换次数以下代码是用选择法为随机产生的10个数字排序:PrivateSubCommand1_Click()Dima(1To10)AsIntegerRandomize‘随机产生10个整数Fori=1To10a(i)=Int(Rnd*10)Printa(i),NextiPrintFori=1To9‘10个数选择9趟k=iForj=i+1To10Ifa(k)>a(j)Thenk=j‘将选择出来的小树的坐标放入k中EndIfNextjt=a(i):a(i)=a(k):a(k)=t‘将选择出来Nexti的小树a(k)与a(i)交换Fori=1To10Step1‘输出10个从小到Printa(i),大排好序的数NextiEndSub【选择法排序】总结:\n选择法排序每一次选取一个最小值,在每次比较时先不进行交换,一趟比较完成后再和假想的极值交换,提高了排序效率。【冒泡排序】和【选择法排序】的区别:冒泡和快速排序的区别在于:冒泡算法,每次比较如果发现较小的元素在后面,就交换两个相邻的元素。将待排序的元素看作是竖着排列的"气泡",较小的元素比较轻,从而要往上浮。在冒泡排序算法中我们要对这个"气泡"序列处理若干遍。所谓一遍处理,就是自底向上检查一遍这个序列,并时刻注意两个相邻的元素的顺序是否正确。如果发现两个相邻元素的顺序不对,即"轻"的元素在下面,就交换它们的位置。显然,处理一遍之后,"最轻"的元素就浮到了最高位置;处理二遍之后,"次轻"的元素就浮到了次高位置。在作第二遍处理时,由于最高位置上的元素已是"最轻"元素,所以不必检查。一般地,第i遍处理时,不必检查第i高位置以上的元素,因为经过前面i-1遍的处理,它们已正确地排好序。而选择排序算法的改进在于:先并不急于调换位置,先从A[1]开始逐个检查,看哪个数最小就记下该数所在的位置P,等一躺扫描完毕,再把A[P]和A[1]对调,这时A[1]到A[10]中最小的数据就换到了最前面的位置。所以,选择排序每扫描一遍数组,只需要一次真正的交换,而冒泡可能需要很多次。比较的次数是一样的。1、了解递归思想与递归的数学意义。递归算法是把问题转化为规模缩小了的同类问题的子问题。然后递归调用函数(或过程)来表示问题的解。 递归过程一般通过函数或子过程来实现。 递归算法:在函数或子过程的内部,直接或者间接地调用自己的算法。递归算法的特点递归算法是一种直接或者间接地调用自身的算法。在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解。递归算法解决问题的特点: 1、递归就是在过程或函数里调用自身。 2、在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。 3、递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序。 4、在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。所以一般不提倡用递归算法设计程序。递归算法要求递归算法所体现的“重复”一般有三个要求: 一是每次调用在规模上都有所缩小(通常是减半); 二是相邻两次重复之间有紧密的联系,前一次要为后一次做准备(通常前一次的输出就作为后一次的输入); 三是在问题的规模极小时必须用直接给出解答而不再进行递归调用,因而每次递归调用都是有条件的(以规模未达到直接解答的大小为条件),无条件递归调用将会成为死循环而不能正常结束。如何设计递归算法1、确定递归公式 2、确定边界(终了)条件\n用递归解决问题:年龄问题:有5个人,第5个人的年龄比第4个的年龄大2岁,第4个人的年龄比第3个的年龄大2岁,第3个人的年龄比第2个的年龄大2岁,第2个人的年龄比第1个的年龄大2岁,第1个的年龄10岁。问第5个人年龄多大?算法分析:要想知道第5个人的年龄就必须知道第4个人的年龄,要想知道第4个人的年龄就必须知道第3个人的年龄,要想知道第3个人的年龄就必须知道第2个人的年龄,要想知道第2个人的年龄就必须知道第1个人的年龄,第1个人年龄是10岁,所以第2个人年龄就是10+2=12岁,第2个人年龄是12岁,所以第3个人年龄就是12+2=14岁,第3个人年龄是14岁,所以第4个人年龄就是14+2=16岁,第4个人年龄是16岁,所以第5个人年龄就是16+2=18岁。设计算法:设n为第几个人,显然当n=1时,问题的解为10,而当n〉1时,问题的解可以转化为:2+f(n-1)编写程序:定义一个递归函数f(n)Functionf(nasinteger)asintegerDimfasintegerIfn=1thenf=10Elsef=2+f(n-1)EndifEndfunction调用递归函数f(n)Privatsubcommand1_click()Dimf,nasintegern=inputbox()f=f(n)printfEndsub【递归算法总结】:能采用递归描述的算法通常有这样的特征:为求解规模为N的问题,设法将它分解成规模较小的问题,然后从这些小问题的解方便地构造出大问题的解,并且这些规模较小的问题也能采用同样的分解和综合方法,分解成规模更小的问题,并从这些更小问题的解构造出规模较大问题的解。特别地,当规模N=1时,能直接得解。递归算法\n的执行过程分递推和回归两个阶段。在递推阶段,把较复杂的问题(规模为n)的求解推到比原问题简单一些的问题(规模小于n)的求解。例如上例中,求解f(n),把它推到求解f(n-1)。也就是说,为计算f(n),必须先计算f(n-1),而计算f(n-1),又必须先计算f(n-3)。依次类推,直至计算f(1),能立即得到结果10。在递推阶段,必须要有终止递归的情况。例如在函数f中,当n为1的情况。在回归阶段,当获得最简单情况的解后,逐级返回,依次得到稍复杂问题的解,例如得到f(1)后,返回得到f(2)的结果,……,在得到了f(n-1)的结果后,返回得到f(n)的结果。在编写递归函数时要注意,函数中的局部变量和参数知识局限于当前调用层,当递推进入“简单问题”层时,原来层次上的参数和局部变量便被隐蔽起来。在一系列“简单问题”层,它们各有自己的参数和局部变量。由于递归引起一系列的函数调用,并且可能会有一系列的重复计算,递归算法的执行效率相对较低。同步集训单选题1、使用枚举法解决问题,在列举问题可能解的过程中,____。A.不能遗漏,但可以重复B.不能遗漏,也不应重复C.可以遗漏,但不应重复D.可以遗漏,也可以重复2、鸡、兔共笼问题,有腿共60条,问鸡、兔各有多少只?下面鸡和兔只数最合理的范围是____。(范围确定了循环的起始值和终止值)A.鸡:1到28,兔:1到14B.鸡:2到28,兔:1到14C.鸡:1到28,兔:2到14D.鸡:2到28,兔:2到143.采用盲目的搜索方法,在搜索结果的过程中,把各种可能的情况都考虑到,并对所得的结果逐一进行判断,过滤掉那些不合要求的,保留那些合乎要求的结果,这种方法叫做____。A.递推法B.枚举法C.选择法D.解析法4.以下算法中,需通过多重循环一一列举出解决问题所有可能解,并在逐一列举的过程中,检验每个可能的解是否是问题的真正解的是。而需要从实际问题中归纳出反映事物内在联系的数学公式,就此设计出合适的算法的是。A.解析法穷举法B.递归法解析法C.穷举法解析法D.穷举法递归法5.有5个人,问第5人年龄,说比前面第4人小3岁。问第4、3、2人,都说比前面人小3岁,问第1人,说他的年龄为38岁。问第5人的年龄多大。用递归法解决此问题的正确步骤是()A①定义age(n)函数②函数中当n>1时返回函数值age(n-1)当n=1返回函数值为38B①定义age(n)函数②函数中当n>1时返回函数值age(n-1)-3当n=1返回函数值为38C①定义age(n)函数②函数中不断调用age(n-1)-3D①定义age(n)函数②函数中不断调用age(n)函数自己6.我们在用计算机解决问题时,常采用的算法有解析法、穷举法、递归法、冒泡排序法、选择排序法等,分析下列问题应采用哪种算法解决?一个数除以5余1,除以6余5,除以7余4,除以11余10,求符合这些条件的最小的数是多少?7.某学校图书管理系统中有10万条图书资料记录(已经索引排序),假设从中取出一条记录与待查项进行比较所花的时间为10毫秒,则用对分法在该系统中查找任意一本指定图书最多花费的时间约为()\nA.100万毫秒B.10万毫秒C.10毫秒D.170毫秒8.二分法查找(对半查找)算法,下列正确的是()(A)先将数据按降序或升序排列(B)数据依输入顺序排列(C)应先将数据由小到大排列(D)数据的个数为奇数个9.编程求解1000以内的所有素数,下列算法中最适用的是A二分法B穷举法C.解析法D冒泡排序法二、填空题1.随机产生10个1-100之间的正整数,按从小到大的次序排序并输出。为了实现这一目标,完善下面的VB程序,在划线处填入合适的语句或表达式,完成程序设计SubCommand1_Click()Constn=10DimiAsInteger,jAsInteger,tAsIntegerDima(1To100)AsIntegerFori=1To10a(i)=100*Rnd(1)+iNextiFori=1Ton-1Forj=i+1TonIf_______________Thenk=a(j-1):a(j-1)=a(j):a(j)=kEndIfNextjNextiFori=1To10List1.AddItemStr(a(i))NextiEndSub2.有一张单据上有一个5位数的号码67□□8,其中百位和十位上的数字看不清了,但知道该数能够被78整除,也能被67整除,下面是用穷举法求出该号码的程序段:DimaAsInteger,bAsIntegerDimnAsLongFora=0To9Forb=0To①n=67008+②*100+b*10IfnMod78=0③nMod67=0ThenPrint④EndIfNextbNexta请将应填写的内容写在下面相应的空格内并运行程序写出该号码(每空3分,共12分)。①_____________\n②_____________③_____________④_____________3.有一个数组DATA存放了N个数据,现从中删除了一个元素,其余的元素依次向前递补(假设删除的是第3个元素,则要将第4个元素移到第3个元素处,第5个元素移到第4个元素处,以此类推),然后输出数组内容。填写程序中的空缺PrivateSubCommand1_Click()Dimdata(10)AsIntegerDimI,N,TAsIntegerN=10ForI=1ToNdata(I)=I*2NextIT=InputBox("删除第几个元素")ForI=____________________data(I-1)=data(I)NextI__________________ForI=1ToNPrintdata(I);NextIEndSub4.写出下列程序的输出结果PrivateSubCommand1_Click()Printf(100,8)EndSubPublicFunctionf(ByValn%,ByValr%)Ifn<>0Thenf=f(n\r,r)PrintnModrEndIfEndFunction主题三算法与程序实现同步集训答案一选择题:1、B2、B3、B4、C5、B6、穷举法7、D8、A11、B11、D填空题1、a(j-1)>a(j)2、9aandn3、t+1tonn=n-14、441\n主题四程序设计思想和方法点击考点1、了解模块化程序设计的基本思想和方法2、了解面向对象程序设计的思想和方法3、了解面向对象程序设计的基本特征考点注解1、了解模块化程序设计的基本思想和方法1)模块化程序设计的基本思想:在程序设计过程中,为了有效地完成任务,把所要完成的任务精心分割成若干相对独立,但相互仍可有联系的任务模块,这样的任务模块还可以继续细分成更小的模块。直至那些小模块变得任务相对单纯,对外的数据交换相对简单,容易编写,容易检测,容易阅读和维护。在VB语言中,使用函数和过程来实现被细分了的各个模块的代码2)模块化程序设计方法:在设计程序求解问题时,首先要对问题从整体的角度进行分析,将其分解成几个有机的组成部分,如果某些部分还比较复杂可再分解,经过逐步分解和细化后,将一个大而复杂的问题,从总体到局部,逐步分解为若干个小的可解的基本问题,再通过求解这些基本问题最终求解得原问题的解。模块化程序设计方法反映了结构化程序设计的“自顶而下,逐步求精”的基本思想。3)模块划分原则:使每个模块都容易解释。设计程序系统时使用按功能划分模块的方法,使模块的内聚度强,耦合度弱(独立性比较高)。4)采用模块化方法得到的系统是由互相连接的模块构成的。进行模块化程序设计时,提倡按层次结构组织各模块。VB中过程与函数使用举例如下:1、自定义函数格式:PublicFunction函数名(形式参数表)As类型语句组函数名=表达式EndFunction注意:(1)形式参数表中的参数是自变量(2)第一个语句的“As类型”指明函数值勤的数据类型(3)“函数名=表达式”是一个赋值语句(4)可用ExitFunction退出自定义函数调用:与内部函数一样例:求三个数的平均数的自定义函数:PublicFunctionave(aAsInteger,bAsInteger,cAsInteger)AsSingleave=(a+b+c)/3EndFunction调用自定义函数如下:PrivateSubCommand1_Click()DimaAsInteger,bAsInteger,cAsIntegera=InputBox("input")b=InputBox("input")c=InputBox("input")x=ave(a,b,c)‘调用自定义函数AVE()Print"平均数为";xEndSub2、自定义过程格式:PrivateSub子过程名(形式参数表)语句组(过程体)EndSub调用:子过程名实际参数表例:PrivateSubaverage(aAsInteger,bAsInteger,cAsInteger,aveAsSingle)ave=(a+b+c)/3EndSub调用:PrivateSubCommand2_Click()DimaAsInteger,bAsInteger,cAsInteger,xAsSinglea=InputBox("input")b=InputBox("input")c=InputBox("input")averagea,b,c,x‘子过程average的调用Print"平均数为";xEndSub\n2、了解面向对象程序设计的思想和方法二、面向对象,VB采用了面向对象的程序设计思想。它的基本思路是把复杂的程序设计问题分解为一个个能够完成独立功能的相对简单的对象集合,所谓“对象”就是一个可操作的实体,如窗体、窗体中的命令按钮、标签、文本框等。面向对象的编程就好像搭积木一样,程序员可根据程序和界面设计要求,直接在屏幕上“画"出窗口、菜单、按钮等不同类型的对象,并为每个对象设置属性。三、属性属性是对对象特性的描述,VB为每一类对象都规定了若干属性,设计中可以改变具体对象的属性值。比如窗体的背景颜色、高度与宽度。四、事件驱动在Windows环境下,程序是以事件驱动方式运行的,每个对象都能响应多个不同的事件,每个事件都能驱动一段代码——事件过程,该代码决定了对象的功能。通常称这种机制为事件驱动。事件可由用户的操作触发,也可以由系统或应用程序触发。例如,单击一个命令按钮,就触发了按钮的Click(单击)事件,该事件中的代码就会被执行。若用户未进行任何操作(未触发事件),则程序就处于等待状态。整个应用程序就是由彼此独立的事件过程构成。在VB中事件的调用形式是:PrivateSub对象名_事件名(事件内容)EndSub4)方法(Method) 方法指的是控制对象动作行为的方式。它是对象本身内含的函数或过程,它也是一个动作,是一个简单的不必知道细节的无法改变的事件,但不称作事件;同样,方法也不是随意的,一些对象有一些特定的方法。在VB里方法的调用形式是:对象名.方法名属性、方法和事件之间的关系VB对象具有属性、方法和事件。属性是描述对象的数据;方法告诉对象应做的事情;事件是对象所产生的事情,事件发生时可以编写代码进行处理。VB的窗体和控件是具有自己的属性、方法和事件的对象。可以把属性看作一个对象的性质,把方法看作对象的动作,把事件看作对象的响应。在VB程序设计中,基本的设计机制就是:改变对象的属性、使用对象的方法、为对象事件编写事件过程。程序设计时要做的工作就是决定应更改哪些属性、调用哪些方法、对哪些事件作出响应,从而得到希望的外观和行为。事件驱动模型在传统的或“过程化”的应用程序中,应用程序自身控制了执行哪一部分代码和按何种顺序执行代码。从第一行代码执行程序并按应用程序中预定的路径执行,必要时调用过程。在事件驱动的应用程序中,代码不是按照预定的路径执行,而是在响应不同的事件时执行不同的代码片段。事件可以由用户操作触发、也可以由来自操作系统或其它应用程序的消息触发、甚至由应用程序本身的消息触发。这些事件的顺序决定了代码执行的顺序,因此应用程序每次运行时所经过的代码的路径都是不同的。1、了解面向对象程序设计的基本特征面向对象主要特征: 封装性:封装是一种信息隐蔽技术,它体现于类的说明,是对象的重要特性。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性(对象能接受哪些消息,具有那些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。封装的目的在于把对象的设计者和对象者的使用分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息来访问该对象。 \n继承性:继承性是子类自动共享父类之间数据和方法的机制。它由类的派生功能体现。一个类直接继承其它类的全部描述,同时可修改和扩充。继承具有传递性。继承分为单继承(一个子类只有一父类)和多重继承(一个类有多个父类)。类的对象是各自封闭的,如果没继承性机制,则类对象中数据、方法就会出现大量重复。继承不仅支持系统的可重用性,而且还促进系统的可扩充性。 多态性:对象根据所接收的消息而做出动作。同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。利用多态性用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定,如是,同一消息即可调用不同的方法。例如:Print消息被发送给一图或表时调用的打印方法与将同样的Print消息发送给一正文文件而调用的打印方法会完全不同。多态性的实现受到继承性的支持,利用类继承的层次关系,把具有通用功能的协议存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低层次,这样,在这些低层次上生成的对象就能给通用消息以不同的响应。在OOPL中可通过在派生类中重定义基类函数(定义为重载函数或虚函数)来实现多态性。 综上可知,在面对对象方法中,对象和传递消息分别表现事物及事物间相互联系的概念。类和继承是是适应人们一般思维方式的描述范式。方法是允许作用于该类对象上的各种操作。这种对象、类、消息和方法的程序设计范式的基本点在于对象的封装性和类的继承性。通过封装能将对象的定义和对象的实现分开,通过继承能体现类与类之间的关系,以及由此带来的动态联编和实体的多态性,从而构成了面向对象的基本特征。同步集训1、下面选项内不属于描述面向对象程序设计特征的名词是()A、继承性B、多态性C、连续性D、封装性2、模块化程序设计方法反映了结构化程序设计的()基本思想。A.自顶而下、逐步求精B.面向对象C.自定义函数、过程D.可视化编程3、下列属性是每个控件都有的。A、NameB、CaptionC、FontD、Interval4、下列控件中可用于接受用户输入文本,又可用于显示文本的是。A、LabelB、TextBoxC、TimerD、CommandButton5、改变Label中显示的文本内容,要设置的属性是()。A、TextB、BackColorC、CaptionD、(名称)6、改变Text中显示的文本内容,要设置的属性是()。A、TextB、BackColorC、CaptionD、(名称)①②③图17、在图1中,这3个控件名称依次是()。A、Label、TextBox、CommandButtonB、TextBox、Label、CommandButtonC、CommandButton、Label、TextBoxD、CommandButton、TextBox、Label8、双击窗体中的对象后,VB将显示的窗口是()。A、项目(工程)窗口B、工具箱C、代码窗口D、属性窗口9、如果文本框Text1的内容为-12,文本框Text2的内容为7,则下列程序段运行后文本框Text3的内容显示为()。DimxAsSingle,yAsSingle,zAsSinglex=Val(Text1.Text)y=Val(Text2.Text)z=x-yText3.Text=Str(z)A、-5B、7C、-12D、-1910、如果文本框Text1的内容为3,则下列程序段运行后Label1\n的内容显示为()。DimxAsSingle,iAsSingle,sAsDoubles=0x=Val(Text1.Text)Fori=1Toxs=s*iNextiLabel1.Caption=Str(s)A、6B、9C、0D、1主题四程序设计思想和方法同步集训答案一选择题:1、C2、A3、A4、B5、C6、A7、A8、C9、D10、A