教学材料《VB导论》_7.2.pptVIP

  • 0
  • 0
  • 约1.13万字
  • 约 53页
  • 2026-01-22 发布于广东
  • 举报

*************吕萍丽—第7章过程编程实现5!+4!+3!+2!+1!Privatesubform_click()Dimsumasinteger,IasintegerFori=5to1step-1sum=sum+fact(i)NextIPrint“sum=“;sumEndsubPrivatefunctionfact(nAsInteger)asintegerfact=1dowhilen0fact=fact*nn=n-1loopEndfunction吕萍丽—第7章过程分析过程主调程序是:PrivateSubForm_Click()做for循环:第一趟:i=5sum=sum+fact(5)这是一个函数调用语句,此时控制转移到函数过程中进入到函数过程中,n是形参,接收地址的,此时n的值为5.开始做do循环:吕萍丽—第7章过程第一趟do循环:fact=1*5n=5-1=4第二趟do循环:fact=1*5*4n=4-1=3第三趟do循环:fact=1*5*4*3n=3-1=2第四趟do循环:fact=1*5*4*3*2n=2-1=1第五趟do循环:fact=1*5*4*3*2*1n=1-1=0结束do循环,函数过程结束,要返回值120到主调程序的断点处即.sum=0+120=120.吕萍丽—第7章过程此时n=0,则它的实参i=0。导致for循环结束,转去执行next下面的语句即打印sum=120,没有实现预期的效果。吕萍丽—第7章过程解决方法:方法一:改形参:传地址改成传值方法二:改实参:把实参改成表达式表达式既可以是算术表达式也可以给变量加括号比如,Fact((i)),此时实参i就变成了表达式,就失去了地址,只能传自己的数值给形参。吕萍丽—第7章过程重要考点真题再现1.用语句PrivateSubConvert(YAsInteger)定义的Sub过程时,以下不是按值传递的语句是()A.CallConvert((X))B.CallConvert(X*1)C.Convert(X)D.ConvertXD吕萍丽—第7章过程重要说明:对于按地址传递的形参,如果在过程调用时与之结合的实参是一个常数或者表达式,那么VB会用”按值传递”的方法来处理它,而且实参的数据类型没有必要和形参一致,只要相容(即:VB可以自动转换的,比如数字字符串就可以自动转换为数字)即可;而实参如果是变量那么形实的数据类型必须完全一致。吕萍丽—第7章过程参数数据类型转换的例子PrivateSubForm_Click()DimSasSingleS=125.5CallConvert((S),”12.5”)EndPrivateSubConvert(InxAsInteger,SingAsSingle)Inx=Inx*2Sing=Sing+23Print“Inx=”;Inx,”sing=”;SingEnd12612.5吕萍丽—第7章过程参数数据类型转换的例子PrivateSubForm_Click()DimSasSingleS=125.5CallConvert((S),”123a”)EndPrivateSubConvert(InxAsInteger,SingAsSingle)Inx=Inx*2Sing=Sing+23Print“Inx+”;Inx,”sing=”;SingEndsub不能转成单精度类型不匹配吕萍丽—第7章过程若在应用程序中用privatesubsub1(xasinteger,yassingle)定义了子程序sub1,调用程序中的变量I,j均为integer,则正确的调用子程序sub1的语句

文档评论(0)

1亿VIP精品文档

相关文档