1999年度のプログラミングIIIの授業は終りました。 この授業のページは参照用の資料として保存しているものです。最新の情報・資料は江上の授業ページで。 |
C言語の標準関数 |
C言語は関数を用いてプログラムする言語
↓
関数名・引数・戻り値などに自由度がある = プログラマで決めることができる
↓
処理系(動作環境)により使い方が変わってくる可能性がある
↓
同じプログラムが動作しなくなる可能性あり = 互換性・移植性が低い
[Q] 互換性・移植性とは?
そこで、ANSIにより関数の名前・機能・インターフェース(=使用方法)の統一が図られることになった
↓
標準関数の誕生
処理の内容に応じて非常に多くの関数が準備され存在している
C言語において関数を使用するためにはプロトタイプ宣言が必要である。特に引数や戻り値が整数(int)型以外の場合には必須
↓
標準関数各々に対してプログラマが1つ1つプロトタイプ宣言をするのは非効率であるしミスを招きやすい
↓
あらかじめ定義しておいて、必要に応じてプログラムに追加できれば便利
↓
#include 文を用いてこの機能を実現
#include文によって取り込まれるヘッダファイルでは
が行われる。
- システムが(標準Cが)準備している関数の定義
- 特殊文字の定義 ( NULL, EOF など )
- 円周率などの定数定義
注意1)ファイル操作のエラー処理時や文字列操作時に NULL, EOF を使用したが、これらの特殊文字は #include 文を用いてヘッダファイルの取り込みを行わないと正常に利用できない
↓
NULL や EOF は stdio.h というヘッダファイル内で定義されているため
注意2)→ p.245
#include <stdio.h>
ヘッダファイル stdio.h の取り込み。ファイルはシステムが準備した場所#include "my_file.h"
my_file.h の読み込み。ファイルはカレント(ソースプログラムが存在する場所)
拡張子は .h でなくてもよい
void kaigyou(void)
{
printf("\n");
}
#include <stdio.h>
#include "my_file.h"main()
{
printf("Hello.") ;
kaigyou();
}my_file.h my_file.c
テキストから2つほど取り上げるtoupper
[引数] int str ; [戻り値] int ret ; 変換後の文字コードを返す
#include <ctype.h>
ret = toupper(str);
[機能] 英小文字を英大文字に変換する
この関数は・・・であると理解する
- 英字小文字を英字大文字に変換する
- 関数名が toupper( )
- 引数が1つ
- 引数の型は int
- 戻り値の型は int
- ヘッダファイルとして ctype.h を取り込む必要あり
#include <stdio.h>
#include <ctype.h>main()
{
char a = 'a' ;
char A;A = toupper(a); /* char <--> int の変換が行われる */
printf("%c の大文字は %c です\n", a, A );
}
pow
[引数] double x,y ; [戻り値] double ret ;
#include <math.h>
ret = pow(x,y);
[機能] x の y 乗を求める
この関数は・・・であると理解する
- べき乗計算を行う
- 関数名が pow( )
- 引数が2つ
- 引数の型は double
- 戻り値の型は double
- ヘッダファイルとして math.h を取り込む必要あり
#include <stdio.h>
#include <math.h>main()
{
double motokin = 10000 ;
double ritu = 1.0025;
double kikan = 10;
double kekka;kekka = motokin * pow(ritu , kikan) ;
printf("%lf 年間預けた結果は %lf 円です\n", kikan, kekka );
}
標準関数の使用方法(読み方)をマスターすればこれまで個別に学習しなかった関数であっても利用できるようになる(はず)