算法设计工具实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
深圳大学实验报告
课程名称计算机基础
项目名称算法设计工具
学院
专业
指导教师
报告人学号
实验时间 2016.12.01 提交时间 2016.12.08
教务处制
一、实验目的与要求
1.加深对算法设计和流程图的认识和理解;
2.掌握算法设计工具Raptor的基本工作环境;
3.掌握顺序结构、选择结构和循环结构的设计方法;
4.掌握Raptor的子图和子程序设计方法。
二、实验内容与方法
1.Raptor的工作环境
2.控制结构
(1)顺序结构案例一
(2)选择结构案例2
(3)循环结构案例3
3.子图和子程序案例4
4.练习题
三、实验步骤与过程
1.Raptor的工作环境
1)Raptor的下载与安装
在Internet上查找Raptor4.0.5.0003汉化版并下载,或访问Raptor官网(http:///)下载,按照Raptor汉化版安装向导的说明进行安装即可。
2)Raptor的窗口组成
启动Windows系统后,选择“开始”→“所有程序”→“Raptor汉化版”命令,或双击桌面上的Raptor快捷图标,打开Raptor的应用窗口,如图1所示。
图1
(1) 标题栏。
标题栏位于Raptor 窗口的顶部,显示该软件的图标,应用程序
名称(Raptor 汉化版)以及当前正在处理的Raptor 的文件名。
标题栏最左端是Raptor 图标,单击该图标可以打开该软件的控制菜单,包括“还原”、“移动”、“移动”、“大小”、“最大化”、“最小化”和“关闭”等命令。
右边的三个按钮分别是“最小化”按钮、“最大化”/ “还原”按钮和“关闭”按钮。
(2) 菜单栏。
菜单栏位于标题栏的下方,包括“文件”、“编辑”、“比例”、
“视图”、“运行”、“模式”、“画笔”、“窗口”、“生成”、“帮助”等10个菜单选项。
单击每一个菜单选项都会激活一个下拉菜单,列出有关此项功能的具体操作命令。
其中,“模式”菜单选项包含“初级”、“中级”、和“面向对象”3种模式。
(3) 工具栏。
工具栏位于菜单栏的下方,显示常用的Raptor 命令选项,用于
快速启动这些应用,如“新建”、“打开”、“保存”、“运行”、“单步运行”以及“画笔”等。
(4) 符号区。
Raptor 有6种基本符号,每个符号代表一个特定的语句类型。
各类语句的功能如下。
① 赋值语句:用于各类运算以更改变量的值。
② 调用语句:用于调用Raptor 内置过程、子图和子程序。
③ 输入语句:允许用户输入数据,并将数据赋值给一个变量。
④ 输出语句:用于显示变量的值或保存到文件中。
⑤ 选择语句:经过条件判断后选择两条路径之一,并继续执行。
⑥ 循环语句:允许重复执行一个或多个语句,知道某些条件为真值。
符号区 标题栏 菜单栏 工具栏
工作区
(5)工作区。
工作区就是编制流程图的地方,用于显示当前编辑的程序。
初级模式下,右击main程序可建立子图或子程序。
(6)主控台。
在Raptor中,当输出语句执行时,会将数据输出到“主控台”
窗口上。
每当程序运行结束时,在主控台上均会显示程序执行了多少条语句。
Raptor的“主控台”窗口如图2所示。
图2 Raptor的“主控台”窗口
退出Raptor的方法有多种,常用的方法是在Raptor应用程序窗口中选择“文件”→“退出”命令,或直接单击Raptor应用程序窗口上标题栏右端的“关闭”按钮。
2.控制结构
编写程序的重要工作之一就是控制语句的执行流程,控制结构含有3种基本类型,它们是顺序结构、选择结构和循环结构。
1)顺序结构
顺序结构是最简单的程序构造,它把每条语句按顺序排列,执行时程序从开始(Start)语句顺序执行到结束(End)语句,箭头连接着语句并指示程序的执行方向。
案例1已知某圆的半径radius,求该圆的面积Area。
首先确定计算圆的面积公式:Area=pi*radius*radius
然后在Raptor中编制相应的流程图,如图3所示。
图3 计算圆的面积
其运行结果如图4
图4
注意:在Raptor中目前没有提供为用户定义常量的功能,而只是在系统内部定义了若干符号来表示常用的数值型常数。
当用户需要相应的值时,可直接使用代表这些常数的符号(这些符号也被称为保留字,保留字不可以再作为变量或者子图、子程序的名字)。
圆周率pi被定义为3.1416(Raptor默认精度为4位)。
2)选择结构
很多情况下,仅使用顺序结构进行程序控制是无法得到针对现实世界问题的解决方案的。
有时需要根据某些条件是否满足来决定程序执行的方向,或者从给定的两种操作中选择其一,这就是选择结构要解决的问题。
选择语句可以使程序根据数据的当前状态选择两条可以选择的路径中一条继续执行。
案例2已知某圆的半径radius,求该圆的面积Area。
如果输入圆的半径
radius是负数,那就没有意义了。
请设计程序,当输入的半径radius为负数时,输出错误提示信息。
分析题目可知,当输入半径radius之后,如果半径radius小于零,则输出相应的错误提示信息:如果半径不小于零,则进行相应半径radius的圆面积计算。
根据数据当前状态选择两条可以选择的路径中的一条继续执行,显然要用到选择结构。
在Raptor中编制相应的流程图,如图5
图5 计算圆的面积
当输入半径radius小于零的时候,得到运行结果如下:
当输入半径radius不小于零的时候,得到运行结果如下:
3)循环结构
循环结构就是反复执行某段程序,直到某种条件满足时才结束执行的控制结构。
一个循环语句允许重复执行一个或多个语句,直到某种条件为真。
控制循环体执行次数的方法有以下两种。
(1)采用计数器方法:设置一个计数器,通过判断计数器的数值来控制循环体是否继续进行。
(2)采用“哨兵法”:这种方法在“事先不知道要循环多少次”的情况下特别有效。
通过“对数据内容的判断”来控制循环是否继续。
哨兵法的实现:在被处理数据序列的尾部安放一个“哨兵”——即事先知道的数据。
所以,每次循环体执行时,都会通过判断哨兵是否出现来控制循环体是否继续进行,一旦发现“哨兵”,则结束循环体的执行。
案例3 接着案例2的问题,如果要在一个程序中多次进行半径radius 的输入并计算圆的面积Area,该如何实现?
题目要求多次进行半径radius的输入并计算圆的面积Area,因此重复执行某段程序,直到某种条件满足时才结束该段程序执行,显然,使用循环结构较为合适。
考虑到有两种循环的情况:第一,事先知道有多少组数据要进行测试;第二,事先不知道有多少组数据要测试。
因此,通过两种方式来控制循环的条件,从而实现程序求解问题。
(1)事先知道有多少组数据要进行测试。
可以通过输入要测试数据的组数来控制循环,在Raptor中编制相应的流程图,如图6所示。
图6 计算圆的面积(计数法)
按照提示信息输入待测试的数据组数为2,接着输入两个半径radius的值为10和100,运行结果如图7:
图7
(2)事先不知道有多少组数据要测试,这种情况下,可以利用“哨兵法”,即在要测试的最后一组数据后边做上标记,像“哨兵”一样来提示循
环的结束。
这里用0来作为“哨兵”,即当输入的半径radius等于0
时,循环结束。
在Raptor中编制相应的流程图,如图8所示
按照提示信息依次输入2、3/10/0,得到的运行结果如下:
图8 计算圆的面积
3.子图和子程序
Raptor模式有初级、中级和面向对象3种形式可供选择。
其中,初级模式和中级模式没有太大的查边,唯一不同的地方就是初级模式中的调用语句可以调用语句进行调用,子图调用时无须提供参数,因为所有的Raptor子图共享
所有的变量。
而子程序相当于Raptor的内置过程,必须提供完成任务所需要的数据,也就是所谓的参数。
Raptor的子图和子程序之间的最大差别在于不能给子图传递参数,子图也不会返回任何值。
所有Raptor子图共享所有的变量,而子程序的所有变量“自成系统”。
案例4
输入两个数a和b,交换之后输出。
在Raptor中编制相应的流程图,main子图的实现如图9所示,swap子图的实现如图10所示。
图10 判断最大数的main子图
图11 判断最大数的main子图
图12 判断最大数的Maxximum_value子程序其运行结果如下:
子程序如同一个加工厂,输入原材料,然后按照设计要求,输出所需要的产品。
子程序(Maxximum_value)的原材料就是一些变量,这里是指in:m和in:n,这是子程序待处理的数据,子程序(Maxximum_value)的产品也是变量,这里是指out:max_number,用于向调用它的程序返回处理结果。
其中in和out代表子程序的输入和输出参数。
子程序定义界面上的接口参数称为“形式参数”,如图13.从中可以看出,Raptor中的子程序参数不得超过6个,任何参数只要是有in(输入参数)的属性,那么在程序调用该子程序之前,必须准备好这个参数,即已经初始化且有数值。
子程序运行中的所有变量都“自成系统”,与调用它的程序没有关系。
调用它的程序只是通过调用参数与它交接“原材料”(待处理的数据)和“所需产品”(已处理的数据)。
子程序的所有变量在子程序运行过程中存在,运行结束后,除了传回调用程序的参数,所有变量立即释放或删除。
图13Maxximum_value子程序定义界面练习题
1.输入三角形的三条边长,求三角形的面积。
输入a=3,b=2,c=1,运算结果如下
输入a=20,b=21,c=19,运算结果如下
2.求方程ax²+bx+c=0在实数域上的根。
a、b、c由键盘输入。
输入a=0时,运算结果如图:
输入a=1,b=0,c=1时,运算结果如图:
输入a=1,b=0,c=-1时,运算结果如图:
输入a=1,b=-2,c=1时,运算结果如图:
3.设计程序,判断输入的数是否为素数,是则输出“Yes”,否则输出“No”
如图
输入n=177,运行结果如下:
4.写一个子图或子程序,用递归方法求Fibonacci数列的第n项,n由
键盘输入。
输入n=3,运行结果如下:
四、实验结论或体会
刚开始对Raptor的算法一无所知,不过通过这次实验开始喜欢算法了。
我们平时遇到的一
些难以解决的题目,都可以用算法来解决。
而且,设计算法也是一种锻炼逻辑思维的好途径,同时也能让我养成检查,寻找最佳优化方案的习惯。
在完成这次实验报告的过程中,也会遇到一些找不出原因的问题,幸亏最后都解决了。
总而言之,这次实验让我有很大的进步。
注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。
2、教师批改学生实验报告时间应在学生提交实验报告时间后10日内。