= プログラミングの基本 = == 計算機上で行う計算 == 最初に、プログラムは実行中にユーザーとのやり取りを行わない簡単なプログラムを扱う。この場合、プログラムの実行には下の図のように、何らかの入力データを元に計算をして結果を出力することになる。 {{attachment:Programming1.png|alt text|width=400px;}} 文法上は、入力データ及び出力データは無くても問題ない。 このような簡単なプログラムをコマンドラインで実行して、入力データ、出力データは共に端末上で入力、出力(表示)させるものとする。 計算の過程では、様々なデータを変数として保持して、変数同士の演算や関数を用いて計算した値を別の変数に代入するというステップを繰り返していく。 == 簡単な例と入出力 == 簡単なプログラム(1+2を計算)を用いて、入出力データを扱う方法を示す。 この例のソースコードはSVNレポジトリにあるため、以下のコマンドを実行してファイルをダウンロードすることができる。 {{{ > svn co $OCHA_SVN/Lab/Tutorials/CppTutorial1 }}} || '''入力データ''' || '''計算''' || '''出力データ''' || '''プログラム名''' || '''コメント''' || || なし || 1+2 || 3 || Add_1plus2.exe || 1+2の計算に特化 || || 1, 2 || a+b; a=1, b=2 || 3 || Add_AplusB.exe || 任意の2つの数字の足し算 || || +, 1, 2 || a 演算子 b; 演算子='+', a=1, b=2 || 3 || Calculate_AandB.exe || 任意の2つの数字の四則演算 || 実行の仕方は、 * ./Add_1plus2.exe * ./Add_AplusB.exe 1 2 * ./Calculate_AandB.exe + 1 2 2番目、3番目のプログラムでは実行時に与える数字(コマンドライン引数)を変えることで異なる数値の演算が可能となり、より汎用性のあるプログラムと言える。与えられた引数を読み込んだり、入力データのチェックを行ったりする必要がある分、プログラムの中身はより複雑になる。 C及びC++プログラムは必ずメイン関数と呼ばれる関数の中身を記述することで実装される。メイン関数は {{{ int main(int argc, char* argv[]); }}} という型をしており、引数(入力)としてコマンドライン引数の数とコマンドライン引数の配列を受け取り、終了時には整数型の値を返すようになっている。慣例として正常に終了した場合には値0を返し、エラー等が生じた場合には0以外の値を返す。 このコード例から、プログラム内にコマンドライン引数を読み込む方法(argc, argv[]を使用)や画面上に出力させる方法(std::coutを使用)もわかる。std::cin (std::out)では、<<(>>)演算子を用いてデータを順番に送ることで入力(出力)を行う。 == 別の例 == 重力が働いている状態で、運動方程式を解いて物体の運動を求める。微分方程式を数値的に解くには、まず方程式を時間について離散化してΔt毎の座標逐次求めていく。簡単のため空間は2次元として、出力は各時刻におけるx、y座標を記録していくことにする。 ここで得られた結果は時系列データであるが、結果を図示するためには描画ソフトを用いてグラフ等を作成する必要がある。