malloc()とfree()
前回の授業で説明した、alloca() は、スタック領域にデーターを覚えるので、allocaを実行した関数の終了ともに配列領域が消えてしまう。しかし、関数が終わってもそのデータを使いたいといった場合には、malloc() […]
ポインタとメモリの使用効率
ポインタの加算と配列アドレス ポインタに整数値を加えることは、アクセスする場所が、指定された分だけ後ろにずれることを意味する。 // ポインタ加算の例 int a[ 5 ] = { 11 , 22 , 33 , 44 , […]
再帰処理時間の見積もりとポインタ操作
前回の授業では、再帰処理やソートアルゴリズムの処理時間の見積もりについて説明を行った。 ソート処理の見積もり この際の練習問題の1つめは、「再帰方程式の理解度確認の回答」にて解説を示す。 最後の練習問題はここで説明を行う […]
再帰呼び出しと再帰方程式
前回までの授業では、for ループの処理時間の分析や見積もりについて説明をしてきた。 次のテーマとして、再帰呼び出しを含む処理の処理時間の分析について説明する。 再帰関数と再帰方程式 再帰関数は、自分自身の処理の中に「問 […]
繰り返し処理と処理時間の見積もり
単純サーチの処理時間 ここで、プログラムの実行時間を細かく分析してみる。 // ((case-1)) // 単純サーチ O(N) #define SIZE 1024 int a[ SIZE ] ; // 配列 int s […]
情報構造論2021ガイダンス
基本的なガイダンス 情報構造論のシラバスを、ここに示す。プログラムを作成する上で、どのような考え方で作れば処理速度が速いのかを議論する。基本的に、4回のテストのたびに、レポート課題を実施する。各テスト毎の評価は、テスト素 […]
授業アンケート結果
年度末恒例の授業アンケートの結果。 コロナ禍の遠隔授業などもあったけど、どの科目も80ポイントは維持できました。
情報構造論とオブジェクト指向
データ構造を扱うプログラムの書き方を説明してきたが、その考え方をプログラムにするためには手間もかかる。こういった手間を少しでも減らすために、プログラム言語が支援してくれる。その代表格がオブジェクト指向プログラミング(Ob […]
動的メモリ管理 malloc() と free()
C言語では、動的メモリ領域をどのように管理していくのか解説する。 局所変数とスタック 局所変数は、関数に入った時に作られるメモリ領域であり、関数の処理を抜けると自動的に開放されるデータ領域である。 関数の中で関数が呼び出 […]
共有のあるデータの取扱い
これまでの授業の中では、データを効率よく扱うためのデータ構造について議論をしてきた。これまでのプログラムの中では、データ構造のために動的メモリ(特にヒープメモリ)を多用してきた。ヒープメモリでは、malloc() 関数に […]