raptor程序设计案例教程-ch8
C# Ch8
![C# Ch8](https://img.taocdn.com/s3/m/14657412783e0912a2162ac7.png)
2020/1/10
电子科大成都学院精品课程《Visual C# .Net程序设计》
9
1. 流的基表示把数据从流传输到某种数据结构中,例
如输出到字节数组中; 写入(write):表示把数据从某种数据结构传输到流中,
注意,该控件只能选择文件系统中的文件夹,不能选择虚拟 文件夹。
2. 常用属性:Description、RootFolder、SelectedPath、 ShowNewFolderButton等
3. 常用方法:Reset、ShowDialog等
4. 运行机制(模态对话框 )
在执行ShowDialog方法时,应用程序的剩余部分将被阻止 运行,直到用户单击了对话框中的“确定”或“取消”按钮。 最后ShowDialog方法将返回一个DialogResult型的枚举值, 如果值为DialogResult.OK,则可以通过SelectedPath属性 获得用户所选定的文件夹,否则SelectedPath属性为空字 符串。
2020/1/10
电子科大成都学院精品课程《Visual C# .Net程序设计》
2
8.1 文件操作概述
一、驱动器 二、目录 三、文件 四、路径
2020/1/10
电子科大成都学院精品课程《Visual C# .Net程序设计》
返回
3
一、驱动器
DriveInfo类 作用:确定有关驱动器的信息,包括驱动器盘符、驱 动器类型、驱动器上的可用空间等 成员:DriveFormat、DriveType、Name、TotalSize、 TotalFreeSpace,GetDrives
ReadToEnd TextWriter类
raptor程序设计案例教程-ch6
![raptor程序设计案例教程-ch6](https://img.taocdn.com/s3/m/bed0ff358762caaedc33d409.png)
阻塞性键盘输入函数
(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来接收鼠标点击点的坐标
raptor程序设计案例教程-ch5
![raptor程序设计案例教程-ch5](https://img.taocdn.com/s3/m/dee386b979563c1ec4da710e.png)
默认的文本高度为个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程序设计案例教程-ch7
![raptor程序设计案例教程-ch7](https://img.taocdn.com/s3/m/e0d4dba26c175f0e7dd13709.png)
《RAPTOR程序设计案例教程》
学习目标
何为工程化计算? 计算的原始数据从何而来? 计算的结果可以在哪里输出? 伪随机数的重要性和用途。
何为工程化计算?
对于很多实用的工程软件来说,它所需要 输入的数据量比较大,有时候需要借助大 量的输入数据完成科学计算,在这种情况 下,依靠前面所说的通过用户键盘输入显 然既费时费力,又不太可能实现
由于字符串可以当成是元素全为字符的数 组,所以每次读入一行字符串后,使用循 环语句将每个字符的ascii加1即可
文档的加密与解密
Main子图
加密与解密
加密与解密 Cipher Vs. decipher
加密解密中的文件内容
图形界面中的输入输出
例7-5 设计一个视窗界面下的
加法程序,要求在图形 界面下列出算式,并使 用视窗交互功能完成加 法数据的输入
输出重定向结束
经过成功调用Redirect_Output函数,程序将 其计算结果输出到指定的文件。在文件输 出的完成后,需要重新设置RAPTOR环境, 使后续的输出内容继续写到其输出主控制 台,需要重新调用Redirect_Output函数,这 个时候用False(No)作为参数
Redirect_Output(False)
分析与思考
图形界面下如何接收来自键盘的单个输入 数字?
如何将来自键盘的多个数字输入组合成一 个完整的参与加法运算的数?
两个加数如何结束输入? 为了使程序界面更为美观,整个符号的显
示需要对该符号区域做居中处理。
模块设计
Main子图控制整个过程; Init子图负责初始化视窗和加数; Screen_input子程序负责从键盘接受
Redirect_Output("file.csv") Redirect_Output("C:\User\cxq\CS101\datafile")
scratch游戏设计教程(内附20个实例制作方法)
![scratch游戏设计教程(内附20个实例制作方法)](https://img.taocdn.com/s3/m/752a15e56137ee06eff9184d.png)
前言Scratch 是由美国麻省理工学院媒体实验室终身幼稚园小组研发的一种图形化的编程语言,它可以让儿童青少年轻松地创建自己的互动故事、动画、游戏、音乐和艺术。
Scratch 的最大优点是将编程变得如搭积木那样容易,采用拖曳、组合的方式来设计程序,取代了传统的打字,免除命令输入错误的困扰。
而且,它也是“可视化”的程序语言,能轻松的把我们创意思考“显示”出来。
Scratch 是为了青少年儿童发展21 世纪所需要的技能而设计的。
当青少年创造并分享他们的作品时,除了可以学到数学与电脑的知识,同时也能发展系统思考能力、团队协作能力和创新力。
Scratch 是一个不需要支付任何费用的自由软件,已翻译成各国文字方便世界各地的儿童青少年使用。
而且它还是跨平台的,无论你的电脑操作系统是微软的Windows、苹果的Mac OS,还是自由免费的操作系统Linux,都可以安装使用。
教程内容的设计充分考虑到儿童青少年的兴趣和思维发展的特点来进行设置,由浅入深,由易到难,由简单到复杂,引导兴趣,循序渐进,逐步掌握SCRATCH语言的同时,理解程序设计的基本思路,掌握程序设计的基本方法。
为了便于更好的掌握每节的重点,设置了“学习目标”环节,将本节重点提出,便于学习过程中有意识的加强理解认知。
最后还设置“拓展训练”环节,强化“学习目标”,激发创造力,发展思维。
本教程所用实例,层次安排上尽可能循序渐进,符合儿童青少年的认知发展规律,不强行拔高,逐层深入。
学习每节所需时间也都不长,使学员在轻松的氛围中完成学习过程中,学到了知识,提升了能力,增强了成就感,提高了兴趣。
这也应该是学习SCRATCH的根本目标。
当然,书中一定会有瑕疵,希望大家在使用过程中发现,给我们指出,我们将在后续工作中加以改正。
附:教程中所涉实例及素材可到下列位置下载。
https:///cMsWqZKPyZHaM访问密码46a42016年7月Scratch程序设计教程目录第一节认识SCRATCH------------------------------------------1 第二节淘气的小精灵-----------------------------------------6 第三节游泳的火柴人-----------------------------------------8 第四节躲开鲨鱼---------------------------------------------11 第五节多彩的舞台----------------------------------------14 第六节七色花--------------------------------------------------17 第七节画多边形----------------------------------------------20 第八节时钟--------------------------------------------------25 第九节打猎---------------------------------------------------29 第十节打靶--------------------------------------------------34 第十一节贪吃鱼------------------------------------------38 第十二节飞机大战-----------------------------------------41 第十三节弹力球---------------------------------------------46 第十四节迷宫-------------------------------------------------48 第十五节加法练习器-------------------------------------50 第十六节胜利狂欢---------------------------------------55 附录一:趣味小程序1、瞬移--------------------------------------------------------582、前空翻---------------------------------------------------593、弹跳的皮球------------------------------------------------604、绘制花-----------------------------------------------------615、跳舞的女孩----------------------------------------------62- 1 -第一节 认识SCRATCH一、学习目标:1、认识SCRATCH 界面分布。
ch8图形应用程序设计
![ch8图形应用程序设计](https://img.taocdn.com/s3/m/52dae5711711cc7931b716d0.png)
Windows 程序设计Windows Programming数学实验与软件设计中心阮宗利图形应用程序设计Ch8主要内容GDI+概述坐标系统GDI+基本绘图方法及图形绘制在应用程序中建立画笔、画刷绘图应用1 GDI+概述GDI+(Graphics Device Interface Plus 图形设备接口)是中实现图形、图像及文字处理的Win32API。
使用GDI+ 可以创建图形、绘制文本以及将图形图像作为对象来操作,在Windows 窗体和控件上显示图形图像。
GDI+ 的托管类接口包含大约60 个类、50 个枚举和8 个结构。
Graphics 类是GDI+ 的核心功能,它是实际绘制直线、曲线、图形、图像和文本的类。
所有GDI+的功能都包含在VC++系统的System、System. Drawing、System. Drawing. Image、System.Drawing.Darwing2D和System. Drawing. Text等命名空间的各个类中。
C++通过这些命名空间所提供的功能进行图形设计和图形处理。
例如,System. Drawing 名称空间提供了对GDI+ 基本图形功能的访问,System.Drawing.Drawing2D、System.Drawing.Imaging以及System.Drawing.Text 命名空间中提供了更高级的图形、图像及文字处理功能。
VC++图形图像处理中常调用命名空间:•System包括常用基础数据类型和20多个子命名空间。
•System::Drawing提供对GDI+ 基本图形功能的访问。
•System::Drawing::Drawing2D提供高级的二维和向量图形功能。
此命名空间包括渐变画笔、Matrix 类和GraphicsPath类。
•System::Drawing::Imaging提供高级的GDI+ 图像处理功能。
•System::Windows::Forms提供窗口程序设计所需的组件在进行图形设计或图形处理时,必须首先创建一个Graphics 对象,这相当于建立一块画布,有了画布,才可以调用其方法(DrawLine、DrawImage、DrawString等)进行绘图。
上海交通大学 python程序设计课程 Ch8-1 ppt课件
![上海交通大学 python程序设计课程 Ch8-1 ppt课件](https://img.taocdn.com/s3/m/19bfa46a6c175f0e7cd137a8.png)
15
常用构件:按钮
• 类:Button
btn = Button(窗口,选项设置) – text:按钮上的文本 – command:点击按钮时要执行的命令
需要提供一个函数或方法名f
注意不是函数调用f()
– height,width – fg,bg – relief:RAISED/FLAT/SUNKEN/GROOVE/ – state:NORMAL/ACTIVE/DISABLED
27
Grid布局管理器
• Grid将窗口或框架视为由行和列构成的二维表 格,并将构件放入行列交叉处的单元格中
– 根据构件大小自动调整行列尺寸:列宽由该列中最宽 构件决定,行高由该行最高的构件决定.
• 构件都有grid()方法
– 选项row和column指定行列编号
从0开始编号 row的缺省值为当前下一空行,column的缺省值总为0
–程序有一个事件循环
事件监测
OS功能,由工具包提供支持
事件处理
应用程序员只需编写自己的事件处理程序
6
GUI编程
• 需要GUI工具包
– 将低层细节对程序员隐藏 – 跨平台 – Python标准库:Tkinter
• GUI编程
– 设计界面外观 – 为每个构件定义事件处理代码 – 建立启动初始化和总控部分
23
常用构件:顶层窗口
• 类Toplevel
– 顶层窗口是根窗口的子构件,但有一定的独 立性:可以移动,改变大小.
– 根窗口只有一个,顶层窗口可有多个.
• 例如
>>> root = Tk() >>> Label(root,text="hello").pack() >>> top = Toplevel() >>> Label(top,text="world").pack() >>> top.title('hello toplevel') >>> top.geometry('400x300')
RAPTOR流程图算法设计教程课件ch5
![RAPTOR流程图算法设计教程课件ch5](https://img.taocdn.com/s3/m/e1287b5753d380eb6294dd88d0d233d4b14e3fd6.png)
算法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程序设计例题参考答案
![RAPTOR程序设计例题参考答案](https://img.taocdn.com/s3/m/f7c0e0aa988fcc22bcd126fff705cc1754275f73.png)
RAPTOR程序设计例题参考答案RAPTOR程序设计是一种基于流程图的初级编程教学工具,通过使用流程图来解决编程问题。
下面是对RAPTOR程序设计的一个例题的参考答案:题目描述:设计一个RAPTOR程序,计算并输出一个学生的平均成绩。
学生的成绩由十门课程的分数组成,分数均为整数,分数的范围是0到100。
程序需要从用户输入学生的十门课程成绩,然后计算并输出该学生的平均成绩。
程序设计思路:1. 提示用户输入十门课程的成绩。
2. 使用循环结构,将用户输入的成绩逐个累加到一个总和变量中。
3. 在循环结束后,将总和变量除以10,得到平均成绩。
4. 输出平均成绩。
程序设计步骤:1. 开始:程序开始。
2. 初始化变量:定义并初始化一个变量sum用于保存总和,定义一个变量grade用于保存用户输入的成绩,定义一个变量average用于保存平均成绩。
3. 读入成绩:提示用户输入十门课程的成绩,将成绩保存到变量grade中。
4. 计算总和:使用循环结构,将变量grade的值累加到变量sum中,循环执行10次。
5. 计算平均成绩:将变量sum除以10,将结果保存到变量average 中。
6. 输出结果:输出变量average的值,作为学生的平均成绩。
7. 结束:程序结束。
程序设计代码:1. 开始:2. 初始化变量:- sum = 0- grade = 0- average = 03. 读入成绩:- 提示用户输入十门课程的成绩- for i = 1 to 10 do- 读取用户输入的成绩,保存到变量grade中- sum = sum + grade- end for4. 计算平均成绩:- average = sum / 105. 输出结果:- 输出变量average的值,作为学生的平均成绩6. 结束:这个例题中使用了循环结构来处理多门课程的成绩,并使用累加的方式计算总和。
最后通过除以总门数来计算平均成绩,并将结果输出。
Raptor编程简介
![Raptor编程简介](https://img.taocdn.com/s3/m/e2e964fc770bf78a652954d1.png)
变量 ←表达式 ( 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程序设计教程ppt课件
![RAPTOR程序设计教程ppt课件](https://img.taocdn.com/s3/m/829947636529647d26285279.png)
17
精选版课件ppt
输出语句
执行输出语句将在主控 (Master Console)窗口显示 输出结果
输出的结果可以使用或不使用 换行操作
其中"The Number Is:"是输出
语句的提示部分,为文本型数
据两端加双引号,+ 表示连接
后面的内容,n 两端无双引号
表示它是一个变量。End
量X
8
精选版课件ppt
RAPTOR变量值的设置
基本原则:
任何变量在被引用前必须存在并被赋值 变量的类型由最初的赋值语句所给的数据决定
设置方法
通过输入语句赋值 通过赋值语句的中的公式运算后赋值 通过调用过程的返回值赋值
9
精选版课件ppt
RAPTOR数据类型
数值(Number):
如12,567,-4,3.1415,0.000371
菱形符号中的表达式结果为“No”,则执行“No” 的分支,这将导致循环语句和重复
要重复执行的语句可以放在菱形符号上方或下方
循环控制结构在英语环境中被称为“While-do” 结构
34
精选版课件ppt
循环测试
在循环语句中,究竟是先计 算后测试,还是先测试后计 算,或者在计算的过程中间 进行测试?
14
精选版课件ppt
给程序增加语句符号
在“start” 和“End” 之间的箭头 上点鼠标右 键,在快捷 菜单可以添 加语句符号。
15
精选版课件ppt
输入(Input)语句
输入语句的编辑 (Edit)对话框
提示部分 变量部分
16
精选版课件ppt
输入(Input)语句
输入语句在流 程图中显示的 状态
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
解题思路
数据结构自然是采用数组,并且是数据为1 至N的随机数组
所以程序首先要生成一个N元的全排列。要 生成N元的全排列,需要N次生成随机数, 但是每一次都要与之前的不重复
可以使用另一个布尔型数组存储各个数是否被 使用过
解题思路
使用着色的方法可以让这个过程变得直观 ,所以可以给数据着色,然后在变更某个 数据的时候改变它的颜色,可以做出一种 不错的效果
那么如何确定子边的属性呢?
分析与设计思路
假设父边的阶数为level,边长为length,坐标为(x, y),方向为orientation
则子边的阶数显然是level-1,子边的边长则是 length÷3。
再看方向,①号边和④号边的方向与父边相同, 为orientation,②号边的方向为orientation+1,而 ③号边的方向为orientation-1
第8章 综合应用
《RAPTOR程序设计案例教程》
本章案例
科赫雪花的原理及简单绘制 可视化排序方法如何设计? 图形界面下如何输入无向图? 如何用RAPTOR设计画图程序?
科赫雪花的原理及简单绘制
将一条线段三等分,先以中 间的一段为底边作一个正三 角形,然后再去掉这个正三 角形的底边, 于是我们可以 得到一条由4条长度为原线段 长度三分之一的线段构成的 折线
一种较为方便的方法是使 用另一个一维数组used[i] 来表示数字i是否已经被 使用过
这样在生成第二个数的时 候,检查第二个数是否被 使用过,如果已经被使用 过了,那么就重新生成一 个新的随机数直到出现没 有使用过的为止
数组的排序-冒泡
Bubble_Sort子程序
数组的排序-插入
Insertion子程序
需要知道它的位置。用边的中点可以确定 它的位置,也就是图中的黑点。
边的长度定义为从图最左端到最右端的线 段长
分析与设计思路
边还有一个特性:方向。 定义基本图形 的方向为从左到右的向量与
水平线的夹角,则方向总共有6种
分析与设计思路
有了中点位置、方向、边长和阶数,就可 以确定一条边了
使用递归绘制曲线,只需要将绘制曲线分 解成4步,绘制4条子边即可。
排序数据的显示
一种显示方法就是使用纯色。背景使用蓝色,数 据条用红色,更新的数据条使用绿色。
首先是整体的窗口初始化。以20作为柱宽,每个 矩形都需要描边
当在排序过程中修改一个数据的值的时候,需要 做的事情有:先把这个数据条画出来,画成绿色 ,(先用蓝色底色覆盖原来的颜色,再画红色的 矩形并用黑色描边),并播放相应的声音(越大 的数据音调越高),然后等待一会儿,再将其重 新填充成红色
可视化的排序过程实例
图形界面的无向图输入
无向图是离散数学一个重要的 研究对象。所谓无向图,就是 对若干个点连接情况的描述。 图的基本元素是点与边
它并不关心这些点的位置关系 ,它只关心点与点的连接情况 ,即两个点之间是否有边
比如,右图中两个图是等价的。 因为它们的连接状况是一样的
图的储存
计算机只能以数组的形式来存 储数据,对于无向图这种几何 的东西,它可以以一种矩阵的 方式记录下来
当level=1时绘制线段即可 最后
要绘制一条完整的科赫雪花线,只需要绘制三 条边即可
三条边的中点到屏幕中心的距离一样,分别位 于π/4、11π/12、7π/12的方向
科赫雪花
Main子图
科赫雪花-drawline子程序
科赫雪花-绘制结果
排序的可视化
RAPTOR作为一个可视的程序设计框架,将 代码可视化、算法可视化,运行的环境也 是可视的。
所以可以说,设计与利用好子程序是模块 化的精髓
程序架构分析
正如解题思路中所说,首先我们需要一个 随机数组,并不是一个简单的由随机元素 组成的数据,而是1至N这N个数一个随机的 排列
接着我们需要有排序的算法,冒泡排序与 插入排序
然后是将数据显示在屏幕上的方法
或有改变数组某一个数据时图像更新的方法
生成随机数组
生成随机数组的过程其实是生成一个全排 列。所谓全排列,就是将1至N这N个自然数 排成一列
这样的排法总共有n!总排法。怎样从中随机 选出一种呢?自然想到需要使用随机数函 数Random
难点在于:排列的第1项与第2项是不能有 重复的。那么有没有什么办法可以避免重 复呢?
生成随机数组
假设有n个点,那么使用一个 n*n的矩阵,记为A,使用 A[i,j]=1来表示点i和点j有点相 连,A[i,j]=0来表示点i与点j没 有边相连
那么,同样作为程序重要组成部分的数据 结构,能否也进行可视化呢?
带着这种想法,我们尝试着设计一个可视 的方法,来用可视化的方法诠释一个最基 本的算法:排序
可视化排序的效果图
解题思路
排序的算法多种多样。设计一个可以显示 数据是如何移动和变化的程序。
使用柱状图可以很好地模拟数据的移动过 程。
排序过程中,每一次更改一个数据就得先 将它涂成背景色,再画成绿色,最后恢复 成红色。
为了使排序更有趣味性,还可以给它加上 声音。数字越大,声音最大的不同是:子程序对数 据是“封闭”的,它只接收、知晓与更改 它能获得的数据,因此子程序相对于子图 访问数据的条件更加苛刻,但是这保证了 子程序极佳的可移植性与可扩展性
分析与设计思路
计算中点坐标有些复杂。可以看出①号边 和④号边的中点坐标距父边length÷3,中 点与父边中点的连线方向分别为 orientation+ π和orientation
各边的中点坐标
科赫雪花画法递归基线条件
递归的原理就是将一条边分拆成三条子边 。基线条件即为阶为1。子边的属性的计算 见算法分析的部分
如果我们对构成这条折线的 每一条线段不断重复上述的 步骤,得到的曲线就 是所谓 的“科赫曲线”
分析与设计思路
边是一个雪花图案的基本单位,有不同的 阶数,下表为1~4阶的边
分析与设计思路
从另一种角度看,n阶的边可以看成由4条n1阶的边构成
科赫雪花边的中点
分析与设计思路
怎样确定一条边呢?首先当然要知道它的 阶数