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

D:2010-12-21
T:19:50:00
IP:192.168.1.200



作者:
张顺海
今日(2010.12.21日)授课回顾

1.程序设计结构:
 顺序结构、分支结构、循环结构

2.分支结构
 单分支、双分支、多分支

3.循环结构
 do whil .....enddo   (多用于未知循环次数的循环)
 for .........endfor/next(多用于已知循环次数的循环)
 scan ........endsczn  (多用于数据库表格的扫描)

4.上节实训实例讲解(一条龙数字排列)
 1 2 3 4 5
 10 9 8 7 6
 11 12 13 14 15
 20 19 18 17 16
源程序:
set talk off
for i=1 to 4
 for j=1 to 5
  if mod(i,2)=1
   ?? (i-1)*5+j
  else
   ?? i*5+1-j
  endif
  ?
 endfor
endfor

5.练习
 1 2 3 4 5
 1 2 3 4 5
 1 2 3 4 5
 1 2 3 4 5

for i=1 to 4
 for j=1 to 5
  ?? j
 next
 ?
next
************************
 1 2 3 4 5
 6 7 8 9 10
 11 12 13 14 15
 16 17 18 19 20 

for i=1 to 4
 for j=1 to 5
  ?? (i-1)*5+j
 next
 ?
next
*******************
 1 2 3 4 5
 6 7 8 9 10
 11 12 13 14 15
 16 17 18 19 20 

for i=1 to 4
 for j=1 to 5
  ?? (i-1)*5+j
 next
 ?
next

6.作业分析(杨辉三角)
 1
 1 1
 1 2 1
 1 3 3 1
 1 4 6 4 1
 1 5 10 10 5 1
 1 6 15 20 15 6 1
规律:
 1.指定行上有与行数一致的个数,例如第5行上有5个数;
 2.每行的首尾为1;
 3.从第三行开始,每行的第2个数到倒数第二个数的规律为,等于上一行对应位置上的数与该数前边数字之和;
 4.由此推出此数列的前10行。

参考:
dime a(10,10)
for i=1 to 10
 a(i,1)=1
 a(i,i)=1
endfor

for i=3 to 10
 for j=2 to i-1
  a(i,j)=a(i-1,j)+a(i-1,j-1)
 next
next

for i=1 to 10
 for j=1 to i
  ?? a(i,j)
 endfor
 ?
next

7.认真分析今天的题目,以小组为单位分析、沟通。
59

D:2010-12-19
T:8:53:00
IP:188.188.2.1



作者:
张顺海
重点总结:(同学们问题较多的问题)
1.dime s(3,4)
 s(2,3)=[2+3]
 ? type(s(7))

 结果应该是:N
 分析:
 二维数组可以被一维数组形式访问。这里的s(2,3)和s(7)正好是互访的。(一维数组不能被二维访问)
 给s(2,3)赋值为[2+3]是字符型的。
 type()函数要求自变量为C型,即相当于type("E")的形式,type(s(7))-->type(s(2,3))-->type("2+3")-->相当于测试2+3的类型,结果为N。

2.m=234,n=100,c="m+n",? 1+&c的值为:
 分析:&为宏替换,即将它替换成它的值
 即:1+&c-->1+m+n-->335
 注意不等于:1+&c-->1+"m+n"-->结果不正确

3.list for 单价>100 和list while 单价>100执行后都为使eof()为真。(前者是,后者不一定)
 因为,后者,依赖于当前指针的位置。

4.year(),month(),day()返回值为N型
 即:year()返回年份,其他的是月份,日。
58

D:2010-12-19
T:8:10:00
IP:188.188.2.1



作者:
张顺海
2010.12.18 内容回顾

一、几种循环形式

1.scan....endscan(专门用于处理dbf文件)
 clea &&清屏
 use tushu &&打开图书表格
 set head off &&设置显示标题
 i=0 &&计数器,设置为0
 scan &&循环开始
 if "国"$书名 &&判断书名中是否有‘国字’
  disp spac(10),书名,单价,版别 &&如果含有,则显示10个空格,然后显示三个信息,可不可以用disp
  i=i+1 &&计数器加1,后边要用到
  if mod(i,10)=0 &&如果够10条记录,等0.5秒
   wait '' timeout 2 &&这里的空串,不显示任何信息,如果省略则会有“按任意键继续的字样”
 endif &&结束
 set head off &&设置去掉记录上字段的标题
 endif &&条件结束
 endscan &&循环结束
 ? "共有",i,"条符合条件的记录" &&显示计数的结果。
 retu &&返回程序

2.程序段,训练对循环的控制
set talk off       &&打开屏幕回显(只有foxbase中有效)
clea
text
***************************************
   第一段程序"
   1) 显示出如下数列
   1 3 5 7 9 11 13 15 17 19
***************************************
endtext
?
i=1 
do whil i<=10
   ?? i*2-1  &&数值型的结果,格式不易控制
   i=i+1
enddo
?
i=1 
do whil i<=10
   ?? str(i*2-1,3)  &&转换成字符串再处理,格式易控制
   i=i+1
enddo
wait
clea
text
***************************************
   第二段程序
   前10个数"
   1 1 2 3 5 8 13 21 34 55
***************************************
endtext

i=3
j=1
k=1
? str(j,3),str(k,3)
do whil i<=10
   c=j+k
   ?? str(c,3)
   j=k
   k=c
   i=i+1
enddo
?
? &&换行
wait
clea
text
***************************************
  第三段程序
  3)这样排列的前20个数
 1  2 3  4 5 
 10 9  8  7 6
 11 12 13 14 15
 20 19 18 17 16 
***************************************
endtext
?
for i=1 to 4
    for j=1 to 5
        if mod(i,2)=1
           ?? str((i-1)*5+j,3)
        else
           ?? str(i*5-j+1 ,3)
        endif
    next 
    ?
endfor
?
for i=1 to 4
    for j=1 to 5
        ?? iif(mod(i,2)=1,str((i-1)*5+j,3),str(i*5-j+1 ,3))
    endfor
    ?
endfor
set talk on
retu

二、综合实例
set talk off
set esca off &&使ESC无效,即让程序不响应ESC按键,如果程序调试阶段请不要这样设,不然死循环,就不能出来了.
use tushu
do whil .t.
clea
sm=spac(50)
@15,20 say "请输入您要查询的书名(智能查找)" get sm
*在屏幕的第15行,20列开始输出提示信息,并获得数据
*并将结果放入变量sm中
read
*激活变量
sm=allt(sm) &&将变量去掉前后的空格,再赋值给它
if sm="000" &&如果输入的是书名为"000"则退出程序(本次循环)
exit
endif
if empty(sm) &&如果没有输入则重新输入(就是结束本次循环,继续下次新循环)
loop
endif
locate for sm$书名 &&定位
if found()
xx=16
c=0 &&计数器初始化,设为零
do whil .not.eof()
c=c+1 &&计数器自加1
ss=allt(书名+allt(str(单价))+版别)
@xx,20 say ss
if xx<=40
xx=xx+1 &&行变化,一直到最大到41行
else
@16,20 to 41,80 scro up by 1 &&过了41行,就滚动,每次一行
wait "" timeout 0.2 &&自动控制,间隔0.2秒,如果没有时间就自动滚屏,类似list
endif
cont
enddo
c=allt(str(c)) &&将统计结果(N型)转换成(C型),用来使用&(宏替换)
@42,20 say "本次共有&C.本符合条件的记录"
else
@42,20 say "查无此书[&sm.]" &&请大家想想这里的宏替换有什么用
endif
wait ""
enddo
clea
@ 15,20 say "谢谢您的使用,再见" &&在指定位置输出信息
wait "" &&让操作都看清上边的提示信息,等待用记按键,因为下边有一个清屏命令.
clea
set talk off
set esca on
retu


三、重点
 1.循环控制的几种形式(进入循环、变量变化、退出)。
 2.如何控制屏幕的输入、输出位置(参照第二部分)
 3.注意几个知识点:
 set esca on/off; @x,y say N get sm /read;
 iif(x>y,z,m); acce/locate/found()/cont;
 4.wait '' timeout 0.5
 5..not.eof()/found()的使用
 6.do while .t./exit/loop/enddo的使用
 7.组成小级分析程序段落

四、相应资料、源程序代码访问网站
 地址:http://192.168.8.40/ch01

五、作业
 上机调试相应程序段,分析代码、代码之间的关联、用途,分组分析,相互促进。
57

D:2010-12-17
T:12:53:00
IP:192.168.8.40



作者:
张顺海
2010.12.17日讲课内容

1.程序的设计结构:
 1)顺序结构
 2)选择结构
 3)循环结构

2.顺序结构特点:
 每一条语句,均被执行,且执行一次。
 执行到没有语句可执行为止,退出。或者执行return。

3.选择结构特点:
 语法表现形式:1)单分支 2)双分支付 3)多分支
 实例:
 If <条件>
  语句块
 Endif

 If <条件>
  语句块1
 Else
  语句块2
 Endif
 
 Do case
  case <条件1>
   语句块1
  case <条件2>
   语句块2
  case <条件3>
   语句块3
  case <条件n>
   语句块n
  [[Otherwise]
   语句块n+1]
 Endcase

 特点:一选一;二选一;多选一;
 如果条件不立,可能没有语句被执行。

3.书上的实例:
 1)电费计算
 set talk off
 input “输入用电量” to x
 if x<=300
  y=x*0.52
 else
  y=300*0.52+(x-300)*0.70
 endif
 ? "电费为:",y
 set talk off
 retu
 
 2)查找业务人员是否为经理
 set talk off
 use 业务员
 acce "请输入要查询的人员ID" to ryid
 locate for 业务员ID=ryid
 if .not.eof()
  if 职务="业务经理"
   ? "是业务经理"
  else
   ? "不是业务经理"
  endif
 else
  ? "查无此人"
 endif
 use
 set talk on
 retu
 
 3)循环(显示1-10)
 set talk off
 i=1
 do whil i<=10
  ?? i
  i=i+1
 enddo
?
 for j=1 to 10 step 1
  ?? j
 endfor
 ?
 for k=1 to 10
  ??k
 next
 ?
 for l=10 to 1 step -1
  ?? 11-L
 endfor
 set talk off
 retu

4.练习和作业
 1)
 显示出如下数列
 1 3 5 7 9 11 13 15 17 19

 2)前10个数
 1 1 2 3 5 8 13 21 34 55

 3)这样排列的前20个数
 1 2 3 4 5
 10 9 8 7 6
 11 12 13 14 15
 20 19 18 17 16 
 
 4)从图书表(tushu.dbf)中的"书名"中找出含有指定信息的书,并把书的详细信息及查询结果显示出来.
 例如:输入"三国",那把书名中含有"三国"的所有图书信息显示出来,并在下面统计出结果,如"此次查询共查询到**本书".
 书名为"000"时退出程序.
 程序文件名为:cx.prg.
56

D:2010-12-8
T:8:01:00
IP:192.168.8.40



作者:
张顺海
2010.12.7 内容概要

1.程序设计的数据
 表现形式:常量、变量、函数、表达式。
 数据类型:
  常量-字符串常量(C)、数值型常量(N)、D、L等;
  变量-(按存储方式)内存型变量、字段型变量;(按集合处理)简单变量、数组变量;
  函数-(按处理对象和结果数据类型)数值型函数、字符串型函数、日期型函数、转换型函数、测试型函数等;
  表达式-(按运算符)数值型表达式、字符串型表达式、关系型表达式、逻辑型表达式等;
 注:以上都是数据的表现形式,真正参加运算的是它们最终的值即:常量值、变量的值、函数的值、表达式的值;注意分最后值的类型。

2.一个完整的程序应该分为三部分:
 1)程序的注释部分;(*、NOTE、&&)
 2)程序的主体部分(获得数据、处理数据、输出数据)
 3)程序结束、返回部分;(return)

3.程序数据的获得(交互式命令)
 1)wait
 2)accept
 3)input
 相同点:使程序暂停,等待接收数据,并可把结果保存到指定的变量里,以备后用。
 不同点:1)和2)都接收C型变量(即,按字符型处理);1)只接收1个长度的字符,不用回车;2)可以接收最多254个字符,需回车确认;3)可以接收C、N、D、L型的数据,需要回车确认。

4.练习
 1)
 set talk off
 use mingdan
 disp
 wait timeout 10
 skip
 disp
 wait timeout 10
 skip
 disp
 use
 set talk off
 return

 2)
 set talk off
 use mingdan
 accept "请输入需要查询的姓名" to xm
 locate for 姓名=xm
 disp
 use
 set talk on
 return

 3)
 set talk off
 input "请输入第一个加数" to a
 input "请输入第二个加数" to b
 c=a+b
 ? "两个数的和为:",c
 return

5.总结
 分清楚三个键盘接收语句的特点;
 明确三个键盘接收语句的限制;
 三个语句的共同点是可以把从键盘上的数据接收并保存到指定的变量里,一个语句一次只能接收一个数据。
 对接收数据的处理,就是对建立的变量处理。
首页  前一页  后一页  末页
现在是第12页一共有99页