FC2ブログ

C++講座③ C言語とC++

 前回は、「実行可能なプログラムは機械語で書かれているが、その機械語に近い言語を低級言語、その機械語からあれこれ改良されて人に分かりやすくされたものを高級言語と呼ぶ。また、高級言語を機械語に翻訳する方式は二つあるが、そのうちのコンパイラ方式では翻訳することをコンパイルするといい、翻訳機に値するプログラムをコンパイラと呼ぶ」という感じでしたね。長いですね、すみません。
 ↓というわけで、今回はここで講座するプログラミング言語の話です。↓ 


 高級言語の中でも最も人気が高いのがC/C++である。C/C++とはすなわち、C言語C++のことであるが、これらのプログラミング言語は文法が同じであるため同じ枠組みのプログラミング言語としてとらえられている。今回はこのC/C++とはどのような言語なのかを知ってもらうため、C/C++の特徴について説明する。まず、C言語の特徴について説明する。
 C言語の特徴はいろいろあるが、個人的には同じ処理や大きな処理を『関数』として一つの処理にまとめたり、さまざまな変数を『構造体』という形で一つにまとめることで、ソースファイルを見やすくできることがC言語の一番の特徴だと思っている。ソースファイルとは、プログラミング言語で書かれたコンパイル前のファイルのことで、これをコンパイルすると実行可能なプログラムが出来上がる。C言語の特徴の話に戻すが、分かりにくいので関数と構造体を身近な例でたとえてみる。まず関数についてであるが、たとえば自分がある打ち上げの幹事になったとする。幹事は店を探したり、予約をしたり、日時を決めたり、参加者に連絡をしたりと、やることがいろいろある。さらに、仕事のレポートの締切日も近いとする。レポートを作るにしても、レポートに書く材料を集めたり、タイトルを決めたり、構成を練ったり、練った構成からレポートを実際に作成したりと、やることがいろいろある。ここで、

 打ち上げの店を探す → 予約をする → 日時を決める → 参加者に連絡する → レポートに書く材料を集める → タイトルを決める → 構成を練る → 練った構成からレポートを作成する

と表現するよりは、

 幹事の仕事をする → レポートを作る

とした方が見やすいであろう。このように、いくつかの処理をひとまとめにしたもの関数なのである。
 また、構造体についてはたとえば、リンゴやみかん、ももやレモンなど、いろいろな商品があったとする。この商品はそれぞれ、商品名・値段・産地といった情報を持っている。「情報」というと分かりにくいかもしれないが、ここでいう情報とはその商品がどういうものなのかを表した情報のことである。たとえばリンゴであれば、

 商品名:リンゴ
 値段 :100円
 産地 :青森県

といった情報を持っていることになる。しかし、これらの情報(商品名・値段・産地の3つ)をそれぞれ別々に管理していては、必要な情報と他の情報を取り違える可能性がある。たとえば、リンゴの値段を知りたいのに、間違えてみかんの値段を見て、その値段でリンゴを販売したら大問題であろう。なので通常、これらの情報はひとまとめにして管理されるであろう。このような仕組みを利用したのが構造体である。
 関数や構造体は後ほど詳しく説明するので、ここではそれらをアバウトに理解しておけば(大丈夫だ、)問題ない。ここで私が述べたいのは、C言語がどのようにわかりやすいのかということである。なお、関数や構造体のような機能を持つプログラミング言語を構造化プログラミング言語という。
 また、コンパイル(C言語を機械語に翻訳)する際にライブラリファイルをリンクするのもC言語の特徴だと思われる。ライブラリファイルとは、ある命令がどのような命令なのかという情報が入っているファイルである。なぜこのようなことをするのかというと、プログラマー(プログラムをする人)がすべてのプログラムで使う命令をいちいち書く手間を省くためだからである。たとえば、画面に文字を表示する命令はほとんどのプログラムで用いられるが、いちいちその命令をプログラムに書かなければならないというのは非常に面倒である。
 ここまで述べたのがC言語の特徴である。ここからはC++の特徴を説明する。
 C++はオブジェクト指向プログラミング言語である。オブジェクト指向プログラミング言語とは、人間のものの考え方から生まれ、より使いやすいプログラミング言語を目指して作られたプログラミング言語である。人は複雑な物事を一つのもの(オブジェクト)としてまとめるようとする。上記の関数や構造体で挙げたたとえを見れば、人がそのような考えをもつというのが分かるだろう。そのような観点から構造化プログラミング言語を改良したものがオブジェクト指向プログラミング言語なのである。
 オブジェクト指向プログラミングの特徴を利用したプログラミングは便利であるがやや難しいため、この講座では後回しにする。ちなみに私はこれらの特徴のほとんどを利用していない。つまり、普段私はほとんどC言語の機能だけでC++のプログラムを作っているのである。それでもC++にこだわるのは、C++のプログラムはC言語のプログラムと比べて簡単に書けるからである。たとえば、C言語の命令は以下のようにC++に直せる。




C言語C++
int main(void)int main()
printf("半径%dの円の面積は%dだ\n", r, s);cout << "半径" << r << "の円の面積は" << s << "である" << endl;
scanf("%d", &r);cin >> r

『printf』の部分はどこが簡単なのかはいまいち理解できないと思うが、これはオブジェクト指向を利用して分かりやすくなっているのである。また、他の二つはオブジェクト指向と言えないはずだが、明らかにC++の方が簡単であることが分かるであろう。このようにC++の方が使い勝手がいいので、私はC++を使っているし、この講座でC++を教えようとしているのである。


 ……今回はこの辺でで終わりです。僕も最初はC言語で講座をつくろうと思ってたんですが、C++で書いたほうが楽だし便利だし、自分自身C++を学んだらC言語もできたから問題ないかなと思いました。将来C言語でプログラミングしようとしている人に言いますが、一応C++を学んでおいたほうがいいですよ。すべての機能を使うことはないと思いますが、すごく便利な機能があったりするはずです。
 次回からプログラミングですが、次回はコンパイラであるVC++2010をある程度使いこなせるようにするための講座になるはずなので、実質プログラミングはその次からになりそうです。では今回はこの辺でノシ
スポンサーサイト



コメントの投稿

管理者にだけ表示を許可する

プロフィール

ケーケー

Author:ケーケー
趣味:自作小説執筆、プログラミング、電子工作
好きなゲーム:ぷよぷよ

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
FC2カウンター
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR