第6回資料

C言語応用
関数
関数とは
 main関数
#include<stdio.h>
int main(void)
{
printf(“%d\n”,5+3);
return(0);
}
main関数
C言語のプログラムには、必ず1つのmain関数が必要
であり、プログラムの実行時には、main関数が実行さ
れる。
関数とは
 ライブラリ関数
main関数だけが関数というわけではない。これま
でに利用してきたprintf関数、scanf関数など、C言
語が提供する数多くの関数のことをライブラリ関
数と呼ぶ。
関数とは
 自分で作成する関数
定義
int sum(int x, int y)
{
int goukei;
goukei = x + y;
return(goukei);
}
呼び出し
int main(void)
{
・・・
wa = sum(x,y);
・・・
}
http://www.center.nitech.ac.jp/~sfukui/ouyou/list6-1.c
関数定義
関数の返す値の型
関数名
仮引数の宣言
int sum ( int x, int y )
{
int goukei;
goukei = x + y;
return(goukei);
}
関数頭部
関数本体
値を返して呼び出し元に戻る
値を返す必要がない場合、return( )は必要なく、その場
合の関数の返値の型はvoid型となる。
関数定義
main 関数
wa = sum( a , b );
sum 関数
int x;
int y;
仮
引
数
int goukei;
goukei = x + y;
return( goukei );
x
5
y
10
goukei
実
引
数
値渡し
 べき乗を求める関数
C言語では、引数が
double pow(double x, int y)
値でやりとりされる。
{
このようなメカニズム
double power;
を値渡しという。値渡
しのメリットは、受け
for(power = 1.0 ; y > 0 ; y-- )
取った仮引数の値を
power *= x;
変更するような操作
return(power);
をしても、呼び出し側
}
の実引数の値を変更
しない点である。
http://www.center.nitech.ac.jp/~sfukui/ouyou/list6-2.c
関数の設計
 関数の引数と戻り値
int search(void)
{
int i;
for(i=0; i<MAX;i++)
if(tensu[I] == 50) break;
if(i == MAX) return (FAILED);
return(i);
}
http://www.center.nitech.ac.jp/~sfukui/ouyou/list6-3.c
関数の設計
関数頭部では、()の中に引数の宣言を並べるが、今
回のsearch関数は受け取る引数がない。引数を受け
取らないことを示すためには()の中にvoidと記述する。
関数searchは、50点の学生を見つけると、その添え字
を返します。50点の学生が見つからなかった場合は、
FAILEDすなわち-1を返す。
関数の設計
 関数と変数
int tensu[MAX];
int search(void)
{
int i;
・・・
}
int main(void)
{
int i;
・・・
}
グローバル変数
どこからでも使える
ローカル変数
search関数内でのみ使える
ローカル変数
main関数内でのみ使える
関数の設計
 関数の汎用性
int search(int ten)
{
int i;
for(i=0;i< MAX; i++)
if (tensu[i] == ten) break;
return(i == MAX ? FAILED : i)
}
search関数は、50点の
学生の学籍番号を求
めるものでした。別の
点数の学生の学籍番
号を求める必要性が出
てきたときに対応でき
ない。そこで、探索すべ
き点数を引数として受
け取る探索関数を作成
する。
http://www.center.nitech.ac.jp/~sfukui/ouyou/list6-4.c
条件演算子
? と : のペアで構成される演算子は条件演算子と呼ば
れ、この演算子が適用された式は条件式と呼ばれま
す。
式1 ?
式2
:
式3
式1が非0のとき・・・式2の評価値
式1が 0のとき・・・式3の評価値
演習
 受け取った引数xの階乗を返す関数fact
int fact(int x){・・・}を作成せよ。
 任意の点数以上の学生の人数を調査して
返すプログラムを作成せよ。
 2つのint型引数を受け取って、大きい方の
値を返す関数 maxof
int maxof(int x, int y){・・・}
を作成せよ。ただし条件演算子を使うこと。