- 1、本文档共46页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章回圈叙述
第五章 迴圈敘述 5-1 for 5-2 while與repeat 5-3 goto 5-4 with 人類的生活有許多事都是具有重複性的,例如一天有24小時、一星期有七天、同一門課要上18次才能拿到學分。程式設計的目的是要解決日常生活中可預期的事件,為了解決其重複性,Delphi的迴圈敘述如下: 1. for 2. while、repeat 3. goto 4. With for的使用時機為程式設計階段已知執行次數,請看5-1節。若未知執行次數,則應使用while或repeat,請看5-2節。goto則為非結構化語言的遺留產物,原則上它應已走入歷史,很多人建議應將goto敘述從結構化語言移除,但又擔心有些程式無法適應,所以目前goto敘述還是繼續存在,請看5-3節。with的功能為同時設定同一記錄的多個欄位、或是同一物件的多個屬性與方法,請看5-4節。 5-1 for 若於程式設計階段已知要執行的次數,則可使用for敘述,Delphi的for敘述語法如下: for變數 := 計數初值 to/downto 計數終值 do begin [敘述區塊1 ;] [break ;] [continue ;] [敘述區塊2 ;] end ; 以上語法說明如下: 1. for敘述的計數變數必須是序數變數,且又分為遞增計數與遞減計數。遞增計數時,採用to;遞減計數時,則使用downto。 2. 程式若執行到break,則會提早離開for迴圈。 3. 程式若執行到continue,則會略過continue下面的敘述區塊2,繼續執行下一個計數變量,請看範例5-1c。 for for begin begin 敘述區塊1; 敘述區塊1; break; continue; 敘述區塊2; 敘述區塊2; end; end; 4.以下程式片段可統計1至10的和。 sum:=0 for i:=1 to 10 do sum:=sum+i; 5.敘述區塊內可以放置任何合法的敘述,當然也可含有for。for內再含有for稱為巢狀迴圈,請看範例5-1e。 乘法 若沒有乘法運算子,則應如何計算乘法呢?答案是可用累加的方式來計算。例如62 x 38,亦就是62連續相加38次的結果,請看以下程式說明。 範例5-1a 請用for迴圈完成乘法運算。 〔自我練習〕 1.請寫一程式,可以輸出任一指定數字的九九乘法。 範例5-1b 試求2.1+1.9+1.7+…+(-7.1)之和。 程式說明: 1. Canvas是一個無圖示的物件,所以元件盤上並沒有Canvas元件的圖示,若要使用Canvas物件,直接在程式中鍵入物件名稱“Canvas”即可。Canvas的功能是輸出字串與繪圖,詳細說明請看第十三章的繪圖。 2. TextOut是輸出字串的程序,語法如下,其中x、y是顯示字串的座標位置。 Text (x,y,字串) 3. Delphi的計數變數只可以為序數型態,所以計數變數不可為小數。 範例5-1c 示範break及continue敘述。 質數的判斷 一個整數除了1及本身外,若無任何數可以整除它,則稱此數為質數。欲判別輸入的整數N是否為質數,最直接的方法就是將N連續使用2至N-1去除,若均無法整除,則N即為質數。像這種重複某一項工作,且有明確的起始值及終值的演算法,最適合使用for迴圈。 範例5-1d 示範質數的判斷。 巢狀迴圈 for的迴圈中又含有for的迴圈稱為巢狀迴圈,以下的程式片段可求10次1至20的和 procedure TForm1.btnStartClick(Sender: TObject); var n,i:integer; s:string; begin n:=StrToInt(Edit1.Text); s:= 是質數; for i :=2 to n-1 do begin if (n mod i) =0 then begin s:=不是質數; break; //exit 是離開 procedure end; end; Label1.Caption:=s; end; 〔自我練習〕 請寫一個程式,可以印出費式數列的指定項目(不可使用陣列)。 例如 : 輸入4,則輸出 1,1,2,3 輸
文档评论(0)