1of43第1章Raptor编程简介资料来源:Raptor官网:翻译\整理:程向前xqcheng@mail.xjtu.edu.cnRaptor是一种基于流程图的可视化编程开发环境。流程图是一系列相互连接的图形符号的集合,其中每个符号代表要执行的特定类型的指令。符号之间的连接决定了指令的执行顺序。一旦开始使用Raptor解决问题,这样的理念将会变得更加清晰。使用Raptor基于以下几个原因:Raptor开发环境,在最大限度地减少语法要求的情形下,帮助用户编写正确的程序指令。Raptor开发环境是可视化的。Raptor程序实际上是一种有向图,可以一次执行一个图形符号,以便帮助用户跟踪Raptor程序的指令流执行过程。Raptor是为易用性而设计的(用户可用它与其他任何的编程开发环境进行复杂性比较)。Raptor所设计的报错消息更容易为初学者理解。使用Raptor的目的是进行算法设计和运行验证,不需要重量级编程语言,如C++或Java。1.1Raptor程序结构Raptor程序是一组连接的符号,表示要执行的一系列动作。符号间的连接箭头确定所有操作的执行顺序。Raptor程序执行时,从开始(Start)符号起步,并按照箭头所指方向执行程序。Raptor程序执行到的结束(End)符号时停止。最小的Raptor程序(什么也不做),如图1-1所示。在开始和结束的符号之间插入一系列Raptor语句/符号,就可以创建有意义的Raptor程序。Raptor基本符号Raptor有六种基本符号,每个符号代表一个独特的指令类型。基本符号如图1-2所示。首先介绍赋值(assignment),调用(Call),输入(Input)和输出(Output)四个类型的语句,而选择(Selection)和循环(Loop)中,将在稍后解释。典型的计算机程序有三个基本组成部分:•输入(Input)-完成任务所需要的数据值。•加工(Process)-操作数据值来完成任务。•输出(Output)-显示(或保存)加工处理后的结果。这三个组件与Raptor指令形成直接的关系如表1-1所示。图1-2Raptor六种基本符号图1-1开始和结束符号2of43表1-1四种Raptor基本指令说明目的符号名称说明输入输入语句允许用户输入的数据。每个数据值存储在一个变量中。处理赋值语句使用某些类型的数学计算来更改的变量的值。处理过程调用执行一组在命名过程中定义的指令。在某些情况下,过程中的指令将改变一些过程的参数(即变量)。输出输出语句显示变量的值(或保存到文件中)。这四个指令之间的共同点是,它们都对变量进行某种形式的操作!要了解如何设计算法,进而使之成为可以运行的计算机程序,必须明白变量的概念。变量变量表示的是计算机内存中的位置,用于保存数据值。在任何时候,一个变量只能容纳一个值。然而,在程序执行过程中,变量的值可以改变。这就是为什么他们被称为为“变量”的原因!作为一个例子,研究名为X的变量值的变化过程,如表1-2所示:表1-2变量赋值过程说明X的值程序当程序开始时,没有变量存在。Raptor变量在某个语句中首次使用时自动创建。未定义第一个赋值语句,X←32,分配数据值32给变量X32下一个赋值语句,X←X+1,检索到当前X的值为32,给它加1,并把结果33给变量X33下一个赋值语句,X←X*2,检索到X当前值为33,乘以2,并把结果66给变量X66在上例程序的执行中,变量X存储过三个不同的值。请注意,在一个程序中的语句顺序是非常重要的。如果重新排列这三个赋值语句,存储在X中的值则会有所不同。一个变量值的设置(或改变)可以采取以下三种方式之一:用一个输入语句赋值。通过赋值语句的中的公式计算赋值。通过从一个过程调用的返回值赋值。顾名思义,变量数据值的变化导致程序每次执行的结果可以不同。3of43程序员应给予所有的变量有意义的和具有描述性的名称。变量名应该与该变量在程序中的作用有关。变量名必须以字母开头,可以包含字母、数字、下划线(但不可以有空格或其他特殊字符)。如果一个变量名中包含多个单词,两个单词间用下划线字符分隔,这样变量名则更具有可读性。表1-3显示了一些好的、差的和非法的变量名的例子。表1-3变量名实例好的变量名差的变量名非法的变量名tax_ratesales_taxdistance_in_milesmpga(没有描述)milesperhour(添加下划线)my4to(没有描述)4sale(不可以字母开头)salestax(包括空格)sales$(包括无效字符)要点提示:如果给程序中的每个值一个有意义的、具有描述性的变量名,它会帮助用户更清楚思考需要解决的问题,并帮助寻找程序中的错误。了解变量的方法之一,是将它们看成程序不同部分之间进行信息交流的一种手段。在你的程序的不同部分使用相同的变量名,用户使用的是存储在同一位置中值。把变量看作一个存储区域并在程序的计算过程中参与计算。Raptor程序开始执行时,没有变量存在。当Raptor遇到一个新的变量名,它会自动创建一个新的内存位置并将该变量的名称与该位置相关联。在程序执行过程中,该变量将一直存在,直到程序终止。当一个新的变量创建时,其初始值将决定该变量将存储数值数据或文本数据。这就是所谓的变量的数据类型。一个变量的数据类型在程序执行期间不能更改的。总之,变量自动创建时,Raptor可以在其中保存:数值(Numbers)e.g.,12,567,-4,3.1415,0.000371,或字符串1(Strings)e.g.,“Hello,howareyou?”,“JamesBond”,“Thevalueofxis”使用变量时常见的错误:错误1:“变量____无值”(Error1:Variable____doesnothaveavalue)此错误的常见原因有两个:1)变量无值。2)变量名拼写错误。(参见图1-3)图1-3变量无值错误2:“不能将字符串赋值给数值变量_____(Error2:Can'tassignstringtonumericvariable_____);“不能将数值赋值给字符串变量_____(Can'tassignnumerictostringvariable_____),如果某个语句试图改变一个变量的数据类型,会发生此错误。(参见图1-4)1注:目前(raptor2011)尚不能保存汉字,所有字符串仅限ACSII字符。4of431.2Raptor语句/符号以下说明输入(Input)、赋值(Assignment)、调用(Call)和输出(Output)这四个基本语句。输入(Input)语句/符号输入语句/符号允许用户在程序执行过程中输入程序变量的数据值。这里最为重要的是,必须让用户必须明白这里程序需要什么类型的数据值。因此,当定义一个输入语句时,一定要在提示(Prompt)文本中说明所需要的输入。提示应尽可能明确,如果预期值需要单位或量纲(如英尺,米,或英里),应该在提示文本中说明(参见图1-5)。当你定义一个输入语句时,用户必须指定两件事:一是提示文本,二是变量名称,该变量的值将在程序运行时由用户输入。正如可以“EnterInput”对话框中看到的那样(参见图1-5)。使用表达式提示(Expressionprompt)可以将文本与变量进行组合成输入提示,如:“Enteranumberbetween”+low+“and”+high+“:”。输入语句在运行时,将显示一个输入对话框,如图1-6所示。在用户输入一个值,并按下ENTER键(或点击OK),用户输入值由输入语句赋给变量。请仔细思考“语句定义(definitionofastatement)”和“语句执行(executionofastatement)”的区别。定义语句对话框与执行图1-4变量类型用错时的提示图1-5输入语句的编辑(Edit)对话框图1-6输入语句的运行时(run-time)对话框5of43程序时使用的对话框是完全不同的。赋值语句/符号赋值符号是用于执行计算,然后将其结果存储在变量中。赋值语句的定义是使用如图1-7显示的对话框。需要赋值的变量名须输入到“Set”字段,需要执行的计算输入到“to”字段。图1-7的示例将变量X的值赋为0.7071。Raptor使用的赋值语句在其符号中语法为:变量←表达式(Variable←Expression)例如,图1-7对话框创建语句显示为:一个赋值语句只能改变一个变量的值,也就是箭头左边所指的变量。如果这个变量在先前的语句中未曾出现过,则raptor会创建一个新的变量。如果这个变量在先前的语句已经出现,那么先前的的值就将为目前所执行的计算所得的值所取代。而位于箭头右侧(即表达式)中的变量的值则不会被赋值语句改变。表达式一个赋值语句中的表达式(或计算)的可以是任何计算单个值的简单或复杂的公式。表达式是值(无论是常量或变量)和运算符的组合。请仔细研究以下构建有效表达式的规则。一台计算机只能一次执行一个操作。当一个表达式进行计算时,方程的运算并不是象用户输入时那样,按从左到右的优先顺序进行。实际的运算的执行顺序,是按照预先定义“优先顺序”进行的。例如,考虑下面的两个例子:(1)x←(3+9)/3(2)x←3+(9/3)在第一种情况中,变量x被赋的值为4,而在第二种情况下,变量x被赋的值为6。从这些例子中可以看到,可以随时使用括号明确地控制值和运算符的分组,一般性的“优先顺序”为:1.计算的所有函数(function),然后图1-7赋值语句的编辑对话框6of432.计算括号中表达式,然后3.计算乘幂(^,**),然后4.从左到右,计算乘法和除法,最后5.从左到右,计算加法和减法。运算符或函数指示计算机对一些数据执行计算。运算符须放在操作数据之间(如X/3),而函数使用括号来表示正在操作的数据(例如:SQRT(4.7))。在执行时,运算符和函数执行各自的计算,并返回其结果。表1-4概括了Raptor内置的运算符和函数。表1-4内置的运算符和函数基本数学运算(basicmath):+,-,*,/,^,**,rem,mod,sqrt,log,abs,ceiling,floor三角函数(trigonometry):sin,cos,tan,cot,arcsin,arcos,arctan,arccot杂项(miscellaneous):random,Length_of表1-5简要介绍了这些内置的运算符和函数。关于这些运算符和函数的全部细节,可以查阅Raptor帮助文档。表1-5运算符和函数说明运算说明范例+加3+4=7-减3-4=-1-负号-3*乘3*4=12/除3/4is0.75^或**幂运算3^4=3*3*3*3=813**4=81remmod求余数10rem3=110mod4=2sqrt求平方根sqrt(4)=2log自然对数(以e为底)log(e)=1abs绝对值abs(-9)=9ceiling向上取整ceiling(3.14159)=4floor向下取整floor(9.82)=9sin正弦(以弧度表示)sin(pi/6)=0.5cos余弦(以弧度表示)cos(pi/3)is0.5tan正切(以弧度表示)tan(pi/4)is1.0cot余切(以弧度表示)cot(pi/4)is1arcsin反正弦(expression),返回弧度arcsin(0.5)=pi/6arcos反余弦(expression),返回弧度arccos(0.5)=pi/3arctan反正切(y,x),返回弧度arctan(10,3)=1.2793arccot反余切(x,y),返回弧度arccot(10,3)=0.2915random生成一个范围在(1.0,0.0)随机值random*100=0~99.9999Length_of字符数返回一个字符串变量Example←SellnowLength_of(Example)=8在赋值语句中的表达式的运行结果(resultofe