- 1、本文档共39页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
RAPTOR程序设计基础
《可视化计算》
循环控制
循环(loop)控制语句允许重复执行一个或多个语句,直到某些条件变为真值(True)。
菱形符号中的表达式结果为“No”,则执行“No”的分支,这将导致循环语句和重复。
要重复执行的语句可以放在菱形符号上方或下方。
循环控制结构在英语环境中被称为“While-do”结构。
典型的循环错误
未修改Count的值
Count的值永远为1
Count的值永远不会等于-100
计数控制循环之一
求一个正整数的累加。
计数控制循环之二
一张纸折几下可以比珠穆朗玛峰高。(0.5mm,8848m)
RAPTOR子程序的定义与调用
在计算机科学中,将实际问题抽象化是解决问题的关键要素之一。
为了解决复杂的问题,必须能够研究问题的“主要方面(big issues)”。
组合数求解
很容易看到,求组合数需要多次求阶乘,这会造成许多重复的代码。
可以将求阶乘代码独立出主程序,定义为一个子程序,在主程序运行时,需要计算某数的阶乘时就调用子程序,从而简化整个软件的组成,使结构更清晰。
子程序
子程序如同一个加工厂,输入原材料,然后按设计要求处理原材料,输出产成品。
子程序的原材料就是一些变量,例如(in: m),为统计子程序输入测试样本。
子程序的产成品也是变量,例如(out: s),向调用它的程序返回统计结果。
其中,in, out表示子程序的输入输出参数。
创建RAPTOR子程序
点击“模式”菜单,选择“中级”。
在“main”上点鼠标右键,选择“增加一个子程序”。
子程序定义
子程序定义的参数称为“形式参数”。
RAPTOR的子程序参数不得超过6个。
子程序参数可以是单个变量,也可以是数组。
求阶乘的子程序
过程调用语句
在“main”或其它子程序中添加过程调用语句。
双击定义该语句。
JC(m, m1)
实参
过程调用语句(显示)
注意:调用子程序需要参数。
子程序的调用
如要调用子程序,可以通过调用语句并给子程序的接口赋予“实际参数”进行。
实际参数的名与形式参数的可以不同。
实际参数的数据类型则必须与形式参数的相同。
五、算法示例
1.迭代算法(递推法)
让计算机对一组指令进行重复执行,在每次执行这组指令时,都从变量的原值推出它的一个新值。
在数学中,迭代经常被用来进行数值计算,累加与累乘问题是最典型、最基本的一类算法,实际应用中很多问题都可以归结为累加与累乘问题。
累加:
S=0
input n
For j=1 to n
s=s + j
累乘:
F=1
input n
For k=1 to n
F=F*k
具体方法是:如左图:先给一个近似根的一个初值x1,过A点(f(x1))作切线交x轴于x2点。实际上是找出x2,再由x2找出x3,x4…,直到满足精度为10-6的根(解)。
由点斜式方程得
斜率k:
【例】求一元高次方程2x3-4x2+3x-6=0在x=1.5附近的近似根,要求精度为10-6。
分析:“迭代法”又称“递推法”,其基本思想是把一个复杂的计算过程简化为简单过称的多次重复。每次的重复都是从旧值的基础上递推出新值,直至满足精度要求。
f’(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)
19
k = y’ = f’(x)
A点初的切线在x轴上的x2处 有 y2=0 而
【思考题】小猴有桃若干,第一天吃掉一半多一个;第二天吃剩下桃子的一半多一个;以后每天都吃尚存桃子的一半多一个,到第7天要吃时只剩一个,问小猴原有桃多少?
分析:也是递推(迭代)问题。用后一天的数推出前一天的桃子数。
设第n天的桃子为xn,是前一天的桃子的二分之一减去1。
2.穷举算法
穷举法也叫枚举法,是对众多可能解,通过多重循环一一列举出该问题所有可能的解,并在逐一列举的过程中,检验每个可能的解是否是问题的真正解,若是,就采用这个解,否则抛弃它。穷举的计算量是相当大的,但对于计算机来说,做起来很容易。
采用穷举法解题的基本思想:
(1)明确问题要求,确定枚举对象,用合适类型的变量表示枚举对象。
(2)明确枚举对象的取值范围。
(3)根据题目要求,写出有关的条件表达式。这里条件表达式可以是数学表达式、关系表达式或逻辑表达式。
(4)用循环语句枚举出可能的解,在循环体内验证各种条件表达式是否满足。
(5)根据问题背景,优化程序,以便缩小搜索范围,减少程序运行时间。
例1: 从1~10中找出所有是3倍数的数。用流程图描述解决此数学问题的算法如右图所示。
例2:百元买百鸡
文档评论(0)