#pragma twice

KAB-studio > プログラミング > #pragma twice > 013 Version 2.2 変数を作ろう!

#pragma twice 013 Version 2.2 変数を作ろう!

前のページへ 表紙・目次へ 次のページへ

 Version 2.2
変数を作ろう!

さて! 今回から本格的にプログラミングな感じになってきます
やっとよねー。今まで回りのことばかりだったからなんか飽きちゃった
これから楽しくなるとは一言も言ってないけどねん
げげ
じゃ、まずこの前作った関数から見てみようか

void CCalcDlg::OnBEqual() 
{
    MessageBox( " 1 + 2 = 3 " );
}

これが<関数>よね
そ。ダイアログの【=】ボタンを押すと呼び出されます。で、今回はこの
<中身>、つまり中カッコの中だけについて見てみます
中カッコの中が、プログラムなんだって言ってたよね
そういうこと。この中に<何をするか>を書き込みます。じゃ、まずこの
中をこんなふうに書き換えてみましょう

void CCalcDlg::OnBEqual() 
{
    ここがプログラムの中身です。
}

……これ、プログラム?
違うよん。ビルドしてみれば分かるよ?
じゃ、【ビルド】−【ビルド】……って、もしかしてツールバーにボタン
ある?
あるよ。<箱の中に矢印ふたつで砂を詰めていきましょう>みたいなアイ
コンのボタンがそう
じゃ、これ押してと
 新たにウィンドウが開き、その中に次のような文章が表示される。

-------------------構成: Calc - Win32 Debug--------------------
コンパイル中...
CalcDlg.cpp
D:\Kamichan\Calc\CalcDlg.cpp(179) : error C2018: 文字 '0x82' は
認識できません。
D:\Kamichan\Calc\CalcDlg.cpp(179) : error C2018: 文字 '0xb1' は
認識できません。
(略)
cl.exe の実行エラー

Calc.exe - エラー 32、警告 0

やっぱダメでしょ
やっぱって何よやっぱって
ま、ようするに普通の日本語とか書いちゃいけないってことかな。こうい
う注意書き、つまり
コメントでしょ? <プログラムじゃない文章>は、こういうふうに

void CCalcDlg::OnBEqual() 
{
    //ここがプログラムの中身です。
}

って、 "//" を入れるんだって前に言ってたじゃない
そうそう。これがあると、そこから次の行までは<プログラム>とは見な
されないから。だから、

    ここが//プログラムの中身です。

とか、

    //ここがプログラムの
    中身です。

とかはダメだからね
はみ出ちゃダメってことよね。でもさ、そしたらコメントを何行も書いた
りとか、1行のちょっとだけをコメントにしたいときとか困るじゃない
そういう人のために、こういうコメントのしかたもあるから

void CCalcDlg::OnBEqual() 
{
/*
    ここがプログラムの
    中身です。
*/
}

こんなふうに、 "/*" と "*/" で囲むと、改行に関係なくこの中がコメン
トになるから
あ、こういうのもあるんだー。どっち使えばいいの?
大丈夫だよ、両方使えるから

/*
    //ここがプログラムの
    //中身です。
*/

みたいにしても、ちゃんとコメントになってくれるから。あ、文をコメン
トにすることを<コメントアウト>って言うから
これなら<ここがプログラムの中身です。>を<コメントアウトした>っ
てことよね
で、注意!
え、なに?
"/*" が何回あっても、 "*/" があるとそこでコメントが終わっちゃいま
す。だから、

/*
void CCalcDlg::OnBEqual() 
{
/*
    ここがプログラムの
    中身です。
*/
}
*/

ってことはできません。最後の<中カッコ閉じ>がコメントじゃなくなっ
ちゃうから
うわめんどー。でもさ、VCのエディタってこの<コメントの部分>、色
が変わるんだね
だから、こういうミスはあんまりないかな。ま、こういうこともあるか
ら、普通は "//" の方を使っておいた方がいいかな
そうよね、関数まるごと要らなくなることもあると思うし
じゃ、次は関数をこんなふうに書き換えてみて

void CCalcDlg::OnBEqual() 
{
    int iBox;
    iBox = 100;
}

キャーップログラムよプログラムっ
それはもういいから
ぐすん、で、これってどういう意味?
とりあえず1行ずつ見ていこうか。中カッコの中は上から実行されるか
ら、まずこの行から

    int iBox;

まず左の空白だけど、これは<タブ>って言います
風呂釜掃除
そりゃバブや! キーボードに【Tabキー】ってあるでしょ。あれを押
すとこの空白ができるから
嘘よそれー、だってこれスペースじゃない、それも4つくらい
う”……えっとね、別にタブでもスペースでもどっちでもいいんだよ、ホ
ントは。ただ左端から距離を開けたいってだけだから
それって<インデント>ってヤツ? ワープロとかの
そうそう。左から距離を開けて、<ここは関数の中身ですよー>ってこと
を分かりやすくしとくわけ
で、タブとスペースの違いって?
タブは1文字で横にながーく広げられるから、普通はタブを使うんだけ
ど、その<横幅>って、設定とかパソコンとか何で見るかとかで違うんだよ

ははーん、それって<メールマガジン>ってキーワードと関係あるわね
ぎくっ、まあそういうこと。ここでは誰もが同じように見られるようにタ
ブをスペース4つに置き換えています。皆さんはタブを使ってください
でもそれって、つまりタブとかスペースって好き勝手に入れていいってこ
と?
プログラムの意味が通じればね。たとえば、今の行も

  int               iBox     ;

でも全然問題ないよ
……あれ? あれれ? これでビルドしたらエラー出ちゃったよ?

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

だって
火美ちゃん、日本語モードでスペース入れたでしょ
ダメなの?
ダメ! 日本語は普通のプログラムには入れられないから
あう〜
じゃ、次見るよ。ちょっと飛んじゃうけど、最後の ";" あるでしょ
これって<セミコロン>よね
そ。で、プログラムは、このセミコロンまでが<1行>って判断されるか

へ? 改行じゃないの?
違うんだよね。だから、こんなふうに書くこともできたり

    int
    iBox
    ;

なんか、ものすごく自由度高いんだね
そうだね、この改行の関係とか、さっきのスペースとタブとか、この辺は
かなり自由だよ。じゃ、一番大事なところ! "int iBox" について見てみよう

うんうん
これはね、<数字の入る箱、その名は iBox !!>って意味
……あのー
言ってみ?
え? え……す、数字の入る箱、その名はあいぼっくすぅ!!
はい、よくできました
そうじゃなくって!
でもそのまんまの意味なんだけどなー
そのまんま……って、 "iBox" が、数字の入る箱?
そ。"int" っていうのは、<数字の入る箱を作ります>っていう意味。
で、 "iBox" は、その作られた箱の名前。この名前は勝手に決めていいんだ
よ。ここでは "iBox" ってしただけで
だったら "Hako" とかでいいの?
うん、いいよ。でも<何が入る箱なのか>が分かるように、頭文字に 
"int" の "i" を付けておくと分かりやすいから
え”、ってことはこの箱って数字しか入んないの?
そゆこと
うわ、めんどくさー
そんなこと言う自分が恥ずかしくなる日が来るんだよね、いつか……
??
ちなみに "int" っていうのは "integer" つまり<整数>っていう意味だ
から
整数の入る箱を作るから "int" ね
で、この箱のことを<変数>って言います
専門用語でへんすー、ね。ってことは、箱の中に入れる数字って変えられ
るんだ
そういうこと。で、次の行でこの箱の中に "100" っていう数字を入れま


    iBox = 100;

質問!
はい、火美ちゃん
なんで【=】で入るんですかぁ?
逆でーす。プログラミングの世界では、【=】っていうのは<右のものを
左に入れる>っていう意味なんでーす
変なのー
そう? まずさ、普通に<イコール>って考えれば、これは間違ってない
よね
確かに…… "iBox" に "100" が入るんだったら、等しいっていうことは
分かるけど……でもさ、それでも<右のが左>って納得いかないなー
じゃーさ、"=" を "is" に置き換えてみれば?

    iBox is 100;

< iBox は 100 >ってことよねー。まーこれは逆は無理だけどね。でも
なんかなー
実際のところ!!
な、なに?
"+" とか "-" とかいろんな記号が使えるんだけど、実はこれそれぞれ
<右からか左からか>っていうのが決まってるんだよね
……どういうこと?
つまり、 "=" は<右から左>に決まってるけど、他の記号は必ずしもそ
うじゃないってこと。だから、これはそういうものって憶えるしかないかな
え〜?
下手にね、 "=" とか思っちゃうからいけないんだと思うよ。プログラミ
ングではまったく別物! って考えた方がいいかな
あ、それならOKかなー。よーするにフツーのとプログラミングは違う、
ってことね
そういうこと。じゃ、問題! 次はどんなことしてる?

void CCalcDlg::OnBEqual() 
{
    int iHensu;
    iHensu = 10000;
}

えっと、1行目で<数字を入れる箱>、名前は "iHensu" っていうのを
作って、2行目でその中に数字を入れた、ってところかな
そう! もうバッチリじゃない
でさ……それ、どう確かめるの?
それは次回!!

/*
    Preview Next Story!
*/
変数作った! 数字入れた! でも見られないんじゃねー
見るの結構大変だからねー。メモリってとこに入ってるから
DIMMってヤツ?
そ。<パソコン分解するの?>とかゆーお約束は却下
と、というわけで次回
< Version 2.3 変数の中を見よう! >
につづく!!
でもメモリなら見られるよ?
定規、割り算、は虫類、両生類、牛丼、お昼の顔……
多すぎるよねー。今日の天気は?
くもり。しまったぁ!!
 
del.icio.us 登録する
Yahoo!ブックマーク 詳細を表示 users
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
RSSに登録
del.icio.us 登録する
Yahoo!ブックマーク 詳細を表示 users
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
 
このページは、Visual C++ 6.0を用いた C++ 言語プログラミングの解説を行う#pragma twiceの一コンテンツです。
詳しい説明は#pragma twiceのトップページをご覧ください。