
VFP中图形打印方法刍议.docx
10页VFP中图形打印方法刍议 胡祥柏Summary:图形的打印输出是VFP中的一个难点,很多同学在学习VFP的过程中感到对图形输出程序的编写束手无策本文通过采用对问题拆分,层层分解的办法,阐述了编写打印图形程序的方法及注意事项,最后给出了几个常见图形程序的实现方法,以加深同学们对打印图形程序的理解Key:VFP 循环嵌套 图形打印在VFP程序设计中,打印图形的操作让很多同学头疼,如何控制好图形输出的位置、每一行打印图形的个数是多少、打印的图形有什么规律、如何找到其中的规律,对于初次学习VFP程序设计语言的同学而言是一个难点,也是一个痛点以下就VFP中图形打印原理与方法进行介绍一、绘制图形的原理打印图形通常要用到循环,若打印一维的多个相同的符号,也就是在一行打印多列,通常用单重循环但是,若打印的图形是二维的,也就是按一定的规律输出多行多列,那就要用二重循环(即循环的嵌套),而循环的嵌套恰恰是程序设计中的难点在VFP中循环有三种基本形式:do while ……enddo循环,for……endfor循环,scan ……endscan循环由于scan ……endscan循环是专门对数据表扫描操作所设计的循环,因此在打印图形中一般用不到它,而用其他两种循环结构来打印图形的比较多。
下面就以几个典型的特例为例子,介绍打印图的原理:问题分析:(1)程序要解决的问题是打印输出一个3行5列的图形,图形中的符号是“*”,所以打印该图形首先要解决的基本问题是如何输出一个“*”若要在程序中某一行输出一个“*”号,那么在程序中只要下列一条语句即可:??”*”(2)若要在程序中某一行输出5个“*”号,即“*****”,那么在程序中只要把??“*”这个语句反复执行五次即可如何让一个语句反复执行五次呢?因为循环具有重复或反復去完成一件事情的功能,所以就要使用循环:for j=1 to 5??“*”endfor(3)在第一行输出完5个“*”后,因为下一行还要再输出相同的图形,所以要在endfor 语句后加一个?用来进行换行,也就是为输出下一行设置好起始位置,于是程序就变成如下形式:for j=1 to 5??“*”endfor?(4)如何使每一行在输出“*”前使整个图形往右移若干列呢?为了在每一行开始输出“*”号前,使整个图形往右移若干列,在执行循环语句前应插入若干空格,然后再输出5个“*”号若每一行前插入的空格数是固定不变的,则每一行的起始位置都是对齐的,若每一行前插入的空格数是可变的,则每一行的起始位置会向左移或向右移。
例如,本例中若在for语句前插入??space(10)这条语句,则每行图形在打印前首先会输出10空格,即:??space(10)for j=1 to 5??“*”endfor?(5)上面程序完成了在一行中输出5个“*”的功能,若再让上述程序作为循环体执行3次,就可以达到输出3行5列“*”的目的如何让上述循环执行三次呢?这就要用到循环的嵌套,具体实现代码如下:for i=1 to 3??space(10)for j=1 to 5??“*”endfor?endfor通过上面的程序我们可以发现,在打印输出图形时,外层循环控制输出图形的行数,内层循环控制输出图形的列数,控制好插入空格位置、个数及换行的时机,弄明白要输出的图形,打印输出图形就不再是什么难事了同学们在学习循环时觉得打印输出图形特别难,最主要的原因是没有学会如何把要解决的问题分解成最基本的小问题,如何在分解的小问题的基础上进行有条不紊的分步骤综合二、常见图形的打印方法常见的图形有以下几种,针对下面各种图形的特点,我们来进行分析,并给出它们的代码,以供参考1)图2的特点是每一行打印“*”的个数(即列数)和行号相等,每一行的起始位置(起始列)都相同。
程序代码:clearfor i=1 to 4 &&控制图形输出4行??space(10) &&每一行开始先插入10个空格,起始位置相同for j=1 to i &&控制每一行输出的字符个数为i个??“*” &&“*”若换成str(j,1)+“*”+str(i,1)+“=”+str(i*j,2)+space(1),&&则可以打印九九乘法表endfor?endfor(2)图3的特点是每一行打印的字符和个数都在变化,输出字符的个数(即列数)和行号之间的关系是,每行字符个数=2*行号-1,下一行的起始位置(起始列)比上一行左移一列根据上述特点,编写的程序代码如下:clearfor i=1 to 4??space(10-i)for j=1 to 2*i-1??chr(64+i)endfor?endfor(3)图4的特点是每一行的起始位置(起始列)都相同,每一行打印的字符和个数都在变化,每一行输出字符的个数(即列数)和行号之间的关系是,每行字符个数=5-行号根据上述特点,编写的程序代码如下:clearfor i=1 to 4??space(10)for j=1 to 5-i??str(j,1)endfor?endfor(4)图5可以看成是由上下两个三角形拼凑而成的图形,其特点是上三角由4行组成,下三角由3行组成。
上三角下一行的打印图形的起始位置比上一行左移一列,每行输出的字符个数=2*行号-1下三角共3行,第一行输出字符的起始位置相对于上三角的最后一行而言右移一列,同样,最后两行输出字符的起始位置都是在上一行的基础上右移一列,每一行输出字符的个数=7-2*行号根据上述特点,编写的程序代码如下:clearfor i=1 to 4 &&下面的程序是输出上三角图形??space(10-i)for j=1 to 2*i-1??“*”endfor?endforfor i=1 to 3 &&下面的程序是打印下三角图形??space(6+i)for j=1 to 7-2*i??“*”endfor?endfor打印输出图形要用到循环的嵌套,循环的嵌套是VFP程序设计中的重点和难点,文中通过对打印输出内容进行渐近分析和分步分解的方法来介绍输出圖形的方法,最终让同学们理解双重循环执行过程和打印图形中的注意事项,从而使同学们更好地掌握打印图形的一般规律Reference:[1]罗颂,詹斌,余健.Visual FoxPro课程设计案例精编[M].北京:清华大学出版社,2008.[2]李玉龙,张永花,蒲会兰.Visual FoxPro程序设计与数据应用基础[M].北京:中国铁道出版社,2007.[3]何明瑞.数据原理及Visual FoxPro 6.0实用教程[M].上海:浦东电子出版社,2003.[4]高伟,陈林. Visual FoxPro 9.0基础教程[M].北京:清华大学出版社,2005.[5]张洪举. Visual FoxPro开发答疑160问[M].北京:人民邮电出版社,2003.安徽教育科研2019年12期安徽教育科研的其它文章发展学生“乐学、善学”素养的教学探究统筹兼顾,精选深修理念统整 文化一体从预习模式的创新谈小学语文课堂中学生自主意识的培养引导学生在深层次阅读中把握文章主旨让逻辑思考三部曲领奏政治课堂 -全文完-。












