一第8易语部的程廓一 第8章易语言的子程序 本章主要介绍“易语言”子程序 的调用方法、子程序参数的使用方法 以及参数属性的相关使用方法 本章学习内容 8.1新建子程序 86参数的参考属性 82调用子程序 8.7子程序的返回值 83与事件子程序的区别 88课后练习 84子程序参数 8.5参数的可空属性 将程序分割成较小的逻辑单元就可以简化程序设计任务,这些 部件被称为子程序。子程序可用于压缩重复任务或共享任务,例 如,压缩频繁的计算处理等等。 子程序可使程序划分成离散的逻辑单元,每个单元都比无子程序 的整个程序容易调试及理解 个应用程序中的子程序,往往不必修改或只需稍作改动,便可 以成为另一个程序的子程序
163 将程序分割成较小的逻辑单元就可以简化程序设计任务,这些 部件被称为子程序。 子程序可用于压缩重复任务或共享任务,例 如,压缩频繁的计算处理等等。 • 子程序可使程序划分成离散的逻辑单元,每个单元都比无子程序 的整个程序容易调试及理解; • 一个应用程序中的子程序,往往不必修改或只需稍作改动,便可 以成为另一个程序的子程序。 本章主要介绍“易语言”子程序 的调用方法、子程序参数的使用方法 以及参数属性的相关使用方法。 第 8 章 易语言的子程序 本章学习内容: 8.1 新建子程序 8.6 参数的参考属性 8.2 调用子程序 8.7 子程序的返回值 8.3 与事件子程序的区别 8.8 课后练习 8.4 子程序参数 8.5 参数的可空属性
一囫一易语言图解教程一 8.1新建子程序 下面我们就开始新建第一个自定 义子程序。方法十分简单,一步一步 跟我来吧 窗口程序集名 备注 窗口程序 ①首先在 子程序名返回值类型公开 备注 启动窗口添 按钮1被单击 加一个按 钮,默认名 新子程序 称为“按钮 子程序名 撒消 Ctrl+ 1”。双击按 子程序1 .册除 另一种更快 钮1进入代 T.剪切 Ctrltx 捷的方法是,在 码编辑界 c复制 Ctrl+C 代码编辑面板 面 P.粘贴 Ctrlty 获得焦点时,同 时按下“Ctrl 新建子程 ②将光标移到代码编辑 键”和“N键”, 序的默认名称行,右键单击在弹出菜单选 也可以新建子 为“子程序1”,择“新子程序”,左键单击就 程序,而不用弹 依此类推。 可以新建子程序。 出右键菜单了 罗E程序E编辑y查看工插入B数据库D调试B 第三种方法,到主 国它品电启新现行组件c1下菜单上选择“插入 当回M新程序集 在弹出菜单中选择“插 s.新子程 入”,在弹出菜单中选 窗口程序集名 置新窗口 择“新子程序”也可新 建子程序 164
164 8.1 新建子程序 下面我们就开始新建第一个自定 义子程序。方法十分简单,一步一步 跟我来吧! ②将光标移到代码编辑 行,右键单击在弹出菜单选 择“新子程序”,左键单击就 可以新建子程序。 ①首先在 启动窗口添 加一个按 钮,默认名 称为“按钮 1”。双击按 钮 1 进入代 码编辑 界 面。 另一种更快 捷的方法是,在 代码编辑面板 获得焦点时,同 时按下“Ctrl 键”和“N 键”, 也可以新建子 程序,而不用弹 出右键菜单了。 新建子程 序的默认名称 为“子程序 1”, 依此类推。 第三种方法,到主 菜单上。选择“插入”, 在弹出菜单中选择“插 入”,在弹出菜单中选 择“新子程序”也可新 建子程序
一第8易语部的程廓一 注意 在同 “子程序 子程序名返回值类型公开备注 个程序集中, 1”已经存在, 子程序1 子程序名不 当另一个子程 能重复。特别 序被修改成 在修改的时 “子程序1 候,“易语 时,“易语言” 言”会提示 弹出信息框提 并修改已经 被使用过的 子程序名返信息 错误¢):指定名称“子程序1”已经被使用 被“易语言”修改的子程序名 新建的子程序没有参数和变量,这需要操作者自行添加和自定义参数的 数量以及每个参数的类型、可空、参考、数组属性 特别应该注意的是,每个新建的子程序都不会被“易语言”或其它子程 序自动调用,下面将讲解如何调用子程序。 8.2调用子程序 前一节中讲了如何建立子程序, 下面演示如何调用一个简单的子程 165
165 8.2 调用子程序 注意: 在同一 个程序集中, 子 程 序 名 不 能重复。特别 在 修 改 的 时 候 , “ 易 语 言 ” 会 提 示 并 修 改 已 经 被 使 用 过 的 名称。 “ 子程序 1” 已经存在, 当另一个子程 序被修改成 “ 子程序 1” 时,“易语言” 弹出信息框提 示。 被“易语言”修改的子程序名。 新建的子程序没有参数和变量,这需要操作者自行添加和自定义参数的 数量以及每个参数的类型、可空、参考、数组属性。 特别应该注意的是,每个新建的子程序都不会被“易语言”或其它子程 序自动调用,下面将讲解如何调用子程序。 前一节中讲了如何建立子程序, 下面演示如何调用一个简单的子程 序
一囫一易语言图解教程一 窗口程序集名 备注 ①在按钮 ②在“子 窗口程序集1 1被单击事 程序1”中添 子程序名返回值类型公开 件子程序中 加代码‘信 按钮1被单击 添加程序代 息框(“你 码“子程 好!我是信 子程序10 序1() 息框。”,#信子程序名返回值类型公开 备注 或直接复制 息图标, 子程序 名称,将其 +息框了“你好!我是信息框:信息度标 粘贴过来。 匚子程序名遞回值类型公开备注 按钮1被单己 同一个 子程序10 子程序可以 被多次调用。 ③在“按 子程序名返回值类型公开 钮2”事件子 程序1 程序中添加 信息框(“你好!我是信息框。”,#息图标,〕 代码‘子程 序1() 匚子程序名返回值类型公开 注 按钮2被单击 子程序10 ④按“F5键”运行程序,分别单击“按钮1”和“按钮2”, 都能弹出“子程序1”里的信息框。 子程序可以在其它事件子程序和新建子程序中多次被调用,也可以被 其它程序集的事件子程序和新建子程序调用,就像单击“按钮1”,“ 按钮1_被单击”被调用。要注意的是,子程序只能在本程序中使用 每次调用子程序时,子程序中的所有语句都将被从第一条开始顺序执 行,当执行到子程序尾部或者遇到“返回”命令时即返回到调用此子程序 语句的下一条语句处 166
166 ②在“子 程序 1”中添 加代码‘ 信 息 框 (“ 你 好!我是信 息框。”,#信 息图标,) ’ ①在按钮 1 被单击事 件子程序中 添加程序代 码 “ 子 程 序 1() ” 或直接复制 名称,将其 粘贴过来。 ③在“按 钮 2”事件子 程序中添加 代码‘ 子程 序 1() ’。 同一个 子 程 序 可 以 被多次调用。 子程序可以在其它事件子程序和新建子程序中多次被调用,也可以被 其它程序集的事件子程序和新建子程序调用,就像单击“按钮 1”,“_ 按钮 1_被单击”被调用。要注意的是,子程序只能在本程序中使用。 每次调用子程序时,子程序中的所有语句都将被从第一条开始顺序执 行,当执行到子程序尾部或者遇到“返回”命令时即返回到调用此子程序 语句的下一条语句处。 ④按“F5 键”运行程序,分别单击“按钮 1”和“按钮 2”, 都能弹出“子程序 1”里的信息框
一第8易语部的程廓一 子程序名返回值类型公开 这里的 ①把“子 “子程序1”同 程序1”修改 按钮1被单击 时被修改为‘信 为“信息框 信息框子程序0一 息框子程序 子程序”。 子程序名返回值类型公开 信息框安程序 上节中提到了子程序名称的问题,这里我们还要提一个小建议。当要修 改一个子程序名称时,应该直接到这个子程序的位置处进行修改。这样可 以使其它调用处的名称一同被修改。 子程序必须由其它事件子程序调用。子程序的调用方法与命令的调用方 法完全一致。所谓事件子程序,就是“易语言”组件自带的触发事件。如:按 钮被按下 8.3与事件子程序的区别 Y 虽然新建子程序和事件子 程序的调用方法都一样,但它们 之间也有一些不同之处 167
167 8.3 与事件子程序的区别 ①把“子 程序 1”修改 为“信息框 子程序”。 上节中提到了子程序名称的问题,这里我们还要提一个小建议。当要修 改一个子程序名称时,应该直接到这个子程序的位置处进行修改。这样可 以使其它调用处的名称一同被修改。 这里的 “子程序 1”同 时被修改为‘信 息框子程序’。 子程序必须由其它事件子程序调用。子程序的调用方法与命令的调用方 法完全一致。所谓事件子程序,就是“易语言”组件自带的触发事件。如:按 钮被按下。 虽然新建子程序和事件子 程序的调用方法都一样,但它们 之间也有一些不同之处
一囫一易语言图解教程一 这是按钮1 被单击子程序子程序名返回值类型公开 备 的原型,没有参被单击 ①光标选中 子程序名称 匚子程序名回信类出公开命少按B Enter键 生成一个参 ②添加参数 按钮1被单击 参数名 类型 数组 名称并设置 数1 整数型 类型。最后 按“F5键” 运行程序, 单击“按钮 1”,信息框 不见了 信息框看不到的原因是“_按钮1_被单 击”子程序参数结构被改变,“易语言” 就会把它当作新建子程序,和“按钮1”没 有任何关系了,而新建子程序可以任意的 添加参数。 参数和变量的使用方法一样,可以使用赋值 语句在参数内临时存储数据。参数有“名字”(用来 引用参数所包含内容的词)、“数据类型”(确定参 数能够存储数据的种类)、“可空”和“参考”。参 数只可以在被定义的子程序中使用,相当于局部变量
168 8.4 子程序参数 ①光标选中 子程序名称, 按“Enter 键” 生 成 一 个 参 数。 这是按钮 1 被单击子程序 的原型,没有参 数。 ②添加参数 名称并设置 类型。最后 按“F5 键” 运行程序, 单击“按钮 1”,信息框 不见了。 信息框看不到的原因是“_按钮 1_被单 击”子程序参数结构被改变,“易语言” 就会把它当作新建子程序,和“按钮 1”没 有任何关系了,而新建子程序可以任意的 添加参数。 参数和变量的使用方法一样,可以使用赋值 语句在参数内临时存 储数据。参数有“名字”(用来 引用参数所包含内容的词)、“数据类型”(确定参 数能够存储数据的种类)、“可空”和“参考”。参 数只可以在被定义的子程序中使用,相当于局部变量
一第8章—易语言的子程 ①把83中“按钮1被单击”事件子程序的“参数1” 删除 ②在“信 子程序名返回值类型公开 息框子程 信息框子程序 参数的“类 序”添加两 参数名类型参考可空刻 型”属性可为 空。如果空,默 个文本型参 参数1 文本型 认为整数型。 数“参数1” 参数2 文本型 和“参数2”。 信息框(“你好!我是信息框 信息图标,) ③按“F5”键, 在输出面板中可/提示回输出|#调用表|Q查改变量 程序无法运行, E编译现行易程序 以看到次行输出 泽的子程序 文本。这就说明 10042 程序“信息 时所传递的参数太少 我们还要在调用 处提供具体的参 数 ④用光标选中此 子程序名返回值类型公开行并双击,在括号内 按钮1_被单击 添加“,”号,按 息框子 “ Enter”键 匚子程序名返回值类型公开 展开的方 ⑤看到了 按钮1_被单击 法:直接双击或 吗?多了个息子穆序正 用键盘上的右 光标键。 我们可以将 它展开。 169
169 ①把 8.3 中“_ 按钮 1_被单击”事件子程序的“参数 1” 删除。 ②在“信 息框子程 序”添加两 个文本型参 数“参数 1” 和“参数 2”。 参数的“类 型”属性可为 空。如果空,默 认为整数型。 ③按“F5”键, 程序无法运行, 在输出面板中可 以看到次行输出 文本。这就说明 我们还要在调用 处提供具体的参 数。 ④用光标选中此 行并双击,在括号内 添 加 “ ,” 号 , 按 “Enter”键。 ⑤看到了 吗?多了个 “+”号, 我们可以将 它展开。 展开的方 法:直接双击或 用键盘上的右 光标键
一囫一易语言图解教程一 子程序名返回值类型公开 备注 它们是互 相对应的,在上 按钮1_被单击 面添加文本型 下息框子程序 数据“易语 ·※参数1 言”,当程序运 ※参数2 行时,下面“参 数1”保存的数 据就是“易语 匚子程序名返回值类型公开备注 信息框子程序 参数名类型参考可空数组备注 参数1 文本型 参数2 文本型 ①接下来我们在程序中为子程序提供具体的参数数据。用 “Ctrl+Tab”键切换到界面设置区,在窗体上添加两个标签和两个编辑 框,并将编辑框的标题设置为“输入123”,提示用户 标签1〔标签〕 输入123 林*无效 事件处理子程序 量程序性 这是前面提到的“按 标签的标 钮1”,下面的是“按钮2”。 题在此处设置。 ②切换到代码编辑 面板,在子程序调用 子程序名返回值类型公开 备注 处,分别添加数据(编 按钮1_被单击 辑框提供的文本型数 信息框子程序编辑框1.内容,编辑框2.内容) 据) ※参数1:编辑框1.内容 70
170 它们是互 相对应的,在上 面添加文本型 数据“ 易语 言”,当程序运 行时,下面“参 数 1”保存的数 据就是“易语 言”。 ①接下 来我们 在程 序中 为子程 序提 供具体 的参 数数 据。用 “Ctrl+Tab”键切换到界面设置区,在窗体上添加两个标签和两个编辑 框,并将编辑框的标题设置为“输入 123”,提示用户。 这是前面提到的“按 钮 1”,下面的是“按钮 2”。 标签的标 题在此处设置。 ②切换到代码编辑 面板,在子程序调用 处,分别添加数据(编 辑框提供的文本型数 据)
一第8易语部的程廓一 「子程序名返回值类型公开备注 信息框子程序 参数名类型参考可空数组备注 ③修 参数1 改“信息 框子程 +;…4.如果(数1=.“123”且参数2三“123”) 信息框(“你好!我是信息框。”,#信息图标,) ;信息框〔“输入错误或没有输入。”,褙昔误图标,“错误”〕 ④按“F5”运行程序,在“编辑框1”和“编辑框2”中输入“123”,单击“按 钮1”,第一个信息框被弹出。你也可以输入其它的数据,看一看效果。 子程序如需要接收参数数据,必须先在子程序定义表中参数表部分定义 与欲接收数据数目相同的参数。调用子程序时所传递过来的数据将被顺序地 填入对应的参数中。如果所传递过来的数据与对应位置处的参数数据类型不 致,在可以互相转换时,系统将自动进行转换,否则会产生运行时错误 1、子程序可以接收参数,所定义的各参数的数据类型及参数数目决定 了该子程序所能够接收的参数数据的类型和数目,具有参数的子程序在被调 用时必须提供与参数数目相同的数据。如上面的第2步在调用子程序的同 时就把编辑框1.内容和编辑框2.内容作为参数数据对应地传递到了编辑框 子程序内的参数1、参数2参数内: 2、参数仅能在子程序内部使用,使用方法等同于变量。 171
171 子程序如需要接收参数数据,必须先在子程序定义表中参数表部分定义 与欲接收数据数目相同的参数。调用子程序时所传递过来的数据将被顺序地 填入对应的参数中。如果所传递过来的数据与对应位置处的参数数据类型不 一致,在可以互相转换时,系统将自动进行转换,否则会产生运行时错误。 1、子程序可以接收参数,所定义的各参数的数据类型及参数数目决定 了该子程序所能够接收的参数数据的类型和数目,具有参数的子程序在被调 用时必须提供与参数数目相同的数据。如上面的第 2 步在调用子程序的同 时就把编辑框 1.内容和编辑框 2.内容作为参数数据对应地传递到了编辑框 子程序内的参数 1、参数 2 参数内; 2、参数仅能在子程序内部使用,使用方法等同于变量。 ③ 修 改“信息 框子程 序”代 码。 ④按“F5”运行程序,在“编辑框 1”和“编辑框 2”中输入“123”,单击“按 钮 1”,第一个信息框被弹出。你也可以输入其它的数据,看一看效果
一囫一易语言图解教程一 8.5参数的可空属性 参数可空,从表面上就能理解它 的意思。就是在调用子程序时,可以 不提供在子程序中被定义成可空的参 数任何数据。看看下面 匚子程序名返回值类型公开。备注 信息框子程序 ①将“参数 匚参数名类型参考可空数组备注 ”可空属性 选中。方法 参数1 文本型 [参数2 是,选中单击 文本型 或选中按“空 女如果(参数1=“123”且参数2=“123”) 格”键。 框〔“你好!我是信息框。”,#信息图标,) 信息框(“输入错误或没有输入。”,错昔误图标,“错误”) ②把调用处 的“参数2 子程序名返回值类型公开备注 删除。 按钮1_被单击 息框子程序编辑框1.内容,) ·※参数1:编辑框1内容 如果本属性为真,那么在调用本子程序时,调用方可以不为此位置处 的参数传递数据。主要用作支持具有默认值的参数,也可以在为子程序添 加了新参数后又不想去更改以前调用此子程序的语句时使用。 172
172 8.5 参数的可空属性 参数可空,从表面上就能理解它 的意思。就是在调用子程序时,可以 不提供在子程序中被定义成可空的参 数任何数据。看看下面。 如果本属性为真,那么在调用本子程序时,调用方可以不为此位置处 的参数传递数据。主要用作支持具有默认值的参数,也可以在为子程序添 加了新参数后又不想去更改以前调用此子程序的语句时使用。 ①将“参数 2”可空属性 选中。 方法 是,选中单击 或选中按“空 格”键。 ②把调用处 的“参数 2” 删除