基本的算法语句

2024-05-02

基本的算法语句(精选9篇)

篇1:基本的算法语句

1.2基本算法语句(教学反思)

数学组 蔡云巧

课型:汇报课

算法语句是继“程序框图”之后学习的内容,是解决某一个(或一类)问题的算法的程序实现. 学习算法的目的,“就是体会算法的基本思想以及算法的重要性和有效性,发展有条理的思考与表达的能力,提高逻辑思维能力”这是因为,随着现代信息技术飞速发展,算法在科学技术、社会发展中发挥着越来越大的作用,并日益融入社会生活的许多方面,算法思想已经成为现代人应具备的一种数学素养. 以下我谈谈这堂课的两点体会:

一、对教学内容的认识

“算法语句”是“新课标”的新增内容.虽然这部分内容不太便于高考考查,但是,它的学习却有利于培养学生的逻辑思维能力.因此,我们应该认真地组织教学,让学生“体会算法的基本思想以及算法的重要性和有效性,发展有条理的思考与表达的能力,提高逻辑思维能力”。

二、现代信息技术的使用

这节课是数学课.但图形计算器起到了很好的辅助作用.程序框图提供了一个解决问题的设计思路,是否可行、可靠?需要把算法相应的程序语句输入到计算器上来验证.仅仅画出程序框图,写出算法语句,没有经过验证,仍然有点“纸上谈兵”,对程序框图的可行性缺少验证,也缺乏真实感的信任.由于有了计算器的支持,不仅能在课堂上很快进行各种赋值计算,验证所设计的算法,而且便于学生实时的讨论与修改,从而帮助学生更好地把握算法结构的特征,增强对算法结构的了解,加深了对算法的体验,提高了课堂教学效果.由于有了图形计算器的支持,学生的学习方式改变了,学生的兴趣浓、积极性高,参与度高效果明显增强了.他们可以方便地在“做”中学,既是对自己设计的算法进行验证,并能及时解决复杂的计算问题正如陆游所说“纸上得来终觉浅,绝知此事要躬行”,更好地体现了学习的本质.

2013-11-20

篇2:基本的算法语句

一、概述

《基本算法语句-条件语句》是《普通高中课程标准实验教科书数学必修3》(人教A版)第一章算法初步第1.2.2节内容。

条件语句是算法中最基本语句之一,它是学生在学习了程序框图、输入、输出和赋值语句之后的后续内容,是循环语句的基础,更是计算科学的基础。而算法思想在初中数学已有所体现,并渗透于高中数学的各个部分。所以通过对条件语句的学习,可以帮助学生更好地学习和体会算法的基本思想,提高逻辑思维能力,发展有条理的思考和表达能力。

二、教学目标分析

《标准》将数学探究作为贯穿高中数学课程的重要活动之一,而提出问题是数学探究的一个重要方面。发展学生的数学应用意识,注重信息技术与数学课程的整合,运用信息技术改变学生的学习方式是课标的基本理念。结合本节课内容和学生的实际情况,制定教学目标、教学重点、难点如下:

1、知识与技能

理解条件语句和条件结构之间的对应关系。

掌握条件语句的语法规则和用算法解决问题的一般步骤。

提高学生逻辑思维能力,发展有条理的思考与表达能力。

2、过程与方法

教师设置情境,引导学生提出问题这一过程,培养了学生的创造性思维。

写算法步骤,画程序框图,编写程序,QBasic实现算法这一解决问题的步骤,培养理性精神和实践能力。

通过小组合作交流,更深层次理解算法的基本思想。

3、情感态度与价值观

利用QBasic实现算法,提高学生学习兴趣,树立学好数学的信心。

认识数学的价值,培养学生良好的个性品质,形成积极的学习态度。

教学重点:条件语句的格式、结构;用所学算法语句解决问题的过程和方法。

教学难点:利用条件语句编写解决问题的程序;用QBasic实现算法。

三、学习者特征分析

1、高一已经开设了信息技术课程,对计算机知识有了一定的了解,他们对计算机有着较浓厚的兴趣。2、学生具备一定的模仿、探索、操作能力,合作精神较好。

3、前面已经学习了输入、输出与赋值语句。

4、学生已学习过的条件语句的程序框图是条件语句两种形式的认知起点。

四、教学策略选择与设计

建构主义认为,学习是在原有知识的基础上,在新旧知识的相互作用过程中,通过同化和顺应,使自身的认知结构得以转换和发展。结合本节课的具体内容,采用启发式教学法,小组合作学习法,计算机辅助教学等教学法。

根据以上分析,本节课按照提出问题-解决问题的思路来设计教学程序,以学生为主体,在合作中学习和体会算法的基本思想,发展学生的创造性思维。同时考虑不同学生的个性差异和发展层次,让各层次学生都得到发展。通过多媒体演示提高课堂效率,利用QBasic实现算法,进一步体现算法思想。

五、教学资源与工具设计

1、课前做好相关的幻灯片。

2、在相应的计算机上安装好QQ软件,为创设情境做好准备。

3、本节课相关程序在QBasic中不用修改均可运行,课前在相应的计算机上安装好QBasic程序。

六、教学过程 (由新课引入、概念构建、技能演练、小结与作业四个环节组成)

(一)、新课引入

1、创设情景。

(1) 首先从学生最熟悉的QQ登录开始,让学生看QQ登录的过程。QQ在登录过程中,会对帐号和密码进行验证,判断其正确性,只有当两者相符时,QQ才能登录,否则给出错误信息。

(2)根据是否下雨来决定出门是否要带雨具。

(3)总分为100分的试卷,判断一个人是否及格,在于他的得分是否达到60。

这些都是生活中的常见事例,由此我们可以看出:做一件事情有时需要先进行一个条件判断,数学中有很多问题都与此类似(如分类讨论思想),提问学生:你们能提出一些和条件判断有关的数学问题吗?

2、教师引导学生提出本节课待解决的问题:

①求一个数的绝对值;

②判断一个整数的奇偶性;

③解一元二次方程、一元一(二)次不等式;

④分段函数问题:邮资、个人所得税的.计算;

⑤闰年的判断;

⑥直线与圆的位置关系的判断。

3、点明课题及本节课的任务:

①以上问题都可以写成如果,那么的形式,指出学习的内容-条件语句;

②用条件语句解决同学们提出的部分问题;

③请部分同学在计算机上输入所写程序,用计算机QBasic语言验证程序,实现算法。

[设计意图] :在新课引入这一环节中,让学生一开始就明确本节课的学习内容和学习任务,既培养了学生提出问题的能力,又激发了学生学习条件语句的兴趣。

教师在学生提出问题后明确点明,放中有收,解决了以学为主的教学往往不好控制,易放难收的问题。

(二)、概念构建

学生们已经学过条件结构的程序框图(学生认知的最近发展区),利用认知迁移规律,导出条件语句的两种形式:IF-THEN-ELSE形式和IF-THEN形式,并引导学生去比较两种形式的区别,加深对逻辑条件结构的理解。

(三)、技能演练(即应用条件语句的两种形式来解决学生们提出的问题,选择其中的四个问题作为本节课的例题或练习)

具体做法是:以同座为一个小组,共同写出算法步骤,画出程序框图,进而写出程序。并请一个小组展示他们的设计(一人在黑板上写,一人在电脑上操作)。这一过程有利于学生理解算法设计的逐渐精确及其程序化思想。现在以例1来说明这一过程

例。编写一个程序,求实数x的绝对值。

篇3:浅析图像模糊的基本频域恢复算法

关键词:图像恢复,高斯模糊,频域恢复

1 引言

近年来, 随着电子数码产品特别是数码相机、数码摄像机、拍照手机的普及, 以及计算机处理能力的提升, 数字图像处理无论在军事、医疗、天文还是生活中都有着越来越重要的应用, 而其中的图像模糊恢复的研究更成为其中的一个热点。

造成图像模糊的原因有很多, 其中包括光学系统像差、大气扰动等, 不同原因导致的模糊往往需要不同的处理方法。从技术方面来看, 模糊是图像被卷积的结果, 通常从频域上来去除图像模糊。

本文从频域上对图像的基本去模糊算法如逆滤波、维纳滤波及有约束最小二乘方法, 通过编程实现来进行比较。

2 高斯模糊

图像的模糊有很多情况, 其中高斯模糊常常被用于研究图像模糊。从数学的角度来看, 图像高斯模糊的过程就是图像与正态分布做卷积。由于正态分布又叫做高斯分布, 所以叫做高斯模糊。由于高斯函数的傅立叶变换是另外一个高斯函数, 所以高斯模糊对于图像来说就是低通滤波器的效果。高斯模糊是一种图像模糊滤波器, 它用正态分布计算图像中每个像素的变换。在二维空间定义为:

而高斯模糊定义为图像与高斯分布做卷积:

其中r是模糊半径, r2=x2+y2, σ是正态分布的标准偏差。

3 频域恢复

图像恢复处理的关键在于建立退化模型。输入图像f (x, y) , 经过某个退化系统后输出的是一幅退化的图像。为了讨论方便, 把噪声引起的退出即噪声对图像的影响一般作为加性噪声考虑, 这也与许多实际应用情况一致, 如图像数字化时的量化噪声、随机噪声等就可以作为加性噪声, 即使不是加性噪声而是乘性噪声, 也可以用对数方式将其转化为相加形式。

原始图像f (x, y) 经过一个退化算子或退化系统h (x, y) 的作用, 再和噪声n (x, y) 进行叠加, 形成退化后的图像g (x, y) 。

图1为退化过程的输入和输出的关系, 其中h (x, y) 概括了退化系统的物理过程, 就是所要寻找的退化数学模型。

根据退化图像g (x, y) 和退化算子h (x, y) 的形式, 逆向地寻找原始图像f (x, y) 的最佳近似估计。图像退化的过程可以用数学表达式写成如下的形式:

在频域上, 上式可以写成:

其中, G (u, v) 、F (u, v) 、N (u, v) 分别是退化图像g (x, y) 、源图像f (x, y) 、噪声信号n (x, y) 的傅里叶变换;H (u, v) 是h (x, y) 的傅里叶变换, 称为光学系统在频域上的传递函数。

两式是连续函数的退化模型。可见, 图像复原实际上就是已知g (x, y) 求f (x, y) 的问题或已知G (u, v) 求F (u, v) 的问题, 它们的不同之处在于一个是在空域, 一个是在频域。本文则只在频域上讨论。

3.1 逆滤波恢复

逆滤波是一种简单直接的无约束图像恢复方法。无约束恢复方法仅将图像看作一个数字矩阵, 从数学角度进行处理而不考率恢复后图像应受到的物理约束。

在对n没有任何先验知识的情况下, 图像恢复可描述为寻找一个原始图像f的估计在最小均方误差的意义下最接近退化图像g, 即要使n的范数最小。

根据上式, 可把恢复问题看作对求下式的最小值。

这里只需要将求微分并将结果设为0, 再设H-1存在, 就可得到无约束恢复公式。

该式表明, 用退化系统矩阵的逆来左乘退化图像就可以得到原始图像f的估计。下面转到频率域中讨论。先不考虑噪声, 根据式 (3.2) , 如果用退化函数来除退化图像的傅里叶变换, 便可以得到一个对原始图像的傅里叶变换的估计。

上式常称为逆滤波。如果把H (u, v) 看作一个滤波函数, 则它与F (u, v) 的乘积是退化图像g (x, y) 的傅里叶变换。这样用H (u, v) 去除G (u, v) ) 就是一个逆滤波过程。将式 (3.1.5) 的结果求反变换就得到恢复后的图像

实际中, 噪声是不可避免的。考虑噪声后的逆滤波形式为

由式 (3.1.7) 可看出两个问题。首先因为N (u, v) 是随机的, 所以即便知道了退化函数, 也不能精确地恢复原始图像。其次, 如果H (u, v) 在UV平面上取0或很小的值, N (u, v) /H (u, v) ) 就会使恢复结果与预期的结果有很大差距。实际中, 一般H (u, v) 随 (u, v) 与原点距离的增加而迅速减小, 而噪声N (u, v) 却变化缓慢。在这种情况下, 恢复只能在距原点较近的范围内进行。换句话说, 一般情况下逆滤波器并不正好是1/H (u, v) , 而是u和v的某个函数, 可记为M (u, v) 。M (u, v) 常称为恢复转移函数, 这样图像退化和恢复模型可用图2表示。

一种常见的方法是取M (u, v) 为如下函数:

其中w0的选取原则是将H (u, v) 为0的点除去。这种方法的缺点是恢复结果的振铃效应较明显。一种改进的方法是取M (u, v) 为:

其中k和d均为小于1的常数。d选的较小为好。

3.2 维纳滤波恢复

3.2.1 有约束恢复

与逆滤波这样的无约束恢复方法不同, 有约束恢复的方法还考虑到恢复后的图像应该受到一定的物理约束, 如在空间上比较平滑, 其灰度值为正等。

同样从式 (3.1) 出发, 有约束恢复考虑选取的一个线性操作符Q (变换矩阵) , 使得最小。这个问题可用拉格朗日乘数法解决。设l为拉格朗日乘数, 要找能最小化下列准则函数的f。

与式 (3.1.4) 相似可得有约束恢复公式 (令s=1/l)

3.2.2 维纳滤波器

维纳滤波器是一种最小均方误差滤波器。它可以从式 (3.1.4) 推出。

在频率域中, 有约束恢复的一般公式可写成如下形式

其中Sf (u, v) 和Sn (u, v) 分别为原始图像和噪声的相关矩阵元素的傅里叶变换。

这里有几种情况:

(1) 如果s=1, 大方括号中的项就是维纳滤波器;

(2) 如果s是变量, 就称为参数维纳滤波器;

(3) 当没有噪声时, Sn (u, v) , 维纳滤波器退化成理想逆滤波器。

当Sf (u, v) 和Sn (u, v) 未知时, 式 (3.2.3) 可用下式来近似 (其中K是一个预先设定的常数)

3.3 有约束最小平方恢复

维纳滤波的方法是一种统计方法。它用的最优准则基于图像和噪声各自的相关矩阵, 所以由此得到的结果只是在平均意义上最优。有约束最小平方恢复方法只需有关噪声均值和方差的知识就可对每个给定图像得到最优结果。

有约束最小平方恢复方法也从式 (3.2.2) 出发, 所以问题还是要确定变换矩阵Q。首先注意到式 (3.1.4) 实际是一个病态方程, 所以有时解的振荡会很厉害。一种减小振荡的方法是建立基于平滑测度的最优准则, 例如可最小化某些二阶微分的函数。f (x, y) 在 (x, y) 处的二阶微分可用下式近似:

上式二阶微分可用f (x, y) 与下面的算子卷积得到:

有一种基于这种二阶微分函数的最优准则是:

这里为避免重叠误差, 可将p (x, y) 扩展为:

若要求满足一下约束:

那么最优解可表示为:

如将上式两边都左乘以W-1, 得到:

可以导出下式:

上式与维纳滤波器有些相似, 主要区别是这里除了对噪声均值和方差的估计外不需要对其他统计参数的知识。

式 (3.3.8) 表明需要调节s以满足约束式, 所以只有当S满足这个条件时, 式 (3.3.8) 才能达到最优。下面介绍一种估计s的方法。首先定义一个残差矢量r:

r是s的函数, 这里希望调节s以满足:

这里a是一个准确度系数。如果r2=n2, 则约束式 () 严格满足。一个简单的寻找满足式的s的方法是:

(1) 赋给s某个初始值;

(2) 计算;

为利用上面的过程进行有约束最小平方恢复需要确定。首先, 根据残差矢量r的定义式 (3.3.9) , 利用傅里叶变换得到:

计算出R (u, v) 后在求傅里叶反变换可得到r (x, y) , 由r (x, y) 可计算:

下面考虑计算。先计算整幅图的噪声方差, 它可用采样平均的方法来估计:

其中:

参照式 (3.3.12) , 可知式 (3.3.13) 的双重求和就等于n2, 所以有:

3.4 算法仿真效果及分析

对图像进行不同模板大小, 标准差为10的高斯卷积, 再加入高斯噪声。分别用逆滤波、维纳滤波和有约束最小二乘对降质图像进行恢复。由于篇幅限制, 本文只展示维纳滤波和有约束最小二乘恢复滤波的部分处理效果 (见图3) , 更详细的处理情况可以参照表1。

从上面几幅图像可以看出最小平方恢复最能够有效地提高模糊图像的清晰度, 而振铃效应也相对较小。

上述表明, 三种频域恢复, 当点扩散函数半径不太大的时候, 有约束最小二乘方法对降质图像的恢复效果最明显。

5 总结

本文主要从高斯模糊对降质图像进行分析, 包括对点扩散函数的研究, 尤其是对高斯模糊的研究。针对影响图像质量的因素, 分别对空域和频域的方法进行了解, 从中引出频率恢复方法——逆滤波器、维纳滤波器和有约束最小二乘恢复。对于这三种频域恢复方法, 都详细地分析了它们的原理, 并进行恢复效果的比较。

参考文献

[1]陈乃金, 周鸣争, 潘冬冬.一种新的维纳滤波图像去高斯噪声算法[J].计算机系统应用, 2010, 19 (3) .

[2]章毓晋.图形工程-图像处理[M].清华大学出版社, 2006.

[3]K R Castleman.Digital Image Processing[M].Prentice Hall.Inc.1998.

[4]J L Harris, Sr.Image Evaluation and Restoration[J].Opt.Soc.Amer.1966.56:569-574.

[5]B L Mc Glamery.Restoration of Turbulence Degraded Images[J].Opt.Soc.Amer.1967, 57 (3) :293-297.

[6]C W Helstrom.Image Restoration by the Method of Least Squares[J].Opt.Soc.Amer.1967, 57 (3) :297-303.

[7]D Slepian.Linear Least-Squares Filtering of Distorted Images[J].Opt.Soc.Amer.1967, 57 (7) :918-922.

篇4:基本算法语句的重点剖析

一、输入、输出语句

输入语句 (1)输入语句要求输入的值只能是具体的常数,不能是函数、变量或表达式;(2)提示内容与变量之间用分号“;”隔开,若输入多个变量,变量与变量之间用逗号“,”隔开.

输出语句 (1) “提示内容”提示用户输入什么样的信息,表达式是指程序要输出的数据;(2)输出语句可以输出常量、变量或表达式的值以及字符.

例1 写出已知函数 输入[x]的值,求[y]的值的程序.

解析 程序为:

[INPUT “请输入x的值:”;x

IF x>0 THEN

y=1

ELSE

IF x=0 THEN

y=0

ELSE

y=-1

END IF

END IF

PRINT “y的值为:”;y

END]

二、赋值语句

(1)赋值语句中的“=”称作赋值号,与数学中的等号的意义是不同的.赋值号的左右两边不能对换,它将赋值号右边的表达式的值赋给赋值号左边的变量;(2)赋值语句左边只能是变量名字,而不是表达式,右边表达式可以是一个数据、常量或算式;(3)对于一个变量可以多次赋值.

例2 (1)①给一个变量重复赋值.

②在此程序的基础上,设计一个程序,要求最后A的输出值是30.

(2)交换两个变量A,B的值,并输出交换前后的值.

分析 引入一个中间变量X,将A的值赋予X,又将B的值赋予A,再将X的值赋予B,从而达到交换A,B的值.(比如交换装满水的两个水桶里的水需要再找一个空桶)

(1)①程序:

[A=10

A=A+10

PRINT A

END]

②该变式的设计意图是加深对重复赋值的理解.

程序:

[A=10

A=A+15

PRINT A

A=A+5

PRINT A

END]

(2)程序:

[INPUT A

INPUT B

PRINT A,B

X=A

A=B

B=X

PRINT A,B

END]

三、条件语句

条件语句的一般格式有两种:(1)IF—THEN—ELSE语句;(2)IF—THEN语句.

例3 编写程序,输入一元二次方程的系数,输出它的实数根.

分析 先把解决问题的思路用程序框图表示出来,然后再根据程序框图给出的算法步骤,逐步把算法用对应的程序语句表达出来.

我们知道,若判别式,原方程有两个不相等的实数根,若[Δ=0],原方程有两个相等的实数根;若[Δ<0],原方程没有实数根.也就是说,在求解方程之前,需要判断判别式的符号.因此,这个过程可以用算法中的条件结构来实现.

又因为方程的两个根有相同的部分,为了避免重复计算,可以在计算和之前,先计算.

解 程序框图:(参照课本[P17])

[INPUT “Please input a,b,c =”;a,b,c

d=b*b-4*a*c

p=-b/(2*a)

q=SQR(ABS(d))/(2*a)

IF d>=0 THEN

x1=p+q

x2=p-q

IF x1=x2 THEN

PRINT “One real root:”;x1

ELSE

PRINT “Two real roots:x1”;x1,“and x2”;x2

END IF

ELSE

PRINT “No real root!”

END IF

END]

注:SQR( )和ABS( )是两个函数,分别用来求某个数的平方根和绝对值.

例4 编写程序,使得任意输入的3个整数按从大到小的顺序输出.

分析 用[a,b,c]表示输入的3个整数;为了节约变量,把它们重新排列后,仍用[a,b,c]表示,并使[a≥b≥c].具体操作步骤如下.

第一步:输入3个整数[a,b,c].

第二步:将[a]与[b]比较,并把小者赋给[b],大者赋给[a].

第三步:将[a]与[c]比较,并把小者赋给[c],大者赋给[a],此时[a]已是三者中最大的.

第四步:将[b]与[c]比较,并把小者赋给[c],大者赋给[b],此时[a,b,c]已按从大到小的顺序排列好.

第五步:按顺序输出[a,b,c].

解 程序框图:(参照课本[P19])

[INPUT “a,b,c =”;a,b,c

IF b>a THEN

t=a

a=b

b=t

END IF

IF c>a THEN

t=a

a=c

c=t

END IF

IF c>b THEN

t=b

b=c

c=t

END IF

PRINT a,b,c

END]

点拨 条件语句使程序执行产生的分支,根据不同的条件执行不同的路线,使复杂问题简单化.有些复杂问题可用两层甚至多层循环解决.注意内外层的衔接,可以从循环体内转到循环体外,但不允许从循环体外转入循环体内.条件语句一般用在需要对条件进行判断的算法设计中,如判断一个数的正负,确定两个数的大小等问题,还有求分段函数的函数值等,往往要用条件语句,有时甚至要用到条件语句的嵌套.

四、循环语句

循环语句的一般格式有两种:(1)DO-UNTIL语句;(2)WHILE语句.

例5 编写程序,计算自然数1+2+3+…+99+100的和.

分析 这是一个累加问题.我们可以用WHILE型语句,也可以用UNTIL型语句.由此看来,解决问题的方法不是惟一的,当然程序的设计也是有多种的,只是程序简单与复杂的问题.

解 程序:

WHILE型:

[i=1

sum=0

WHLIE i<=100

sum=sum+i

i=i+1

WEND

PRINT sum

END

]

UNTIL型:

[i=1

sum=0

DO

sum=sum+i

i=i+1

LOOP UNTIL i>100

PRINT sum

END]

篇5:基本的算法语句

一、知识导学

1. 赋值语句用符号“←”表示,“xy”表示将y 的值赋给x,其中x是一个变量,y是一个与x同类型的变量或表达式.2. 条件语句主要有两种形式:“行If 语句”和“块If语句”.“行If 语句”的一般形式为:

If A Then B [Else C].一个行If 语句必须在一行中写完,其中方括号中的Else部分可以缺省.“块If 语句”的一般格式为: If A Then B Else C End if Then 部分和 Else 部分是可选的,但块If语句的出口“End if”不能省.3. 循环语句主要有两种类型:For语句和While语句.当循环的次数已经确定,可用“For”语句表示.“For”语句的一般形式为: For I from“初值” to step“步长”„ End for 上面“For”和“End for”之间缩进的步骤称为循环体.当循环次数不能确定是,可用“While”语句来实现循环.“While”语句的一般形式为: While A „

End while 其中A表示判断执行循环的条件.上面“While”和“End While”之间缩进的步骤称为循环体.二、疑难知识导析

1.有的条件语句可以不带“Else”分支,即满足条件时执行B,否则不执行任何操作.条件语句也可以进行嵌套,在进行条件语句的嵌套时,书写要有层次.例如: If A Then B Else if C Then D Else E End if 2.“For”语句是在执行过程中先操作,后判断.而“While”语句的特点是“前测试”,即先判断,后执行.若初始条件不成立,则一次也不执行循环体中的内容.任何一种需要重复处理的问题都可以用这种前测试循环来实现.三、经典例题导讲

[例1] 下列程序的运行结果是.X9 Y8

If X>5 Then YY7 If X>4 Then YY6 If X>3 Then YY6

Print Y 错解:8+7=15 错因:误认为在一个程序中只执行一个条件语句,与在一个条件语句中只选择其中一个分支相混淆.If A Then B [Else C] 若满足条件A 则执行B,否则是执行C,B和C是这个条件语句的分支,而这个程序省略了Else部分.正解:这里是有三个条件语句,各个条件语句是独立的,三个条件均成立,所以按顺序依次执行,结果为8+7+6+6=27.[例2] 下面的伪代码的效果是

i0

While i<10 ii2 End While End 错解:执行10次循环

错因:将For语句和While语句混淆.For语句中有步长使循环变量不断变化,而While语句则无.正解:无限循环下去,这是因为这里i始终为0,总能满足条件“i10”,故是一个“死循环”.点评:“死循环”是设计循环结构的大忌,此题可改变i的初始值或每一次循环i都增加一个值.[例3]下面的程序运行时输出的结果是()

I

1While I5 S0

II1 SSII

End while Print S End 错解:第一次循环时,I被赋予2,S被赋予4;第二次循环时,I被赋予3,S被赋予4+3=13;第三次循环时,I被赋予4,S被赋予13+4=29;第四次循环时,I被赋予5,S被赋予29554.由于此时I5,故循环终止,输出S为54.正解:由于S0在循环内,每经过一次循环后S都被赋值0,因此,只要求满足条件的最后一次循环S的值,即当I4时,S04416.[例4]用语句描述求使1357n1000成立的最大正整数n的算法过程.解: n1 T1

While T1000 nn2

TTn End while Print n2

点评:此题易错的是输出值,根据While循环语句的特征当T1000时跳出循环体,此时n的值是T1000时的最小的整数,则使T1000的最大整数应为n的前一个奇数即n2.222 2

[例5]已知当100x100时,yx1,当x100时,y4,当x100时,yx4,设计一算法求y的值.解: Read x If 100x100 then yx1

Else if x100 Then yx4

Else y4

End if End 点评:嵌套If语句可用如上的紧凑形式书写,要注意的是如不是采取紧凑形式,则需注意一个块If语句对应一个End If,不可省略或缺少.[例6]设计一个算法,使得输入一个正整数n,输出1!+2!+3!+„+n!的值.写出伪代码.解:思路一:利用单循环,循环体中必须包括一个求各项阶乘的语句以及一个求和语句.Read n T1

S0 For I from 1 to n TTI

SST End For Print S 思路二:运用内外双重循环,但尤其注意的是每一次外循环T的值都要从1开始.Read n S0

For I from 1 to n T1

For J from 1 to I TTJ

End For

SST

End For Print S 四、典型习题导练

1. 下列的循环语句循环的次数为()For I from 1 to 7 For J from 1 to 9 Pint I+J End for

End for End A.7次 B.9次 C.63次 D.16次

2.运行下面的程序后输出的结果是,若将程序中的A语句与B语句的位置互换,再次执行程序后输出的结果为.x1

y0

While x3

yyx ′A语句 xx1 ′B语句

End While Print x,y End 3.伪代码描述的求T的代数式是 ,求S的代数式是.Read n T1 S0

篇6:计算机图形学的基本算法实现研究

计算机图形学是伴随着电子计算机及其外围设备而产生和发展起来的。它是近代计算机科学与CAD、电视及图像处理技术的发展汇合而产生的硕果。在造船、航空航天、汽车、电子、机械、土建工程、影视广告、地理信息、轻纺化工等领域中的广泛应用,推动了这门学科的不断发展,而不断解决应用中提出的各类新课题,又进一步充实和丰富了这门学科的内容。目前几乎所有的计算机的实际应用都不同程度地使用了图形技术。所以计算机图形技术同计算机网络,人工智能及图像处理等技术一样是目前计算机领域的研究热点之一。

2 计算机图形学基本算法研究

2.1 多边形剪裁算法

裁剪是计算机图形学在许多方面应用的基础,例如从不同的物体模型中裁取事物体进行拼接而产生新的物体模型。在三维显示中的隐线隐面消除和表面阴影处理等技术中有些算法也结合了裁剪算法。裁剪在图形合成中是基础和必须的操作。

线裁剪是计算机图形学中的一个基本操作。对于凸多边形窗口的裁剪,经过国内外学者的多年研究己经形成了许多经典有效的算法。但对于凹多边形窗口的线裁剪,还有待进一步研究。对于凸多边形窗口的线裁剪,国内外提出了多种多样的线裁剪算法,其中五个具代表性意义的算法为:Cohen一Sutherland的分区编码算法、基于硬件实现的中点分割算法、通过法向点积进行判别的Cyrus一Beck裁剪算法、梁友栋一Barsky线裁剪算法、以及Nieholl一Lee算法。为叙述方便,下面我们分别简称为CS、中点、CB、梁B、NLN算法。

算法在计算机图形学上曾经占据重要的地位,它对每条线段分三中情况处理。(l)窗内;(2)窗外;(3)不满足条件(1)(2)的情况。它需要确定线段端点的编码以辨别线段与窗口的位置关系,其判断的运算量明显多于其它算法。

中点算法把线段与窗口的关系一样分为三种情况。对前两种情况的处理与CS相同,对第三种情况则简单的把线段等分为两段。它适用于对乘、除没有硬件支持的计算机,其算法便于硬化,用软件实现则效率不高。CB算法适用于对任意凸多边形窗口的裁剪。它通过判断直线段的方向矢量与窗口边法矢量的点积是否大于零而将所有交点分为上、下两组。然后,分别取上组中的最小交点和下组中的最大交点,即为线段可见部分的端点。由于所采用的方法过于一般化,对一根不平行于坐标轴但完全落在窗口内部的线段的裁剪,CB算法需做12次加法、16次减法、20次乘法和除法。

梁B算法速度最快,但当线段在某窗口边界线的不可见一侧时,或完全落在窗口内部可见时,梁B算法仍要做算术运算。对四种算法比较,CS与中点法在区码测试阶段能以位运算方式高效率地进行,因而当大多数线段需要进行裁剪时,效率较好。CB算法在多数线段需要进行裁剪时,效率更高。梁B算法只适用于矩形窗口,其效率比CB更高,因为在此算法中增加了另外的测试,使之在某些情况下不必对四条窗口边都求交,就可以排除线段与窗口不交的情况。

NLN算法虽然在理论上运算量少于CS算法和梁B算法,但却不实用。该算法包含15个子程序,系统开销很大,并且无法用人工的方法消去这些子程序以减少系统开销,即使用计算机软件的方法达到了这一目的,也将导致一个长程序,这必然引起裁剪时间的增加。事实上,NLN中没有对NLN算法与其它算法作执行时间上的比较,而执行时间的比较是衡量一个算法效率的必不可少的手段。

由于实际应用中所遇到的多边形大多数不是凸的,因此,这方面的高效率的算法只有当它们可应用于非凸多边形窗口时才有意义。对于这个问题的解决,理论上可行的途径是将凹多边形分解成多个凸多边形,然后逐一进行裁剪。但是这个过程比较繁琐并且计算量大,因此其速度慢、效率低。最近有学者研究了一个有效的算法,斜率法。斜率法首先要在被裁剪的直线或其延长线上选择一个固定点(xf,yf)。这个固定点应在多边形窗口的最左顶点之左(或最下顶点之下)。然后,计算从该固定点到多边形各顶点连线的斜率。判断被裁剪直线的斜率是否在两个相邻顶点的斜率之间。若是,则被裁剪直线或其延长线与这两个相邻顶点所定义的边相交;否则,不相交。如果相交,则计算交点。此算法无需将凹多边形分解,也不需要进行窗口的凸凹性检查,也就是说,对于矩形,凸多边形和凹多边形窗口,该算法是通用的,并且在算法中使用了最少的计算量,保证了算法的快速高效。

2.2 逐点生成算法

随着广泛使用光栅扫描显示器作为图形显示器,随之出现了一类图形算法,即象素级的图形绘制算法(或称点式生成算法)。这类算法生成的曲线是很细致的并且误差小(坐标轴方向最大偏差不大于半个象素单位)。可以说这类算法充分利用了光栅显示器的特点。

曲线的像素级生成算法大体可以分为两类。一类是根据曲线的隐式方程,通过判断曲线的可能的走向,找出在各个走向中的下一个像素中距离曲线最近的像素。由于,曲线的每一步都是一个像素距离,所以误差在坐标轴方向不会超过一个像素。此类算法的优点是每步走一个像素距离,速度快。其缺点是适用的范围小,且下一个像素的位置判断比较麻烦。另一类方法是根据曲线的平滑度,利用参数方程求导,求出使每一步前进距离都小于等于一个像素的迭代步长。这类算法的优点是适用范围广。缺点是由于步长的选取是针对整个曲线的,因此在曲线的某些阶段,需要走许多步以后才能到达一个像素,造成许多多余的计算。它们共同的特点是让每一步的像素选取都和前一个像素的距离小于等于一个像素。无论那种算法都必须使前后像素的坐标满足一个迭代关系,尽量减少乘法和除法运算。

这类算法在20世纪60年代和70年代出现了著名的Bresenham直线算法,Pitteway椭圆和双曲线算法和Bresenham圆生成算法。其实至此直线和圆的像素级生成算法己相当成熟,但仍有人在继续从事这方面的研究。其着眼点主要集中在研制每一步生成多个点的算法上,20世纪80年代以后,人们的主要精力集中在其它曲线(高阶或自由曲线等)的生成算法的研究上,如国内学者蔡耀志、金通光等提出的正负法、T一N法等,而在国外则有许多学者在进行这方面的研究,目前出现的自由曲线生成算法中大部分属于生成或逼近算法,或者有些算法可以说是点式生成算法。但其两点的间距较大,并非逐点选择,所以生成的曲线不够细致。在象素级算法中主要是关于二次和三次自由曲线的生成算法。如Patt提出的二次样条曲线的象素级生成算法能够较精确地选择距离曲线最近的象素点,但该算法所生成的曲线的走向只能在一个象限内变化(90度范围),不能生成曲率大的曲线。在三次自由曲线的生成算法中,有Chang一Schantz一Roechetti提出的三次曲线和曲面的生成算法和Klassen提出的三次样条曲线的生成算法等。

3 结论

本文对目前国内外计算机图形学二维技术领域人们所关注的焦点问题的几个主要方面的研究现状及其发展趋势进行了详细的分析,对计算机图形裁剪技术、逐点算法等进行了深入的比较和研究,这些基础算法的研究,对于提高计算机图形系统的性能具有很大的帮助,具有很强的理论和现实意义。

参考文献

[1]赵玉峰.计算机图形学的发展及应用[J].科技信息:科学教研,2008(16).

[2]王增波.计算机图形学中的方法论[J].科技信息:科学教研,2008(19).

篇7:基本算法语句

1. 输入语句、输出语句和赋值语句对应于算法中的顺序结构

例1 用描点法作函数[y=x3+3x2-24x+30]的图象时,需要求出自变量和函数的一组对应值.试编写程序,分别计算当[x]取不同值时的函数值.

解析 INPUT “x=”;x (输入语句)

y=x^3+3x^2-24*x+30 (赋值语句)

PRINT “x=”;x (输出语句)

PRINT “y=”;y (输出语句)

END

点拨 (1)INPUT语句不但可以给单个变量赋值,还可以给多个变量赋值.(2)赋值语句中的“=”称作赋值号,与数学中的等号的意义是不同的.赋值号的左右两边不能对换.

2. 条件语句对应于算法中的条件分支结构,一般格式有两种

例2 已知函数[f(x)=x2-1(x0),2x2-5(x<0),]编写一个程序,对每输入的一个[x]值,都得到相应的函数值.

分析 这是一个分段函数,计算函数值必须先判断[x]的范围,因而设计求函数值的算法必须用到条件结构,相应程序的书写也应用条件语句书写.

解 用变量[x,y]分别表示自变量和函数值.

算法分析:

第一步,输入[x]值.(输入语句)

第二步,判断[x]的范围,若[x]≥0,则用函数[y=x2-1]求函数值;否则用[y=2x2-5]求函数值.(条件语句)

第三步,输出[y]的值.(输出语句)

程序:可分别用IF—THEN—ELSE语句和IF—THEN语句表示程序.

点拨 条件语句一般用在需要对条件进行判断的算法设计中. 如判断一个数的正负、确定两个数的大小等问题、还有求分段函数的函数值等,往往要用条件语句,有时甚至要用到条件语句的嵌套.

3. 算法中的循环结构是由循环语句来实现的,两种循环结构对应于程序框图中的两种循环语句

例3 编写计算机程序计算1+2+3+…+100的值.

解析 WHILE语句: UNTIL语句:

点拨 条件语句一般用在需要对条件进行判断的算法设计中. 如判断一个数的正负、确定两个数的大小等问题、还有求分段函数的函数值等,往往要用条件语句,有时甚至要用到条件语句的嵌套.

3. 算法中的循环结构是由循环语句来实现的,两种循环结构对应于程序框图中的两种循环语句

例3 编写计算机程序计算1+2+3+…+100的值.

解析 WHILE语句: UNTIL语句:

点拨 当型循环与直到型循环的区别:(1)当型循环先判断后执行,直到型循环先执行后判断;(2)对同一算法来说,当型循环和直到型循环的条件互为反条件

则两程序的说法正确的是( )

A.程序不同,用途相同 B.程序相同,用途不同

C.程序不同,用途不同 D.程序相同,用途相同

篇8:基本的算法语句

二次模型[1]中量化参数计算的准确性与目标比特分配[2]的准确性和平均绝对差值(MAD)预测[3]的准确程度是密不可分的,因此,准确分配目标比特和预测MAD有很重要的意义。

但是标准算法G012中,帧层目标比特仅仅根据自身复杂度和缓冲情况做前向分配,而没有考虑分配的比特数和实际编码比特数目的差距;对MAD的预测而言,仅仅用前一基本单元的MAD来线性预测当前MAD,并没有考虑基本单元的相关性,导致预测的不准确,尤其是对于场景切换[4]时,后果更严重。本文通过对帧层目标比特分配增加反馈,同时在宏块层提出一种新型的MAD预测方法。

2 宏块相关性[5]

2.1 相邻宏块相关性

如果相邻两个宏块的平均绝对误差分别为MAD1和MAD2,则他们之间的相关性为

相邻宏块的相关性分为水平相关性,垂直相关性和同位置相关性,第m帧n行p列宏块的水平相关性计算如下

式中:MAD(m,n,p)表示第m帧第n行第p列宏块的MAD。同理,此宏块的垂直相关性rl和同位置相关性rc定义类似。

2.2 任意宏块相关性

第m帧第n行第p列与第q帧第r行第t列宏块为任意两个宏块,它们的相关性定义为

式中:μ1,μ2,μ3为常数。

3 帧层码率控制算法

3.1 反馈补偿帧层目标比特分配

在帧层码率控制中,预分配比特和实际编码比特总是会存在差距,但是G012中仅仅在编码前分配目标比特,并没有考虑比特差距所带来的影响。有时候会出现连续几帧甚至更多帧实际编码比特比目标比特大(小),这时,如果不合理调整,就会导致实际缓冲与目标缓冲差距越来越大,从而导致缓冲的上(下)溢,这样不但会影响码率控制的精度,而且会使图像质量受到影响。

为解决这个问题,本文在帧层码率分配算法中继承GoP层剩余比特顺延加到下一个GoP的思路,并对此加以改进,在帧层比特分配后在后面加一个反馈,根据上一帧的目标比特与实际比特的差值来对下一帧的目标比特进行调整。

3.2 帧层目标比特的调整

同时考虑实际比特NBITS与目标比特T的差值和实际缓冲CurBuffer与目标缓冲TarBufferl的差值,这样就有4种情况:

1)NBITS>T,CurBuffer>TarBufferl;

2)NBITS>T,CurBuffer

3)NBITSTarBufferl;

4)NBITS

NBITS>T表示编码比特大于目标比特,说明前一帧的编码比特数用多了,根据GoP比特顺延思路,当前帧的比特要相对减少,NBITSTarBufferl表示实际缓冲大于目标缓冲,也是表示进入缓冲区的实际编码比特数比从缓冲区输出的比特数多,下一帧的比特要相对减少,CurBuffer

对于情况1),当上一帧的实际编码比特大于目标比特,并且实际缓冲也比目标缓冲差值超过250的时候,就要适当调整下一帧的目标比特甚至是量化参数。设NUMFR1表示这种情况连续出现的次数:NUMFR1=1时,T=T+0.5×(T-NBITS);NUMFR1=2时,T=T+0.8×(T-NBITS);NUMFR1=3时,T=T+1.2×(T-NBITS);NUMFR1=4时,QP=QP+1;NUMFR1=4,QP=QP+2且NUMFR1=0。

情况4)的处理与情况1)相反。

其中NUMFR1表示情况1)连续出现的次数,根据实验数据,由经验得到,需要对目标比特T进行调整

式中:α为经验值,取1.000 86。

4 宏块层码率控制算法

4.1 与当前宏块相关性大的宏块

通过研究发现,与当前宏块相关性比较大的宏块存在于2个三角形中,如图1所示。其中箭头所指向的宏块为当前要被预测的宏块,指向它的是前一帧对应的宏块。

4.2 大小三角形法预测当前宏块MAD

本文中当前宏块MAD就是利用这2个三角形中宏块来线形预测,用来预测的宏块可以分为与当前宏块相邻和不相邻宏块。

设当前宏块是当前编码帧第m行第n列宏块,其平均绝对误差为mad[0][m][n],其前一帧与之相对应的为mad[1]m][n],这里的1代表前一帧,0代表当前帧。则相邻的MAD分别是mad[0][m][n-1],mad[0][m-1][n],mad[1[m][n],分别记为M1,M2,M3;不相临的为mad[0][m][n-2],mad[0][m-1][n-1],mad[0][m-2][n],mad[1][m][n-1]以及宏块mad[1]m-1][n],分别给它们编码为1,2,3,4,5,记为m1,m2,m3,m4,m5。在对当前宏块平均绝对误差预测的时候,对与当前宏块相临宏块与非相临宏块采取不同的策略:相临宏块MAD用固定权值,非相临宏块用宏块相关性加权比率作为权值。其具体步骤如下:

1)用前一帧对应宏块线性预测当前宏块MAD,记为CMMAD,用它来计算与其他宏块间的相关性。

2)计算相邻宏块相关性:水平相关性rc,垂直相关性rl,同位置相关性rR。

3)计算非相邻宏块的相关性,见公式(3),分别设为r1,r2,r3,r4,r5。

4)计算宏块相关性加权系数:设a1,a2,a3,a4,a5分别为与宏块1,2,3,4,5对应宏块相关性加权系数,则当r1>0.5时,a1=1,否则a1=0。其余宏块类似。

5)计算宏块相关性加权比率:设R1,R2,R3,R4,R5为对应比率,则

其余相关性加权比率的计算类似。

6)计算非相临宏块加权平均绝对误差

7)计算当前宏块MAD,将其记为CMAD。在这里要分与当前宏块相临宏块相关性与门限的关系几种情况讨论:

(1)rR,rl,rc均大于0.5:

(2)rR,rl大于0.5,rc小于0.5:

(3)rR,rc大于0.5,rl小于0.5:

(4)rl,rc小于0.5,rR大于0.5:

(5)rc,rl均大于0.5,rR小于0.5:

(6)rl,rR小于0.5,rc大于0.5:

(7)如果rc,rR均小于0.5,rl大于0.5:

(8)如果rc,rR,rl均小于0.5:

其中CFMAD为前一帧MAD。

8)一些特殊情况的处理:

(1)当左宏块和上宏块不存在时,按照它们与当前宏块相关性小于0.5进行处理;

(2)当宏块1,2,3,4,5不存在时,对应的a1,a2,a3,a4,a5按照值为0进行处理;

(3)当rc,rl及宏块1,2,3,4,5均不存在的时候,即当前宏块是当前帧第一个宏块的时候,判断rR与门限0.5的关系:如果rR>0.5,CMAD=CMMAD,否则CMAD=CFMAD/256。

5 实验结果及其分析

为了验证本文算法的有效性,在JVT校验模型JM8.6的基础上实现本文提出的码率控制算法,并与JM8.6作比较。试验中采用标准的QCIF序列进行测试,每个宏块为一基本单元,目标码率分别为128 Kbit/s,96 Kbit/s,48 Kbit/s,32 Kbit/s,帧率为30 f/s(帧/秒),第一帧为I帧,其余为P帧,共编码150帧。对所有测试序列均采用CABAC编码,运用率失真优化模式判别方法,运动估计搜索范围为16,1/4像素精度,参考帧数为5,并采用哈达码变换。图2、图3和图4分别给出了码率为64 Kbit/s时,carphone用本文算法改进前后的PSNR波动、实际缓冲和缓冲差值对比图,其中图4中FDB表示实际缓冲与目标缓冲差值的绝对值。表1给出了两种算法控制精度和平均PSNR值比较。

对帧层比特增加反馈,使得编码比特连续大(小)于目标比特出现的次数大大减少,所以图2中改进后实际缓冲更接近目标缓冲,如图3所示,改进后FDB大大减小,从表1中也可以看出改进后实际编码比特更加接近目标比特;利用宏块相关性寻找与当前宏块相关性大的宏块用来预测,提高了MAD预测精度,进而使得宏块层目标比特分配更加合理,提高了图像重建质量,从图4可以看出改进后的PSNR有明显提高,表1中可以看出改进后PSNR得到大约0.37 dB的提高。

6 结语

通过增加帧层反馈很好地处理了编码比特与目标比特差值,宏块层准确预测MAD使得宏块层比特分配更加合理。实验证明,改进后的算法与G012相比,能获得更好的图像质量和更加接近目标缓冲的实际缓冲。

摘要:在帧层和宏块层提出一种改进的码率控制算法。在帧层利用编码比特与目标比特的差值对下一帧目标比特进行调整,在宏块层利用宏块相关性提出了一种新型平均绝对差值(MAD)预测策略——大小三角形法预测宏块MAD。实验结果表明,改进算法不仅码率的控制更加精确,而且图像的视觉质量也得到提高。

关键词:码率控制,比特分配,MAD预测,基本单元相关性

参考文献

[1]CHANG T H,ZHANG Y Q.A new rate control scheme using quadtatic rate distortion model[C]//Proc.IEEE International Confer-ence on Image Processing.[S.l.]:IEEE Press,1996:73-76.

[2]周树民,李锦涛,黄晁.低比特率视频编码中一种有效的码率分配算法[J].计算机辅助设计与图形学学报,2005,17(11):2558-2564.

[3]YI Xiaoquan,LING Nan.Rate control using enhanced frame coplexity measure for H.264video[J].IEEE Workshop on Signal Processing System,2004(10):263-268.

[4]PARK S Y,LEE Y S,CHANG H.A new MPEG-2rate control scheme using scene change detection[J].ETRL Journal,1996,18(12):61-74.

篇9:例谈基本算法语句

一、输入语句、输出语句、赋值语句的综合应用

一般输入语句、输出语句和赋值语句的基本格式和用法如下表所示:

[ \&输入语句\&输出语句\&赋值语句\&格式\&INPUT“提示内容”,变量\&PRINT“提示内容”;表达式\&变量=表达式\&说明\&1.“提示内容”和它后面的“;”可以省略;

2.一个语句可以给出多个变量赋值,中间用“,”隔开;

3.无计算功能,不能输入表达式;

4.输入多个数据时用“,”分隔,且个数与变量的个数相同\&1.“提示内容”和它后面的“;”可以省略;

2.一个语句可以输出多个表达式,不同的表达式之间用“,”隔开;

3.表达式可以是变量,也可以是计算公式;

4.有计算功能,能直接输出计算公式的值\&1.“=”左侧必须是变量,右侧可以是数字,变量或者是计算公式;

2.一个语句只能有一个“=”,且只能给一个变量赋值;

3.有计算功能,可以把表达式的值赋给一个变量\&][项目][内容]

例1 下列给出的输入语句、输出语句和赋值语句:

(1)输出语句INPUT a,b,c

(2)输入语句INPUT [x=3]

(3)赋值语句3=A

(4)赋值语句A=B=C

则其中正确的个数是( )

A. 0 B. 1 C. 2 D. 3

解析 本题主要考查输入、输出语句和赋值语句的基本格式和用法,注重区分它们的异、同点.

(1)输出语句应为“PRINT a,b,c”,故本项是错误的;

(2)输入语句中不能再用赋值号“=”,故本项是错误的;

(3)赋值语句中,一次只能对一个变量赋值,且只能对变量赋值,即变量在左侧,故本项是错误的;

(4)赋值语句不能连续赋值,故本项是错误的.

答案 A

二、条件语句的应用

一般来说,条件语句的用法和格式如下表所示:

END IF\&说明\&当计算机执行上述语句时,首先对IF后的条件进行判断,如果条件符合就执行THEN后语句体1,否则执行ELSE后语句体2\&计算机执行这种形式的条件语句时,首先对IF后的条件进行判断,如果条件符合就执行THEN后的语句,如果条件不符合,则直接结束条件语句,转而执行其它语句\&][项目][内容]

例2 已知下列程序:

三、循环语句的应用

直到型循环的一般格式和用法如下:

循环体

当型循环的一般格式和用法如下:

注意当型循环与直到型循环的区别:

(1)当型循环是先判断后执行,直到型循环是先执行后判断;

(2)当型循环用WHILE语句,直到型循环用UNTIL语句;

(3)对同一算法来说,当型循环和直到型循环的条件互为反条件.

例3 阅读如图所示的程序,该程序输出的结果为 .

[[a=0S=1WHILE a<3 S=S*3 a=a+1WENDPRINT SEND]]

分析 此题考查的内容是当型循环语句,当满足条件[a<3]则执行循环体,否则结束.

解 第1次循环:[S=3,a=1;]

第2次循环:[S=9,a=2;]

第3次循环:[S=27,a=3,]此时不满足条件,循环结束,故输出27.

例4 阅读如下程序,若输出的结果为[6364],则在程序中横线处应填入语句为( )

分析 此题为直到型循环,此程序直接进入循环体,直到满足条件结束循环.

上一篇:来,将进酒散文下一篇:涂装车间常用英语词组