プログラムは計算機に与える計算や処理の手順のこ とです。計算機が実行可能なのは機械語とよばれる「言語」で手順を 記述したプログラムです。機械語は、人間には分かりにくいものですし、計算 機の種類によってことなります。
通常、人間がプログラムを作成するときには、プログラ ミング言語という言語をつかってプログラムを記述します。そして、その プログラムを実行するためには、プログラミング言語で書かれたプログラムを 機械語のプログラムに翻訳して、翻訳して生成された機械語プログラムを実行 します。この作業をコンパイル(compile)と呼びます。この作業は人間 が手作業で行うのではなくコンパイラと呼ばれるソフトウェアを用い ます。
本授業では、Pascalというプログラミング言語を使 うことにします。プログラミング言語はこの他に、C言語、C++言語、Lispなど いくつもあります。
Pascalのプログラムを実行するまでには次のような作業を経なければなりません。
(1) Pascalプログラムのファイルの作成
(2) Pascalプログラムのコンパイル
(3) 機械語プログラム(実行可能プログラム)の実行
この作業はエディター(Mule)を使用して通常の文書と同様に作成します。 注意すべき点は次のような事柄です。
※ 漢字やひらがなのような全角文字は使用しない。記号や英字に は全角文字と半角文字があるのでとくに注意が必要です。確認のためには fileコマンドが便利です。fileコマンドを実行したとき、半角文字だけか らなるファイルの場合だと、「ascii text」と出力され、全角文字が混じって いると、「data」と出力されます。英字や数字の全角が混じっていた場合は muleにて、プログラム全体をリージョン指定した後、M-x hankaku-region を実行すれば半角化してくれます。
% file daikei.p daikei.p: ascii text (全角文字を含まない場合) % file daikei.p daikei.p: data (全角文字を含む場合)
次のようなプログラムを作ってみましょう。
program daikei(input,output); var a,b,h,s:real; begin write('a b = '); read(a,b); write('h = '); read(h); writeln('s = ',(a+b)*h/2.0) end.
これをmuleを使って作成してください。教科書117ページのものと同じプログラムです。
% mule daikei.p
うまくいかないひとは、私が作ったファイルをコピーしてください。
% cp /home/staff/nisizaki/daikei.p daikei.p
Pascalプログラムの名前をdaikei.pとすると、このプログラムのコンパイ ルは次のようなコマンドを実行してください。
% pc daikei.p
もしくは単に、
% pc daikei
でもかまいません。プログラムに間違いがない場合には、daikeiという実 行可能ファイル(機械語プログラムのファイル)が作成されます。fileコマン ドにより実行可能ファイルであることを確認できます。
% file daikei daikei: executable CRAY Y-MP not stripped (デバッグ用記号情報が削除されていない 実行可能なCRAY-MP用機械語プログラムファイル)
生成された実行可能ファイルが、daikeiという名前をしている場合は次のようにすると実行されます。
% ./daikei もしくは単に % daikei
実行例は次の通りです。
sino% daikei a b = 1.5 1.5 h = 1.5 S = 2.2500000000000E+0000 ← 2.25 × 10 の0乗 sino%
次のプログラムを自分で入力して、実行してみてください。セミコロンの位置や、クオート(')の位置、個数には特に気を付けてください。
program hello(input,output); begin writeln('Hello,hello, this is hello.') end.
次のプログラムを自分で入力して、実行してみてください。
program keisan(input,output); begin writeln(1+2+3+4+5+6+7+8+9+10) end.
次のプログラムを自分で入力して実行してみてください。
program seisunokakezan(input,output); var i,j:integer; begin read(i,j); writeln(i*j) end.
前のプログラムは整数の掛け算のプログラムでした。足し算のプログラム を作ってみなさい。(ヒント:プログラム名seisunokakezanを適当な名前に変え て、式i*jを変更すれば、即完成です。)
次の二つのプログラムを自分で入力して実行してみてください。その違い を比較してください。
program writeexample(input,output); begin write(1,2,3) end.
program writelnexample(input,output); begin writeln(1,2,3) end.
詳しいことが知りたい人は、こちらをクリックしてください。 [Pascal教材]
※動かないとき…
注意:教科書のdaikei.pというプログラムでは、readLnというふうに readlnのl(エル)が小文字になっています。Pascalでは「小文字と大 文字は区別されない」という規則があり、そのため、教科書のようにreadLnと 書いてもかまいません。
あと教科書のプログラムではendの直前の行末にセミコロン(;)が入っ ています。begin...endのところの形は正確には
begin 文 ; 文 ; 文 ; 文 ; 文 end
というふうに、文がいくつかならんでいてその間にセミコロンがある という規則になってます。ただ、Pascalでは、なにもかかないと空文という一 種の文とみなされます。教科書の例は最後の文が空文とみなされて、正しくコ ンパイルされるわけです。