第五章程序.docx
《第五章程序.docx》由会员分享,可在线阅读,更多相关《第五章程序.docx(11页珍藏版)》请在冰豆网上搜索。
第五章程序
第五章程序设计
一、程序及三大结构
1)程序:
命令的有序集合
2)三大结构:
顺序结构
分支结构(选择)
循环结构
二、程序文件(.prg)
1、新建程序文件:
modifycommand<文件名>
2、执行|运行程序文件Do<程序文件>
三、表单文件(.SCX)
1、新建表单文件Modifyform<文件名>
2、执行|运行表单文件Doform<表单文件>
注意:
程序分为:
数学程序和基于表的程序
数学程序总体由三部分组成:
1)输入
2)计算
3)输出
四、三大结构
1、顺序结构:
所有的程序总体上都是顺序结构
2、分支|选择结构
例如:
(1)判断文本框中输入数值的奇偶性。
n=thisform.text1.value
ifmod(n,2)=0
thisform.label1.caption=alltrim(str(n))+"是偶数"
else
thisform.label1.caption=alltrim(str(n))+"是奇数"
endif
补充:
字符输出函数messagebox()
messagebox("好得很!
!
!
!
","好吗?
")
例如
(2)输入一个数如果是-1关闭表单,如果不是-1,能被8整除,标签显示这个数是8的倍数;否则显示这个数不是8的倍数!
x=thisform.text1.value
docase
casex=-1
thisform.release
casex%8=0
thisform.label1.caption=alltrim(str(x))+"是8的倍数"
otherwise
thisform.label1.caption=alltrim(str(x))+"不是8的倍数"
endcase
3.循环结构
(1)for循环(步长循环)
for<循环变量>=<初值>to<终值>[step<步长>]
<语句序列>
Endfor|next(给循环变量加上步长)
例如:
1)5!
2)n!
3)1+2+3+….+100
4)1+2+3…+n
5)1+1/2+1/3+1/4+….+1/n
6)1+1/3-1/4+1/5-….+1/n
n=thisform.text1.value
s=1
fori=3ton
s=s+1/i*(-1)^i-1
endfor
thisform.text2.value=s
总结:
1)累乘器j=1
J=j*i
2)累加器s=0
S=s+i
3)计数器n=0
n=n+1
4)字符串累加连接c=””c=c+i
例如:
通过编辑框输出水仙花数,通过文本框输出水仙花数的个数。
n=0
fori=100to999
a=mod(i,10)
b=int(mod(i,100)/10)
c=int(i/100)
ifi=a**3+b**3+c**3
thisform.edit1.value=thisform.edit1.value+str(i,5)
n=n+1
endif
endfor
thisform.text1.value=n
例如:
文本框中输入任意一串字符,输出其中的数字串
n=allt(thisform.text1.value)
c=""
fori=1tolen(n)
a=substr(n,i,1)
ifasc(a)>=asc("0")andasc(a)<=asc("9")
c=c+”*”
else
c=c+a
endif
endfor
thisform.label1.caption=c
练习:
1)文本框中输入任意一串字符,统计数字、小写、大写、的个数
n=allt(thisform.text1.value)
m1=0
m2=0
m3=0
fori=1tolen(n)
a=substr(n,i,1)
DOCASE
CASEasc(a)>=asc("0")andasc(a)<=asc("9")
m1=m1+1
CASEasc(a)>=asc("a")andasc(a)<=asc("z")
m2=m2+1
CASEasc(a)>=asc("A")andasc(a)<=asc("Z")
m3=m3+1
ENDCASE
endfor
thisform.label1.caption=alltrim(str(m1))
thisform.label2.caption=alltrim(str(m2))
thisform.label3.caption=alltrim(str(m3))
2)文本框中输入任意一串字符,输出其中的数字、小写、大写字符串
例如:
读程序写结果。
Thisform.label1.caption=""
DIMENSIONS(6)
FORI=1TO6
S(I)=2*I
ENDFOR
FORI=1TO3
T=S(I)
S(I)=S(7-I)
S(7-I)=T
ENDFOR
FORI=1TO6
Thisform.label1.caption=Thisform.label1.caption+str(s(i),4)
ENDFOR
7)前n个自然数中能被3整除的数的和
n=thisform.text1.value
s=0
fori=1ton
ifi%3=0&&mod(i,3)=0int(i/3)=i/3
s=s+i
endif
endfor
thisform.text2.value=s
7)前n个自然数中能被7整除的数(一行输出5个数)以及个数。
补充、编辑框(edit)作用:
输出长字符串(按照行的顺序)。
属性:
value
引用方式:
thisform.edit1.value=thisform.edit1.value+输出内容(字符型)
EG:
通过编辑框输出前N个自然数中能被7整除的数,一行显示5个数。
thisform.edit1.value=""
x=0
n=thisform.text1.value
fori=1ton
ifi%7=0
x=x+1
thisform.edit1.value=thisform.edit1.value+alltrim(str(i))+space(3)
ifx%5=0
thisform.edit1.value=thisform.edit1.value+chr(13)
endif
endif
endfor
thisform.text2.value=x
例如:
通过编辑框输出26个大写字母
n=0
fori=asc("A")toASC("Z")
n=n+1
M=chr(i)
thisform.edit1.value=thisform.edit1.value+m+space
(2)
ifn%5=0
thisform.edit1.value=thisform.edit1.value+chr(13)
endif
endfor
例如:
输出字符串中所有的数字字符
n=thisform.text1.value
c=""
fori=1tolen(n)
a=substr(n,i,1)
ifasc(a)>=asc("0")andasc(a)<=asc("9")
c=c+a
endif
endfor
thisform.label1.caption=c
练习:
1、输出字符串中所有的小写、大写字母
2、统计输入字符串中数字、小写、大写的个数
n=thisform.text1.value
n1=""
n2=""
n3=""
fori=1tolen(n)
a=substr(n,i,1)
docase
caseasc(a)>=asc("0")andasc(a)<=asc("9")
n1=n1+a
caseasc(a)>=asc("a")andasc(a)<=asc("z")
n2=n2+a
caseasc(a)>=asc("A")andasc(a)<=asc("Z")
n3=n3+a
endcase
endfor
thisform.label5.caption=n1
thisform.label6.caption=n2
thisform.label7.caption=n3
(2)dowhile<条件>
<语句序列>
Enddo
n=thisform.text1.value
s=1
fori=1ton
s=s*i
endfor
thisform.text2.value=s
例如:
n!
n=thisform.text1.value
s=1
i=1
dowhilei<=n
s=s*i
i=i+1
enddo
thisform.text2.value=s
例如2)前n个自然数中的偶数|奇数和
n=thisform.text1.value
s=0
i=2
dowhilei<=n
s=s+i
i=i+2
enddo
thisform.text2.value=s
n=thisform.text1.value
s=0
fori=2tonstep2
s=s+i
enddo
thisform.text2.value=s
2.读如下程序,写出运行结果:
CLEAR
DIMEW1(5)
X='A'
W1=""
FORI=5TO1step-1
FORJ=1TOI
W1(I)=W1(I)+X
ENDFOR
X=CHR(ASC(X)+1)
?
6-I,W1(I)
ENDFOR
法二
N=thisform.text1.value
c=""
fori=1tolen(n)
a=substr(n,i,1)
c=a+c
endfor
thisform.label1.caption=c
例如:
字符逆序输出
N=thisform.text1.value
c=""
fori=len(n)to1step-1
a=substr(n,i,1)
c=c+a
endfor
thisform.label1.caption=c
补充:
循环中的特殊语句
1)loop结束本次循环
2)exit结束本层循环
DOWHILE.t.
If
Exit
endif
enddo
例如:
读程序写结果:
DIMENSIONA(3,3)
FORI=1TO3
FORJ=1TO3
IFI<>J
A(I,J)=0
ELSE
A(I,J)=9
ENDIF
Thisform.edit1.value=thisform.edit1.value+allt(str(A(I,J)))
ENDFOR
Thisform.edit1.value=thisform.edit1.value+chr(13)
ENDFOR