No.1

プログラミング論
第一回
ガイダンス(C言語の基礎知識)
本日の内容

コンピュータとは?
– ハードウェアとソフトウェア

ソフトウェアの指示
– 機械語,アセンブラ,高級言語
– C言語とは?


コンパイル,リンクとは?
~とりあえず動かしてみよう~
コンピュータとは?


仕事(データ処理)をするための箱・部屋
そもそも単なる四則演算の計算機
ENIAC, 1946

A.Kay, ダイナブック思想,1972
今ではいろんな事に利用されている
余談ですが。
http://www.maniacworld.com/steve-jobsvs-dennis-ritchie.html
コンピュータの構成

ハードウェア
– ハードディスク,メモリ,ディスプレイなど
– 仕事をするときの机,本棚,引き出しに相当

ソフトウェア
– Windows, Word, Excel, PowerPoint など
– コンピュータで仕事をするための手順書(プログラム)
– プログラムの仕様書(マニュアル)
コンピュータとは?
つまり・・・
コンピュータは,プログラムが無ければ,ただの箱
ということは・・・
プログラムが分かれば,コンピュータに好きな事を指示出来る
プログラミングとは,コンピュータに命令する指示を書く事
プログラミング言語とは,コンピュータに命令するときの言葉
ソフトウェアの指示




そもそも,コンピュータはどんな「言葉」を
理解するのだろう?
信号が「ある」「ない」の組み合わせで指
示を理解する。
「ある」=’1’, 「ない」=’0’
‘1’と’0’の組み合わせが「言葉」となる
ソフトウェアの指示
では,この指示の意味は?
0 1 0 0 1 0 0 0
これは,「あるメモリの内容を1だけ減らす」という意味になる
わっ,分からない・・・・
これが,「機械語」。コンピュータはこの言葉しか分からない。
ど,どうしよう・・・・
ソフトウェアの指示
しかたない,機械語を勉強して覚えるか。
無理!!
じゃ,どうする??
機械語を,意味が分かる言葉に置き換えよう!
「アセンブラ」
ソフトウェアの指示
「あるメモリの内容を1だけ減らす」
機械語
0 1 0 0 1 0 0 0
アセンブラ
DEC
*「decrement」(減少)からつけられた
では,簡単な四則演算,
「data1に5を加えた結果をdata2に保存する」
という処理を考えてみましょう。
ソフトウェアの指示

コンピュータの中では,こんな感じ。
– data1の内容を,あるメモリ位置’AX’に入れ
る。
– ‘AX’の内容を5だけ増やす。
– ‘AX’の内容をdata2に入れる。

アセンブラだとこんな感じ。
– MOV AX, data1
– ADD AX, 5
– MOV data2, AX
?????
ソフトウェアの指示
やっぱり,
「data2 = data1 + 5」
と書かないと,直感的に理解出来ない。。
高級言語
C,Fortran, BASIC, Pascal, COBOL, LISP, Prolog, Java など
ソフトウェアの指示

では,なぜC言語なのか?
– もともと,UNIXというオペレーティングシステムを記
述するために開発された言語
– きめ細かい記述が可能で実行速度も速い,かつ書
きやすい(記述容易性)
– 便利な機能が多くあり,現在では「汎用プログラミン
グ言語」と呼ばれる
– ワープロソフトから表計算ソフト,科学技術計算プロ
グラムからゲームまで,さまざまなものが開発可能
– でも,一番の理由は「無料で配布」されたからじゃな
いか?
– 情報処理技術者試験でも採用
コンパイル,リンクとは?
ちょっと待った!
コンピュータは,機械語しか
理解出来ないのでは??
高級言語を機械語に「翻訳」すればいい
コンパイル
コンパイル,リンクとは?

コンパイル
– C言語などで記述したプログラムを,処理単位ごとに
機械語に変換する事
– 変換するためのソフトウェアを「コンパイラ」という

リンク
– 標準ライブラリ等を統合して実行可能な機械語の
ファイルを作成する
– コンパイル後に行われるが,通常はコンパイル指示
コマンドにより自動的にリンクまで行われるので気に
しなくて良い

では,実際にやってみます。