program 名前(input,output); <-- ここにセミコロンがある。 宣言部 <-- 変数などの宣言をする。 begin 文 ; 文, ...; 文 <-- 本体。文を ; で区切って end. 並べる。 <-- 最後のピリオドが プログラムの終りを示す。
[上の説明 ]
Pascal プログラムの書式では、空白はいくつあってもひとつ の空白と同じである。行というまとまりに意味はない。頭下げ (インデント)をしたりして形を整えるのは、プログラムの働き自体 には関係ない。プログラムを読みやすくするためには、形を 整えておくのが望ましい。文字列の途中で改行したり、空白を入れ たりしてはいけない。
例 1. 以下は Hello World! という文字列を打ち出して終る プログラムの例。
program first(output);
begin
writeln('Hello World!')
end.
program first(output); begin writeln ( 'Hello World!' ) end.
[演習] 上のプログラム例1を入力してファイルを作り、それを実行させて みる。
Pascalの文には、単純文と複文の2種類がある。
単純文
これから説明する、入出力文や代入文、if 文などのひとつひとつが、
単純文である。
複文
複数の文を次の形に begin end でくくったものが
文 = begin 文; 文;...; 文 end (複文)
複文である。
「複文自体がひとつの文である」ので begin end のかこみの
中の文が複文であってもよく、さらにその中の文が複文であってもよ
いというように、何重にも入れ子構造にできる。
例 入れ子構造をした複文の形の例。
begin begin 文; 文 end; 文; 文; begin 文; begin 文 ; 文 end ; 文 end; end
・出力文 - write, writeln
write, writeln 文は、変数、式などの値、文字列などを(通常) ディスプレイに出力する。
例
writeln(a, b, (a+b-c)div 3 )
writeln('Hello ','World !', '余り =', i mod j)
・入力文 - read, readln
read, readln 文は、キーボードからの入力を読み込んで、変数に 代入する。値を読み込みたい変数を、次のように順にカンマで 区切って並べればよい。
read(変数, 変数,..., 変数) 又は readln(変数,..., 変数)
* read文と readln 文は読み込み後に改行のあるなしの 区別がもとはあったが、今は同じとして扱われる。
たとえば、readln(i,j,k) に実行が移ると、kterm でプロンプトが止まり
入力待ちになる。
そこにキーボードから3つ数を入力する。
「 入力するとき、数の間に空白を入れて区切る。カンマは打たない。」
するとキーボードから入力した3つの数が、順に i, j, k に代入される。
最後にエンターキーを打つ。
プログラムの実行のためには、様々な変数を利用する。プログラム中で
必要な変数は、
プログラムの宣言部であらかじめ宣言しておかなければならな
い。
変数とは、何かを記憶しておくための箱のようなもの、もしくはそれに
つけられた名前のことである。
箱の中にどのような種類のものを収めることが
できるかは、箱ごとに決まっている。
これを変数の型(タイプ)という。たとえば、
var x : integer ;
とすると整数型の変数がひとつ x という名前で宣言されて確保される。これ によりプログラム中で整数変数 x を使えるようになる。
名前の付け方 --- Pascal では 任意の長さの英数字列を変数名として 使える。ただし、begin, end, readln, if など、すでに特定の役割を持って いる予約語は、使えない。(また、Pascal では大文字小文字は区別されない ことに注意しておく。)
変数の型 --- Pascal には様々な変数の型が用意されており、かつそれらを組み合 わせることにより新しく型を定義することもできる。ここで、基本的な型を 挙げると、
integer 整数型 real 実数型 char 文字型 Boolean 論理型
などがある。
宣言の一般的な書式は、次の通りである。
var 変数名,..., 変数名 : 型名 ;
複数の型の変数を一度に宣言するには、例えば
var a,b : integer ; x, y, z : real; ans : char ;
のようにひとつの var のあとに並べれば良い。また、必要なだけ複数の var 宣言を宣言部に書くことができる。たとえば、次は宣言部に書かれた 変数宣言の一例である。
var a, b, c : integer ; x, y : real ;
var Flag : Boolean ; Z01,Z02, Z03 : integer ;
*これにより a, b, c という整数型の変数、x, y という実数型の 変数、Flag という名前の論理型変数、Z01,Z02,Z03 という整数型 の変数が宣言される。
変数に新たにあたいを入れる操作を代入という。代入により変数のもとの
あたいは消えて、新しいあたいに置き換えられる。
代入文は次の形をしている。
変数 := 定値 または 変数 または 式
代入文によって := の右辺の値もしくは計算結果が、左辺の変数に代入さ れる。( ここで等号 = ではなく := (コロンが頭につく。)が使われているのは、 これが等式ではなく、代入であることを明らかにするためである。)
例 代入文の例。
x := 3.14 ----- x という変数の値を 3.14 にする。
a := b --------変数 a に変数 b の値を代入する。
m := (a+b+c) div 3 -----右辺の計算結果を左辺 m に代入する。
例 次の代入文は、現在の k の値に 2 を足した値を新しい k の 値とする、という作業をする。
k := k + 2
この例を見れば、代入文と恒等式がまったく別物であることがわかる。
整数と実数は計算機内部でのデータの表現の仕方が
まったく違っており、計算機にとってはまったくの
別なものである。(だから昔の FORTRAでは混ぜて
計算することができなかった。) 整数は固定長のビッ
ト表示なのに対して、実数は浮動小数点表示である。
Pascal では混ぜて計算すると実数型になる。
実数は、桁数の指定をしないと指数表示で出力される。 例をあげると、
3.1415920000e+5
のような形になる。これは 3.141592×10の5乗 を表す。
* 入力のときも、絶対値が大きな値または小さな値のときは、
指数表字を用いると良い。
一般に実数の出力として指数表示のままでは読みづらいときには 桁数を指定すると見やすくなる。変数 x を、桁数を指定したい ときは、write 文の中で次のように書く。
write( x: m: n)<--- m は全体の出力幅、n は小数点以下の桁数。
例 x = 123.456789 のときの出力。
write(x:10:0) ------> 123
write(x:10:1) -----> 123.4
write(x:10:2) ----> 123.45
write(x:10:3) ---> 123.456
write(x:10:4) --> 123.4567
a + b aとbの足し算
a - b 引き算
a * b 掛け算
ここで整数と実数を混ぜて計算してもよいが、そのときの 計算結果は実数型になる。
/ 普通の意味の割算で、結果は常に実数型になる
div 整数と整数の割算で、余りを除いた整数部が
演算結果になる。結果は整数型である。
例
18 /3 = 6.0 (実数)
20/3 = 6.666666...
17 div 5 = 3
20 div 3 = 6
a mod b ---- 整数aをbで割ったわり算の余り
trunc(x) ---- 実数 x の小数部を切り捨てた整数
round(x) ---- 実数 x の小数部を四捨五入した整数
例
17 mod 5 = 2,
18 mod 5 = 3,
trunc(3.4) = 3,
trunc(3.6) = 3,
round(3.4) = 3,
round(3.6) = 4
(例 1)
program sisoku(input,output);
var i,j:integer;
wa,sa,seki,syou,amari:integer;
begin
write(' i, j ? '); readln(i, j);end.
wa:=i + j; sa := i - j; seki:= i*j ;
syou:= i div j ; amari := i mod j ;
writeln('和=', wa,'差=',sa,'積=',seki);
writeln('商=',syou,'余り=',amari)
(例 2)
program sisoku(input,output);
var i, j: integer ;
begin
write(' i, j ? '); readln(i, j);end.
writeln('和=',i+j,'差=',i-j,'積=',i*j);
writeln('商=',i div j,'余り=', i mod j)
[演習問題]
[1]* 価格 x (整数型)を入力して、消費税(5%) こみの
金額(整数型)を示す。
[2]* 与えられた金額を100円、10円、1円玉だけで
支払うとして、それに必要なそれぞれの
硬貨の枚数を計算する。
[3] BMI = 体重(kg)/((身長m)の2乗) で、 BMI>=25 であれば、肥満である。体重、身長を
入力して、肥満であるかどうか示せ。 さらに、BMI< 18.5 であれば、やせすぎである。
肥満であるか、やせすぎであるか、正常範囲内であるかを計算して示せ。