生徒実習課題例 |
データの伝達とディジタル化、圧縮 |
科目の中の位置づけ社会と情報(1)イ 情報のディジタル化社会と情報(1)ウ 情報の表現と伝達 社会と情報(2)ウ 情報通信ネットワークの活用とコミュニケーション 情報の科学(1)ア コンピュータと情報の処理 情報の科学(2)イ 問題の解決と処理手順の自動化 実習内容ねらい文字情報には、アルファベット、数字、ひらがな、カタカナ、漢字、その他の記号など、様々なものがある。文字情報を伝達する方法について考えてみよう。ここでは、説明を簡単にするため、アルファベットの大文字26文字と空白だけを考えることとする。実習に必要な機器、材料授業プリント例授業用プリント、確認テスト、評価規準の例を作成しました。 ![]() 課題および解答例課題例えば、次の文
を、遠く離れた場所に伝達する方法を考える。 なお、0〜9の数字だけが伝達することができるとし、どのような方法があるか考えよう。ただし、情報を受け渡しする双方が同じ変換表を持っているとする。 解答例 アルファベットの大文字26文字と空白の合計27文字だから、次のような変換表を作ればよい。
この表にしたがって、上記の文を
というように変換して送れば、受信先は再変換して、送信元と同じ文を読むことができる。 発展課題および解答例発展課題1解答例では、どうして、A〜Iを1〜9としないで、01〜09と考えたのだろうか? 解答例1 文字の区切りがわからなくなるから 発展課題2 上記の変換方法について、実際に人間が変換を行ってみたときの不便な点を考えてみよう。 また、実際にこれらの方法が使われている情報機器を探してみよう。 解答例2−1 文章が日本語である場合は、次のような変換表の方が変換しやすいのではないか? 例えば、「アイウエオ」に該当するローマ字「AIUEO」を、それぞれ「01、02、03、04、05」とし、「カサタナハマヤラワ」の子音部に該当するローマ字「KSTNHMYRW」をそれぞれ「10、20、30、40、50、60、70、80、90」、濁音等はそれに準じて1桁目を「5、6」とする。また、残りのものを「91、92・・・」とする。
解答例2−2 それならば、ローマ字表記にしたがって、「あ〜お」は「11〜15」、「か〜こ」は「21〜25」のようにすればよいのではないか? <参考>ポケベルの入力 ポケベルの入力はこの方法を利用したものがある。 (例)
発展課題3 例えば、信号のONとOFFを1と0と考えればよいので、情報伝達機器等に利用しやすいから、実際の情報の伝達では、2進法が多く使われている。 それでは、0〜9をどのように0と1を用いて表したらよいだろうか? 解答例3
上記のようにして、例えば「5」は、 5=1×22+0×21+1×20 のように考えて、「101」と変換していく。 いま考えているのはアルファベットの大文字と空白の合計27文字だから、 27=1×24+1×23+0×22+1×21+1×20 より、「27」は2進法で「11011」と表すことができるから、5桁の2進数(2進法で表された数)で考えればよいことになる。 この場合、例えば、2進数で表された「100」は5桁で考えることにすれば「00100」と表記する。 下記の変換表が作成できる。この変換表で表された2進数を「文字コード」と呼ぶ。
この変換表に従うと、
は、次のように変換される。 |
010101100101111101010100001111101011101101110011111101100100001010111010100000011010010101 |
<参考> 実際の文字コード 実際の文字コードでは、半角の文字は8桁の2進数で表されている。こうすれば、合計512個までのアルファベットや数字、記号はすべて2進数で表すことができる。 様々な変換表があるが、JISで定められた文字コードでは、例えば、「A」は「01000001」、「L」は「01001100」である。 発展課題4 文字コードを2進数で「01000001」のように表したとき、人間が扱うと(目がチラチラして)不便であるので、表記のために何かよい方法はないであろうか? 解答例4 次のような変換を考える。 |
2進法 |
0 |
1 |
10 |
11 |
100 |
101 |
110 |
111 |
1000 |
1001 |
1010 |
1011 |
1100 |
1101 |
1110 |
1111 |
変換 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
上記のようにすると、ちょうど2進数の4桁ずつで2進法と変換を対応させることができる。 例えば、2進法で「10011010001110101011」と表された数は「1001|1010|0011|1010|1011」と4桁で区切って、それぞれを上記の表にしたがって、「9|10|3|10|11」のように表せばよい。 このとき、変換された「10〜15」は2桁の数であって紛らわしいので、これを「A〜F」と表すことにすると、「9|A|3|A|B」なので、これを「9A3AB」と書く。これで、「10011010001110101011」を「9A3AB」と表し直すことができる。 この方法にしたがうと、先ほどの「A」は「41」、「L」は「4C」となる。 この変換を16進法といい、変換された「1〜F」を16進数という。 注 文字の「A」と16進数の「A」は違うものなので注意!! 応用課題 実際の変換コードについて調べてみよう。 日本語を表すときには文字の種類が多いので、2バイト(2進数の16桁)が用いられている。この変換コードには様々な種類のものがあるが、その違いについても考えてみよう。 更に余力があれば、どのようにして、1バイトの文字と2バイトの文字をコンピュータが区別しているか、その仕組みについても調べてみよう。 発展課題5 発展課題3では、
は、 |
010101100101111101010100001111101011101101110011111101100100001010111010100000011010010101 |
のように変換された。 ここでは、このデータをもっと少ない量のデータに変換する(「圧縮する」という)ことを考えてみよう。 圧縮する方法の変換表は、受信元と発信先に用意されているものとする。 できるだけ少ない量のデータに変換するにはどうしたらよいだろうか? 注 実際には、画像などを配信するときにできるだけ少ないデータに圧縮する方法が用いられている。 解答例5−1 例えば、「AAABBBCCCDDEEFFFF」という文字列であれば、この場合、文字と数字の区別ができる変換表を用意しなくてはならないが、これを「A3B3C3D2E2F4」というように圧縮してから2進数のデータに変換することが考えられる。 いま取り扱っている
では、文字の重なりがないので、この方法では、圧縮できない。 解答例5−2
上記の表のように、「A」を「00001」ではなく「1」とすれば、データを少なくできる。 ただし、どこで文字の区切りがあるのかわからなくなってしまうので、区切り記号を用いなくてはならない。どのような区切り記号を用いるかがむずかしい問題である。 解答例5−3 AからZをその文字の出現頻度で並べ直すことにする。ここでは説明を簡単にするためにA〜Fで考えてみよう。 出現頻度順が、例えば、次のようであったとする(実際はこれを調べることが大変だ)。
このとき、頻度順に次のような表を作成する。
すると、次のような変換表ができる。
このとき、例えば、「11011101111011010」であれば、順に表から変換して、「ECFEA」とすることができる。 これは、頻度順に表して1を立てて、文字の区切りに0を置いたということになるが、元のデータに比べて圧縮されたとは言い難い。 解答例5−4 解答例5−3の頻度順で、更に工夫して、次のような表で考えてみる。
すると、次のような変換表ができる。
このとき、例えば、「011001010100」であれば、順に表から変換して、「ECFEA」とすることができる。 解答例5−3と比べたとき、圧縮率が高いことがわかる(しかも、文字の区切りが要らない!!)。 <参考> 解答例5−4の方法をハフマン法といい、実際の圧縮に用いられている。 応用課題 「A〜Z」と空白が実際にどのような頻度で現れるかを調査して、例7のような表を作成し、
を、上記の方法で圧縮変換してみよう。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
時間配分 50分 |
時間配分 | 生徒の動き | 教師の動き |
5分 |
学習内容
|
実習の目的の説明 実習の説明
|
40分 |
実習内容 アルファベットと数字の変換表の作成。
発展課題
|
巡回し、補足説明。 余力のある生徒には、発展課題の中から適宜選択して、考えさせる。 |
5分 |
学習内容 次回までの課題
|
次回までに調べてくる課題の指示。 次時の予告。 |