版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、RAPTORRAPTOR程序设计基础程序设计基础循环(循环(looploop)控制语句允许)控制语句允许重复执行一个或多个语句,重复执行一个或多个语句,直到某些条件变为真值直到某些条件变为真值(TrueTrue)。菱形符号中的表达式结果为菱形符号中的表达式结果为“NoNo”,则执行,则执行“NoNo”的分的分支,这将导致循环语句和重支,这将导致循环语句和重复复。要重复执行的语句可以放在要重复执行的语句可以放在菱形符号上方或下方菱形符号上方或下方。循环控制结构在英语环境循环控制结构在英语环境中被称为中被称为“”结构结构。未修改未修改CountCount的值的值CountCount的值永远为的值永
2、远为1 1CountCount的值永远不会等于的值永远不会等于-100-100求一个正整数的累加。求一个正整数的累加。一张纸折几下可以比珠穆朗玛峰高一张纸折几下可以比珠穆朗玛峰高。(。(0.5mm0.5mm,8848m8848m)在计算机科学中,将实际问题抽象化在计算机科学中,将实际问题抽象化是解决问题的关键要素之一是解决问题的关键要素之一。为了解决复杂的问题,必须能够研究为了解决复杂的问题,必须能够研究问题的问题的“主要方面(主要方面(big issuesbig issues)”。很容易看到,求组合数需要多次求很容易看到,求组合数需要多次求阶乘阶乘,这,这会造成许多重复的代码会造成许多重复的
3、代码。可以可以将求阶乘代码独立出主程序,定义为一将求阶乘代码独立出主程序,定义为一个个子程序子程序,在主程序运行时,需要计算某数,在主程序运行时,需要计算某数的阶乘时就调用子程序,从而简化整个软件的阶乘时就调用子程序,从而简化整个软件的组成,使结构更清晰。的组成,使结构更清晰。子程序如同一个加工厂,子程序如同一个加工厂,输入原材料输入原材料,然,然后按设计要求后按设计要求处理原材料处理原材料,输出产成品输出产成品。子程序的原材料就是一些变量子程序的原材料就是一些变量, ,例如(例如(in: in: mm), ,为统计子程序输入测试样本。为统计子程序输入测试样本。子程序的产成品也是变量,例如(子
4、程序的产成品也是变量,例如(out: sout: s), ,向调用它的程序返回统计结果。向调用它的程序返回统计结果。其中,其中,in, outin, out表示子程序的输入输出参数。表示子程序的输入输出参数。点击点击“模式模式”菜单,菜单,选择选择“中级中级”。 在在“mainmain”上点鼠标上点鼠标右键,选择右键,选择“增加一个增加一个子程序子程序”。子程序定义的参数称为子程序定义的参数称为“形式参数形式参数”。RAPTORRAPTOR的子程序参数不的子程序参数不得超过得超过6 6个。个。子程序参数可以是子程序参数可以是单个单个变量变量,也可以是,也可以是数组。数组。NoImage在在“m
5、ainmain”或其它子或其它子程序中添加过程调用程序中添加过程调用语句。语句。双击双击定义定义该语句。该语句。JC(m, m1)JC(m, m1)实参实参注意注意:调用子程序需要参数。:调用子程序需要参数。如要调用子程序,可以通过调用语句并给子程序的接口赋如要调用子程序,可以通过调用语句并给子程序的接口赋予予“实际参数实际参数”进行。进行。实际参数的实际参数的与形式参数的与形式参数的可以不同可以不同。实际参数的实际参数的则则必须必须与形式参数的与形式参数的相同相同。1 1迭代迭代算法算法(递推法)递推法)让让计算机对一组计算机对一组指令进行指令进行重复执行,在每次执行这组重复执行,在每次执行
6、这组指令时指令时,都从变量的,都从变量的原值推出它的一个新值原值推出它的一个新值。在数学中,迭代经常被用来进在数学中,迭代经常被用来进行数值计算行数值计算,累加,累加与累乘问题与累乘问题是最典型、最基本的一类算法,是最典型、最基本的一类算法,实际应用中很多问题都可以归实际应用中很多问题都可以归结为累加与累乘问题结为累加与累乘问题。累加:累加:S=0input nFor j=1 to ns=s + j 累乘:累乘:F=1input nFor k=1 to nF=F*k 具体方法是:具体方法是:如左图:先给一个近如左图:先给一个近似根的一个初值似根的一个初值x1,过,过A点点(f(x1)作作切线交
7、切线交x轴于轴于x2点。实际上是找出点。实际上是找出x2,再由再由x2找出找出x3,x4,直到满足精度,直到满足精度为为10-6的根的根(解解)。由点斜式方程得由点斜式方程得斜率斜率k: 【例例】求求一元高次方程一元高次方程2x3-4x2+3x-6=0在在x=1.5附近的附近的近近似似根根,要求精度为要求精度为10-6。分析:分析:“迭代法迭代法”又称又称“递推法递推法”,其,其基本思想基本思想是是把一把一个复个复杂的计算过程简化杂的计算过程简化为简单过为简单过称的多次重复。称的多次重复。每次每次的重复的重复都是都是从从旧值旧值的基础上递推出新值,直至满足精度要求。的基础上递推出新值,直至满足
8、精度要求。 11xxyykf (x1)=0-f(x1)/(x2-x1)x2=x1- f(x1)/ f (x1)得递推公式:得递推公式: xn+1 = xn f (xn) / f (xn)本题本题中,我们用中,我们用 f 表示表示f(xn),f1 表示表示 f (xn)634223nnnxxxf38621nnxxf19k = y = f(x)A点初的切线在点初的切线在x轴上的轴上的x2处处 有有 y2=0 而而 【思考题【思考题】小猴有桃若干,第一天吃掉一半多一个;第二天小猴有桃若干,第一天吃掉一半多一个;第二天吃剩下桃子的一半多一个;以后每天都吃尚存桃子的一半多吃剩下桃子的一半多一个;以后每天
9、都吃尚存桃子的一半多一个,到第一个,到第7天要吃时只剩一个,问小猴原有桃多少?天要吃时只剩一个,问小猴原有桃多少?分析分析:也是递也是递推推(迭代迭代)问题。问题。用用后一天的数推出前一天的后一天的数推出前一天的桃子数桃子数。设设第第n天天的桃子为的桃子为xn,是前一天的桃子的二分之一减去,是前一天的桃子的二分之一减去1。 121即:1nnxx?;求2)1(也就是:01xxxnn01;求2)1(xxxnn2 2穷举算法穷举算法穷举法也叫枚举法穷举法也叫枚举法,是,是对众多可能解,通过多重循环一一列举出该问对众多可能解,通过多重循环一一列举出该问题所有可能的解,并在逐一列举的过程中,检验每个可能
10、的解是否是问题题所有可能的解,并在逐一列举的过程中,检验每个可能的解是否是问题的真正解,若是,就采用这个解,否则抛弃它。穷举的计算量是相当大的,的真正解,若是,就采用这个解,否则抛弃它。穷举的计算量是相当大的,但对于计算机来说,做起来很容易但对于计算机来说,做起来很容易。采用穷举法解题的基本思想:采用穷举法解题的基本思想:(1 1)明确问题要求,确定枚举对象,用合适类型的变量表示枚举对象。)明确问题要求,确定枚举对象,用合适类型的变量表示枚举对象。(2 2)明确枚举对象的取值范围。)明确枚举对象的取值范围。(3 3)根据题目要求,写出有关的条件表达式。这里条件表达式可以是数)根据题目要求,写出
11、有关的条件表达式。这里条件表达式可以是数学表达式、关系表达式或逻辑表达式。学表达式、关系表达式或逻辑表达式。(4 4)用)用循环语句枚举出可能的解,在循环体内验证各种条件表达式是否循环语句枚举出可能的解,在循环体内验证各种条件表达式是否满足。满足。(5 5)根据问题背景,优化程序,以便缩小搜索范围,减少程序运行时间)根据问题背景,优化程序,以便缩小搜索范围,减少程序运行时间。例例1 1: 从从110110中找出中找出所有是所有是3 3倍数的数。倍数的数。用流程图描述解决此用流程图描述解决此数学问题的算法数学问题的算法如如右右图所图所示。示。 例例2 2:百:百元买百鸡。公鸡元买百鸡。公鸡5 5
12、块钱块钱一只,母鸡一只,母鸡三块钱三块钱一只、小一只、小鸡鸡一块钱一块钱三只,编程求解购鸡方案。三只,编程求解购鸡方案。分析:分析:(1) (1) 设母鸡、公鸡、设母鸡、公鸡、小鸡的数量各小鸡的数量各为为x x、y y、z z,列出方程为:,列出方程为:x x+ +y y+ +z z= 100= 1005 5x x+3+3y y+ +z /3z /3= 100= 100三个未知数,两个方程,此三个未知数,两个方程,此题有若干题有若干个整数解。个整数解。(2) (2) 计算机求解此类问题,采用试凑法计算机求解此类问题,采用试凑法( (也称穷举法也称穷举法) )来实现,来实现,即将可能出现的各种情
13、况一一罗列测试,判断是否满足条即将可能出现的各种情况一一罗列测试,判断是否满足条件,采用循环结构来实现件,采用循环结构来实现。112311233 3排序算法排序算法排序排序(SortSort),就是将一组数据元素按照某个关键字递),就是将一组数据元素按照某个关键字递增或递减的次序排列起来增或递减的次序排列起来。选择法选择法排序:排序:找出表中关键字最小的元素,将其与第找出表中关键字最小的元素,将其与第一个元素进行交换,再在其余元素中找出关键字最小的一个元素进行交换,再在其余元素中找出关键字最小的元素,将其与第二个元素进行交换。依次类推,直到将元素,将其与第二个元素进行交换。依次类推,直到将表中
14、所有关键字按由小到大的顺序排列好为止。表中所有关键字按由小到大的顺序排列好为止。For i = 1 To 5 Step 1Min = a(i) For j = i + 1 To 6 Step 1 If Min a(j) Then Min = a(j) p = j End If Next jn = a(i)a(i) = a(p)a(p) = nNext iVB程序段冒泡法排序冒泡法排序:从从第一第一个开始个开始,对数组中两两相邻的元素比较,对数组中两两相邻的元素比较,值,值较小较小的放的放在前面,值较大在前面,值较大的放的放在后面,一轮在后面,一轮比较完毕比较完毕,一个最大的数,一个最大的数沉底
15、成为数组中的最后一个元素,一些较小的数如同气泡一沉底成为数组中的最后一个元素,一些较小的数如同气泡一样上浮一个位置样上浮一个位置。n n个数,经过个数,经过n-1n-1轮比较后完成排序轮比较后完成排序。a(1)a(1)a(2)a(2)a(3)a(3)a(4)a(4)a(5)a(5)a(6)a(6)第第1 1轮比较轮比较6 8 3 2 7 6 8 3 2 7 a(1)a(1)a(2)a(2)a(3)a(3)a(4)a(4)a(5)a(5) 第第2 2轮比较轮比较6 3 2 7 6 3 2 7 9 9a(1)a(1)a(2)a(2)a(3)a(3)a(4)a(4) 第第3 3轮比较轮比较3 2 6
16、 3 2 6 8 9 8 9a(1)a(1)a(2)a(2)a(3)a(3) 第第4 4轮比较轮比较2 3 2 3 7 8 9 7 8 9a(1)a(1)a(2)a(2) 第第5 5轮比较轮比较2 2 6 7 8 9 6 7 8 9 原始数据原始数据8 6 9 3 2 78 6 9 3 2 7a(1)a(1)a(2)a(2)a(3)a(3)a(4)a(4)a(5)a(5)a(6)a(6)4. 4.递归算法:递归算法:程序调用自身的编程技巧称为程序调用自身的编程技巧称为递归(递归(recursionrecursion)。)。 一个过程或函数在其定义或说明中又直接或间接调一个过程或函数在其定义或说
17、明中又直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。次重复计算,大大地减少了程序的代码量。 注意:注意: (1) (1) 递归就是在过程或函数里调用自身递归就是在过程或函数里调用自身; ; (2) (2) 在使用递增归策略时,必须有一个明确的递归在使用递增归策略时,必须有一个明确的递归结束条件,称为递归出口
18、。结束条件,称为递归出口。递归的递归的原理,其实就是使用栈原理,其实就是使用栈(stack(stack). ).栈是限定在一端进行插入和删除的线性表。栈是按照栈是限定在一端进行插入和删除的线性表。栈是按照“先进先进后出后出”或者或者“后进先出后进先出”的原则组织数据的。的原则组织数据的。入栈入栈出栈出栈栈顶栈顶栈底栈底A1A1A2A2AnAn 栈示意图栈示意图例例1:递归法求:递归法求N!【解题解题】递归过程在自身定义的内部调用递归过程在自身定义的内部调用自己,自己,fac(n)=n! 的的递归函数:递归函数:1) 1fac(*11)fac(nnnnn进进栈栈出出栈栈当当n=4n=4时,求解过
19、程:时,求解过程:Function fac(n As Integer) As LongFunction fac(n As Integer) As Long If n = 1 Then If n = 1 Then fac fac = 1= 1 ElseElse fac fac = n = n * * fac(n - 1) fac(n - 1) End End If IfEnd End FunctionFunction递归函数程序段:递归函数程序段:例例2 2:源于源于印度一个古老印度一个古老传说。传说。大大梵天创造世界的时候做了三根金刚石柱子,在一根柱子梵天创造世界的时候做了三根金刚石柱子,在一
20、根柱子上从下往上按照大小顺序摞着上从下往上按照大小顺序摞着6464片黄金圆盘片黄金圆盘。大大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且在另一根柱子上。并且规定:规定:,。不论不论白天黑夜,总有一个僧侣在白天黑夜,总有一个僧侣在按照上面的按照上面的法则移动这些法则移动这些金片。僧侣们金片。僧侣们预言,当所有的金片都从梵天穿好的那预言,当所有的金片都从梵天穿好的那根柱根柱上上移到另外一移到另外一根柱上根柱上时,世界就将在一声霹雳中消灭,而时,世界就将在一声霹雳中消灭,而梵塔、庙宇和众生也都将同归于尽。梵塔、庙宇和众生也都将同归于尽。如果考虑一下把如果考虑一下把6464片金片,由一根针上移到另一根针上,片金片,由一根针上移到另一根针上,并且始终保持上小下大的顺序。这需要多少次移动呢并且始终保持上小下大的顺序。这需要多少次移动呢? ?
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 酒店大堂的安保措施介绍
- 旅游科普服务合同
- 艺术涂料施工协议
- 市政环卫洒水车租赁合同
- 退休硬件工程师维护合同
- 租赁GPS车辆安全监控系统合同
- 临时检验员聘用合同模板
- 城市规划光纤铺设合同
- 古董家具修复喷漆协议
- 空调维修工程师聘用合同年薪制
- GB/T 13912-2020金属覆盖层钢铁制件热浸镀锌层技术要求及试验方法
- GB/T 11270.2-2021超硬磨料制品金刚石圆锯片第2部分:烧结锯片
- 植物生理学-植物的逆境生理
- 2017大专病理课件4局部血液循环障碍l
- 2023年考研英语(二)真题
- 小学英语人教新起点五年级上册Unit3Animalsunit3storytime
- 乙醚MSDS危险化学品安全技术说明书
- 医疗质量管理与持续改进工作记录
- 幼儿园突发事件应急处置流程图
- 小学《信息技术》考试试题及
- 检伤分类课件
评论
0/150
提交评论