末尾再帰呼び出しの最適化
末尾再帰呼び出しと最適化によるループの実験。 fact 階乗だと、スタックあふれが起こる前に、整数型の型あふれをおこしてしまうので、以下のような1づつ足し算のプログラムで実験してみた。 引数 1000000 だと、普通は […]
再帰呼び出しと処理時間の見積もり
再帰呼び出しの基本 次に、再帰呼び出しを含むような処理の処理時間見積もりについて解説をおこなう。そのまえに、再帰呼出しと簡単な処理の例を説明する。 再帰関数は、自分自身の処理の中に「問題を小さくした」自分自身の呼び出しを […]
繰り返し処理と処理時間の見積もり
単純サーチの処理時間 ここで、プログラムの実行時間を細かく分析してみる。 // ((case-1)) // 単純サーチ O(N) #include <stdio.h> int main() { int a[ […]
情報構造論ガイダンス2026
基本的なガイダンス 情報構造論のシラバスを、ここに示す。プログラムを作成する上で、どのような考え方で作れば処理速度が速いのかを議論する。基本的に、4回のテストのたびに、レポート課題を実施する。各テスト毎の評価は、テスト素 […]
情報構造論2025-講義録
情報構造論ガイダンス2025 繰り返し処理と処理時間の見積もり 再帰呼び出しと処理時間の見積もり ハノイの塔と再帰を使った並び替え クイックソートと選択ソート 処理速度を計測 Javaのオブジェクト指向の基礎 配列に要素 […]
関数ポインタとラムダ式
関数ポインタとコールバック関数 JavaScript のプログラムで、以下のようなコーディングがよく使われる。このプログラムでは、3と4を加えた結果が出てくるが、関数の引数の中に関数宣言で使われるfunctionキーワー […]
レポート課題(後期期末) ハッシュ法
課題内容 以下の内容の中から1つを選びハッシュ法でデータを登録・検索するプログラムを作成せよ。 メールアドレスと電話番号のデータベース メールアドレスと誕生日のデータベース ハッシュ関数などを考え、データをメールや電話番 […]
ヒープメモリの管理方法
動的メモリ領域とフリーリスト 動的なメモリ領域(ヒープ領域)は、malloc()関数で処理用のメモリを借り、free()関数で使わなくなったメモリを返却する。 この返却されたメモリ領域は、改めて malloc() (Ja […]
ヒープ領域と参照カウンタ・ガベージコレクタ
ヒープ領域 リスト処理のようなプログラムでは、データを覚える領域は、関数が終わった後も使われる領域なので、局所変数のように「関数が終わったらそのデータの場所が不要になる」といったLast In First Out のよう […]
メモリ管理・スタック領域
ここまでの授業では、プログラムを動かすうえでアルゴリズムとデータ構造を中心に話をしてきた。しかしプログラムの中で利用しているデータがどういったメモリで管理されているのかを正しく理解する必要がある。そこで、局所変数のような […]