![]()
![]()
| 1,導入 | 言語とは コンパイラ VC |
| 2,C++の概念 | 関数 クラス 変数 |
| 3,C++の利点 | C++がなぜ、注目されているのか |
アプリケーションというものがあります。
これは、実行可能なファイルのことです。
Windows95のExploreを開くと、「.exe」とかかれたファイルがあります。
このファイルは実行可能で、いろいろな動作が可能です。
今、あなたが使っているブラウザもアプリケーションです。
これは、Windowsに限らず、MS-DOS、DOS/V、Mac、UNIX・・・つまり
あらゆるコンピュータはアプリケーションというものが存在します。
この重要なアプリケーションは、一般にはSOFTとして
買う(もらう)ことになります。
ところが、これは自分好みではないときがあります。
または、自分の欲するアプリケーションがないかもしれません。
そのようなときにプログラミングをする必要があります。
プログラミングとは、自分がコンピュータに実行させたい事柄を
順序立てて記述します。
記述といっても、コンピュータが理解できるのは、機械語のみです。
従って、機械語でプログラミングする必要があるのですが
機械語は人間にとって非常に難解です。
そこで、人間にとってわかりやすい記述を、機械語に変換するソフトがあります。
それがコンパイラです。
| computer側 | 人間側 |
|||
| 機械語 | ← | コンパイラ(VisualC++など) | ← | ソース |
ソースをつくることをプログラミングといいます。
以下にソースの例を示します。(C++の場合)
#include <iostream.h>
void show(int a[],int number)
{
int i;
int c=a[0];
int d=a[0];
for (i=0;i<number;i++)
{
cout <<v a[i] <<",";
if (c<=a[i])
c=a[i];
if (d>=a[i])
d=a[i];
}
cout<<endl;
cout<<"The biggest number is "<<c<<endl;
cout<<"The smallest number is "<<d<<endl;
}
void main(void)
{
int test[4]={3,1,4,0};
show(test,4);
int test1[11]={3,1,4,1,5,9,2,6,5,3,5};
show(test1,11);
}
コンパイラは、以下の種類があります。
| 言語 | 易しさ | 用途 |
| BASIC | ○ | 初心者向け |
| C++ | △ | 本格的なソフトが作れる。 |
| FORTRAN | △ | 科学技術計算に用いる |
| PASCAL | △ | データを組み立てやすい |
| COBOL | △ | 事務計算向け |
| アセンブラ | × | 一般に使わない |
| 機 械 語 | × | 一般に使わない |
この中で、BASICとC++が有名です。
一般に初心者がBASICから初めて、より高度なことをしたくなると
C++に移行することが多いです。
アプリケーションは、それを実行できるOSが決まっています。
OSの種類は以下の通りです。
| OS | 普及 | 用途 |
| Windows95 | ◎ | 最も広く普及している。 |
| WindowsNT | ○ | 企業のLANやサーバー向け |
| Windows3.1 | △ | 昔のWindows |
| MS-DOS | ○ | PC98で用いたOS 10年前は主要なOSでした。 |
| DOS/V | × | 一時期普及しそうだったがWindowsの登場で |
| MacOS | △ | 10%普及している。 |
| UNIX | × | ワークステーション用 |
以下にVisual C++ 4.0の例を示します。
このようにC++も含めて、すべてのsoftはWindows95にのっています。
C++は、Windows95上でソースファイルをsoft(*.exe)に変換します。
C++は人間が書いたC++ソースコードを機械語へと橋渡しをします。
ところでcomputerは、一台一台構造が違っています。
OSはcomputerとsoftの橋渡しをするのです。
| soft (*.exe) |
← | Visual C++ | ← | C++言語ソース (*.c,*.cpp,*.h) |
| OS(Windows 95) | ||||
| computer | ||||
BASICのソフトとして最も有名なのが MicrosoftのVisual Basicです。
現在ではVer5.0がでています。
これには、Standard版 Professional版 Enterprise版があります。
また、学生はアカデミックパックというのがあり、約半額で買うことができますが、
大手のソフトメーカーでないとアカデミックパックをだしてないことがあります。
Ver4.0についての定価は以下の通りです。(Ver5.0の価格は手元に資料がないのでわかりません)
| 一般 | アカデミック | |
| Standard版 | 30000 | 12000 |
| Professional版 | 78000 | 26000 |
Visual Basic 4.0は、Windows95,NT用のソフトです。
プログラミング方法が非常に簡単で、多方面から絶賛されています。
しかし、高度なこと(ハードを直接制御するとか)ができないといった
制約が多いのも事実です。
また、機械語ファイルのほかにdllファイル OCXファイルが必要になります。
従ってSoftを配布したり、別のパソコンで動作させるのに困るかもしれません。
ちなみに私はStandard版(Ver 4.0)をアカデミックパックで10800円で買いました。
C++のソフトとして最も有名なのも MicrosoftのVisual C++です。
現在ではVer5.0がでています。
また、Learning版 Professional版 Enterprise版があります。
Ver4.0についての定価は以下の通りです。(Ver5.0の価格は手元に資料がないのでわかりません)
| 一般 | アカデミック | |
| Standard版 | 30000 | 12000 |
| Professional版 | 98000 | 40000 |
| Enterprise版 | 128000 | - |
Visual C++ 4.0 5.0は、Windows95,NT用のソフトです。
プログラミング方法が多少難しく、Winsowsの知識が必要なのですが
ほとんどすべてのことができます。(基本的にできないことはありません)
市販のソフトはほとんどこれで作れます。
ソフト会社も普通、これを使います。
また、VBのようにOCX,dllファイルが必要ないので、単独で実行することができます。
(ただし、Pro版以上で可能です。Learning,Standard版は単独で実行できません。)
ちなみに私はProfessional版をアカデミックパックで40000円で買いました。
C++は、C言語をObject指向にしたものです。
C++は、基本的にC言語を受け継いでいます。
C++言語の大きな特徴は関数です。
関数にデータを渡すと関数内の命令が実行され、その結果が帰っていきます。
まるで、tというデータを入力するとf(t)という値が帰ってくる数学の関数に似ています。
ただし、データは、必ず渡す必要はありません。
また、データが帰ってこないようにしてもいいのです。
| データ(1) | → | 関 数 | → | データ(2) |
今の関数や変数をひとまとめにしたのがクラスというものです。
クラスは共通の目的の作用をするものをまとめてあります。
例えば、文字を操作するもの、数学的なもの、描画に関するものなどです。
VCでは、100を越えるクラスがあります。
| 変数 | 変数 | 変数 | 関数 | 関数 |
| クラス | ||||
変数の影響が及ぶ範囲は変数を定義した場所で決まります。
関数で定義したものは関数内でのみ影響します。
だから、関数が終了したらその変数は消滅します。
関数の外で定義すると、どの関数からもアクセスできます。(あまりやらない方がいい)
| 変数 a | 変数 b | 変数 a | 変数 c | 変数 d |
| クラス A | クラス B | |||
上の例ではクラスAの変数aと、クラスBの変数aは同じ名前ですが
別のクラスなので衝突することがありません。(別々の変数として認識される)
しかし、変数dはクラスA,B両方にかかりますので
これと名前が衝突しないようにする必要があります。
C++で重要なのは以上の3つです。
いま、プログラミング言語には大きく2種類あります。
一つがBASICで、もう一つがC++です。
Microsoftからも、VisualBasic5.0やVisualC++5.0が最近発売されました。
(筆者のは両方とも4.0だが・・・)
この二つの違いを以下にまとめてみました。
| 項目 | BASIC | C++ |
| 普及度(家庭) | ○ | △ |
| 普及度(大学) | △ | ◎ |
| 普及度(企業) | × | ◎ |
| プログラミングしやすさ | ○ | × |
| 価格 | SD版で2万 | SD版で2万 |
| 動作速度 | △ コンパイルしても 遅い |
◎ トップクラスのスピードで BASICの10倍のスピードがある。 |
| 細かな動作 | △ PAINT命令やハードウェアに 対する動作ができない |
◎ 市販のソフトができることは 何でもできる |
| 他の言語との類似性 | △ このタイプの言語はあまりない | ◎ Java,Pascal,Parlなどかなり似ている |
| 開発の分業化 | △ 分業するのは困難 | ◎ クラス,関数ごとに作業を分担できる。 |
| 移植性 | △ 困難 | ◎ クラスは販売もされている |
| 大規模なアプリ | △ 変数の管理が大変 | ◎ 変数のスコープが明確で 関数化するとわかりやすい |
このようにC++は専門的なのですが、一度修得すると他の言語もその類似性から
簡単に修得できます。(英語からドイツ語を学ぶように)
大学や企業では、C++のスピード,分担できること,
他に移植できることなどがあり普及しています。
クラスは、MFC(Microsoft Function Class)としてVisualC++には付属しています。
このように、専門的で汎用性のある部分は付属(市販)のクラスに任せてしまえばいいので
重要な部分の開発が集中的に行えます。
| 3.4 | → | 関 数 3.4+5! |
→ | 123.4 |
| 5 | → |
このように、関数の内部はブラックボックスとして考えていいので
開発が楽に行えます。また、関数をつくる必要があっても
Aさんが関数内部の開発、Bさんが関数をブラックボックスとして外側の
開発ができ、作業の分担ができます。
C++はJava,Pascal,Parlなどと似ています。
以下は、「今宵の空」で用いられているJavascriptの例です。
function sin(n) {
n=Math.sin(n/57.2957795130823);
return n;
}
function kakudo(n) {
while (n<0)
n=n+360;
while (n>=360)
n=n-360;
return n;
}
now = new Date();
year = now.getYear()+1900;
mon = now.getMonth()+1;
day = now.getDate();
week = now.getDay();
hour = now.getHours();
min = now.getMinutes();
このように、while構文や関数を使っている点、クラスがある点などC++に似ています。
(但し、Javascriptには、変数の宣言がありません。)
他の言語もC++に驚くほど似ています。
BASICは人間に親しみやすい言語で書かれています。従って、コンピュータの負担は
大きくなります。BASICは「インタプリター」といわれ、人間が書いたコードを
1行ずつ翻訳しては実行・・・というのを繰り返します。
一行ずつやっているので遅くなるのです。BASICに付属の「コンパイラー」は
あらかじめ翻訳しておきます。従って、インタープリターよりは高速になります。
C++は初めから「コンパイラー」を使って機械語をつくります。
しかも「最適化」という処理でCPUに適した機械語をつくるので非常に高速になります。
実はC++はプログラミング言語の中で最も高速な言語といわれています。
なぜならば、言語がコンピュータの処理に近いためです。
以前、(0,0)から(255,255)で囲まれた方形の領域に点を65536点
打つプログラムを書きました。結果は以下の通りです。
| 言語 | 速度(秒) |
| Visual Basic(インタープリタ) | 11 |
| Visual Basic(コンパイル後) | 11 |
| Visual C++ | 0.7 |
CPU:Pentium 166MHz Memory 48MB で測定
このようにC++はBasicの15倍の速度がありました。
このことからもC++の高速性がわかります。
C++のPageに戻る