首页  前一页  后一页  末页
[281] [282] [283] [284] [285]
本留言簿共有493条记录, 现在时间2025-5-25 10:52:27,计算机地址:192.168.9.44
日期查询:
现在是第56页
一共有99页
Books库中表及结构信息 环境:一键安装 库表:Mysql.sql  xx3.sql xx4.sql 页面:Myphp.php   
序号 留言内容
285

D:2015-4-9
T:17:38:00
IP:192.168.9.168



作者:
张顺海

2105.4.10 星期五

教学内容:过程设计,参数传递

教学目的:掌握综合程序的设计及调用,以及各段程序之间的参数传递

教学重点:参数传递

教学难点:变量的作用域

教学时间:5课时

教学过程:

一、复习导入

上几节课,我们学习了子程序的设计、调用,以及调用过程中的变量作用域。并举例说明了全局变量、局部变量和私有变量的属性和作用。上星期五的课,开运动会耽误了一天。今天,我们就学习过程文件、过程调用、参数传递的问题。

二、新授

1)过程文件与过程
 过程文件:将多个子程序写到一个文件中(减少系统资源的占用,提高工作效率),扩展文件名默认.prg。
 过程文件中的‘子程序’有了一个名字叫‘过程’,并不是简单的把子程序罗列到一个文件中,而有固定的标志,以procedure开始,以endprocedure结束。

2)过程文件的打开与关闭
 a.一次打开多个过程文件
  set procedure to 过程文件1,过程文件2,过程文件.....
 b.一次打开一个过程文件
  set procedure to 过程文件
  这样打一个过程文件,自动关闭原来已经打开的过程文件
 c.一次打开一个过程文件,不关闭原来的过程文件
  set procedure to 过程文件 additive
 d.一次关闭所有已经打开的过程文件
  set procedure to
 e.一次只关闭指定的一个过程文件
  set procedure to 过程文件名

 注意:过程文件一经打开,直到下命令关闭前,都是打开的,可以直接调用。注意的是在调用过程文件中的过程之前,要打开过程文件,否则找不到调用的‘过程’。

3)过程的调用,和子程序的调用一样

4)带参数的调用
  带参数的意义就在于调用程序的同时,把程序需要的信息传递过去。
  参数的种类:
  a.实际参数(do 程序名 with x1,x2,x3)其中的x1,x2,x3为实际参数,简称:实参
  b.形式参数(被调用程序的首句为 parameters a1,a2,a3)其中的a1,a2,a3为形式参数,简称:形参
  c.实参与形参要求个数一一对应,数据类型一一对应,否则报错

  参数传递方式的种类:
  a.地址传递
  当实际参数以‘变量’的形式(如:do x2 with x)其中,实际参数为变量x,则x为地址传递。
  b.值传递(分为三种形式)
   常量:do x2 with 10
   变量:do x2 with (x)
   表达式:do x2 with x+0
  异同:
   都可以把数据传递给被调用的子程序或者过程。
   但被调用的子程序或者过程对主程序的影响却是不一样的。其中地址传递中对‘形参’的改变,就是对实参的改变,即在被调用的子程序或者过程中改变了形参,则子程序或者过程返回时,对应实参的(变量)值已经发生改变。如果是‘值’传递,没有这种影响,即主程序中的相应的数据不发生改变。

三、练习

1.下载v68_4.prg的过程文件,分析里边的代码,然后按2中的命令列表执行,分析其中的情况

 

PROCEDURE jiecheng
PARAMETERS x,y
s=1
FOR i=1 to x
s=s*i
ENDFOR
y=s
? y
RETURN
ENDPROC


FUNCTION jc
PARAMETERS x
s=1
FOR i=1 to x
s=s*i
ENDFOR
RETURN s
ENDPROC

PROCEDURE sys
x=1
y=2
=f(x,y)
?x,y
DO f with x,y
? x,y
ENDPROC

FUNCTION f(fx,fy)
fx=10
fy=20
RETURN
ENDFUNC

 

2.命令列表

? jiecheng(5)            直接调用过程中的指定过程
SET PROCEDURE TO v68_4    发现上边的命令不能正常调用,因为过程处于关闭状态,先打开
? jiecheng(5)     显示5 的阶乘,120
? jiecheng(10)  显示10的阶乘,3628800
? jiecheng(10)+jiecheng(15)+jiecheng(20)+jiecheng(25)   显示10!+15!+20!+25!
? jc(2)   自定义函数的调用,显示2的阶乘,2

? jc(5)   自定义函数的调用,显示5的阶乘,120

 

b=1  创建变量b,让b=1
DO jiecheng with 5,b   采用子过程调用的格式,通过变量b带回结果
DO jiecheng with 5,b
? b          显示,b的结果为120,属于正常调用

 

b=1  让变量b,重新为1

DO jiecheng with 5,(b)    通过使用括号的形式传递参数、调用
?b    显示,b的结果为1,说明b没有带回结果

 

b=1  让变量b,重新为1
DO jiecheng with 5,b+0   通过表达式的形式传递参数、调用
?b   显示,b的结果为1,说明b没有带回结果

 

DO sys  调用过程文件中的sys过程,sys过程中又调用了过程文件中的自定义函数,且返回值
 

CLEAR
SET PROCEDURE TO 关闭过程文件
b=0

DO jiecheng in v68_4 with 5,b   关闭过程文件后,在命令中含有in <过程文件名>,也能正常调用

? b  显示,b的结果120
 

SET PROCEDURE TO v68_4
b=0
? jiecheng(5,b)   通过函数的调用方式传递参数
? b   显示结果为0
DO jiecheng in v68_4 with 5,b
? b  显示结果为120
 

 

四、总结

1.过程文件、过程的区别

2.过程文件打开、关闭

3.过程文件中的过程调用

4.子过程的两种调用方式(子程序、自定义函数)

5.过程传递参数的区别(程序do with 、函数 fx(x,y)的形式)

五、作业

284

D:2012-3-30
T:7:45:00
IP:192.168.9.168



作者:
张顺海

2015.3.30 星期一

教学内容:子程序序的运用

教学目的:掌握子程序的调用,及变量的作用域

教学重点:子程序的编写

教学难点:变量的作用范围

教学时间:五课时

教学过程:

一、复习导入

上几节课,我们学习了运用循环解决“九宫格”的填充问题,里边运用二维“数组”的描述表格,用条件表达“规则”,用双重循环“输出”表格内容。

其实,有的时候,我们可以把反复需要运行的程序单独出来,方便其他人独立编写,有利于工作效率和分工协作。需要的时候,还可以用于不同的程序段进行调用,以扩充程序的功能。这就是“子程序”的概念。

二、新授

1.回忆上星期五上机内容
 1)数列问题(一条龙排列)
 2)杨辉三角
2.新授内容
 1)子程序的概念
 a.被调用的程序为子程序
 b.只调用子程序,不被别的程序调用的程序为主程序
 c.程序既可以调用子程序,也可被调用
 d.子程序是以单独存在的文件存储,扩展名为.prg
 e.子程序的建立与正常程序一样,命令为modi comm

 2)子程序的调用(不带参数的子程序调用)
 格式1:do 子程序名
 格式2:子程序名()

 3)过程文件与过程
 过程文件:将多个子程序写到一个文件中(减少系统资源的占用,提高工作效率),扩展文件名默认.prg。
 过程文件中的‘子程序’有了一个名字叫‘过程’,并不是简单的把子程序罗列到一个文件中,而有固定的标志,以procedure开始,以endprocedure结束。

 4)过程文件的打开与关闭
 a.一次打开多个过程文件
  set procedure to 过程文件1,过程文件2,过程文件.....
 b.一次打开一个过程文件
  set procedure to 过程文件
  这样打一个过程文件,自动关闭原来已经打开的过程文件
 c.一次打开一个过程文件,不关闭原来的过程文件
  set procedure to 过程文件 additive
 d.一次关闭所有已经打开的过程文件
  set procedure to
 e.一次只关闭指定的一个过程文件
  set procedure to 过程文件名

 注意:过程文件一经打开,直到下命令关闭前,都是打开的,可以直接调用。注意的是在调用过程文件中的过程之前,要打开过程文件,否则找不到调用的‘过程’。

 5)过程的调用,和子程序的调用一样

 6)带参数的调用
  带参数的意义就在于调用程序的同时,把程序需要的信息传递过去。
  参数的种类:
  a.实际参数(do 程序名 with x1,x2,x3)其中的x1,x2,x3为实际参数,简称:实参
  b.形式参数(被调用程序的首句为 parameters a1,a2,a3)其中的a1,a2,a3为形式参数,简称:形参
  c.实参与形参要求个数一一对应,数据类型一一对应,否则报错

  参数传递方式的种类:
  a.地址传递
  当实际参数以‘变量’的形式(如:do x2 with x)其中,实际参数为变量x,则x为地址传递。
  b.值传递(分为三种形式)
   常量:do x2 with 10
   变量:do x2 with (x)
   表达式:do x2 with x+0
  异同:
   都可以把数据传递给被调用的子程序或者过程。
   但被调用的子程序或者过程对主程序的影响却是不一样的。其中地址传递中对‘形参’的改变,就是对实参的改变,即在被调用的子程序或者过程中改变了形参,则子程序或者过程返回时,对应实参的(变量)值已经发生改变。如果是‘值’传递,没有这种影响,即主程序中的相应的数据不发生改变。

  7)变量的属性,作用域
  作用域:就是变量的作用范围,即变量的影响范围
  因为,程序可以调用别的程序,自己也可以被别的程序调用,每段程序中都维护着自己的变量,有必要、也必须明白变量的作用域。
  变量的作用域:
  a.全局变量(public)
  b.私有变量(private)
  c.本地变量(local)
  区别:
  a.全局变量,一经定义,各级程序、子程序、过程中可以使用,且各级程序中对其改变会继承下来影响后来程序对该变量的使用,程序运行完毕并不清除全局变量,可以用clear memo或者release来清除全局变量。注意,在命令窗口建立的变量默认的属性是‘全局变量’。
  该类型的变量,需要public特殊说明,且在未使用变量名之前先定义。
  b.私有变量,如果变量不标明其作用域的类型就是私有变量。私有变量,作用域是本级程序及被调用的子程序或者过程。它会随着建立该变量的程序的结束(return)而被自动清除,即它的生命周期是拥有该变量的程序的运行期间。
  该类型的变量,可以由private说明,或者省略。
  c.本地变量,只属于本级程序,它的值只对本级程序有效(可视、可使、可用),好像对上级程序和下级程序不存在一样。(注意和私有变量的区别,私有变量对本级和下级有效)

 注意分析以下程序段:
 1) 
*x1.prg
 clea
 a=3
 b=4
 do x2
 ? a,b
 return

 *x2.prg
 c=13
 ? c
 do x3
 ? c
 return

 *x3.prg
 c=300
 ? c

 调用x1的运行结果为:
 do x1

13
 300
 300
 3 4

 2) 
*x1.prg
 clea
 a=3
 b=4
 do x2
 ? a,b
 return

 *x2.prg
 local c
 c=13
 ? c
 do x3
 ? c
 return

 *x3.prg
 c=300
 ? c

 调用x1的运行结果为:
 do x1

 13
 300
 13
 3 4

 3) 
*x1.prg
 clea
 a=3
 b=4
 do x2
 ? a,b
 return

 *x2.prg
 c=13
 ? c
 do x3
 ? c
 return

 *x3.prg
 local c
 c=300
 ? c

 调用x1的运行结果为:
 do x1

 13
 300
 13
 3 4 

3.练习
 1)将上边的程序分析,体会区别。
 2)带参数的程序调用

 *x4.prg
 set talf off
 clear
 c=10
 ?c
 do x41 with c
 ?c
 c=10
 ?c
 do x41 with (c)
 ?c
 c=10
 ?c
 do x41 with c+0
 ?c
 return

 *x41.prg
 parameters x
 x=x*10
 return

 执行后的结果:
 do x4

 10
 100
 10
 10
 10
 10
 分析:
 第一次,是地址传递,则对形参x的改变,就是对实参c的改变。
 第二次、第三次,是值传递,则对形参x的改变,并不影响实参c的值。三、练习

 

四、总结

a1.prg

CLEAR
a=3
b=4
c=a+b
DO a2
? a,b,c,d
?e
RETURN
 

 

a2.prg

PUBLIC d
LOCal c
c=10
d=15
e=20
? a,b,c,d,e

RETURN

 

结果:

子程序中的变量作用域

 

 

五、作业

283

D:2015-3-25
T:9:55:00
IP:192.168.9.168



作者:
张顺海

2015.3.25 星期三

教学内容:九宫格

教学目的:掌握多重循环的应用

教学重点:数组、循环控制、双重循环应用

教学难点:模拟填数的程序控制、条件判断

教学时间:五课时

教学过程:

一、复习导入

  上节课,我们学习了双重循环、多重循环相关的知识,在最后,给大家了一个《九宫格》《二十五宫格》的填充问题,很容易上手,但用计算机程序的方式去填充,是这节课我们学习的重点。

  智能条件的梳理与运用,是让程序更加聪明的地方。

二、新授内容

1.什么是九宫格

2.看下面的矩阵

8  1  6

3  5  7

4  9  2

3规律如下:

1)三乘三,九个格,填充1-9的九个不重复的数字

2)三个横行、三个纵列、两条对角线上的三个数字之和都等于同一个数15

3)填充规律:

第1个数字1,应该填充到首行中间位置,即1行2列;

第2个数字2,应该填充到当前位置的右上角的位置,即行减一,列加1

但如果行出界(行数<1),就让行最大,即为3;

如果列出界(列>3),就让列最小,即为1;

如果当前数字是3的倍数(如3、6等),则下一个数字在它的正下方,即行加一,列不变

下一个数字以此类推,直到填充到9为止;

4)情况梳理

确定第一个数的位置,找好参照物;

判断下一个数在当前数的右上方还是下方,取决于什么条件??

在下方,行列如何变化?

在另上方,行列如何变化?

行列变化了以后,可以出了界,几种情况出界,出了界如何控制

判断好一下数的位置后,填写数字,然后再确定下一个位置,以此类推

直到填写好所有的数字,即为完成

三、应用练习

程序应用

1)启动VFP6

2)在命令窗口里输入“ Modi comm v68_327",建立一段程序,程序名为难V68_327

3)输入以下程序段

clea

dime A(3,3)

h=1

L=2

for  I=1 to  9

a(h,L)=i

if mod(i,3)=0

   h=h+1

else

   h=h-1

  L=L+1

   if h<1

       h=3

  endif

  if L>3

    L=1

  endif

endif

endfor

for i =1 to 3

    for j=1 to 3

         ??A(I,j)

    endfor

    ?

endfor

return

 

四、总结

 

五、作业

1.调试程序,做好程序标注;

2.将此程序更改成5×5的”二十五宫格“,并输出,写在作业本上。

282

D:2015-3-16
T:7:40:00
IP:192.168.9.168



作者:
张顺海

2015.3.16 星期一

教学内容:循环控制总结

教学目的:掌握循环的三种形式

教学重点:每种循环的理论,还有适用的不同场合

教学难点:循环控制

教学时间:五课时

教学过程:

一、导入

   前边我们学习了“算题”、“找书”、“找人”的程序,主要训练的咱们顺序、分支、循环的程序设计结构方面的语法知识。其中,分支与循环应该是程序设计中智能控制的主要语句,尤其是循环,能够模拟现实生活中反复、重复、来回的操作过程。但,如何有效的控制循环的,来描述各种循环问题,是其中的重点。这节课开始,我们开始学习如何有效控制循环和运用循环中的数据。

二、复习、新授

1.循环制制三要素:(do while  ..... enddo)

1)循环变量初始化

2)设置循环条件

 3)循环变量变化

2.循环控制语句

i=1

do while i<=4

   i=i+1

enddo

3.程序实例,看看变量是如何运用的

1)

i=1

do whil i<=10

i=i+1

endd

2)

i=1

do whil i<=10

?? i

i=i+1

enddo

3)假如V3表中有10条记录

i=1

do whil i<=10

go i

disp

i=i+1

enddo

 4)假如V3表中有10条记录

use v3

i=10

do whil i>=1

go i

disp

i=i-1

enddo

use

5)假如V3表中不知道有多少条记录

use  v3

i=recc()

do whil i>=1

go i

disp

i=i-1

enddo

6)还可以这样做

use v3

do whil not eof()

disp

skip

enddo

use

或者

 use v3

go bottom

do whil not bof()

disp

skip -1

enddo

use

7)loop、exit的控制

loop:执行该语句的时候,不再执行enddo之间的语句,直接转向到Do while 测试循环条件,决定是否继续循环。

exit:执行该语句的时候,不再执行enddo之间的语句,直接转向到enddo之后的语句。

如:(请判断如何程序执行后显示的值)

a)

i=0

do while i<=10

i=i+1

if  mod(i,2)<>0

   ?? i*10

   loop

endif

?? i

enddo

b)

i=0

do while i<=10

i=i+1

if  mod(i,2)<>0

   ?? i*10

   loop

else

?? i

exit

endif

enddo

三、循环的另一种形式

for i=1 to 10 step 1

endfor / next

 改写:

for i=1 to 10

?? i

endfor

注意:for i=1 to 10 b step 1中可以使用如下格式,给循环变量赋初值

CLEAR
b=1
FOR i=b to 10
? i
ENDFOR

但,下边的语句,不影响程序运行的次数和结果

CLEAR
b=1
FOR i=b to 10
? i
b=8
ENDFOR

四、总结

1.循环的三种形式(do.....enddo,for ......endfor,Scan......endscan)。

2.循环变量对循环次数影响,两种形式如何确定循环变量的初值、终值和步长,来计算出循环次数?

 3.do.....endd主要用于未知循环次数的循环控制;for.....endfor主要用于已经循环次数的循环,Scan....endscan主要用于数据表的

 

 

五、作业

1.预习作业

子程序

2.书面作业

1)将V68数据表中的所有记录倒序逐条输出

2)将V68数据表中的偶数条记录倒序逐条输出

281

D:2015-3-12
T:10:54:00
IP:192.168.9.168



作者:
张顺海

2015.3.14 星期五

教学内容:综合程序设计,exit的应用

教学目的:掌握循环设计的运用

教学重点:exit语句

教学难点:控制exit的条件

教学时间:四课时

教学过程:

一、导入

大家回忆一下,上节课的作业,如何处理查找书名过程中的容错(即如果不输入,则重新输入),作业中的要求成了如果不输入书名,就退出程序,有何不同

二、“找书”的升级程序

三、举一反三

要求:找人

内容:建立一个数据表,由姓名、班级、学号等信息组成,输入一个人名,到数据表里查人,如果查到,就输出该人的其他的信息(如班级、学号),找不到,则指出该人(某某)不存在,且可以查找多人

知识点:

1)如何建立一个新表

2)建立一张新表后加以下四个记录

3)查找某人的命令:locate

4)判断找到与否相关的函数:Found()、eof()

5)如何可以查完一个人后,继续查找其他人,而不用退出程序

6)如何控制退出程序

源程序:

 

首页  前一页  后一页  末页
现在是第56页一共有99页