【プログラミングのススメ】C#でめくるめくプログラミングの世界に飛び込もう!「配列・反復処理」がキモ!
>> 関連記事 :【プログラミングのススメ】C#でめくるめくプログラミングの世界に飛び込もう!条件分岐「if」を使いこなせると一気にC#が楽しくなる!
配列は数字などの集合を表現するもの
配列とは1つの変数に複数のデータが連続して並んでいる形式です。例えば3日間の食費の合計を計算するプログラムを書きたいとします。
・1日目…3000円
・2日目…4000円
・3日目…4000円
配列を使わずに普通の変数で表現すると以下のようになります。
>>
int first_day = 3000 //1日目
int second_day = 4000 //2日目
int third_day = 4000 //3日目
int sum //合計金額を計算して格納する変数
sum = first_day + second_day + third_day //sumに合計金額である11000が格納される
<<
1日分ごとに変数を作っているのがわかると思います。3日程度であればこれでも特に問題はありませんが、1ヶ月分となるとプログラムが冗長になってしまい大変です。そこで配列を使うと効率的にプログラミングすることができます。
>>
//expense_arrayという変数に配列を格納している
int[] expense_array = new int[] { 3000 , 4000 , 3000 };
<<
ここでは「expense_array」という名前の配列変数を作成しています。右辺の「 { 3000 , 4000 , 3000 } 」に1日目〜3日目の食費をそれぞれ格納しています。配列を使うことで変数を大量に作る必要がなくなり、次の章で解説するforeachなどの反復処理構文で効率的に処理することができて便利です。
処理を繰り返す反復処理
● 同じことを繰り返したいなら反復処理を使いこなそう
同じことを何度も繰り返す時は「反復処理」を使いましょう。例えば数字が格納されている変数を、3回に渡って乗算し続けるプログラムを書きたいとします。
>>
//変数aを乗算し続けるプログラム
int a = 2 ; //初期値は2
a = a*a ; //1度目の乗算 a=4になる
a = a*a ; //2度目の乗算 a=16になる
a = a*a ; //3度目の乗算 a=256になる
<<
このような書き方は可能な限り避けるべきです。この処理はまだ3回しか繰り返していないので手打ちでも問題はありませんが、10回20回と繰り返してしまえば悲惨なプログラムとなってしまうでしょう。
● for:反復処理の基礎
先ほどの悪い例をforという反復処理構文を使って書き直すと以下のようになります。
>>
//変数aを乗算し続けるプログラム
int a = 2 ; //初期値は2
//これがfor構文
for (int i = 0 ; i < 3 ; i++) {
//ここから繰り返す
a = a*a ; //繰り返し乗算する
//ここまで繰り返し
}
System.Console.WriteLine(a); //変数aの中身をコンソールに表示(256が表示される)
<<
「ここから繰り返す」〜「ここまで繰り返す」の間のプログラムを、所定の回数だけ繰り返しています。繰り返す回数は「i < 3」のところで指定しています。3を5に変更すれば5回繰り返すプログラムとなります。
もう少し詳しくfor構文の作り方を見ていきましょう。
>>
for (変数初期化式 ; ここで記述する条件を満たす間繰り返す ; 変数の変化式) {
ここが繰り返される
}
<<
変数初期化式:int i = 0
繰り返す処理を制御するための変数iを0に初期化しています。
ここで記述する条件を満たす間繰り返す:i < 3
iが3未満の時に繰り返し続けるという意味です。
変数の変化式:i++
繰り返し処理を終えたらiに1をプラスします。
●foreach:配列内の要素を繰り返す
配列の中身を繰り返す場合はforeachを使うと便利です。先ほど作った食費を格納した「配列」にもう一度ご登場願いましょう。sumという変数に、3日分の食費合計を計算して格納します。
>>
//3日間の食費配列
int[] expense_array = new int[] { 3000 , 4000 , 3000 };
int sum //合計金額を計算して格納する変数
foreach(int i in expense_array) {
//ここでexpense_arrayから取り出した数字を一時的にiに格納している
sum = sum + i //sumにそれぞれの日の食費を足していく
}
System.Console.WriteLine(sum); //食費合計を表示 11000が表示される
<<
●while:条件を満たす間ずっと繰り返す
whileは条件式を満たす間ずっと同じ処理を繰り返す反復処理構文です。
>>
while (条件式) {
//この間を繰り返し
}
<<
条件式には前の記事で学んだ以下のような式が入ります。
a == 3
a > 3
さらにC#の理解を深めるために必要な「関数」「クラス」「オブジェクト指向」とは?
これまで学んだことで簡単なC#プログラムは書けるようになったと思います。ここからさらに本格的にプログラムを書いていく際に、必ずぶつかる壁が「関数」や「クラス」です。より効率的なプログラムが書けるようになる難しい概念ですが、C#では避けて通れない知識でもあります。
もっと平易なプログラミング言語であれば関数・クラスの知識が無くてもある程度のプログラムは組むことができるでしょう。C#がちょっとだけ初心者にとってハードルが高いのは関数やクラスの知識が比較的早い段階で必要になる点です。
また、ある程度C#を書けるようになったら「オブジェクト指向」にも挑戦してみましょう。オブジェクト指向は現代的なプログラミングには必須の技術で、大規模かつ複雑なシステムを効率よく構築できる魔法の技術です。
その分、習得はかなり難し目。職業プログラマーの中でもオブジェクト指向をしっかりと理解できていない人が多くいるほどです。オブジェクト指向までマスターできれば、もう初心者を通り越して初級者〜中級者の領域にたどり着けるでしょう。
>> 関連記事 :もはや知っておかないとまずい?必修化に向けて難しいと思っていたプログラミングを楽しく学ぶ!
C#を習得した未来の自分を想像しながら、毎日少しずつC#に触れていこう!
以上C#の初心者向け連載でした。プログラミング自体が全く初めての人にとってC#は難しく感じるかもしれませんが、毎日少しずつ書いていれば確実にプログラミングは上達します。C#を覚えるとデスクトップアプリ、スマホアプリ、ゲームプログラムなど幅広いものが作れるようになり、あなたのやりたいことや創造力を形にできるでしょう。
1日1歩、3日で3歩。たまには壁にぶつかり、後ろに下がることもあるかもしれません。でも気づいた時には自分でも驚くほど上達しているのが、プログラミングの面白いところです。プログラミングの習得でもっとも重要なのは自分の手を動かすこと。C#の解説記事や本を読むことも大事ですが、実際に自分でプログラムを書き続けることが1番重要です。さあ1年後、バリバリにC#を使いこなしている自分を想像しながらコツコツと勉強していきましょう!