めるまがきっず「つべこべ言わず組んでみよう(後編)」
////////////////////////////////////////////////////////////////////////////////
//
// ☆ めるまがきっず ☆
//
// 〜とっても「ゲーム的なたつにい」による、まったりメルマガ〜
//
//
// 配信者:
// 早瀬 竜也(たつにい)
//
// 配信日:
// 2008/01/05
//
//
// 第5回 「つべこべ言わず組んでみよう(後編)」
//
今年最初の配信となります〜
あけおめことよろな、早瀬竜也こと「たつにい」です〜
前回に引き続き、初心者の方々を対象にした「つべこべ言わず組んでみよう」後編です。
今回も細かな部分ははしょりはしょりで解説していますが、結構大切なところでもあるの
で解説文が多少長くなってしまってます。
よくわからないことがあったら、気軽に連絡くだされば僕の出来うる限りでわかりやすく
解説文を考え返信しますのでメール下さい〜
でも、あくまでも「とにかく組む」ことに重点を置いていますので、よくわからずとも、
「とにかく組んで」下さい。そして実行してみてください。
自分自身で「トライ&エラー」を繰り返すことにより、人に聞くよりも自分の知識として
体に刻まれることを忘れないで下さい。それでもわからないなら潔く人に聞きましょう。
今回も親切にスクリーンショットをつけて解説していますので活用してください。
僕のサイト「どり〜むきっず」でもメルマガのバックナンバーを公開させてもらっていて
そちらの方では、見やすいようにスクリーンショットをページに埋め込んでいます。
もし宜しければ、僕のサイトに飛んで、初めてのプログラムに挑戦してみてください〜
↓プロジェクト構成がまだの人はコチラへ
http://dreamkids.sakura.ne.jp/article/003.html
↓前編がまだの人はコチラへ
http://dreamkids.sakura.ne.jp/article/004.html
↓どり〜むきっず「このメルマガのバックナンバー」
http://dreamkids.sakura.ne.jp/article/005.html
////////////////////////////////////////////////////////////////////////////////
//
// 「つべこべ言わず組んでみよう(後編)」
//
////////////////////////////////////////
// 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」が偶数だったら偶数だと表示されるようになりました。
条件式を色々変えてみて、色々試してみると良いですよ。
ええっと、つべこべ言わずこれらのプログラムを組めば、簡単な基礎は身に付くと思われ
ます。基礎があればキチンと解説されているサイトや参考書等もすんなり読めると思われ
ますので正しい知識をどんどん吸収できることでしょう。これらのサンプルプログラムで
満足せずに、自分から色々調べていってプログラムの知識を深めていってください〜
如何でしたでしょうか?
ちょっとでも誰かのお役に立てたのならそれだけで嬉しいので、「役に立ったよ!」って
思った方は、もし宜しければメール下さい〜
僕は寂しがりやなので、一通のほんの2〜3行くらいの励ましメールで大喜びします!
それでは、次回も色々と語りますのでヨロシクです〜
メールマガジン「めるまがきっず」
発行責任者:早瀬 竜也(たつにい)
公式サイト:「どり〜むきっず」 http://dreamkids.sakura.ne.jp/
問い合わせ:hakka17@hotmail.com
発行サイト:「まぐまぐ!」 http://www.mag2.com/
登録・削除:http://www.mag2.com/m/0000254884.html
上記の記事は僕が配信しているメールマガジンのバックナンバーです。
配信は不定期ですが、忘れた頃にゲーム制作に関しての有益な情報を
受け取ることにより、ゲーム制作の潜在的意欲が上がるかもしれませんよ?
登録は無料ですので、興味のある方は下記フォームよりどうそ!
過去バックナンバー
|