文档库 最新最全的文档下载
当前位置:文档库 › 算法与程序设计基础

算法与程序设计基础

算法与程序设计基础
算法与程序设计基础

第5章算法与程序设计基础

本章要点:

◆算法的基本概念,算法的复杂度的概念和意义(时间复杂度与空间复杂度)

◆程序设计方法与风格

◆结构化程序设计

◆面向对象的程序设计方法、对象、方法、属性及继承与多态性

5.1算法

5.1.1算法(Algorithm)的基本概念

所谓算法是指解题方案的准确而完整的描述。

对于一个问题,如果可以通过一个计算机程序,在有限的存储空间内运行有限长的时间而得到正确的结果,则称这个问题是算法可解的。但算法不等于程序,也不等于计算方法。当然,程序也可以作为一种描述,但通常还需考虑很多与方法和分析无关的细节问题,这是因为在编写程序时要受到计算机系统环境的限制。通常程序的编制不可能优于算法的设计。

1. 算法的基本特征

作为一个算法,一般具有以下几个特征。

(1)可行性(Effectiveness)

针对实际问题设计的算法,人们总是希望得到满意的结果。但一个算法又总是在某个特定的计算工具上执行的,因此,算法在执行过程中往往要受到计算工具的限制,使执行结果产生偏差。例如,在进行数值计算时,如果某计算工具具有7位有效数字(如程序设计语言中的单精度运算),则在计算下列三个量

A=1012,B=1,C=-1012

的和时,如果采用不同的运算顺序,就会得到不同的结果,即

A+B+C=1012+1+(-1012)=0

A+C+B=1012+(-1012)+1=1

而在数学上,A+B+C与A+C+B是完全等价的。因此,算法与计算公式是有差别的。在设计一个算法时,必须要考虑它的可行性,否则是不会得到满意结果的。

(2)确定性(Definiteness)

算法的确定性,是指算法的每一个步骤都必须是有明确定义的,不允许有模棱两可的解释,也不允许有多义性。这一性质也反映了算法与数学公式的明显差别。在解决实际问题时,可能会出现这样的情况:针对某种特殊问题,数学公式是正确的,但按此数学公式设计的计算过程可能会使计算机系统无所适从。这是因为根据数学公式设计的计算过程只考虑了正常使用的情况,而当出现异常情况时,此计算机就不能适应了。

(3)有穷性(Finiteness)

算法有穷性,是指算法必须能在有限的时间内完成,即算法必须能在执行有限个步骤之后终止。数学中的无穷级数,在实际计算时只能取有限项,即计算无穷级数值的过程只能是有穷的。因此一个数的无穷级数表示只是一个计算公式,而根据精度要求确定的计算过程才是有穷的算法。

算法的有穷性还应包括合理的执行时间的含义。因为,如果一个算法需要执行千万年,显然失去了实用价值。

(4)输入(Input)

一个算法有零个或多个输入,这些输入取自于某些特定的对象集合。

(5)输出(Output)

一个算法有一个或多个输出。这些输出是同输入有着某些特定关系的量。

一个算法是否有效,还取决于为算法所提供的情报是否足够。通常,算法中的各种运算总是施加到各个运算对象上,而这些运算对象又可能具有某种初始状态,这是算法执行的起点或是依据。因此,一个算法的执行结果总是与输入的初始数据有关,不同的输入将会有不同的结果输出。当输入不够或是输入错误时,算法本身也就无法执行或导致执行有错。一般来说,当算法拥有足够的情报时,此算法才是有效的,而当提供的情报不够时,算法可能无效。

综上所述,所谓算法,是一组严谨的定义运算顺序的规则,并且每一个规则都是有效的,且是确定的,此顺序将在有限的次数下终止。

2.算法的基本要素

一个算法通常由两种基本要素组成:一是对数据对象的运算和操作,二是算法的控制结构。

(1)算法中对数据的运算和操作

每个算法实际上是按解题要求从环境能进行的所有操作中选择合适的操作所组成的一组指令序列。因此计算机算法就是计算机能处理的操作所组成的指令序列。

通常,计算机可以执行的基本操作是以指令的形式描述的。一个计算机系统能执行的所有指令集合称为该计算机系统的指令系统。计算机程序就是按解题要求从计算机指令系统中选择合适的指令所组成的指令序列。在一般的计算机系统中,基本的运算和操作有以下四种:

①算术运算:主要包括加、减、乘、除等运算。

②逻辑运算:主要包括“与”、“或”、“非”等运算。

③关系运算:主要包括“大于”、“小于”、“等于”、“不等于”等运算。

④数据传输:主要包括赋值、输入、输出等操作。

前面提到,计算机程序也可以作为算法的一种描述,但由于在编辑计算机程序通常要考虑很多与方法和分析无关的细节问题(如语法规则),因此,在设计算法之初,通常并不直接用计算机程序来描述算法,而是用别的描述工具(如流程图,专门的算法描述语言,甚至用自然语言)来描述算法。但不管用哪种工具来描述算法,算法的设计一般都应从上述四种基本操作考虑按解题要求从这些基本操作中选择合适

的操作组成解题的操作序列。算法的主要特征着重于算法的动态执行,它区别于传统的着重于静态描述或按演绎方式求解问题的过程。传统的演绎数学是以公理系统为基础的,问题的求解过程是通过有限次推演来完成的,每次推演都将对问题作进一步的描述,如此不断推演直到直接将解描述出来为止;而计算机算法则是用一些最基本的操作,通过对已知条件一步一步地加工和变换,从而实现解题目标。

(2) 算法的控制结构

一个算法的功能不仅仅取决于所选用的操作,而且还与各操作之间的执行顺序有关。算法中各操作之间的执行顺序称为算法的控制结构。

算法的控制结构给出了算法的基本框架,它不仅决定了算法中各操作的执行顺序,而且也直接反映了算法的设计是否符合结构化原则。描述算法的工具通常有传统流程图、N-S 结构化流程图、算法描述语言等。一个算法一般都可以用顺序、选择、循环3种基本控制结构组合而成。

例5.1:有黑和蓝两个墨水瓶,但却错把黑墨水装在了蓝墨水瓶子里,而蓝墨水错装在黑墨水瓶子里,要求将其互换。

这是一个非数值运算问题。因为两个瓶子的墨水不能直接交换,所以,解决这一类问题的关键是需要借助第三个墨水瓶。设第三个墨水瓶为白色,其交换步骤如下:

①将黑瓶中的蓝墨水装入白瓶中;

②将蓝瓶中的黑墨水装入黑瓶中;

③将白瓶中的蓝墨水装入蓝瓶中;

④交换结束。

例5.2计算函数f (x)的值。函数f (x)为:

?

??>+≤+=a x b ax a x a bx x f )(其中,a ,b 为常数。 本题是一个数值运算问题。其中f (x)代表要计算的函数值,有两个不同的表达式,根据x 的取值决定采用哪一个算式。根据计算机具有逻辑判断的基本功能,用计算机算法描述如下:

①将a ,b 和x 的值输入到计算机;

②判断x 是否≤a ?如果条件成立,执行第③步,否则执行第④步;

③按表达式bx +a ,计算出结果存放到f 中,然后执行第⑤步;

④按表达式ax +b ,计算出结果存放到f 中,然后执行第⑤步;

⑤输出f 的值;

⑥算法结束。

由上述两个简单的例子可以看出,一个算法由若干操作步骤构成,并且,任何简单或复杂的算法都是由基本功能操作和控制结构这两个要素组成。算法的控制结构决定了算法的执行顺序。

3.算法设计的基本方法

计算机解题的过程实际上是实现计算机算法的过程;计算机算法不同于人工处理

的方法,下面列举出工程上常用的几种算法设计,在实际应用时,各种方法之间往往存在着一定的联系。

(1)列举法

列举法的基本思想是根据提出的问题,列举所有可能的情况,并用问题中给定的条件检验哪些是需要的,哪些是不需要的。求解不定方程的问题常用此法。列举法是计算机基础算法之一。

列举法的特点是算法比较简单,但当列举的可能情况较多时,执行列举算法的工作量将会很大。因此,在用列举法设计算法时,使方案优化、尽量减少运算工作量是应该重点注意的问题。

列举原理是计算机应用领域中十分重要的原理;因为许多实际问题若采用人工列举是不可思议的,但由于计算机的运算速度快并擅长重复操作,计算机便可以轻而易举地进行大量列举;因此,列举法虽然笨拙、原始、运算量大,但在许多实际问题中(如查找、搜索等问题)局部使用列举法还是十分有效的。

(2)归纳法

归纳法的基本思想是通过列举少量的特殊情况,经过分析找出一般的关系。从本质上讲,归纳法就是通过观察一些简单而特殊的情况,最后总结出一般性的结论。

归纳是一种抽象,即从一个实际问题的特殊现象中总结出一般关系;但由于在归纳的过程中不可能对所有的因素进行一一列举,因此,最后由归纳得到的结论不是完全可靠的,还需要进一步加以必要的证明。

(3)递推

递推是指从已知的初始条件出发,逐次推出所要求的中间结果和最后结果。其中初始条件或者问题本身已经给定,或者通过对问题的分析与化简而确定。递推本质上也属于归纳法,工程上许多递推关系式实际上是通过对实际问题的分析与归纳而得到的,因此,递推关系式往往是归纳的结果。

递推算法经常用于数值计算;但对于数值型的递推算法必须要注意数值计算的稳定性问题,因为计算机中数值的表示往往是有界的,而数学意义上数值是无界的。

(4)递归

人们在解决一些复杂问题时,为了降低问题的复杂程度(如问题的规模等),一般总是将问题逐层分解,最后归结为一些最简单的问题。这种将问题逐层分解的过程,实际上并没有对问题进行求解,而只是当解决了最后那些最简单的问题后,再沿着原来分解的逆过程逐步进行综合,这就是递归的基本思想。

递归分为直接递归与间接递归两种。例如有算法P和Q,如果P显式地调用自己则称为直接递归,如果P先调用Q,而Q又调用P则称为间接递归。

(5)减半递推技术

实际问题的复杂程度往往与问题的规模有着密切的联系,因此,利用分治法解决这类实际问题非常有效。工程上常用的分治法是减半递推技术。

所谓“减半”是指将问题的规模减半,而问题的性质不变;所谓“递推”是指重复“减半”的过程。

例5.3 设方程f(x)=0在区间【a,b 】上有实根,且f(a)与f(b)异号。利用二分法求其在区间【a,b 】上的一个实根。

减半递推过程如下:

首先取给定区间的中点c=(a+b)/2;然后判断f(c)是否为0,若为0,则c 就是根,结束;否则根据以下原则将原区间减半:

若f(a)*f(c)<0,则取原区间的前半部分;

若f(b)*f(c)<0,则取原区间的后半部分。

最后判定减半后的区间长度是否已经很小;若是很小,则取(a+b)/2为根的近似值,否则重复上述减半过程。(很小的概念取决于计算机的精度)

(6)回溯法

在工程上,有些实际问题很难归纳出一组简单的递推公式或直观的求解步骤,并且也不能进行无限的列举。对于这类问题,一种有效的方法是"试"。通过对问题的分析,找出一个解决问题的线索,然后沿着这个线索逐步试探,若试探成功,就得到问题的解,若试探失败,就逐步回退,换别的路线再逐步试探。常用于处理复杂数据结构。

5.1.2 算法复杂度

算法的复杂度包括时间复杂度和空间复杂度。

1.算法的时间复杂度

所谓算法的时间复杂度是指执行算法所需要的计算工作量。算法所执行的基本运算次数与计算机硬件、软件因素无关。算法所执行的基本运算次数与问题的规模有关。对于一个固定的规模,算法所执行的基本运算次数还可能与特定的输入有关。

算法的工作量用算法所执行的基本运算次数来度量。算法所执行的基本运算次数是问题的规模函数。即算法的工作量=f(n)

例如,在N ×N 矩阵相乘的算法中,整个算法的执行时间与该基本操作(乘法)重复执行的次数n 3成正比,也就是时间复杂度为n 3,表示为 f(n)=O(n 3)

在有些情况下,算法中的基本操作重复执行的次数还依据问题的输入数据集的不同而不同。例如在选择升序排序的算法中,当要排序的一组数初始序列为自小至大有序时,基本操作的执行次数为0;当初始序列为自大至小有序时,基本操作的执行次数为n(n -1)/2。对这类算法的分析,可以采用以下两种方法来分析。

(1)平均性态(Average Behavior)

所谓平均性态是指在各种特定输入下,用基本运算次数的加权平均值来度量算法的工作量。

设x 是所有可能输入中的某个特定输入,p(x)是x 出现的概率(即输入为x 的概率),t(x)是算法在输入为x 时所执行的基本运算次数,则算法的平均性态定义为

()∑∈=

Dn x x t x P n A )

()(

其中Dn 表示当规模为n 时,算法执行的所有可能输入的集合。

(2)最坏情况复杂性(Worst-case Complexity)

所谓最坏情况分析,是指在规模为n 时,算法所执行的基本运算的最大次数。

}

{)(max )(x t n W Dn x ∈=

显然,W(n)比A(n)计算容易,W(n)更有实际意义。

2.算法的空间复杂度

一个算法的空间复杂度,一般是指执行这个算法所需要的内存空间。

一个算法所占用的存储空间包括算法程序所占用的空间﹑输入的初始数据所占用的存储空间以及算法执行过程中所需要的额外空间.其中额外空间包括算法程序执行过程中的工作单元以及某种数据结构所需要的附加存储空间(例如,在链式结构中,除了要存储数据本身外,还需要存储链接信息).如果额外空间量相对于问题规模来说是常数,则称该算法是原地﹙in place ﹚工作的。在许多实际问题中,为了减少算法所占的存储空间,通常采用压缩存储技术,以便尽量减少不必要的额外空间。

类似于时间复杂度的讨论,一个算法的空间复杂度作为算法所需存储空间的量度,记作:S(n)=O(f (n))

其中n 为问题的规模(或大小),空间复杂度也是问题规模n 的函数。一个算法所占用的存储空间包括算法程序所占的空间,输入的初始数据所占的存储空间,以及算法执行过程中所需要的额外空间。其中额外空间包括算法程序执行过程中的工作单元以及某种数据结构所需要的附加存储空间。如果额外空间量相对于问题规模来说是常数,则称该算法是原地(In place)工作的。在许多实际问题中,为了减少算法所占的存储空间,通常采用压缩存储技术,以便尽量减少不必要的额外空间。 5.2程序设计的方法与风格

程序设计是一门技术,需要相应的理论、技术、方法和工具来支持,程序设计主要经历了结构化程序设计和面向对象程序设计的发展阶段。

程序设计风格会深刻影响软件的质量和可维护性,良好的程序设计风格可以使程序结构清晰合理,使程序代码便于维护。程序设计的风格总体而言应该强调简单和清晰,程序必须是可以理解的。可以认为,著名的“清晰第一,效率第二”的论点已成为当今主导的程序设计风格。要形成良好的程序设计风格,主要应注重和考虑下述一些因素。

1. 源程序文档化

源程序文档化主要考虑以下几点:

(1) 符号名的命名规则:符号名的命名应具有一定的实际含义,以便理解程序功

能。

(2) 正确的程序注释:程序注释一般分为序言性注释和功能性注释。序言性注释

常位于程序开头部分,它包括程序标题、程序功能说明、主要算法、接口说

明、程序位置、开发简历、程序设计者、复审者、复审日期及修改日期等。功能性注释一般嵌在源程序体之中,用于描述其后的语句或程序的主要功

能。

(3)程序的视觉组织:在程序中利用空格、空行、缩进等技巧使程序的层次结构

清晰一目了然。

2.数据说明的方法

(1)数据说明的次序规范化;

(2)说明语句中变量安排有序化;

(3)使用注释来说明复杂数据的结构。

3.语句的结构

(1)在一行内只写一条语句;

(2)程序编写应优先考虑清晰性;

(3)除非对效率有特殊要求,程序编写要做到清晰第一,效率第二;

(4)首先要保证程序的正确,然后才要求提高速度;

(5)避免使用临时变量而使程序的可读性下降;

(6)避免不必要的转移;

(7)尽可能使用库函数;

(8)避免采用复杂的条件语句;

(9)尽量减少使用“否定”条件的条件语句;

(10)数据结构要有利于程序的简化;

(11)要模块化,使模块功能尽可能单一化;

(12)利用信息隐蔽,确保每一个模块的独立性;

(13)从数据出发去构造程序

(14)不要修补不好的程序,要重新编写程序

4.输入和输出的风格

(1)对所有的输出数据都要检验数据的合法性;

(2)检查输入项的各种重要组合的合理性;

(3)输入格式要简单,以使得输入的步骤和操作尽可能简单;

(4)输入数据时,应允许使用自由格式;

(5)应允许缺省值;

(6)输入一批数据时,最好使用输入结束标志;

(7)在以交互式输入/输出方式进行输入时,要在屏幕上使用提示信息明确提示

输入的内容与格式,同时在数据输入过程中和输入结束时,应在屏幕上显示

状态信息;

(8)当程序设计语言对输入格式有严格要求时,应保持输入格式与输入语言的一

致性;给所有的输出加注释,并实际输出报表格式。

5.3结构化程序设计

5.3.1程序设计的原则

程序设计的方法的主要原则可以概括为:自顶向下,逐步求精,模块化,限制使用goto语句。

1.自顶向下:即先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。这种程序结构按功能划分为若干个基本模块,这些模块形成一个树状结构。

2.逐步求精:对复杂问题,应设计一些子目标做过渡,逐步细化。

这种设计方法的过程是将问题求解由抽象逐步具体化的过程。用这种方法分解复杂问题,直到把复杂问题分解为可以直接用程序语言的基本语句结构表达出来为止。这种方法就叫做“自顶而下,逐步求精”。在向下一层展开之前应仔细检查本层设计是否正确,只有上一层是正确的才能向下细化。如果每一层设计都是正确的,则整个算法就是正确的。

3.模块化:模块化是把程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,把每个小目标称为一个模块;

4.限制使用GOTO语句。

5.3.2结构化程序的基本结构与特点

1966年,Boehm和Jacopini证明了程序设计语言仅仅使用顺序、选择和重复(循环)三种基本控制结构就足以表达出各种形式结构的程序设计方法。采用结构化程序设计方法编写程序,可使程序结构良好、易读、易理解、易维护,从而可以提高编程工作的效率,降低软件开发的成本。

1.顺序结构:顺序结构是一种简单的程序设计结构,顺序结构自始至终严格按照程序中语句的先后顺序逐条执行,是最基本、最常用的结构形式;它是程序设计中的必备;如图5.1(a)所示。

2.选择结构:又称为分支结构,它包括简单选择和多分支选择结构。如图5.1(b)所示。

图5.1 顺序与选择结构

3.重复结构:重复结构又称为循环结构,它根据给定的条件,判断是否需要重复执行某一相同功能的程序段。在程序设计语言中,重复结构对应两类循环语句,对先判断后执行的循环体称为当型循环结构,对先执行循环体后判断的称为直到型循环结构。如图5.2所示。

图5.2 循环结构

结构化程序设计的优点:

程序的可读性好,易于维护;

提高了编程效率,降低了开发成本

5.3.3结构化程序设计的原则和方法的使用

在结构化程序设计的具体实施中,要注意把握如下要素:

1.使用程序设计语言中的顺序、选择、循环等有限的控制结构表示程序的控制

逻辑;

2.选用的控制结构只准许有一个入口和一个出口;

3.程序语句组成容易识别的块,每块只有一个入口和一个出口;

4.复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现;

5.语言中没有的控制结构,应该采用前后一致的方法来模拟;

6.严格控制非结构化语句(如goto、break、continue语句)1的使用。除非以下情

况:

(1)使用后可以大大提高程序的效率,而且不但不影响程序可读性,反而使程序1参考C语言程序设计一书

机构更加清晰时,才考虑使用;

(2)用一个非结构化的程序设计语言去实现一个结构化的构造,当然目前此类情

况已是微乎其微。

5.4面向对象的程序设计

5.4.1关于面向对象方法

客观世界中任何一个事物都可以被看成是一个对象,对象是现实世界事物或个体的抽象表示,抽象的结果不仅包括事物个体的属性,还包括事物的操作。属性值表示了对象的内部状态。面向对象方法的本质就是主张从客观世界固有的事物出发来构造系统,提倡用人类在现实生活中常用的思维方法来认识、理解和描述客观事物,强调最终建立的系统能够映射问题域,也就是说,系统中的对象以及对象之间的关系能够如实地反映问题域中固有事物及其关系。从计算机的角度来看,面向对象就是运用对象、类、继承、封装、消息、结构与连接等面向对象的概念对问题进行分析、求解的系统开发技术。

面向对象方法有以下几个主要优点:

(1) 与人类习惯的思维方法一致

(2) 稳定性好

(3) 可重用性好

(4) 易于开发大型软件产品

(5) 可维护性好

5.4.2面向对象方法的基本概念

面向对象的程序设计方法中涉及的对象是系统中用来描述客观事物的一个实体,是构成系统的一个基本单位,它由一组表示其静态特征的属性和它执行的一组操作组成。面向对象方法学中的对象是由描述该对象属性的数据以及可以对这些数据施加的所有操作封装在一起构成的统一体。对象可以做的操作表示它的动态行为,在面向对象分析和面向对象设计中,通常把对象的操作称为方法或服务。属性在设计对象时确定,一般只能通过执行对象的操作来改变。对象有一些基本特点:标识唯一性,分类性,多态性,封装性,模块独立性好。

1.对象(Object)

对象是面向对象方法中最基本的概念。对象可以用来表示客观世界中的任何实体,也就是说,应用领域中有意义的、与所要解决的问题有关系的任何事物都可以作为对象。总之,对象是对问题域中某个实体的抽象。

2.类(Class)和实例(Instance)

类是对具有共同特征的对象的进一步抽象。将属性和操作相似的对象归为类,也就是说,类是具有共同属性、共同方法的对象的集合。所以,类是对象的抽象,他描述了属于该对象类型的所有对象的性质,而一个对象则是其对应类的实例。如杨树、

柳树、枫树等是具体的树,抽象之后得到“树”这个类。类具有属性,属性是状态的抽象,如一棵杨树的高度是10米,柳树是8米,树则抽象出一个属性“高度”。类具有操作,它是对象行为的抽象。

3. 继承(Inheritance)

继承是使用已有的类定义作为基础来建立新类的定义技术。已有的类可当作基类来引用,则新类相应地可当作派生类来引用。面向对象软件技术的许多强有力的功能和突出的优点,都来源于把类组成一个层次结构的系统:一个类的上层可以有父类,下层可以有子类。这种层次结构系统的一个重要性质是继承性,一个类直接继承其父类的描述或特性,子类自动地共享基类中定义的数据和方法。

继承关系模拟了现实世界的一般与特殊的关系。它允许我们在已有的类的特性基础上构造新类。被继承的类我们称之为基类(父类),在基类的基础上新建立的类我们称之为派生类(子类)。派生类的特性比基类的特性更细致。

继承关系可以表述为:派生类是基类。因此可以说:动物是生物。生物比动物具有更一般的特性。

4.聚合(Aggregation)

聚合模拟了现实世界的部分与整体的关系。它允许利用现有的类组成新类。比如说汽车,它是由发动机、变速箱、底盘等组成,那么我们就可以利用发动机、变速箱、底盘等类聚合成一个新的类:汽车类。

5.消息(Message)

消息是一个实例与另一个实例之间传递的信息,它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。消息中包含传递者的要求,它告诉接受者需要做哪些处理,但并不指示接受者应该怎么样完成这些处理。消息完全由接受者解释,接受者独立决定采用什么方式完成所需的处理,发送者对接受者不起任何控制作用。一个对象能接受不同形式、不同内容的多个消息;相同形式的消息可以送往不同的对象,不同的对象对于形式相同的消息可以有不同的解释,能够做出不同的反映。一个对象可以同时往多个对象传递消息,两个对象也可以同时向某个对象传递消息。

消息是对象之间交互的唯一途径,一个对象要想使用其他对象的服务,必须向该对象发送服务请求消息。而接收服务请求的对象必须对请求做出响应。

例如:当我们向银行系统的帐号对象发送取款消息时,帐号对象将根据消息中携带的取款金额对客户的帐号进行取款操作:验证帐号余额,如果帐号余额足够,并且操作成功,对象将把执行成功的消息返回给服务请求的发送对象,否则发送交易失败消息。

6.多态性(Polymorphism)

多态性是指在一般类中定义的属性或行为,被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。

多态性机制不仅增加了面向对象软件系统的灵活性,进一步减少了信息冗余,而且显著地提高了软件的可重用性和可扩充性。当扩充系统功能增加新的实体类型时,只需派生出与新实体类相应的新的子类,完全无需修改原有的程序代码,甚至不需要

重新编译原有的程序。利用多态性,用户能够发送一般形式的消息,而将所有的实现细节都留给接受消息的对象。

例如,在两个类Male(男性)和Female(女性)都有一项属性为Friend。一个人的朋友必须属于类Male(男性)、Female(女性)二者其一,这是一个多态性的情况。因为Friend指向两个类之一的实例。如果小明的朋友既有男性又有女性,那么类Male就不知道属性Friend该与哪个类关联。

习题五

一、选择题

1.在面向对象方法中,实现信息隐蔽是依靠。(2007年9月)A.对象的继承 B.对象的多态 C.对象的封装 D.对象的分类

2.下列叙述中,不符合良好程序设计风格要求的是。(2007年9月)A)程序的效率第一,清晰第二B)程序的可读性好

C)程序中要有必要的注释D)输入数据前要有提示信息3.下列选项中不属于面向对象程序设计特征的是______。(2007年4月)A)继承性B)多态性C)类比性D)封装性

4.下列选项中不符合良好程序设计风格的是______。(2006年9月) A)源程序要文档化 B)数据说明的次序要规范化

C)避免滥用goto语句 D)模块设计要保证高耦合、高内聚5.下列选项中不属于结构化程序设计方法的是_______。(2006年4月)

A)自顶向下B)逐步求精C)模块化D)可复用

6.以下叙述中不属于面向对象方法的优点的是______。

A)可重用性好B)与人类习惯的思维方法一致

C)可维护性好D)有助于实现自顶向下、逐步求精

7.结构化程序设计主要强调的是______。

A)程序的规模B)程序的易读性

C)程序的执行效率D)程序的可移植性

8.对建立良好的程序设计风格,下列描述正确的是______。

A)程序应简单、清晰、可读性好B)符号名的命名只要符合语法

C)充分考虑程序的执行效率D)程序的注释可有可无

9.结构化程序设计只允许有三种基本结构来构成任何程序。下列选项中不属于结构化程序设计的基本结构的是______。

A)选择结构B)可选结构C)重复结构D)顺序结构

二、填空题

1.在面向对象方法中,_______描述的是具有相似属性与操作的一组对象。(2006.4)

2.在面向对象的软件技术中,____ ___是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象,也可以发送给子类对象。

3.结构化程序设计的原则中,有一条是要求限制使用goto语句,但在用一个 __

程序设计语言去实现一个结构化的构造时,可以使用该语句。

4属于某类的对象除了具有该类所定义的特性外,还具有该类全部基类定义的特性。

5 结构化程序设计的三种基本逻辑结构为顺序、选择和。

6.多态机制不仅增加了面向对象软件系统的灵活性,进一步减少了信息冗余,而且显著地提高了软件的和。

算法与程序设计复习资料

江苏省高中信息技术算法与程序设计(选修) 复习要点 相关知识点 (一)算法 1.定义 1算法:就是解决问题的方法和步骤。算法是程序设计的“灵魂”,算法+数据结构=程序。单选题 1、下列关于算法说法不正确的是( A ) A、算法独立于任何具体的语言,BASIC算法只能用BASIC语言来实现 B、解决问题的过程就是实现算法的过程 C、算法是程序设计的“灵魂” D、其它三项都正确 2.算法的描述方法: 1算法的描述:可分多种表达方法,一般用自然语言、流程图和伪代码进行描述。 2自然语言描述法:指用人们日常生活中使用的语言(本国语言),用自然语言描述符合我们的习惯,且容易理解。 3流程图描述:也称程序框图,它是算法的一种图形化表示方法。且描述算法形象、直观,更易理解。 4伪代码描述法:是介于自然语言和计算机程序语言之间的一种算法描述。是专业软件开发人员常用方法。 相关题解: 单选题 1、图形符号" "在算法流程图描述中表示( B ). A 处理或运算的功能 B 输入输出操作 C 用来判断条件是否满足需求 D 算法的开始或结束 2、图形符号在算法流程图描述中表示( A ). A 处理或运算的功能 B 输入输出操作 C 用来判断条件是否满足需求 D 算法的开始或结束 3、以下哪个是算法的描述方法?( A ) A 流程图描述法 B 枚举法 C 顺序法 D 列表法

4、以下哪个是算法的描述方法?( D ) A 顺序法 B 列表法 C 集合法 D 自然语言描述法 (二)程序设计基础 (1)常用高级编程语言:BASIC、VB、Pascal、C、C++、Java 1面向对象的程序设计语言:其中的对象主要是系统设计好的对象,包括窗体等、控件等2控件:是指工具箱中的工具在窗体中画出的、能实现一定功能的部件,如文本框,命令按钮等。 对象属性=属性值 对象中属性可以在设计界面时通过属性窗中设置,也可以在运行时通过程序代码设置方法如下 例:给文本框“Txt123”的“Text”属性赋值为字符串“20”,代码如下 Txt123.text =”20” 变量=对象.属性 如果要获取对象的状态或特性,这时就要读取对象的属性值,方法如下 例:读取文本框“txt123”的“Text”属性的代码如下 a = txt123.text

算法与程序设计》选修教案

第一课初识算法与程序设计 一、教学目标 1、知识与技能 (1)理解算法的概念,培养学生自我探索信息,高效获取信息的能力; (2)能初步利用算法解决简单的问题,培养学生的理论联系实际能力和动手操作能力。 2、情感、态度、价值观 学生在学习过程中,通过亲身经历体验获得对此算法的感性认识,培养学生自我获取信息、分析评 价信息、、表达呈现信息的能力,进一步提高其信息素养。 二、教学重点难点 重点:算法概念的理解 难点:如何科学合理的选择和设计算法。 三、教学策略与手段 以趣味性问题设置情境,激发学生探索解决问题的兴趣,与学生进行互动探讨,通过Flash演示材 料,比较直观地把抽象的问题简单化,使学生的思考逐步深入,从而总结出

算法的概念,学会如何设计 和选择算法,培养学生自主探究学习的能力。 四、教学过程(1课时) (一)我们来共同寻找下面一些生活中比较现实的问题的解决方法。 【问题一】天下真的有“不要钱的午餐”吗? 某一餐馆门口海报上写着“不要钱的午餐”,规则如下:在三个月内,来宾必须凑够五个人,五人 每次来就餐必须按照不同的顺序坐,直到把所有可能的顺序都坐一遍,以后来吃饭就可永远免费” 。于 是有人想,这太容易了,每人每次坐不同的位置,吃五次不就行了?于是他就叫上自己的朋友参加这项 活动,可是,吃了十次之后,还没有吃上免费午餐,这是怎么回事呢? 学生们感觉非常有意思,很快以小组为单位进行热烈的讨论并得出了破解问题的步骤:①第一个座位5 个人都有坐的机会②第二个座位只有4个人中的任一个有坐的机会(一个人不能同时坐两个座位)③第 三个座位只有3个人中的任一个有坐的机会④第四个座位只有2个人中的任一个有坐的机会⑤第五个座 位只有1个人有坐的机会⑥计算:5×4×3×2×1=120⑦得出结论:需要吃120次才有可能

《算法与程序设计》考前模拟题1

《算法与程序设计》考前模拟题 1、下列选项中不是字符串常量的是 ( D ) A、”ab” B、”你好” C、”2006” D、1235 2、以下不属于算法基本特征的是( D)。 A、可执行性 B、确定性 C、有穷性 D、无限性 3、流程图是描述(B)的常用方式。 A、程序 B、算法 C、数据结构 D、计算规则 4、以下运算符中运算优先级最高的是( D ) A、+ B、- C、>= D、* 5、结构化程序设计由顺序结构,选择结构和循环结构三种基本结构组成,其中某程序中 三个连续语句如下: a=1 b=2 c=b+a 它属于(A) A、顺序结构 B、选择结构 C、循环结构 D、其他三种都不是 6、在现实生活中,人工解题的过程一般分为:( A ) A、理解分析问题->寻找解题方法->用工具计算->验证结果 B、寻找解题方法->理解分析问题->用工具计算->验证结果 C、用工具计算->验证结果->寻找解题方法->理解分析问题 D、用工具计算->验证结果->理解分析问题->寻找解题方法 7、一位同学想编程解决“韩信点兵”的问题,他制定的如下工作过程中,最恰当的是(C) A、设计算法,编写程序,提出问题,运行程序,得到答案 B、分析问题,编写程序,设计算法,运行程序,得到答案 C、分析问题,设计算法,编写程序,运行程序,得到答案 D、设计算法,提出问题,编写程序,运行程序,得到答案 8、一位爱好程序设计的同学,想通过程序设计解决“鸡兔同笼”的问题,他制定的如下工作过程中,更恰当的是(A)。 A、提出问题、设计算法、编写程序、得到答案 B、提出问题、编写程序、运行程序、得到答案 C、编写程序、设计算法、调试程序、得到答案 D、设计程序、提出问题、编写程序、运行程序 9、下列关于算法的特征描述不正确的是(C) A、有穷性:算法必须在有限步之内结束 B、确定性:算法的每一步必须有确切的含义 C、输入:算法必须至少有一个输入 D、输出:算法必须至少有一个输出 10.下面关于算法的说法错误的是( B )。 A.算法必须有输出B.算法就是程序 C.算法不一定有输入D.算法必须在有限步执行后能结束 11、下列哪一个不是用于程序设计的软件(C) A、BASIC B、C语言 C、Word D、Pascal 12、下列可以作为合法变量名的是(A) A、a7 B、7a C、a-3 D、8 13、流程图中表示判断框的是(B)。 A、矩形框B、菱形框C、圆形框D、椭圆形框 14、由“上车—掏钱—投币”所描述的问题是(A)。 A、无人售票车投币过程B、乘公交车过程C、上车过程D、下车过程 15、下列给出的赋值语句中正确的是(C)。

教科版高中信息技术选修一《算法与程序设计》选修教案.doc

学习必备欢迎下载 第一课初识算法与程序设计 一、教学目标 1、知识与技能 (1)理解算法的概念,培养学生自我探索信息,高效获取信息的能力; (2)能初步利用算法解决简单的问题,培养学生的理论联系实际能力和动 手操作能力。 2、情感、态度、价值观 学生在学习过程中,通过亲身经历体验获得对此算法的感性认识,培养学 生自我获取信息、分析评价信息、、表达呈现信息的能力,进一步提高其信息素养。 二、教学重点难点 重点:算法概念的理解 难点:如何科学合理的选择和设计算法。 三、教学策略与手段 以趣味性问题设置情境,激发学生探索解决问题的兴趣,与学生进行互动 探讨,通过 Flash 演示材料,比较直观地把抽象的问题简单化,使学生的思考 逐步深入,从而总结出算法的概念,学会如何设计和选择算法,培养学生自主 探究学习的能力。 四、教学过程( 1 课时) (一)我们来共同寻找下面一些生活中比较现实的问题的解决方法。 【问题一】天下真的有“不要钱的午餐”吗? 某一餐馆门口海报上写着“不要钱的午餐”,规则如下:在三个月内,来

的顺序都坐一遍,以后来吃饭就可永远免费” 。于是有人想,这太容易了,每人每次坐不同的位置,吃五次不就行了?于是他就叫上自己的朋友参加这项活动,可是,吃了十次之后,还没有吃上免费午餐,这是怎么回事呢? 学生们感觉非常有意思,很快以小组为单位进行热烈的讨论并得出了破解问题 的步骤:①第一个座位5个人都有坐的机会②第二个座位只有4个人中的任一 个有坐的机会(一个人不能同时坐两个座位)③第三个座位只有3个人中的任 一个有坐的机会④第四个座位只有2个人中的任一个有坐的机会⑤第五个座位 只有1个人有坐的机会⑥计算:5×4×3×2×1=120⑦得出结论:需 要吃120次才有可能吃上免费午餐。 【问题二】有三个和尚和三个妖怪过河,只有一条能装下两个人的船,在河的 任何一方或者船上,如果妖怪的人数大于和尚的人数,那么和尚就会有被吃掉 的危险。你能不能找出一种安全的渡河方法呢?请写一写你的渡河方案。学 生:学生讨论回答。 〖展示步骤〗 ①两个妖怪先过河,一个妖怪回来; ②再两个妖怪过河,一个妖怪回来; ③两个和尚过河,一个妖怪和一个和尚回来; ④两个和尚过河,一个妖怪回来; ⑤两个妖怪过河,一个妖怪回来; ⑥两个妖怪过河。 【F lash 动画展示】通过讨论和动画展示,我们可以知道,计算机解决问题和 人解决问题一样需要有清晰的解题步骤。算法就是解决问题的程序或步骤。(二)【课件展示】算法的概念:

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

高中信息技术《算法与程序设计VB (选修)》 知识要点 相关知识点 (一)算法 1.定义 相关题解: 1算法:就是解决问题的方法和步骤。算法是程序设计的“灵魂”,算法+数据结构=程序。 单选题 1、下列关于算法说法不正确的是( A ) A 、算法独立于任何具体的语言,BASIC 算法只能用BASIC 语言来实现 B 、解决问题的过程就是实现算法的过程 C 、算法是程序设计的“灵魂” D 、其它三项都正确 2.算法的描述方法: 1算法的描述:可分多种表达方法,一般用自然语言、流程图和伪代码进行描述。 2自然语言描述法:指用人们日常生活中使用的语言(本国语言),用自然语言描述符合我们的习惯,且容易理解。 3流程图描述:也称程序框图,它是算法的一种图形化表示方法。且描述算法形象、直观,更易理解。 4伪代码描述法:是介于自然语言和计算机程序语言之间的一种算法描述。是专业软件开发人员常用方法。 相关题解: 单选题 1、图形符号 "在算法流程图描述中表示( B ). A 处理或运算的功能 B 输入输出操作 C D 算法的开始或结束 2、图形符号 在算法流程图描述中表示( A ). A 输入输出操作 C 用来判断条件是否满足需求 D 算法的开始或结束 3、以下哪个是算法的描述方法?( A ) A 流程图描述法 B 枚举法 C 顺序法 D 列表法 4、以下哪个是算法的描述方法?( D ) A 顺序法 B 列表法 C 集合法 D 自然语言描述法 (二)程序设计基础 (1)常用高级编程语言:BASIC 、VB 、Pascal 、C 、C++、Java

1面向对象的程序设计语言:其中的对象主要是系统设计好的对象,包括窗体等、控件等2控件:是指工具箱中的工具在窗体中画出的、能实现一定功能的部件,如文本框,命令按钮等。 对象中属性可以在设计界面时通过属性窗中设置,也可以在运行时通过程序代码设置,方法如下 例:给文本框“Txt123”的“Text”属性赋值为字符串“20”,代码如下Txt123.text =”20” 变量=对象.属性 如果要获取对象的状态或特性,这时就要读取对象的属性值,方法如下 例:读取文本框“txt123”的“Text”属性的代码如下 a = txt123.text

算法与程序设计

第二部分算法与程序设计(选修) 主题1算法与程序设计 1.1算法 1.1.1计算机解决问题的过程 知识点1:人是如何解决问题的 【知识链接】 本考点要求学生达到“了解”水平。 解决问题的过程可以总结为:观察、分析问题,收集必要的信息,尝试按照一定的方法和步骤解决问题。一般来说,同一个问题可以有多种解决方法,但不同的方法有优劣之分。评价一种方法的优劣要与具体情况相结合。 要理解本考点的内容除了用教科书中“韩信点兵”的例子外,还可以举出其他一些例子,例如:最小公倍数问题、班级活动的设计等。 【技能扫描】 培养将生活中的实例整理成条理化步骤的好习惯,提高自己的逻辑思维和语言叙述能力。 体会逻辑关联词“如果……那么……”、“或者”、“并且”、“否则”的含义,能把这些逻辑关联词翻译成数学“语言”。 【典型题析】 1. 分析“这个人谁都不认识”的含义,体会同一种叙述在不同语境中可以表达不同的意思。 分析:第一种解释是在场的所有人都不认识这个人(这个人是被认识的对象);第二种解释是这个人不认识在场的所有人。 2.张三有一杯咖啡,李四有一杯牛奶,在不交换杯子的前提下如何交换两人的饮料。 分析:设张三的杯子为X,李四的杯子为Y,找一个空杯子T。将X杯中的咖啡倒入T杯中,将Y杯中的牛奶倒入X杯中,再将T杯中的咖啡倒入Y杯中即可。可以写成X→T,Y→X,T→Y。 【模拟练习】 1.把从早晨起床到学校的过程整理成算法(解决问题的方法和步骤)并表述出来。 2.一个侦探逮捕了5个嫌疑犯b因为这5个人供出的作案地点各有出入,进一步审讯后,他们分别提出了如下的申明。 A:5个人当中有1个人说了谎。 B:5个人当中有2个人说了谎。

历年算法与程序设计学业水平考试真题(带答案)

一、选择题 1、流程图是描述()的常用方式。 A、程序 B、算法 C、数据结构 D、计算规则 2、下面不属于算法描述方式的是()。 A、自然语言 B、伪代码 C、流程图 D、机器语言 3、以下运算符中运算优先级最高的是()。 A、+ B、^ C、>= D、* 4、某程序中三个连续语句如下: a=1 b=2 c=b+a 它属于() A、顺序结构 B、选择结构 C、循环结构 D、以上三种都不是 5、穷举法的适用范围是() A、一切问题 B、解的个数极多的问题 C、解的个数有限且可一一列举 D、不适合设计算法 6、在现实生活中,人工解题的过程一般分为() A、理解分析问题→寻找解题方法→用工具计算→验证结果 B、寻找解题方法→理解分析问题→用工具计算→验证结果 C、用工具计算→验证结果→寻找解题方法→理解分析问题 D、用工具计算→验证结果→理解分析问题→寻找解题方法 7、下列关于算法的特征描述不正确的是() A、有穷性:算法必须在有限步之内结束 B、确定性:算法的每一步必须确切的定义 C、输入:算法必须至少有一个输入 D、输出:算法必须至少有一个输出 8、下列哪一个不是用于程序设计的软件() A、BASIC B、C语言 C、Word D、Pascal 9、下列可以作为合作变量名的是() A、a7 B、7a C、a-3 D、8 10、编程求1+2+3+........+1000的和,该题设计最适合使用的控制结构为()。 A、顺序结构 B、分支结构 C、循环结构 D、选择结构 11、下列步骤不属于软件开发过程的是() A、任务分析与系统设计 B、软件的销售 C、代码编写与测试 D、软件测试与维护12.以下程序段运行时,语句k=k+1 执行的次数为()次。 k=-10 do k=k+1 loop while(until)k=0 A. 9 B. 10 C. 11 D. 12 13.已知x=6, y=5, 则以下运算结果为True 的是() A.Not(x>y) B. (x<5)or(y>6) C. (x>=6)And(y>=5) D. Not(x>4) 14.模块化程序设计方法反映了结构化程序设计的()基本思想。 A、自顶向下,逐步求精 B、面向对象 C、自定义函数、过程 D、可视化编程 15、一位同学想编程解决“韩信点兵”的问题,他制定的如下工作过程中,最恰当的是() A、设计算法,编写程序,提出问题,运行程序,得到答案

高中信息技术 算法与程序设计教案 粤教版选修1

2.3 选择结构第一课时教学设计 【教学内容】 (1)教材模块:《算法与程序设计》 (2)年级:高中一年级 (3)所用教材出版社:上海科技教育出版社 (4)所属的章节:第二章第三节 (5)课时数:2课时 【内容分析】 选择结构是VB程序设计三个基本结构之一。是学生学习VB程序入门,掌握程序语言的重要内容。 【教学目标】 知识1、掌握条件逻辑表达式的构成 2、掌握简单IF语句的格式及其含义 技能1、通过自主探究学习、编写程序,让学生掌握简单if语句 的语法格式和使用方法。 情感1、形成良好的程序程序书写格式。 2、学会自主学习和养成独立解决问题的能力。 【学生分析】 县级城市学生大部分来自农村,80%以上的学生在学校没有受到正规的计算机入门教育,大部分学生对编程一无所知,还有一部分学生英语基础特差,但通过一个学期的信息技术必修课学习后对电脑简单操作有一定认识,因为选择结构是程序设计基础中的一节重要内容,所以本节课分二个课时进行教学,第一课时主要讲IF语句的简单结构和标准结构,第二课时讲多重分支与多重选择语句。 【教学重点和难点】 重点:简单选择结构和标准选择结构的语法和逻辑运算。 难点:选择结构算法的实现。 【教学策略设计】 【教学过程设计】 1.教学过程 教学环节教师活动学生活动设计意图

导入新课5分钟 活动1:给出特定关键词“小学生、 公共汽车”,要求学生用“如果…… 就……”句型造句; 活动2:要求学生用以上关键词,使 用“如果……就……否则就……”句型造 句; 活动3:由于现在公共汽车都是无人 售票,公交公司想要设计一款自动检票的 设备,该设备能够自动测出身高并确定是 否需要买票。假定机器自动测出乘客的身 高为H,请大家想想计算机该怎么判断乘 客需要买什么票?用你自己的语言说出 判断过程。并试着翻译成英语。 学生思考并积 极回答 大部分学生会 造句:如果小 学生身高小于 1.2米,就不用 买票. 如果H<1.2米 就不用买票, 否则就要买 票. 通过使用学生熟 悉的常识,引起学生积 极思考,激发学生学习 兴趣,想像力和继续探 讨的热情和期待。 新课教学20分钟 1.师生一起画出活动3的流程图 2.探究学习:写出该程序 学生自己看书学习IF语句的语法 并试着写出该程序 3.展示部分学生作品并小结IF语句 的简单格式。(有的同学可能用简单格式 有的可能用标准格式,这里一起讲评) 4.完善作品 (提醒学生程序的书写格式) 5.小结IF语句语法格式 1)、IF 条件 THAN 语句块 END IF 2)、IF 条件 THAN 语句块1 ELSE 语句块2 END IF 学生一起画 学生自学教材 并试着写出程 序 找两位做得最 好的同学上台 讲解他的程序 并介绍选择实 现的方法 未做完的或程 序有错误的同 学进一步完善 作品,已经完 成的同学作为 小老师指导其 他同学。 请两位同学上 台小结IF语句 的格式。 在学生使用“如 果……就……否则 就……”造句,并翻译 成英语的基础上学生 很快会形成“IF…… THEN……ELSE……”概 念,通过自己学习教材 的IF语句语法格式从 而将模糊的想法转化 成严格的程序语句定 义,再通过程序实践、 老师点评、小结和自己 改正、完善作品从而内 化为自己的知识。 课堂任务1、书64页课本例题填空。全部学生必须 完成 通过二个任务强化IF语句的练习,并

选修一算法与程序设计

选修1:算法与程序设计 第一单元算法 一、知识内容 (一)使用计算机解决问题的一般过程 考试要求:对所列知识要知道其内容及含义,并能用自己的语言或动作进行表达、判断和直接运用。 1.一般过程 (1)分析问题确定要使用计算机来“做什么”,即确定解题的任务。 (2)寻求解决问题的途径和方法。 (3)用计算机进行处理。 2.确定解决问题的方法及步骤化 确定了解决问题的方法后,必须把解决问题的方法步骤化,即用某种方式告诉计算机每个需做什么。 计算机开始计算之前,需把解决问题的程序存储在内存中。通常一个程序包括指令和数据两部分。 (1)指令部分:指令是对计算机操作类型和操作数地址做出规定的一组符号。 (2)数据部分:计算所需的原始数据、计算的中间结果或最终结果。 3.设计程序时需要考虑的问题 (1)数据的存储:计算所需要的原始数据、计算产生的中间结果需要存储在不同的变量中。 (2)计算的过程:把解决问题的方法步骤化,并用计算机能执行的指令来有序地实现对应的步骤。 (3)典型的指令类型有输入指令、输出指令、算术运算指令、逻辑运算指令和控制转移指令。(二)算法及算法的表示方法 考试要求:对所列知识要理解其确切含义及与其它知识的联系,能够用所学的信息技术知识和操作方法解决实际问题,熟练应用信息技术进行信息的处理。 1.算法的特征 (1)有穷性。一个算法必须保证它的执行步骤是有限的,即它是能终止的。 (2)确定性。算法中的每个步骤必须有确切的含义,不应当有模棱两可的。 (3)能行性。算法中的每一个步骤都要足够简单,能实际能作的,而且在能在有限的时间内完成。 (4)有0个或多个输入。 (5)有一个或多个输出。 (三)用自然语言和流程图表示算法 考试要求:对所列知识要理解其确切含义及与其它知识的联系,能够用所学的信息技术知识和操作方法解决实际问题,熟练应用信息技术进行信息的处理。 1.自然语言 就像写文章时所列的提纲一样,可以有序地用简洁的自然语言加数学符号来描述算法。 2.流程图 用国家颁布的标准(GB1526-89,ISO5807-1985)中规定的图示及方法来画流程图,常用的构件有如图所示。

《算法与程序设计》试题带答案

《算法与程序设计》试题 学校:_____________ 班级:____________ 学号:____________ 姓名:____________ 一、单选题(每小题3分,20小题,共60分) 1、用计算机解决问题时,首先应该确定程序“做什么?”,然后再确定程序“如何做?”请问“如何做?”是属于用计算机解决问题的哪一个步骤?() A、分析问题 B、设计算法 C、编写程序 D、调试程序 2、在调试程序过程中,下列哪一种错误是计算机检查不出来的?() A、编译错误 B、执行错误 C、逻辑错误 D、任何错误计算机都能检查出来 3、下列关于算法的叙述中,错误的是() A、一个算法至少有一个输入和一个输出 B、算法的每一个步骤必须确切地定义 C、一个算法在执行有穷步之后必须结束 D、算法中有待执行的运算和操作必须是相当基本的。 4、流程图中表示判断的是()。 A、矩形框B、菱形框C、圆形框D、椭圆形框 5、任何复杂的算法都可以用三种基本结构组成,下列不属于基本结构的是() A、顺序结构 B、选择结构 C、层次结构 D、循环结构 6、能够被计算机直接识别的语言是() A、伪代码 B、高级语言 C、机器语言 D、汇编语言 7、在VB语言中,下列数据中合法的长整型常量是() A、08A B、2380836E C、88.12345 D、1.2345E6 8、求Mid(“ABCDEFG”,3,2)的结果是() A、“ABC” B、“CD” C、“ABCDEF” D、“BCD” 9、表达式 A+B+C=3 OR NOT C<0 OR D>0 当A=3,B=4,C=-5,D=6时的运算结果是() A、0 B、1 C、TRUE D、FALSE

vb算法与程序设计复习题

《算法与程序设计》复习题 一、选择题部分(100题) 一章一节:了解计算机解决问题的过程 1.用计算机解决问题时,首先应该确定程序“做什么?”,然后再确定程序“如何做?”请问“如何做?”是属于用计算机解决问题的哪一个步骤?() A、分析问题 B、设计算法 C、编写程序 D、调试程序答案:B 2.学校要举行运动会,请你设计一个能够对运动员分数自动排序的软件,如果要设计此软件,以下最好的方法和步骤是()。 A、分析问题,编写程序,设计算法,调试程序 B、设计算法,编写程序,提出问题,调试程序 C、提出问题,设计算法,编写程序,调试程序 D、设计算法,提出问题,编写程序,调试程序 答案:C 3.下列步骤不属于软件开发过程的是()。 A、任务分析与系统设计 B、软件的销售 C、代码编写与测试 D、软件测试与维护 答案:B 4.用计算机解决问题的步骤一般为()①编写程序②设计算法③分析问题④调试程序。 A.①②③④ B.③④①② C.②③①④ D.③②①④答案:D 5.以下描述中最适合用计算机编程来处理的是()。 A、确定放学回家的路线 B、计算某个同学期中考试各科成绩总分 C、计算100以内的奇数平方和 D、在因特网上查找自己喜欢的歌曲答案:C 6.以下问题中最适合用计算机编程处理的是()。 A、制定本学期的学习计划 B、计算正方形的周长 C、创作一首歌曲 D、求1000以内的所有素数 答案:D 7.由“上车—掏钱—投币”所描述的问题是()。 A、无人售票车投币过程 B、乘公交车过程 C、上车过程 D、下车过程答案:A 一章二节:算法和算法描述 8.下面说法正确的是()。 A、算法+数据结构=程序 B、算法就是程序 C、数据结构就是程序 D、算法包括数据结构 答案:A 9.算法描述可以有多种表达方法,下面哪些方法不可以描述“水仙花数问题”的算法()。 A.自然语言 B.流程图 C.伪代码 D.机器语言答案:D 10.下面关于算法的说法错误的是()。 A、算法必须有输出 B、算法就是程序 C、算法不一定有输入 D、算法必须在有限步执行后能结束 答案:B 11.算法的三种基本控制结构是顺序结构、分支结构和()。 A、模块结构 B、情况结构 C、流程结构 D、循环结构答案:D 12.算法的三种基本控制结构是分支结构、循环结构和() A、模块结构 B、情况结构 C、流程结构 D、顺序结构答案:D 13.算法的三种基本控制结构是顺序结构、分支结构和()。 A、模块结构 B、循环结构 C、流程结构 D、情况结构答案:B 14.下面关于算法的认识正确的是()。 A、算法就是求解“鸡兔同笼问题” B、算法一定没有输出 C、算法就是计算机程序 D、算法的步骤必须是有限的答案:D

算法与程序设计(教科版)教案

算法与程序设计(教科版)教案 1-1节计算机解决问题的过程 一、教学目标 1、知识与技能 (1)让学生了解算法、穷举法、程序设计语言、编写程序和调试程序等概念。 (2)让学生知道对现实问题的自然语言的描述,特别是类似程序设计语言的自然语言描述。 (3)让学生理解分析问题、设计算法、编写程序、调试程序这一用计算机解决问题的基本步骤,认识其在算法与程序设计中的作用。 2、方法与过程 (1)培养学生发现旧知识的规律、方法和步骤,并把它运用到新知识中去的能力。 (2)培养学生调试程序的能力。 (3)培养学生合作、讨论、观摩、交流和自主学习的能力。 3、情感态度和价值观 通过“韩信点兵”这个富有生动情节的实例和探究、讲授、观摩、交流等环节,让学生体验用计算机解决问题的基本过程。 二、重点难点 本节的重点用计算解决问题的过程中的分析问题、设计算法、和上机调试程序等步骤。用计算机解决问题的过程中的分析问题、设计算法也是本节的难点。 三、教学环境 1、教材处理 教学内容选用中华人民共和国教育部制订的《普通高中技术课程标准》(2003年4月版)中信息技术部分的选修模块1“算法与程序设计”第一章的第一课“计算机解决问题的过程”。教材选用《广东省普通高中信息技术选修一:算法与程序设计》第三章第一节,建议“算法与程序设计”模块在高中一年级下学期或高中二年级开设。 根据2003年4月版《普通高中技术课程标准》的阐述,“算法与程序设计”是普通高中信息技术的选修模块之1,它的前导课程是信息技术的必修模块“信息技术基础”。学生在“信息技术基础”模块里已经学习了计算机的基本操作,掌握了启动程序、窗口操作和文字编辑等基础知识。学生可以利用上述的基础知识,用于本节课的启动Visual Basic程序设计环境,输入程序代码,运行程序等操作。本节课“计算机解决问题的过程”是“算法与程序设计”模块的第一节课,上好这节课是使学生能否学好“算法与程序设计”这一模块的关键。本节课的教学目的是让学生理解分析问题、设计算法、编写程序和调试程序等用计算机解决问题的基本过程,认识其在算法与程序设计中的地位和作用,它也是后续课程如模块化程序设计、各种算法设计等课程的基础。 让学生在人工解题中发现分析问题、设计算法等步骤,并把它应用到用计算机解决问题中去,这是构建主义中知识迁移的方法。本节课还采用了探究、讲授、观摩、交流、阅读材料等多种教学活动的有机结合的方法。 2、预备知识 本节课相联系的旧知识是计算机的基本操作中鼠标、键盘操作,启动、关闭程序,窗口、菜单操作和文字编辑等基础知识,还有解决数学问题的步骤等知识。 3、硬件要求

算法与程序设计试题带答案

高一第二学期《算法与程序设计》学分认定试题 学校:_____________ 班级:____________ 学号:____________ 姓名:____________ 一、单选题(每小题3分,20小题,共60分) 1、用计算机解决问题时,首先应该确定程序“做什么”,然后再确定程序“如何做”请问“如何做”是属于用计算机解决问题的哪一个步骤() A、分析问题 B、设计算法 C、编写程序 D、调试程序 2、在调试程序过程中,下列哪一种错误是计算机检查不出来的() A、编译错误 B、执行错误 C、逻辑错误 D、任何错误计算机都能检查出来 3、下列关于算法的叙述中,错误的是() A、一个算法至少有一个输入和一个输出 B、算法的每一个步骤必须确切地定义 C、一个算法在执行有穷步之后必须结束 D、算法中有待执行的运算和操作必须是相当基本的。 4、流程图中表示判断的是()。 A、矩形框B、菱形框C、圆形框D、椭圆形框 5、任何复杂的算法都可以用三种基本结构组成,下列不属于基本结构的是() A、顺序结构 B、选择结构 C、层次结构 D、循环结构 6、能够被计算机直接识别的语言是() A、伪代码 B、高级语言 C、机器语言 D、汇编语言 7、在VB语言中,下列数据中合法的长整型常量是() A、08A B、2380836E C、 D、 8、求Mid(“ABCDEFG”,3,2)的结果是() A、“ABC” B、“CD” C、“ABCDEF” D、“BCD” 9、表达式A+B+C=3 OR NOT C<0 OR D>0 当A=3,B=4,C=-5,D=6时的运算结果是() A、0 B、1 C、TRUE D、FALSE 10、在循环语句For x=1 to 100 step 2 …… Next x 中,x能达到的最大值是() A、100 B、99 C、98 D、97 11、在下列选项中,不属于VB的对象的是() A、窗体的背景颜色 B、命令按钮 C、文本框 D、标签 12、在调试程序的时候,经常要设置断点,设置断点的快捷键是()A、F1 B、F8 C、F9 D、F12 13、算法描述可以有多种表达方法,下面哪些方法不可以描述“闰年问题”的算法() A、自然语言 B、流程图 C、伪代码 D、机器语言 14、以下不属于非法用户自定义标识符(常量和变量命名)的是() A、8ad B、ad8 C、_a8d D、const 15、已知A,B,C,D是整型变量,且都已有互不相同的值,执行语句B=0;A=C;D=A;D=B;后,其值相等的变量是() A、A,D B、A,C C、C,B D、B,A 16、要交换变量A和B的值,应使用的语句组是( ) A、A=B;B=C;C=A B、C=A;A=B;B=C C、A=B;B=A D、C=A;B=A;B=C 17、VisualBasic中以单引号开头一行文字称为注释,它对程序的运行() A、起一定作用 B、有时候起作用 C、不起任何作用,但是必须的 D、不起任何作用,但能增加程序的可阅读性 18、要使一个命令按钮显示文字“确定”,正确的设置是把该命令按钮的()。 A、属性Font设置为“确定” B、属性.ForeColor设置为“确定” C、属性Caption设置为“确定” D、属性BorderStyle设置为“确定” 19、要从文本框TXTShowOut中输出"中国您好!",代码为( ) A ="中国您好!" B ="中国您好!" C ="中国您好!" D Val=“中国您好!” 20、下列Visual Basic程序段运行后,变量max的值为()。 a=11; b=15; max=a IF b>max Then max =b A、15 B、11 C、15或11都有可能 D、以上都不是 二、阅读程序写结果(第1~2小题每题5分,第3小题10分,共20分) 1、Private Sub Form_Load() N=InputBox(“请输入N的值:”,“输入”) S=1 For i=1 to N S=S*i Next i MsgBox “S=”+Str(s),0,”计算结果” End Sub 当N=5时,运行的结果是__________________。

算法与程序设计----从零开始学Visual Basic1

算法与程序设计----从零开始学Visual Basic 作者:山东东营胜利第二中学刘健 前言:山东的学生从高二就要选修信息技术课程,当你选修了算法和程序设计这门课程,恭喜你!因为你已经开始向更高层次迈进了。这门课程将帮助我们揭开计算机的神秘面纱。通过学习,我们不仅能知道平时使用的软件是如何开发出来的,还能从计算机语言层面上了解计算机能做什么,是如何工作的,知道软件背后的设计过程,甚至我们自己也能设计出优秀的计算机软件。本教程是根据教育科学出版社编著的普通高中课程标准实验教科书《算法与程序设计(选修)》一书的内容编著。呵呵,就是我们现在用的课本。当然了,如果没有课本,你也一定能够学会下面的教程。因为,从零开始学。下面Let’S GO. 第一课认识我们的创作室 Visual basic是美国微软公司于1991年推出的基于Basic语言(Beginners All—purpose Symbolic Instruction Code,初学者通用指令)的可视化程序设计语言,是经典的编程设计语言,也是基础语言之一,简单易学,功能强大,深受广大初学者的喜爱。这里我们用的是VB6.0中文版。VB是运行在Windows视窗操作系统上,设计程序的思想在于在窗口中放置对象和针对对象设计代码。 (一)启动VB:单击“开始”-“程序”-“Microsoft Visual Basic 6.0 中文版”选择“标准EXE”,单击“打开”进入窗口。

(二)VB窗口如图所示

1、标题栏:在最上面蓝色标题是“工程1-...”,是我们当前正在设计的程序,被称作“工程1”。 2、菜单栏:菜单栏在第二行,包含一组菜单,菜单中有各种命令。 3、工具栏:第三行是工具栏,工具栏是一些最常用的命令,而且是用图标表示的,因而便于形象记忆和操作。 4、工作区:工作区占据窗口的绝大部分,从左向右包括工具箱、窗体、和属性窗口。 (1)工具箱:在工作区的左侧,包含许多编程用到的基本对象,被称作“控件”。 (2)窗体:中间的灰色的窗口,是我们设计的程序的基本框架,所有的对象都放在这个窗口当中。 (3)小窗口:在右侧有三个纵向排列的窗口。 ①最上面是工程资源管理窗口; ②下面是属性窗口; ③最下面是布局窗口,里面显示程序运行时的位置,拖动里面的小框可以改变程序的显示位置。 (三)、简单程序入门 1、新建“标准EXE”工程,进入vb集成开发环境。系统自动创建一个窗体“Form1”, 如图所示:

算法与程序设计复习整理

46.关于下面流程图功能的描述正确的是:( ) A.输入一个数,若其大于0则输出该数,若其小于0则输出该数的相反数 B.输入一个数,若其小于或等于0则输出该数的相反数 C.输入一个数,输出其绝对值 D.以上答案都正确 47.鸡、兔共笼问题,有腿共60条,问鸡、兔各有多少只?下面鸡和兔只数最合理的范围是( ) (范围确定了循环的起始值和终止值) A.鸡:1到28,兔:1到14 B.鸡:2到28,兔:1到14 C.鸡:1到28,兔:2到14 D.鸡:2到28,兔:2到14 48. 在程序中需要将两个变量的值交换,以下四段流程图中,( )不能完成将变量X、Y的值互相交换。A.B.C.D. 49. 使用计算机解题的步骤,以下描述正确的是:( )。 A.正确理解题意→设计正确算法→寻找解题方法→编写程序→调试运行 B.正确理解题意→寻找解题方法→设计正确算法→编写程序→调试运行 C.正确理解题意→寻找解题方法→设计正确算法→调试运行→编写程序 D.正确理解题意→寻找解题方法→设计正确算法→编写程序→调试运行 50. 算法的特征是:有穷性、( )、能行性、有0个或多个输入和有一个或多个输出。 A.稳定性B.确定性C.正常性D.快速性 51. 可以用多种不同的方法来描述一个算法,算法的描述可以用:( ) A.流程图、分支和循环B.顺序、流程图和自然语言 C.流程图、自然语言和伪代码D.顺序、分支和循环 52. 算法中通常需要三种不同的执行流程,即:( ) A.连续模式、分支模式和循环模式B.顺序模式、结构模式和循环模式

C.结构模式、分支模式和循环模式D.顺序模式、分支模式和循环模式 53. 流程图是一种描述算法的方法,其中最基本、最常用的成分有:( ) A.处理框、矩形框、连接框、流程线和开始、结束符 B.菱形框、判断框、连接框、流程线和开始、结束符 C.处理框、判断框、连接框、圆形框和开始、结束符 D.处理框、判断框、连接框、流程线和开始、结束符 54. 算法的描述可以用自然语言,下面说法中正确的是:( ) A.所谓自然语言描述算法就是用人类语言加上数学符号,来描述算法 B.用自然语言描述算法有时存在“二义性” C.自然语言用来描述分支、循环不是很方便 D.以上说法都错误 55.关于程序中的变量,下面说法中错误的是:( )。 A.一旦将数据存入某变量,读取变量中的值,不会改变变量的内容 B.一旦将数据存入某变量,以后就不能将新的数据存入该变量 C.一旦将数据存入某变量,以后可以将新的数据存入该变量 D.一旦将数据存入某变量,只要不把新的数据存入,变量的内容不会改变 56. 程序通常需要三种不同的控制结构,即:顺序结构、分支结构和循环结构,下面说法正确的是:( ) A.一个程序只能包含一种结构 B.一个程序最多可以包含两种结构 C.一个程序可以包含以上三种结构中的任意组合 D.一个程序必须包含以上三种结构 57. 采用盲目的搜索方法,在搜索结果的过程中,把各种可能的情况都考虑到,并对所得的结果逐一进行判断,过滤掉那些不合要求的,保留那些合乎要求的结果,这种方法叫做( ) A.递推法B.枚举法C.选择法D.解析法 VB程序填空题

算法与程序设计教案

算法与程序设计思想 【基本信息】 【课标要求】 (一)利用计算机解决问题的基本过程 (1)结合实例,经历分析问题、确定算法、编程求解等用计算机解决问题的基本过程,认识算法和程序设计在其中的地位和作用。 (2)经历用自然语言、流程图或伪代码等方法描述算法的过程。 (4)了解程序设计语言、编辑程序、编译程序、连接程序以及程序开发环境等基本知识。 【学情分析】 高一年级的学生已具备了一定的观察、思考、分析和解决问题能力,也已有了顺序结构、分支结构、循环结构等知识的储备。因此,对于如何将解决问题的思路画成流程图已有一定的基础,但可能还不很熟练,尤其对刚学过的循环结构,教师在课堂上要注意引导。 『此处说“已有了顺序结构、分支结构、循环结构等知识的储备”,应该是指在必修部分对“计算机解决实际问题的基本过程”已有所体验与了解,或是指已学习过数学中相关模块的知识,这是本案例教学得以实施的必不可少的前提条件。』 【教学目标】 1.知识与技能: 建立求一批数据中最大值的算法设计思想,并将算法的设计思想用流程图表示出来。 2.过程与方法: 利用现实生活中比较身高的活动,以及对武术比赛中“打擂台”流程的逐步梳理,让学生学会从此类生活实际中提炼出求最大值的思想方法,即算法思想。 培养学生分析问题、解决问题的能力,让学生学会在面对问题时能梳理出解决问题的清晰思路,进而设计出解决某个特定问题的有限步骤,从而理解计算机是如何解决、处理某种问题的。 『在过程上,通过现实生活中的实例来引导学生总结“求最大值”的算法思想。过程的实现关键在于实例引用是否贴切,是否有利于学生向抽象结论的构建。本案例的实例选择是符合这一要求的。在方法上,注重培养学生分析、解决问题的一般能力,再次体验与理解应用计算机解决问题的基本过程,为后面更一步的学习打下基础,积累信心。』 3.情感态度与价值观:

算法与程序设计会考复习题答案

《算法与程序设计》模块会考复习题 一.单选题 1. java方法重载时参数不可能出现的情况是____D______。P67 A.参数的个数不同 B.参数的个数相同而参数的类型不同 C.参数不完全对应相同D.参数完全对应相同 2. 运行Java程序需要的工具软件所在的目录是___A_______。P16 A.JDK的bin目录B.JDK的demo目录 C.JDK的lib目录D.JDK的jre目录 3. J_HelloWorld.java 的文件内容如下: class J_HelloWorld { public static void Main(String args[]) M不应大写 { System.out.println(" Hello World "); } } 下面说法正确的是____B______。 A.J_HelloWorld.java无法通过编译,因为main方法的声明方式不对 B.J_HelloWorld.java可以通过编译,但程序运行时出现“程序中没main方法”的异常C.J_HelloWorld.java可以通过编译,但无法运行,因为该文件没有public类 D.J_HelloWorld.java可以通过编译并正常运行,结果输出字符串“Hello World” 4. 逻辑表达式!(3/2==1.5)&& 9<3|| 9>3的运算结果为_____A_______。 P9 A.true B.false C.表达式有错D.条件不足 5. 下列可以将变量x和y的值互换的语句是___B______。P35 A.x=y;y=x; B.z=x;x=y;y=z; C.x=z;z=y;y=x; D. x=(x+y)/2;y=(x-y)/2; 6. 执行完下面程序片段之后,下面结论正确的是___B_____。 P43 int a,b,c; a=1;b=2; c=(a+b)>3 ? a++:b++; A.a的值是2,b的值是3 B.a的值是1,b的值是3 C.a的值是1,b的值是2 D.c的值是false。 7. 下面程序片段输出的是___C_______。应使用关系运算符== int a=3,b=1;

算法与程序设计

江苏省高中信息技术算法与程序设计VB(选修)

《算法与程序设计VB (选修)》 知识要点 相关知识点 (一)算法 1.定义 相关题解: 1算法:就是解决问题的方法和步骤。算法是程序设计的“灵魂”,算法+数据结构=程序。 单选题 1、下列关于算法说法不正确的是( A ) A 、算法独立于任何具体的语言,BASIC 算法只能用BASIC 语言来实现 B 、解决问题的过程就是实现算法的过程 C 、算法是程序设计的“灵魂” D 、其它三项都正确 2.算法的描述方法: 1算法的描述:可分多种表达方法,一般用自然语言、流程图和伪代码进行描述。 2自然语言描述法:指用人们日常生活中使用的语言(本国语言),用自然语言描述符合我们的习惯,且容易理解。 3流程图描述:也称程序框图,它是算法的一种图形化表示方法。且描述算法形象、直观,更易理解。 4伪代码描述法:是介于自然语言和计算机程序语言之间的一种算法描述。是专业软件开发人员常用方法。 1" ( A 处理或运算的功 ( A ). B D 3、以下哪个是算法的描述方法?( A ) A 流程图描述法 B 枚举法 C 顺序法 D 列表法 4、以下哪个是算法的描述方法?( D ) A 顺序法 B 列表法 C 集合法 D 自然语言描述法 (二)程序设计基础 (1)常用高级编程语言:BASIC 、VB 、Pascal 、C 、C++、Java 1面向对象的程序设计语言:其中的对象主要是系统设计好的对象,包括窗体等、控件等 2控件:是指工具箱中的工具在窗体中画出的、能实现一定功能的部件,如文本框,命令按钮等。

对象属性=属性值 对象中属性可以在设计界面时通过属性窗中设置,也可以在运行时通过程序代码设置,方法如下 例:给文本框“Txt123”的“Text”属性赋值为字符串“20”,代码如下 Txt123.text =”20” 变量=对象.属性 如果要获取对象的状态或特性,这时就要读取对象的属性值,方法如下 例:读取文本框“txt123”的“Text”属性的代码如下 a = txt123.text 2方法 [对象].方法[参数名表] 例:form.print ”欢迎使用” 该语句使用print方法在form1窗体中显示字符串“欢迎使用” 3事件及事件驱动 事件是对象对外部操作的响应,如在程序执行时,单击命令按钮会产生一个Click事件。如需要命令按钮响应Click 事件,就把完成Click事件功能的代码写到Click事件的事件过程中,与事件一一对应。 事件过程的形式如下: Private Sub 对象_事件名( ) ……………(事件过程代码) End Sub 一个简单的VB程序 求圆的周长和面积 Private Sub Command1_Click() Dim r As Single '定义r为单精度型 Dim c As Single '定义c为单精度型 Dim s As Single '定义s为单精度型 r = Val(Text1.Text) '输入半径r c = 2 * 3.14159 * r '计算周长 s = 3.14159 * r * r '计算面积 Text2.Text = c '输出周长 Text3.Text = s '输出面积 End Sub Private Sub Command2_Click() End '退出 End Sub相关题解: 单选题 1、下列关于程序设计说法正确的是( B )。 A、程序设计语言的发展经历了机器语言、汇编语言到高级语言的过程,比

相关文档
相关文档 最新文档