見出し画像

プログラミングを始めてみようという話(第二回:プログラムの動く順番)


とりあえずのサンプル

public class Hello{
    public static void Main(){
        System.Console.WriteLine("No.01");
        System.Console.WriteLine("No.02");
        System.Console.WriteLine("No.03");
    }
}

第一回に書いたpaizaを使ってこのプログラムを動かしてみると

No.01
No.02
No.03

何度動かしてもこうなることから上から順番に処理が動いていることがわかりますね

突然複雑になるサンプル

public class Hello{
    public static void Main(){
        System.Console.WriteLine("No.01");
        System.Console.WriteLine("No.02");
        No03();
    }
    
    public static void No03(){
        System.Console.WriteLine("No.03");
    }
}

一つのクラスの中に二つの関数があります。
この場合はどう動くんでしょうね?
結論から言うとMain関数は特別なので必ずプログラムの最初に実行されます。
プログラムが複雑になっていくつもクラスや関数ができても最初のクラスのMain関数が最初に実行されます。
逆に言うと変なところにMain関数を作ってしまうとバグの原因になるので関数の名前はよく考えてつけましょう。

もう一度サンプルを見てみましょう

public class Hello{
    public static void Main(){
        System.Console.WriteLine("No.01");
        System.Console.WriteLine("No.02");
        No03();
    }
    
    public static void No03(){
        System.Console.WriteLine("No.03");
    }
}

五行目の「No03();」で2つ目の関数「No03」を実行しています。
関数から他の関数を実行することでプログラムに繋がりが見えてきました。
だんだん順番を追うのが難しくなってきますね。
しかしこの「No03」という関数名、必ず三番めに実行されるとは限らないのにこの名前、最悪です。
絶対に真似しないでください。

良くない例

public class Hello{
    public static void Main(){
        No03();
        No03();
        No03();
    }
    
    public static void No03(){
        System.Console.WriteLine("No.03");
    }
}

はいもうだめ。

No.03
No.03
No.03

一番目に実行しても三番目に実行しても同じではお話になりません。

数を数えてみよう

ついに変数を使う時がやってきました。

変数のサンプル

public class Hello{
    static int count = 0;
    public static void Main(){
        count = count + 1;
        WritenNum(count);
        count = count + 1;
        WritenNum(count);
        count = count + 1;
        WritenNum(count);
    }
    
    public static void WritenNum(int num){
        System.Console.WriteLine("No." + num);
    }
}

順番に見ていきましょう。

static int count = 0;

ここで変数を定義しています。
変数は使う前にかならず定義する必要があります。
staticは置いておいて変数の定義について見ていきましょう。
変数の定義には”型””名前”が必ず必要です。
今回の例で言うと”int”が型、”count”が名前です。
型とはその変数がどんなデータかを表しています。
今回使用したintは数値を意味します。
数値の他に文字列やクラスそのものを変数として持つことができます。
次に名前ですが他とかぶらないこと、誰が見ても意味がわかることを意識してつけると良いです。

文字が多くて面白くないですね。

変数へ代入

次に変数へ値を持たせてみましょう。

static int count = 0;
count = count + 1;

この二つの行はどちらも変数への代入を意味しています。
変数名 = 値
この書き方によって変数名に値を代入することができます。
では二つ目の方を見てみましょう。
count = count + 1
一見複雑そうに見えますが中身は単純です。
まずcountと1を足します。
その結果をcountに代入します。

つまりcountが0のときは

count = 0 + 1;

と同じ、つまり1が代入されます。

なんでそんな回りくどいことを?
それは2回目以降を見ていくことで明らかになります。

public class Hello{
    static int count = 0; //最初は0を代入
    public static void Main(){
        count = count + 1; //0+1つまり1
        WritenNum(count);
        count = count + 1; //1+1つまり2
        WritenNum(count);
        count = count + 1; //2+1つまり3
        WritenNum(count);
    }
    
    public static void WritenNum(int num){
        System.Console.WriteLine("No." + num);
    }
}

countの値がだんだん増えているのがわかりますね。
このように足し算ができるのはcountが数値型であると定義されているからです。
もう一つある+記号に注目しましょう。

System.Console.WriteLine("No." + num);

「"No." + num」これは文字列「"No."」と数値「num」を足そうとしています。
りんご+5みたいなことになっていますね。
これでは計算できません。
実は文字列に+の記号を使うと足し算ではなく文字列の結合になります。
プログラムの世界ではりんご+5は「りんご5」となってしまうんです。
このように変数を扱うとき、その方に注目する必要があるんです。

まとめ

  1. クラス名、関数名、変数名は考えてつける!

  2. 変数は”型”と”名前”を定義して使う

  3. 変数に代入するときは「変数名 = 値」

だんだん複雑になって来ました。ついてきてますか?


この記事が気に入ったらサポートをしてみませんか?