|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
じゃあ、
固定長と可変長まとめ。
この固定長、可変長は
プログラムのデータの持ち方に
いろいろ関係してくる。
プログラムの設計に重要だ。
もちろんゲームにもね。
まあ、慌てずゆっくり行こう。
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
ゲームにも
関係あるんだ。
はいっ、ゆっくり
理解します。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
用途に応じて
使い分けね。 |
 |
|
 |
了解! |
|
|
|
 |
|
 |
|
|
固定長のイメージ |
|
|
名前 |
年齢(3桁) |
Aさん |
|
3 |
5 |
Bさん |
1 |
0 |
3 |
Cさん |
|
|
4 |
Dさん |
|
8 |
8 |
|
|
固定長の場合、
データの桁は最初に決めた桁数で固定。
常に一定の桁幅になる。 |
|
例の「年齢」データの場合、桁は常に3桁。
値が1桁、2桁の場合も3桁分予約している。 |
|
|
|
|
|
 |
|
 |
|
|
 |
|
 |
|
|
固定長のメリット |
|
|
桁数が分かっている |
|
管理・整理しやすい |
桁が揃っているので、見やすく管理しやすい。
システム間でデータを共通の体系に揃えやすい。 |
電話番号 |
0 |
9 |
0 |
- |
9 |
× |
× |
× |
- |
5 |
5 |
7 |
7 |
0 |
8 |
0 |
- |
7 |
× |
× |
× |
- |
2 |
2 |
1 |
1 |
0 |
9 |
0 |
- |
3 |
× |
× |
× |
- |
8 |
8 |
9 |
9 |
0 |
7 |
0 |
- |
5 |
× |
× |
× |
- |
1 |
1 |
6 |
6 |
|
|
|
|
チェックしやすい |
桁数が分かっているので特定の桁のチェックがしやすい。 |
【例:年齢のチェック】
先頭の番号が「1」の人を数えて100歳以上の人が何人いるか調査する。 |
名前 |
年齢(3桁) |
Aさん |
0 |
3 |
5 |
Bさん |
1 |
0 |
3 |
Cさん |
0 |
0 |
4 |
Dさん |
0 |
8 |
8 |
|
|
|
|
加工しやすい |
桁数が分かっているので特定の桁のチェックがしやすい。 |
【例:商品番号のチェックと加工】
先頭から4桁目の番号が「1」の商品は、不人気の商品。
先頭から5桁目の削除フラグ番号を「1」にして削除済みにする。 |
商品番号(5桁) |
商品名 |
1 |
0 |
5 |
0 |
0 |
かわいこちゃん人形 |
2 |
8 |
2 |
1 |
0 |
ことちゃん人形 |
6 |
9 |
8 |
7 |
0 |
なぽちゃん人形 |
8 |
0 |
1 |
1 |
0 |
ビッグことちゃん人形 |
上記は説明のための例です。実用的ではありません。
一般的に商品番号に削除フラグなどは入れません。 |
|
|
|
例では、データの型(整数型や文字列型など)を考慮しない。 |
|
|
|
 |
|
 |
|
|
 |
|
 |
|
|
固定長のデメリット |
|
|
最大桁数の変更がしにくい |
|
桁数が足りなくなる |
想定より値が大きくなった場合、桁不足でシステムが破綻する。 |
【例:商品番号の不足】
3桁固定の商品番号の場合、商品が999個より多くなった場合、桁が足りなくなりシステムが破綻する。 |
|
商品番号(3桁) |
商品名 |
|
・・ |
・・ |
・・ |
・・・ |
|
9 |
9 |
8 |
コロコロ飴ちゃん |
|
9 |
9 |
9 |
フトメンテうどん |
1 |
0 |
0 |
0 |
× |
|
|
|
|
桁数の無駄が出る |
必要以上に桁数が多すぎても管理しづらくなり、使わない桁で無駄なリソースを消費する。 |
【例:住所の登録】
住所の長さは、地名や番地によって長さが大きく異なる。そのため固定長では予め大きめにとっておく必要あり、無駄が発生しやすい。
(例では文字列を左詰め。) |
名前 |
住所(最大12桁(12文字)) |
Aさん |
埼 |
玉 |
県 |
川 |
口 |
市 |
|
|
|
|
|
|
Bさん |
千 |
葉 |
県 |
印 |
旛 |
郡 |
酒 |
々 |
井 |
町 |
|
|
Cさん |
三 |
重 |
県 |
津 |
市 |
|
|
|
|
|
|
|
・・・ |
・・ |
・・ |
・・ |
・・ |
・・ |
・・ |
・・ |
・・ |
・・ |
・・ |
・・ |
・・ |
|
|
|
|
ゆとりのある、無駄のない設計が必要になる |
|
|
|
 |
|
 |
|
|
|
|
 |
|
 |
|
|
可変長のイメージ |
|
|
名前 |
年齢(最大3桁) |
Aさん |
|
3 |
5 |
Bさん |
1 |
0 |
3 |
Cさん |
|
|
4 |
Dさん |
|
8 |
8 |
|
|
可変長の場合、データの桁は最大桁数の間で可変。
桁は値の桁数に合わせて変わる。 |
|
例の「年齢」データの場合、値の大きさに合わせて
桁が1~3桁の間で変動する。
データ内の桁数は統一されず、バラバラになる。 |
|
|
|
|
|
 |
|
 |
|
|
 |
|
 |
|
|
可変長のメリット |
|
効率がいい |
|
未使用の領域が減る |
使わない領域が減るので効率が良くなる。 |
【例:住所の登録】
住所の長さは、地名や番地によって大きく異なり、可変長に向いている。
固定長では無駄が発生しやすい。 |
名前 |
住所(最大12桁(12文字)) |
Aさん |
埼 |
玉 |
県 |
川 |
口 |
市 |
|
|
|
|
|
|
Bさん |
千 |
葉 |
県 |
印 |
旛 |
郡 |
酒 |
々 |
井 |
町 |
|
|
Cさん |
三 |
重 |
県 |
津 |
市 |
|
|
|
|
|
|
|
・・・ |
・・ |
・・ |
・・ |
・・ |
・・ |
・・ |
・・ |
・・ |
・・ |
・・ |
・・ |
・・ |
|
|
|
例では、データの型(整数型や文字列型など)を考慮しない。 |
|
|
|
 |
|
 |
|
|
 |
|
 |
|
|
可変長のデメリット |
|
桁数がバラバラになる |
|
チェックする桁が異なる |
可変長のデータは、値によって桁の長さがそれぞれ違う。
そのため、先頭や末尾から数えた桁数が全てのデータで同一とは限らない。 |
【例:年齢のチェック】
先頭の桁をチェックして100歳が何人いるのか調査しようとした。
しかし、固定長のように先頭の桁が100の桁とは限らないため、先頭の桁ではチェックできない。 |
名前 |
年齢(最大3桁) |
|
Aさん |
|
3 |
5 |
先頭は10の桁 |
Bさん |
1 |
0 |
3 |
先頭は100の桁 |
Cさん |
|
|
4 |
先頭は1の桁 |
Dさん |
|
8 |
8 |
先頭は10の桁 |
|
|
|
例では、データの型(整数型や文字列型など)を考慮しない。 |
|
|
|
 |
|
 |
|