program kantan1(input,output); begin writeln(1+1) end.
program kantan2(input,output); begin writeln(1000+16); writeln(1000-16); writeln(1000*16); writeln(1000 div 16) end.
program kantan3(input,output); begin writeln(1000+16, 1000-16, 1000*16, 1000 div 16) end.
program kantan4(input,output); var n : integer; begin read(n); writeln(n*2) end.
program kantan5(input,output); var m:integer; n:integer;
begin read(m); read(n); writeln(m+n,m-n,m*n,m div n)
end.
program kantan6(input,output); var m:integer; n:integer; begin read(m,n); writeln(m+n,m-n,m*n,m div n) end.
総合校舎A号館でのPascalプログラムのコンパイルと実行の例をみてみましょう。基本的には普遍科目「情報処理」のテキスト「キャンパス情報リテラシー」の120ページと同じです。
sino% mule kantan1.p
sino% pc kantan1
プログラムに間違いがあれば、その間違いを指摘するメッセージが出力されます。間違いがないときには機械語プログラムのファイル(実行可能ファイル)が生成されます。
sino% kantan1
そうすると、プログラムが実行されます。kantan1.pが「簡単なプログラム(その1)」だったとすると、次のような結果が画面に出力されてこのプログラムの実行は終了します。
2 sino%
教科書の3ページに次のようなプログラムが載っている。
program arithmetic(input,output); var i,j,s,d,p,q:integer; begin read(i,j); s:=i+j;d:=i-j;p:=i*j;q:=i div j; writeln(s,d,p,q) end.
このプログラムは、その6のプログラムkantan6とまったく同じ動作をする。二つのプログラムの違いは、
<変数> := <式>
という形の文がいくつか使われているということである。これについて説明しよう。この形の文は代入文と呼ばれる文である。上のプログラムであれば、
s := i + j
がそれにあたる。これは、左辺で与えられている変数名がsという変数に、右辺の式の値を入れるという意味をもつ。この文が実行される以前にこの変数に値が入っていた場合にはその値は捨てられてしまう。
代入文の意味を考えると、プログラムarithmeticとプログラムkantan6とはまったく同じ動作をするプログラムであることがわかる。違いは、和、差、積、商の計算結果をいったん変数に保存しておくかどうかという点である。
ちなみに、和、差、積、商の計算結果は、それぞれs、d、p、qという名前の変数に保存される。これらの変数の名前の由来は、sum、difference、power、quotientであると推測される。
以上で、教科書の2ページの例題1.1の解説が終わった。次に、例題1.2のプログラムを説明するために簡単なプログラムをいくつも紹介しよう。
以前に、整数をキーボードから入力し、その整数を2倍して、計算結果を画面に表示するというプログラムを紹介した。
program kantan4(input,output); var n : integer; begin read(n); writeln(n*2) end.
このプログラムの実行例をみてみましょう。
% pc kantan4.p …プログラムのファイルのコンパイル % kantan4 …機械語プログラムのファイル(実行可能ファイル)の実行 10 …左の「10」というのがキーボードからの入力。1と0のキーを打ったのち、リターンキーを押す。 20 …「20」が計算結果の出力 %
これでも立派なプログラムですが、実行後、整数が入力されるまで、「無表情」です。整数を入力する前に
「Please input an integer」
とか表示してくれたり、計算結果を入力したあとに、
「The result is」
など、表示してくれるとより一層使い良いプログラムになります。そのためには、次のようにプログラムを変更すればよいのです。
program kantan7(input,output); var n : integer; begin writeln('Please input an integer'); read(n); writeln('The result is'); writeln(n*2) end.
これを実行すると次のようになる。
dosetu% pc kantan7 dosetu% kantan7 Please input an integer 20 The result is 40 dosetu% (太字がキーボードから入力された)
説明が必要なのは、
writeln('Please input an integer')
とか
writeln('The result is')
という部分でしょう。writeln文の引数(小括弧で挟まれた部分)は式というものがおかれると説明しました。今までの例では、整数型の式だけを紹介していただけですが、今回登場した、
'Please input an integer'
とか
'The result is'
というものも式の一種で、文字列と呼ばれるものです。これは、(英)文章を表示したいときに、文字の列自身をデータとして扱うためのもので、文字列は、データとしての文字の列です。
writeln文は、引数に文字列があたえられたときにはその文字列のあらわす文字の列を画面に表示します。
(注意)
writeln(16)
も
writeln('16')
も両方とも実行されると、画面に「16」と表示します。しかし、前者が、整数式16の計算結果である整数値(もちろん16)を表示しているのに対して、後者は、文字列'16'、すなわち、1という文字と6という文字が順に並んだ列のデータを表示しているわけで、まったくの別物を表示しているのです。
プログラムは計算の手順を記述したものです。計算の手順を記述する単位が文です。今まで紹介してきた文には、read文やwriteln文がありました。これらの文は。もっとも基本的な文の一つです。このような基本的なものの他に、いくつかの文から、より複雑な文を構成ようなものもあります。そのような文としてまず最初に紹介するのが、if文(条件文)です。次に、if文を使ったプログラムの例を紹介します。
次は、整数を二個、キーボードより入力してもらい、そのうちの大きい整数を画面に出力するというプログラムです。
program kantan8(input,output); var m,n:integer; begin writeln('Please input two integers'); read(m,n); if m>n then writeln(m) else writeln(n) end.
実行例は次のようになります。
sino% pc kantan8.p sino% kantan8 Please input two integers 10 20 20 sino% kantan8 Please input two integers 20 10 20 sino% kantan8 Please input two integers 10 10 10 sino%
上記のプログラムで説明されていない部分は、
if m>n then writeln(m) else writeln(n)
です。このような文はif文と呼ばれ、一般形は
if 式 then 文 else 文
という形をしています。上のプログラムのif文の意味は、
「もし、m>nが真であるならば、文writeln(m)を実行し、偽であるならば、文writeln(n)を実行せよ」
というものです。ここで、m>nは実は式です。もちろん、整数値を計算結果として持つような式ではなく、論理値(ブール値、bool値)を値としてもちます。論理値というのは、
「真」、「偽」
という二つの値のいずれかです。論理値の型(データの種類)を論理型と呼び、変数宣言の時などには
boolean
と書きあらわします。
「m < n」というのは、論理型の式であり、論理値を計算結果とします。変数名がmである変数の整数値が、変数名がnである変数の整数値よりも本当に小さいときには、式の値が「真」となり、そうでないときには、「偽」となります。
論理型の式で二つの整数を比較するようなものはこの他に代表的なものとして、
m = n mとnが等しい。
m <> n mとnは等しくない。
m <= n mはn以下である。
m >= n mはn以上である。
m < n mはnより本当に小さい。
m > n mはnより本当に大きい。
上で紹介した、さまざまな整数比較の式を使用することにより、kantan8のプログラムのif文を実行結果が変わらないように書き換えることができる。いろいろ書き換えてみよ。
Pascalのプログラムで使用される文字は次のとおりである。
これ以外の文字(#や$)は、あとで説明する文字列の中で使うことができる。漢字、ひらがななどについては、コンパイラによって使えたり使えなかったりする。