- ゲームプログラム入門 C言語:プログラムの流れを変えることができる「制御文」のご紹介
- プログラムの流れを変えることができる「制御文」
- 「ゲームプログラミング > C言語入門/基礎」関連ページのご紹介
- シューティングゲーム・関連ページのご紹介
- 歴代名作シューティングゲームのご紹介|まとめ
- 歴代シューティングゲーム全ゲームタイトル一覧のご紹介|まとめ
- シューティングゲームの人気シリーズのご紹介
- シューティングゲーム関連ページのご紹介|まとめ
- シューティングゲーム解説ページのご紹介|まとめ
- シューティングゲーム・ハード関連(周辺機器)のご紹介|まとめ
- シューティングゲーム雑誌/書籍関連のご紹介|まとめ
- 【TPS名作・傑作・まとめ】TPS傑作・名作・全ゲームタイトルのご紹介│まとめ│~トゥームレイダー│バイオハザード│アンチャーテッドなど~
- 【名作RPG】RPGのご紹介│まとめ│
- 【TOP:SLG】おすすめ名作シミュレーションゲームのご紹介
- 【TOP】レースゲーム関連(おすすめ名作・評価ランキン)のご紹介
- TOP【おすすめスポーツゲーム】のご紹介~MLB,NBA,NFL,FIFAなど~
- 【TOP】パズルゲームのご紹介
- 【ゲームランキング】世界・国内で最も売れたゲームランキングのご紹介
- 名作ゲームのご紹介│まとめ│家庭用ゲーム・PC・アーケードなど
- 【機種別ゲームTOP】PC・家庭用・アーケードゲーム・周辺機器のご紹介
- ジャンル別ゲームタイトルのご紹介│まとめ│
- 【ゲームTOP】ゲーム関連ページのご紹介
- 【書籍・雑誌TOP】書籍・雑誌サイトマップ関連ページのご紹介
- 【ホビーTOP】ホビーサイトマップ関連ページのご紹介
ゲームプログラム入門 C言語:プログラムの流れを変えることができる「制御文」のご紹介
ご訪問ありがとうございます。
今回は、ゲームプログラム入門 C言語:プログラムの流れを変えることができる「制御文」をご紹介します。
「ゲームプログラミング > C言語入門/基礎」関連サイトマップのご紹介
「ゲームプログラミング > C言語入門/基礎」関連をご紹介します。
シューティングゲーム | ゲーム | 中古・新品通販の駿河屋
プログラムの流れを変えることができる「制御文」
C言語のプログラムは、他のプログラミング言語と同じように、普通は上から下へと文が実行されていきますが、その実行の流れを変える「制御文」というものがあります。ここでは、制御文とは何であるかを説明したあと、制御文の一つである「条件分岐」について説明します。
制御文
プログラムは、基本的に「main関数」の上から下に向かって、ソースコードに書かれた順番に実行されていきますが、プログラムの内容によっては、順番に実行したくないこともあります。同じことを繰り返す時や条件によって違ったことをさせたい場合が、これにあたります。
どういうことかを簡単に説明してみましょう。
例えば、ある書類のコピーをAさんからCさんまで、3人分必要だとします。コピー機は、コピー室にあります。コピーを3人分取ることを、ソースコード風に書いてみます。
1 | //コピーを取ることのソースコード風 |
2 | コピー室へ行く |
3 | コピーを取る(Aさんのぶん) |
4 | 席へ戻る |
5 | コピー室へ行く |
6 | コピーを取る(Bさんのぶん) |
7 | 席へ戻る |
8 | コピー室へ行く |
9 | コピーを取る(Cさんのぶん) |
10 | 席へ戻る |
2行目から4行目までの内容を、3回繰り返して書かなければなりません。もし、これが3人ぶんではなくて、100人ぶんだったらどうでしょうか。気が遠くなりますね。また、コピー室へ行くことができなくなっていたら、コピーを取ることは無理です。
同じ処理を繰り返すことができる制御文
C言語には制御文というものがあり、これを使えば、条件によって実行せずに飛ばしたり、同じ処理を繰り返したりといったことができるようになります。
制御文には「条件分岐」と「繰り返し」があります。
プログラムの制御構造
プログラムは、基本的に実行文を上から順に実行していく単純な構造(順次実行)をしていますが、実際のプログラムでは、条件によって実行する文を変更したり、同じ文を何回も実行したりと、必ずしも上から順に実行するわけではありません。このようなプログラムの流れを決定するものを「プログラムの制御構造」といいます。
すべてのアルゴリズムは、たった3つの制御構造の組み合わせで記述することができる
また、とても大事なことなのですが、すべてのアルゴリズムは、たった3つの制御構造の組み合わせで記述することができるのです。その3つの制御構造とは「順次実行」「分岐実行(条件分岐)」「繰り返し実行(繰り返し)」です。
3つの制御構造を図で確認
図で、3つの制御構造をもう一度確認してみましょう。
順次実行
プログラムを上から順に実行していくことを順次実行といいます。
分岐実行(条件分岐)
条件によって、プログラムの流れを変更することを条件分岐といいます。
繰り返し実行(繰り返し)
条件が成立するまでプログラムを繰り返すことを繰り返しといいます。
条件分岐
ある条件が成立するか、しないかによって、実行する文やブロックを選択できるようにするのが「条件分岐」です。先ほどの例で考えると、コピー室へ行くことができなくなっていた時などに使えばよいでしょう。
//条件分岐を使ってみる | |
1 | 「もし、コピー室へ行くことができないならば」 |
2 | 何もしない |
3 | 「そうでなければ」 |
4 | コピー室へ行く |
5 | コピーを取る(Aさんのぶん) |
6 | 席へ戻る |
▼C言語には、条件分岐に「if-else文」「switch文」「break文」があります。
if-else文
if-else文とは、ifが「もし〜ならば」を表し、elseは「そうでなければ」を表します。また、if-else文には次のように3つの書き方があります。
if文
if(条件) { 文1; /* 条件が成立したら実行する文 */ 文1; /* 条件が成立したら実行する文 */ }
条件が成立すると2行目から4行目を実行しますが、そうでなければ5行目に進みます。
if-else文
if(条件) { 文1; /* 条件が成立したら実行する文 */ 文2; /* 条件が成立したら実行する文 */ } else { 文3; /* 条件が成立しなかったら実行する文 */ 文4; /* 条件が成立しなかったら実行する文 */ }
条件が成立すると、2行目から4行目を実行して9行目に進みます。そうでなければ、6行目から8行目を実行します。
if-else / if-else文
if(条件1) { 文1; /* 条件1が成立したら実行する文 */ 文2; /* 条件1が成立したら実行する文 */ } else if(条件2) { 文3; /* 条件1が成立せず、条件2が成立したら実行する文 */ 文4; /* 条件が成立せず、条件2が成立したら実行する文 */ } else { 文5; /* どの条件も成立しなかったら実行する文 */ 文6; /* どの条件も成立しなかったら実行する文 */ }
条件1が成立すると、2行目から4行目までを実行し、13行目に進みます。そうでなくて、条件2が成立すると、6行目から8行目までを実行し、13行目に進みます。どの条件も成立しないと、10行目から12行目を実行します。
「if-else文」のご紹介
それでは、実際にC言語で「if-else文」を使ってみましょう。
/* MyC4.c */ #include <stdio.h> int main(void) { int a; a = 1; printf("a = %d\n", a); // if文 if(a < 5) { printf("Statement 1\n"); } //if-else文 if(a > 5) { printf("Statement 2\n"); } else { printf("Statement 3\n"); } //if-elseif-else文 if(a > 5) { printf("Statement 4\n"); } else if(a < 0) { printf("Statement 5\n"); } else { printf("Statement 6\n"); } return 0; }
作成手順と実行結果
- テキストエディタでソースコードを入力します。
- 「MyC」フォルダにファイル名「MyC4.c」で保存します。
- コマンドプロンプトを起動します。
- 「c dc:\MyC」と入力してください。
- 「gcc MyC4.c -o MyC4」と入力します。
- 「Myc4」と入力します。
実行結果
a = 1 Statement 1 Statement 3 Statement 6
成立したものだけが出力されます。
解説
if文
11行目から13行目で、if文を使っています。
// if文 if(a < 5) { printf("Statement 1\n"); }
ここの意味は「もし変数の値が5より小さければ「statement 1」と画面に出力する」です。変数aには、7行目で「1」を代入していますので、画面には「statement1」と表示されます。
int a; a = 1;
if-else文
15行目から19行目で、if-else文を使っています。
//if-else文 if(a > 5) { printf("Statement 2\n"); } else { printf("Statement 3\n"); }
ここの意味は「もし変数の値が5より大きければ「statement 2」と、そうでなければ「statement 3」と画面に出力する」です。変数aには、7行目で「1」を代入していますので、画面には「statement 3」と表示されます。
int a; a = 1;
if-elseif-else文
21行目から27行目で、if-elseif-else文を使っています。
//if-elseif-else文 if(a > 5) { printf("Statement 4\n"); } else if(a < 0) { printf("Statement 5\n"); } else { printf("Statement 6\n"); }
ここの意味は「もし変数の値が5より大きければ「statement 4」、そうではなくて0より小さければ「statement5」、それらのどちらでもなければ「statement 6」と画面に出力する」です。変数aには、7行目で「1」を代入していますので、画面には「statement 6」と表示されます。
条件を組み合わせる
サンプルソースコード「MyC4.c」の11行目の「a < 5」という部分は「aは5より小さい」という条件を表しています。
// if文 if(a < 5) { printf("Statement 1\n"); }
関係演算子と論理演算子
C言語で条件を書くためには、次のような関係演算子や論理演算子を使います。
▼関係演算子 | ||
演算子 | 書き方 | 意味 |
> | A > B | AがBより大きいとき成立 |
>= | A >= B | AがB以上のとき成立 |
< | A < B | AがB未満のとき成立 |
<= | A <= B | AがB以下のとき成立 |
== | A == B | AとBが等しいとき成立 |
!= | A != B | AとBが等しくないとき成立 |
変数の大きさを限定する
この行では、「aが5未満」であれば、12行目を実行するということです。ここで、条件についてもう少し詳しく見てみましょう。
プログラムを作り始めると、変数の大きさを限定したくなる時があります。
中古車を探したいという条件式
例えば、価格が100万円以上で200万円以下の中古車を探したいというようなときです。このような時は、「中古車の価格が100万円以上」という条件と、「中古車の価格が200万円以下」という条件を組み合わせればいいのです。
また、価格が100万円以上で軽自動車の中古車を探したいのならば、「中古車の軽自動車」という条件と「中古車の価格が100万円以上」という条件を組み合わせればよいでしょう。
▼論理演算子 | ||
演算子 | 書き方 | 意味 |
&& | A && B | Aという条件が成立し、 かつ Bという条件も成立するならば |
|| | A || B | Aという条件が成立するか、 または Bという条件が成立するかならば |
! | !A | Aという条件が成立しないとき |
論理演算子を使って先ほどの条件を書いてみると、次のようになります。
論理演算子
■組み合わせ
・「中古車の価格が100万円以上」という条件
・「中古車の価格が200万円以下」という条件
↓
「中古車の価格>=100万円」&&「中古車の価格<=200万円」
■組み合わせ
・「中古車は軽自動車」という条件
・「中古車の価格が100万円以上」という条件
↓
「中古車軽自動車」&&「中古車の価格>=100万円」
それでは、実際にC言語で「条件の組み合わせ」を使ってみましょう。
C言語で「条件の組み合わせ」
/* MyC5.c */ #include <stdio.h> int main(void) { int a; int b; a = 5; b = 1; printf("a = %d\n", a); printf("b = %d\n", b); //aが0より大きい、かつaが10より小さい if(a > 0 && a < 10) { printf("a > 0 and a < 10\n"); } //aが0より大きい、かつbが1である if(a > 0 && b == 1) { printf("a > 0 && b == 1\n"); } //aが0でない、またはbが1である if(a != 0 || b == 1) { printf("a !=0 or b == 1\n"); } return 0; }
作成手順と実行結果
- テキストエディタでソースコードを入力します。
- 「MyC」フォルダにファイル名「MyC5.c」で保存します。
- コマンドプロンプトを起動します。
- 「c dc:\MyC」と入力してください。
- 「gcc MyC5.c -o MyC5」と入力します。
- 「MyC5」と入力します。
実行結果
a = 5 b = 1 a > 0 and a < 10 a > 0 && b == 1 a !=0 or b == 1
それぞれの条件に合ったものが表示されます。
「ゲームプログラミング > C言語入門/基礎」関連サイトマップのご紹介
「ゲームプログラミング > C言語入門/基礎」関連をご紹介します。
シューティングゲーム | ゲーム | 中古・新品通販の駿河屋
「ゲームプログラミング > C言語入門/基礎」関連ページのご紹介
「ゲームプログラミング > C言語入門/基礎」関連ページをご紹介します。
【STG】シューティングゲーム・サイトマップのご紹介
80年から2000年代のシューティングゲームについてご紹介します。
シューティングゲーム | ゲーム | 中古・新品通販の駿河屋
シューティングゲーム・関連ページのご紹介
シューティングゲーム・関連ページをご紹介します。
歴代名作シューティングゲームのご紹介|まとめ
歴代シューティングゲーム全ゲームタイトル一覧のご紹介|まとめ
シューティングゲームの人気シリーズのご紹介
シューティングゲーム関連ページのご紹介|まとめ
シューティングゲーム解説ページのご紹介|まとめ
シューティングゲーム・ハード関連(周辺機器)のご紹介|まとめ
シューティングゲーム雑誌/書籍関連のご紹介|まとめ
【ゲームジャンル別】サイトマップのご紹介
【ゲームジャンル別】サイトマップをご紹介します。
ゲームジャンル別サイトマップ | ||||
ゲームTOP > ランキング│傑作・名作│機種別│ジャンル別 |
||||
ゲームジャンル別TOP >関連ページ│名作│ランキング | ||||
【ジャンル別関連ページ】 アクション系(プラットフォーム│対戦アクション│FPS│TPS│STG│フライト)|AVG│RPG│SLG│レース│スポーツ│パズル│テーブル |
||||
【アクション】プラットフォーム│対戦アクション│FPS│TPS│STG│フライト 【アドベンチャー】AVG│ 【RPG】RPG│SRPG│ARPG 【SLG】SLG│ストラテジー│ターン制SLG│RTS 【レース】レース 【スポーツ系】スポーツ│プロレス 【パズル】 【テーブル】麻雀 |
||||
【ジャンル別】おすすめ評価ランキング アクション│AVG│RPG│SLG│レース│スポーツ│パズル│テーブル |
||||
【歴代傑作・神ゲー(2021~1996年)】99~94点│93~92点│91点│90点 ■【アクション系ゲーム】■ アクション│プラットフォーム│対戦アクション│FPS│TPS│フライト│ 【対戦アクション】一覧│98~80点│79~70点 【FPS】まとめ│90点以上│89~86点│85~83点│82~80点 【アドベンチャーゲーム】 ■【RPG系】■ RPG│SRPG│ARPG 【RPG】一覧│傑作(96~90点)│89~85点│84~82点│81~80点│ ■【シミュレーション系ゲーム】■ SLG│ストラテジー│ターン制SLG│RTS│街づくりSLG ■【レース】■ ■【スポーツ系ゲーム】■スポーツ│プロレス ■【パズル】 |
||||
シリーズ・テーマ | ||||
■■│コペンギンTOP > ゲーム│ホビー│書籍・マンガ│■■ |
||||
サイトマップ一覧 |
ゲームジャンル別・関連ページのご紹介
ゲームジャンル別・関連ページをご紹介します。
【TPS名作・傑作・まとめ】TPS傑作・名作・全ゲームタイトルのご紹介│まとめ│~トゥームレイダー│バイオハザード│アンチャーテッドなど~
【格ゲー・名作】アーケード・家庭用・格闘ゲームのご紹介~名作(173 本)・全タイトル(1462本)のご紹介
【名作STG】シューティングゲームのご紹介
【AVG】アドベンチャーゲームのご紹介│まとめ│
【名作RPG】RPGのご紹介│まとめ│
【TOP:SLG】おすすめ名作シミュレーションゲームのご紹介
【TOP】レースゲーム関連(おすすめ名作・評価ランキン)のご紹介
TOP【おすすめスポーツゲーム】のご紹介~MLB,NBA,NFL,FIFAなど~
【TOP】パズルゲームのご紹介
ゲームTOPサイトマップ
ゲームTOPのサイトマップをご紹介します。
【ゲームTOP】サイトマップ | ||||
ゲームTOP > ランキング│傑作・名作│機種別│ジャンル別 | ||||
■ランキングTOP > ハード│ソフト(売上(世界│国内)│海外評価) ■傑作・名作ゲームTOP > ■ゲーム機種別TOP > 据置│携帯│AC│PC│周辺機器 ■ジャンル別TOP > アクション系(プラットフォーム│対戦アクション│FPS│TPS│STG│フライト)|AVG│RPG│SLG│レース│スポーツ│パズル│テーブル |
||||
■■│コペンギンTOP > ゲーム│ホビー│書籍・マンガ│■■ |
||||
サイトマップ一覧 |
ゲーム関連ページのご紹介
ゲーム関連ページをご紹介します。
【ゲームランキング】世界・国内で最も売れたゲームランキングのご紹介
名作ゲームのご紹介│まとめ│家庭用ゲーム・PC・アーケードなど
【機種別ゲームTOP】PC・家庭用・アーケードゲーム・周辺機器のご紹介
ジャンル別ゲームタイトルのご紹介│まとめ│
コペンギン・サイトマップ
コペンギンのサイトマップをご紹介します。
【コペンギンTOP】サイトマップ | ||||
コペンギンTOP > ゲーム│ホビー│書籍・マンガ│ | ||||
■■│コペンギンTOP > ゲーム│ホビー│書籍・マンガ│■■ |
||||
サイトマップ一覧 |
懐かしの名作から最新作までの豊富な品揃え!通販ショップの駿河屋
コペンギンサイトマップ関連ページのご紹介
コペンギン関連ページをご紹介します。