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 変数の中を見よう! >
「につづく!!」
『でもメモリなら見られるよ?』
「定規、割り算、は虫類、両生類、牛丼、お昼の顔……」
『多すぎるよねー。今日の天気は?』
「くもり。しまったぁ!!」