什麼是repeat語句和while語句

時間 2021-10-24 03:58:13

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