第4回放送授業.

Slides:



Advertisements
Similar presentations
プログラミング 関数編 情報科学科. プログラミングにあたって C 言語では、 main 内に処理を記述 1000 行になるような大きなプログラムでは、 プログラム全体が何をしているのかを把握 することが困難になる 他人が見ると非常に理解しにくい 作成者であっても時が経てば内容を忘れて、他 人が見た時と同じ状況になる.
Advertisements

情報処理Ⅱ 第8回 2004 年 11 月 30 日(火). 2 本日学ぶこと 関数と変数 目的  関数を自分で定義し,変数の利用方法・範囲を明示的に制 限することで,適切な機能分割(モジュール化,再利用) を図る. してはいけないこと  main 関数のみで 100 行以上のプログラム  グローバル変数を駆使するプログラム.
情報処理Ⅱ 第7回:2003年12月2日(火). 問題(授業がつまらない人のため に) ぷよ連結問題 前提 : フィールドを2次元 配列で定義し,各マスの 「ぷよ」を int 型の値で表現 する. ある地点を入力に取り,そ れと連結する「ぷよ」の個 数を求めよ. 消去できる「ぷよ」 (N 個以上 連結するぷよと,それに隣接する特.
アルゴリズムとデータ構造 第2回 線形リスト(復習).
プログラミング演習II 2004年11月 30日(第6回) 理学部数学科・木村巌.
プログラミング言語論プログラミング言語論 命令型プログラミング言語 水野嘉明
ISD実習E 2009年6月29日 LISPシステム入門 (第5回) 関数ポインタ eval システム関数.
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
プログラミング入門2 第10回 動的な領域確保 情報工学科 篠埜 功.
データ構造とアルゴリズム 第10回 mallocとfree
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
言語処理系(3) 金子敬一.
プログラミング演習(2組) 第12回
プログラミング言語論 第6回 型 情報工学科 篠埜 功.
情報処理Ⅱ 2005年12月9日(金).
プログラミング言語論 第4回 手続きの引数機構 変数の有効範囲
アルゴリズムとデータ構造 第2回 線形リスト(復習その2).
アルゴリズムとデータ構造 第4回 配列によるスタックとキュー.
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
プログラミング論 関数ポインタ と 応用(qsort)
プログラミング2 関数
プログラミング論 ファイル入出力
関数とポインタ 値呼び出しと参照呼び出し swapのいろいろ 関数引数 数値積分
データ構造とアルゴリズム 第5回 スタック ~ データ構造(2)~.
プログラミング言語論 第9回 Hoare論理の練習問題 手続きの引数機構 変数の有効範囲
関数と配列とポインタ 1次元配列 2次元配列 配列を使って結果を返す 演習問題
関数の定義.
データ構造と アルゴリズム第4回 知能情報学メジャー 和田俊和.
アルゴリズムとデータ構造 補足資料11-1 「mallocとfree」
アルゴリズムとデータ構造 補足資料5-2 「サンプルプログラムsetop.c」
メモリの準備 メモリには、その準備の方法で2種類ある。 静的変数: コンパイル時にすでにメモリのサイズがわかっているもの。 普通の変数宣言
コンパイラ 2012年11月15日
プログラミング入門2 第11回 情報工学科 篠埜 功.
プログラミング入門2 第11回 情報工学科 篠埜 功.
第7回 プログラミングⅡ 第7回
復習 前回の関数のまとめ(1) 関数はmain()関数または他の関数から呼び出されて実行される.
プログラミング言語論 第五回 理工学部 情報システム工学科 新田直也.
アルゴリズムとデータ構造 補足資料5-1 「メモリとポインタ」
高度プログラミング演習 (08).
地域情報学 C言語プログラミング 第5回 ポインタ、関数、ファイル入出力 2017年11月17日
プログラミング論 ファイル入出力
第5回放送授業.
コンパイラ資料 実行時環境.
プログラミング言語論 第5回 手続きの引数機構 変数の有効範囲
オブジェクト指向プログラミングと開発環境
メモリとメモリアドレス, ポインタ変数,関数へのポインタ渡し
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
データ構造とアルゴリズム 第11回 リスト構造(1)
プログラミング入門2 第9回 ポインタ 情報工学科 篠埜 功.
情報基礎演習B 後半第2回 担当 岩村 TA 谷本君.
プログラミング論 ポインタ
コンピュータアーキテクチャ 第 5 回.
コンパイラ 2012年11月1日
11.1 標準ライブラリ関数 11.2 関数呼び出しのオーバーヘッド 11.3 大域変数 11.4 プロトタイプ宣言 11.5 関数引数
第5回 プログラミングⅡ 第5回
オブジェクト指向言語論 第五回 知能情報学部 新田直也.
コンピュータアーキテクチャ 第 5 回.
X64 函数呼び出し規約 長谷川啓
コンパイラ 第12回 実行時環境 ― 変数と関数 ― 38号館4階N-411 内線5459
演算子のオーバーロード.
全体ミーティング(6/3) 修士2年 飯塚 大輔.
オブジェクト指向言語論 第三回 知能情報学部 新田直也.
プログラミング演習II 2004年11月 2日(第3回) 理学部数学科・木村巌.
情報処理Ⅱ 小テスト 2005年2月1日(火).
値渡しと参照渡しについて.
モバイルプログラミング第3回 Cプログラミングの基礎( 2 )
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング 3 ポインタ(1).
6.5 最終コード生成 (1)コードの形式 ①絶対2進コード(AB : absolute binary) 命令後のオペランドが絶対番地指定。
Presentation transcript:

第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