つべこべ言わず組んでみよう(後編)
2008年01月05日(土)
つべこべ言わず組んでみよう(後編)
前回に引き続き、初心者の方々を対象にした「つべこべ言わず組んでみよう」後編です。
今回も細かな部分ははしょりはしょりで解説していますが、結構大切なところでもあるので解説文が多少長くなってしまってます。
「とにかく組む」ことに重点を置いていますので、もし、よくわからない所があっても「とにかく組んで」下さい。そして実行してみてください。
自分自身で「トライ&エラー」を繰り返すことにより、自分の知識として体に刻まれます。
今回も親切にスクリーンショットをつけて解説していますので活用してください。
あと、突き進んで「とにかくプログラム組んで」いますが、所々で不明な点が出てくると思われます。その場合、Google等で検索してみてください。自分で調べることが、成長する上で非常に大切ですから検索する癖をつけるためにも試してみてください。
それでは、初めてのプログラムに挑戦してみてください〜
↓プロジェクト構成がまだの人はコチラへ
最初の難関! プロジェクト構成(DOS編)
↓前編がまだの人はコチラへ
つべこべ言わず組んでみよう(前編)
7、変数
↓サンプルソース

↓処理結果

イキナリ処理の行数が増えたからといって、驚かないで下さい。よく見ると無駄に沢山ある「プリントエフ」の部分は、変な書き方に変わっているけど全部同じです。だって全部コピペしただけなので〜(苦笑)
そして「メイン関数」の一番最初に「int data = 10;」って書いてますけど、コメントによると「変数dataを宣言し10を代入し初期化」となってます。
変数というのは、よく「箱」にたとえられます。
まず、その箱がどんな形なのか決めて、名前を付けてあげます。上記の変数宣言例では、この形(型)を「int」とし、名前を「data」としています。この名前の部分は半角英数文字なら自由につけられますが、最初の一文字には数字を使えません。
●変数名の大丈夫な例
data
Data(大文字も使用可能)
DATA
DaTa
a(一文字だけでもOK)
a1
a123456789(最初の一文字以外は好きなように数字を使ってOK)
a_1(区切り文字としてアンダーバーを使うこともできる)
●変数名のダメな例
1a(最初の一文字が数字)
a 1(途中に半角スペースが入っている)
a(全角文字は論外)
ちなみにこの「名前の付け方」は変数名に限らず、そのうち出てくる自作関数や構造体、クラス名など、色んな箇所で使うことになりますのでしっかり覚えておくと良いです。
では次に、箱の形である「型」について軽く説明します。プログラムではメモリが足りる限り好きなように箱を作ることができますが、それが大きい箱か小さい箱か、それとも特殊な何かを入れることができる特別な箱なのかを指定する必要があります。
今の段階でよくわからないのなら、とりあえず型を「int」と宣言すれば、整数の箱が出来上がるということだけ覚えていてください。でも、変数はプログラムの基本なので、変数の「型」についても、いずれは必ず覚えてくださいね。
さて、宣言に関して大まかに述べたので、次は「10を代入し初期化」のところについて、軽く解説します。「int data = 10;」と一行で書いていますが、実はこれで二つの処理をしているんです。分解すると「int data;」「data = 10;」となります。「int data;」は先ほどはしょりはしょりで解説した変数の宣言に関してですね。では「data = 10;」が、「10を代入し初期化」ということになります。
ここで勘違いしやすいのは「=」の意味です。
C/C++言語では「=」は「左の変数に右のデータを代入」という意味になります。つまり、「data = 10;」は「dataは10と等しい」ではなく「dataに10を代入」という事なんです。
ようするに「10を代入し初期化」というのは「dataに10という最初の数値を入れる」という、たったそれだけのことです。
今回「プリントエフ」の説明は省略させてもらいます。とりあえずこの「%d」と書いた所に変数「data」の中の数字を表示して、その後の改行コードによって改行します。
もし、自力で調べたい方に対してのヒントはprintfの「f」の意味は「フォーマット」を意味します。「printf フォーマット」等の条件で検索をかけてみてください。
話を戻すと、この最初の「プリントエフ」では「10」と表示されて改行されます。そして次は「5」を代入してますので、「5」と表示して改行します。
その次には変数「data」をそれぞれ「++」「+=」「--」「-=」として、そのつど表示していますが、これらは変数の数値を変える計算式です。それぞれの式の内容はコメントの通りです。これら以外にも計算式は沢山ありますので、必要に応じて調べてください。
こちらは「C言語 演算子」等で検索すれば目当ての情報を見つけられることでしょう。
今まで知らなかった計算式(演算子)を見つけたのなら、このプログラムを書き換えて、その計算式を使い、変数の数値がどのように変化するか、実際に確かめてみてください。情報を何度も読むより、一度でも使ってみて体で覚えてください。
与えられたサンプルプログラムを組んで「ハイ終わり」ではなく、所々を書き換えてみて「この場合はどう動くのだろう」とか「こうしたらこうなるんじゃないか」とか考えて、自分なりのソース実験をしてみてください。
それが本当の意味での自分の知識になりますし、地道な方法ではありますが、繰り返せばプログラムを組む上で大切な「応用力」を身につけることもできます。
8、繰り返しのfor文
↓サンプルソース

↓処理結果

ソースが短くなりました(笑)
その代わり、「for( i = 0; i < 10; i++ )」という、変な式がありますね。コメントによると「10回繰り返す」との事。では、これを「100回繰り返す」に書きかえれますか?
ここまで真面目にやってきたなら余裕でしょう(笑)
「for( i = 0; i < 100; i++ )」にすればいいだけですね。これが「for文」の主な使い方です。変数を使って繰り返すのにとても便利です。
さて、ではこの「for文」を解読してみましょう。
かっこの中に計算式が三つあります。そのうち二つは、皆さんもおそらくわかりますね。「i = 0」「i++」です。
左の「i = 0」は「for文」の一番最初の一回だけ、処理されます。ループ用の変数である「i」に「0」という最初の数値を入れてあげます。
そして右の「i++」は、変数の数値を1増やす「インクリメント」ですね。この処理は「for文」のすぐ後に続いている「」までの処理が終わったら、実行されます。
問題は真ん中の「i < 10」ですね。これは条件式といいます。
左が「前処理」、右が「後処理」、そして真ん中は「ループ条件」となります。このサンプルの条件式は見たまんまで「変数iが10未満だったら」という条件になります。この条件を満たしているなら「」で指定している処理を実行します。
この条件式のチェックは「前処理」もしくは「後処理」が終わるたびに行われます。
このサンプルプログラムの処理の流れを表すと、
・ループ用変数「i」宣言
・「for文、前処理」で「i」に0を代入し初期化
・「for文、ループ条件」チェック(iの数値は0)
・条件を満たしていたので「プリントエフ」を実行
・「for文、後処理」で「i」をインクリメント
・「for文、ループ条件」チェック(iの数値は1)
・条件を満たしていたので「プリントエフ」を実行
・「for文、後処理」で「i」をインクリメント
・「for文、ループ条件」チェック(iの数値は2)
・条件を満たしていたので「プリントエフ」を実行
・「for文、後処理」で「i」をインクリメント
〜中略〜
・「for文、ループ条件」チェック(iの数値は10)
・条件を満たしていないので繰り返し終了
になります。
処理結果を見るとわかると思われますが、変数「i」の数値は0〜9でループされ、10回繰り返されていますね。プログラムにおける数値の開始は「1」ではなく「0」とするように癖をつけておくと良いです。そのうち、この「ゼロの概念」のタイトルで記事を書きますので、今回は「プログラムにおいて0は重要な意味がある」とだけ覚えていてね。
細かい部分はいろいろとはしょっていますが、for文での繰り返しループは色んな場面で使うので、せめて「for( i = 0; i < ?; i++ )」の形(?は繰り返したい回数)だけは覚えておくと後々便利です。
9、インデント
今まであえて触れませんでしたが「メイン関数」の後の「{」や上記のfor文のソースでも「{」の後に続く処理の前にTabが入っています。「メイン関数」の後に続く所には1つ、for文の後に続くところには「メイン関数」のものとあわせて2つ入っています。
このように、読みやすくするため字下げするのをインデントといいます。
これらは別に半角スペースでも構いませんが(勿論全角スペースはダメです)、きちんとつけておくことをオススメします。
↓インデントをつけていないソース

上のソースを見てもらえばわかる通り、インデントをつけていないと読み辛いですよね。わかりやすく読みやすいソースにすることを心がけましょう。
10、条件分岐のif文
↓サンプルソース

↓処理結果

先ほどのループ内に「if( 0 == i%2 )」という変な処理が追加されました。
このなかの「0 == i%2」は「for文」のところで出てきた条件式です。ちなみにこの式を書くと、変数「i」の数値が偶数なら条件を満たしていて、奇数なら条件を満たしていないということになります。
この式の細かな解説はしませんので、どうしてそうなるのか自力で調べてみて下さいね。「%」の演算子の意味を調べて、ちょっと計算してみればわかると思われます〜
この条件分岐により、変数「i」が偶数だったら偶数だと表示されるようになりました。
条件式を色々変えてみて、色々試してみると良いですよ。
ええっと、つべこべ言わずこれらのプログラムを組めば、簡単な基礎は身に付くと思われます。基礎があればキチンと解説されているサイトや参考書等もすんなり読めると思われますので正しい知識をどんどん吸収できることでしょう。
これらのサンプルプログラムで満足せずに、自分から色々調べていってプログラムの知識を深めていってください〜
↓次の記事
プログラマーの財産


















