Sign in Join
Wiki copytemporary

Basic Pascal Tutorial/Chapter 3/FOR..DO/ja: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: Basic Pascal Tutorial/Chapter 3/FOR..DO/ja

OldNewLine
1+## FOR...DO Loops (著者: Tao Yue, 状態: 原文のまま修正なし)
2+
3+FOR...DO は Pascal におけるループを構成するためのものである。もちろん、まず "ループとは何か?"という疑問が湧くだろう。
4+
5+### Loops
6+
7+ループするとは文や複合文が、ある条件が満たされるまで繰り返し繰り返し実行されることを意味する。
8+
9+3つのタイプのループがある。
10+
11+- 固定反復(fixed repetition) - 固定された回数のみ反復する
12+- プリテスト(pretest) - ブール式をテストし、TRUE ならループに入る
13+- ポストテスト(posttest) - ループを実行し、それからブール式をテストする
14+
15+### FOR...DO Loop
16+
17+Pascal においては固定反復が for ループである。一般的な形式は次の通りである。
18+
19+``` pascal
20+for index := 初期値Low to 終了値High do
21+    文;
22+```
23+
24+インデックス変数は **順序型** データでなくてはならない。このインデックスはループ本体の中で計算に用いられるが、その値は変えることはできない。たとえば、 `count:=5` とするとプログラムに例外を引き起こす。
25+
26+Pascal では、 `for` ループは1の増加のみがカウントできる。 ループは *break* 文で中断できる。 インデックスを利用した例を次に示す。
27+
28+``` pascal
29+sum := 0;
30+for count := 1 to 100 do
31+begin
32+ sum := sum + count;
33+ if sum = 38 then break;
34+end;
35+```
36+
37+コンピュータは、終了になるまで延々合計を求め続ける。しかし、それは数学者ガウスが簡単な近道で合計を求めたやり方よりもはるかに速い (`1+100 = 101. 2+99 = 101`。パターンがわかっただろうか? 100の数字があるので、そのパターンが50回繰り返される `101*50 = 5050`。これは高等数学ではないし、ガウスに由来するというのもたぶん作り話だろう)。
38+
39+`for-to-do` ループでは、初期値は終了値よりも小さくなくてはならない。さもないとループ自体が実行されない。もし、カウントダウンしたいのなら、 `for-downto-do` ループを使うべきである。
40+
41+``` pascal
42+for index := 初期値High downto 終了値Low do
43+   文;
44+```
45+
46+## See also
47+
48+[[Basic Pascal Tutorial/Chapter 3/WHILE..DO/ja|While ...Do loops/ja]]
49+
50+[[Until/ja|Repeat... Until loops/ja]]
51+
52+[[for-in loop/ja|For... in loops/ja]]
53+
54+| | | |
55+|----|----|----|
56+| [[Basic Pascal Tutorial/Chapter 3/CASE/ja|previous]] | [[Basic Pascal Tutorial/Contents/ja|contents]] | [[Basic Pascal Tutorial/Chapter 3/WHILE..DO/ja|next]] |
57+
58+---
59+*From the Free Pascal wiki, page "Basic Pascal Tutorial/Chapter 3/FOR..DO/ja", as it stood on 2022-08-20 after a change by Kai Burghardt, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history