c-MOS NOT ゲート

第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;
# 戻り値
}
• サブルーチン、サブプログラム
– C: 関数、void 関数
– Pascal: 関数、宣言
• 呼び出し(call)
• 戻り(return)、戻り値(return value)
5.2 引数と戻り値
• 引数(argument)
実引数(real argument)
仮引数(dummy argument)
• 値渡し(call by value)
• 大域変数(global variable)
• 参照渡し(call by reference)
• 変数: 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
• ヒープ領域(heap area)
確保した人が責任を持って解放する
• スタック領域(stack area)
確保した人が責任を持って解放する
push、pop
stack