第4回放送授業
5 サブルーチン
5.1 サブルーチンとは
# 呼び出し側プログラム int x = 5; int y = 3; int z; z = add(x, y); print z; exit; # サブルーチン int add(int u, int v) { int w; w = u + v; return w; # 戻り値 }
戻り(return)、戻り値(return value) サブルーチン、サブプログラム C: 関数、void 関数 Pascal: 関数、宣言 呼び出し(call) 戻り(return)、戻り値(return value)
5.2 引数と戻り値
引数(argument) 実引数(real argument) 仮引数(dummy argument)
値渡し(call by value) 大域変数(global variable) 参照渡し(call by reference)
ポインタ: アドレスを代入できる変数 int* p_x; p_x = &x; 変数: int x; 変数のアドレス: &x ポインタ: アドレスを代入できる変数 int* p_x; p_x = &x; *p_x で x の内容を見ることができる x 5 p_x ●
# 呼び出し側プログラム int x = 5; int y = 3; swap(&x, &y); print x, y; exit; # サブルーチン void swap(int * p_u, int * p_v) { int w; w = *p_u; *p_u = *p_v; *p_v = w; }
5 サブルーチン
5.3 実装
実装で考慮すべきこと 共用情報: &仮引数、 戻り番地、&戻り値 呼び出し側に記憶: 戻り値 サブルーチン側に記録: 仮引数 共用情報: &仮引数、 戻り番地、&戻り値 呼び出し側に記憶: 戻り値 サブルーチン側に記録: 仮引数 各ルーチンでの処理とジャンプ
5.4 動的メモリー確保
動的メモリーの種類 ヒープ領域(heap area) 確保した人が責任を持って解放する スタック領域(stack area) 確保した人が責任を持って解放する push、pop stack