B木とデータベース
2分探索木の考え方を拡張したもので、B木がある。 B木の構造 2分木では、データの増減で木の組換えの発生頻度が高い。そこで、1つのノード内に複数のデータを一定数覚える方法をとる。B木では、位数=Nに対し、最大2N個のデー […]
GROUP BY-HAVINGとCREATE VIEW
先週に引き続き、2つのSQLとそれと同じ処理のプログラム作成の課題に取り組む。 演習だけでは進度が少ないので、SQL で説明できなかった、GROUP BY-HAVING と CREATE VIEW の説明 GROUP B […]
ポインタの先には何がある?
学生さんから「ポインタの先には何があるの?」との質問があった。 私が「そのポインタの型のデータ」と答えると、さらに「ポインタはメモリの場所。でもメモリには int や char や double といった色んなデータがあ […]
演算子と2分木による式の表現
2分木の応用として、式の表現を行うけどその前に… 逆ポーランド記法 一般的に 1*2 + 3*4 と記載すると、数学的には演算子の優先順位を考慮して、(1*2)+(3*4) のように乗算を先に行う。このような […]
const char*s, char* const sの違い
専攻科実験のサンプルコードで、警告がでたことについて質問があったので説明。 (( サンプルコード sample.cxx )) #include <stdio.h> void foo( char* s ) { […]
意思決定木と構文解析
前回までの授業で2分探索木の説明をしてきたが、このデータ構造は他のデータを扱う際にも用いられる。ここで、意思決定木と構文木を紹介する。 意思決定木 意思決定木の説明ということで、yes/noクイズの例を示す。これは2分木 […]
Visual Studio Code で印刷
実験や授業課題のレポート提出で、プログラムを印刷したものを提出してくれるけど、行を移動しながら何度もスクリーンキャプチャで保存した画像ファイルをWordに貼り付けて提出している人が多い。 いままでなら、「秀丸エディタで印 […]
コンパイラの技術と関数電卓プログラム(2)
前半では、1文字の数字と簡単な演算子で表現される計算式を再帰下降パーサで計算する処理で、 演習を行った。 後半は、さらに実際のコンパイラに近いものとして、 C言語で広く使われている、字句解析ツール(lexical ana […]
再帰下降パーサのサンプルコード
再帰下降パーサ・サンプル 授業でもやっていない再帰下読みの説明でもあり、 簡単なサンプルコードを示したいけど、Webで探しても全体的に大きなプログラムばかりで、 再帰関数をどう記述していくか解かりにくい。 ということで、 […]
コンパイラの技術と関数電卓プログラム(1)
コンパイラを作るための技術の基礎を学んでもらうために、 簡単な関数電卓プログラム作成を課題とする。 基本は、printf( “%d” , eval( “1+2*3”) ) […]