第4話-プログラム3大道具その1-変数【現役エンジニア解説によるプログラミング入門】

じっくりプログラミングコース

今回はプログラム3大道具の1つ目、「変数」について扱います。プログラミングの最初の一歩なので、しっかり学習していきましょう。

プロジェクトの作成

今回使用するプロジェクトを作成しましょう。2回目なので、念のため丁寧に説明します。次回からは丁寧に説明しませんので、ここでしっかり把握しておくか、前回の記事を見直して復習しておいてください。

Visual Studioを起動したら、新しいプロジェクトの作成をクリックします。

続いて、コンソールアプリケーションを選択します。

続いて、プロジェクトの名前と保存場所を設定します。プロジェクト名は、変数を意味する「variable」にしておきましょう。

最後は特に変更せずに、デフォルトの状態で作成を押してください。

これでプロジェクトの作成が完了します。

変数を使ってみる

新しいプロジェクトが開けたら、早速プログラムを書き換えてみましょう。以下のプログラムを真似して、書き換えてみてください。

using System;

namespace variable
{
    class Program
    {
        static void Main(string[] args)
        {
            string Msg;
            Msg = "Hello World!";
            Console.WriteLine(Msg);
        }
    }
}

static void Main(string[] args)の塊の中を書き換えました。Hello World!の行を消して新しく3行追加しました。実行結果は以下の通りです。

コンソールに「Hello World!」と出ました。

「なんだ、結果は変わらないじゃないか・・・」と思われるかもしれませんが、まずはそこが重要です。プログラムは違いますが、結果が前回のHelloWorldプログラムと同じになっています。

それでは、各行について解説を行います。

変数の使い方

変数宣言

9行目の「string Msg;」。ここで「変数の宣言」と呼ばれることを行っています。

変数というのは、入れ物だと思ってください。9行目で、「Msg」という名前の変数(=入れ物)を用意しました。変数は、この名前で使うという事を宣言してあげなければ使うことが出来ません。

代入

続いて10行目、「Msg = “Hello World!”;」ですが、これはMsgという変数に「Hello World!」という文字を入れますという指示を出しています。

数学に慣れ親しんでいるみなさんにとって、「=」で結ばれた式の左辺と右辺は等しいという意味として捉えてしまうと思いますが、プログラムの世界においてこの書き方をした場合は、右辺のものを左辺の変数に代入するという意味になります。

そのため、この書き方がされている場合、左辺には必ず変数が来ると思ってもらって大丈夫です。

参照

最後に11行目です。「Console.WriteLine(Msg);」ですが、Console.WriteLineは前回確認したので大丈夫ですね?コンソールに()内の文字を表示するという意味でした。

では今回、Msgと入っているので、コンソールに「Msg」と表示されたかというとそうではありません。()の中に変数が指定されている場合は、変数の中に入っている値を参照して、表示するような作りになっています。そのため、変数内に入っている「Hello World!」が表示されました。

なぜそうなのか?という疑問を持つ人がいるかもしれませんが、ここまでの変数の扱い方については、プログラミング言語を作った人がそう決めたから、という理由になります。そのため、これはそういう道具なのだと考えて、頭に入れてください。

データ型について

ではここで、前回から少し気になっている人がいるであろう、「”(ダブルクォーテーション)」を含めた話をしてみましょう。

10行目でMsgという変数に対して右辺に設定されているのは「”Hello World!”」なんだから、「”」も含めて出るべきなのではないか?と思っている人がいあるかもしれません。

ですが、この「”」は文字とは別の意味を持っています。ここで出てくるのがデータ型のお話です。

文字列型(string)

9行目の変数宣言において、Msgの前に「string」という謎の文字が付いていますね。これは、Msgという変数の「データ型」を決めているものになります。stringというのは「文字列」を表していて、このMsgという変数には「文字列」しか入れることが出来ないという意味になります。

現実の世界で箱をイメージすると、基本的にはなんでも詰め込むことができると思いますが、コンピューターの世界における箱(=変数)は、中に入れられるものの形が決まっています。

プログラム上で文字列を表すためには、「”」で挟む必要があります。裏を返せば、コンピューターは「”」で挟まれた部分が文字列なんだな、と認識します。

数値型(int)

文字列型以外に何があるかと言うと、実はたくさんのデータ型が存在しますが、まずは分かりやすい数値型を例に出して説明しましょう。

数値型とは、数値を扱うことのできるデータ型です。数値型の宣言方法は、変数名の前に「int」を付けてあげれば良いです。

数値型と文字列型の違い

それでは、この二つは何が違うのか、確認してみましょう。

int SumInt; //SumIntという名前の数値型変数を宣言
SumInt = 1 + 2;

コンピューターは数値の計算が出来ますので、右辺に1+2という数値が書かれている場合、左辺には3が入ります。そのため、SumIntの中身は「3」になります。

では続いて、同じような書き方を文字列でやってみましょう。

string SumStr; //SumStrという名前の文字列型変数を宣言
SumStr = "1" + "2";

各数値に対して「”」を付けて、文字列型としました。この状態で計算をするとどうなるでしょう。

「1 + 2だから3だろう?」と思ってしまうのが当然なのですが、この場合にプログラムを実行すると、SumStrの中身は「”12″」となります。

これは、文字列型の場合、あくまで「1」や「2」という文字として扱っているため、「1」という文字と「2」という文字をくっつけた「12」という文字になります。

ここで押さえておいて欲しいのは、コンピューターは文字や数値を厳密に扱っているという点です。データ型によって、扱い方が変わるという点にも注目です。

データ型は他にもたくさんある

プログラムの世界には、他にもたくさんのデータ型がありますし、なんだったら自分で新しく作ることも出来ます。(これは、ずっと先でやりますが、classという考え方です。)

各種データ型は、徐々に扱っていこうと思いますが、この講座で出てこないデータ型もたくさんありますので、新しいデータ型を使うときは、自分で調べながら使うのがよいでしょう。

変数の上書き

今回の最後は、変数は上書き出来るということを確認して終わります。以下のプログラムを書いてみましょう。

using System;

namespace variable
{
    class Program
    {
        static void Main(string[] args)
        {
            string Msg;
            Msg = "Hello World!";
            Msg = "こんにちは、世界!";
            Console.WriteLine(Msg);
        }
    }
}

実行結果は以下の通りです。

Hello World!は見る影もなく、こんにちは、世界!だけが表示されました。

これは、変数Msgに一度Hello World!が入るのですが、こんにちは、世界!によって上書きされ、Msgにこんにちは、世界!が入った状態でConsole.WriteLineが呼び出されるので、結果としてこんにちは、世界!が表示されるという事になります。

Console.WriteLineをHello World!の下に書いてあげると、きちんとHello Worldが出てから、こんにちは、世界!が表示されることが確認できますので、試してみてください。

まとめ

今回は、変数について扱ってみました。変数を使わないプログラムを作るのは不可能というほど、変数は重要な要素になりますので、まずはこのページの基本をしっかり押させえておいてください。

この先でも、変数についてはたびたび解説をしていきますので、ゆっくり一緒に勉強していきましょう!

次回は、「条件分岐」について学習します。お楽しみに!

コメント

タイトルとURLをコピーしました