生徒実習課題例>>データの伝達とディジタル化、圧縮
生徒実習課題例

データの伝達とディジタル化、圧縮


科目の中の位置づけ

社会と情報(1)イ 情報のディジタル化
社会と情報(1)ウ 情報の表現と伝達
社会と情報(2)ウ 情報通信ネットワークの活用とコミュニケーション
情報の科学(1)ア コンピュータと情報の処理
情報の科学(2)イ 問題の解決と処理手順の自動化


実習内容

ねらい

 文字情報には、アルファベット、数字、ひらがな、カタカナ、漢字、その他の記号など、様々なものがある。文字情報を伝達する方法について考えてみよう。ここでは、説明を簡単にするため、アルファベットの大文字26文字と空白だけを考えることとする。

実習に必要な機器、材料

授業プリント例
 授業用プリント、確認テスト、評価規準の例を作成しました。
   "36_digit.doc" Word 97-2003文書 (45KB)

課題および解答例

課題
 例えば、次の文

JYOUHOU NO DENTATU

を、遠く離れた場所に伝達する方法を考える。
 なお、0〜9の数字だけが伝達することができるとし、どのような方法があるか考えよう。ただし、情報を受け渡しする双方が同じ変換表を持っているとする。

解答例
 アルファベットの大文字26文字と空白の合計27文字だから、次のような変換表を作ればよい。
  
01 08 15 22
02 09 16 23
03 10 17 24
04 11 18 25
05 12 19 26
06 13 20 空白 27
07 14 21    

  この表にしたがって、上記の文を

102515210815212714152704051420012021

というように変換して送れば、受信先は再変換して、送信元と同じ文を読むことができる。

発展課題および解答例

発展課題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・・・」とする。

01 50 05 96
55 02 56 90
91 93 95 98
35 10 80 70
04 94 20 25
92 60 30 空白 99
15 40 03    


解答例2−2
 それならば、ローマ字表記にしたがって、「あ〜お」は「11〜15」、「か〜こ」は「21〜25」のようにすればよいのではないか?

<参考>ポケベルの入力   ポケベルの入力はこの方法を利用したものがある。

(例)
11 21 31     01
12 22 32     02
13 23 33     03
14 24 34        
15 25 35        


発展課題3
 例えば、信号のONとOFFを1と0と考えればよいので、情報伝達機器等に利用しやすいから、実際の情報の伝達では、2進法が多く使われている。
 それでは、0〜9をどのように0と1を用いて表したらよいだろうか?

解答例3

10進法

0

1

2

3

4

5

6

7

8

9

10

11

2進法

0

1

10

11

100

101

110

111

1000

1001

1010

1011


 上記のようにして、例えば「5」は、
   5=×2×2×2
のように考えて、「101」と変換していく。
 いま考えているのはアルファベットの大文字と空白の合計27文字だから、
   27=×2×2×2×2×2
より、「27」は2進法で「11011」と表すことができるから、5桁の2進数(2進法で表された数)で考えればよいことになる。
 この場合、例えば、2進数で表された「100」は5桁で考えることにすれば「00100」と表記する。

 下記の変換表が作成できる。この変換表で表された2進数を「文字コード」と呼ぶ。

00001 01000 01111 10110
00010 01001 10000 10111
00011 01010 10001 11000
00100 01011 10010 11001
00101 01100 10011 11010
00110 01101 10100 空白 11011
00111 01110 10101    


 この変換表に従うと、

JYOUHOU NO DENTATU

は、次のように変換される。
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桁の数であって紛らわしいので、これを「」と表すことにすると、「||||」なので、これを「9A3AB」と書く。これで、「10011010001110101011」を「9A3AB」と表し直すことができる。
 この方法にしたがうと、先ほどの「A」は「41」、「L」は「4C」となる。
 この変換を16進法といい、変換された「」を16進数という。

 文字の「A」と16進数の「」は違うものなので注意!!

応用課題
 実際の変換コードについて調べてみよう。
 日本語を表すときには文字の種類が多いので、2バイト(2進数の16桁)が用いられている。この変換コードには様々な種類のものがあるが、その違いについても考えてみよう。
 更に余力があれば、どのようにして、1バイトの文字と2バイトの文字をコンピュータが区別しているか、その仕組みについても調べてみよう。

発展課題5
 発展課題3では、

JYOUHOU NO DENTATU

は、
010101100101111101010100001111101011101101110011111101100100001010111010100000011010010101

のように変換された。

 ここでは、このデータをもっと少ない量のデータに変換する(「圧縮する」という)ことを考えてみよう。
 圧縮する方法の変換表は、受信元と発信先に用意されているものとする。

 できるだけ少ない量のデータに変換するにはどうしたらよいだろうか?
 実際には、画像などを配信するときにできるだけ少ないデータに圧縮する方法が用いられている。

解答例5−1
 例えば、「AAABBBCCCDDEEFFFF」という文字列であれば、この場合、文字と数字の区別ができる変換表を用意しなくてはならないが、これを「A3B3C3D2E2F4」というように圧縮してから2進数のデータに変換することが考えられる。
 いま取り扱っている

JYOUHOU NO DENTATU

では、文字の重なりがないので、この方法では、圧縮できない。

解答例5−2

1 1000 1111 10110
10 1001 10000 10111
11 1010 10001 11000
100 1011 10010 11001
101 1100 10011 11010
110 1101 10100 空白 11011
111 1110 10101    

 上記の表のように、「A」を「00001」ではなく「1」とすれば、データを少なくできる。
ただし、どこで文字の区切りがあるのかわからなくなってしまうので、区切り記号を用いなくてはならない。どのような区切り記号を用いるかがむずかしい問題である。

解答例5−3
 AからZをその文字の出現頻度で並べ直すことにする。ここでは説明を簡単にするためにA〜Fで考えてみよう。
 出現頻度順が、例えば、次のようであったとする(実際はこれを調べることが大変だ)。

 
出現頻度

 このとき、頻度順に次のような表を作成する。


 すると、次のような変換表ができる。

10
110
1110
11110
111110
1111110

 このとき、例えば、「11011101111011010」であれば、順に表から変換して、「ECFEA」とすることができる。
 これは、頻度順に表して1を立てて、文字の区切りに0を置いたということになるが、元のデータに比べて圧縮されたとは言い難い。

解答例5−4
 解答例5−3の頻度順で、更に工夫して、次のような表で考えてみる。

すると、次のような変換表ができる。

00
01
100
101
110
111

 このとき、例えば、「011001010100」であれば、順に表から変換して、「ECFEA」とすることができる。
 解答例5−3と比べたとき、圧縮率が高いことがわかる(しかも、文字の区切りが要らない!!)。

<参考>
 解答例5−4の方法をハフマン法といい、実際の圧縮に用いられている。


応用課題
  「A〜Z」と空白が実際にどのような頻度で現れるかを調査して、例7のような表を作成し、

JYOUHOU NO DENTATU

を、上記の方法で圧縮変換してみよう。


時間配分 50分

時間配分 生徒の動き 教師の動き
5分 学習内容
  • 実習の目的の把握

  • 実習の内容の理解
実習の目的の説明

実習の説明
  • 0〜9の数字を用いて、アルファベットを表現する。
  • アルファベットに、数字を割り当てる。
40分 実習内容
 アルファベットと数字の変換表の作成。
  • 変換表の作成(アルファベットと空白の27文字分)。
  • 問題の文を変換表を用いて、数字に直す。
  • 他の生徒に変換した数字と変換表から元の文に直してもらう。
  • 問題点が、なかったか確認する。

 発展課題
  • 各自の進度で、発展課題に取り組む。

巡回し、補足説明。

余力のある生徒には、発展課題の中から適宜選択して、考えさせる。

5分 学習内容

 次回までの課題
  • 漢字について、実際のコンピュータではどのようにコード化されているか。
次回までに調べてくる課題の指示。

次時の予告。