当前位置:首页 >> 其它课程 >> 算法与程序设计(高中选修)复习资料

算法与程序设计(高中选修)复习资料


主题一 利用计算机解决问题的基本过程 点击考点
1、了解利用计算机解决问题的基本过程 2、了解问题分析与算法设计之间的关系 3、了解算法的基本特征 4、能用自然语言、流程图或伪代码描述算法 5、了解程序设计语言产生与发展过程

考点注解
1、了解利用计算机解决问题的基本过程

一般来说,用计算机解决一个具体问题时,大致经

过以下几个步骤:首先要从具体问 题抽象出一个适当的数学模型, 然后设计一个解此数学模型的算法, 最后编出程序进行测试 调整直道到最终解答。寻求数学模型的实质就是分析问题,从中提取操作的对象,并找出这 些操作对象之间含有的关系,然后用数学的语言加以描述。 2、了解问题分析与算法设计之间的关系 任何一个问题必须弄清楚其内容、性质、规模,才能找到解决问题的方法,所以分析问 题就是要确定用计算机做什么,接下来,就解决怎么做的问题,也就是算法。 算法就是解决问题的方法与步骤。有了算法才能转化成指令代码,计算机才能按照指令 代码一步一步去执行,直到得到问题的解。 算法是程序设计的灵魂,算法独立于任何一种程序设计语言,一个算法可以用多种程序 设计语言来实现。 一个问题,可能有多种算法 ,应该通过分析、比较、挑选一种最优的算法。一个好算 法必须用到科学的方法 ,应该好好学习各学科处理问题的科学方法。 3、了解算法的基本特征 一个算法应该具有以下特征: 1)有穷性:一个算法必须保证它的执行步骤是有限的,即它是能终止的。 2)确定性:算法中的每一个步骤必须有确切的含义,而不应当是模糊的,模棱两可的。 3)可行性:算法的每一步原则上都能精确运行 4)有零个或多个输入:所谓输入是指算法在执行时需要从外界获得数据,其目的是为算 法建立某些初始状态。 如果建立初始状态所需的数据已经包含在算法中了, 那就不再需要输 入了。 5)有一个或多个输出:算法的目的是用来求解问题的,问题求解的结果应以一定的形式 输出。 4、能用自然语言、流程图或伪代码描述算法 一个算法可以用多种不同的方法来描述。一般用自然语言、流程图、伪代码描述。 1)自然语言 自然语言是人们日常所用的语言,如汉语、英语、德语等。用自然语言描述算法符合

我们的表达习惯,并且容易理解。缺点:书写较烦、 不确定性、 对复杂的问题难以表达准确、 不能被计算机识别和执行。 用自然语言描述一下解决以下问题的算法:借助一个空杯将一杯橙汁和一杯可乐互换 所盛放的杯子。 (1) 橙汁倒入空杯; (2) 可乐倒入刚空出的杯子; (3) 橙汁倒入刚倒出可乐的杯子 2)流程图 流程图是由一些图框和流程线组成的,其中图框表示各种操作的类型,图框中的文字 和符号表示操作的内容,流程线表示操作的先后次序。也称为程序框图,它是算法的一种图 形化表示方法。优点:形象、直观、容易理解。

由键盘输入一个任意值作为 n,求 1 到 n 的累加值。

用流程图的方法描述一下求一元二次方程 ax2+bx+c=0 (其中 a≠0 )的实数解的算法。

Input 三个实数值(其中 a≠0 ) To a,b,c d=b^2-4*a*c If d 大于等于 0 Then X1= ( -b-d ) /2*a X2= ( -b+d ) /2*a 输出 X1 和 X2 的值 Else

输出方程无实数解
3)伪代码 伪代码是介于自然语言和计算机程序语言之间的一种算法描述。 优点:简洁、易懂、修改容易 缺点:不直观、错误不容易排查 比如: IF 九点以前 THEN do 私人事务; ELSE 9点到18点 THEN 工作; ELSE 下班; END IF 这样不但可以达到文档的效果,同时可以节约时间. 更重要的是,使结构比较清晰,表达方式更 加直观. 5、了解程序设计语言产生与发展过程 程序设计语言泛指一切用于书写计算机程序的语言。 计算机语言的发展经历了从机器语言、汇编语言到高级语言的历程,如图1-1所示。

1) 机器语言(Machine Language)

计算机使用的是由“0”和“1”组成的二进制数, 二进制编码方式是计算机语言的基础。 计 算机发明之初, 科学家只能用二进制数编制的指令控制计算机运行。 每一条计算机指令均由 一组“0”、“1”数字,按一定的规则排列组成,若要计算机执行一项简单的任务,需要编 写大量的这种指令。 这种有规则的二进制数组成的指令集, 就是机器语言 (也称为指令系统) 。 不同系列的 CPU,具有不同的机器语言,如目前个人计算机中常用 AMD 公司的系列 CPU 和 Intel 公司的系列 CPU,具有不同的机器语言。 机器语言是计算机唯一能识别并直接执行的语言, 与汇编语言或高级语言相比, 其执行效率 高。但其可读性差,不易记忆;编写程序既难又繁,容易出错;程序调试和修改难度巨大, 不容易掌握和使用。此外,因为机器语言直接依赖于中央处理器,所以用某种机器语言编写 的程序只能在相应的计算机上执行,无法在其他型号的计算机上执行,也就是说,可移植性 差。 2)汇编语言(Assemble Language) 为了减轻使用机器语言编程的痛苦,20世纪50年代初,出现了汇编语言。汇编语言用比较容 易识别、记忆的助记符替代特定的二进制串。下面是几条 Intel80x86的汇编指令:ADD AX , BX ;表示将寄存器 AX 和 BX 中的内容相加,结果保存在寄存器 AX 中。 SUB AX , NUM ;表示将寄存器 AX 中的内容减去 NUM,结果保存在寄存器 AX 中。 MOV AX , NUM ;表示把数 NUM 保存在寄存器 AX 中。 通过这种助记符,人们就能较容易地读懂程序,调试和维护也更方便了。但这些助记符号计 算机无法识别,需要一个专门的程序将其翻译成机器语言,这种翻译程序被称为汇编程序。 汇编语言的一条汇编指令对应一条机器指令, 与机器语言性质上是一样的, 只是表示方式做 了改进,其可移植性与机器语言一样不好。总之,汇编语言是符号化的机器语言,执行效率 仍接近于机器语言,因此,汇编语言至今仍是一种常用的软件开发工具。 3) 高级语言 尽管汇编语言比机器语言方便, 但汇编语言仍然具有许多不便之处, 程序编写的效率远远不 能满足需要。1954年,第一个高级语言—FORTRAN 问世了。高级语言是一种用能表达各种意 义的“词”和“数学公式”按一定的“语法规则”编写程序的语言, 也称为高级程序设计语 言或算法语言。半个多世纪以来,有几百种高级语言问世,影响较大、使用较普遍的有 FORTRAN、A LGOL、COBOL、BASIC、LISP、SNOBOL、PL/1、Pascal、C、PROLOG、Ada、C++、 Visual C++、Visual Basic 、Delphi、Java 等。高级语言的发展也经历了从早期语言到结 构化程序设计语言、面向对象程序设计语言的过程。 高级语言与自然语言和数学表达式相当接近,不依赖于计算机型号,通用性较好。高级语言 的使用,大大提高了程序编写的效率和程序的可读性。 与汇编语言一样, 计算机无法直接识别和执行高级语言, 必须翻译成等价的机器语言程序 (称 为目标程序)才能执行,如图1-2所示。高级语言源程序翻译成机器语言程序的方法有“解 释”和“编译”两种。解释方法采用边解释边执行的方法,如早期的 BASIC 语言即采用解

释方法,在执行 BASIC 源程序时,解释一条 BASIC 语句,执行一条语句。编译方法采用相 应语言的编译程序, 先把源程序编译成指定机型的机器语言目标程序, 然后再把目标程序和 各种标准库函数连接装配成完整的目标程序,在相应的机型上执行。如 C、C++、Visual C++ 及 Visual Basic 等均采用编译的方法。编译方法比解释方法更具有效率。

同步集训
一、选择题 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、记忆存储能力

)能力。

6、下面关于算法的描述,正确的是( ) 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*n C.1+2+3+4+…+(n-1)+n D.-1-2-3-4-…-(n-1)-n 11、下列选项都是属于高级语言的是( ) 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、Visual Basic 属于机器语言的一种





B、机器语言就是 Visual Basic C、机器语言比高级语言更早出现 D、高级语言比机器语言更早出现 15、下列选项中,最先出现的程序设计语言是( ) A、汇编语言 B、高级语言 C、Visual Basic D、机器语言 16、不能被计算机直接识别,理解执行的语言需要转换,这种转换是( ) A、人工转换或机器转换 B、计算机语言提供的解释器或编译器负责转换 C、操作系统负责转换 D、人工智能技术中的自然语言理解 二、简答题 1、简述什么是计算机程序、程序设计、程序设计语言、算法 2、简述算法的特征。 3、简述程序设计语言的发展历程 4、高级语言编制的源程序计算机无法直接识别,必须经过转换才能被计算机执行。请问有 哪些转换方式,这些方式有什么区别? 三、阅读流程图,写出其处理的任务问题 1、 该流程图处理的任务是: 开始 输入正整数 n 赋初值 s=0 i=1 s=s+i 开始 i=i+1 否 i>n 吗 是 输入正整数 n 赋初值 s=0 i=1 s=s+i i=i+1 否 i>n 吗 是

备注:x mod y 是 x 除 y 的余数, 如 10 mod 4 余数是 2 2、该流程图处理的任务是:

输出 s 的值 结束

输出 s 的值 四、用 流程图 表示如下问题的算法,由键盘输入两个 结束

整数 a 、 b,输出其中较大的数。 主题一 利用计算机解决问题的基本过程 同步集训答案 一选择题: 1、D 2、C 3、A4、B5、B6、C7、B8、B9、B10、D11、B 12、A13、D14、C15、D16、B 6、简答题 1、计算机程序就是指计算机如何去解决问题或完成任务的一组机器操作的指令或语句 的序列,是算法的一种描述,简称程序。 程序设计就是寻求解决问题的方法, 并将其实现步骤编写成计算机可以执行的程序的过 程。 程序设计语言泛指一切用于书写计算机程序的语言。 算法就是解决问题的方法和步骤。 2、一个算法应该具有以下特征: 1)有穷性:一个算法必须保证它的执行步骤是有限的,即它是能终止的。 2)确定性:算法中的每一个步骤必须有确切的含义,而不应当是模糊的,模棱两可 的。 3)可行性:算法的每一步原则上都能精确运行 4)有零个或多个输入:所谓输入是指算法在执行时需要从外界获得数据,其目的是 为算法建立某些初始状态。 如果建立初始状态所需的数据已经包含在算法中了, 那就不再需 要输入了。 5)有一个或多个输出:算法的目的是用来求解问题的,问题求解的结果应以一定的 形式输出。 3、计算机语言的发展经历了从机器语言、汇编语言到高级语言的历程 4、高级语言源程序翻译成机器语言程序的方法有“解释”和“编译”两种。解释方法采用 边解释边执行的方法,如早期的 BASIC 语言即采用解释方法,在执行 BASIC 源程序时, 解释一条 BASIC 语句,执行一条语句。编译方法采用相应语言的编译程序,先把源程序编 译成指定机型的机器语言目标程序, 然后再把目标程序和各种标准库函数连接装配成完整的 目标程序,在相应的机型上执行。如 C、C++、Visual C++及 Visual Basic 等均采用编译的方 法。编译方法比解释方法更具有效率。 三、阅读流程图,写出其处理的任务问题 1、该流程图处理的任务是:输入两个数 a 和 b,求出它们的最大公约数并输出。 2、该流程图处理的任务是:输入一个数 n,计算并输出 1 到 n 的和 四、用流程图表示如下问题的算法 主题二 程序设计基础 点击考点 1、 能 够 使 用 可 视 化 程序开发工具设计简单的用 户界面。 2、 知 道 常 用 的 数 据 类型、变量、常量的含义; 学会定义常量、变量的数据

类型。 3、 知道程序中运算符、函数、表达式的表示方式,能够转换数学表达式为程序接 受的表达式。 4、 学会使用顺序结构设计程序的基本方法。 5、 学会使用选择结构设计程序的基本方法。 6、 学会使用循环结构设计程序的基本方法。 7、 了解程序的编辑与翻译过程方法,比较编译型语言与解释型语言的优势与不 足。 考点注解 7、能够使用可视化程序开发工具设计简单的用户界面。 Visual Basic 是可视化程序设计语言。可视化程序让程序设计人员利用软件提供的各种 控件,像搭积木式地构造应用程序的各种界面。VB 的集成开发环境如下:

面向对象的程序设计以对象为中心,以事件为过程执行起点。 在可视化程序开发环境中,文本框、标签、命令按钮等控件都叫对象。 对象的特征称为对象的属性。 在对象上发生的事情称为事件,常用的有单击(click),双击(dblclick),加载(load),按键 (keypress)等 对象能够执行的操作叫方法。如 form1.cls 的作用是清除窗体 form1 中的内容。 8、知道常用的数据类型、变量、常量的含义;学会定义常量、变量的数据类型。 数据是程序处理的对象, 不同类型的数据有不同的处理方法。 数据可以依照类型进行分 类。 数据类型用于确定一个变量所具有的值在计算机内的存储方式, 以及对变量可以进行何 种操作。 VB 语言的数据类型比较丰富,此外还可以通过数据类型定义语句在基本数据类 型的基础上定义新的数据类型(自定义数据类型) 。 VB 数据类型

常量 在程序执行过程中,其值不能改变的量称为常量。常量可以直接用一个数来表示,称为 常数(或称为直接常量) ,也可以用一个符号来表示,称为符号常量。 1)直接常量(常数) 各种数据类型都有其常量表示,如表所示。

2)符号常量 常量在程序中也可用符号表示。 符号常量的定义格式如下: [访问权限] Const <常量名> [As 数据类型]=<数值> 如: Const PI As Single =3.1416 表示定义 PI 为符号常量,代表单精度型数值 3.1416。 变量

在程序执行过程中,其值可以改变的量称为变量。 1)变量的命名规则 ( 1)变量名首字符必须是字母; ( 2)变量名只能由字母、数字和下划线组成; ( 3)变量名不能使用 VB 中的关键字(保留字) ; ( 4)变量名在同一个作用域内必须唯一; ( 5)变量名长度不超过 255; ( 6)变量的命名最好还应遵守一定的编程约定。 2)变量的作用域 变量的作用域是指变量的有效范围,根据变量说明方式的不同,变量有三个作用域,见表

3)变量定义语句 ( 1)定义模块或过程局部变量 Dim <变量名> As <类型> [, <变量名> As <类型>]… ( 2)定义全局变量 Public <变量名> As <类型> [, <变量名> As <类型>]… 9、知道程序中运算符、函数、表达式的表示方式,能够转换数学表达式为程序接受的 表达式。 运算符 是在代码中对各种数据进行运算的符号。例如,有进行加、减、乘、除算术运 算的运算符,有进行与、或、非、异或逻辑运算的运算符。 表达式 是由运算符和运算对象及圆括号组成的一个序列,它是由常量、变量、函数等 用运算符连接而成的式子。表达式是构成程序代码的最基本要素。 1)赋值运算符 赋值语句的语法格式为: <变量名> = <表达式> 例如:Count=5。 2)算术运算符与算术表达式 ( 1)算术运算符 VB 中算术运算符有+(加) 、-(减) 、*(乘) 、/(除) 、\(整除) 、mod(模运算,求余 数)和^(幂) 。 ( 2)算术运算符及优先级:^(乘方)→*、/→\(整除)→mod(取余)→+、- ( 3)算术表达式:用算术运算符和括号将运算对象连接起来的式子称为算术表达式。 运算运算对象可以是常量、变量或函数等。例如: Dim a As Integer,x As Single a=5 x = a ^ 2 * a - 1.5 + a \ 2 + a Mod 2 运算结果为 X=5^ 2*5-1.5+5\2+5 mod 2 =125-1.5+2+1=126.5 3)字符串运算符 VB 中的字符串运算符主要用来将两个字符串连接成一个字符串。VB 提供了两个字符串运 算符:“&”和“+”。

如: "中国" & "江苏" "中国" +"江苏" 结果均为 "中国江苏" 4)关系运算符与关系表达式 ( 1)关系运算符 VB 的关系运算符用于对两个数据进行比较,其运算结果为逻辑值 True 或 False。 关系运算符有: =、<>、<、>、>=、<=、IS(用于比较两个对象的引用变量) 。 ( 2)关系表达式:由常量、变量、函数等用关系运算符连接而成的式子称为关系表达 式。 例如: Dim a As Integer,b As Integer, x As Boolean a=3 b=5 x=a<b+3 运算结果为 x=3<8=True 5)逻辑运算符与逻辑表达式 ( 1)逻辑运算符 VB 中常用的逻辑运算符有 Not、And、Or 和 Xor,也称为布尔运算符。逻辑运算符的运算 对象应是逻辑值或关系表达式,运算结果为逻辑值。如表所示

逻辑运算符的优先级为: Not(非) →And(与) →Or(或) →Xor(异或) ( 2)逻辑表达式 用逻辑运算符将运算对象连接起来的式子,称为逻辑表达式。例如: 5>3 And 3>1 Not x Or (b>c) 逻辑表达式的值是一个逻辑值,用 True 或 False 来表示。例如,逻辑表达式 5>3 And 3>1, 其结果为 True。 6)运算规则 运算符优先级 运算符的优先级:算术运算符 →字符运算符→关系运算符→逻辑运算符→赋值运算符。

算术函数 字符函数

转换函数

日期与时间函数

10、学会使用顺序结构设计程序的基本方法。 按照语句代码出现的先后顺序依次执行的程序结构称为顺序结构,如图所示

11、学会使用选择结构设计程序的基本方法。 在一种以上可能的操作中按条件选取一个执行的结构称为分支结构。 ( 1)两路分支:在两种可能的操作中按条件选取一个执行的结构称为两路分支结构,也称 双分支结构。左图为双分支结构流程图。 ( 2)多路分支:在多种可能的操作中按条件选取一个执行的结构称为多分支结构。右图为 多分支结构流程图,执行时从 B1 至 Bn 依次判断每个条件是否成立,成立时,就执行相应 的操作,如果所有条件都不成立,就执行 Sn+1 操作。

VB 中用于实现分支结构程序设计的语句有两种,即 If 与 Select 语句。 1、 If 语句 VB 中有三种形式的 If 语句,分别是单分支、双分支和多分支 If 语句。 1)单分支 If 语句 单分支 If 语句的使用格式通常是:

If <条件> Then <语句> End If 2)双选条件语句 If <条件> Then <语句 1> Else <语句 2> End If 执行过程:当表达式的值为真时,执行语句 1,否则执行语句 2。 3)多选条件语句 If <条件> Then <语句 1> ElseIf <条件 2> Then <语句 2> .…… ElseIf <条件 n-1> Then <语句 n-1> Else <语句 n> End If 2、 Select Case 语句 当程序中分支较多,尤其需要多重嵌套的时候,使用 If 分支语句比较冗长,而且结构 也不清晰,为此 VB 提供了一种更加简洁的分支语句 Select Case。该语句对一个结果的多种 情况进行判断,语法格式如下: Select Case <条件表达式> Case <表达式 1> <语句 1> Case <表达式 2> <语句 2> …… Case <表达式 n-1> <语句 n-1> Case Else <语句 n> End Select 12、学会使用循环结构设计程序的基本方法。 按条件重复执行一种操作的结构称为循环结构。 循环结构有两种形式, 即当型循环结构 和直到型循环结构。 ( 1)当型循环结构:先进行判断,然后根据判断结果(真或假)再决定是否执行循环体的 循环结构称为当型循环结构,如左图所示。 ( 2)直到型循环结构:先执行一次循环体,然后再根据判断结果(真或假)决定是否继续 执行循环体的循环结构称为直到型循环结构,如下图所示。

从上述两种循环结构的流程图可以看出, 对于当型循环结构, 程序有可能一次也不执行 循环体;对于直到型循环结构,程序至少要执行一次循环体。 循环语句实现循环结构。 VB 中循环语句有两种:Do…Loop 语句和 For…Next 语句。 Do…Loop 语句是条件型循环,当循环的执行是由条件控制,在循环的次数不确定时通常选 用该语句;For 语句是计数循环,在循环次数已知时选用该语句。 1、 Do…Loop 语句 (1)当型循环语句 ① Do While…Loop 语句 语句格式为: Do While <条件表达式> 语句 Loop Do While … Loop 语句的执行过程是,先计算条件表达式的值,当其值为 True 时,执行循 环体中的语句序列,然后再重新计算条件表达式的值,当条件表达式的值为 False 时,循环 终止,执行 Loop 语句后的语句。 ② Do Until…Loop 语句 语句格式为: Do Until <条件> 语句 Loop Do Until … Loop 语句的执行过程是,先计算条件表达式的值,当其值为 False 时,执行循 环体中的语句序列,然后再重新计算条件表达式的值,直到条件表达式的值为 True 时,循 环终止,执行 Do Until … Loop 语句的下一条语句。 ( 2)直到型循环语句 ① Do …Loop While 语句 语句格式为: Do 语句 Loop While<条件> Do … Loop While 语句的执行过程是:先执行循环语句,再判断条件表达式的值,当条件条 件表达式的值为 True 时继续执行循环体,当条件表达式的值为False 结束循环,转而执行 Loop While 后面的语句。 ② Do… Loop Until 语句 语句格式为: Do 语句 Loop Until<条件>

Do … Loop Until 语句的执行过程是:先执行循环语句,再判断条件表达式的值,当条件条 件表达式的值为 False 时继续执行循环体,直到条件为 True 结束循环转而执行 Loop Until 后面的语句。 2、 For…Next 语句 在循环次数已知的情况下, 采用 For…Next 语句实现循环结构是比较合适的选择。 For…Next 语句的格式如下: For <循环变量>=初值 To 终值 [Step 步长] <语句> [Exit For ] <语句> Next <循环变量> 13、了解程序的编辑与翻译过程方法,比较编译型语言与解释型语言的优势与不足。 高级语言与自然语言和数学表达式相当接近,不依赖于计算机型号,通用性较好。高级 语言的使用,大大提高了程序编写的效率和程序的可读性。 与汇编语言一样, 计算机无法直接识别和执行高级语言, 必须翻译成等价的机器语言程序 (称 为目标程序) 才能执行, 高级语言源程序翻译成机器语言程序的方法有“解释”和“编译”两种。 解释方法采用边解释边执行的方法,如早期的 BASIC 语言即采用解释方法,在执行 BASIC 源程序时,解释一条 BASIC 语句,执行一条语句。编译方法采用相应语言的编译程序,先 把源程序编译成指定机型的机器语言目标程序, 然后再把目标程序和各种标准库函数连接装 配成完整的目标程序,在相应的机型上执行。如 C、C++、Visual C++及 Visual Basic 等均采 用编译的方法。编译方法比解释方法更具有效率。 同步集训 一、单项选择题 1.以下窗口可以在设计时直观的调整窗口在屏幕上的位置 ( ) A.代码窗口 B.窗体布局窗口 C.窗体设计窗口 D.属性窗口 2.在 VisualBasic 中,所有的窗体和控件都必定具有一个属性是 ( ) A.N ame B.Font C.Caption D.Fillcolor 3.Visual Basic 窗体设计器的主要功能是: ( ) A.建立用户界面 B.编写源程序代码 C.画图 D.显示文字 4.Visual Basic 中窗体文件的扩展名是 ( ) A.VBP B.FRM C.VBW D.PDM 5.当一个工程含有多个窗体时,其中的启动窗体是( ) A.启动 Visual Basic 时建立的窗体 B.第一个添加的窗体 C.最后一个添加的窗体 D.在“工程属性”对话框中指定的窗体 6.在窗体上画一个名称为 Label1 的标签。当单击标签时,在标签中显示“我喜欢学习 VB 语言”。下列能实现上述功能的程序是 ( ) A.Private Sub Label1_Click() Label1.Caption = "我喜欢学习 VB 语言"

End Sub B.Private Sub Form1_Click() Label1.Caption = "我喜欢学习 VB 语言" End Sub C. Private Sub Label1_Click() Label1.Enabled = "我喜欢学习 VB 语言" End Sub D. Private Sub Label1_Click() Label1.Visible = "我喜欢学习 VB 语言" End Sub 7.Visual Basic 中工程文件的扩展名是 ( ) A.VBP B.FRM C.VBW D.PDM 8.下面的四个 VB 逻辑表达式语法中,正确的是() A.x>y.And.x<>y B.x>y~z C.x>y And <>z D.x>y And y<>z 9.表达式”123”+”A”&100 的值是() A.123100 B.123A100 C.”123A100” D.1230100 2 10.代数式 ab ÷ (5c+d)的 VB 表达式是() A.a * b ^ b / (5 c + d) B.a× b× b / (5 × c + d) C.a * b * b / 5 * c + d D.a * b * b / (5 * c + d) 11.按变量名的命名规则,下面字符中不能用于构成变量名的是() A.字母 B.数字 C.下划线 D.空格 12. 在程序中用到某一整型变量的数据范围为-32768~40000, 则该变量类型应声明为 () A.Integer B. Byte C.Long D. Double 13.设 a=2,b=3,c=4,d=5,表达式 3>2*b OR a=c AND b<>c OR c>d 的值是 ( ) A.1 B.-1 C.False D.True 14.实现数值转换字符串的函数是 ( ) A.STR() B.CHR() C.VAL() D.ASC() 15.实现字符串转换数值的函数是 ( ) A.STR() B.CHR() C.VAL() D.ASC() 二、填空题 1.在窗体上画一个标签按钮(名称为 Label1) ,编写如下事件过程: Private Sub Label1_Click() Dim a, b, c As Integer b=5 c=6 Print a = b + c End Sub

程序运行后,单击标签,输出的结果是:______________。 2.VB 应用程序中窗体文件的扩展名是____________。 3. VB 是一种面向对象的程序设计语言, 构成对象的三要素是___________、 __________、 ___________。 4.下列程序段执行后, a=5 b=9 c=14 a=a+b c=c-b 则 a=_______、b=_________、c=__________。 5.若 X=-1,则 Abs(X)=_________。 6.表达式 8 <> 5 + 3 Or Not 10 > 12 – 3 的值是_________。 7.表达式 9 ^ 2 Mod 6 ^ 3 \ 3 ^ 2 的值为__________。 8.若 s=”I am John”,则 LEN(s)的值为_________。 9.ABS(-2)+SQR(16)=__________。 10.补充完善下列程序段 ① 从键盘输入圆的半径 R,输出圆的周长 L 和面积 S。 Dim R As Single Dim L As Single Dim S As Single _____=InputBox("输入半径 R ") L=2*3.14*R S=3.14*R*R Print "圆的周长 L= ";L Print "圆的面积 S= ";S ② 计算旅客的行李费,收费标准为:20 千克以下(包括 20 千克)不收费,超过 20 千 克的部分每千克收 20 元。X 表示行李重量,Y 表示行李费。 Dim X As Single Dim Y As Single X=InputBox("输入行李重量") If ________ Then Y=0 Else Y=20*(X-20) End If Print "行李费= ";Y ③ 求 s=2+4+6+……+100 之和。 Dim i As Integer Dim s As Integer s=0 For i=2 To 100 Step 2 s=_________ Next i

Print s ④ 输出 100 以内(包含 100)能被 3 整除的数。 Dim I As Integer I=1 Do If I Mod 3=0 Then Print I End If I=I+1 Loop Until _________ ⑤. 有一张单据上有一个 5 位数的号码 67□□8,其中百位和十位上的数字看不清了,但 知道该数能够被 78 整除,也能被 67 整除,下面是用穷举法求出该号码的程序段: Dim a As Integer, b As Integer Dim n As Long For a = 0 To 9 For b = 0 To ① n = 67008 + ② * 100 + b * 10 If n Mod 78 = 0 ③n Mod67=0 Then Print ④ End If Next b Next a 请将应填写的内容写在下面相应的空格内并运行程序写出该号码(每空 3 分,共 12 分)。 ①_____________ ②_____________ ③_____________ ④ _____________ 主题二 程序设计基础 同步集训答案 一选择题: 1、B 2、A 3、A4、B5、D6、A7、A8、D9、B10、C11、D 12、C13、C14、A15、C16、B 二、填空题 1、11 14、frm 15、属性、事件、方法 16、a=14 b=9 c=5 17、x=1 18、False 19、9 20、9 21、6 22、1)r 2)x<=20 3)s+i 4)i=100 5)9 a and n 主题三 算法与程序实现

点击考点 1、理解解析法的基本思想。 2、了解枚(穷)举算法求解问题的过程 3、了解使用数组存储批量数据的基本方法 4、理解顺序查找、二分查找算法思想 5、了解一到两种经典排序算法思想(如插入排序、冒泡排序) 。 6、了解递归思想与递归的数学意义。 考点注解 1、理解解析法的基本思想。 所谓解析法(analysis algorithm)是指用解析的方法找出表示问题的前提条件与结果 之间关系的数学表达式,并通过表达式的计算来实现问题求解。 解析法举例: 【出租车计费】 某城市的出租车计费标准为起步价 10 元(3 公里内) ,此外,在 3 公里到 10 公里之间 每公里 2.1 元,超过 10 公里部分每公里 3 元,输入行车距离 x,输出车费 y。 编写数学表达式:设车程数为 X 公里,车费为 Y 元,则 Y= 10 (x<=3) 10+2.1*(x-3) (3<x<=10) 10+2.1*7+3*(x-10) (x>10) VB 代码: Privat sub command1_click() Dim x,y as single X=val(inputbox("请输入行车距离")) If x<=3 then Y=10 Elseif x>3 and x<=10 then Y=10+2.1*(x-3) Else Y=10+2.1*7+3*(x-10) Endif Print y End sub 小结:用解析法解决问题的关键就是找到求解问题的解析表达式。 2、了解枚(穷)举算法求解问题的过程 穷举法也叫枚举法或列举法。 在研究对象是由有限个元素构成的集合时, 把所有对象一一列举出来, 再对其一一进行研究。 带入实际,一个个检验是否符合,穷举完所有对象问题将最终得以解决。这种方法一般在计 算机中运用,因为计算机计算速度快,可以很快验证答案是否正确。 穷举法举例: 百钱买百鸡问题。用 100 元钱买 100 只鸡,公鸡每只 5 元,母鸡每只 3 元,小鸡 3 只 1 元,要求每种都买,问能买公鸡、母鸡、小鸡各买几只? 算法分析: 设 x 为公鸡数量,取值从 1 只到 20 只,y 为母鸡的数量,取值从 1 只到 33 只,z 为小 鸡的数量,判断 5 元*x+3 元*y+z/3 是否等于 100 元,输出每次符合条件的 x,y,z 即为所求。

VB 代码: Privat sub command1_click() Dim x,y ,z as integer For x=1 to 20 step 1 For y=1 to 33 step 1 z=100-x-y If 5*x+3*y+z/3=100 then Print x,y,z Next y Next x End sub 小结: 穷举法的思路与解题步骤 穷举法的基本思路: 把问题涉及的可能情况一一罗列出来,并且根据题目的条件和实际背景逐个作出判断, 从中挑选出符合条件的解答。 穷举法的解题步骤: 1) 、分析问题,找出条件与未知数,确定变量; 2) 、列举出变量所有可能的情况,用循环或循环的嵌套实现; 3) 、写出符合条件的判断语句,用选择语句实现; 4) 、输出符合条件的情况; 5) 、优化程序。 3、了解使用数组存储批量数据的基本方法。 数组在程序设计中, 为了处理方便, 把具有相同类型的若干变量按有序的形式组织 起来。这些按序排列的同类数据元素的集合称为数组。 在 VB 中定义数组的格式为: Dim 数组名(常量)as 数据类型 下面举例说明定长数组的定义: ①Dim a(1 to 3)As Integer ②Dim b(5 to 9)As String ③Dim c(7)As Integer 其中,例①定义了一个具有三个元素的整型数组,其下标从 1 到 3。例②定义了一个具有五 个元素的字符型数组,其下标从 5 到 9。例③缺省了下界,它定义了一个具有八个元素的整 型数组,其下标从 0 到 7。 数组的赋值一般是通过循环来完成的。例如 For i=0 to 50 step 1 Chinese(i)=100 Next i 数组元素是组成数组的基本单元。数组元素也是一种变量, 其标识方法为数组名后跟 一个下标。 下标表示了元素在数组中的顺序号。 数组中的数据在逻辑上应该是相互关联的。 4、理解顺序查找、二分查找算法思想 【顺序查找】 所谓顺序查找就是从数组的第一个数开始, 逐个与要查找的数进行比较, 如果相同则输 出找到的信息。

以下程序是随机生成 num 个整数放在数组 d 中,然后输入一个数,在数组 d 中顺序查 找,如果找到就输出在数组中的位置,否则输出在数组中没有找到的信息。 Dim d(1 To 1000) As Integer Dim num As Integer Private Sub Command1_Click() '生成随机数按钮 num = Val(Text1.Text) If num <= 0 Or num >= 1000 Then Text1.Text = "数据个数不符合" Exit Sub End If Randomize '初始化随机函数 List1.Clear For i = 1 To num j = Round(Rnd * 1000) 'rnd 函数生成一个[0,1)之间的随机数 List1.AddItem Str(i) + " " + Str(j) d(i) = j Next End Sub Private Sub Command3_Click() Key = Val(Text2.Text) j=1 Do While j <= num If d(j) = Key Then Label5.Caption = "在数组的 " + Str(j) + " 位置中" Exit Do End If j = j+1 Loop If j = num + 1 Then Label5.Caption = "在数组中没有找到" + Str(Key) End If End Sub 【二分查找】又称折半查找,它是一种效率较高的查找方法。 【二分查找要求】 :1.必须采用顺序存储结构 2.必须按关键字大小有序排列。 【优缺点】折半查找法的优点是比较次数少,查找速度快,平均性能好;其缺点是要求 待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有 序列表。 【算法思想】首先,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则 查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大 于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。 重复以上过程, 直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。 以下程序是在上面的 command1_click 中随机生成 num 个整数放在数组 d 中,然后使用 冒泡排序方法将数组 d 中的数从小到大排好序,然后输入一个数,在数组 d 中二分查找,如

果找到就输出在数组中的位置,否则输出在数组中没有找到的信息。 Dim d(1 To 1000) As Integer Dim num As Integer Private Sub Command1_Click() '生成随机数按钮 num = Val(Text1.Text) If num <= 0 Or num >= 1000 Then Text1.Text = "数据个数不符合" Exit Sub End If Randomize '初始化随机函数 List1.Clear For i = 1 To num j = Round(Rnd * 1000) 'rnd 函数生成一个[0,1)之间的随机数 List1.AddItem Str(i) + " " + Str(j) d(i) = j Next End Sub Private Sub Command2_Click() '冒泡排序按钮 List2.Clear For i = 1 To num - 1 '冒泡排序 递增 For j =1 To num-i Step 1 If d(j) >d(j + 1) Then ' 如果下个数据小,则于上一个数据交换 temp = d(j) d(j) = d(j +1) d(j +1) = temp End If Next j Next i For i = 1 To num '在列表 2 中显示排序后的数据 List2.AddItem Str(i) + " " + Str(d(i)) Next i End Sub Private Sub Command4_Click() Key = Val(Text2.Text) i=1 j = num Do While i <= j M = (j + i) \ 2 If d(M) = Key Then Label6.Caption = "在数组的 " + Str(M) + " 位置中" Exit Sub End If

If d(M) < Key Then i=M+1 Else j=M-1 End If Loop Label6.Caption = "在数组中没有找到" + Str(Key) End Sub 5、了解一到两种经典排序算法思想(如冒泡排序、插入排序) 。 通过二分查找算法的使用,我们发现经常要把无序的数据经过排序操作变成有序的 数据,然后才能使用。计算机中有各种各样的排序方法,如冒泡排序、选择排序、快速排序 等。 【冒泡排序】 (BubbleSort)的基本概念是: 依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第 1 个和第 2 个数,将小数放前,大数放后。然后比较第 2 个数和第 3 个数,将小数放前,大 数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最 大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第 2 个数和第 3 个数 的交换,使得第 1 个数不再小于第 2 个数) ,将小数放前,大数放后,一直比较到倒数第二 个数(倒数第一的位置上已经是最大的) ,第二趟结束,在倒数第二的位置上得到一个新的 最大数(其实在整个数列中是第二大的数) 。如此下去,重复以上过程,直至最终完成排序。 由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作 冒泡排序。 例如有一组关键字{14,15,30,28,5,10}, 第一趟:14 和 15 比不交换 15 和 30 比不交换 30 和 28 比交换 30 和 5 比交换 30 和 10 比交换 第一趟冒泡结果:14,15,28,5,10,30 经过第一趟冒泡最大的数 30 到了最后一个位置,其它的数都上升了一个位置,好像轻 的泡泡升上去了一样 第二趟:14 和 15 比不交换 15 和 28 比不交换 28 和 5 比交换 28 和 10 比交换 第二趟冒泡结果:14,15,5,10,28,30 经过第二趟冒泡第二大的数 28 到了最后第二个位置,其它的数都上升了一个位置,好 像轻的泡泡升上去了一样 第三趟:14 和 15 比不交换 15 和 5 比交换 15 和 10 比交换 第三趟冒泡结果:14,5,10,15,28,30 经过第三趟冒泡第三大的数 15 到了最后第三个位置,其它的数都上升了一个位置,好 像轻的泡泡升上去了一样

第四趟:14 和 5 比交换 14 和 10 比交换 第四趟冒泡结果:5,10,14,15,28,30 经过第四趟冒泡第四大的数 14 到了最后第四个位置,其它的数都上升了一个位置,好 像轻的泡泡升上去了一样 第五趟:5 和 10 比不交换 第五趟冒泡结果:5,10,14,15,28,30 6 个数经过 5 趟比较就全部排好序了。 以下程序是在上面的 command1_click 中随机生成 num 个整数放在数组 d 中,然后使用 冒泡排序方法将数组 d 中的数从小到大排好序 Dim d(1 To 1000) As Integer Dim num As Integer Private Sub Command1_Click() '生成随机数按钮 num = Val(Text1.Text) If num <= 0 Or num >= 1000 Then Text1.Text = "数据个数不符合" Exit Sub End If Randomize '初始化随机函数 List1.Clear For i = 1 To num j = Round(Rnd * 1000) 'rnd 函数生成一个[0,1)之间的随机数 List1.AddItem Str(i) + " " + Str(j) d(i) = j Next End Sub Private Sub Command2_Click() '冒泡排序按钮 List2.Clear For i = 1 To num - 1 '冒泡排序 递增 For j =1 To num-i Step 1 If d(j) >d(j + 1) Then ' 如果下个数据小,则于上一个数据交换 temp = d(j) d(j) = d(j +1) d(j +1) = temp End If Next j Next i For i = 1 To num '在列表 2 中显示排序后的数据 List2.AddItem Str(i) + " " + Str(d(i)) Next i End Sub 【选择排序】 (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} 5 i=2 {10,12},{12,18,30,16} 4 i=3 {10,12,12},{18,30,16} 3 i=4 {10,12,12,16},{18,30} 2 i=5 {10,12,12,16,18},{30} 1 总计: 15 次比较次数,5 次交换次数 以下代码是用选择法为随机产生的 10 个数字排序: Private Sub Command1_Click() Dim a(1 To 10) As Integer Randomize ‘随机产生 10 个整数 For i = 1 To 10 a(i) = Int(Rnd * 10) Print a(i), Next i Print For i = 1 To 9 ‘10 个数选择 9 趟 k=i For j = i + 1 To 10 If a(k) > a(j) Then k = j ‘将选择出来的小树的坐标放入 k 中 End If Next j t = a(i): a(i) = a(k): a(k) = t ‘将选择出来 Next i 的小树 a(k)与 a(i)交换 For i = 1 To 10 Step 1 ‘输出 10 个从小到 Print a(i), 大排好序的数 Next i End Sub 【选择法排序】总结: 选择法排序每一次选取一个最小值, 在每次比较时先不进行交换, 一趟比较完成后再和 假想的极值交换,提高了排序效率。

【冒泡排序】和【选择法排序】的区别: 冒泡和快速排序的区别在于:冒泡算法,每次比较如果发现较小的元素在后面,就交换 两个相邻的元素。将待排序的元素看作是竖着排列的"气泡",较小的元素比较轻,从而要往 上浮。在冒泡排序算法中我们要对这个"气泡"序列处理若干遍。所谓一遍处理,就是自底向 上检查一遍这个序列, 并时刻注意两个相邻的元素的顺序是否正确。 如果发现两个相邻元素 的顺序不对,即"轻"的元素在下面,就交换它们的位置。显然,处理一遍之后,"最轻"的元 素就浮到了最高位置; 处理二遍之后, "次轻"的元素就浮到了次高位置。 在作第二遍处理时, 由于最高位置上的元素已是"最轻"元素,所以不必检查。一般地,第 i 遍处理时,不必检查 第 i 高位置以上的元素,因为经过前面 i-1 遍的处理,它们已正确地排好序。而选择排序算 法的改进在于:先并不急于调换位置,先从 A[1]开始逐个检查,看哪个数最小就记下该数 所在的位置 P,等一躺扫描完毕,再把 A[P]和 A[1]对调,这时 A[1]到 A[10]中最小的数据就 换到了最前面的位置。 所以,选择排序每扫描一遍数组,只需要一次真正的交换,而冒泡可能需要很多次。比 较的次数是一样的。

6、了解递归思想与递归的数学意义。 递归算法是把问题转化为规模缩小了的同类问题的子问题。 然后递归调用函数(或过 程)来表示问题的解。 递归过程一般通过函数或子过程来实现。 递归算法:在函数或子过程的内部,直 接或者间接地调用自己的算法。 递归算法的特点 递归算法是一种直接或者间接地调用自身的算法。 在计算机编写程序中, 递归算法对解 决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解。 递归算法解决问题的特点: 2、递归就是在过程或函数里调用自身。 3、在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。 4、 递归算法解题通常显得很简洁, 但递归算法解题的运行效率较低。 所以一般不提倡 用递归算法设计程序。 5、 在递归调用的过程当中系统为每一层的返回点、 局部量等开辟了栈来存储。 递归次 数过多容易造成栈溢出等。所以一般不提倡用递归算法设计程序。 递归算法要求 递归算法所体现的“重复”一般有三个要求: 一是每次调用在规模上都有所缩小(通常是减半); 二是相邻两次重复之间有紧密的联系,前一次要为后一次做准备(通常前一次的输出就 作为后一次的输入); 三是在问题的规模极小时必须用直接给出解答而不再进行递归调用, 因而每次递归调用 都是有条件的(以规模未达到直接解答的大小为条件),无条件递归调用将会成为死循环而不 能正常结束。 如何设计递归算法 23、确定递归公式 24、确定边界(终了)条件 用递归解决问题: 年龄问题:有 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) Function f(n as integer) as integer Dim f as integer If n=1 then f=10 Else f=2+f(n-1) Endif End function 调用递归函数 f(n) Privat sub command1_click() Dim f, n as integer n=inputbox() f=f(n) print f Endsub 【递归算法总结】 : 能采用递归描述的算法通常有这样的特征:为求解规模为 N 的问题,设法将它分解成 规模较小的问题, 然后从这些小问题的解方便地构造出大问题的解, 并且这些规模较小的问 题也能采用同样的分解和综合方法, 分解成规模更小的问题, 并从这些更小问题的解构造出 规模较大问题的解。特别地,当规模 N=1 时,能直接得解。 递归算法的执行过程分递推和回归两个阶段。在递推阶段,把较复杂的问题(规模为 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)的结果。 在编写递归函数时要注意, 函数中的局部变量和参数知识局限于当前调用层, 当递推进入“简 单问题”层时,原来层次上的参数和局部变量便被隐蔽起来。在一系列“简单问题”层,它们 各有自己的参数和局部变量。

由于递归引起一系列的函数调用, 并且可能会有一系列的重复计算, 递归算法的执行效率相 对较低。 同步集训 单选题 8、 使用枚举法解决问题,在列举问题可能解的过程中,____。 A.不能遗漏,但可以重复 B.不能遗漏,也不应重复 C.可以遗漏,但不应重复 D.可以遗漏,也可以重复 9、 鸡、兔共笼问题,有腿共 60 条,问鸡、兔各有多少只?下面鸡和兔只数最合 理的范围是____。(范围确定了循环的起始值和终止值) A.鸡:1 到 28,兔:1 到 14 B.鸡:2 到 28,兔:1 到 14 C.鸡:1 到 28,兔:2 到 14 D.鸡:2 到 28,兔:2 到 14 3. 采用盲目的搜索方法,在搜索结果的过程中,把各种可能的情况都考虑到,并对所得 的结果逐一进行判断,过滤掉那些不合要求的,保留那些合乎要求的结果,这种方法叫 做____。 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 返回函数值为 38 B ①定义 age(n)函数 ②函数中当 n>1 时返回函数值 age(n-1)-3 当 n=1 返回函数值为 38 C ①定义 age(n)函数 ②函数中不断调用 age(n-1)-3 D ①定义 age(n)函数 ②函数中不断调用 age(n)函数自己 6.我们在用计算机解决问题时,常采用的算法有解析法、穷举法、递归法、冒泡排序法、 选择排序法等,分析下列问题应采用哪种算法解决? 一个数除以 5 余 1,除以 6 余 5,除以 7 余 4,除以 11 余 10,求符合这些条件的最小的 数是多少? 7.某学校图书管理系统中有 10 万条图书资料记录(已经索引排序) ,假设从中取出一 条记录与待查项进行比较所花的时间为 10 毫秒,则用对分法在该系统中查找任意一本指定 图书最多花费的时间约为() A.100 万毫秒 B.10 万毫秒 C.10 毫秒

D.170 毫秒 8.二分法查找(对半查找)算法,下列正确的是 ( ) (A)先将数据按降序或升序排列 (B)数据依输入顺序排列 (C)应先将数据由小到大排列 (D)数据的个数为奇数个 9.编程求解 1000 以内的所有素数,下列算法中最适用的是 A 二分法 B 穷举法 C.解析法 D 冒泡排序法 二、填空题 1.随机产生 10 个 1-100 之间的正整数,按从小到大的次序排序并输出。为了实现 这一目标,完善下面的 VB 程序,在划线处填入合适的语句或表达式,完成程序设计 Sub Command1_Click() Const n = 10 Dim i As Integer, j As Integer, t As Integer Dim a(1 To 100) As Integer For i = 1 To 10 a(i) = 100 * Rnd(1) + i Next i For i = 1 To n - 1 For j = i + 1 To n If _______________ Then k = a(j-1): a(j-1) = a(j): a(j) = k End If Next j Next i For i = 1 To 10 List1.AddItem Str(a(i)) Next i End Sub 2. 有一张单据上有一个 5 位数的号码 67□□8,其中百位和十位上的数字看不清了,但知道 该数能够被 78 整除,也能被 67 整除,下面是用穷举法求出该号码的程序段: Dim a As Integer, b As Integer Dim n As Long For a = 0 To 9 For b = 0 To ① n = 67008 + ② * 100 + b * 10 If n Mod 78 = 0 ③ n Mod 67 = 0 Then Print ④ End If Next b Next a 请将应填写的内容写在下面相应的空格内并运行程序写出该号码(每空 3 分,共 12 分)。 ①_____________ ②_____________ ③_____________

④ _____________ 3. 有一个数组 DATA 存放了 N 个数据,现从中删除了一个元素,其余的元素依次向前 递补(假设删除的是第 3 个元素,则要将第 4 个元素移到第 3 个元素处,第 5 个元素移到第 4 个元素处,以此类推) ,然后输出数组内容。填写程序中的空缺 Private Sub Command1_Click() Dim data(10) As Integer Dim I, N, T As Integer N = 10 For I = 1 To N data(I) = I * 2 Next I T = InputBox("删除第几个元素") For I = ____________________ data(I - 1) = data(I) Next I __________________ For I = 1 To N Print data(I); Next I End Sub 4.写出下列程序的输出结果 Private Sub Command1_Click() Print f(100, 8) End Sub Public Function f(ByVal n%, ByVal r%) If n <> 0 Then f = f(n \ r, r) Print n Mod r End If End Function 主题三 算法与程序实现 同步集训答案 一选择题: 1、B 2、B 3、B4、C5、B6、穷举法 7、D8、A11、B11、D 填空题 1、a(j-1)>a(j) 2、9 a and n 3、t+1 to n n=n-1 4、4 4 1 主题四 程序设计思想和方法 点击考点 方法 1、了解模块化程序设计的基本思想和 2、了解面向对象程序设计的思想和方

法 3、了解面向对象程序设计的基本特征 考点注解 1、了解模块化程序设计的基本思想和 方法 1)模块化程序设计的基本思想: 在程序设计过程中, 为了有效地完成任 务, 把所要完成的任务精心分割成若干相对 独立,但相互仍可有联系的任务模块,这样 的任务模块还可以继续细分成更小的模块。 直至那些小模块变得任务相对单纯, 对外的 数据交换相对简单,容易编写,容易检测, 容易阅读和维护。 在 VB 语言中,使用函数和过程来实 现被细分了的各个模块的代码 2)模块化程序设计方法: 在设计程序求解问题时,首先要对问题 从整体的角度进行分析, 将其分解成几个有 机的组成部分, 如果某些部分还比较复杂可 再分解,经过逐步分解和细化后,将一个大 而复杂的问题,从总体到局部,逐步分解为 若干个小的可解的基本问题, 再通过求解这 些基本问题最终求解得原问题的解。 模块化程序设计方法反映了结构化程序设 计的“自顶而下,逐步求精”的基本思想。 3)模块划分原则: 使每个模块都容易解释。 设计程序系统时使 用按功能划分模块的方法, 使模块的内聚度 强,耦合度弱(独立性比较高) 。 4) 采用模块化方法得到的系统是由互相 连接的模块构成的。进行模块化程序设计 时,提倡按层次结构组织各模块。 VB 中过程与函数使用举例如下: 1、自定义函数 格式: Public Function 函数名(形式参数表) As 类型 语句组 函数名=表达式 End Function 注意: (1)形式参数表中的参数是自变量 (2) 第一个语句的“As 类型”指明函数值勤 的数据类型 (3)“函数名=表达式”是一个赋值语句

(4)可用 Exit Function 退出自定义函数 调用:与内部函数一样 例:求三个数的平均数的自定义函数: Public Function ave(a As Integer, b As Integer, c As Integer) As Single ave = (a + b + c) / 3 End Function 调用自定义函数如下: Private Sub Command1_Click() Dim a As Integer, b As Integer, c As Integer a = InputBox("input") b = InputBox("input") c = InputBox("input") x = ave(a, b, c) ‘调用自定义函数 AVE () Print "平均数为"; x End Sub 2、自定义过程 格式:Private Sub 子过程名(形式参数表) 语句组(过程体) End Sub 调用:子过程名 实际参数表 例: Private Sub average(a As Integer, b As Integer, c As Integer, ave As Single) ave = (a + b + c) / 3 End Sub 调用: Private Sub Command2_Click() Dim a As Integer, b As Integer, c As Integer, x As Single a = InputBox("input") b = InputBox("input") c = InputBox("input") average a, b, c, x ‘子过程 average 的调用 Print "平均数为"; x End Sub 2、了解面向对象程序设计的思想和方法 三、面向对象,VB 采用了面向对象的 程序设计思想。 它的基本思路是把复杂的程 序设计问题分解为一个个能够完成独立功 能的相对简单的对象集合,所谓“对象”就是 一个可操作的实体,如窗体、窗体中的命令 按钮、标签、文本框等。面向对象的编程就 好像搭积木一样, 程序员可根据程序和界面

设计要求, 直接在屏幕上“画"出窗口、 菜单、 按钮等不同类型的对象, 并为每个对象设置 属性。 四、属性 属性是对对象特性的描述, VB 为每 一类对象都规定了若干属性, 设计中可以改 变具体对象的属性值。比如窗体的背景颜 色、高度与宽度。 五、事件驱动 在 Windows 环境下,程序是以事 件驱动方式运行的, 每个对象都能响应多个 不同的事件,每个事件都能驱动一段代码 ——事件过程,该代码决定了对象的功能。 通常称这种机制为事件驱动。 事件可由用户 的操作触发,也可以由系统或应用程序触 发。例如,单击一个命令按钮,就触发了按 钮的 Click(单击)事件, 该事件中的代码就会 被执行。若用户未进行任何操作 (未触发事 件),则程序就处于等待状态。整个应用程 序就是由彼此独立的事件过程构成。 在 VB 中事件的调用形式是: Private Sub 对象名_事件名 (事件内容) End Sub 4)方法(Method) 方法指的是控制对象动作行为的 方式。它是对象本身内含的函数或过程,它 也是一个动作, 是一个简单的不必知道细节 的无法改变的事件,但不称作事件;同样, 方法也不是随意的, 一些对象有一些特定的 方法。在 VB 里方法的调用形式是: 对象名.方法名 属性、方法和事件之间的关系 VB 对象具有属性、方法和事件。属性 是描述对象的数据; 方法告诉对象应做的事 情;事件是对象所产生的事情,事件发生时 可以编写代码进行处理。 VB 的窗体和控件是具有自己的属 性、方法和事件的对象。可以把属性看作一 个对象的性质,把方法看作对象的动作,把 事件看作对象的响应。 在 VB 程序设计中,基本的设计机制就 是:改变对象的属性、使用对象的方法、为 对象事件编写事件过程。 程序设计时要做的

工作就是决定应更改哪些属性、 调用哪些方 法、对哪些事件作出响应,从而得到希望的 外观和行为。 事件驱动模型 在传统 的或 “ 过程化 ” 的应用程 序 中, 应用程序自身控制了执行哪一部分代码 和按何种顺序执行代码。 从第一行代码执行 程序并按应用程序中预定的路径执行, 必要 时调用过程。 在事件驱动的应用程序中,代码不 是按照预定的路径执行, 而是在响应不同的 事件时执行不同的代码片段。 事件可以由用 户操作触发、 也可以由来自操作系统或其它 应用程序的消息触发、 甚至由应用程序本身 的消息触发。 这些事件的顺序决定了代码执 行的顺序, 因此应用程序每次运行时所经过 的代码的路径都是不同的。 7、了解面向对象程序设计的基本特征 面向对象主要特征: 封装性:封装是一种信息隐蔽技 术, 它体现于类的说明, 是对象的重要特性。 封装使数据和加工该数据的方法(函数)封 装为一个整体,以实现独立性很强的模块, 使得用户只能见到对象的外特性 (对象能接 受哪些消息,具有那些处理能力) ,而对象 的内特性 (保存内部状态的私有数据和实现 加工能力的算法)对用户是隐蔽的。封装的 目的在于把对象的设计者和对象者的使用 分开,使用者不必知晓行为实现的细节,只 须用设计者提供的消息来访问该对象。 继承性:继承性是子类自动共享 父类之间数据和方法的机制。 它由类的派生 功能体现。 一个类直接继承其它类的全部描 述,同时可修改和扩充。继承具有传递性。 继承分为单继承(一个子类只有一父类)和 多重继承(一个类有多个父类) 。类的对象 是各自封闭的,如果没继承性机制,则类对 象中数据、方法就会出现大量重复。继承不 仅支持系统的可重用性, 而且还促进系统的 可扩充性。 多态性: 对象根据所接收的消息而做出 动作。 同一消息为不同的对象接受时可产生

完全不同的行动,这种现象称为多态性。利 用多态性用户可发送一个通用的信息, 而将 所有的实现细节都留给接受消息的对象自 行决定,如是,同一消息即可调用不同的方 法。 例如: Print 消息被发送给一图或表时调 用的打印方法与将同样的 Print 消息发送给 一正文文件而调用的打印方法会完全不同。 多态性的实现受到继承性的支持, 利用类继 承的层次关系, 把具有通用功能的协议存放 在类层次中尽可能高的地方, 而将实现这一 功能的不同方法置于较低层次,这样,在这 些低层次上生成的对象就能给通用消息以 不同的响应。 在 OOPL 中可通过在派生类中 重定义基类函数(定义为重载函数或虚函 数)来实现多态性。 综上可知,在面对对象方法中,对象和 传递消息分别表现事物及事物间相互联系 的概念。 类和继承是是适应人们一般思维方 式的描述范式。 方法是允许作用于该类对象 上的各种操作。这种对象、类、消息和方法 的程序设计范式的基本点在于对象的封装 性和类的继承性。 通过封装能将对象的定义 和对象的实现分开, 通过继承能体现类与类 之间的关系, 以及由此带来的动态联编和实 体的多态性, 从而构成了面向对象的基本特 征。 同步集训 7、下面选项内不属于描述面向对象程 序设计特征的名词是( ) A、继承性 B、多态性 C、连续性 D、封装性 2、模块化程序设计方法反映了结构化 程序设计的 ( ) 基本思想。 A.自顶而下、逐步求精 B.面向对象 C. 自定义函数、过程 D. 可视化编程 3 、下列 属性是每个控件都有 的。 A、 Name B、 Caption C、 Font D、 Interval 4、下列控件中可用于接受用户输入文 本,又可用于显示文本的是 。 A、 Label B、 TextBox C、 Timer D、 CommandButton 5、改变 Label 中显示的文本内容,要

设置的属性是()。 A、 Text B、 BackColor C、 Caption D、 (名称) 6、改变 Text 中显示的文本内容,要设 置的属性是()。 A、 Text B、 BackColor C、 Caption D、 (名称)

① 图1





7、在图 1 中,这 3 个控件名称依次是 ()。 A、 Label、 TextBox、 CommandButton B、 TextBox、Label、CommandButton C、 CommandButton、 Label、 TextBox D、 CommandButton、TextBox、Label 8、双击窗体中的对象后, VB 将显示的 窗口是()。 A、 项目(工程)窗口 B、 工具 箱 C、 代码窗口 D、 属性窗口 9、如果文本框 Text1 的内容为-12,文 本框 Text2 的内容为 7,则下列程序段运行 后文本框 Text3 的内容显示为()。 Dim x As Single, y As Single, z As Single x=Val(Text1.Text) y=Val(Text2.Text) z=x-y Text3.Text=Str(z) A、 -5 B、 7 C、 -12 D、 -19 10、如果文本框 Text1 的内容为 3,则 下列程序段运行后 Label1 的内容显示为 () 。 Dim x As Single, i As Single, s As Double s=0 x=Val(Text1.Text) For i=1 To x s=s*i Next i

Label1.Caption=Str(s) A、6 B、9 C、0 D、 1 主题四 程序设计思想和方法 同步集训答案 一选择题: 1、C 2、A 3、A4、B5、C6、A7、A8、 C9、D10、A


更多相关文档:

算法与程序设计(高中选修)复习资料

算法与程序设计(高中选修)复习资料_其它课程_高中教育_教育专区。主题一 利用计算机解决问题的基本过程 点击考点 1、了解利用计算机解决问题的基本过程 2、了解问题...

算法与程序设计(高中)复习资料

算法与程序设计(高中)复习资料_其它课程_高中教育_教育专区。今日推荐 81...高中算法与程序设计(选修... 22页 1下载券 高中算法与程序设计模拟... 9页...

新课标高中信息技术《算法与程序设计VB(选修)》复习要点

新课标高中信息技术《算法与程序设计VB(选修)复习要点_其它课程_高中教育_教育专区。精品资料新课标高中信息技术《算法与程序设计 VB(选修)复习要点知识要点 一...

算法与程序设计(选修)复习提纲

算法与程序设计(选修)复习提纲_其它课程_高中教育_教育专区。算法与程序设计(选修)复习提纲第一章 如何用计算机解决问题 1) 计算机解决问题的 4 个基本过程:分析...

高中《算法与程序设计VB(选修)》复习知识点

高中算法与程序设计VB(选修)复习知识点_其它课程_高中教育_教育专区。高中信息技术《算法与程序设计 VB(选修) 》 知识要点相关知识点 (一)算法 1.定义 相关...

高中信息技术(选修1)《算法与程序设计》

高中信息技术(选修1)《算法与程序设计》_能源/化工_工程科技_专业资料高中信息技术(选修1)《算法与程序设计高中信息技术(选修 1)——《算法与程序设计》 ...

科教版高中信息技术选修《算法与程序设计》复习题

高中信息技术选修算法与程序设计复习题 一、选择题部分(100 题) 一章一节:了解计算机解决问题的过程 1. 用计算机解决问题时, 首先应该确定程序“做什么?”,...

高中算法与程序设计(选修)

高中算法与程序设计(选修)_理学_高等教育_教育专区 暂无评价|0人阅读|0次下载|举报文档 高中算法与程序设计(选修)_理学_高等教育_教育专区。数组 d 中的数据...

《算法与程序设计》复习纲要原版

昔阳中学高二算法与程序设计 VB(选修 1) 》复习提纲 高中信息技术《算法与程序设计 VB(选修) 》 知识要点相关知识点 (一)算法 1.定义 相关题解: 1 算法:...

高中《算法与程序设计》复习纲要

高中《算法与程序设计复习纲要_计算机软件及应用_IT/计算机_专业资料高中选修课教程 -1- 高中《算法与程序设计复习纲要一、算法 (一)定义 相关概念: 1 ...
更多相关标签:
网站地图

文档资料共享网 nexoncn.com copyright ©right 2010-2020。
文档资料共享网内容来自网络,如有侵犯请联系客服。email:zhit325@126.com