人間が言葉の通じない人に意思を伝えるためには、通訳を通して自分の言葉を相手のわかる言葉に翻訳して伝えてもらう。それと同じように計算機にメッセージを伝えるには、計算機用の言葉が必要である。それがプログラム言語と呼ばれるもので、プログラムを表現(記述)するための言葉である。
プログラム言語でプログラムを記述することをプログラミングと言う。そして人間の言葉にも日本語、英語、フランス語、...とあるようにプログラム言語にもいろいろあり、今回取り上げるC言語もそのひとつである。さらにC言語でもいろいろ方言(特殊な関数や機能を持っている)があるがここではもっとも標準なANSI(American National Standard Institute:米国標準規格)Cを扱うことにする。最近のどんなC言語でもANSI Cを含んでいてさらに特殊な関数や機能を持っていることが多い。
また、人間の言葉に文法があるように、プログラム言語にも文法があり、その文法に合うように正しくプログラミングしないと、人間の意思(計算機にして欲しいこと)を計算機に伝えることができない。
ハードウェア | メディア(媒体) | ソフトウェア |
CDプレーヤー | コンパクトディスク | 音(音楽) |
ビデオデッキ | ビデオテープ | 画像,音(映画) |
LDプレーヤー | レーザーディスク | 画像,音(映画) |
コンピュータ(計算機) | フロッピーディスク等 | プログラム,データ |
さらに、プログラムにもいろいろな種類があり、以下のように分類できる。
- 1.エディタ
- プログラムを記述するための道具で、計算機世界のノートとペンと考えてよい。
- 2.コンパイラ
- 利用者の作成したプログラム言語の文法をチェックし、計算機が理解できるように翻訳するプログラムである。これによりプログラミングしたものが実行できるようになる。
- 3.ワードプロセッサ
- 日本語や英語の文章を作成し,文字の大きさを変えたり,経線を引いたりして文字を飾り,プリンタに印字させる。
- 4.表計算ソフト
- 数値データの集計,計算,表作成などを行う。
- 5.ゲームソフト
- 子供の視力と姿勢を悪くし,軟弱な子供を育てる?
(1)プログラムで与えられた単純な動作を極めて高速でしかも正確に実行する。
(2)記憶能力を持つ。
(3)単に計算をするばかりではなく、論理的な判断や比較機能を持つ。これらの特徴をいかに有効に活用するかは、すべてプログラムに依存する。
計算機システムを構成する代表的なハードウェアを紹介する。
- ・CPU
- 計算機の中心部であり様々な演算をする論理回路と演算結果を一時的に蓄えるレジスタからなる。人間の頭に対応する。
- ・メモリ
- 命令(プログラム)やデータを記憶するためのもので、メモ用紙的な役割をする。通常計算機の電源が切れるとメモリの内容は消えてしまう。メモリへのデータの読み書きは高速に行える。
- ・入力装置
- 計算機へ命令を伝えるための装置で、計算機の目や耳のようなものである。キーボード,マウスなどがこれにあたる。
- ・出力装置
- 計算機からのメッセージや実行結果を得るための装置で、計算機の口や手のようなものである。ディスプレイやプリンタなどがこれである。
- ・外部記憶装置
- ハードディスクやフロッピーディスクなどで、プログラムやデータを蓄えておくための装置である。メモリのように高速にデータの読み書きができないが、大容量のデータを長時間格納できる。キーボード,ディスプレイをあわせて計算機端末もしくは端末(ターミナル)と呼ぶ。
ここから先の話は,少々数学的で複雑なため,わかりにくいかもしれないが,計算機の内部の構造を知る上で非常に重要なので,何とか理解していただきたい。また,5章を読むときの手助けにもなろう。
記号の解説: | 以下の解説に出てくる記号についてここで解説しておく。この記号は,この講座だけではなく計算機の世界でよく用いられる。 |
* : かけ算 X * Y → X と Y をかける / : 割り算 X / Y → X を Y で割る ^ : べき乗 X ^ Y → X の Y 乗 < : 未満 1.9 < 2 > : より上 5 > 4 <= : 以下 1.9 <= 2 2 <= 2 >= : 以上 5 >= 4 4 >= 4
計算機が16ビットマシンとか32ビットマシンとか言われているが、これは1つの数値や命令を表すのに用いるbitの桁数を言っている。当然32ビットマシンは16ビットマシンの2倍のbitの桁数を扱っているため、より大きな桁の数値が扱えることがわかるであろう。
0と1を扱うためには、2進数の考え方がとても重要である。また、2進数では0と1の集まりで桁数も多くなってしまい、人間には見づらいものになってしまう。そこで便宜上、2進数を4桁づつに区切りそれぞれを16進数表示したものをしばしば扱うことがある。以下我々が日常使っている10進数と計算機により近い2進数,16進数の関係を以下例を用いながら、解説する。
念のために2進数とは0と1なら表現される数で、16進数とは0−15の数から表現される数である。16進数の場合10−15の代りにアルファベットのA−Fを用いる。我々の身の回りで馴染みのあるもので、時計の60進数,24進数などを思い浮かべれば感じがつかめるであろう。詳細は、下記の例を見れば納得していただけると思う。
余りを順に下から上に並べると11001となり、これが10進数25を2進数表示したものである。以下便宜上、
−64 <= e <= 63
のときは、浮動小数点数では表現できない。仮数部では数値をm*(16^e)の形で表現したときのmを2進数で表示しその上位24桁をとる。それ以降の桁は、切り捨てられる。この仮数部で表現できる範囲が、有効桁数となる。