Keywords:TurboPascal,ANSI,PASCAL,Unit,PROGRAM,インターフェース部,実現部,初期化部,DOS Unit,SYSTEM Unit,.TPU
PASCALはコンピュータのプログラムの教育用に考案されたという点でBASICと似ていますが,複雑な問題を人間の思考に近い形で表現するために,厳密な型,階層構造,集合などを導入した点で,気軽に入っていけることに重点を置いたBASICとは異なっています.また,ユーザが型や値にも名称をつけることができる点においてもFORTRANやPL/Iとも異なる処理系です. PASCALが作られた当時はパソコンなど存在せず,ハードウェアにまったく関係しない処理のみを対象としていたので当初のPASCALでも不足はなかったのですが,パソコン時代になってハードウェアの種類は増え, OSの能力は小さく, 利用可能なメモリも少ない状況でPASCALのメリットを生かすべく,省略と拡張が加えられ,8ビット時代最後のPASCALとして登場したのがCP/M版TurboPascalでした. その後,アセンブラやほかの言語とのリンク,分割コンパイル,割り込み処理対応,内蔵アセンブラ,オブジェクト指向などの拡張を行って,現在のTurboPascalに至っています. 現在,標準PASCALといえばANSI PASCALを指します.< copyright 1994 中野正次 >トップに戻る
TurboPascal
(ターボ・パスカル)
PROGRAM
(プログラム)
SYSTEM Unit
TurboPascalでコンパイルされたプログラムを実行するときに最低限必要な定数変数関数を含むユニットで,TURBO.TPLの一部です.指定しなくてもプログラムのコンパイル時にリンクされます.トップに戻るORPASCALに戻るANSI(アンシ) PASCAL
American National Standards Instituteの規格によるPASCAL言語です.厳密な型規制に象徴される融通のきかないPASCALとの印象が強いのですが,可変レコードの動的変数やブロック外へのGoto文などと,TurboPascalにはない便利な機能も含まれています.トップに戻るORPASCALに戻るUnit
(ユニット)
.TPU
ユニットの中間イメージ・ファイルの拡張子です.プログラムのコンパイル時にユニット名(=.TPUのファイル名)を指定することで,プログラムにリンクされます.中間イメージそのものは実行することはできません.トップに戻るORPASCALに戻るDOS Unit
ソフトウェア割り込みや低レベルのファイル・アクセスのための手続き,およびこれらのパラメータ記述に必要な変数の型や定数などが含まれています. トップに戻るORPASCALに戻る< copyright 1994 中野正次 >トップに戻るORPASCALの予約語に戻る
Interrupt
(インターラプト)
Assembler
(アセンブラ)
Case Else
TurboPascalではCASE文の選択定数は何度現れてもよく,選択子がどの選択定数にも該当しない場合をELSE以下で処理することができます. また,どの選択定数にも該当しない場合にはELSEがなくてもエラーになりません.トップに戻るORPASCALの予約語に戻るWITH DO
レコード型変数の構成要素(欄)を参照するには“レコード名.欄名”と書かなければなりませんが,WITH文を使えば欄名のみで参照できるようになります.WITH文は,特定のレコード変数のいくつかの欄を参照するときに有効で,ソース・コードが簡単になるだけでなく,実行速度も上がります.次の2行は同じ処理をしています. rec.field 1 :=rec.field2+rec.field3 WITH rec DO field 1 :=field2+field3トップに戻るORPASCALの予約語に戻るASM
TurboPascalの内蔵アセンブラは,実行文が書ける任意の場所にASM文として書くことができます.ASM文はASMで始まりENDで終わります. ASM文内はアセンブラに準じた文法(MOV AX, Byte Ptr ES : BP[− 10H]など)が適用され,PASCALらしさはどこにもありません.ASM文内からPASCALで宣言された変数名などは参照できますが,アセンブラでの処理方法とその効果の関係は全面的にユーザの責任になります.トップに戻るORPASCALの予約語に戻るInline
(インライン)
< copyright 1994 中野正次 >トップに戻るORPASCALのプログラミング構造に戻る
FUNCTION
(関数)
再帰呼出し
(RecursiveCallリカーシブ・コール)
PROGRAM recurcal ;(* Formula calculation test program. 1993 / 11 / 24
Only Integer,+-*/() Suported *)
Var a : INTEGER ;
I,j : WORD ;
s : STRING ;
FUNCTION vcal(lv:WORD) : INTEGER ;
LABEL e9 ;
VAR v1,v2 : INTGER ; xv,tf : BOOLEAN ;
procedure cal ; (Decimal number eval*)
BEGIN
WHILE s[i] IN ['0'..'9'] DO BEGIN
v1:=v1*10+ORD(s[i]) AND 15 ;Inc(i) ; xv:=TRUE END
END ;
BEGIN WRITE(' @',lv) ;
v1=0 ; xv:=FALSE ;
WHILE s[i]=' ' DO Inc(i) ;
cal ; WRITE(' ',vl) ;
v2:=v1 ; vcal:=v2 ;
WHILE s[i]<>#0 DO BEGIN
IF s[i]=' ' THEN BEGIN WHILE s[i]=' ' DO Inc(i) ; tf:=TRUE END
ELSE tf:=FALSE ;
WRITE(' i',i) ;
vcal:=v2 ;Inc(i) ;
CASE s[i-1] OF
')' : IF lv>1 THEN GoTo e9 ELSE EXIT ;
'+' : IF lv<4 THEN v2:=v2 + vcal(4) ELSE GoTo e9 ;
'-' : IF xv THEN IF lv<4 THEN v2:v2 - vcal(4) ELSE GoToe9
ELSE v2:=-vcal(6) ;
'*' : IF lv<6 THEN v2:=v2 * vcal(6) ELSE GoTo e9 ;
'/' : IF lv<6 THEN v2:=v2 DIV vcal(6) ELSE GoTo e9;
'(' : BEGIN IF xv THEN IF tf THEN EXIT ELSE v2:=v2*vcal(1)
ELSE v2:=vcal(1) ;
IF s[i] IN ['0'..'9'] THEN BEGIN
v1:=0 ; cal ; WRITE(' (',v1) ; v2:=v2*v1 END
END ;
ELSE BEGIN e9: Dec(i) ; EXIT END
END(*CASE*) ;
xv:=TRUE ; Inc(j) ; WRITE(' j',j,' lv',lv) ;
END ; vcal:=v2
END ;
BEGIN REPEAT
WRITELN('Input Formula') ;
READLN(s) ; s:=s+#0 ; i:=1 ; j:=0 ;
a:=vcal(0) ;
WRITELN(^m^j'Value=',a,' Next pos=',i,' ASCII=',Ord(s[i]))
UNTIL s=#0 END .
トップに戻るORPASCALのプログラミング構造に戻るPROCEDURE
(手続き)
< copyright 1994 中野正次 >トップに戻るORPASCALのデータに戻る
VAR(Variable)(変数)
VARは変数宣言を示すキーワードです.PASCALでは,変数は使用前に宣言されていなければならず,暗黙宣言や文脈宣言は存在しません.ただし,システムが使用目的を決めた宣言ずみ変数はあります. 変数宣言は変数名に型を割り当てる作業であり,コンパイラはその型から必要なメモリ量を計算します.日本語では“数”という字が使われていますが,英語では“可変”,変わり得るという意味で数値とはかぎられていません(文字型や集合型).トップに戻るORPASCALのデータに戻るTYPE(型)
TYPEは型宣言を示すキーワードです.型宣言は,システム定義の型を組み合わせて配列型やレコード型に名前を付けたり,列挙型としてその値すべてに名前を付けます.配列型やレコード型は名前を付けなくても変数宣言時に構造を指定できますが,手続き(関数)の仮パラメータの型として,または型キャスト機能を使用するときは型名を宣言しなければなりません. TurboPascalでは以下の型が定義済みになっており,このうちすべて大文字で書いてあるものは標準PASCALで定義されているものです(カッコ内の数字はバイト数を示す). ▼単純型:INTEGER整数(2),REAL実数(6),CHAR文字(1),BOOLEAN論理(1),Byteバイト(1),Wordワード(2),Longint長整数(4),Shortint短整数(1),Single単精度実数(4),Double倍精度実数(8),Extended拡張実数(10),Comp拡張整数(8). ▼ポインタ型:Pointer(4).CONST(Constant)(定数)
CONSTは定数宣言を示すキーワードです.定数宣言は定数名に値を割り当てる作業であり,コンパイラはその表現から型を決定します.定数宣言できるのは整数,実数,文字,文字列のみです.TurboPascalでは,ユーザが型まで明示する型つき定数も宣言できます.トップに戻るORPASCALのデータに戻る型つき定数
TurboPascalの型つき定数は,変数と同様に定数名に型を割り当ててメモリを得るとともに,その内容を設定します.つまり,実行に先立って値が決まっている変数と見ることができます.当然,その値は実行中に(代入などによって)変化することがあるので注意しなければなりません.トップに戻るORPASCALのデータに戻るAbsolute
(アブソリュート)