先週の演習では、関
数を使ったプログラムを作成した。ちょっとばかり復習であるが、自分で作った関数を使うためには、プログラム中に、
- プロトタイプ宣言
- 関数の戻り値の仮引数の型を示す。これは、関数の使い方の間
違いをコンパイラーがチェックするために必要である。
- 関数呼び出し
- 関数を呼び出すためには、必要に応じて実引数を伴って関数名をコー
ルする。
- 関数の定義
- その関数で処理する内容を記述する。呼び出し元からのデータは引
数で渡される。return文で呼び出し元へ、データを送ることができる。
を書かなくてはならないことを思い出して欲しい。そして、これを記述したプロラム例と
して、次の
- 引数も戻り値もない関数
- 引数があるが、戻り値がない関数
- この場合、戻り値の型にvoidと書く。仮引数には、データの型を書く。
- 呼び出された関数は、複数個のデータを受け取ることができる。
- 引数と戻り値がある関数
- 仮引数にも戻り値にもそのデータの型を書く。
- 呼び出された関数は、複数個のデータを受け取ることができる。
- 処理が呼び出し元へ戻るときには、一つのデータを返すことができる。
の様なものを練習した。このうち3番目のプログラムについて、復習する。
先週のプログラムの例題では、2倍角の公式
|
(1) |
を確認する図
1のプログラムを示した。これは角度を0〜360度
まで、1度ずつ変化させてそれぞれを、表示させている。このプログラムを見て、以下の
ことを理解して欲しい。
- 関数を使うための3つの要素、プロトタイプ宣言、関数の呼び出し、関数の定義の
書き方。
- データの受け渡しとメモリーの関係。このようなデータの渡し方を値渡し(call
by value)と言う。
- 関数内の変数の有効範囲。関数内で宣言された変数は、その関数内でしか使えな
い。
図 1:
2倍角の公式を確認するプログラムとメモリー
|
それから、最後ではあるが、三角関数のような数学関数は、プログラマーが定義する必要
はなく、ライブラリーを使う。そのために、まずは数学関数のライブラリーのヘッ
ダファイルをインクルードする必要がある。これは簡単で、プログラムの先頭に
#include <math.h>
と書く。コンパイルする場合、以下のようなオプションを付ける必要がある。
cc -lm -o bai baikaku1.c
baiが実行ファイル名で、
baikaku.cがソースファイル名である。オプション
-lmが数学関数を使いますよとコンパイラーに知らせているのである。
先週の学習で、関数の基礎的なことを学習した。これで、かなりのことができるが、不十
分なことがある。それは、
- 2つ以上の値を呼び出しもとへ返すことができない。
- 配列の受け渡しはどうするのか。
というような問題がある。本日は、その2つについて学習する。
ホームページ:
Yamamoto's laboratory著者:
山本昌志
Yamamoto Masashi
平成17年2月15日