程序设计教程(第6章)

合集下载

JavaScript程序设计(第2版)第6章01.事件的基本概念

JavaScript程序设计(第2版)第6章01.事件的基本概念

浏览器对象
事件处理 JavaScript函数 作用在对象上的事件
用户与网页交互操作
图6-1 网页浏览器对象、事件及函数之间的关系
事件处理程序的调用
事件处理是对象化编程的一个很重要的环节,它可以使程序的逻辑结构更加清晰,使程序更具 有灵活性,提高了程序的开发效率。事件处理的过程分为3步:
l发生事件。
l启动事件处理程序。 l事件处理程序作出反应。其中,要使事件处理程序能够启动,必须通过指定的对象来调用相 应的事件,然后通过该事件调用事件处理程序。事件处理程序可以是任意JavaScript语句,但是我们 一般用特定的自定义函数(function)来对事件进行处理。
在使用事件处理程序对页面进行操作时,最主要的是如何通过对象的事件来指定事件处理程序, 其指定方式主要有3种方法:
JavaScript的相关事件
为了便于读者查找JavaScript中的所有事件,下面以表格的形式对各事件进行说明。 如表6-1所示。
表6-1
事件 鼠标键 onclick 盘事件 ondblclick onmousedown onmouseup onmouseover onmousemove onmouseout onkeypress onkeydown onkeyup 页面相 onabort 关事件 onbeforeunload onerror onload onresize onunload 单击鼠标时触发此事件 双击鼠标时触发此事件 按下鼠标时触发此事件 鼠标按下后松开鼠标时触发此事件 当鼠标移动到某对象范围的上方时触发此事件 鼠标移动时触发此事件 当鼠标离开某对象范围时触发此事件 当键盘上的某个按键被按下并且释放时触发此事件 当键盘上某个按键被按下时触发此事件 当键盘上某个按键被按下后松开时触发此事件 图片在下载时被用户中断时触发此事件 当前页面的内容将要被改变时触发此事件 出现错误时触发此事件 页面内容完成时触发此事件(也就是页面加载事件) 当浏览器的窗口大小被改变时触发此事件 当前页面将被改变时触发此事件

Java程序设计案例教程(第二版)周怡、张英主编。第6章 习题答案

Java程序设计案例教程(第二版)周怡、张英主编。第6章 习题答案
return "0";
方法的覆盖:在子类中重定义父类的同名方法。方法覆盖表现为父类与子类之间的方法的多态性,其中形参表、返回值类型也必须相同,且子类方法不能有比父类方法更严格的访问权限。可以为编译时多态性或运行时多态性。
6.什么叫构造方法?构造方法的作用是什么?
答:构造方法是对象实例化时完成对象及其成员变量的初始化时所调用的一种特殊的方法。
}
}
//类Draw_Clean继承抽象类Draw_Eraser并覆盖抽象方法getEraser()
classDraw_CleanextendsDraw_Eraser
{
publicvoidgetEraser()
{
System.out.println("橡皮擦选项:选择橡皮擦>>>选中需要清除内容>>>确定");
运行时多态性:在编译时不能确定、只有在运行时才能确定执行多个同名方法的哪一个。
五、编程题
1.考虑设计一个绘图工具的面向对象描述,写出代码框架,充分应用抽象、多态等方法。
classDraw_Graph
{
doubleline;
doublecircle;
//定义构造方法
publicDraw_Graph()
* @return计算结果
*/
public Complex multiply(Complex complex){
double x = this.x * complex.x - this.y * complex.y;
double y = this.y * complex.x + this.x * complex.y;
return new Complex(x,y);

第6章-C#程序设计教程(第2版)-蒙祖强-清华大学出版社

第6章-C#程序设计教程(第2版)-蒙祖强-清华大学出版社
一个简单的文本编辑器应用程序:可以实现对txt文件的读取和 保存以及对字符的简单编辑操作。
(1)创建C#窗体应用程序TxtEditApp:将窗体Form1的text属 性值设置为“简单的文本编辑器”,然后在窗体上分别添加控 件 richTextBox1 和 组 件 openFileDialog1 、 saveFileDialog1 、 toolStrip1,并将控件richTextBox1的Dock属性值设置为Fill, 使之充满整个窗体。
因此了解System.Object类的一些常用属性、事件和方法对掌握下 文要介绍的常用组件的使用方法有着事半功倍的效果。
6.2 组件的公共属性、事件和方法C#程序设计教程——蒙祖强编著
6.2.1 Object类
1. public virtual bool Equals(object obj)
➢该方法用于判断当前对象和给定的对象是否相等。在默认情况 下(没有重写该方法时),对象a和b相等是指a和b是非空的且指 向同一个对象。
//“Open file”菜单项 private void openFileToolStripMenuItem_Click(object sender, EventArgs e) {
openFileDialog1.Filter = "txt files(*.txt)|*.txt"; if (openFileDialog1.ShowDialog() == DialogResult.OK) {
6.1 一个简单的文本编辑器
C#程序设计教程——蒙祖强编著
6.1.1 创建文本编辑器程序的步骤
(4)执行该程序后,选择相应的菜单命令,可以打开txt文件, 也可以在richTextBox1编辑文本后保存到txt文件中:

C语言程序设计(第3版)第6章习题参考答案

C语言程序设计(第3版)第6章习题参考答案
printf("\nplease input the first idiom: ");
gets(stridiom1);
printf("\nplease input the second idiom: ");
gets(stridiom2);
fnConcat(stridiom1,stridiom2);
printf("\nthe result is: %s",stridiom1)=0;
while(b[j] != '\0') /*把第二个字符串的内容连接到第一个字符串的后面*/
{
a[i+j] = b[j];
j++;
}
a[i+j]= '\0'; /*添加字符串结束符*/
}
void main()
{ char stridiom1[80],stridiom2[80];
i++;
}
a[j]= '\0'; /*添加字符串结束符*/
}
void main()
{ char stridiom1[80];
printf("\nplease input the first idiom: ");
gets(stridiom1);
fnConvert(stridiom1);
printf("\nthe result is: %s",stridiom1);
scanf("%d",&n);
printf("%ld",fnF(n));
getch();
}
(4)编一函数判别某一数是否为素数,若是,返回值为1,否则,返回值为0。

第6章C语言程序设计

第6章C语言程序设计

6.2函数
C语言中又规定在以下几种情况时可以省去主调函数中对 被调函数的函数说明。
本章目录
6.1函数分类 6.2函数
6.3 函数调用
6.4函数和数组 6.5变量的作用域 6.6变量的存储类别 6.7内部函数和外部函数
6.1函数分类 C语言中可从不同的角度对函数分类。
1. 从函数定义的角度,函数分为库函数和用户定义函数。
(1)库函数 由C系统提供,用户无须定义, 不必在程序中作类型说 明,需在程序前包含有该函数原型的头文件即可在程序中直接 调 用。如printf()、scanf()、getchar()、putchar ()等函数 均属库函数。 (2)用户定义函数 由用户按需要写的函数。用户自定义的函数在主调函数中对其 进行类型说明。
6.2函数
例6.2比较两个小朋友的个子,输出个子较高的。 float max(float a,float b) { if(a>b)return a; else return b; } void main() { float x,y,z; printf("input two numbers:\n"); scanf("%f,%f",&x,&y); z=max(x,y); printf("max=%f\n",z);
改例6.2如下:
6.2函数
main() { float max(float a,float b); float x,y,z; printf("input two numbers:\n"); scanf("%f,%f",&x,&y); z=max(x,y); printf("max=%f\n",z); } float max(float a,float b) { if(a>b)return a; else return b; }

精品文档-Java程序设计项目化教程(陈芸)-第6章

精品文档-Java程序设计项目化教程(陈芸)-第6章
中间容器不能独立存在,与顶层容器结合使用可以构建较 复杂的界面布局。这些中间容器主要包括:
■ JPanel:最灵活、最常用的中间容器。 ■ JScrollPane:与JPanel类似,但还可在大的组件或 可扩展组件周围提供滚动条。
第6章 任务6——创建登录界面中的容器与组件
■ JTabbedPane:包含多个组件,但一次只显ቤተ መጻሕፍቲ ባይዱ一个组 件,用户可以在组件之间方便地切换。
第6章 任务6——创建登录界面中的容器与组件 图6-4 JPanel示例
第6章 任务6——创建登录界面中的容器与组件
例6-3 TwoPanel.java 1 import java.awt.*; 2 import javax.swing.*; 3 class TwoPanel extends JFrame { 4 public TwoPanel( String title){ 5 super(title); 6} 7 public static void main(String args[]) { 8 TwoPanel fr=new TwoPanel("Two Panel测试"); 9 JPanel pan1 = new JPanel(); 10 JPanel pan2 = new JPanel();
因为还没有在窗口中添加任何组件,显示效果如图6-3所示。
第6章 任务6——创建登录界面中的容器与组件 图6-3 Swing窗口
第6章 任务6——创建登录界面中的容器与组件
2.中间容器(JPanel类) JPanel类在Java中又称为面板,属于中间容器,本身也 属于一个轻量级容器组件。由于JPanel类透明且没有边框, 因此不能作为顶层容器,不能独立显示。它的作用就在于放置 Swing轻量级组件,然后作为整体安置在顶层容器中。使用 JPanel类结合布局管理器,通过容器的嵌套使用,可以实现 对窗口的复杂布局。正是因为这些优点,使得JPanel类成为 最常用的容器之一。JPanel类的常用构造函数和方法如表6-2 所示。

钱能--c++程序设计教程(第二版)第六章

可以在VS2010上运行,供正在学习C++的同学参考。

我也是新手,可能在编程风格和思路上有待提高,也有一些题目不知道该如何下手,路过的朋友知道的可以告诉我,我的邮箱是guosheng-14@,可以督促我继续写以后的答案。

vc++6.0可能在头文件上有所区别。

第六章第一部分//6.1.1—频繁调用小函数#include<iostream>using namespace std;bool isnumber(char c) {return ((c>='0'&&c<='9')?1:0);}int main(){char ch;while(cin>>ch&&ch!='\n'){if(isnumber(ch)) cout<<ch<<" is a number."<<endl;else cout<<ch<<" is a non-number."<<endl;}}//6.1.1—给成内联函数#include<iostream>using namespace std;inline bool isnumber(char c) {return ((c>='0'&&c<='9')?1:0);}int main(){char ch;while(cin>>ch&&ch!='\n'){if(isnumber(ch)) cout<<ch<<" is a number."<<endl;else cout<<ch<<" is a non-number."<<endl;}}//6.2.3--栈法#include<iostream>#include<fstream>#include<sstream>#include<stack>using namespace std;int main(){ifstream in("abc.txt");for(int n,line=0;in>>n&&n&&in.ignore();){cout<<(line++?"\n":"");for(string s;getline(in,s)&&s!="0";){istringstream sin(s);stack<int> st;for(int last=0,coach;sin>>coach;st.pop()){for(int p=last+1;p<=coach;p++) st.push(p);if(last<coach) last=coach;if(st.top()!=coach) break;}cout<<(!sin?"yes\n":"no\n");}}}//6.3.2--Fibonacci#include<iostream>#include<vector>#include<time.h>#include<cmath>using namespace std;int f1(int n){if(n==0) return 0;if(n==1) return 1;return f1(n-1)+f1(n-2);}int f2(int n){int a=0,c;for(int b=1,i=2;i<=n;i++) //一个书上的错误,c重定义了c=a+b,a=b,b=c;return c;}int f3(int n){vector<int> v(n+1,0);v[1]=1;for(int i=2;i<=n;i++)v[i]=v[i-1]+v[i-2];return v[n];}int f4(int n){return (pow((1+sqrt(5.0))/2,n)-pow((1-sqrt(5.0))/2,n))/sqrt(5.0);}int main(){int a;clock_t start=clock();for(int i=1;i<5;i++)a=f1(35);cout<<(clock()-start)/CLK_TCK<<endl;start=cl ock();for(int i=1;i<5;i++)a=f2(35);cout<<(clock()-start)/CLK_TCK<<endl;start=cl ock();for(int i=1;i<5;i++)a=f3(35);cout<<(clock()-start)/CLK_TCK<<endl;start=cl ock();for(int i=1;i<5;i++)a=f4(35);cout<<(clock()-start)/CLK_TCK<<endl;}//6.4.2—矩形法#include<iostream>#include<fstream>#include<cmath>using namespace std;double f(double x) {return 1/x;}double s(double a,double (*)(double));int main(){ifstream in("in.txt");ofstream out("out.txt");for(double x;in>>x;)out<<s(x,f)<<endl;}double s(double a,double (*f)(double)){double last=0;double result=1;for(int n=4;abs(result-last)>0.0001;n*=2){last=result;result=0;for(int j=0;j<n;j++){double pace=(a-1)/n;result+=pace*f(1+pace*j);}}return last;}//6.5.2—判断字串相等1#include<iostream>#include<algorithm>#include<string>#include<fstream>using namespace std;int main(){ifstream in("in.txt");for(string s,t;in>>s>>t;){sort(s.begi n(),s.end());sort(t.begin(),t.end());cout<<((s==t)?"yes":"no")<<endl;}}//6.5.2—判断字符串相等2#include<iostream>#include<algorithm>#include<string>#include<fstream>using namespace std;int main(){ifstream in("in.txt");for(string s,t;in>>s>>t;){int sc0=count(s.begin(),s.end(),'0');int sc1=count(s.begin(),s.end(),'1');int tc0=count(t.begi n(),t.end(),'0');int tc1=count(t.begi n(),t.end(),'1');if(sc0==tc0&&sc1==tc1) cout<<"yes"<<endl;else cout<<"no"<<endl;}}//6.5.2—判断字串相等3#include<iostream>#include<algorithm>#include<string>#include<fstream>using namespace std;int main(){ifstream in("in.txt");for(string s,t;in>>s>>t;){int sc0=count(s.begin(),s.end(),'0');int tc0=count(t.begi n(),t.end(),'0');if(sc0==tc0&&s.length()==t.length()) cout<<"yes"<<endl;else cout<<"no"<<endl;}}//6.5.5—剩余串排序1#include<iostream>#include<iterator>#include<fstream>#include<string>#include<algorithm>using namespace std;int main(){ifstream in("in.txt");for(string s,t,u;in>>s>>t;u=""){sort(s.begi n(),s.end());sort(t.begin(),t.end());set_difference(s.begin(),s.end(),t.begin(),t.end(),back_inserter(u));cout<<u<<endl;}}//6.5.6—剩余串排列2#include<iostream>#include<iterator>#include<fstream>#include<string>#include<algorithm>using namespace std;int main(){ifstream in("in.txt");for(string s,t,u;in>>s>>t;){sort(s.begi n(),s.end());for(int i=0;i<s.length();++i)if(t.find(s[i])==string::npos) cout<<s[i];cout<<endl;}}//6.6.1—预留向量空间#include<iostream>#include<fstream>#include<sstream>#include<vector>#include<map>using namespace std;typedef multimap<int,int> Mmap;int main(){ifstream in("in.txt");vector<string> abc;Mmap nums;int n=0;for(string s;getline(in,s);){istringstream sin(s);int num=0;for(string t;sin>>t;num++);if(num){num s.insert(Mmap::value_type(num,n++));abc.push_back(s);}}for(Mmap::iterator it=nums.begin();it!=nums.end();it++)cout<<abc[it->second]<<endl;}//6.6.2—素数判断---------------------------不要运行---------------几十分钟#include<iostream>#include<cmath>using namespace std;bool isprime(int);int main(){int n=0;for(int i=2;i<100000000;i++)if(isprime(i)) n++;cout<<n<<endl;}bool isprime(int n){int sqrtn=sqrt(n*1.0);for(int i=2;i<=sqrtn;i++)if(n%i==0) return fal se;return true;}//6.6.3---素数判断技巧版#include<iostream>#include<bitset>using namespace std;int main(){bitset<100000000> *p=new bitset<100000000>;p->set();for(int i=2;i<p->size();i++)if(p->test(i))for(int j=i*i;j<p->size();j+=i)p->reset(j);int num=0;for(int i=0;i<p->size();i++)if(p->test(i))num++;cout<<num<<endl;}低级编程这里不写了,根本不用看。

程序设计6


Android程序设计基础教程
PlaybackCompleted 状态:文件正常播放完毕,而又没有设置
循环播放的话就进入该状态,并会触发OnCompletionListener的 onCompletion()方法。此时可以调用start()方法重新从头播放文 件,也可以stop()停止MediaPlayer,或者也可以seekTo()来重新 定位播放位置。
清华大学出版社
Android程序设计基础教程
6.1 MediaPlayer
MediaPlayer是有生命周期的。
右边的状态转换图清晰的描 述了MediaPlayer的各个状态, 也列举了主要的方法的调用时 序,每种方法只能在一些特定 的状态下使用,如果使用时 MediaPlayer的状态不正确则会 引发IllegalStateException异 常。
表.6-3MediaPlayer类的常见方法
清华大学出版社
Android程序设计基础教程
6.1 MediaPlayer
MediaPlayer的一些常见的方法:
setDataSource(FileDescript or fd, long offset, long length) setDataSource(String path) setAudioStreamType(int streamtype) seekTo(int msec) 无返回值,根据 FileDescriptor设置多媒体数 据来源 无返回值,根据路径设置多媒 体数据来源 无返回值,指定流媒体的类型 无返回值,指定播放的位置 (以毫秒为单位的时间) 无返回值,重置MediaPlayer 对象 无返回值,释放MediaPlayer 对象 无返回值,准备异步
清华大学出版社

C语言程序设计教程第六章课后习题参考答案

C语⾔程序设计教程第六章课后习题参考答案P158 1求三个实数最⼤值#includefloat max(float,float,float);int main(){float a,b,c,m;printf("请输⼊三个实数:");scanf("%f %f %f",&a,&b,&c);printf("最⼤数为%f\n",max(a,b,c));return 0;}float max(float a,float b,float c){float t;if(a>b&&a>c)t=a;else if(b>a&&b>c)t=b;elset=c;return t;}P158 2求最⼤公约数最⼩公倍数#includeint fun1(int a,int b);int fun2(int a,int b);int main(){int a,b;printf("请输⼊两个整数:");scanf("%d %d",&a,&b);printf("最⼤公约数为:%d\n",fun1(a,b));int t,r;if(a{t=a;a=b;b=t;}while((r=(a%b))!=0) {a=b;b=r;}return b;}int fun2(int a,int b) {int n;n=(a*b)/fun1(a,b); return n;}P158 3求完全数#includevoid wan(int n); void main(){int n;for(n=1;n<1000;n++) wan(n);printf("\n");}void wan(int n){if(n%i==0)s=s+i;}if(n==s)printf("%d\t",n); }P158 4⽆暇素数#include#includeint nixvshu(int n);int isPrime(int n);int main(){int n,t;printf("⽆暇素数:\n");for(n=100;n<=999;n++) {t=nixvshu(n);if(isPrime(n)&&isPrime(t)) printf("%d\t",n);}printf("\n");return 0;}int nixvshu(int n){int x=0;while(n){x=x*10+n%10;n=n/10;}return x;int i;for(i=2;i<=sqrt(n);i++)if(n%i==0) return 0;return n;}P158 7递归函数#includeint Y(int n){if(n==0)return 0;if(n==1)return 1;if(n==2)return 2;elsereturn (Y(n-1)+Y(n-2)+Y(n-3)); } int main(){int n,k=0;for(n=0;n<=19;n++){printf("%d\t",Y(n));k++;if(k%5==0)printf("\n");}return 0;}P124 6分解质因数#include#includevoid fenjie(int );int main(){int n;printf("请输⼊⼀个正整数:"); scanf("%d",&n);if(isPrime(n)){printf("%d=1*%d\n",n,n);}else{fenjie(n);printf("\n");}return 0;}int isPrime(int n){int i;for(i=2;i<=sqrt(n);i++){if(n%i==0) return 0;}return 1;}int zhi(int n){int m;for(m=2;m<=n;m++){if(isPrime(m)&&(n%m==0)) break;void fenjie(int n){int m;printf("%d=%d",n,zhi(n));while(n>zhi(n)){m=zhi(n);n=n/m;printf("*%d",zhi(n));}}P47 1输出闰年#includeint f(int year);int main(){int year,k=0;for(year=1900;year<=2000;year++){if(f(year)){printf("%d\t",year);k++;if(k%5==0)printf("\n");}}return 0;}int f(int year){if((year%4==0&&year%100!=0)||(year%400==0)) return year;P47 2输出回⽂数#includeint fun(int n);int main(){int n,k=0;for(n=10;n<=2000;n++) {if(n == fun(n)){printf("%d\t",n);k++;if(k%5==0)printf("\n");}}return 0;}int fun(int n){int i=0;while(n>0){i=i*10+n%10;n=n/10;}return i;}P47 3进制转换#includevoid trans(int n,int base); int main()printf("请输⼊要转换的⼗进制数:"); scanf("%d",&n);printf("请输⼊转换的进制:"); scanf("%d",&base);trans(n,base);printf("\n");return 0;}(⽅法⼀)void trans(int n,int base){if(n){trans(n/base,base);if(n%base>=10)switch(n%base){case 10:printf("A");break;case 11:printf("B");break;case 12:printf("C");break;case 13:printf("D");break;case 14:printf("E");break;case 15:printf("F");break;}elseprintf("%d",n%base);}}(⽅法⼆)void trans(int n,int base){int r;char c;trans(n/base,base); r=n%base;if(r>=10)c='A'+r-10;elsec='0'+r;printf("%c",c);}}。

C语言程序设计教程 第6章

2017/8/21 11
模块设计的原则
模块独立
规模适当
层次分明
2017/8/21
功能专一
12
独立性原则表现在模块完成独立的功能 , 和其它模块间的关系简单 , 各模块可以单独调 试。修改某一模块 , 不会造成整个程序的混乱。
每个模块有特定功能
每个模块完成一个相对独立的特定子功能。在对任务逐步 分解时,要注意对问题的综合。例如, 一些模块的相似的 子任务,可以把它们综合起来考虑,找出它们的共性,把它 们做成一个完成特定任务的单独模块。
返回值
另外请注意这样的判断,如写成‘ 最好只使用局部变量,这样将方便调试。 如果不需返回则可 调用函数时输入参数的格式要与之相同 return 0; A‟<capital<„Z‟是不行 注意不要与已有库函数重名 的 2017/8/21
24
“函数”的主要知识点
函数的定义 函数的参数和返回值 函数的调用 嵌套和递归 变量的作用域
2017/8/21
18
例6.2 设计算法:找出a,b两数中的较大者,并输出
分析: 这个问题分三个步骤: • 输入两个数; • 找出其中的大数; • 输出大数。
2017/8/21
19
开始
输入a,b
0 a<b 非0 交换a,b 输出a
结束
2017/8/21
图6.3 找出a,b两数中的较大者算法流程图
2017/8/21
34
函数返回值
函数返回值通过return语句获得 函数返回值的类型就是函数的类型 return y; 将变量y的值返回给调用者 return y+3; 将表达式的值返回给调用者
2017/8/21 35
return 的数据类型与函数的类型矛盾时,自动 将数据转换成函数的类型
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
过程
学习目标:
熟悉过程的概念及其种类。掌握 Sub 过程的定义、 建立和调用,掌握 Function 过程的定义、建立和 调用。 掌握形参与实参的概念及其参数的两种传递方式
掌握过程的嵌套调用与递归调用 掌握过程和变量的作用域 掌握进制转换、素数等常用算法
6.1 Visual Basic的工程
2. Sub过程的建立
Sub过程可以在窗体模块(.frm)中建立,也可以在标准模块
(.bas)中建立。 1、在窗体模块(.frm)中建立可以在代码窗口中完成。 打开代码窗口后,在对象框中选择“通用”项,然后输入Sub 过程头,例如Sub Mysub1(n),按下回车键,窗口显示: Sub Mysub1(n) …… End Sub 此时可在Sub 和End Sub之间输入程序代码。 2、在标准模块(.Bas)中建立Sub过程,方法是: 选择“工程”菜单中的“添加模块”命令,打开“添加模块” 对话框;再选择“新建”或“现存”选项卡,,新建一个标准 模块获打开一个已有的标准模块。之后就可以在模块代码窗口 中编辑Sub过程了。
6.2.2 Function过程
1. 函数过程(Function过程)的定义
Visual Basic函数分为内部函数和外部函数,外部函数是用户根 据需要用Function关键字定义的函数过程,与子过程不同的是 函数过程将返回一个值 。 [Public|Private][Static]Function 函数名 ([< 参数列表 >])[As< 类 型>] <局部变量或常数定义> 是指函数返回值的 <语句块> 类型,如省略,返 [函数名=返回值] 回值是变体型的。 函数体 [Exit Function] <语句块> [函数名=返回值] End Function 函数返回值的处理
参数
2. Function 过程的调用
(1)直接调用
像使用VB内部函数一样,只需写出函数名和相应的参数 即可。例如: s = Max(a, b) Print Max(s, c)
(2)用Call语句调用
与调用Sub过程一样来调用Function过程,例如: Call Max(a, b) 当用这种方法调用Function过程时,将会放弃返回值
6.4 参数传递
参数传递可以实现调用过程和被调过程之间的信息交换 两种方式:按值传递和按地址传递 6.4.1 形参与实参 形式参数(简称形参)
指的是被调用过程中的参数。出现在Sub过程或 Function过程中,形参可以是变量名和数据名,形参 表中的各个变量之间用逗号分隔。

实际参数(简称实参)
• 是调用过程中的参数。写在子过程名或函数名后括 号内,其作用是将实参数据传送给形参。 • 实参可由常量、表达式、有效的变量名、数组名 (后加左、右括号,如 A( ) )组成,实参表中各参
数用逗号分隔。
• 形参表和实参表中的对应变量名可以不同,但实参
和形参的个数、顺序以及数据类型必须相同
定义过程和调用过程的示例:
(或变量)的“可见性”。
[Public|Private] Sub 子过程名([形式参数列表])
…..
End Sub
通用子过程和函数过程既可写在窗体模块中也可写在标准模块中,在定义时可选
用关键字Private(局部)和 Public(全局),来决定它们能被调用的范围。
6.2 过程
过程有两个重要作用:一是把一个复杂的任务分 解为若干个小任务,可以用过程来表达,从而使 任务更易理解,更易实现,将来更易维护;二是 代码重用,使同一段代码多次复用。

退出过程语句
根据过程的作 用范围任选其 一
说明:
以字母或汉字、数字 和下划线组成的字符 串。
(1)递得到结果,调用时可 返回多个值。 (2)子过程若需要接受参数,则可在过程名后的括号中定义
接受参数的变量及变量的数据类型。接受参数的变量称为形
程序运行结果

调用过程
Form_Load() 事件过程 Mysub1过程
Call mysub1(30) Call mysub2
Call mysub2
Call mysub2
Call mysub2
Call mysub1(30)
Mysub2过程
事件过程Form_Load()中,通过Call来分别调用两个Sub过程
应用程序通常包括窗体文件(.frm)、模块文件(.bas) 和类模块(.cls),
应用程序 工程文件 (.vbp)
窗体模块 文件(.frm)
类模块 文件(.cls)
标准模块 文件(.bas)
声明 部分
Sub 过程
Function 过程
事件 过程
声明 部分
Sub Main 过程
Sub 过程
Function 过程
过程名[实参表]
例如,调用名为SubCal的过程: Call SubCal(10) SubCal 10
例6.3
计算5! + 10!
因为计算5!和10!都要用到阶乘n! (n!=1×2×3×…×n) 所 以把计算n!编成Sub过程 采用Print直接在窗体上输出结果,程序代码: Private Sub Form_Load() Show Dim y As Long, s As Long Call Jc(5, y) Private Sub Jc(n As Integer, t As Long) s=y Dim i As Integer Call Jc(10, y) t=1 s=s+y For i = 1 To n Print "5! + 10! ="; s t=t*i End Sub Next i 程序运行结果: End Sub 5! + 10! = 3628920 注意参数n和t的不同,n是带入参数,t是结果
VB工程的组成 一个 Visual Basic 工程至少包含一个窗体 模块,还可以根据需要 包含若干个标准模块和 类模块,本书将只讨论 窗体模块和标准模块的 使用方法。通过图可以 清楚看出 Visual Basic 工程的模块层次关系。
概念:过程(或变量)的作用域指的是过程(或变量)的有效范围,即过程
式参数。简称“形参”,仅表示形参的类型、个数、位置, 定义时是无值的,只有在过程被调用时,虚实参结合后才获 得相应的值。 (3)过程可以无形式参数,但括号不能省。
(4)参数的定义形式:
[ByVal|ByRef] 变量名 [( )][As 类型][,…], ByVal表示当该过程被调用时,参数是按值传递的;缺省 或ByRef表示当该过程被调用时,参数是按地址传递的。 如:public sub swap2 (ByVal X As integer, ByVal y As integer)
. Function过程的建立
与Sub过程相同
可以在“代码窗口”中直接输入来建立Function过
程。
也可以选择“工具”菜单中的“添加过程”命令来 建立Function过程(选择“函数”类型) 。
例6.2 输入三个数,求出它们的最大数
把求两个数中的大数编成Function过程,过程名为Max 本例采用InputBox函数输入三个数,判断出最大数后采用 Print直接输出在窗体上。 程序代码如下: Private Sub Form_Load() Show Dim a As Single, b As Single, c As Single Dim s As Single Function max(m, n) As a = Val(InputBox("输入第一个数")) Single b = Val(InputBox("输入第二个数")) If m > n Then c = Val(InputBox("输入第三个数")) max = m s = max(a, b) Else max = n Print "最大数是:"; max(s, c) End If End Sub End Function
调用过程:Call Mysub(100, "计算机" , 1.5)
定义过程:Sub Mysub(t As Integer,s As String,y As Single) “形实结合”是按照位置结合的,即第一个实参值(100)传送给 第一个形参t,第二个实参值(“计算机”)传送给第二个形参s, 第三个实参值(1.5)传送给第三个形参y。
VB应用程序是由过程组成的,过程是完成某种特 殊功能的一组独立的程序代码。分为两大类过程。
事件过程是当某个事件发生时,对该事件作出响 应的程序段,它是VB应用程序的主体。
通用过程是独立于事件过程之外,可供其他过程
调用的程序段。
把相同的任务编成相对独立的“子过程”。
当事件过程需要执行这个任务时,可使用调用语句 ( 如 Call)实行调用。子过程执行完后,会返回事件过程中调 用语句Call的后续语句继续执行
数组可以作为形参出现在过程的形参表中
例6.4 求出学生成绩的平均分、最高分及最低分
输入若干个(不超过100)个学生的成绩,求出平均分、 最高分及最低分 本例采用InputBox函数来输入成绩,计算结果直接输出 到窗体上
Private Sub Form_Load()
6.3. 过程的调用
事件过程是通过事件驱动和由系统自动调用的,而Sub过程 则必须通过调用语句实行调用
1. Function 过程的调用
调用Sub过程有以下两种方法: (1)使用Call语句。格式: Call 过程名([实参表])
对无参数过程调用, 直接写过程名就行 (2)直接使用过程名,格式: 了
6.2.3 查看过程
查看当前模块中有哪些Sub过程和Function过程:
相关文档
最新文档