C/C++ Laboratory

たぶん,このページに来た人はC言語なんてしらないっ!て人??
この際だからC++を覚えましょ!



−基本編−

1.何だか分からないけど,「クラス」

2.「グローバル」な変数と「ローカル」な変数?

3.「ポインタ」ってなんだ?(準備中)

4.「標準入力」と「標準出力」(準備中)

5.プログラムの基本「フィルタ」(準備中)




前に戻る







1.何だか分からないけど,「クラス」

さて,プログラムを作りましょう.とりあえず「クラス」です.下のリストを見ましょう.


#include <stdio.h>

class TEST {
public:
float Input1, Input2;
float Addition (void);
};

float TEST::Addition (void) {
float Result;
Result = TEST::Input1 + TEST::Input2;
return (Result);
}

void main (void)
{
TEST A;

A.Input1 = 3;
A.Input2 = 4;
printf ("%f\n", A.Addition ());
}

何なのこれ?ってあきらめないでください.このプログラムは2つの値をたして答えを出すというものです.ともかく1行目から説明していきましょう.

#include<stdio.h>というのはどこかの誰かは「おまじない」などといって惑わせているのですが,本来は,この中に用意された関数を使うという宣言をするものです.例えていうなら,これから複雑な計算をするのに使うのに「計算機」という道具が必要だと思ったら,「計算機」の入った「道具箱」を持ってくるようなものです.もちろんこの道具箱には「計算機」以外のものも入っています.だから,stdio.hの中にはいろいろな関数が納められているのです.

ここから,本当の「クラス」の話.3行目でclassと定義されているのが「クラス」です.classの文法は,class クラスの名前 {……};で……の中に,変数や関数を定義します.この「クラス」の中で定義された変数や関数は特別の宣言なしにお互いに利用できます.ではこのTESTという「クラス」の中身を見ていきます.

最初のpublic:は,このあとに定義された変数・関数をそのまま外から直接利用できるのかを指定します.英語でpublicは「公」という意味ですから,外から直接利用できるという意味になります.float Input1, Input2;は,入力に2つの変数を「実数型」で用意するというものです.その次のfloat Addition (void);はあとで説明しますが,2つの入力を加算して答えを返す関数です.その関数をここで定義しています.これでTESTクラスは,2つの入力用変数とそれらを加算する関数からなるということが定義されました.

今度は先ほどのAdditionという関数の性格付け(?)です.まず,関数ですから引数を持たなくてはいけませんが,「クラス」の中で宣言したInput1Input2を利用するので引数は必要ありません.そのときは(void)としてあげましょう.返す値はこの2つの変数の足し算ですからもちろん実数型.で,TESTクラスに所属している関数ですから,float TEST::Addition (void){……};という形で宣言されます.この関数の中身は,float Result;で足し算の結果用の変数を用意し,Result = TEST::Input1 + TEST::Input2;で足し算の結果を代入し,Return (Result);でこの関数の結果としてResultの内容を返します.

ここまでがTESTクラスの宣言になります.でも,これではプログラムが動きません.例を示せば,「クラス」は「2つの数を足して答えを出せる人が居ます」という宣言にしかなりません.この人に「計算をさせる」という動作が無ければ,プログラムではないのです.この動作をさせているのがint main (void) {……};の部分です.

TEST A;で,TESTクラスの性格を持った名前がAというものを用意しています.先ほどの例でいえば「2つの数を足して答えを出せるAという名前の人を用意します」ということになりますね.つぎにA.Input1 = 3;A.Input2 = 4;で入力として3と4を代入することになります.言い換えれば「Aさんに足してもらう数を3と4にした」というところでしょうか?

printf ();というのは画面に何かを表示しなさい!という関数です.これは最初にいった,stdio.hに用意されている関数です.この関数を使うためにstdio.hを用意していたわけです.ではこのprintfの()の中身について.実際にはこの""の中にかかれた内容を表示するのですが,変な文字が並んでいます.%fというのはこのあとに続く実数の数の内容をここに当てはめて表示しなさいということになります.printf ("%f", 3.0);とすれば3.0と表示されます.それじゃあ,printf ("3.0")とやってもいいじゃないか?ということになりますが,3.0の部分が変数や関数の返り値だった場合はどうしますか?そのために前者のような書き方をするのです.\nというのは改行を表します.要するに,%fのところで数値が表示されたら改行をしなさいということになります.この%fのところに入る数は,Input1Input2の足し算の結果ですので,先ほどのAddition()を使うわけですが,Aさんに足し算させる(?)ので,A.Addition ()ということになります.これでプログラムの動作が決まりました.

正しく実行できたら,入力の値を変えたりして,他の動作を確認してみてください.


トップへ



2.「グローバル」な変数と「ローカル」な変数?

「グローバル」な変数と「ローカル」な変数について説明していきましょう.下のリストを見てください


#include <stdio.h>

int Ga;

void main (void)
{
int La;

Ga = 3;
La = 4;
printf ("%d %d\n", Ga, La);
}

1行目から説明していきます.

#include<stdio.h>というのはどこかの誰かは「おまじない」などといって惑わせているのですが,本来は,この中に用意された関数を使うという宣言をするものです.例えていうなら,これから複雑な計算をするのに使うのに「計算機」という道具が必要だと思ったら,「計算機」の入った「道具箱」を持ってくるようなものです.もちろんこの道具箱には「計算機」以外のものも入っています.だから,stdio.hの中にはいろいろな関数が納められているのです.ここでは11行目のprintfを使うために必要となります.

3行目でint Ga;と定義されているのが「グローバルな変数」です.この変数はmain関数の外側でint(単精度整数)として定義されています.ここで定義されると以降main関数も含めてすべての関数の中でGaの値を参照することができるようになります.従って,9行目のGa = 3;というようにmain関数の中で定義されていなくても,値を代入することもできます.

4行目でint La;と定義されているのが「ローカルな変数」です.この変数はmain関数の中で定義されています.ここで定義された関数はこのmain関数内のみで参照することしかできません.


トップへ