什麼是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,才能消停,哈哈。

這句sql語句是什麼意思,這句SQL語句是什麼意思

西安 白小鵬 你說的對。master.dbo.sysdatabases指的是在master資料庫裡有一個sysdatabases表,這個表裡存的這臺伺服器上是所有資料庫的資訊。n zhonglin 指的是使用unicode字符集。不加n則使用ansi字符集。兩個是有區別的。 天才的機場 是,mast...

SQL語句是什麼意思,SQL語句中AS是什麼意思?

麼吟淦雙玉 用來對資料庫進行操作的 比如select name from lsls表示表名 name 表示表裡面的自段 堯宵雷經義 用來對資料庫進行操作的語句,比如查詢資料 刪除資料 等等的操作所需要使用的資料庫運算元據 仰晗悟昌淼 是資料庫裡面的查詢語句,sql server,oracal等 sq...

日語句型和是什麼用法

輕靈觸動 1 意思是 到底不愧是 用於表示事物的結果果然符合說話人所瞭解的知識或持有的社會觀念,意思和 相近 例句 選手 問題 勝 譯文 到底不愧是專業運動員,不費吹灰之力就把業餘運動員贏了。2 意思是 到底是 正因為是 提及某事物的一般性質,並敘述由此產生而必然產生的推論。例句 茶 先生 言葉遣 ...