プロフィール

たつにい
C/C++言語によるゲームプログラムの知識を持つ、駆け出しインフォプレナー。「同人ゲームが完成しない17の理由」を公開中!

<< 2008年04月 >>

1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

相互リンク

みんなでつなごう相互リンクの輪
相互リンク募集 アクセスアップ SEO対策
おすすめサイト、リンク集40
catvチューナー
広島市 不動産
トゥルースリーパー,激安,プレミアム,口コミ
アロマガーデン,アクアラビュー
激安PC通販ドットコム(激P)
ファッション通販GLAMOR
イラストレーション
ETCカード
オフセット印刷,パンフレット印刷
FX 手数料
激安 パソコン
借り換え
懸賞、アフィリエイト等は「内職でお小遣い稼ぎ[達人]」で!
モビット
群馬県 猿ヶ京温泉の宿 旅籠屋丸一
猿ヶ京温泉の宿 知っ得ブログ
スキャニング 電子化 文書 書類 東海 サービス
保険ナビ,生命保険,自動車保険
八木歯科クリニック
カード現金化 お助けマン参上
DCキャッシュワン
リッチ,グレースコンチネンタル通販セレクトショップDIVA
住宅ローン借り換えの基礎知識
      派遣会社ランキング
アダルトチルドレン
即日融資ベスト5
無利息キャッシング
銀行系キャッシング
信販系キャッシング
無利息ローン
Wonderful Life〜心と身体にビタミン〜
情報商材NET
gyao,youtube,動画,録画,保存
夢小路のかわら版
稼げる定番無料レポート1日3分レポランド
仙台情報
Wedding R
自宅でできる仕事FX
ギャラリー”夢”
在宅 片手間 そんなんあり?
みんなぁ〜集まれぇ〜
ガンバレ!!産後ダイエット
空想の街・ごるシティ
ブルガリプールオム香水専門店
ポスレジ(posレジ)のことならイーコム
女性の転職情報サイト
ダイエット研究所
クレジットカード総合案内所
快楽空間ストア
コスメ サプリ
いしくらスイミングクラブ
情報商材レビュー
ライフストーリー働く兼業主婦
hapiの儲かるネット情報
ネットバンのドロップショップ
クレジットカード比較COM
ちりとてちんNHK朝ドラ
癒しのひととき
黒ずみ、くすみ、くちゃ石鹸
葵Ranking
衝撃をうけた斬新なビジネスモデル
外溝・リフォームのサトウ土木
ナンバーズ3 予想 ナンバーズ当選
はっぴ〜♪節約学園
中学生チャット
完全無欠
【携帯専用】トラフィック
無料素材の【プリズム】
とにかく速攻で稼ぐ方法
アフィリエイトでRoad to 裕福
熊本金魚店
【情報商材 徹底検証】
男の生活雑貨ショップ
自閉症の心模様
子供服のバランセアル
健康生活倶楽部のもろみ黒酢ゴールド
無料お試しでも『報酬』はあなたのもの
baseball team wild wolf
ブランドバッグや財布をゲット
株式会社栄光サービス
うれすじ.COMダイエットビューティー館
うまんちゅTENNISNET
らいぶねっと
欲しいモノ
名古屋の結婚式場紹介


利用してます

似顔絵イラストメーカー

プログラマーの財産

2008年01月25日(金)
プログラマーの財産


 実は僕、記憶力にあまり自信がありません。

 小学生の頃の漢字テストは、いつも目も当てられないような点数だったし、中学、高校の頃は英語の単語が覚えられず、毎回毎回テストで苦労していました。

 つまるところ、テスト前に一夜漬けで一時的に暗記し、学生時代を乗り切ってきました。
 そしてテストが終わると、せっかく覚えた漢字や単語を忘れて、普段の僕に戻るんです。

 そんな僕でもプログラムは大得意です。
 何故なら、プログラムはカンニングOKだからです!

 僕は英語の単語を覚えるのは大の苦手ですが、僕が組むプログラムのソースでは殆どスペルミスがありません。何故なら英単語をカンニングしながら組んでいるからです(笑)

 正しい言い方をすると、変数や関数の名前を決めるときには、いつもインターネット等で、英単語を調べながら決めているんです。

 パソコンのハードディスクの容量に限界があるように、人の記憶力にも限界があります。
 更に言うと、人の記憶というのは非常にいい加減なものです。

 紙やパソコンのテキストファイルにメモった内容は、書き換えなければ変わりません。
 でも、人の頭の中にメモった内容は、勝手に書き換わったり、消えてしまったりします。
 それが複雑だったり記憶内容が多かったりするなら尚更です。

 この世の中に無数にある漢字や英単語を、全て完璧に暗記できるのは、一部の天才とコンピュータのみです。

 それと同じで、プログラミングも関数やライブラリが無数にあります。

 例えばC/C++だと「MSDNライブラリ」を見たり「DirectX」等のヘルプを読んだりすれば、どれだけ多くの機能があるのか身に染みてわかると思われます。

 でも、別にそれらの機能を全て覚える必要はありません。

 必要な機能を使いたい時に、それらのヘルプを開いて使い方を確認して組めばOKです。
 ……まぁ、言語のヘルプを読むのも結構、知識が必要ではあるのですけどね(苦笑)

 プログラミング初心者に言うべきアドバイスがあります。

 それは「プログラムを組むときは参考資料を見ながら組むべし!」です〜

 学校のテストじゃないんだから、カンニングしても減点対象にはなりません。
 それどころか、キチンと資料を調べながら組むことにより、初心者でもそれなりのクオリティのプログラムを組み上げることが出来るでしょう。

 さて、前置きはここまでにしておいて、本題に入ります。

 記憶力に自信のない僕ですが、僕は「一度でも組んだことのあるプログラム」なら、すぐに思い出してもう一度くみ上げたり、高速化してくみ上げたりすることが可能です。

 何故だと思います? ヒントはこれまでの前置きに含まれていますよ!
 ちょっと考えてみてくださいね。

……………………

……………………

…………

…………

……

……

 では、答えを言いますね。

 僕は今まで組んできたプログラムのソースファイルを、全部とっておいてあるからです。
 そして、それらのソースファイルが僕にとってカンニングペーパーとなり、一度でも組んだことがあれば、余裕で再度、そのプログラムを組めるというわけです。

 ただし、それには「キチンとコメントを付けて組んでいる」条件があります。

 人の記憶はいい加減ではありますが不思議なもので、どうしても思い出せなかったことが、ふとしたキッカケで鮮明に思い出せたりするんです。

 プログラミングに関しても、一度でも頭をひねって考え、コンパイルして実際に動かしてみたアルゴリズムなら、頭の片隅に保存されるんです。

 しかも、キチンとコメントも書いて、しっかりと意味を把握していたのなら、尚更です。

 その頭の中の記憶は、そのソースファイルさえとっておけば、別に忘れても構いません。

 時間がたって、再度そのプログラムを組まなければならない事があったとき、そのソースファイルを見れば、それが引き金でしっかりと思い出せます。

 もし思い出せなくても、そのソースファイルが答えなので、要所要所を書き換えて丸写しでもなんら問題はありません。

 自分が組み上げたプログラムのソースファイルなら、どこにどんなアルゴリズムを書いたのか、なんとなく覚えているはずです。

 自分が組んだプログラムのソースファイルから掘り起こすのは、他人が組んだソースファイルから掘り起こすより、何倍も楽で簡単です。

 プログラマーは一つのアルゴリズムを組むときにのみ、色んな参考資料とにらめっこしてメモ用紙に構築イメージを書いたり頭の中で複雑な計算をすればいいんです。

 そうして自分のパソコンのハードディスクなりCD-Rなりに、自分でくみ上げたプログラムのソースファイルを蓄積していき、次回で必要になったら掘り起こせばいいんです。

 自分自身で色々なプログラムを組んで、それを蓄積していったプログラマーは、掘り起こせる引き出しが沢山あるため、やたらと仕事が速いです。

 それこそプログラマーの財産といえるでしょう。





つべこべ言わず組んでみよう(後編)

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文 ソース

↓処理結果
繰り返しの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文 ソース

↓処理結果
条件分岐のif文 結果


 先ほどのループ内に「if( 0 == i%2 )」という変な処理が追加されました。

 このなかの「0 == i%2」は「for文」のところで出てきた条件式です。ちなみにこの式を書くと、変数「i」の数値が偶数なら条件を満たしていて、奇数なら条件を満たしていないということになります。

 この式の細かな解説はしませんので、どうしてそうなるのか自力で調べてみて下さいね。「%」の演算子の意味を調べて、ちょっと計算してみればわかると思われます〜

 この条件分岐により、変数「i」が偶数だったら偶数だと表示されるようになりました。

 条件式を色々変えてみて、色々試してみると良いですよ。




 ええっと、つべこべ言わずこれらのプログラムを組めば、簡単な基礎は身に付くと思われます。基礎があればキチンと解説されているサイトや参考書等もすんなり読めると思われますので正しい知識をどんどん吸収できることでしょう。

 これらのサンプルプログラムで満足せずに、自分から色々調べていってプログラムの知識を深めていってください〜

↓次の記事
プログラマーの財産



つべこべ言わず組んでみよう(前編)

2007年12月31日(月)
つべこべ言わず組んでみよう(前編)


 せっかくプロジェクト構成の解説をしたのに、肝心のプログラムを組まなければ、全く意味が無いと悟った僕は、初心者の方々にプログラムを組んで頂くべく、簡単な講義をすることにしました。その名も「つべこべ言わず組んでみよう」です(苦笑)

 でも、これが結構大切でして、サンプルプログラムを100回読むよりも、1回でも実際に自分で打ち込んでみて、どのように動作をするのかを体感してみるほうが効果的です。

 問題はどのサンプルプログラムを組むかにもよりますが、個人的な意見としては参考書のサンプルプログラムは本にもよりますが、固っ苦しい解説や前置きがあるため体で覚えるのにはあまり向かないものが多いです。

 そういうわけで「とにかく組む」ことに重点を置いて、サンプルプログラムのソースだけいくつか用意してみました。解説に関しては大まかにしかしていないので、僕の解説で、大まかな概要をなんとなく覚えて、それから参考書等で正しい知識を身につけましょう。

 固っ苦しい解説でも、前知識がある程度あれば意外とすんなり頭に入ってくれる場合があります。いわゆる階段の原理と同じで、一階から二階にジャンプして登るのは、常人には厳しいものがありますが、階段を一歩一歩着実に登ることなら、誰でもできますよね?

 そんな階段の一段のように簡単なところから、体に叩きこめるサンプルプログラムを例によってスクリーンショットをつけて大雑把に説明していきます。

 とにかく僕の望みは「Microsoft Visual C++ 6.0」等のコンパイラを持ってるなら、プロジェクトを構成し、一人でも多くの初心者達がプログラムの第一歩を踏み出すことです。

僕のブログを読んでくださるのも嬉しいですが、実際に組んでみてくれたらもっと嬉しいです。

 あと、突き進んで「とにかくプログラム組んで」いますが、所々で不明な点が出てくると思われます。その場合、Google等で検索してみてください。自分で調べることが、成長する上で非常に大切ですから検索する癖をつけるためにも試してみてください。




 それでは、初めてのプログラムに挑戦してみてください〜

↓プロジェクト構成がまだの人はコチラへ
最初の難関! プロジェクト構成(DOS編)



0、よくあるコンパイルエラー


よくあるコンパイルエラー


 全くの初心者の為に、プログラムを組む時の注意点を一つだけ伝えておきます。

error C2018: 文字 '0x81'は認識できません。
error C2018: 文字 '0x40'は認識できません。

 ソースを見た限りおかしなところは無いのに、上記二つのコンパイルエラーが出た場合、プログラムのどこかに「全角スペース」を使ってしまってます。C/C++言語では原則的に「全角文字」は使用できません。特に「全角スペース」をどこかに入れてしまうと、見た目はどこもおかしくないのに何故かエラーが出るという不可解な状況に陥ります。もしも上記のコンパイルエラーが出た場合、エディタの検索機能で「全角スペース」を検索し、消すか、「Tab」もしくは「半角スペース」に置き換える等の対処をしてください。



1、最も短いプログラム


最も短いプログラム


 たったコレだけです。このプログラムが組めないという人は、パソコンの入力自体がまともに出来ないって事になります。「void」って字が青くなっていない人は、おそらくスペルがミスっています。そして「mein」ではなく「main」です(笑)

 とりあえずコンパイルしてください。キーボードの「F7」でコンパイルです。エラーが出なければ、まぁ成功でしょう。実行はキーボードの「F5」で可能ですが、一瞬黒い画面がパッて現れてパッって消えるだけです。

 このプログラムではC/C++言語で必ず必要な、処理の開始位置である「メイン関数」を宣言しています。……それだけで他の処理は一切何もしていません(苦笑)

 だから言ったでしょ。「最も短いプログラム」だって(微笑)



2、コメントは目に優しい


コメントは目に優しい


 緑色の文字で「// これはコメント」「/* これもコメント */」と追加されました。なんで緑色なのかというと、それはコメントだからです(微笑)

 この緑色のコメント部分では、先ほど使用できないと書いた「全角文字」も使うことが出来ます。勿論「半角文字」も使えますし「全角スペース」もどうぞご自由に。なぜなら、この緑色のコメント部分に何を書いたとしてもプログラムには反映されないからです。

 なぜこんな機能があるかといいますと、「目に優しいプログラム」にするためです(笑)

 パソコンのディスプレイは光を発することにより色を表現しています。緑の光は最も人の網膜に負担をかけない波長であり、人は緑色を見るのに労力を要さないので、長時間緑色を見続けていても疲れることはなく、集中力を保つことができます。そのため所々にコメントを入れ、目に入る緑色の色調の光を増やすことによりプログラムの効率が増します。

 ……っていう、変な説得力のある冗談はさておいて、コメントはプログラムの説明書きとして使う機能です。

 プログラムを組んでいると、所々に難解なアルゴリズムを組んでしまうことがあります。そのアルゴリズムがどんな処理をしているのかを端的にコメントで説明書きを残しておくと、後々手直ししたり、ソースを読み直すときに大変便利です。

 人にはそれぞれ限界がありますから、計算式を見ただけでそれがどんな動作をするか見分けるのにはそれなりに時間を要します。でもコメントをつけておけば、その難解な計算式の意味が一瞬でわかります。つまりソースをガン見しなくてもいいので目に優しいです。

 もし、あなたが難解な計算式を一目見ただけでどんな処理をしているのか理解できる人ならコメントをつけろと強制はしませんが、そうでないならコメントをつける事を強くオススメします。複数人でプログラムを組んでいるのならコメントは必須です。



3、はろ〜、わ〜るど


はろ〜、わ〜るど


 イキナリ行数が増えたからといって、驚かないで下さい。ほどんどがコメントですので。実際に増えた処理は「#include <stdio.h>」と「printf( "Hello world" );」だけです。

 インクルードを解説するのは少々面倒なので興味のある方は自力で調べて〜(オイッ!)

 んで、なんとなく見てわかりそうなのは「プリントエフ」の方ですね。ダブルクォーテーション(")で囲われている文字列を画面に表示するんですよ。ほんの一瞬だけ……

 文末のセミコロン(;)は日本語で言う「。」と同じ意味合いで、処理の区切りを意味しますので、必ずつけて下さい。プログラム言語は書式にうるさいので、几帳面にしっかりとつけて下さい。

 そこで「ん? じゃあなんでインクルードの方には、セミコロンが付いてないの?」って思った人はカンが鋭いです。それはインクルードの書式の方が特殊なのです。……なので疑問に思った方は、自力で調べてスッキリ理解してください(笑顔)



4、見えねぇよ! ってお方に


見えねぇよ! ってお方に


 僕も動体視力が弱いので、処理が速すぎで「Hello world」の文字が見えません。なので「getchar();」という処理を「プリントエフ」の下の行に追加しました。

 すると、どうでしょう……。「F7」でコンパイルし、「F5」を押してプログラムを動かしてみると、黒いコンソール画面に「Hello world」と、白い文字がしっかり出ています。「Enter」キーを押せば、黒いコンソール画面が消え、プログラムも終了します。

 これで色々テストしやすくなりましたね(やったー)

 ためしに「プリントエフ」の「ダブルクォーテーション」で囲われた部分の文字を書き換えてみてください。ちなみにその部分にも例外的に「全角文字」を使うことが出来ます。



5、なんか変な世界


なんか変な世界


 「ゲットキャラ」を追加して処理が見えるようになったとき、素直に「Enter」キーを押した人は気が付かなかったと思われますが、適当なアルファベットを入力すると……とても変なことに、黒い画面に文字を入力できてしまいます(苦笑)

 せっかくの「Hello world」が変になってしまった瞬間です!

 これは「ゲットキャラ」が「画面を見えるようにする処理」をする機能(関数)じゃあなくて、文字入力を受け付ける機能だからです。文字を受け付けている間は処理が止まっているから、出力結果である「Hello world」が見れます。そして「Enter」キーを押せば入力受付を終了し「ゲットキャラ」はその結果を出すんですが、それを受け取ってないし、その後に何の処理も無いため、プログラムが終了し画面が消えてしまうということです。

 ……ってことで、あんまり気にしないで下さい。どうしても気になるなら自分で検索して調べてみるのもアリですけどね。



6、改行コード


改行コード


 「ゲットキャラ」の変な仕様がわかったところで、ついでだからその機能をありがたく利用させてもらい、「改行コード」の説明をすることにします〜

 上のプログラムと下のプログラムそれぞれにソースと処理結果を載せましたが違いがわかりますか? ちなみに処理結果の方の「Hello world」の後に続く文は、僕が適当に打ち込んだものです。

 ソースの違いは「ダブルクォーテーション」で囲まれた「Hello world」のところで、下のソースには「\n」が追加されています。これが「改行コード」です。

 まぁ、この「\n」はHTMLで言う「<br>」タグだと思ってください。HTMLを知らないって人もいるかもしれないけど、そういうものなので例えとして出しました。

 この記号が追加された下の方の処理結果では、僕が適当に打ち込んだ文の部分が改行されて表示されていることがわかると思います。




 さて、残りの項目もいくつかありますが、一つ一つの解説が長くなりそうな箇所なので、ここまでを前編とし、次回に回そうかと思います。
 次回の予定としては「変数」「繰り返しのfor文」「条件分岐のif文」等を考えてます。

↓次の項目
つべこべ言わず組んでみよう(後編)



最初の難関! プロジェクト構成(DOS編)

2007年12月30日(日)
最初の難関! プロジェクト構成(DOS編)


 僕は常日頃から思っていることは、「パソコン初心者にとってプログラムのプロジェクト構成はかなり難しい」ってことです。

 僕は「Microsoft Visual C++ 6.0」のコンパイラ(統合開発環境)を持っており、それで大抵のプログラムを組んでますが、コレがパソコン初心者にとっては余計な機能が多くて非常にとっつき難いものになってしまってます(苦笑)

 一応、パソコンに関してもプログラムに関しても上級者に位置する僕からすれば、いらない機能は無視して、必要な機能を色々応用して使いこなせていますが、ずぶの初心者にしてみたら「Hello world」を組む前に、「どうやったらプログラムが組めるんですか?」っていうふうに根本的な部分でつまずいてしまう事でしょう。

 そこでそんな「ずぶの初心者」達のために、最も簡単なC/C++言語のプログラムが組めるDOS(コンソール)プログラムのプロジェクトの作り方を親切にスクリーンショットまで付けて懇切丁寧に解説しようかと思ってます。

 僕が持っている環境が「Microsoft Visual C++ 6.0」のみなので、他の環境だと色々と応用して対処しなければなりませんが、大抵は似たり寄ったりでしょう。多分……

 それでは避けては通れない最初の難関、プロジェクト構成に挑戦してみてください〜



1、プロジェクトの新規作成


プロジェクトの新規作成


 「Microsoft Visual C++」を立ち上げ、メニューバーの「ファイル(F)」から「新規作成(N)」を選択します。



2、プロジェクトの選択


プロジェクトの選択


 「新規作成」のウィンドウが出たら「プロジェクト」タブであることを確認して、「Win32 Console Application」を選択します。ちなみにまだ「OK」は押せません。



3、ディレクトリの選択


ディレクトリの選択


 「位置(C)」のテキストボックスの右側にあるボタンを押すと、プロジェクトを作成するディレクトリを選択できます。ここでデスクトップ等、わかりやすい位置に設定します。
 なお、この例ではわかりやすいようにCドライブの直下の位置を選択しています。ディレクトリの意味がよくわからないという方は図と同じ箇所(Cドライブの直下)を選択して「OK」を押しましょう。



4、プロジェクト名の入力


プロジェクト名の入力


 「プロジェクト名(N)」を入力します。この例では「test」と入力しています。プロジェクト名を入力すると、「位置(C)」のテキストボックスの行末にもプロジェクト名が書かれます。確認したら、いつの間にか押せるようになってる「OK」を押します。



5、空のプロジェクト作成


空のプロジェクト作成


 「空のプロジェクト(E)」を選択して「終了(F)」を押します。



6、新規プロジェクト情報の確認


新規プロジェクト情報の確認


 「新規プロジェクト情報」を確認したら「OK」を押します。



7、ワークスペース


ワークスペース


 画面の左側に「test クラス」と書かれたウィンドウが出来あがっています。それが「ワークスペース」です。



8、ソースファイルの新規作成


ソースファイルの新規作成


 再度、メニューバーの「ファイル(F)」から「新規作成(N)」を選択します。「新規作成」のウィンドウが出たら「ファイル」タブであることを確認して「C++ ソースファイル」を選択します。ちなみにまだ「OK」は押せません。



9、ソースファイル名の入力


ソースファイル名の入力


 「ファイル名(N)」のテキストボックスに「main.cpp」と入力します。この「*.cpp」という拡張子は「C(シー)++(プラスプラス)」の略であり「C++言語」のソースファイルだという事になります。別に「main.c」として「C言語」としてしまっても良いのですが、C++言語の方が便利機能もありますし、C言語の機能もほぼ完全に網羅しているので問題は無いでしょう。ファイル名を入力したら「OK」を押しましょう。



10、プログラムの準備完了


プログラムの準備完了


 右側にテキストエディット画面が出来上がっていればプロジェクト完成です。そのままプログラムを組むことが出来ます。この例と全く同じ手順で作成した人は、マイコンピュータを開いてCドライブの直下を確認してみると「test」というフォルダがあるはずです。
 それを開くと、下のようなファイル構成になっているはずです。プロジェクトを作るのが面倒くさいという人は、この「test」フォルダをテンプレートとしてコピーしておくと便利です。このプロジェクトを一度閉じた後、再度開きたい場合は、「test.dsw」をダブルクリックしてください。



ファイル構成


↓次の項目
つべこべ言わず組んでみよう(前編)



日常生活での応用力を発揮したとき

2007年12月27日(木)
日常生活での応用力を発揮したとき

 さて、今回のテーマは「応用力」です!
 僕の今までの経験上、プログラミングには応用力が必要だと、痛いほど思っています。

 例えば、ライブラリや制作環境の関係上、今まで使っていた関数が使えない! なんてことはプログラム開発者にとって日常茶飯事です。
 これはつまり、職場Aではいつも自家用車で通勤していたのに、職場Bでは自家用車での通勤が禁止されているということです。

 まぁ、この例ではただ単にバスや電車で通勤すればいいだけの話ですが、プログラムの場合に置き換えますと、そのバスや電車に値する関数を知っているのかという話です。

 プログラムの関数というものを単純に言うと「何か入れて、何かして、何か出す」です。
 その「何か」とは関数によってそれぞれ違います。
 なかには何も入れなくてもいいものもありますし、何も出さないものもあります。

 C言語だと、とても有名な関数として「printf」がありますね(笑)
 この「プリントエフ」は「文字列」を入れると、DOS(コマンドプロンプト)の黒い画面にさっき入れた文字列を表示します。

 実は表示した文字数を出したり、エラーの場合は負数を出したりもするんですが、そんな機能を使う人は今まで見たことありませんし、知らない人の方が多いでしょう(にやり)
 ホントはもっと色々な機能もありますが、それを全部話すとキリがないので省略します。

 さて、この有名な「プリントエフ」関数は、コンソールプログラムでは当然のように使われていますが、Windowsアプリケーションのプログラムでは使えません。
 なぜなら、今更コンソールのアプリ開発している人なんていないからです(笑)

 それならWindowsアプリケーションではどうやって文字列を表示したらよいのか……そんな事はわざわざ語りませんので、気になった人はそれぞれ「応用力」を見につけて、自力で解決してくださいね(微笑)

 応用力なんて普段の生活で何気なく意識するだけで自然と身についていきます。
 僕の場合、気が付いたら身に付いていたのでどうすれば身に付けられるかを教えることはできませんが、日常生活で僕が応用力を発揮したときの出来事を教えます。




「日常生活での応用力を発揮したとき」


・トイレが詰まってた!

 ……いきなり汚い話ですいません(ぺこり)
 でも、トイレが詰まるって事態は水洗トイレならどこの家庭でも起こりえることですね。

 何気なく用を足そうと思ったら、なんだかトイレの様子がおかしかったんです。明らかに水かさが少なすぎて、ほとんど水が無いんです。怪しいと思いつつも水を流してみると案の定、便器から溢れんばかりに水かさが増しました。

 僕の家にはラバーカップ(パカパカやるやつ)が無かったので、以前にもトイレの水が詰まった事があったのですが、そのときは母親がラバーカップを借りてきて解決しました。

 困ったことに僕は今すぐにでも用を足したい。でも、詰まったトイレに用を足せるほど勇者(笑)にはなれなかった僕は、ラバーカップの原理をなんとなく予測してみました。

 なんでパカパカやるのか一秒考えてみた結果、瞬間的に強い水圧で詰まった部分を押し出すということに気が付きました。……って、そんなの誰でもわかりますよね?

 そしてその次に、「瞬間的な強い水圧」をどのように発生させるかを考えながら周りを見回しました。目に付いたのはトイレ掃除用のスポンジブラシでした。それを目にした僕はおもわずにんまりしました(笑)

 たぷたぷに水が溜まっている便器と対面しているのはスポンジブラシを持つ僕……そして恐る恐るスポンジブラシを水面に入れ、何度も何度も一気に押し込みました。

 ちゃぷちゃぷ飛び散るトイレの水に「やばちっ」ってなりながらも、何度もやってるうち手ごたえがありました! そして、たぷたぷだった水が見る見るうちに流れていきます。

 こうして僕は無事に用を足せて、その後に帰ってきた母親は、借りてきたラバーカップを使わずに返してきました(ごめんな、母よ……)


・キーホルダーが取れていた!

 職場でのお話です。応用力とはちょっと趣旨から外れている感じもしますが、近い発想ですのでお話します。事務所の鍵を、とある保管場所から漁っていました。そして見つけたと思い取り出したら、それはなんと! キーホルダーのみでした(しくしく)

 もういちどくまなく漁ってみると、キーホルダーのチェーンが外れてしまっている鍵が、下の方に埋もれていました。

 誰が壊したかなんて、べつにどうでもよかったので、鍵を拝借し事務所で身支度して鍵を返し、仕事を開始しました。

 そして、僕が出勤する代わりに仕事から退勤する人も鍵を漁っていましたが、なにやら様子がおかしいのです。やたらとイライラしながらガチャガチャと漁っているんです。

 なんでイライラしているのかと思い、こっそりチラ見して様子を伺うと、手に持っているのはチェーンが取れてしまっている、先ほどのキーホルダーのみ……片割れの鍵がなかなか見つからず、イライラしているみたいです。

 「触らぬ神に祟りなし」とも言いますが、そのイライラがつのり過ぎて僕にまで火の粉が飛び散るのは勘弁だったので(ひどい)、先ほど受け取った時間帯の責任者が持つことになっているマスターキーを渡し、その場を収めました。

 その後仕事をしながら、なんでさっきの人は鍵をなかなか見つけられなかったのか考えました。そしてあっさり答えを見つけてしまいました。

 鍵なんて所詮は薄っぺらくて小さい金属の塊です。それ単品であったとしても全然目立ちません。しかも事務所の鍵の保管場所には、他の鍵もごちゃごちゃに混ざっているので、見分けもつけ難く、見つけられないのも無理も無い話なのです。

 今まで気にも留めなかったキーホルダーの意味は単なる飾りではなく、飾ることによって無機質な鍵に印をつけ、見分けを付けやすくしたり探しやすくするものだとを身をもって知ることができました。

 ってことで、キーホルダーが取れたままだと、また誰かがイライラして僕に火の粉を飛ばすかもしれないという危機感を感じた僕は、キーホルダーのチェーンを直して、再び鍵にくっつけることにしました。

 まずはキーホルダーと鍵を取り出し、その壊れ具合を吟味。
 キーホルダーのチェーンリングの一つの穴が広がりすぎていて、そこから外れたと把握。
 反対の考えでそこからくっつけてリングを連結することに成功。
 最後に工具箱よりペンチを取り出し、リングの穴を狭めて修理完了。

 5分もかからずに修理することができました〜

 ……本当は壊してしまった人が、その場で5分かけて修理さえしていれば、他の人たちは鍵を見つけるのにイライラせずに済んだでしょうし僕も火の粉におびえることも無かったんですけど、人は「面倒な事は後回し、俺がやらなきゃ変わりに誰かがやるでしょ?」な考えを持っている人がとても多いです。

 誰だって痛みを連想する事柄、面倒くさい事柄を避けようとしますからね。僕がイライラの火の粉から避けようとしたように(笑)

↓次の項目
最初の難関! プロジェクト構成(DOS編)



簡単なプログラミング言語って……

2007年12月25日(火)
簡単なプログラミング言語って……

 これからプログラムを始める方は誰もが思うはずです。
 いきなり難しいプログラム言語を覚える自信がないから、まずは簡単な言語を覚えて、だんだんステップアップ出来ないかな? と……
 そしてどの言語なら初心者でも簡単にプログラム出来るのかと……ってな訳でその疑問について僕の今までの経験を元にお答えしようと思います。

 皆様は「Hello world」というプログラムを知っていますか?
 もし知っていて、それを何らかの言語で組んだことのある人はすでに答えが出ています。

 知らない人にはお教えします。
 「Hello world」とは画面に「Hello world」と表示するだけの超単純なプログラムです。
 大抵の入門書で一番最初に組むと思われるプログラムです。

 このプログラムを組んだからといって何になると言いますと……あなたが自分でプログラムを始めて組んだという実績になります。

 「千里の道も一歩から」と言うように、どんなプログラム言語でもこの「Hello world」から始まります。
 そして、この「Hello world」のプログラムは超単純だから、手順に従ってそのとおりにプログラムすれば誰でも出来るはずです。

 どんなプログラム言語でも誰でも出来る……それで全くプログラムを組んだことの無い人間から一回だけプログラムを組んだことになるんです。

 0と1の違いは大きいです。

 0は今までやってこなかった人、もしくはやろうとしても迷ってばかりいて結局やらなかった人。
 1はとりあえず見よう見まねだけどやってみた経験者で、実際に行動した人。

 0の人は計画的過ぎて、計画倒れしている感じがします。
 慎重に考え、いろんな意見を参考にして失敗しないようにしよう……と。
 そして最初の言語選びも慎重に行う。

 しかし、結局のところ、どの言語を選んだにしたって最初のステップである「Hello world」はどんぐりの背比べです。
 一般的に超難しいといわれているアセンブラ言語でも、ほんの十行程度です。
 C言語だと書式にもよりますが五行程度で済んでしまいます。

 それぞれのプログラム一行一行の意味なんて最初なんだからわからなくても良いんです。
 何回も繰り返し「自分で」プログラムしていくうちに少しずつ調べていけばいいんです。

 さて、話を戻します。

 いきなり難しいプログラム言語を覚える自信がないから、まずは簡単な言語を覚えて、だんだんステップアップ出来ないかな? と……
 そんな風に考えている暇があったら、とりあえず手短に組めそうな言語で「Hello world」を組みましょう(笑)
 最初のステップはどんな言語でも簡単です。

 答えを言うなら、簡単なプログラミング言語ってのはあなたが手短に組める言語です。

 それでも迷えるならC言語(もしくはC++言語)をオススメします。
 なぜC言語かというと、僕がメインで使っている言語だからです。
 一般的に言語としての難易度は高いと言われてますけど、別にそんなことは無いです。
 うわさに聞くポインタが怖いというなら実際に簡単なポインタのプログラムを組んでみるべきです。
 やってみなければ実際のところ何にもわからない訳で、何にもわからないことをしようとしても難しいのは当たり前です。

 ただし、C言語(C++言語)を学ぶなら、コンパイラが絶対必要です。
 開発する上でオススメのコンパイラは「Microsoft Visual C++」ですけど、その辺は本人の予算や環境、作りたいものによります。

 もし、「Microsoft Visual C++」での開発環境があるなら、僕が今後作成予定のebookでゲームプログラムのお勉強が出来ることでしょう。
 でも、その環境が無くても、応用すれば問題なく勉強できるでしょう。

 応用力はプログラムを組む上で非常に重要です。

 プログラム言語を覚える時点では参考書等に載っているプログラムをひたすら組めば良いですが、自分の作りたいものを組むためには自分で応用して組み立てる必要があります。
 そこで自分の思ったとおりに作ることが出来る事こそプログラムを覚える醍醐味です。

 さて、話が変な方向に行かないうちにまとめます。

 もし、どの言語でプログラムを始めれば良いのか迷っているなら、まずは何でも良いので手短にはじめることが出来そうな言語を組んでください。
 そして何度も繰り返し参考書等を参考にして組んでみてください。
 何度も組んで、大体の言語の書式を覚えたら応用として参考書に載っていないオリジナルのプログラムを簡単なもので良いので組んでみてください。

 そこまで出来ればあなたにとってその言語が「簡単なプログラミング言語」になることでしょう……

↓次の項目
日常生活での応用力を発揮したとき



 | 
Copyright(C) 2001-2008 E-CLASSIS Inc. All Rights Reserved.