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

利用Delphi技術直觀實現圓周率的精確測算

2010-12-31 00:00:00顧培培
考試周刊 2010年20期

摘 要: 圓周率π是個古老的數據,早在1700多年前祖沖之已將其值精確到小數點后7位,而如今通過計算機程序已能算到十億位之多。在課堂及平時工作中,直觀、迅速、精確的測算出圓周率,對于課程的學習是非常有價值的。這里使用Delphi模擬一種測算圓周率的方法。

關鍵詞: Delphi技術 模擬 圓周率

1.前言

在日常的教學及相關工作中,我們經常要介紹并使用圓周率,雖有具體的數據及相關的歷史計算事件,但對于學生及普通的人員來說,很難弄懂其的計算原理,印象不深,效果差。本文通過Delphi即Windows平臺下的可視化應用程序開發工具,提供一種有效的方法,通過具體的編程技術來高效、直觀地完成圓周率的計算。

2.設計原理

本程序只是一個概率模擬。首先繪制一個邊長為200的正方形,在其中隨機生產多個點,該正方形中可以容下一個大圓的四分之一圓。以圓弧為界,在圓弧內的即為圓內點,之外的即為圓外點。由于點數非常之多,幾乎布滿整個正方形,因此點數就可以看成是其所在區域的面積。則作如下推導:如圖1所示,紅色區域表示1/4圓內;黃色區域表示圓外。

紅色區域面積∶正方形面積≈紅色區域點數∶總點數

紅色區域面積∶正方形面積=1/4圓面積∶正方形面積

1/4圓面積∶正方形面積≈紅色區域點數∶總點數

π×200×200/4∶200×200≈紅色區域點數∶總點數

π≈4×紅色區域點數/總點數

在區域的點數會出現重復,所以計算機的最終結果與實際π值會有差別,但是當點數足夠多時,則可以看成一個非常近似的結果。

3.功能實現

3.1控件說明

本程序有圖有數據,因此首先在窗體上設置一Image控件,其主要用于顯示圖像。在整個窗體生成時則加載,該控件的繪圖代碼繪制一個外邊框為黃色,內部為黑色邊長為200的正方形。在顯示數據方面,這里采用Label標簽控件,使用它的Caption屬性用于實時顯示圓內點數、圓外點數、當前計算的π值、當前X軸、Y軸的坐標。為了控制方便程序設置了兩個按鈕用于開始和暫停模擬。窗體最下方設置一個顯示當前系統時間的Text文本控件,方便用戶進行比對。為了自動快速的進行模擬。程序設置了一個主要控件Timer定時器。其是一個非可視化組件。利用其可以實現自動打點。它的Interval屬性在這里十分重要,用于控制Timer觸發事件(打點)的時間間隔。單位是ms,默認值1000即1s,這里為了模擬的速度,設置為1,即0.001s。

程序各控件布局如圖2。

3.2代碼實現

整個窗體在創建時的代碼:

procedure TForm1.FormCreate(Sender: TObject);

begin

′在Image1控件區域內畫一個邊長為200的正方形作為程序的演示窗口,畫亮綠色的正方形演示框

Image1.Canvas.Brush.Color:=clBlack;

Image1.Canvas.FillRect(Rect(0,0,199,199));

Image1.Canvas.Pen.Color:=clyellow;

Image1.Canvas.Rectangle(0,0,199,199);

DoubleBuffered:= True;

end;

添加Timer控件實現點的繪制和π的計算:

var

a,b,i,ii:longint;

pi:single;

begin

′隨機產生坐標點

i:=random(200);/隨機獲取0-200以內的整數

ii:=random(200);

if (i*i+ii*ii<40000) then′判斷是否為圓內點,根據數學公式X2+Y2<=r2

begin

′以200為半徑的圓內的點設為紅色

Image1.canvas.Pen.Color:=clred;

a:=StrToInt(Label1.Caption);′label.Caption初始值為0

Label1.Caption:=IntToStr(a+1);′a為圓內點數,加1后傳送給label控件

′顯示當前點的坐標

Label4.Caption:=IntToStr(Image1.Canvas.PenPos.X);

Label5.Caption:=IntToStr(Image1.Canvas.PenPos.Y);

end

else

begin

′超出這個區域的點都在圓外設為黃色

Image1.Canvas.Pen.Color:=clyellow;

b:=StrToInt(Label2.Caption);

Label2.Caption:=IntToStr(b+1);′b為圓外點數,加1后傳送給label控件

′顯示當前點的坐標

Label4.Caption:=IntToStr(Image1.Canvas.PenPos.X);

Label5.Caption:=IntToStr(Image1.Canvas.PenPos.Y);

end;

′畫點(長為1像素的直線)

Image1.Canvas.MoveTo(i,ii);

Image1.Canvas.LineTo(i,ii+1);

′計算pi的值

pi:=(4*(StrToInt(Label1.Caption))/(StrToInt(Label1.Caption)+StrToInt(Label2.Caption)));

′得出最接近的圓周率值 Pi值

if (abs(pi-3.141592653589))<(abs(StrtoFloat(label3.Caption)-3.141592653589)) then

Label3.Caption:=FloatToStr(pi);′若新的pi值更加精確,則更新顯示π值的label3

edit1.Text:=timetostr(now);′顯示當前系統經過的時間

end;

添加兩個按鈕控件以方便的控制程序的暫停和繼續:

procedure TForm1.Button1Click(Sender: TObject);

begin

timer1.Enabled:=true;′使得timer控件工作

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

timer1.Enabled:=1;′使得timer控件停止作用

end;

3.3實際運行

運行模擬器,點擊開始模擬按鈕則開始進行圓周率的模擬計算如圖4-1、4-2。

當點的數量越來越大時,計算出的圓周率會越來越接近真實值。

4.結語

本程序沒有采用圓周率的算法,而是通過使用隨機數模擬計算pi值,對π進行逼近。巧妙使用Delphi的一些控件,我們能解決許多實際問題。

參考文獻:

[1]John Ayres.Delphi DirectX圖形與游戲程序設計[M].電子科技大學出版社,2006,7.

[2]李大潛.圓周率π漫話[M].高等教育出版社,2007,12.

[3]周愛名.Delphi源代碼分析[M].電子工業出版社,2004,9.

[4]梁冰.Delphi技術方案寶典[M].人民郵電出版社,2008,2.

主站蜘蛛池模板: 国产精品久久久久久影院| 国产区91| 粉嫩国产白浆在线观看| 日本尹人综合香蕉在线观看 | 亚洲中文字幕久久精品无码一区| 亚洲第一页在线观看| 精品人妻无码中字系列| 亚洲一区二区三区香蕉| 2021亚洲精品不卡a| 国产美女丝袜高潮| 青青国产成人免费精品视频| 一区二区无码在线视频| 久久久精品国产SM调教网站| 欧美在线观看不卡| 欧美另类图片视频无弹跳第一页| 国产成+人+综合+亚洲欧美| 国产真实自在自线免费精品| 成人午夜亚洲影视在线观看| 精品国产亚洲人成在线| 日本亚洲成高清一区二区三区| 女高中生自慰污污网站| 国产成人91精品免费网址在线| 亚洲精品少妇熟女| 日韩精品成人网页视频在线| 亚洲一区二区三区在线视频| 亚洲欧美另类日本| 精品国产成人三级在线观看| 亚洲欧美另类专区| 欧美A级V片在线观看| 91探花在线观看国产最新| 国产精品女同一区三区五区| 精品无码人妻一区二区| 国产美女人喷水在线观看| 男女猛烈无遮挡午夜视频| 久久中文字幕av不卡一区二区| 91人人妻人人做人人爽男同| 国产区在线观看视频| 欧美国产精品不卡在线观看| 国产白浆在线| 国产成人一区二区| 久久国产精品77777| 99热精品久久| 丁香婷婷久久| 欧美69视频在线| 国产成人a在线观看视频| 国产一二视频| 久久黄色免费电影| 欧美不卡视频在线| 91视频区| 国产欧美精品专区一区二区| 国产v精品成人免费视频71pao | 无码精品一区二区久久久| 国产免费a级片| 精品色综合| 成人av手机在线观看| 国产精品网曝门免费视频| 久久亚洲AⅤ无码精品午夜麻豆| 久久久国产精品无码专区| 国产SUV精品一区二区| 超碰aⅴ人人做人人爽欧美| 国产青榴视频在线观看网站| 国产一区二区免费播放| 午夜a视频| 国产成人av大片在线播放| 九九九国产| 亚洲中文在线视频| 欧美一级夜夜爽| 国产丰满大乳无码免费播放| 免费a级毛片视频| 日韩久草视频| 亚洲无码四虎黄色网站| 狠狠色香婷婷久久亚洲精品| 四虎AV麻豆| 国产精品夜夜嗨视频免费视频 | 成人在线视频一区| 亚洲国产AV无码综合原创| 97se亚洲综合在线天天| 国产一区二区三区在线精品专区| 亚洲国产日韩一区| 亚洲成人播放| 国产精品99在线观看| 亚洲欧美在线综合图区|