第5講 関数(つづき) 1.関数の宣言 例題 関数を用いて整数のべき乗を計算するプログラムを作る。 ただし、主プログラムの後で関数を記述する。 [問題の分析] ①べき乗を算出する関数 pow() 入力(引数):x、n 出力(返却値):xのn乗を返す(標準出力に出力)。結果は long int型。 ②データの入出力 標準入力からのx、nの入力、標準出力への結果の出力は、 main()で行う [プログラムの作成] • • • • • • • • • • • • • • • • • • • /*----------------------------------------------べき乗を求めるプログラムの主プログラム部分 -------------------------------------------------*/ #include<stdio.h> /*関数の宣言*/ long int pow(int x,int n); main() { int x,n; /*入力データ*/ long int y; /*結果*/ /*データの入力*/ printf("input x n:"); scanf("%d %d",&x,&n); /*べき乗の算出*/ y=pow(x,n); /*結果の表示*/ printf("x=%d n=%d\n",x,n); printf("x**n=%ld\n",y); } • • • • • • • • • • • • • • • • • • /*----------------------------------------------関数部分:べき乗の算出 -------------------------------------------------*/ long int pow(int a,int b) { int i; /*添字*/ long int kekka=1; /*結果*/ /*aをb回掛ける*/ for(i=0;i<b;i++) kekka *= a; return(kekka); } [実行結果] input x n: 10 4 x=10 n=4 x**n= 10000 関数の宣言文 文法 【関数の宣言】 意味 関数の返却値、関数に渡す値(引数)の型を明らかにする。 関数を使用する時、変数や配列と同様、あらかじめ宣言する。 関数呼び出しの後で関数記述を行う場合→関数の宣言を行わなけれ ばならない。 形式 関数の宣言の一般形 型指定子 関数名(仮引数型並び); または 型指定子 関数名(識別子並び); 型指定子:関数の返却値の型 仮引数型並び:関数に渡す引数と識別子の並び(識別子は省 略可) プログラムのコンパイル時に、コンパイラは引数の型のチェック を行うことができる。 解説(補足) • 【return文】 – return文に出会うと、ただちに呼び出し側に戻る。 – 関数の処理の本体の最後でなくてもよく、関数内にいくつ書いてもよ い。 – Return文が省略されている時→ }で代用。 • 【main()】 – C言語では、プログラムのすべてを関数の形で記述する。 – main()も関数。Main()は、プログラム起動時にシステムから呼び出さ れ、必ず1つだけ存在しなければならないことを除き、その扱いは他 の関数とまったく同様。 • 【void型】 – 関数に返却値がない場合、型指定子にはvoldと記述する。 – 上の例題では、関数は求めたべき乗を返却値として呼び出し側に返 し、呼び出し側(main())で標準出力に出力しているが、これを、関数 内ですべて行い、関数は値を返さないように変更したプログラムを以 下にしめす。 2.Void型関数の例 • • • • • • • • • • • • • • • • /*----------------------------------------------べき乗を求める -------------------------------------------------*/ #include<stdio.h> /*関数の宣言*/ vold pow_p(int x,int n); /*べき乗を算出して表示*/ main() { int x,n; /*入力データ*/ /*データの入力*/ printf("input x n:"); scanf("%d %d",&x,&n); /*べき乗の算出と表示*/ pow_p(x,n); } 関数記述部分 • • • • • • • • • • • • • • /*----------------------------------------------べき乗の算出 -------------------------------------------------*/ vold pow_p(int a,int b) { int i; /*添字*/ long int kekka=1; /*結果*/ /*aをb回掛ける*/ for(i=0;i<b;i++) kekka *= a; /*結果の表示*/ printf("べき乗=%ld\n",kekka); } 3.関数ライブラリーの利用 • 良く使われる関数はライブラリーの形で、あら かじめシステムに用意されている。 • それらを用いるときは以下のようにする。 プログラムの先頭に次のような行を入れる 形式 #include <math.h> (数学関係の関数 sin, cos, sqrt, pow などが対象) #include<stdio.h> (入出力関数 printf, scanf などが対象) 意味 #include文に出会うと処理系はその場所に該当するファ イルを入れる。その後でプログラムをコンパイルして実行す る。 上の場合は、math.h などの関数プログラム群を挿入する。 すると以後の部分で、math.h に含まれる関数を使う事が出 来る。 4.関数を含むプログラムの構造 以下の事項はテキストで調べる 1.関数の中で関数を呼ぶ構造 2.関数の中で関数を定義する構造 3.変数の型の適用範囲 演習 • プログラム課題1と2を実施
© Copyright 2024 ExpyDoc