Pascal-units
提供:Dev Guides
パスカル-単位
Pascalプログラムは、ユニットと呼ばれるモジュールで構成できます。 ユニットはいくつかのコードブロックで構成される場合があり、コードブロックは変数と型宣言、ステートメント、プロシージャなどで構成されます。 Pascalには多くの組み込みユニットがあり、Pascalを使用すると、プログラマは独自のユニットを定義して記述し、後でさまざまなプログラムで使用できます。
組み込みユニットの使用
組み込みユニットとユーザー定義ユニットの両方が、uses句によってプログラムに含まれます。 既に_Pascal-Variants_チュートリアルでバリアントユニットを使用しています。 このチュートリアルでは、ユーザー定義ユニットの作成と組み込みについて説明します。 ただし、まずプログラムに組み込みユニット crt を含める方法を見てみましょう-
program myprog;
uses crt;
次の例は、 crt ユニットの使用を示しています-
Program Calculate_Area (input, output);
uses crt;
var
a, b, c, s, area: real;
begin
textbackground(white); ( *gives a white background* )
clrscr; (*clears the screen *)
textcolor(green); ( *text color is green* )
gotoxy(30, 4); ( *takes the pointer to the 4th line and 30th column)
writeln('This program calculates area of a triangle:');
writeln('Area = area = sqrt(s(s-a)(s-b)(s-c))');
writeln('S stands for semi-perimeter');
writeln('a, b, c are sides of the triangle');
writeln('Press any key when you are ready');
readkey;
clrscr;
gotoxy(20,3);
write('Enter a: ');
readln(a);
gotoxy(20,5);
write('Enter b:');
readln(b);
gotoxy(20, 7);
write('Enter c: ');
readln(c);
s := (a + b + c)/2.0;
area := sqrt(s* (s - a)*(s-b)*(s-c));
gotoxy(20, 9);
writeln('Area: ',area:10:3);
readkey;
end.
これは、Pascalチュートリアルの最初に使用したものと同じプログラムで、コンパイルして実行し、変更の効果を見つけます。
Pascalユニットの作成と使用
ユニットを作成するには、保存するモジュールまたはサブプログラムを作成し、*。pas *拡張子の付いたファイルに保存する必要があります。 このファイルの最初の行は、キーワードunitで始まり、その後にユニット名が続く必要があります。 たとえば-
unit calculateArea;
以下は、Pascalユニットを作成する際の3つの重要なステップです-
- ファイルの名前とユニットの名前はまったく同じでなければなりません。 したがって、ユニット_calculateArea_は_calculateArea.pas._という名前のファイルに保存されます
- 次の行は、単一のキーワード interface で構成される必要があります。 この行の後に、このユニットに含まれるすべての関数とプロシージャの宣言を記述します。
- 関数宣言の直後に、単語 implementation を書きます。これもキーワードです。 キーワード実装を含む行の後に、すべてのサブプログラムの定義を提供します。
次のプログラムはcalculateAreaという名前のユニットを作成します-
unit CalculateArea;
interface
function RectangleArea( length, width: real): real;
function CircleArea(radius: real) : real;
function TriangleArea( side1, side2, side3: real): real;
implementation
function RectangleArea( length, width: real): real;
begin
RectangleArea := length *width;
end;
function CircleArea(radius: real) : real;
const
PI = 3.14159;
begin
CircleArea := PI* radius *radius;
end;
function TriangleArea( side1, side2, side3: real): real;
var
s, area: real;
begin
s := (side1 + side2 + side3)/2.0;
area := sqrt(s* (s - side1)*(s-side2)*(s-side3));
TriangleArea := area;
end;
end.
次に、上で定義したユニットを使用する簡単なプログラムを書いてみましょう-
program AreaCalculation;
uses CalculateArea,crt;
var
l, w, r, a, b, c, area: real;
begin
clrscr;
l := 5.4;
w := 4.7;
area := RectangleArea(l, w);
writeln('Area of Rectangle 5.4 x 4.7 is: ', area:7:3);
r:= 7.0;
area:= CircleArea(r);
writeln('Area of Circle with radius 7.0 is: ', area:7:3);
a := 3.0;
b:= 4.0;
c:= 5.0;
area:= TriangleArea(a, b, c);
writeln('Area of Triangle 3.0 by 4.0 by 5.0 is: ', area:7:3);
end.
上記のコードをコンパイルして実行すると、次の結果が生成されます-
Area of Rectangle 5.4 x 4.7 is: 25.380
Area of Circle with radius 7.0 is: 153.938
Area of Triangle 3.0 by 4.0 by 5.0 is: 6.000