2つの整数 789と54 の和、差、積、商、余りを計算するプログラムを作成する。 この問題の処理手順(アルゴリズム)を示します。
プログラム例 1a について説明します。 1行目 c Example 1a 四則演算 2行目 c 建築学科 2年 xxxxxxx my name 3行目 c234567890 File = reidai1a.f 1行目から3行目のように、1カラム目に c が記述されている行はコメント行で、プログラムの実行には関係ありません。自由に覚え書きなどを記述できます。1行目には問題番号とプログラムの処理内容、2行目には作成者の所属(学科、学年)と学生証番号と名前、3行目には、カラム位置(文番号や文の記述位置を示すため)と保存ファイル名を記述しています。 4行目から14行目までは Fortranの文で、記述形式にしたがって 7 カラム以降に記述します。 4行目 integer m,n,wa,sa,seki,sho,amari integer文は型宣言文で、並び(変数などをカンマ ,で区切って並べたもの)に記述された項目を整数型と定義する文です。例題1では、2つの値 789 と 54 は整数で、求める和、差、積、商、余りも整数ですから、これらの値を格納するために m、n、wa、sa、seki、sho、amari と名前をつけた変数を整数型と定義しています。 5行目 m=789 6行目 n=52 5行目と6行目は代入文で整定数 789を変数 m に代入し、整定数 54 を変数 n に代入します。 7行目 wa=m+n 8行目 sa=m-n 9行目 seki=m*n 10行目 sho=m/n 11行目 amari=m-n*sho 7行目から11行目は和、差、積、商、余りを計算する部分です。変数などの名前を演算子でつなげたもの(例えば m + n )を式といいます。特に算術演算に使用される演算子を算術演算子といいます。計算した和、差、積、商、余りはそれぞれ、変数 wa、sa、seki、sho、amari に代入します。 12行目 write(*,*) m,n,wa,sa,seki,sho,amari write文は、並び(変数などをカンマ ,で区切って並べたもの)に記述された項目の値を、その順番に出力する文です。ここでは変数 m、n、wa、sa、seki、sho、amariの値をその順に画面に出力します。 13行目 stop stop文は実行の終わりを示す文です。 14行目 end end文はプログラムの終わりを示す文です。 プログラムの各行は翻訳時、実行時に次のように処理されます。 プログラムの改善 先に説明した例題1)のプログラム例 1a は、2つの整数値 789 と 54 の和、差、積、商、余りを計算するものです。別の数値について計算したい時には、2つの値を代入している文をそのつど書き変えて、翻訳しなおし実行しなければなりません。
6行目 read(*,*) m,n read文は入力並び(変数をカンマ ,で区切って並べたもの。ここでは m,n )に記述された変数に値を読み込みます。この例ではキーボードから値が入力されるのを待ちます。 5行目 write(*,*) ' input m,n = ' write文は出力並び(変数などをカンマ ,で区切って並べたもの)に記述された変数などの値を出力します。この例では ' で囲まれた文字列 input m,n =を画面に出力します。このwrite文は次のread文で何を入力するのかを示す目的で入れたものです。 このプログラムは、2つの整数値の一組だけを計算するものですから、何組か計算したい時には何回も実行しなければなりません。2つの整数値について必要なだけ繰り返し計算できるようにプログラムを変更してみましょう。 次にそのアルゴリズムを示します。
このプログラムの構成を次に示します。 : ┌→ 101 continue │ write(*,*) ' input m,n = ' │ read(*,*,end=901) m,n →データが終わりの時 ──┐ │ ┌────────────────────┐ │ │ │ 和、差、積、商、余りを計算し、 │ │ │ │ 2つの値と、計算結果をすべて出力する │ │ │ └────────────────────┘ │ └── go to 101 │ 901 write(*,*) ' 計算終わり ' ←───────┘ : 入力した一組のデータについて計算や出力などの一連の処理を終えたら、次のデータを読み込むように実行の流れを戻します。このために挿入された行が5行目と13行目です。 13行目の goto文は、実行の流れを指定された文番号(ここでは 101)を持つ文に無条件に移動します。5行目は goto文の戻り先(ここではデータを読み込むところ)を示すcontinue文です。 5行目 101 continue と 13行目 go to 101 この2行を挿入しただけですと、プログラムの実行はデータを入力するところへ必ず戻るので、プログラムの実行を終えるには強制終了しなければなりません。そこで、データが終わりの時は通常の計算をせずに、「 計算終わり 」と表示して終わるようにしたのが7行目と14行目です。 7行目 read(*,*,end=901) m,n と 14行目 901 write(*,*) ' 計算終わり ' 7行目のread文は、先のプログラム例 1b の ここで示したようにプログラムを作成する時には、できるだけ汎用的な(一般的な)プログラムになるように考えます。例題1はプログラム例 1c でデータに 789 と 54 を入力した場合に相当します。 |