RAPTOR程序设计基础《可视化计算》1学习目标为什么学习RAPTOR系统?RAPTOR程序设计环境有那些基本概念?如何使用程序设计进行计算问题的求解?2为什么要学习RAPTOR?RAPTOR(theRapidAlgorithmicPrototypingToolforOrderedReasoning--用于有序推理的快速算法原型工具),是一种基于流程图仿真的可视化的程序设计环境,为程序和算法设计的基础课程的教学提供实验环境使用RAPTOR设计的程序和算法可以直接转换成为C++、C#、Java等高级程序语言,这就为程序和算法的初学者铺就了一条平缓、自然的学习阶梯3使用RAPTOR的理由可以在最大限度地减少语法要求的情形下,帮助用户编写正确的程序指令程序就是流程图,可以逐个执行图形符号,以便帮助用户跟踪指令流执行过程容易掌握用RAPTOR可以进行算法设计和验证,从而使初学者有可能理解和真正掌握“计算思维”4RAPTOR基本程序环境基本界面5基本符号变量显示区“Main”的初始状态调速滑块程序输出区域四种基本符号/语句目的符号名称说明输入输入语句输入数据给一个变量处理赋值语句使用各类运算来更改的变量的值处理过程调用执行一组在命名过程中定义的指令输出输出语句显示变量的值。6变量变量(variable)表示的是计算机内存中的位置,用于保存数据值在任何时候,一个变量只能容纳一个值在程序执行过程中,变量的值可以改变命名:以字母开头,由字母、数字、下划线组成7变量赋值过程说明X的值程序当程序开始时,没有任何变量存在未定义第一个赋值语句,X←32,分配数据值32给变量X32下一个赋值语句,X←X+1,检索到当前X的值为32,给它加1,并把结果33给变量X33下一个赋值语句,X←X*2,检索到X当前值为33,乘以2,并把结果66给变量X668RAPTOR变量值的设置基本原则:任何变量在被引用前必须存在并被赋值变量的类型由最初的赋值语句所给的数据决定设置方法通过输入语句赋值通过赋值语句的中的公式运算后赋值通过调用过程的返回值赋值9RAPTOR数据类型数值(Number):如12,567,-4,3.1415,0.000371字符串(String):如“Hello,howareyou?”,“JamesBond”,“Thevalueofxis:”注意:本系统不能使用汉字字符!10变量报错的原因未定义引用11变量报错的原因拼写错12不同类型的数据不可比较13RAPTOR常量RAPTOR定义了四个常量(Constant)下列四个符号取值为固定值,不可更改,只能引用pi(圆周率)定义为3.1416e(自然对数的底)定义为2.7183true/yes(布尔值:真)定义为1false/no(布尔值:假)定义为014给程序增加语句符号在“start”和“End”之间的箭头上点鼠标右键,在快捷菜单可以添加语句符号。15输入(Input)语句输入语句的编辑(Edit)对话框提示部分变量部分16输入(Input)语句输入语句在流程图中显示的状态运行时对话框17输出语句执行输出语句将在主控(MasterConsole)窗口显示输出结果输出的结果可以使用或不使用换行操作其中TheNumberIs:是输出语句的提示部分,为文本型数据两端加双引号,+表示连接后面的内容,n两端无双引号表示它是一个变量。Endcurrentline选中表示下一个输出语句将另起一行。注意:提示部分文字只能用英文,不支持汉字。18输出语句运行程序,点击工具栏的在输入框输入数字:5输出结果出现在主控窗口。19赋值语句(编辑)在输入语句和输出语句之间插入赋值符号,双击Set部分为接受赋值的变量或To部分为表达式20赋值语句(显示)流程图中的赋值语句21表达式可以是任何计算单个值的简单或复杂公式是值(无论是常量或变量)和运算符的组合。例如,考虑下面的两个例子:(1)x←(3+9)/3(2)x←3+(9/3)22内置运算符和函数数学运算:+,-,*,/,^,**(加、减、乘、除、乘方)rem,mod(求余),sqrt(开平方)log,abs,(对数,绝对值)ceiling,floor(向下取整,向上取整)23内置运算符和函数三角函数:sin,cos,tan;正弦,余弦,正切cot,arcsin,arccos;余切,反正弦,反余弦arctan,arccot;反正切,反余切24内置运算符和函数random,伪随机数Length_of求数组元素个数,求字符串长度25表达式计算的“优先顺序”1.计算所有函数的值;2.计算括号中表达式;3.计算乘幂(^,**);4.从左到右,计算乘法和除法,最后从左到右,计算加法和减法。26注释注释本身对计算机毫无意义,并不会被执行。注释的目的是增强程序的可读性,帮助他人理解你所设计的程序或算法27一个带注释的算法注释的四种类型:1.编程标题2.分节描述3.逻辑描述4.变量说明28选择控制可能性1可能性2Statement1Statement2aStatement3Statement1Statement2bStatement329•当程序执行时,如果决策的结果是“Yes”(True),则执行左侧分支•如果结果是“No”(False),则执行右侧分支选择控制注意选择控制语句的两个路径之一可能是空的,或包含多条语句选择控制结构在英语环境中被称为“if-then”结构30决策表达式决策表达式(DecisionExpressions)是一组值(常量或变量)和关系运算符的结合,期望得到YES/NO这样的结果关系运算符(=、/=、、=、、=),必须针对两个相同的数据类型值比较例如,3=4或Wayne=Sam是有效的比较,但3=Mike则是无效的31决策表达式中的运算符说明运算说明例=等于3=4结果为No(false)!=/=不等于3!=4结果为Yes(true)3/=4结果为Yes(true)小于34结果为Yes(true)=小于或等于3=4结果为Yes(true)大于34结果为No(false)=大于或等于3=4结果为No(false)and与(34)and(1020)结果为Yes(true)or或(34)or(1020)结果为Yes(true)not非not(34)结果为No(false)32级联(嵌套)选择控制33在选择结构里面插入选择结构循环控制循环(loop)控制语句允许重复执行一个或多个语句,直到某些条件变为真值(True)菱形符号中的表达式结果为“No”,则执行“No”的分支,这将导致循环语句和重复要重复执行的语句可以放在菱形符号上方或下方循环控制结构在英语环境中被称为“While-do”结构34循环测试在循环语句中,究竟是先计算后测试,还是先测试后计算,或者在计算的过程中间进行测试?前序测试(Pre-test)后续测试(Post-test)中序测试(Intermediate-test)35删除图的Statement2Statement1为前置条件Statement3是主循环体如果进入了Statement3,测试条件也必须由这一部分进行修改;前序测试36中序测试Statement2是主循环体之一而测试条件也是在Statement2中产生Statement3是主循环体之二37后续测试删除和Statement3Statement2是主循环体而测试条件也是在Statement2中产生;38输入验证循环之一39中序测试输入验证循环之二40计数循环循环按特定的次数,来执行某个代码块一个著名的缩写I.T.E.M(Initialize,Test,Execute,Modify,初始化,测试,执行,和修改)表示可以用来检查一个循环计数器变量使用是否正确的基本过程41典型的循环错误42计数控制循环之一43前序测试计数控制循环之二44后序测试RAPTOR子程序与子图定义与调用在计算机科学中,将实际问题抽象化是解决问题的关键要素之一一项研究成果表明,人类的大脑平均只能同时积极关注约4件事情,大大少于以往研究所得的7件事情的结论为了解决复杂的问题,必须能够研究问题的“主要方面(bigissues)”45组合数求解很容易看到,求组合数需要多次求阶乘,这会造成许多重复的代码,现在将求阶乘代码独立出主程序,定义为一个子程序,在主程序运行时,需要计算某数的阶乘时就调用子程序,从而简化整个软件的组成,使结构更清晰。4647创建RAPTOR子程序子程序如同一个加工厂,输入原材料,然后按设计要求处理原材料,输出产成品子程序的原材料就是一些变量,例如(in:char),为统计子程序输入测试样本子程序的产成品也是变量,例如(out:count),向调用它的程序返回统计结果其中,in,out表示子程序的输入输出参数48子程序定义子程序定义界面上的接口参数称为“形式参数”RAPTOR的子程序参数不得超过6个子程序参数可以是单个变量,也可以是数组49一个设计完成的子程序50过程调用语句(编辑)编辑对话框注意已有过程提示51过程调用语句(显示)注意,内置过程,子图,子程序的调用使用同样的语句,但子图没有参数;内置过程或子程序需要参数52子程序的调用如要调用子程序,可以通过调用语句并给子程序的接口赋予“实际参数”进行实际参数的名与形式参数的可以不同实际参数的数据类型则必须与形式参数的相同5354实参形参Endofch1-155