Sign in Join
Wiki copytemporary

Basic Pascal Tutorial/Chapter 3/Solution/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/Solution/ja

OldNewLine
1+3Ea - 解答 (著者: Tao Yue, 状態: 原文のまま修正なし)
2+
3+**フィボナッチ数列問題の解答**
4+
5+``` pascal
6+(* 著者: Tao Yue
7+ 日付: 19 July 1997
8+ 記述:
9+ 最初の10個のフィボナッチ数列の数を求める。
10+ Version:
11+ 1.0 - original version
12+*)
13+
14+program Fibonacci;
15+
16+var
17+ Fibonacci1, Fibonacci2 : integer;
18+ temp : integer;
19+ count : integer;
20+
21+begin (* Main *)
22+ writeln ('最初の10個のフィボナッチ数列は:');
23+ count := 0;
24+ Fibonacci1 := 0;
25+ Fibonacci2 := 1;
26+ repeat
27+ write (Fibonacci2:7);
28+ temp := Fibonacci2;
29+ Fibonacci2 := Fibonacci1 + Fibonacci2;
30+ Fibonacci1 := Temp;
31+ count := count + 1
32+ until count = 10;
33+ writeln;
34+
35+ (* もちろん、この問題をとくために FOR ループや WHILE ループを使うこともできる。 *)
36+
37+end. (* Main *)
38+```
39+
40+**2の累乗値の解答**
41+
42+``` pascal
43+(* 著者: Tao Yue
44+ 日付: 13 July 2000
45+ 記述:
46+ 20000未満の2の累乗値をすべて求め、1行に5つ表示する。
47+ Version:
48+ 1.0 - original version
49+*)
50+
51+program PowersofTwo;
52+
53+const
54+ numperline = 5;
55+ maxnum = 20000;
56+ base = 2;
57+
58+var
59+ number : longint;
60+ linecount : integer;
61+
62+begin (* Main *)
63+ writeln ('Powers of ', base, ', 1 <= x <= ', maxnum, ':');
64+ (* ループの設定 *)
65+ number := 1;
66+ linecount := 0;
67+ (* ループ *)
68+ while number <= maxnum do
69+ begin
70+ linecount := linecount + 1;
71+ (* 行の最初の数字でなければカンマとスペースを表示させる *)
72+ if linecount > 1 then
73+ write (', ');
74+ (* 数字を表示させる *)
75+ write (number);
76+ (* 数列の最後の数字でなく、行の最後の数字ならコンマを表示し、次の行に行く。 *)
77+ if (linecount = numperline) and not (number * 2 > maxnum) then
78+ begin
79+ writeln (',');
80+ linecount := 0
81+ end;
82+ (* 数字を増やす *)
83+ number := number * base;
84+ end; (* while *)
85+ writeln;
86+
87+ (* このプログラムも REPEAT..UNTIL ループを用いて書き換えることができる。 *)
88+
89+end. (* Main *)
90+```
91+
92+私が3つの定数、すなわち、基数、各行に表示するための累乗の数、最大数を使ったことに注意して欲しい。こうすることで簡単に、このプログラムが将来、改変できることを確実にしている。
93+
94+直の値よりも定数を利用するというのは身につけておくべきよいプログラミング習慣である。非常に長いプログラムを書いたとき、ある数値を何千回も参照することになるかもしれない。もし、それらを決め打ちしていたなら、それらをすべて探し出さなくてはならなくなる。また、同じ値を異なる文脈で利用しているかもしれない。従い、単純に検索・置換するというわけにはいかない。定数を使うことでプログラムを拡張するのがずっと簡単になるのである。
95+
96+また、数値変数に対して `longint` タイプを用いたことにも注意して欲しい。こうした訳は `number <= 20000` のチェックで失敗したときに、`number` が `16384` の2つあとの累乗で `32768` に達してしまうからである。これは整数タイプの範囲(`-32768` から `32767`まで)を超えてしまう。(`longint` でない場合を試して、何が起こるか見てみなさい。)
97+
98+| | | |
99+|----|----|----|
100+| [[Basic Pascal Tutorial/Chapter 3/Programming Assignment/ja|previous]] | [[Basic Pascal Tutorial/Contents/ja|contents]] | [[Basic Pascal Tutorial/Chapter 4/Procedures/ja|next]] |
101+
102+---
103+*From the Free Pascal wiki, page "Basic Pascal Tutorial/Chapter 3/Solution/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