【C#入門】第5回 変数について【じゃんけんゲームを作ろう その5】

2023年2月7日

こんにちは、ノムノムです。

前回は、代入を勉強しました。

【C#入門】第4回 ここまでのおさらいと値の設定について【じゃんけんゲームを作ろう その4】
【C#入門】第4回 ここまでのおさらいと値の設定について【じゃんけんゲームを作ろう その4】
こんにちは。ノムノムです。 前回はイベントをやりました。イベント単位で処理を書くことができるのでソースコードが…
http://nomux2.net/substitution/

今回は変数です。

変数は値を使いまわしたり、パラメータとして他の関数へ渡したり、変数の中身を加工したりいろんなことができます。

変数

変数とは数値や文字、オブジェクトなどを仕舞っておく入れ物です。

変数について

C#での変数の書き方を説明します。

変数宣言

変数を使うには「この行から変数を使いますよ」と宣言しなければいけません。
宣言は以下のように書きます。

変数の型 変数の名前;

これだけです。


int a;
string b;

変数の型とは

型とはその変数が何をしまっておけるかを定義するものです。代表的なものを以下にあげます。

string文字列型です。文字列を入れておくことができます。
int整数型です。 -2,147,483,648 ~ 2,147,483,647 の整数を入れておくことができます。
long整数型です。 -9,223,372,036,854,775,808 から 9,223,372,036,854,775,807 の整数を入れておくことができます。
double浮動小数点型です。 ±5.0 × 10−324 – ±1.7 × 10308 の小数点付きの数値を入れておくことができます。
float 浮動小数点型です。 ±1.5 x 10−45 から ±3.4 x 1038 の小数点付きの数値を入れておくことができます。
boolブール値 (true と false) を入れておくことができます。

初期値を入れておくこともできる

変数は、宣言時にあらかじめ初期値を入れておくことができます。

変数の型 変数の名前 = 初期値;

例:

string a = "";
int b = 10;

こうしておくことで明示的にこの変数にはこの値が入っていると宣言できます。
つまり、変数の中身をはっきり示すことができるということです。

スコープ範囲

スコープ範囲とは宣言した変数が有効である範囲をしめします。

つまり、宣言した変数がどの場所で利用できるのかを示します。

例えば


public partial class Form1 : Form
{

    int a = 0;

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        int b = 1;

        a = 10;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        int b;
        int c = 2;
        
        c = a;
    }
}

となっていたとします。
この場合、変数aはどのイベントの中でも利用できます。そして変数cはbutton1_Clickの中だけでした使えません。変数bに関しては注意です。Form1_Loadとbutton1_Click両方で宣言していますが、スコープ範囲が別々なので名前が一緒なだけの別々な変数です。

つまり、Form1_Loadで値を変数bに入れてもその値は、button1_Clickの変数bには入っていないということです。
しかし、変数aに関してスコープ範囲が全体になっているので、変数cに代入する変数aにはForm1_Loadで代入した値が入っているということになります。

さっそく使ってみましょう

さてじゃんけんをするには相手には何かしらの手を出してもらわなければいけません。
それには乱数を発生させて、ランダムにじゃんけんの手を出してもらいたいので、まずは乱数用のクラスの変数を宣言します。


System.Random r = new System.Random();

クラスについてはこの後の記事で詳しく説明しますが、いろんな機能を内包したものと思っていただければいいです。クラスの場合はインスタンス(実体)を作成しなければいけません。

そうですね、例えば冷蔵庫にします。インスタンスがないというのは、設計図を書いて冷蔵庫がないみたいな感じですね。これだと冷蔵庫を使えないので作成して使えるようにします。

それがnewです。これはSystemのRandomクラスを変数rに新しく(new)生成しますという意味です。

それでは、さっそくプログラㇺに追加してみましょう。


public partial class Form1 : Form
{

    System.Random r = new System.Random();

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        //初期化処理
        this.picCPU.Image = null;
        this.picYou.Image = null;
        this.lblResult.Text = "";
    }

    private void btnEnd_Click(object sender, EventArgs e)
    {
        this.Close();
    }

    private void btnGoo_Click(object sender, EventArgs e)
    {

    }

    private void btnChoki_Click(object sender, EventArgs e)
    {

    }

    private void btnPar_Click(object sender, EventArgs e)
    {

    }

}

ここに宣言することでスコープ範囲は全体にかかります。

この場合、このForm1クラスの中だけで有効になります。これをモジュール変数といいます。

まとめ

変数まで来ましたね。変数が使いこなせるとプログラムを自分色に表現することに使えます。よく言えば自分好みのプログラミングができる悪く言えば汚いソースは誰もみたがらないですね。

例えば、ミカンの数を格納しておく変数に

int apple = 0;

という風になっているとリンゴなのかミカンなのかどっちだ?ってなります。

int a = 0;

これだと変数aってなんだ?ってなります。なので

int orange = 0;

という風に変数名意味を持たせることで可読性が向上します。

【C#入門】第6回 条件文について【じゃんけんゲームを作ろう その6】
【C#入門】第6回 条件文について【じゃんけんゲームを作ろう その6】
こんにちは。ノムノムです。 前回は変数をやりました。 今回は、条件文です。条件文は分岐や繰り返しといった処理に…
http://nomux2.net/branching/