调用过程理解:
-
什么是 “调用过程”
在编程中,“过程”(这里是自定义的sum过程)是一段可重复使用的代码块,它封装了特定的功能(比如这里的 “计算两个数的和”)。“调用过程” 就是在程序的其他位置,去使用这个预先定义好的过程,让它执行封装的功能,并获取或利用它的结果。
-
调用过程是如何实现的
在这个例子中,调用过程的实现分为以下步骤:
- 定义过程:首先通过 “定义过程
sum(num1, num2)” ,声明了一个名为sum的过程,它接收两个参数num1和num2,功能是 “返回num1 + num2的结果”。 - 触发调用的场景:当用户点击
Button_Sum1或Button_Sum2按钮时,会触发对应的 “执行块”。 - 调用过程并传参:在 “执行块” 中,使用 “调用
sum” 模块,并将输入框(如TextBox1a、TextBox1b或TextBox2a、TextBox2b)的文本作为参数num1和num2传递给sum过程。 - 获取结果并展示:
sum过程执行后返回求和结果,程序将这个结果设置为标签(如Label_Result1、Label_Result2)的文本,从而在界面上显示出来。
-
为何会这样写?(这样设计的优势)
这样写主要是为了提高代码的 “复用性” 和 “可维护性”:
- 复用性:如果有多个地方需要 “求和” 功能(比如这里的
Button_Sum1和Button_Sum2两个按钮的逻辑),不需要重复写 “num1 + num2” 的代码,只需要定义一次sum过程,然后在多处调用即可。 - 可维护性:如果求和的逻辑需要修改(比如改成 “求差” 或 “带小数的运算”),只需要修改
sum过程的定义,所有调用它的地方都会自动生效,不用逐个修改,大大减少了维护成本。
简单来说,“定义过程 + 调用过程” 的模式,是编程中 “偷懒但高效” 的智慧 —— 把重复的工作封装起来,用的时候直接 “调用”,既省代码又方便维护
一、简单的求两数字之和
定义带有2个参数,以及带返回值的求和过程,计算任意两个数字的和。参考界面如图:
组件设计:

逻辑设计:

测试:


二、第一版
组件设计:

逻辑设计:






点击继续玩之后会重新从0开始计分,重新判断赢家

点击结束游戏回到主界面:

点击开始游戏,跳转至游戏界面:

三、重置优化版
整个优化的核心思路是 “提取重复逻辑,用一个通用过程替代多次重复编写”,通过 “封装” 和 “参数化” 让代码更简洁、易维护。具体可以拆解为 3 个关键步骤,结合 “石头剪子布” 的场景理解:
第一步:找到 “重复的共性逻辑”
观察三个按钮(石头、剪子、布)的点击事件,会发现它们的核心流程完全相同,都是:
- 系统随机出拳(1-3 的随机数);
- 显示玩家出拳的图片;
- 根据 “玩家出拳” 和 “系统出拳” 判断胜负;
- 更新玩家 / 系统的分数标签;
- 显示系统出拳的图片;
- 若有人分数达到 7,弹出胜负对话框。
重复的差异点仅在于:
- 玩家出拳的图片不同(石头用
myshi.bmp,剪子用myjian.bmp等); - 玩家获胜 / 失败对应的系统出拳值不同(比如石头胜剪子 <2>、败于布 < 3>;剪子胜布 < 3>、败于石头 < 1 > 等)。

第二步:用 “自定义过程” 封装共性逻辑
既然核心流程相同,就可以把这部分逻辑 “打包” 成一个自定义过程(类似一个 “工具函数”),让这个过程负责处理所有通用操作。
为了让过程能适配不同按钮的差异,我们给过程添加3 个参数(相当于 “输入信息”):
playerImageName:告诉过程 “玩家出拳的图片是哪张”;playerWinSysGuess:告诉过程 “玩家出这个拳时,系统出什么值(1-3)算玩家胜”;playerLoseSysGuess:告诉过程 “玩家出这个拳时,系统出什么值(1-3)算玩家败”。
过程内部根据这 3 个参数,自动处理 “显示图片、判断胜负、更新分数” 等操作,无需重复编写。

第三步:通过 “参数调用” 适配不同按钮
三个按钮的点击事件,不再需要写完整逻辑,只需调用同一个过程,并传入各自的参数即可:
- 点击 “石头” 按钮时,传入参数:
("myshi.bmp", 2, 3)(图片是石头,胜系统剪子 <2>,败系统布 < 3>); - 点击 “剪子” 按钮时,传入参数:
("myjian.bmp", 3, 1)(图片是剪子,胜系统布 <3>,败系统石头 < 1>); - 点击 “布” 按钮时,传入参数:
("mybu.bmp", 1, 2)(图片是布,胜系统石头 <1>,败系统剪子 < 2>)。


181

被折叠的 条评论
为什么被折叠?



