999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

VFP中圖形打印方法芻議

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

胡祥柏

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

關鍵詞: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的特點是每一行打印“*”的個數(即列數)和行號相等,每一行的起始位置(起始列)都相同。

程序代碼:

clear

for 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,下一行的起始位置(起始列)比上一行左移一列。根據上述特點,編寫的程序代碼如下:

clear

for i=1 to 4

??space(10-i)

for j=1 to 2*i-1

??chr(64+i)

endfor

endfor

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

clear

for 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*行號。根據上述特點,編寫的程序代碼如下:

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

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

參考文獻:

[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.

主站蜘蛛池模板: 日韩国产另类| 日韩精品久久久久久久电影蜜臀| 亚洲人在线| 国产又粗又猛又爽视频| 亚洲中文字幕久久精品无码一区| 亚洲AV无码乱码在线观看代蜜桃 | 97国产精品视频自在拍| 欧美成人免费一区在线播放| 精品久久久久久成人AV| 91青青在线视频| 免费日韩在线视频| av一区二区无码在线| 亚洲美女AV免费一区| 日韩无码白| 91精品国产自产在线老师啪l| 九色综合视频网| 亚洲资源站av无码网址| 国产精品开放后亚洲| 午夜色综合| 亚洲天堂网2014| 日本亚洲最大的色成网站www| 人妻无码中文字幕第一区| 亚洲成aⅴ人在线观看| 亚洲欧美另类视频| 国产黄在线观看| 中文字幕在线播放不卡| 国产凹凸一区在线观看视频| 色综合天天娱乐综合网| 国产成人精品一区二区不卡| 18禁不卡免费网站| 亚洲国产理论片在线播放| 波多野结衣在线se| 天堂网国产| 蜜桃臀无码内射一区二区三区| 免费一级大毛片a一观看不卡| 亚洲国产中文综合专区在| 亚洲综合色吧| 亚洲天堂精品在线| 中文字幕自拍偷拍| 久久无码av三级| 成人自拍视频在线观看| 2020精品极品国产色在线观看| 91亚洲精品第一| 国产一区二区三区在线精品专区| 亚洲国产成人在线| 91青青草视频| 青草午夜精品视频在线观看| 国产精品视频第一专区| 色老二精品视频在线观看| 亚洲国产精品日韩欧美一区| 专干老肥熟女视频网站| 在线精品自拍| 国产乱子伦精品视频| 精品一区二区三区中文字幕| 欧美色伊人| 国产成人高清在线精品| 精品免费在线视频| 亚洲黄网在线| 国产色伊人| 色爽网免费视频| 在线欧美一区| 国产成人精品亚洲77美色| 久久精品电影| 亚洲一区二区在线无码| 亚洲三级a| 久久夜色精品国产嚕嚕亚洲av| 日韩精品亚洲一区中文字幕| 国产欧美日韩91| 亚洲天堂成人| 永久免费精品视频| 欧美精品啪啪一区二区三区| 99性视频| 国产永久在线视频| 久久国产精品娇妻素人| 2020极品精品国产| 五月婷婷导航| 国产在线观看91精品亚瑟| 91精品专区国产盗摄| 五月天天天色| 色婷婷成人| 免费无码AV片在线观看中文| 午夜无码一区二区三区|