プログラムを作るための基本要素のうち,「変数」と「型」の考え方,そして複雑な流れのプログラムを記述するための「制御文」について解説します。

 Part1ではVisual C# 2005 Express Edition(以下,VC# 2005)の基本的な使い方を紹介しました。作成したプログラムは,実行するとすぐに“Hello World”というメッセージを表示して終了する,あるいはボタンをクリックすると“Hello World”というメッセージボックスを表示するという単純なものでした。

 実際のC#プログラミングでは,前回のサンプルのように実質1行で終わってしまうような簡単なプログラムを作ることはまれです。そこで,より複雑なプログラムを書く方法を紹介していきます。今回は,プログラムを作るための基本要素のうち,「変数」と「型」の考え方,そして複雑な流れのプログラムを記述するための「制御文」について解説します。

目的達成までを完結した手順に分解する

 皆さんの中には,プログラムを書こうとしてパソコンに向かってみるものの,VC# 2005を起動してコード・エディタを前にすると,途端に「何をどうやって書けばいいのか」がわからなくなるという人がいるのではないでしょうか。プログラミングの勉強を始めたばかりの人が「プログラミングなんて嫌いだ」と感じる原因の一つは,プログラムで「したいこと, させたいこと」はわかっているけれども,途中の具体的な手順がイメージできず,そのために思い通りのプログラムを完成させられないことにあります。

 コンピュータに仕事をさせるためには,目的達成までの手順をすべて「なにを」+「どうする」のような簡潔な指令に切り分けて一つひとつ記述しなければなりません。まずはそのイメージをつかんでください。

 身近な例で,「ペットボトルのお茶を飲む」という動作をプログラムとして書くにはどうすればよいかを考えてみましょう。まず,「お茶を飲む」動作を細かな手順に分解してみます。最初に,食器棚からコップを取り出しますね。次に冷蔵庫からペットボトルを取り出し,取り出したコップにお茶を注ぎます。注ぎ終わればペットボトルを冷蔵庫に戻します。そしてコップを取り上げてお茶を飲みます(図1)。

図1●目的を達成するために必要な動作を簡潔な指令に分解する
図1●目的を達成するために必要な動作を簡潔な指令に分解する

 「お茶を飲む」という最終目的に到達する以前に4個のステップが必要になることがわかります。実際にお茶を飲むときには何気なく済ませてしまう動作かもしれませんが,プログラムにするときにはこれらのステップもきっちり書かなければなりません。

 図1の五つの手順をよく見ると,それぞれ目的となるものとそれに対する操作があることがわかります。例えば手順1は「食器棚」から「コップ」を「取り出す」ですね。手順2~5も同様に「~から,~へ」「~を」「~ する」という形になっています。C#のプログラムを書くために必要な「実行手順を具体化する」という作業も,このように何らかの目的物に対して何らかの操作をするという形が基本です。

 コンピュータの中には冷蔵庫やコップはありませんが,何かをしまっておく仕組みや,それを小分けにして取り出したりする仕組みは用意されています。それらの仕組みをうまく組み合わせることがプログラミングにほかなりません。今回解説する変数,型,制御文は,そういった仕組みを組み合わせるためのもっとも基本的な要素です。

プログラム内でデータを保存する「変数」

 これから皆さんが作るプログラムの多くは,「入力」「処理」「出力」の三つの仕事をすることになります。前回作ったHelloWorldプログラムには“Hello World” というメッセージを表示するという「出力」が含まれています。これに「入力」を付け加えると,例えば「指定された任意のメッセージを表示するプログラム」を作れます。さらに「処理」を付け加えれば,「指定されたメッセージを2回続けて表示するプログラム」や「指定されたメッセージからメール・アドレスだけを抜き出して表示するプログラム」などになります。

 このとき必要になるのが,入力されたデータを「処理」に引き渡したり,処理済みのデータを「出力」に引き渡すためにデータを保存しておく入れ物です。この入れ物のことをプログラミング用語で「変数」と呼びます。入力機能を持つプログラムではどのようなデータが入力されるかをあらかじめ知ることはできないので,処理や出力を「そのときの変数の中身」に対して行うようにプログラムを書いておき,入力されたデータをその変数に入れて引き渡すわけです。

 変数はプログラムの中で「こういう名前の変数を使いますよ」と宣言することで,好きな名前を付けたものを何個でも使うことができます。変数を宣言する際には,その変数が整数や文字列など,どのような性質のデータを入れるための変数かを併せて指定する必要があります。このようなデータの性質のことを「型」または「データ型」と言います。

 C#言語の型には大きく分けて,組み込み型とユーザー定義型の2種類があります。組み込み型はC#言語があらかじめ用意している型で,表1に示すものが用意されています。ユーザー定義型は,プログラムの中で定義することで使えるようになる型です。プログラマ自身が作ることもできますし,すでに他の人が作った型をプログラムに取り込んで利用することもできます。

表1●C#の組み込み型一覧。同じ整数でも格納できる範囲が異なる複数の型がある。表のうちobject型とstring型は「参照型」と呼ばれ,メモリー上での記憶処理の方法がそれ以外の「値型」とは異なる
表1●C#の組み込み型一覧。同じ整数でも格納できる範囲が異なる複数の型がある。表のうちobject型とstring型は「参照型」と呼ばれ,メモリー上での記憶処理の方法がそれ以外の「値型」とは異なる

 ユーザー定義型の利用法は次回以降で取り上げますので, 今回は組み込み型で説明します。ただ,ユーザー定義型も定義さえ済んでしまえば変数の宣言方法など基本的な使い方は組み込み型と同じです。