(14) 第6章 関数

6-1 関数とは

(1) ライブラリ関数

最 初に読み込むライブラリを #include で使いたい関数が定義されているヘッダファイルを指定することにより、関数を使用できるようになる

標準入出力 stdio.h ファイル関係

標準ライブラリ stdlib.h 汎用関数(メモリ管理、プロセス管理、その他)

/* list 14-1 */
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i;
for(i=0; i<10; i++){
 printf("%d\n", rand());
}
return(0);
}

演習14-1

  1. 乱数の範囲を指定するにはどうすればよいか?
  2. 毎回異なる乱数にするにはどうすればよいか?

数学 math.h 数学関数の集まり

/* p14-2 */
#include <stdio.h>
#include <math.h>
int main(void)
{
double a, b, c, d;
a=2.0; b=4.0;
c=pow(a,b); d=sqrt(a);
printf("%f %f\n", c, d);
return(0);
}

演習14-2

  1. 1から10までの平方根を表示するプログラムを作る
  2. 1から10までの三乗の値を表示するプログラムを作る
  3. tanより、arctan(1) = π/4となりarctan(1) * 4 = πとなるので、この式から円 周率を求めてみる
    tan-1 は atan() という関数

(2) ユーザー関数

関数定義と関数呼び出し

/* list6-1 */
#include <stdio.h>
int maxof(int x, int y)
{
if(x>y){
 return(x);
}else{
 return(y);
}
}

int main(void)
{
int na, nb;

puts("二つの整数を入力してください。");
printf("整数1:"); scanf("%d", &na);
printf("整数2:"); scanf("%d", &nb);

printf("大きい方は%dです。\n", maxof(na, nb));

return(0);
}
/* list6-1をもう少し分かりやすくすると */
#include <stdio.h>
int maxof(int x, int y)
{
int m;

if(x>y){
 m=x;
}else{
 m=y;
}

return(m);
}

int main(void)
{
int na, nb, big;

printf("二つの整数を入力してください。\n");
printf("整数1:"); scanf("%d", &na);
printf("整数2:"); scanf("%d", &nb);

big=maxof(na, nb);
printf("大きい方は%dです。\n", big);

return(0);
}

演習14-3

これまでのまとめ

課題14

以下のプログラムを順を追って作成する。1.〜6. までは時間内にできた時点のプログラムと実行結果を提出する。 7.〜9.は全員、解答をメール本文に書く。

  1. 乱数を100個表示する
  2. 1.の乱数の範囲を0.0〜1.0(実数型)にする
  3. 2.の範囲の乱数を2組用意し、変数xとyに代入する
  4. 3.で用意した2組の乱数のうち、次の条件を満たす組の数を数え変数nに代入する
    x2+y2
  5. 3.で求めたnを使い4×n÷100を計算して表示する
  6. 乱数の個数を引数で指定すると、5.の計算結果を返すような関数を作成して、これまでのプログラムを作成する
  7. このプログラムは何をしているのか答える
  8. もっと精度を上げるにはどうすればよいか?
  9. 考察と感想

注意

次回予告

理解度テスト。各自復習しておく。
3.を除いて教科書電子機器等の持ち込み不可、インターネット・過去ファイル閲覧不可。

  1. 記述式テスト(プログラムを見て実行結果を書く、プログラムの穴埋め問題、プログラム作成の3問、30分間を予定)
  2. プログラム作成テスト1(1問、30分間を予定)
  3. プログラム作成テスト2(1問、30分間を予定) 教科書と自分の過去ファイルは閲覧可能。教科書以外とインターネットは閲覧不可。

4限でテストは終了し、5限に解答を示す予定。