2016年度 プログラミングⅡ ~ 関数を利用しよう ~ 担当教員: 幸山 直人 2016年度 プログラミングⅡ 関数の構造 2016年度 プログラミングⅡ 関数間の値の受け渡し(戻り値) 2016年度 プログラミングⅡ 関数に関する注意事項 関数を使うときは「プロトタイプの宣言」を行う 「main」関数は最初に実行されるプログラム 変数の有効範囲に気をつける (ローカル変数とグローバル変数) 関数の引数と戻り値(return)に気をつける 配列を渡す場合は、配列の先頭アドレスが渡される。よって、 呼び出す側の関数と呼び出される側の関数で同じ配列が使 用される(1変数の場合は値がコピーされるので呼び出す側 の関数と呼び出される側の関数では値が異なる)。なお、配 列の終りはプログラマが責任を持って処理する。また、2変 数以上を呼び出す側の関数に返したい場合は、配列やグ ローバル変数を用いるか、ポインタ・構造体などを用いる。 2016年度 プログラミングⅡ 標準ライブラリ関数 「printf()」や「scanf()」などは最初から準備されてい る関数(標準ライブラリ関数)である ヘッダファイル「*.h」には標準ライブラリの各関数の 型(プロトタイプ)が宣言されている(「include」ディレ クトリに保存されている) 標準ライブラリは各関数がコンパイルされたオブ ジェクトモジュール(プログラムの部品)の塊である (「lib」ディレクトリに保存されている) プリプロセスを確認 「cl.exe /E hogehoge.c」(コメントなし&標準出力) 「cl.exe /P /C hogehoge.c」(コメントあり&ファイルへ出力) 2016年度 プログラミングⅡ 高級言語から機械語へ(再掲) hogehoge.c コンパイラ (翻訳プログラム) hogehoge.obj リンカ (連結編集プログラム) hogehoge.exe ソースプログラム (原始プログラム) コンパイル 関数の定義が記述された一覧 (辞書の索引のようなもの) ヘッダファイル オブジェクトモジュール (目的プログラム) リンク ロードモジュール (実行可能ファイル) ライブラリ 関数に対応する機械語プログラム の集合体(最初から準備されている ライブラリを標準ライブラリと呼ぶ) 2016年度 プログラミングⅡ コンパイルとリンク(再掲) 字句解析 プリプロセス 構文解析 コンパイル コンパイル アセンブル 意味解析 コード最適化 コード生成 リンク オブジェクトモジュールとライブラリ(標準ライブラリなど)をリンクし、 ロードモジュールを作成する。完全な機械語プログラムになる。 2016年度 プログラミングⅡ コンパイルとリンクに関する補足 コンパイルのみ 「cl.exe /c hogehoge.c」 コンパイルのみの機械語 「dumpbin.exe /DISASM /RAWDATA hogehoge.obj」 コンパイル&リンク 「cl.exe hogehoge.c」 ロードモジュールの機械語 「dumpbin.exe /DISASM /RAWDATA hogehoge.exe」 2016年度 プログラミングⅡ 数学関数(math.h) 多くの関数の引数と戻り値はdouble型 予め定義された変数がある(#define) 例えば主な数学関数 「物理のかぎしっぽ」 補足:自前のヘッダファイルやライブラリを作ることも可能
© Copyright 2024 ExpyDoc