関数の利用 / ファイルの入出力 / 関数の定義 / 再帰
関数の利用
Turbo CではANSIの規格に準拠したライブラリ関数が多数搭載されており、簡単な記述で利用することができる。
・命令語printfやscanfもCのコンパイラで定義されたライブラリ関数の一種
・ライブラリ関数を利用する場合は、その関数を定義したヘッダをインクルードする必要がある
・関数の型,引数の型に注意
例) 余弦を求める関数
#include <math.h>
double cos(double x); /* y=cos(x)とした場合、yとxはdouble型
*/
<ライブラリ関数の分類>
a)入出力(コンソール,ファイル)
printf, scanf, getch, fopen, ...
b)文字・文字列
atoi, itoa, ...
c)メモリ(メモリ割当や解放)
d)数値演算
sin, cos, log, log10, ...
c)機種依存(OSに依存)
inportb, outportb, ...
ファイルの入出力
プログラムで扱う入力データや出力データが多い場合には、ファイルを使用することによってデータの作成や保存が容易となる。新たなファイルあるいは既存のファイルを指定するには
fopen()命令を使用し、()内にファイルの名前と操作モードを記述する。また、実際の操作(ファイルの書き込み,読出し等)時においてファイルを区別する必要があるため、
fopen命令実行時にファイル識別子を合わせ記述するのが一般的である。
例) FILE *fp;
fp=fopen("fout.txt","r");
fpはファイル識別子であり、ファイルポインタとしてFILE
*fpのように宣言しておく。上記の例では、fout.txtという名前のファイルが対象となり、そのファイルからデータの読出しを行うことを意図している。この識別子は、例えばファイルからデータの読出しを行う命令fscanfにおいて次のように記述し利用されることになる。
例) int a,b;
fscanf(fp,"%d %d",&a &b);
この例では、先に指定したfpのファイルから整数型のデータ2つを読込み、変数a,bへ格納することを意味している。
ファイル操作終了時には、命令語 fclose()を使用してファイルを閉じる必要がある。
例) fclose(fp);
関数の定義
プログラムで頻繁に使用される部分を関数として定義したり、機能別に関数化することによってプログラムの記述がスマートになり、利便性が上がる。関数はreturn命令により計算した値などを返すことが可能。
型指定子 関数名(仮引数の型)
{
文
return 式;
}
例)
int gokei(int a,int b,int c)
{
int d;
d=a+b+c;
return d;
}
関数gokei()には3つの整数の合計を計算する機能がある。3つの整数は、この関数を使用するにあたって、gokei(3,6,5);のような記述で与えられる。この関数内では、与えられた3,6,5の値を変数a,b,cで表現し、それらの和を変数dで表している。dの値は、return命令によって返される。dの値は、int型で定義されたgokei(3,6,5)と等価である
再帰
再帰関数呼び出しは、その関数内部で関数自身をコールして使用することをいう。一般に次のような形式をとる。
function(仮引数宣言)
{
if (脱出条件)
return;
else
function(実引数);
}
関数functionでは、脱出条件が成立(真)するまでfunction()を繰返し利用していることになる。