基本型、変数

 

プログラミングをしていると、数字や文字などを一時的に保存しておきたい場合があります。変数を使うと保存できます。

ここからは、新しいプロジェクトを作ります。helloを作った時を思い出して、名前がvariable1という空のプロジェクトを作り、main.cppを新規作成で追加して、以下のプログラムをmain.cppに記述してください。

以降、新しいプログラムを記述したら、ビルドと実行して結果を必ず確認してください。

新しいプログラムのプロジェクト名はmain.cppに記述するプログラムの先頭にコメントとして示されます。

//プロジェクト名: variable1
#include<stdio.h>
//メイン関数
//実行は必ずここから始まる。

int main()
{
    int a; //整数型の変数aを使うことを宣言する。
       
a = 1; //変数aに1を代入。
       
printf("%d", a);

    getc(stdin);//Enterキーが押されるまで待つ

    return 0;//処理の終わり
}

 

上の例のように変数を使うときは、必ず宣言を行ないます。宣言とは、上の例では、

int a;

のことで、aが整数を入れるための変数であることを指定しています。intはinteger(整数)の略で整数が入る変数であることを指定しています。

宣言無しでいきなりa=1と書くとコンパイルエラーになります。他のプログラミング言語に慣れている人は注意してください。(C、C++では、関数も使う前に宣言又は定義されている必要があります。詳しくはここを参照してください。 )

printf("%d", a);は変数aの内容を表示するときのprintfの使い方の例です。%dが変数の内容を表示する場所になっています。

printf("a = %d", a);のようにも書くことが出来ます。試してみましょう。

変数の内容を複数個同時に表示したいときは、

printf("a = %d, b = %d", a, b);のように書きます。(色で、各変数 とその表示される場所の対応を表しています。)

 

 次のプログラムは、また新しいプロジェクトで作ってください。そろそろ慣れてきたでしょうか?

//プロジェクト名: adder1
#include<stdio.h>
//足し算用の関数を定義

int add(int x, int y)
{
    int z;//変数の宣言
        z = x + y;//x+yの結果をzに入れる。
        return z;//zの内容を返す。
}

//メイン関数
//実行は必ずここから始まる。

int main()
{
    int a = add(1,2); //1+2の計算
       
printf("%d", a);

    getc(stdin);//Enterキーが押されるまで待つ

    return 0;//処理の終わり
}

 

上の例では、計算を関数にしたものです。

 

色々な型

型(type)とは、変数に何が入るかを指定するものです。また、型は、関数の引数や返り値がどのようなものかも指定します。

C++では、型に厳格な言語なので、使う前に必ず型を指定します。BASICなどは、逆に型に対して柔軟なので明示的に指定しなくても変数がいきなり使えたりします。どちらにも一長一短がありますが、高速で、大規模なシステムの開発には型に厳密なもののほうが良いようです。

上の例では

int a;

は変数aが整数の入る変数であることを意味していました。

型には色々なものがあります。

int 整数

double 実数

char 一文字

void どの型でもない

などです。voidは他の型とは少し違っていて、使い方によって意味が変わります。例えば通常の変数にvoid型は使えません。前出の

void print()
{

省略

}

では、関数printが値を返さない関数であることを示します。

ところで、型が異なるとprintfでの表示の仕方も変わります。

//プロジェクト名: variable2
#include<stdio.h>
//メイン関数
//実行は必ずここから始まる。

int main()
{
    double a; //実数型の変数aを使うことを宣言する。
       
a = 1.1; //変数aに1.1を代入。
       
printf("%f", a);

    getc(stdin);//Enterキーが押されるまで待つ

    return 0;//処理の終わり
}

実数型では、printfで%dの換わりに%fを使います。dはdecimal, fはfloating-point number(浮動点少数)の頭文字です。

実数と整数を混在して計算するときは注意が必要です。以下の例を見てください。

//プロジェクト名: variable3
#include<stdio.h>
//メイン関数
//実行は必ずここから始まる。

int main()
{

        int a;    //整数型の変数aを使うことを宣言する。
    double b; //実数型の変数bを使うことを宣言する。
       
a = 1; //変数aに1.1を代入。
       
b = 1.1;
       
printf("a = %d, b = %f", a, b); //%d, %fとa,bの順番に注意

    getc(stdin);//Enterキーが押されるまで待つ

    return 0;//処理の終わり
}

整数と、実数の混在した計算がしたいときがあります。

//プロジェクト名: variable4
#include<stdio.h>
//メイン関数
//実行は必ずここから始まる。

int main()
{

        int a = 1;    //整数型の変数aを使うことを宣言し、1を代入する。
    double b = 1.1; //実数型の変数bを使うことを宣言し、1.1を代入する。

        double c = a + b; //整数と実数の計算。答えは実数として変数cに保存する。
       
int    d = a + b;
//整数と実数の計算。答えは整数として変数dに保存する。

       
printf("c = %f, d = %d", c, d); //%d, %fとc, dの順番に注意

    getc(stdin);//Enterキーが押されるまで待つ

    return 0;//処理の終わり
}

c = 2.100000, d = 2

と表示されます。実数を整数型の変数に代入すると小数点以下が切り捨てられます。

次に文字型を表すcharです。

//プロジェクト名: character1
#include<stdio.h>
//メイン関数
//実行は必ずここから始まる。

int main()
{

        char a = 'E';    //文字型の変数aを使うことを宣言し、文字のEを代入する。
        int b = a;       //整数型の変数bを使うことを宣言し、変数aの内容をbに代入する。



       
printf("a = %c, b = %d", a, b); //char型の変数を表示するときは%c

    getc(stdin);//Enterキーが押されるまで待つ

    return 0;//処理の終わり
}

 

char型の変数に文字を代入するときは、代入する文字を'で文字を囲みます。char型の変数には一文字しか代入できないことに注意してください。詳しくはここを参照してください。

ところで、このプログラムの実行結果の表示は

a = E, b = 69

となるはずです。これは、文字列Eを整数にすると69になるということです。文字にはそれぞれ数字が割り当てられています。それは、以下の対応表のようになっています。この表をasciiコード表といいます。

上のプログラムで

char a = 'E';

char a = 69;

に変えるとどうなるか確かめてください。他の数字や文字も表を見ながら確かめてください。

それでは、この課題を解いてみてください。