1樓:乜初珍
while 語句
執行一個語句,直到指定的條件為 false。
while (expression)
statements
引數expression
必選項。boolean 表示式,在迴圈的每次迭代前被檢查。 如果 expression 是 true,則執行迴圈。如果 expression 是 false,則結束迴圈。
statements
可選項。expression 是 true 時要執行的一個或多個語句。
說明while 語句在迴圈第一次被執行前檢查 expression。如果 expression 此次是 false,則該迴圈一次都不被執行。
示例下面示例說明了 while 語句的用法:
function breaktest(breakpoint)
return(i);
}repeat 語句用於“重複執行迴圈體,一直到指定的條件為真時為止”。語法格式為:
repeat
語句1;
……語句n;
until 布林表示式;
repeat重複基本上有和while重複一樣的描述迴圈計算的能力,但有一些不同:在repeat語句的結構中,布林表示式求值在計算操作之後,而 while語句中,布林表示式求值在計算操作之前,也就是說repeat至少執行一次迴圈體。while語句的成分語句只能是一個語句。
因此,當重複動作包含多個語句時,要用begin和end ,使它變成一個複合語句。而repeat語句的保留字repeat和until已經起語句括號作用,可以包含多個語句而無須begin和end。 repeat語句中,當布林表示式為true時結束迴圈,而while語句中,是當表示式為false時才結束迴圈。
當描述由計算操作後的情況確定重複是否繼續進行的計算時,通常用repeat語句描述。
2樓:匿名使用者
while語句
1.while迴圈的執行形式 while 布林表示式 do 語句
例如:k:=10;
while k>0 do
begin
writeln (k);
k:=k-1
end;
其中(1)while 和do是pascal保留關鍵字,是while迴圈語句的組成部分。
(2)保留關鍵字do後面的“語法”只能是一條語句,稱為“迴圈體”;如果迴圈 體中需要包含多個語句則應該如上例所示,採用一條複合語句。
2.while迴圈的執行功能 當執行到while語句時
(1)求出布林表示式的值
(2)若布林表示式的值為真,則執行迴圈體內的語句;若為“假”,執行步驟4
(3)重複步驟1和2
(4)迴圈結束,執行迴圈後面的語句。
repeat-until語句
1.repeat-until型別的迴圈的執行形式
repeat
語句1語句2……
語句nuntil 布林表示式
例如:以下迴圈求n=1+2+3+……+100
n:=0;t:=i;
repeat
n:=n+t; t:=t+1;
until t>100;
其中(1)repeat和until是pascal保留關鍵字。
(2)在repeat和until之間的語句構成迴圈。在它們之間可以有任意多個語句,這一點和for,while迴圈不同,for,while迴圈體在語法上只允許一條語句。
2.repeat-until迴圈的執行功能
(1)遇到repeat語句後,即進入迴圈體,順序執行迴圈體內的語句。
(2)遇到until語句後,求布林表示式的值。若值為假,則返回步驟1;若為“真”,執行步驟3
(3)迴圈結束,執行until後面的下一條語句。
3樓:
【用途】
用於你不知道確切的迴圈次數的時候。
【while】
一般形式
while (boolean表示式) do
(迴圈體)
fp執行到這裡時
會先檢查boolean表示式的值[注:這裡就是while和repeat的區別!]
當為true的時候 再執行你的迴圈體
[反之 當一開始boolean表示式就為false的時候 他直接跳過 根本不執行迴圈體]
執行完一次之後 返回檢查boolean表示式的值
如果依舊為true 則繼續執行迴圈體
否則迴圈結束 執行接下來的語句
【例項】
在我所接觸到的題目中
while語句一般用於讀入資料的處理上
比如題目要你讀入一個字串
並約定以'?'(或者其他符符號)作為結束的標誌
那麼此時 while語句就可以π上用場了
[code]
var ch : char;
s : string;
begin
s := '';
read(ch);
while ch<>'?' do
begin
s := s + ch;
read(ch);
end;
... ...
這就是這個程式的讀入的處理了
應該說 在很多以字元讀入的題目中
while語句是很有用的
(而且越到後來 你就會發現 很多題目演算法其實很簡單
反而在資料的讀入處理上很糾結 這個時候你就一定一定要想到while了..)
[注:如果有的時候 你發 現你的code執行之後一直是黑屏(死迴圈)
那麼你一定要確保你的while語句是對的
比如剛才的例子中 我的ch的值 是不斷地改變的
也就是說 迴圈體中通常包括改變boolean表示式值的語句
而往往初學者就忘記了這一點 所以導致boolean表示式始終為true
而導致程式陷入死迴圈
還是拿剛才的例子來說吧
如果我沒有寫read(ch)這一句話 而你讀入的字串第一個字元也不是'?'
那麼ch<>'?'就一直為真 so 電腦這個苕傢伙就一直執行下去了..
= =;; 像我到後來寫n長的題目的時候 最痛苦的莫過於差錯了..
更痛苦的是 查了半天覺得主程式沒錯 而最後發現是while讀入的問題的時候
真的是想撞牆啊...所以 童鞋你一定要注意!!!]
【repeat】
一般形式
repeat
(迴圈體)
until (boolean表示式)
fp執行到這裡
會先執行迴圈體 then檢查boolean表示式的值
當為true的時候 停止執行迴圈體
所以呢 repeat語句都至少執行一次迴圈體的
【例項】
我們就還是拿剛才while裡面的例子來說吧
那麼我們用repeat就應該這樣寫
//var ch : char;
s : string;
begin
repeat
read(ch);
s := s + ch;
until ch='?';
... ...
其實最終的目的和效果都是一樣的
喔 剛才漏了一點額
不僅是讀入啊
到後來要你迴圈求解
比如萬惡但是相當經典的“生日蛋糕問題”或者基礎的轉n進位制問題
這些題目都是需要用到while和repeat
(轉進位制問題中 你用了while之後 就會感嘆
哇塞 while真方便)
當然還有很多很多 這裡就不列舉了
[注:值得注意的依舊是注意表示式值的改變
repeat while中最常見的都是無限迴圈]
【比較while和repeat】
區別呢在上面也提到了 就再總結一下吧
1. repeat至少執行一次迴圈體
while最少一次都不執行
2. repeat是boolean值為真時停止迴圈
while則是為真的時候繼續迴圈
到實際的應用中
你就根據兩者的差別來適當地選擇啦
(剛開始的時候我覺得這倆是無所謂寫哪個個
畢竟效果都一樣 只不過寫法不一樣而已
但是到後來 根據題目的不同
你還是會發現其中的某一個比另一個較優
這個就得在你寫題的過程中慢慢理會啦
不過如果你沒有理會的話= =;;
那就哪個順手寫哪個吧..)
呃..以上就是我總結的啦...
不知道你看不看得懂呃...
4樓:匿名使用者
repeat與while都是迴圈語句,下面配上例子進行講解:
while例:
while not eof do
begin
readln(n);
writeln(n);
end;
while語句的基本結構式
while+布林表示式+do+語句;
或while+布林表示式+do+begin語句一語句二
......
end;
如果在while與do之間的布林表示式值為真時,那麼就執行do後面的內容,然後返回到while與do之間的布林表示式繼續判斷,如果真就一直類此迴圈。
repeat例:
repeat
readln(n);
writeln(n);
until eof;
這個跟while類似,不過是until後的布林式為假時才繼續迴圈,而且repeat與until之間可以夾帶任意多條語句
5樓:匿名使用者
一、關於for
迴圈次數是已知的,用for迴圈省事。
如:把"hello"連寫10遍。
for i:=1 to 10 do write('hello ');
二、關於while
如果事先不能確定迴圈的次數,迴圈開始需要依靠其它條件得到滿足才能啟動就得用while
如:當我鍵入'y'時,就開始不停寫"hello",program testwhile;
var a:char;
bengin
read(a);
while a='y' do write('hello');
end.
輸入的字元不是y,程式直接結束。如果是y,那就......, 哈哈三、關於repeat
如果迴圈的次數不能事先確定,但迴圈一定要進行(至少也要進行一遍),直到滿足了某種條件,才能停止,就得用repeat
如等我鍵入'n',就可以停止寫"hello"了。
program testrepeat;
var a:char;
bengin
repeat
readln(a);
write('hello');
until a='n';
end.
執行時需要鍵入一個字元,如果這個字元不是n,就會再次要你鍵入,直接你厭煩了,輸入n,才能消停,哈哈。
break和continue語句有什麼區別,能否舉例說明,越詳細越好。謝謝了
才旻熊沈然 continue語句只是結束本次的迴圈,而不是終止整個的執行,接著進行下一次是否執行迴圈的判定。而break語句則是結束整個迴圈過程,不再判斷執行迴圈的條件是否成立。比如 1 main 當n能被3整除時,執行continue語句,結束本次迴圈 即跳過print函式語句 只有n不被3整除時...
c語言復合語句問題,為什麼ab是復合語句中的22,而c為主語句的150呢,高手請指教
因為你在復合語句中宣告了乙個區域性變數c,它會隱藏外層的區域性變數,內部的區域性變數被修改為22,但是外部的區域性變數的值還是150,在復合語句結束之後,之前的內層的區域性變數c就消失了,現在只剩下外層的變數c,也就是第一次定義的變數。它的值為150,而變數a,b一直是乙個變數,不存在同變數c一樣的...
英語句子為什麼是what color is your hat 而不是is換成are
因為your hat是單數,如果主語是複數,就要用are 滿意請採納,謝謝 勤奮的謝了 is是be的單數形式,are是be的複數形式,這裡是問帽子的顏色,當然用單數形式is.回答可以是,my hat is black.我的帽子是黑色的。what colour is this hat?為什麼加this...