raptor程序设计案例教程-ch4

合集下载

ch4 顺序程序设计llh

ch4 顺序程序设计llh

A
直到P为假
直到型循环
13
用三种N--S流程图中的基本框,可以组成复 杂的N--S流程图。图中的A框或B框,可以是一 个简单的操作,也可以是三个基本结构之一。
A框可以是一个选择结构
B框可以是一个循环结构
14
五、顺序结构程序的基本操作
(1)如何在程序中给变量赋值?
– 赋值表达式 – 赋值表达式语句 – Total = m * pow(1+r, n);
–说明
• 格式字符要用小写 • 格式字符与输出项个数应相同,按先后顺序一一对应
27
附加格式说明符(修饰符): 修饰符 功 能 m 输出数据域宽,数据长度<m,左补空格;否则按实际输出 .n + 0 # l 对实数,指定小数点后位数(四舍五入) 对字符串,指定实际输出位数 输出数据在域内左对齐(缺省右对齐) 指定在有符号数的正数前显示正号(+) 输出数值时指定左面不使用的空位置自动填0 在八进制和十六进制数前显示前导0,0x
2
二、算法的分类
• 数值运算算法:
–解决的是求数值解的问题,例如用辗转 相除法求两个数的最大公约数等
• 非数值运算算法:
–主要用于解决需要用分析推理、逻辑推 理才能解决的问题,例如人工智能中的 许多问题,查找、分类等问题
3
三、算法的表示方法
• • • • 自然语言表示 传统的流程图表示 N-S结构化流程图表示 伪代码表示
开始/结束框
一般处理框
判断决策框 输入输出数据框 流程线
输入rate, capital,n
计算deposit
输出 deposit 结束
7
1、顺序结构
A
A
B

RAPTOR程序设计教程

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的数组功能来设计一个查找最大值的程序。

chp4

chp4

CH4 面向对象的编程技术在面向对象的程序设计中,方法总是与特定的数据结构密切相关的,方法含有对数据结构的访问,特定的方法只适用于特定的数据结构,因此方法与数据结构在编程中应该是一个密不可分得整体,这个整体叫对象。

C#通过类、对象、继承、多态等机制形成一个完善的面向对象的编程体系。

4.1类和对象类是C#程序设计的基本单位。

用类声明的变量叫类的实例也叫类的对象。

在.NET公共类库中包含有大量预先定义好的类,是简便、高效设计应用程序的有力工具。

用户也可以根据程序设计的需要自定义类。

在创建Windows应用程序项目时,系统总是自动生成一个Form1类,程序的入口Main方法是该类定义中的一个静态方法。

在Windows应用程序运行时,将在Main方法中创建一个Form1类的实例(对象)。

4.1.1类和对象概述现实生活中的类是人们对客观对象不断认识而产生的抽象概念,而对象则是现实生活中的一个个实体。

例如,人们在现实生活中接触了大量的汽车、摩托车、自行车等实体,从而产生了交通工具的概念,交通工具就是一个类,而现实生活中具体的汽车、摩托车、自行车等则是该类的对象。

面向对象程序设计的类从本质上和人们现实生活中类的概念是相同的。

例如在编程实践中,人们经常使用按钮这一控件,每一个具体的按钮是一个按钮对象,而按钮类则是按钮对象的抽象,并且人们把这一抽象用计算机编程语言表示为数据集合与方法集合的统一体,然后再用这个类创建一个个具体的按钮对象。

可以把类比作一种蓝图,而对象则是根据蓝图所创建的实例;可以把类比作生产模具,而对象则是由这种模具产生的实例(产品)。

所以,人们又把对象叫做类的实例。

类是对事物的定义,而对象则是该事物本身。

在Visual 集成环境中,工具箱中的一个个控件,是被图形文字化的可视的类,而把这些控件添加到窗体设计器中后,就成为对象,即由工具箱中的类创建的对象。

类是一种数据类型,在C#中,类这种数据可以分为两种:一种是由系统提供的预先定义的,这些类在.NET框架类库中;一种是用户定义数据类型。

RAPTOR流程图算法设计教程课件ch4

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

raptor程序实现的算法

raptor程序实现的算法

raptor程序实现的算法
Raptor是一个流程图编程语言,用于教授算法和程序设计。

Raptor使用图形化的方式来描述算法,使得非程序员也能理解算法的工作原理。

以下是一个简单的Raptor程序示例,用于实现冒泡排序算法:
这个Raptor程序描述了冒泡排序算法的基本步骤:
1.开始:程序开始执行。

2.输入数组A:用户输入一个数组A。

3.对于i从0到A.length - 1执行:对于数组中的每个元素,重复以下步骤。

4.对于j从0到A.length - i - 2执行:比较相邻的元素,如果前一个元素大
于后一个元素,则交换它们的位置。

5.如果A[j] > A[j + 1]则交换A[j]和A[j + 1]:这是冒泡排序的核心步骤,通
过重复这个步骤,最大的元素会"冒泡"到数组的末尾。

6.输出排序后的数组A:程序输出已排序的数组。

7.结束:程序结束执行。

RAPTOR程序设计例题参考答案

RAPTOR程序设计例题参考答案

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的可视化计算案例教程-ch4

基于RAPTOR的可视化计算案例教程-ch4

为解决“囚徒困境”难题,美国曾组织竞 赛,要求参赛者根据“重复囚徒困境” 来 设计程序
反复互相博弈,以最终得分评估优劣
(双方合作各得3分;双方背叛各得1分;一方合 作一方背叛,合作方得0分,背叛方得5分)
有些程序采用“随机”对策;
有些采用“永远背叛”;
有些采用“永远合作”;
结果,加拿大多伦多大学的阿纳托尔·拉帕 波特教授的“一报还一报”策略夺得了最 高分
第一重循环
Transfrom子图
第二重循环
Trans子图 Part 1
第二重循环
Trans子图 Part 2
第二重循环
Trans子图 Part 3
生命游戏核心算法流程
生命游戏的一些讨论
最早的生命游戏中的有趣的图案是在不使 用计算机的情况下被发现的。使用方格纸 ,黑板,围棋等可以从一些简单的起始状 态配置,推演静态模式(“静止的生命” )和重复模式(“振荡器”---静止的生命的 一个超集)
生命游戏中的一些范式
静态范式
一些生命游戏的范式可以保持常态,所有细胞处于 不生不死的状态
振荡范式
一些范式中尽管会有变化,但是变化呈现出反复 重现的某种形式
Blinker
Toad
滑翔机 (Gliders)
这样的一种生命游戏范式,在开始运行后, 会沿对角线运动.
游戏设计-数据表达
在规则决定以后,重要的问题是如何将游 戏的界面,使用数据进行表示;
如果相邻方格活着的细胞数量过多,这个细胞 会因为资源匮乏而在下一个时刻死去;
相反,如果周围活细胞过少,这个细胞会因太 孤单而死去。
游戏设计思路与规则
如果我们把3×3的9个格子构成的正方形看 成一个基本单位的话,那么这个正方形中 心的格子的邻居就是它旁边的8个格子

RAPTOR流程图编程-13548PPT课件

RAPTOR流程图编程-13548PPT课件
2021/3/12
RAPTOR流程圖編程
1
介紹 和 變量
中三級
2021/3/12
流程圖編程介紹
Raptor程序是一個有向圖(Directed Graph) 必須要有「Start」和「End」。
程序會由「Start」開始, 運行至「End」才完成。 在「Start」和「End」之間插入其他部件,便可製作一個
較有意義的程序。
輸入
把數據及指令 輸入電腦
處理
電腦對輸入的 數據進行運算
輸出
電腦顯示處理 2 數據的結果
2021/3/12
甚麼是變量(VARIABLES)?
在主記憶體訂定的一個存貯位置。 存貯空間大小視定義類型而定。 程序運行時,變量的值是可改變的。
名稱:x 類型:數字
主記憶體 名稱:myname 類型:文字
3
2021/3/12
變量(VARIABLES)
一般來說,變量在程序運行前, 其數值 是未定的。
第一個被賦予的值為起始值(initializing a variable) 。
如應用未定起始值的變量,或會引發運行 時錯誤(Runtime Error) 。
4
2021/3/12
變量(VARIABLES)
2. 就RAPTOR編程語言來說,在程序賦予數值之前,變 量在產生時是沒有數值的。(True/ False)!
1. 這個程序 x 的最終值是甚麼? 2. 在 x←x*2 下方加上x←x/3,
x 的最終值是甚麼? 3. 若把 x←32 改成variable←32,
會有什麼後果?
9
感谢您的阅读收藏,谢谢!
2021/3/12
10
編程的良好習慣 有意義的命名 (e.g. a, exam_mark) 妥善管理變量 (e.g. Average, Avg)

Ch04程序流程控制2

Ch04程序流程控制2
• while循环的后测试版本 • do...while循环的循环体至少执行一次,
而while循环的循环体可能一次也不执行 • 【例4.6】利用do......while循环1~100中所
有自然数之和、奇数和、偶数和 • 【例4.7】求任意两个正整数的最大公约
数和最小公倍数
foreach循环
• 循环访问数组或集合以获取所需信息
3、5、8、……的前20项
while循环
• 说明1~4
• 【例4.3】利用while循环求 1~100中所有 自然数之和、奇数和、偶数和
• 【例4.4】求1+2+……的和,直至和 >3000为止
• 【例4.5】用近似公式求自然对数的底数e 的值,直到最后一项的绝对值小于10-6为 止
do…while循环
– 计数型循环语句,一般用于已知循环次 数的情况,所以也称为定次循环。for循 环提供的迭代循环机制是计算一个初始 化表达式序列,然后,当某个条件为真 时,重复执行相关的嵌入语句并计算一 个迭代表达式序列
– 说明1~8 – 【例4.1】利用for循环求1~100中所有奇
数的和、偶数的和 – 【例4.2】显示Fibonacii数列:1、1、2、
创建和引发异常
• 表4-1 CLR自动引发的异常 • 【例4.15】调用方法,如果传入参】使用foreach显示整数数组的内 容
异常处理
• 处理系统级和应用程序级的错误状态, 例如:零除异常、下标越界、I/O错误等
• 通过使用try语句实现 • try语句三种形式
【例4.14】异常处理示例:打 开并写入文件,如果文件为只 读,则会产生异常 UnauthorizedAccessExceptions

RAPTOR程序的设计例题参考答案

RAPTOR程序的设计例题参考答案

RAPTOR程序的设计例题参考答案RAPTOR程序设计⼀、顺序结构编程1.输⼊任意⼀个华⽒温度值,然后将其转换成摄⽒温度输出。

算法:c = 5 / 9 (f - 32)2.输⼊任意三⾓形的三边之长存⼊变量a、b、c中,然后计算并输出该三⾓形的⾯积。

海伦公式:p = (a + b + c)/2 S = sqrt (p * (p - a) * ( p – b ) * ( p – c ))⼆、选择结构编程3.输⼊任意⼀个年份,判断该年是否为润年。

若是则打印“Yes!”,否则打印”No!”。

4. 输⼊任意两个数存⼊变量a、b中,要求:变量a中存储较⼤数,b中存储较⼩数,然后输出变量a和b的值。

5.输⼊任意三个数存⼊变量a、b、c中,然后计算并输出其中的最⼤值。

6.输⼊任意三个数存⼊变量a、b、c中,然后按从⼩到⼤的顺序打印输出。

7.输⼊任意⼀个学⽣的考试成绩,然后按其所属分数段打印对应等级:90-100分为A等,80-89分为B等,70-79为C等,60-69为D等,60分以下为E等。

三、循环结构编程8.计算并输出sum = 1 + 2 + 3 + … + 10的和。

改进程序计算sum = 1 + 2 + 3 + …+ n的和。

9.输⼊任意⾃然数n,然后计算并输出n!值。

10. 计算并输出sum = 1! + 2! + 3! + … + n!11. 输⼊任意整数存⼊变量n中,若n≤0则输出“Error!”;否则组织循环结构流程计算sum = 1 / 2 + 2 / 3 + 3 / 4 + … + n / ( n + 1 )的值,然后分别输出变量n和sum的值。

12.设计循环结构程序输⼊任意10个整数,分别统计其中的奇数个数、偶数个数、所有数的累加和,然后显⽰结果。

13.设计校园歌⼿⼤赛计分程序,假设有10评委按10分制打分,计算每位选⼿扣除⼀个最⾼分、最低分后的平均分,显⽰计分结果。

RAPTOR流程图编程.ppt

RAPTOR流程图编程.ppt
16
RAPTOR常量
RAPTOR定义了四个常量(Constant)
pi(圆周率) 定义为 3.1416 e (自然对数的底)定义为 2.7183 true /yes(布尔值: 真) 定义为 1 false/no(布尔值:假) 定义为 0
17
输入(Input)语句
输入语句的编辑 (Edit)对话框
理解问题 制定计划 执行计划 回顾与总结
71
使用计算机进行问题求解
程序开发周期 分析问题 设计程序以解决问题 程序编码 程序测试
72
小结与回顾
本章的内容主要涉及程序设计的一般性概 念,包括变量、常量、数据类性、表达式、 赋值语句、输入、输出,分支、循环与决 策,子程序定义与调用以及形式参数和实 际参数等
基本原则:
任何变量在被引用前必须存在并被赋初值 变量的类型由最初的赋值语句所给的数据决定
设置方法
通过输入语句赋值 通过赋值语句的中的公式运算后赋值 通过调用过程的返回值赋值
12
RAPTOR数据类型
数值(Number):
如12,567,-4,3.1415,0.000371
字符串 (String):
循环按特定的次数,来 执行某个代码块
一个著名的缩写 I.T.E.M (Initialize, Test, Execute, Modify,初始化,测试, 执行,和修改)表示可以 用来检查一个循环计数 器变量使用是否正确的 基本过程
48
典型的循环错误
49
输入控制循环
50
RAPTOR数组变量
数组是有序数据的集合。 一般分为一维数组和二维数组 数组最大的好处在于用一个统一的数组名
10、人的志向通常和他们的能力成正比例。2020/12/102020/12/102020/12/1012/10/2020 10:15:48 AM 11、夫学须志也,才须学也,非学无以广才,非志无以成学。2020/12/102020/12/102020/12/10Dec-2010-Dec-20 12、越是无能的人,越喜欢挑剔别人的错儿。2020/12/102020/12/102020/12/10Thursday, December 10, 2020 13、志不立,天下无可成之事。2020/12/102020/12/102020/12/102020/12/1012/10/2020

Raptor软件使用说明

Raptor软件使用说明
52
子程序的调用
如要调用子程序,可以通过调用语句并给子程序的接口赋 予“实际参数”进行 实际参数的名与形式参数的可以不同 实际参数的数据类型则必须与形式参数的相同
53
实参
形参
54
End of ch1-1
55
23
内置运算符和函数
三角函数:
sin,cos,tan;正弦 ,余弦 ,正切 cot,arcsin,arccos;余切 ,反正弦 ,反余弦 arctan, arccot;反正切 ,反余切
24
内置运算符和函数
random,伪随机数 Length_of
求数组元素个数,求字符串长度
25
表达式计算的“优先顺序”
28
选择控制
?当程序执行时,如果决策的 结果是“ Yes”( True),则 执行左侧分支 ?如果结果是“ No”(False), 则执行右侧分支
可能性 1
可能性 2
Statement 1 Statement 1 Statement 2a Statement 2b Statement 3 Statement 3
计数控制循环之二
后序测试
44
RAPTOR 子程序与子图定义与调用
在计算机科学中,将实际问题抽象化是解决问题的关键要 素之一 一项研究成果表明,人类的大脑平均只能同时积极关注约4 件事情,大大少于以往研究所得的7件事情的结论 为了解决复杂的问题,必须能够研究问题的“主要方面 (big issues)”
9
RAPTOR 数据类型
? 数值(Number):
? 如12,567,-4,3.1415,0.000371
? 字符串 (String):
? 如“ Hello, how are you? ”, “James Bond”, “ The value of x is: ”
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
RAPTOR的设计者在权衡利弊之后,放弃了 全局变量的设置,而是使用存取子程序来 代替全局数据,用全局数据能作的一切
矩阵乘法
矩阵乘法是线性代数的基本算法之一 熟悉和编制矩阵乘法对深入了解线性代数
和计算方法有重要意义
案例问题
矩阵乘法要求第一个矩阵的列数(column)和 第二个矩阵的行数(row)相同,若A为m×n 矩阵,B为n×p矩阵,则他们的乘积AB会是 一个m×p矩阵。其乘积矩阵的元素可由下 式得出:
同样,由于子图具有名称,可以作为一种功能的 抽象,分级实现的子图,可以将较大的 定义和传递任何参数
例4-2中的output子图
子图和子程序的命名
与变量不同的是,变量是一种被操作的对象,保 存一种具体的计算结果或中间量,所以变量名称 以名词(或代号)为多见;
英文单词统计(续)
例4-2 请设计一个程序,在例4-1的问题 求解基础上,统计使用了“a~z”所有 字母开头的单词的次数,并输出统计结 果
分析:
解这个问题程序似乎只要把例4-1的部分程序 再复制、粘贴25次,做一点修改就可以解决 问题。但是,可以将例4-1中的程序改造成一 个子程序,或者是一种抽象,以便“复用”
为了解决复杂的问题,必须能够研究问题 的“主要方面(big issues)”
模块化的主要作用
程序设计中,通过组合一系列相关指令, 组成分立和离散的过程,就可以抽象所有 的细节
模块化的主要作用包括:
降低复杂性 避免代码段重复 改进性能
英文单词统计
例4-1:请设 计一个程序, 计算一个英文 文章中,使用 了“a”开头 的单词的次数
2.模块化:模块化是把程序要解决的总目标 分解为分目标,再进一步分解为具体的小 目标,把每个小目标称为一个模块;
3.逐步求精:对复杂问题,应该设计一些子 目标做过渡,逐步细化
子图与子程序的相互关系
在编制RAPTOR程序时,子图和子程序是两种 不同的模块形式
一般情况下,main子图与所有的子图共享 变量;而子程序的变量在子程序结束时, 除去out的参数传给调用它的模块之外,其 他变量将全部释放
可以声明
子图与变量
子图其实可以看做在一头一尾有一个 turn_to语句的代码块
调用子图时“turn to”到子图,子图执行完 成后再“return”到原来的位置
如果是main子图调用了这个子图,它所使 用的变量就是main子图的
如果是子程序调用了它,它的变量就是这 个子程序的,变量的生命周期随子程序结 束而结束
第4章 子图与子程序的应用
《RAPTOR程序设计案例教程》
学习目标
程序设计中为什么要模块化? 子图与子程序有何不同? 子图与子程序如何应用? 子程序与递归
问题与抽象
在计算机科学中,将实际问题抽象化是解 决问题的关键要素之一。2008发表在美国 Proceedings of the National Academy of Sciences杂志上的一项研究成果表明,人类 的大脑平均只能同时积极关注约4件事情, 大大少于以往研究所得的7件事情的结论
矩阵乘法的原理
根据矩阵相乘公式可以推出
(AB)11=a11b11+a12b21+a13b31+a14b41 (i=1,j=1) (AB)12=a11b12+a12b22+a13b32+a14b42 (i=1,j=2) (AB)21=a21b11+a22b21+a23b31+a24b41 (i=2,j=1) (AB)22=a21b12+a22b22+a23b32+a24b42 (i=2,j=2) (AB)31=a31b11+a32b21+a33b31+a34b41 (i=3,j=1) (AB)32=a31b12+a32b22+a33b32+a34b42 (i=3,j=2)
但是,如果子程序调用子图,它们之间的 变量生命周期又该如何处理呢?
子图与子程序之间的相互调用与 变量关系
子程序与变量
Main子图其实也可以看成一个子程序。 子程序是相互独立的,级别平等的,所以
调用关系并不会在程序上构成级别关系 每个子程序有各自的变量:
main函数的变量是在程序体中声明的, 子程序中的函数变量在程序头和子程序体中都
而子程序承担某种功能或动作,所以需要使用一 些动词或动词与名词的搭配来命名
在RAPTOR中,一般无需在一个子程序中设计过多 的功能,所以命名以简单、具体为要。例如,例 4-2中,使用count_for()作为统计子程序的名字、 output作为子图的名称就比较容易理解
模块化程序设计的设计过程
1.自顶向下:即先考虑总体,后考虑细节; 先考虑全局目标,后考虑局部目标。这种 程序结构按功能划分为若干个基本模块, 这些模块形成一个树状结构。
子程序调用
调用count_for() 子程序的main 子图
重要计算过程 通过子程序 count_for的调 用并赋予实际 参数(实参) 来完成
有关RAPTOR子图
RAPTOR的子图是将main子图进行扩展或折叠的一 种方法,所有子图与main子图共享所有变量
在main子图中可以反复调用某个子图,以节省相 同功能语句段的重复出现
数单词子程序
start符号中的( in:a,in:char,out:co unt)被称为子程 序接口参数,也 被称为子程序形 式参数(形参)
子程序接口定义
RAPTOR任何参数都 可以是单个的变量 或数组,都可以定 义为(in)、(in,out) 、(out)三种形式中 的任何一种输入、 输出属性
子程序特点
子程序运行中的所有变量都“自成系统” ,与调用它的程序没有关系。调用它的程 序,只是通过调用子程序接口参数与它交 接“原材料(初始数据)”(定义为Input 的变量)和“产成品(计算结果)”(定 义为Output的变量)
子程序的所有变量在子程序运行过程中存 在,运行结束后,除了传递回调用程序的 参数,所有其它变量立即删除
RAPTOR为何不设全局变量
全局变量会带来的问题
对全局数据的疏忽改变 伴随全局变量的奇怪的别名问题。 全局数据妨碍重新使用的代码。 全局变量会损害模块性和可管理性
RAPTOR为何不设全局变量
全局变量的好处
保存全局数值,有时候需要在整个程序中都要 用到某些数据。
代替命名常量。 方便常用数据的使用。 消除“穿梭”数据
相关文档
最新文档