プログラムを書こう 2004/1111/08
 
今回はc言語でプログラムを書いて数値計算を行いましょう。
まず、簡単な例を示します。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
double kaijyou(double x, int n);
 
main()
{
int n;
double x, y;
 
x=2.0;
for (n=1; n<10; n++) {
y = kaijyou(x, n);
printf("%fの%I乗= %f\n", x, n, y);
}
}
 
double kaijyou(double x, int n)
{
int i;
double value;
 
value = 1.0;
 
for (i=0; i<n; i++) {
value *= x;
}
 
return value;
}
これは階乗を計算するプログラムです。
プログラムの構成は
n         ヘッダファイル定義部n 本文(main文)
n         変数の定義部n         計算をさせている部分n         関数定義部となっています。
 n         ヘッダファイル定義部printf文などの関数を使うためにヘッダファイルを読み込むところ。はじめはおまじないだと思っても大丈夫
n 本文(main文)
c言語のプログラムには必ずmain文が必要です。プログラムの中心ですね。main分の他に自分で作った関数をmain文から呼ぶことも出来ます。
n         変数の定義部プログラムで使われる変数を定義します。変数の型にはいろいろあって
char   8bit   大体文字につかうint    32bit  整数につかうfloat           浮動小数点double          浮動小数点n         計算をさせている部分宣言した変数、文法、関数をつかっていろいろさせます。
文法としてここではfor文を使っています。これは繰り返しに使うものでfor ( i=0; i<10; i++) {  何かさせる}というように使います。
またkaijyou(x, n)というのはxのn乗を計算させるためにつくったプログラムです。n         関数定義部分階乗を計算させて値を返します。
return文を使って値を返しています。 とりあえずコンパイルをしよう。
コンパイルするには
% gcc -o kaijyou.out kaijyou.c -lm
とします。-lmというオプションは、C言語で数値計算プログラムを作る際には、付ける必要があります。この結果、kaijyou.outという名前の実行ファイルができます。
n ここからが問題
実験でラザフォード散乱を行うわけですが12MeVの運動エネルギーを持った陽子をビームとして炭素標的にぶつけるとします。運動学的にある角度θに散乱された陽子の運動エネルギーは弾性散乱であればエネルギー保存則と運動量保存則によって一意に決定されます。ある角度θに散乱されたときの陽子の運動エネルギーを計算させるプログラムを作ってください。その結果を横軸角度、縦軸運動エネルギーのグラフを作ってください。
陽子の質量は983.2MeV, 炭素の質量は11177MeVです。         〇方針
 角度を0度から180度までfor文で回そう。   for (theta=0.0; theta<180.0; theta += 10.0)角度を入れたら運動量または運動エネルギーを返す関数を作ろう。
  double calc(double theta)角度と運動エネルギーを端末またはファイルに書き出そう。
printf(“%f %f\n”, theta, energy);