raptor程序设计案例教程-ch6
合集下载
RAPTOR程序设计教程
RAPTOR程序设计教程第一部分:RAPTOR的介绍和安装第二部分:RAPTOR的界面介绍第三部分:RAPTOR的基本功能1.创建流程图:在流程图区域中,你可以使用RAPTOR提供的各种符号来创建你的流程图。
你可以创建顺序结构、选择结构和循环结构等等。
2.编写算法代码:在算法表区域中,你可以使用RAPTOR提供的伪代码来编写你的算法代码。
RAPTOR支持各种基本操作,如赋值、条件判断和循环等等。
3.调试程序:RAPTOR提供了一个调试器,可以帮助你调试你的程序。
你可以逐步执行你的程序,查看每个变量的值和程序的执行过程。
第四部分:RAPTOR的使用示例下面是一个使用RAPTOR设计的简单程序的示例:```1.输入一个数n2. 初始化sum为03.循环执行以下步骤n次:4.输入一个数x5. 将x加到sum上6. 输出sum```你可以使用RAPTOR创建一个顺序结构来实现这个程序。
首先,在流程图区域中添加一个"输入"符号,标记为"输入一个数n"。
然后,添加一个"赋值"符号,将sum初始化为0。
接着,添加一个循环结构,表示循环执行下面的步骤n次。
在循环结构中,添加一个"输入"符号,标记为"输入一个数x"。
然后,添加一个"赋值"符号,将x加到sum上。
最后,添加一个"输出"符号,输出sum。
第五部分:RAPTOR的进阶使用除了基本功能外,RAPTOR还提供了一些进阶功能,如函数和数组等。
你可以使用RAPTOR设计更复杂的程序。
例如,你可以使用RAPTOR的函数功能来设计一个求斐波那契数列的程序。
你可以创建一个函数,传入一个参数n,返回第n个斐波那契数。
然后,在主程序中调用这个函数,输出前10个斐波那契数。
另外,你还可以使用RAPTOR的数组功能来设计一个查找最大值的程序。
RAPTOR程序设计教程
23
内置运算符和函数
三角函数:
sin,cos,tan;正弦 ,余弦 ,正切 cot,arcsin,arccos;余切 ,反正弦 ,反余弦 arctan, arccot;反正切 ,反余切
24
内置运算符和函数
random,伪随机数 Length_of
求数组元素个数,求字符串长度
要重复执行的语句可以放在菱形符号上方或下方
循环控制结构在英语环境中被称为“While-do” 结构
34
循环测试
在循环语句中,究竟是先计 算后测试,还是先测试后计 算,或者在计算的过程中间 进行测试?
前序测试(Pre-test) 后续测试(Post-test) 中序测试(Intermediate-test)
例如,考虑下面的两个例子:
(1)x ← (3+9)/3
(2)x ← 3+(9/3)
22
内置运算符和函数
数学运算:
+,-,*,/,^,**(加、减、乘、除、乘方) rem, mod(求余),sqrt(开平方) log, abs, (对数,绝对值) ceiling, floor (向下取整,向上取整)
15
输入(Input)语句
输入语句的编辑 (Edit)对话框
提示部分 变量部分
16
输入(Input)语句
输入语句在流 程图中显示的 状态
运行时对话框
17
输出语句
执行输出语句将在主控 (Master Console)窗口显示输 出结果
输出的结果可以使用或不使用 换行操作
一个带注释的算法
注释的四种类型: 1.编程标题 2.分节描述 3.逻辑描述 4.变量说明
内置运算符和函数
三角函数:
sin,cos,tan;正弦 ,余弦 ,正切 cot,arcsin,arccos;余切 ,反正弦 ,反余弦 arctan, arccot;反正切 ,反余切
24
内置运算符和函数
random,伪随机数 Length_of
求数组元素个数,求字符串长度
要重复执行的语句可以放在菱形符号上方或下方
循环控制结构在英语环境中被称为“While-do” 结构
34
循环测试
在循环语句中,究竟是先计 算后测试,还是先测试后计 算,或者在计算的过程中间 进行测试?
前序测试(Pre-test) 后续测试(Post-test) 中序测试(Intermediate-test)
例如,考虑下面的两个例子:
(1)x ← (3+9)/3
(2)x ← 3+(9/3)
22
内置运算符和函数
数学运算:
+,-,*,/,^,**(加、减、乘、除、乘方) rem, mod(求余),sqrt(开平方) log, abs, (对数,绝对值) ceiling, floor (向下取整,向上取整)
15
输入(Input)语句
输入语句的编辑 (Edit)对话框
提示部分 变量部分
16
输入(Input)语句
输入语句在流 程图中显示的 状态
运行时对话框
17
输出语句
执行输出语句将在主控 (Master Console)窗口显示输 出结果
输出的结果可以使用或不使用 换行操作
一个带注释的算法
注释的四种类型: 1.编程标题 2.分节描述 3.逻辑描述 4.变量说明
RAPTOR可视化编程
检测单元能量值是否超过阈值的部分占用了大部分的运行时间,由于随着能量的分配范围的扩大,无法确定哪些地方没有能量,所以我采用了蛮力法,但这样使运算时间大大加大,所以我想,有没有一种算法可以在这种情况下对数组进行迅速判断,节省运行步骤,缩短时间。
并且,因为能力的关系,在用户界面方面,仍旧感觉有些呆板,不够生动,灵活。在运行过程中单元的形式很简单。但我觉得这是Raptor平台的一个不足之处,没有很好地界面图形编辑功能。另外,由于Raptor的基础设定,许多功能无法实现,例如,对一个数组整体归零,在Raptor中需要一步一步来,并没有类似于C语言中的static函数调用。
程亮,Raptor程序:《game of life》
梁雨聪,Raptor程序:《打砖块》
六,
七,
通过这次大作业的完成,让我明白了知识的摄取和理解需要不断地练习。在制作Raptor过程中,我遇到了一些我当时知识所无法解决的问题,但通过对同学作品的参考以及对书本的重新学习,使我最终完成了这次大作业。另外,在解决问题后,我感到我应该把课本当作字典来使用,在需要的时候就翻开查查,及时补充自己的不足。只有当需要的时候,我们才会认认真真的去弄懂一个知识点。
在能量守恒方面,我决定使用数组的方法,给初始单元所在数组赋予一定能量值,并采用了平均分配的方法,即一个单元在每一次循环中拿出它一半的能量平均分配给其周围八个单元,这样就有了能量的传递。在显示方面,我设置了一个阈值,只有当单元所含能量值大于该阈值,该单元才会显示,这样就有了新单元的生成。能量不断的被传递,伴随而来的便是不断地有新的单元显示和旧的单元消失。而每个单元类似于一个生命,这也就有了生命的变化。
五,
程向前:《可视化计算》
佚名:《生命游戏的假设》,文章地址:
并且,因为能力的关系,在用户界面方面,仍旧感觉有些呆板,不够生动,灵活。在运行过程中单元的形式很简单。但我觉得这是Raptor平台的一个不足之处,没有很好地界面图形编辑功能。另外,由于Raptor的基础设定,许多功能无法实现,例如,对一个数组整体归零,在Raptor中需要一步一步来,并没有类似于C语言中的static函数调用。
程亮,Raptor程序:《game of life》
梁雨聪,Raptor程序:《打砖块》
六,
七,
通过这次大作业的完成,让我明白了知识的摄取和理解需要不断地练习。在制作Raptor过程中,我遇到了一些我当时知识所无法解决的问题,但通过对同学作品的参考以及对书本的重新学习,使我最终完成了这次大作业。另外,在解决问题后,我感到我应该把课本当作字典来使用,在需要的时候就翻开查查,及时补充自己的不足。只有当需要的时候,我们才会认认真真的去弄懂一个知识点。
在能量守恒方面,我决定使用数组的方法,给初始单元所在数组赋予一定能量值,并采用了平均分配的方法,即一个单元在每一次循环中拿出它一半的能量平均分配给其周围八个单元,这样就有了能量的传递。在显示方面,我设置了一个阈值,只有当单元所含能量值大于该阈值,该单元才会显示,这样就有了新单元的生成。能量不断的被传递,伴随而来的便是不断地有新的单元显示和旧的单元消失。而每个单元类似于一个生命,这也就有了生命的变化。
五,
程向前:《可视化计算》
佚名:《生命游戏的假设》,文章地址:
RAPTOR流程图算法设计教程课件ch4
否则比较x2>=x3;
Step2:如果x1>=x3条件为true,则最大值为x1,否
则最大值为x3;
Step3:如果x2>=x3条件为true,则最大值为x2,否
则最大值为x3。
方法3:通盘比较
这种方法与第1种方法有些类似,所不同的是:将第
1个数值x1分别与另外两个数进行比较,即
(x1>=x2)and(x1>=x3),如果条件为true,则
“The year is leap year.”的
提示信息,否则输出“The
year isn’t leap year”。
通过上面的例题可以看出,利用选择结构
设计程序,它是根据条件成立与否来选择执
行不同操作的一种程序设计方法,这种结构
又称之为分支结构。
目录
4.1 选择结构应用的场合
4.2 用基本选择结构实现分支判断
本章小结
选择结构是结构化程序设计三种基本结构之
一。大多数程序设计都会遇到选择结构。选
择结构是对给定的条件进行判断,然后根据
判断结果来选择执行不同的操作。本章介绍
了在RAPTOR程序设计中选择结构,包括简
单分支结构和分支嵌套结构等程序设计方法。
顺序结构方式是无法解决的,还需要根
据某些“条件”来确定下一步如何做,如:
– 计算某年是否为闰年;
– 如果输入的三角形三条边,能够构成一
个三角形,则计算三角形的面积;
– 根据空气质量指数PM2.5,判断空气质
量的等级
4.1 选择结构应用的场合
【例4-1】从键盘上输入某年的年份,判断该年
Year是否为闰年。
是在程序中使用两个选择结构。在一个RAPTOR
Step2:如果x1>=x3条件为true,则最大值为x1,否
则最大值为x3;
Step3:如果x2>=x3条件为true,则最大值为x2,否
则最大值为x3。
方法3:通盘比较
这种方法与第1种方法有些类似,所不同的是:将第
1个数值x1分别与另外两个数进行比较,即
(x1>=x2)and(x1>=x3),如果条件为true,则
“The year is leap year.”的
提示信息,否则输出“The
year isn’t leap year”。
通过上面的例题可以看出,利用选择结构
设计程序,它是根据条件成立与否来选择执
行不同操作的一种程序设计方法,这种结构
又称之为分支结构。
目录
4.1 选择结构应用的场合
4.2 用基本选择结构实现分支判断
本章小结
选择结构是结构化程序设计三种基本结构之
一。大多数程序设计都会遇到选择结构。选
择结构是对给定的条件进行判断,然后根据
判断结果来选择执行不同的操作。本章介绍
了在RAPTOR程序设计中选择结构,包括简
单分支结构和分支嵌套结构等程序设计方法。
顺序结构方式是无法解决的,还需要根
据某些“条件”来确定下一步如何做,如:
– 计算某年是否为闰年;
– 如果输入的三角形三条边,能够构成一
个三角形,则计算三角形的面积;
– 根据空气质量指数PM2.5,判断空气质
量的等级
4.1 选择结构应用的场合
【例4-1】从键盘上输入某年的年份,判断该年
Year是否为闰年。
是在程序中使用两个选择结构。在一个RAPTOR
Ch06
C++语言 Java语言
tyutli@
6.2 程序设计语言的选择
程序设计语言具有心理、工程和技术三大特性。
1. 心理特性
程序体现的是编程者解决问题的思路,不同的 人有不同的解题思路,同一个人在不同心理状态下 的解题思路往往也会有所不同。所谓程序设计语言 的心理特性,就是指能够影响编程者心理的语言性 能。这种影响主要表现在以下三个方面:歧义性、 简洁性、局部性和顺序性。
软件工程
——原理、方法和工具 Ch.6 软件编码
tyutli@
第 6章 软件编码
6.1 程序设计语言的分类 6.2 程序设计语言的选择 6.3 程序设计风格
tyutli@
6.1 程序设计语言的分类
软件编码:把软件设计结果翻译成用某种程序
设计语言书写的程序。编码是对设计的进一步具 体化,所用程序设计语言的特点和风格对程序的 可靠性、可读性、可测试性和可维护性有深远的 影响。
tyutli@
6.1.2 结构化语言
20世纪70年代以来,随着结构化程序设计思想 的逐步发展,先后出现了一批常用的结构化语言。 作为基础语言的ALGOL语言是结构化语言的基 础,它衍生出了Pascal、C、 Ada等结构化语言。
tyutli@
6.1.3 面向对象的语言
tyutli@
6.3.2 数据说明
数据说明应遵循一些简单的原则 : 数据说明的次序应该标准化 当一个说明语句说明多个变量时,最好按字典顺
序排列
如果设计时便用了一个复杂的数据结构,则应加 注解说明用程序设计语言实现这个数据结构的方法 和特点
tyutli@
6.3.3 语句构造
tyutli@
6.3.4 输入输出
raptor程序设计案例教程-ch5
可以使用Set_Font_Size(Height_in_pixels) 命令更改绘制文本的大小
默认的文本高度为个8像素高,在两行文本 行之间的垂直方向默认间距约为12像素
图形案例
卡通图像
简单汉字的绘制
例5-2利用RAPTOR 图形函数画一个“ 囧”字
画老鼠
例5-3利用图形函 数生成一个可爱 的老鼠头像
对称原理具体到该题目:坐标系中(x1,y)关 于对称轴x=x0对称的坐标为(2x0-x1,y); (x1,y1)关于对称中心(x0,y0)的对称坐标为 (2x0-x1,2y0-y1)
对称图形的绘制技法
在RAPTOR中利用对称作图时,可以不必自 己计算数值,只需要直接写出算式即可, RAPTOR运行时将会自动计算
将已经绘制好的位图图片放入一款图像 (image)处理软件,通过软件来获取图片中 各个元素的坐标位置
但是,有时坐标系统的设置,两个软件系 统不一致,怎么?
Windows画图程序的坐标
Windows画图程序的坐标原点在左下角,而 RAPTOR的在左上角
卡通图片绘制要点-对称问题
从哆啦A梦的图片中我们可以看到,整个图 片基本以纵轴对称,所以在图形对称时, 利用对称原理作图会给绘制工作带来很大 的便利
矢量图可以用来表达数据曲线、物理装置、化 学、生物过程等的动态变化
位图则可以反映现实世界中的图像,并与程序 结合,产生栩栩如生的效果
位图实现蝴蝶飞翔的动画
例5-8:试在RAPTOR中以下10幅图像,在 RAPTOR下进行动态图形表达
那么如何在图形界面下编程,使得程序设 计进入一个千姿百态、丰富多彩的图形世 界呢?
RAPTOR与图形编程
RAPTOR的主要长项之一,是流程图设计的 方法在程序设计上的便利
默认的文本高度为个8像素高,在两行文本 行之间的垂直方向默认间距约为12像素
图形案例
卡通图像
简单汉字的绘制
例5-2利用RAPTOR 图形函数画一个“ 囧”字
画老鼠
例5-3利用图形函 数生成一个可爱 的老鼠头像
对称原理具体到该题目:坐标系中(x1,y)关 于对称轴x=x0对称的坐标为(2x0-x1,y); (x1,y1)关于对称中心(x0,y0)的对称坐标为 (2x0-x1,2y0-y1)
对称图形的绘制技法
在RAPTOR中利用对称作图时,可以不必自 己计算数值,只需要直接写出算式即可, RAPTOR运行时将会自动计算
将已经绘制好的位图图片放入一款图像 (image)处理软件,通过软件来获取图片中 各个元素的坐标位置
但是,有时坐标系统的设置,两个软件系 统不一致,怎么?
Windows画图程序的坐标
Windows画图程序的坐标原点在左下角,而 RAPTOR的在左上角
卡通图片绘制要点-对称问题
从哆啦A梦的图片中我们可以看到,整个图 片基本以纵轴对称,所以在图形对称时, 利用对称原理作图会给绘制工作带来很大 的便利
矢量图可以用来表达数据曲线、物理装置、化 学、生物过程等的动态变化
位图则可以反映现实世界中的图像,并与程序 结合,产生栩栩如生的效果
位图实现蝴蝶飞翔的动画
例5-8:试在RAPTOR中以下10幅图像,在 RAPTOR下进行动态图形表达
那么如何在图形界面下编程,使得程序设 计进入一个千姿百态、丰富多彩的图形世 界呢?
RAPTOR与图形编程
RAPTOR的主要长项之一,是流程图设计的 方法在程序设计上的便利
RAPTOR流程图编程.ppt
容易掌握 用RAPTOR可以进行算法设计和验证,从而
使初学者有可能理解和真正掌握“计算思 维”
7
RAPTOR基本程序环境
基本界面
F5:运行流程图 F10:单步执行
显示执行结果。
8
四种基本符号/语句
目的
符号
名称
说明
输入 处理 处理
输入语句 赋值语句
过程调用
输入数据给
一个变量
使用某些运
算来更改变 量的值
计算思维中的抽象完全超越物理的时空观, 并完全用符号来表示
抽象和自动化 行为将贯彻课程的始终
3
什么是可视化程序设计?
可视化(Visual)程序设计是一种全新的程 序设计方法,一般可视化程序主要是指编 译环境的可视化;
程序设计人员利用开发环境本身提供各种 可视化的控件、方法和属性等,像搭积木 一样构造出应用程序的各种界面
16
RAPTOR常量
RAPTOR定义了四个常量(Constant)
pi(圆周率) 定义为 3.1416 e (自然对数的底)定义为 2.7183 true /yes(布尔值: 真) 定义为 1 false/no(布尔值:假) 定义为 0
1)对话框
21
表达式
可以是单个值 可以是常量或变量和运算符的组合。
例如:
(1)x ← (3+9)/3 3+(9/3)
(2)x ←
22
表达式计算的“优先顺序”
1. 计算所有函数的值, 2. 计算括号中表达式, 3. 计算乘幂(^,**), 4. 从左到右,计算乘法和除法,最后 5. 从左到右,计算加法和减法。
25
内置运算符和函数
数学运算:
+,-,*,/,^,**(加、减、乘、除、乘方) rem, mod, sqrt(求余,开平方) log, abs, (对数,绝对值) ceiling, floor (向下取整,向上取整)
使初学者有可能理解和真正掌握“计算思 维”
7
RAPTOR基本程序环境
基本界面
F5:运行流程图 F10:单步执行
显示执行结果。
8
四种基本符号/语句
目的
符号
名称
说明
输入 处理 处理
输入语句 赋值语句
过程调用
输入数据给
一个变量
使用某些运
算来更改变 量的值
计算思维中的抽象完全超越物理的时空观, 并完全用符号来表示
抽象和自动化 行为将贯彻课程的始终
3
什么是可视化程序设计?
可视化(Visual)程序设计是一种全新的程 序设计方法,一般可视化程序主要是指编 译环境的可视化;
程序设计人员利用开发环境本身提供各种 可视化的控件、方法和属性等,像搭积木 一样构造出应用程序的各种界面
16
RAPTOR常量
RAPTOR定义了四个常量(Constant)
pi(圆周率) 定义为 3.1416 e (自然对数的底)定义为 2.7183 true /yes(布尔值: 真) 定义为 1 false/no(布尔值:假) 定义为 0
1)对话框
21
表达式
可以是单个值 可以是常量或变量和运算符的组合。
例如:
(1)x ← (3+9)/3 3+(9/3)
(2)x ←
22
表达式计算的“优先顺序”
1. 计算所有函数的值, 2. 计算括号中表达式, 3. 计算乘幂(^,**), 4. 从左到右,计算乘法和除法,最后 5. 从左到右,计算加法和减法。
25
内置运算符和函数
数学运算:
+,-,*,/,^,**(加、减、乘、除、乘方) rem, mod, sqrt(求余,开平方) log, abs, (对数,绝对值) ceiling, floor (向下取整,向上取整)
ch6 函数与模块化程序设计(部分)
26
27
6.4 函数调用
28
函数调用的含义:
跳转到函数名标识的代码段第一条语句开始执行 系统为该函数的全部形参和局部变量分配存储单元 (1) main函数(自定义函数) 第一个被操作系统调用执行的函数 语法上允许被其它自定义函数调用, 但不提倡 (2) 除main函数外的其他自定义函数 允许被main函数或其他自定义函数调用 允许被函数自身调用(递归调用) (3) 库函数 允许被main函数或其他自定义函数调用
16
4. 形式参数声明(函数接口) 每个形式参数声明的格式: const 存储类型 数据类型 形式参数名 (1) 形式参数名 按标识符命名规则取名 不能与函数体内局部变量同名 不能在一个函数中声明多个同名形式参数 无参函数:无形式参数声明,或有一个void 例: void f( ) 或 void f(void) { printf("Hello! "); } (2) 数据类型 可以是:四种基本类型、指针类型、结构类型、 联合类型、枚举类型
编码阶段: 1) 模块定义 • 定义模块名称和接口 • 用三种基本算法结构构造实现功能的代码段 要求:模块之间通过接口传递数据 模块之间没有数据依赖性 2) 模块调用与返回 要求:上层模块调用下层模块 下层模块执行完毕后返回上层模块
6.1.2 C语言函数概述 1. 函数的主要作用——实现模块化程序
(1) 函数定义——模块定义 例: int max( int x, int y) 函数头部 { 函数体开始 int z; if(x>y) z=x; else z=y; return z; } 函数体结束 函数头部包括: – 模块名称( 函数名 ) – 模块接口( 形参个数与类型, 返回值与类型) 函数体包括:实现模块功能的声明序列和语句序列
RAPTOR流程图算法设计教程课件ch5
有几种呢?
算法1:直接使用前面所学的顺序结构知识写出算
式sum=1+2+3+4+5+…+10的累加和,如图5-1所示。
但要是累加到1000项呢,就需要写得很长且非常
繁琐,这不适合编程。
算法2:要求1+2+3+….+10的累加和,可以分解成几个
步骤:
Step1:在一个数都没有加时,最初的和肯定是0,就
得到下面方程组:
+ + = 100
ቐ
5 + 3 + = 100
3
这是一个不定方程组,有多组解,用代数方法很难求解,
一般采用枚举法求解这类问题。
方法1:根据题意,共买100只鸡,那么确定、、的取
值范围均小于等于100,枚举对象的筛选条件为三种鸡的
总数 + + = 100和买鸡用去的钱5 + 3
学习目标
• 掌握循环的概念及实现机理
• 掌握循环结构设计的方法
• 学会用循环结构解决实际问题
目录
5.1 RAPTOR循环结构
5.2用RAPTOR循环结构实现重复操作
5.3 循环结构程序设计应用举例
RAPTOR函
5.1 RAPTOR循环结构
5.1.1
为什么使用
循环结构
5.1.2
RAPTOR的
循环结构
5.1.1 为什么使用循环结构
这样的例子很多,它们都是重复执行某些操作,
这种重复执行就是循环。
【例5-1】求1+2+3+…+10的累加和。
问题分析:这是一个简单求自然数1~10的累加和
算法1:直接使用前面所学的顺序结构知识写出算
式sum=1+2+3+4+5+…+10的累加和,如图5-1所示。
但要是累加到1000项呢,就需要写得很长且非常
繁琐,这不适合编程。
算法2:要求1+2+3+….+10的累加和,可以分解成几个
步骤:
Step1:在一个数都没有加时,最初的和肯定是0,就
得到下面方程组:
+ + = 100
ቐ
5 + 3 + = 100
3
这是一个不定方程组,有多组解,用代数方法很难求解,
一般采用枚举法求解这类问题。
方法1:根据题意,共买100只鸡,那么确定、、的取
值范围均小于等于100,枚举对象的筛选条件为三种鸡的
总数 + + = 100和买鸡用去的钱5 + 3
学习目标
• 掌握循环的概念及实现机理
• 掌握循环结构设计的方法
• 学会用循环结构解决实际问题
目录
5.1 RAPTOR循环结构
5.2用RAPTOR循环结构实现重复操作
5.3 循环结构程序设计应用举例
RAPTOR函
5.1 RAPTOR循环结构
5.1.1
为什么使用
循环结构
5.1.2
RAPTOR的
循环结构
5.1.1 为什么使用循环结构
这样的例子很多,它们都是重复执行某些操作,
这种重复执行就是循环。
【例5-1】求1+2+3+…+10的累加和。
问题分析:这是一个简单求自然数1~10的累加和
Raptor编程简介
变量 ←表达式 ( Variable ←
Expressi on )
例如,图 1 -7 对话框创建语句显示为:
一个赋值语句只能改变一个变量的值,也就 是箭头左边所指的变量。如果这个变量在先前的 语句中未曾出现过,则 r apto r 会创建一个新的变 量。如果这个变量在先前的语句已经出现,那么 先前的的值就将为目前所执行的计算所得的值所 取代。而位于箭头右侧(即表达式)中的变量的 值则不会被赋值语句改变。 图 1-7 赋值语句的编辑对话框
1.1Raptor 程序结构
R apto r 程序是一组连接的符号,表示要执行的一系列动作。符号间 的连接箭头确定所有操作的执行顺序。 Ra ptor 程序执行时,从开始 ( Sta rt )符号起步,并按照箭头所指方向执行程序。 R apto r 程序执行 到的结束( End )符号时停止。最小的 Rap tor 程序(什么也不做),如 图 1-1 所示。在开始和结束的符号之间插入一系列 R apto r 语句 / 符号, 就可以创建有意义的 Rap tor 程序。 图1-1 开始和结束符号
2 of 43
程序员应给予所有的变量有意义的和具有描述性的名称。变量名应该与该变量在程序 中的作用有关。变量名必须以字母开头,可以包含字母、数字、下划线(但不可以有空格 或其他特殊字符)。如果一个变量名中包含多个单词,两个单词间用下划线字符分隔,这 样变量名则更具有可读性。 表 1-3 显示了一些好的、差的和非法的变量名的例子。 表 1-3 变量名实例 好的变量名 tax_ ra te s a les_ tax d is tan ce_ in_ mile s mp g 差的变量名 a ( 没有描述 ) mile s pe rho ur ( 添加下划线 ) my4 to ( 没有描述 ) 非法的变量名 4 sa le ( 不可以字母开头 ) s a les tax ( 包括空格 ) s a les$ ( 包括无效字符 )
raptor程序设计案例教程-ch3
例如程序员可 以将二维数组, 设计成为类似 像数据库那样 的一种记录式 结构
使用数组编排成绩表
从键盘输入3个学生的信息,这些信息包括 :学号、姓名、英语、计算机、数学、总 分、平均分:
其中总分和平均分不需要输入,通过程序自动 计算
最后按总分从高到低依次输入3个学生的相关信 息
成绩表流程图
Main子图
成绩表流程图
Init子图
成绩表流程图
Sort子图
成绩表流程图
Swap子图
成绩表流程图
Display子图
数组应用注意事项
在RAPTOR中,一旦某个变量名被用做数组 变量,就不允许存在一个同名的非数组变 量
RAPTOR数组可以在算法运行过程中动态增 加数组元素;但不可以将一个一维数组在 算法运行中扩展成二维数组
RAPTOR数组的特点
下标要紧跟在数组名后,而且用方括号括 起来(不能用其他括号);
下标可以是常量,变量或表达式,但其值 必须是整数(如果是小数将四舍五入);
下标必须为一段连续的整数,其最小值成 为下界,其最大值成为上界。不加说明时 下界值默认为1。
RAPTOR数组的最大元素个数在10000个左右 ,建议不要超此上限。
计算某个班级学员的一个学期4门课程的平 均成绩。
应该如何保存参与计算的课程成绩 可以分别使用:computer[],math[],
physica[],history[],而每个同学的编号, 可以用做数组的下标
多种数据类型元素共存的数组
RAPTOR并不强 制每个数组的 元素必须具备 相同的数据类 型
数组变量的应用
数组变量的 好处来自数 组符号允许 RAPTOR在方 括号内执行 数学计算
利用数组编写程序,求 1+3+……+99的值
使用数组编排成绩表
从键盘输入3个学生的信息,这些信息包括 :学号、姓名、英语、计算机、数学、总 分、平均分:
其中总分和平均分不需要输入,通过程序自动 计算
最后按总分从高到低依次输入3个学生的相关信 息
成绩表流程图
Main子图
成绩表流程图
Init子图
成绩表流程图
Sort子图
成绩表流程图
Swap子图
成绩表流程图
Display子图
数组应用注意事项
在RAPTOR中,一旦某个变量名被用做数组 变量,就不允许存在一个同名的非数组变 量
RAPTOR数组可以在算法运行过程中动态增 加数组元素;但不可以将一个一维数组在 算法运行中扩展成二维数组
RAPTOR数组的特点
下标要紧跟在数组名后,而且用方括号括 起来(不能用其他括号);
下标可以是常量,变量或表达式,但其值 必须是整数(如果是小数将四舍五入);
下标必须为一段连续的整数,其最小值成 为下界,其最大值成为上界。不加说明时 下界值默认为1。
RAPTOR数组的最大元素个数在10000个左右 ,建议不要超此上限。
计算某个班级学员的一个学期4门课程的平 均成绩。
应该如何保存参与计算的课程成绩 可以分别使用:computer[],math[],
physica[],history[],而每个同学的编号, 可以用做数组的下标
多种数据类型元素共存的数组
RAPTOR并不强 制每个数组的 元素必须具备 相同的数据类 型
数组变量的应用
数组变量的 好处来自数 组符号允许 RAPTOR在方 括号内执行 数学计算
利用数组编写程序,求 1+3+……+99的值
RAPTOR流程图算法设计教程课件ch6
学习目标
• 了解数组的概念和特点 • 掌握数组定义和使用 • 应用数组处理批量数据
目录
6.1 数组的引入 6.2 一维数组及应用 6.3 二维数组及应用 6.4 字符数组及应用 6.5 数组的其他应用方式
6.1 数组的引入
6.1.1 数组的概念
6.1.2 数组的特点
6.1.1 数组的概念
• 数组 将若干个数据按顺序存储在一起形成的一组 数据集合就称为数组。 • 数组名 用一个统一的名字标识这组数据,这个名字 称为数组名。
6.2 一维数组及应用
6.2.1 一维数组的
创建
6.2.3 一维数组的
应用
6.2.2 一维数组的
引用
6.2.3 一维数组的应用
• 排序问题 所谓排序就是将一组数据的值按从小到大 (或从大到小)的顺序重新排列。 • 基本排序方法 冒泡排序、插入排序、选择排序、交换排序 等
冒泡排序
【例6-3】从键盘上输入某班10名学生的计算机课 程考试成绩,将该成绩按照从高到低的顺序排列 并输出。 冒泡排序的基本思想:从数组的第1个元素开始, 依次比较相邻的两个数组元素的大小,如果发现 两个数组元素的次序相反时就进行交换,如此重 复地进行,直到比较没有反序的数组元素为止。
【例6-14】学生类型
假设有5名学生信息,包括姓名和3门课程的成绩,求每个 学生课程成绩总分,并显示每个学生信息。
问题分析:程序中每个学生信息都需要从键盘输入,为了 减少输入工作量,仅选用5个学生作为对象。由于每个学生 信息的数据类型不同,选择二维数组student存放学生的相 关信息。数组中第1下标表示学生,第2个下标表示该学生 的信息,例如:student[2,3]表示第2个学生的第2门课程的 成绩。学生的总分可以用3门课的成绩相加求得。
• 了解数组的概念和特点 • 掌握数组定义和使用 • 应用数组处理批量数据
目录
6.1 数组的引入 6.2 一维数组及应用 6.3 二维数组及应用 6.4 字符数组及应用 6.5 数组的其他应用方式
6.1 数组的引入
6.1.1 数组的概念
6.1.2 数组的特点
6.1.1 数组的概念
• 数组 将若干个数据按顺序存储在一起形成的一组 数据集合就称为数组。 • 数组名 用一个统一的名字标识这组数据,这个名字 称为数组名。
6.2 一维数组及应用
6.2.1 一维数组的
创建
6.2.3 一维数组的
应用
6.2.2 一维数组的
引用
6.2.3 一维数组的应用
• 排序问题 所谓排序就是将一组数据的值按从小到大 (或从大到小)的顺序重新排列。 • 基本排序方法 冒泡排序、插入排序、选择排序、交换排序 等
冒泡排序
【例6-3】从键盘上输入某班10名学生的计算机课 程考试成绩,将该成绩按照从高到低的顺序排列 并输出。 冒泡排序的基本思想:从数组的第1个元素开始, 依次比较相邻的两个数组元素的大小,如果发现 两个数组元素的次序相反时就进行交换,如此重 复地进行,直到比较没有反序的数组元素为止。
【例6-14】学生类型
假设有5名学生信息,包括姓名和3门课程的成绩,求每个 学生课程成绩总分,并显示每个学生信息。
问题分析:程序中每个学生信息都需要从键盘输入,为了 减少输入工作量,仅选用5个学生作为对象。由于每个学生 信息的数据类型不同,选择二维数组student存放学生的相 关信息。数组中第1下标表示学生,第2个下标表示该学生 的信息,例如:student[2,3]表示第2个学生的第2门课程的 成绩。学生的总分可以用3门课的成绩相加求得。
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
阻塞性键盘输入函数
(1) Wait_For_Key
等待击键
(2) Character_variable Get_Key
等待并取得用户输入的字符键值,返回用户输 入的字符键给某个变量
(3) String_variable Get_Key_String
取得用户输入的特殊键键值,如“home”
+鼠标位置的计算非常关键,这里使用了圆 的标准方程“(x-a) 2+(y-b)2=r2”(在算法中的 表达为(x-a)^2+(y-125)^2<=2500的决策语句 )进行判断
-执行效率较低 -一旦出错,出错信息没有清除功能
一个矩形按钮输入程序的设计
Main子图
负责用户输入全局 控制
绘制按钮画面( drawbuttons子图)
第6章 视窗交互程序设计
《RAPTOR程序设计案例教程》
学习目标
如何在图形界面中设置按钮? 如何在图形界面中设置键盘响应? 如何在图形界面下接收字符串输入? 如何在图形界面下布点并连线?
视窗交互程序设计基础
程序设计中,用户与图形程序的互动形式 很多,如用户点击鼠标或者按键盘上的某 个键,就会触发相应的事件
需求与设计
1.“开始”和“结束”按钮如何产生? 2. 如何获取鼠标点击位置? 3.鼠标点击点坐标的判断。 4.相关文本如何显示。
鼠标输入的实现案例
鼠标输入视线中的资源
位图图片装载功能,分别载入标识有“开始”和 “结束”的两张图片
借助Get_Mouse_Button(Which_Button,X,Y)获取鼠 标点击位置,并用Which_Button指明点击的是哪 个键,用X和Y来接收鼠标点击点的坐标
检测用户点击( detection子图)
最后显示用户的 输入结果
create子图
打开和定义窗口大小 循环绘制4个按钮 提示用户输入
Detection子图
子图用循环检测点击 循环包含两个过程:判
断点击区域和显示点击 出错 子图设计中,用户如果 不选中某个按钮,实际 上不能退出子图
按钮输入程序的设计优缺点
粗略的坐标判定方法是以两个图片所在的区域位 置来实现
显示文本可以使用前面提到的Display_Text()过程来 实现
图形视窗中输入命令分类
阻塞型输入与非阻塞型输入。 阻塞型输入:
可以暂停程序运行,等待用户输入
非阻塞型输入:
在执行后可以得到有关鼠标或键盘的当前信息 ,但不暂停执行中的程序
要在RAPTOR中实现这样的交互,就要用到 与图形窗口相关的驱动事件,具体来说, 将需要使用一些输入函数或过程来完成
注意视窗交互包括鼠标和键盘两种输入设 备!
鼠标输入的案例
例6-1:在图形窗口中,点击屏幕上的“开始”按 钮,屏幕显示“Let’s begin!”,点击“结束”按钮 ,屏幕显示“Game is over!”,如果点到屏幕上的 其它地方,则显示“Out of range!”
个圆点并形成必要的 连接
在图形视窗中画点并自动连线
设计的基本思路:
手动接受用户绘制的点;
按照定义,使用专门语句 完成部分不规则的边连接 ,使用循环完成部分有规 则的连接;
输出所有点的位置坐标, 有利于将来将点的位置保 存到数组,并从数组中恢 复这个图的同构图。
Drawpoints子图
(随意点击)绘图的效果
阻塞性鼠标输入函数
Wait_For_Mouse_Button(Which_Button)
等待按下指定鼠标按钮
Get_Mouse_Button(Which_Button, X, Y)
等待按下鼠标按钮并返回鼠标指针的坐标
非阻塞型鼠标输入函数
(1) x Get_Mouse_X
获得鼠标光标位置的X坐标值
Drawpoints子图
两种记录圆点位置的方法 ,其中s字符串可以直接输 出到文件中
图论图形中的边的绘制(一)
按照预定的要 求绘制无规律 的两点之间的 边
图论图形中的边的绘制(二)
使用循环方式绘制 符合某种规律的边
等待用户选择 (Get_Mouse_Button)
用户输入提示 检测用户点击(
detection子图)
drawbuttons子图
detection子图
子图用分支处 理点击
左侧分支判断 点击区域;右 侧表示出错
子图设计中, 无论选择对错 ,一律退出子 图
在图形视窗中画点并自动连线
例6-3 通过图形界面输入六
(2) y Get_Mouse_Y
获得鼠标光标位置的Y坐标值。
(3) Mouse_Button_Down(Which_Button)
是否有一个指定鼠标按钮按下?
(4) Mouse_Button_Released(Which_Button)
是否有一个鼠标按钮被释放
视窗交互需要考虑的问题
设计考虑
为完成这个设计,将程序分为三个子图, main子图负责用户输入和全局控制;
create子图进行用户界面的设计; detection子图负责用户输入结果的判断和出
错提示
按钮程序:maim子图
负责用户输入全 局控制
绘制按钮画面( creat子图)
等待用户选择 (Get_Mouse_Button)
如何提示用户进行输入? 如何判断用户是否已经输入? 采用阻塞型输入和非阻塞型输入? 采用鼠标还是键盘进行输入? 如果用户输入有错,例如按下非输入提示
的键或者点击了输入区域以外的区域,程 序是否需要进行提示?
RAPTOR视窗中的按钮设计
例6-2 设计要求,设计4个圆形 按钮,分别标示上数字, 并在视窗界面上提示用户 使用鼠标点击其中任何一 个按钮,如果点击的区域 在这四个按钮区域之外, 程序会提示出错信息,并 提示再次输入
阻塞性键盘输入函数
比较: Get_Key Get_Key_String
应用后的效果
非阻塞性键盘输入函数
Key_Hit 观察用户是否有击键。自上次调用Get_Key
后,如果曾有键按下,函数返回布尔值true 该函数可以使用在某个不间断执行的程序
或循环过程中,只要在循环过程中,执行 到Key_Hit语句,才探测是否发生过用户击 键的事件,从而决定是否继续执行程序或 退出循环