小学生でも出来る!C++プログラム #05
はおっ(0^∀^)ノ お久しぶりです。渚です。
プログラムしか書けない私たちですが、この度は同人界隈向けに、 なんとなくこんな風に作ってるよーというのを発信すべく、 定期的にブログで紹介してみようかということになりました。 この記事はそんな連載の第10回です。
気が付けば,10回目・・・内容は大して進んでいませんが,あっという間ですね。 ということで,渚からは「小学生でも出来る!C++プログラム」 を紹介していこうと思います。
関連ブログ
- #1 小学生でも出来る!C++プログラム「C++って何?」
- #2 小学生でも出来る!C++プログラム「開発ツールを手に入れよう!」
- #3 小学生でも出来る!C++プログラム「表示してみよう!」
- #4 小学生でも出来る!C++プログラム「変数って何?」
- #5 小学生でも出来る!C++プログラム「if文って何?」
目次
- 「if文って何?」
- 前回の復習
- もしもの世界
- とりあえず,書いてみよう
- 条件式
- PCがif文を理解する仕組み
- bool型
- 条件式の組み合わせ
人物紹介
渚:プログラムを教えてくれる先生
ココ:いんたーねっとって聞いたことがあります!
マナブ:将来はゲームプログラマーになりたいな!
前回の復習
渚>前回は変数について勉強しました,変数とは何か覚えていますか?
ココ>箱!
渚>そうですね。では,変数の宣言の仕方は覚えていますか?
ココ>宣言?
渚>宣言とは,コンピュータに対して,この変数が使いたいです!と宣言(伝える)することです。
マナブ>つまり,変数のプログラムの書き方だよ。
ココ>ええと,あれ?
渚>変数の宣言の仕方はこんな感じです。
変数の箱の形 変数名 左の変数に値を入れる! 変数に入れる値 プログラム終わり! int型 変数名 = 変数に入れる値 ; ↓ int name = 0;
ココ>そういえば,最後に書いた気がする!
渚>そうですね。よくわからなかった人は,前回のを再度復習してみましょう!
渚>今回のif文では,前回勉強した変数を使っていくので,変数の考え方(変数は箱)と,プログラムの書き方(int i = 0;)を知ってから学んでいきましょう!
もしもの世界
渚>ではさっそくプログラム!と行きたいところですが,まずはif文の考え方から知りましょう!
渚>if文は,もし○○ならば,こうしたい,というのをプログラムで書くときに使います。
渚>例えば,マナブ君が,もし150円持っていたなら,ペットボトルのお茶が買えます。しかし,持っていなければ,お茶が買えません。というのをプログラムで書くことができます。
渚>ゲームでも,if文は必ず使います。例えば,どんな時に使うでしょう?
マナブ>例えば・・・経験値が50溜っていたら,レベルアップする!とかもif文を使いそうです。
渚>そうですね!ではそれを,実際のプログラムで書いていきましょう!
とりあえず,書いてみよう
渚>if文は,下のような感じで書きます。
int manabu = 150; if( manabu >= 150 ) { std::cout << "マナブ君はお茶を買うことが出来ました。" << std::endl; } else { std::cout << "マナブ君はお茶を買うことが出来ませんでした。" << std::endl; }
渚>日本語に置き換えると・・・
int マナブ君の所持金 = 150円; もし( マナブ君の所持金 150円 以上 )ならば { std::cout << "マナブ君はお茶を買うことが出来ました。" << std::endl; } そうでなければ { std::cout << "マナブ君はお茶を買うことが出来ませんでした。" << std::endl; }
渚>こんな感じになります。
渚>では,経験値(exp)が50以上ならば,「レベルが上がった」そうでなければ,「まだレベルは上がってないよ」と出力されるプログラムを書いてみましょう。expの初めの値は,10と50と100で試してみましょう。
マナブ>は~い! ココ>は~い!
渚>合っていたかな?
条件式
渚>次は,条件式について学びましょう!
ココ>じょうけんしき?
渚>そうです!条件式です! さっきの例だと,「マナブ君の所持金 150円 以上」っていうところが条件式です。 条件「マナブ君がお金を150円以上持っている」というのを式で書くので,条件式と言います。
ココ>へぇ~
渚>この条件式は,必ず次のような形で書かれます。 「左側 記号 右側」でひとかたまりになります。
ココ>記号には何が入るの?
マナブ>例えば, 左側と右側が同じ値だったら?という意味の「==」(イコール) 左側と右側が違う値だったら?という意味の「!=」(びっくりイコール) 左側が右側より大きい値だったら?という意味の「>」(大なり) 左側が右側以上の値だったら?という意味の「>=」(大なりイコール) 左側が右側より小さい値だったら?という意味の「<」(小なり) 左側が右側以下の値だったら?という意味の「<=」(小なりイコール) があるよ。
ココ>左側が右側より大きいのと,左側が右側以上なのって,どう違うの?
マナブ>えっと,同じ値が入る場合は以上で,含まない場合はより大きいかな。
渚>こんな感じですね。
ココ>なるほど!
渚>まとめるとこんな感じ
if( 条件式 ) { 条件が合っていたら,ここに入る } else { 条件が間違っていたら,ここに入る }
条件式は・・・ 左側 記号 右側 という形で書く。
記号は,以下のようなものがある。
PCがif文を理解する仕組み
渚>さっきの項目で,「if文を使うと条件によって違うことができる事」や,「if文ってどうやって書くのか?」がなんとなく伝わったと思います。
ココ>は~い!
マナブ>大丈夫です!
渚>次は,PCがif文をどうやって処理しているか? つまり,処理の流れを教えますね。
ココ>はい! マナブ>はい!
渚>if文が処理される流れは,こんな感じです。
[1] if( [2]条件式 ) { [3-1] 条件が合っていたら,ここに入る } else { [3-2] 条件が間違っていたら,ここに入る }
渚>[2]の条件式をもっと細かく見ていきます。
[1]左側 記号 右側 [1]が正しい場合は,trueに置き換わる [1]が正しくない場合は,falseに置き換わる [2]置き換わった値がtrueならば,[3-1]に falseならば[3-2]に
渚>実は条件式は,一旦trueかfalseに置き換わります。 ということは,if(true)という書き方が出来ます。やってみましょう!
渚>まとめると・・・・
[1] if( [2]条件式 ) ↓ if( [3]条件式が正しければ[true] 正しくなければ[false] ) { [4-1] trueだったら ここに入る } else { [4-2] falseだったら ここに入る }
渚>実は,こんな感じでPCに理解(処理)されているのです。
bool型
渚>前回,変数について学びました。その時には出てきませんでしたが 変数の形にの一つに「bool型」というものがあります。
マナブ>確か,「true」か「false」しか入らない変数ですよね
渚>表現の仕方が若干違いますが,そんな感じです。
渚>ココさん,先ほど,if()の中には,最終的に2種類になるって話をしましたね。その2種類はなんですか?
ココ>えと,「true」と「false」?
渚>その通りです!
渚>マナブくん,bool型の変数valueの宣言を書いてみてください。初期値はtrueでお願いします。
マナブ>bool value = true; はい!こんな感じです!
渚>はい!正解です。
渚>では,ココさん,このvalueがtrueだったら,「trueです!」と表示するプログラムを書いてみてください。
ココ>は~い!
#include <iostream> int main() { bool value = true; if(value == true) { std::cout << "trueです!" << std::endl; } else { } return 0; }
ココ>できました!
渚>そういえば,説明していませんでしたね。
ココ>??
渚>elseの後の{ }内は,そうではない時の処理を書く場所ですが 上の例だと,そうではない時の処理を書いていませんよね。
ココ>そうですね。
渚>実は,そうではない時の処理は,書く必要がなければ,書かなくてもいいんです。 つまり・・・これだけで成り立ちます。
if(条件式)
{
}
ココ>へぇ~!ということは・・・
#include <iostream> int main() { bool value = true; if(value == true) { std::cout << "trueです!" << std::endl; } return 0; }
ココ>できました!
渚>ん~惜しい!
ココ>えぇっ?!
マナブ>ん~?ぁ,そうか!
渚>マナブくんはピンと来たようですね。 ココさん,if文の( )の中は,「左 記号 右」の形で書くのがルールですが, 「左 記号 右」はtrueかfalseに置き換わります。ということは・・・?
ココ>えぇぇ・・・valueがtrueで,trueと同じ値だから,trueで・・・・あれ?
#include <iostream> int main() { bool value = true; if(value) { std::cout << "trueです!" << std::endl; } return 0; }
ココ>こうですかっ?
渚>そうです!大正解! if文の( )の中が,「value == true」ではなく,「value」なんです。
渚>理由は, 「value == true」は,valueがtrueの場合は, 「true」に置き換わり 「value == true」は,valueがfalseの場合は,falseとtrueは違うので, 「false」に置き換わります。
渚>つまり,value単体で,条件式を満たすことができるのです。
ココ>あれ?じゃぁ,value == falseって書きたかったらどうするんですか?
ココ>こう書くのかな・・・
#include <iostream> int main() { bool value = true; if(value) { } else { std::cout << "falseです!" << std::endl; } return 0; }
渚>いいえ,違います。
渚>実は,こんな書き方をします。
#include <iostream> int main() { bool value = true; if(!value) { std::cout << "falseです!" << std::endl; } return 0; }
ココ>あっ,「!」がついてる!
渚>そうです。この「!」(ビックリ)が付くと,右側が「反対」という意味になり,valueがtrueだったら,!valueはfalseになります。
ココ>なるほど~
渚>これでif文の仕組みの大半は説明し終わりました! あとは,条件式の組み合わせだけですね。
条件式の組み合わせ
渚>今日はこれがラストです!
マナブ>いよいよですね!
渚>先ほど説明した条件式ですが,最終的に「true」または「false」に置き換わります。
渚>それを,頭に入れた状態で聞いてください。
マナブ>はい! ココ>はい!
渚>if( )に入る条件式は,1つだけではありません。実は,複数入れることが可能です。
渚>複数入れるためには,条件式と条件式の間に「&&」(あんどあんど) または「||」(おあおあ)を使います。
渚>それぞれの意味はこんな感じです。
左の条件式 && 右の条件式
右:true | 右:false | |
左:true | 結果:true | 結果:false |
左:false | 結果:false | 結果:false |
左の条件式 || 右の条件式
右:true | 右:false | |
左:true | 結果:true | 結果:true |
左:false | 結果:true | 結果:false |
渚>では,マナブくん,int型の変数[kion][初期値は26]が,25~28だと「適温です!」と表示するプログラムを書いてみましょう。
マナブ>はい!
#include <iostream> int main() { int kion = 26; if(kion >= 25 && kion <= 28) { std::cout << "適温です!" << std::endl; } return 0; }
マナブ>できました!
渚>大正解です! 左側の条件式「kion >= 25」気温が25度以上の時,trueで, 右側の条件式「kion <= 28」気温が28度以下の時,trueになるので, trueかつtrueは,true 正解です。
渚>では,これを||にすると,何が間違いになりますか?
マナブ>||だと,左か右がtrueだったら,trueになるので・・・
#include <iostream> int main() { int kion = 40; if(kion >= 25 || kion <= 28) { // kionが40でも,ここに入るので,||を使うと間違い! std::cout << "適温です?" << std::endl; } return 0; }
マナブ>kionが40度でも,kionが25度以上という条件式は満たしているので, 「適温です?」と表示されてしまいます。40度は暑すぎます。なので,||を使うのは間違いです!
渚>そうですね!その通りです!
渚>こうやって,条件式をつないでいくことで,複雑な条件でも,1行で書くことができます!
渚>ということで,今回は以上となります!
次回
自販機(簡易版)を作ろう
---フリー素材提供-------------------------------------- [ジュエルセイバーFREE] URL:http://www.jewel-s.jp/