国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

VFP中圖形打印方法芻議

2019-09-10 07:22胡祥柏
安徽教育科研 2019年12期

胡祥柏

摘要:圖形的打印輸出是VFP中的一個難點,很多同學(xué)在學(xué)習(xí)VFP的過程中感到對圖形輸出程序的編寫束手無策。本文通過采用對問題拆分,層層分解的辦法,闡述了編寫打印圖形程序的方法及注意事項,最后給出了幾個常見圖形程序的實現(xiàn)方法,以加深同學(xué)們對打印圖形程序的理解。

關(guān)鍵詞:VFP 循環(huán)嵌套 圖形打印

在VFP程序設(shè)計中,打印圖形的操作讓很多同學(xué)頭疼,如何控制好圖形輸出的位置、每一行打印圖形的個數(shù)是多少、打印的圖形有什么規(guī)律、如何找到其中的規(guī)律,對于初次學(xué)習(xí)VFP程序設(shè)計語言的同學(xué)而言是一個難點,也是一個痛點。以下就VFP中圖形打印原理與方法進行介紹。

一、繪制圖形的原理

打印圖形通常要用到循環(huán),若打印一維的多個相同的符號,也就是在一行打印多列,通常用單重循環(huán)。但是,若打印的圖形是二維的,也就是按一定的規(guī)律輸出多行多列,那就要用二重循環(huán)(即循環(huán)的嵌套),而循環(huán)的嵌套恰恰是程序設(shè)計中的難點。

在VFP中循環(huán)有三種基本形式:do while ……enddo循環(huán),for……endfor循環(huán),scan ……endscan循環(huán)。由于scan ……endscan循環(huán)是專門對數(shù)據(jù)表掃描操作所設(shè)計的循環(huán),因此在打印圖形中一般用不到它,而用其他兩種循環(huán)結(jié)構(gòu)來打印圖形的比較多。

下面就以幾個典型的特例為例子,介紹打印圖的原理:

問題分析:

(1)程序要解決的問題是打印輸出一個3行5列的圖形,圖形中的符號是“*”,所以打印該圖形首先要解決的基本問題是如何輸出一個“*”。若要在程序中某一行輸出一個“*”號,那么在程序中只要下列一條語句即可:

??”*”

(2)若要在程序中某一行輸出5個“*”號,即“*****”,那么在程序中只要把??“*”這個語句反復(fù)執(zhí)行五次即可。如何讓一個語句反復(fù)執(zhí)行五次呢?因為循環(huán)具有重復(fù)或反復(fù)去完成一件事情的功能,所以就要使用循環(huán):

for j=1 to 5

??“*”

endfor

(3)在第一行輸出完5個“*”后,因為下一行還要再輸出相同的圖形,所以要在endfor 語句后加一個?用來進行換行,也就是為輸出下一行設(shè)置好起始位置,于是程序就變成如下形式:

for j=1 to 5

??“*”

endfor

?

(4)如何使每一行在輸出“*”前使整個圖形往右移若干列呢?為了在每一行開始輸出“*”號前,使整個圖形往右移若干列,在執(zhí)行循環(huán)語句前應(yīng)插入若干空格,然后再輸出5個“*”號。若每一行前插入的空格數(shù)是固定不變的,則每一行的起始位置都是對齊的,若每一行前插入的空格數(shù)是可變的,則每一行的起始位置會向左移或向右移。

例如,本例中若在for語句前插入??space(10)這條語句,則每行圖形在打印前首先會輸出10空格,即:

??space(10)

for j=1 to 5

??“*”

endfor

?

(5)上面程序完成了在一行中輸出5個“*”的功能,若再讓上述程序作為循環(huán)體執(zhí)行3次,就可以達(dá)到輸出3行5列“*”的目的。如何讓上述循環(huán)執(zhí)行三次呢?這就要用到循環(huán)的嵌套,具體實現(xiàn)代碼如下:

for i=1 to 3

??space(10)

for j=1 to 5

??“*”

endfor

?

endfor

通過上面的程序我們可以發(fā)現(xiàn),在打印輸出圖形時,外層循環(huán)控制輸出圖形的行數(shù),內(nèi)層循環(huán)控制輸出圖形的列數(shù),控制好插入空格位置、個數(shù)及換行的時機,弄明白要輸出的圖形,打印輸出圖形就不再是什么難事了。同學(xué)們在學(xué)習(xí)循環(huán)時覺得打印輸出圖形特別難,最主要的原因是沒有學(xué)會如何把要解決的問題分解成最基本的小問題,如何在分解的小問題的基礎(chǔ)上進行有條不紊的分步驟綜合。

二、常見圖形的打印方法

常見的圖形有以下幾種,針對下面各種圖形的特點,我們來進行分析,并給出它們的代碼,以供參考。

(1)圖2的特點是每一行打印“*”的個數(shù)(即列數(shù))和行號相等,每一行的起始位置(起始列)都相同。

程序代碼:

clear

for i=1 to 4 &&控制圖形輸出4行

??space(10) &&每一行開始先插入10個空格,起始位置相同

for j=1 to i &&控制每一行輸出的字符個數(shù)為i個

??“*”? &&“*”若換成str(j,1)+“*”+str(i,1)+“=”+str(i*j,2)+space(1),

&&則可以打印九九乘法表

endfor

?

endfor

(2)圖3的特點是每一行打印的字符和個數(shù)都在變化,輸出字符的個數(shù)(即列數(shù))和行號之間的關(guān)系是,每行字符個數(shù)=2*行號-1,下一行的起始位置(起始列)比上一行左移一列。根據(jù)上述特點,編寫的程序代碼如下:

clear

for i=1 to 4

??space(10-i)

for j=1 to 2*i-1

??chr(64+i)

endfor

?

endfor

(3)圖4的特點是每一行的起始位置(起始列)都相同,每一行打印的字符和個數(shù)都在變化,每一行輸出字符的個數(shù)(即列數(shù))和行號之間的關(guān)系是,每行字符個數(shù)=5-行號。根據(jù)上述特點,編寫的程序代碼如下:

clear

for i=1 to 4

??space(10)

for j=1 to 5-i

??str(j,1)

endfor

?

endfor

(4)圖5可以看成是由上下兩個三角形拼湊而成的圖形,其特點是上三角由4行組成,下三角由3行組成。上三角下一行的打印圖形的起始位置比上一行左移一列,每行輸出的字符個數(shù)=2*行號-1。下三角共3行,第一行輸出字符的起始位置相對于上三角的最后一行而言右移一列,同樣,最后兩行輸出字符的起始位置都是在上一行的基礎(chǔ)上右移一列,每一行輸出字符的個數(shù)=7-2*行號。根據(jù)上述特點,編寫的程序代碼如下:

clear

for i=1 to 4? &&下面的程序是輸出上三角圖形

??space(10-i)

for j=1 to 2*i-1

??“*”

endfor

?

endfor

for i=1 to 3? &&下面的程序是打印下三角圖形

??space(6+i)

for j=1 to 7-2*i

??“*”

endfor

?

endfor

打印輸出圖形要用到循環(huán)的嵌套,循環(huán)的嵌套是VFP程序設(shè)計中的重點和難點,文中通過對打印輸出內(nèi)容進行漸近分析和分步分解的方法來介紹輸出圖形的方法,最終讓同學(xué)們理解雙重循環(huán)執(zhí)行過程和打印圖形中的注意事項,從而使同學(xué)們更好地掌握打印圖形的一般規(guī)律。

參考文獻(xiàn):

[1]羅頌,詹斌,余健.Visual FoxPro課程設(shè)計案例精編[M].北京:清華大學(xué)出版社,2008.

[2]李玉龍,張永花,蒲會蘭.Visual FoxPro程序設(shè)計與數(shù)據(jù)應(yīng)用基礎(chǔ)[M].北京:中國鐵道出版社,2007.

[3]何明瑞.數(shù)據(jù)原理及Visual FoxPro 6.0實用教程[M].上海:浦東電子出版社,2003.

[4]高偉,陳林. Visual FoxPro 9.0基礎(chǔ)教程[M].北京:清華大學(xué)出版社,2005.

[5]張洪舉. Visual FoxPro開發(fā)答疑160問[M].北京:人民郵電出版社,2003.