if・switch・for・while。プログラムの流れを自在に操る。フローチャートとトレース表で「流れ」を目に見える形にする。
プログラムは、書いた順に上から下へ実行されます。カレーのレシピと同じです。 ところが、実際のレシピにはこんな行がありませんか。「まだ固ければ、もう5分煮る」「アクが出なくなるまで、すくい続ける」。この2つは、上から順に読むだけでは表せません。プログラムにも、流れを曲げたり、同じ場所をぐるぐる回ったりする仕組みが要ります。それが制御構造です。 制御構造は、たっ…
朝、家を出る前に空を見ます。「雨が降っていたら、傘を持つ」。降っていなければ、何もしない。この「もしも〜なら」をそのままコードにしたのがif文です。 書き方はこうです。 かっこの中に書くのが条件式です。条件式の結果は「真」か「偽」のどちらかになります。C言語では 0 が偽、0以外はすべて真という約束で、C23ではbool型の true / false をその…
天気予報を見て服を決めます。「雨なら傘、曇りなら折りたたみ、それ以外なら帽子」。道は2本ではなく3本です。分かれ道が3本以上になったらelse ifの出番です。 動きの要点はひとつだけ。上から順に確かめ、最初に真になった枝だけを実行して、残りは見ずに抜ける。これさえ押さえれば else if で迷うことはありません。 成績判定で試しましょう。 72点は >=…
算数で習った「=」は「等しい」という意味でした。C言語の = は「入れる」です。この1文字の食い違いが、C言語で最も有名な事故を生みます。 仕組みから見ていきましょう。 a = 5 は代入です。そして重要なのは、代入した結果、式全体が「代入した値」を持つという点。つまり a = 5 という式そのものの値は 5 です。 a == 5 は比較です。式の値は真か偽…
遊園地の乗り物に、こんな看板があります。「身長120cm以上、かつ、大人の同伴がある方」。条件が2つ以上あるとき、日本語の「かつ」「または」「〜でない」をCに翻訳するのが論理演算子です。 && は「かつ」。両方が真のときだけ真になります。 || は「または」。どちらかが真なら真になります。 ! は「〜でない」。真と偽をひっくり返します。 実際に使ってみましょ…
ラーメン屋の券売機を思い浮かべてください。「1番ならラーメン、2番ならチャーハン、3番なら餃子」。範囲ではなく、値がぴったり一致するかどうかで分かれます。こういうときはifを並べるよりswitch文のほうが読みやすくなります。 条件ではなく値で飛び先を選ぶのがポイントです。switch に置けるのは整数として扱える値だけ(int・char・列挙型など)で、文…
ラジオ体操の「深呼吸、4回」。回数が先に決まっている繰り返しはfor文の出番です。 3つの部品が並んでいます。動く順番は、慣れるまで少しややこしいので声に出して覚えてください。 初期化式 — 最初の1回だけ実行する 継続条件 — 真なら中へ、偽なら終わり 処理 — 本体を実行する 更新式 — 1周ぶんの後始末(カウンタを進める) 2へ戻る つまり初期化は1回…
お風呂を沸かします。「沸くまで待つ」。何分かかるかは、お湯の量にも季節にもよります。回数が先に読めない繰り返し——それがwhile文の担当です。 条件を確かめてから中へ入り、1周終わるとまた条件を確かめます。偽になった瞬間に抜けます。for から初期化式と更新式を取り去った形、と見ることもできます。 出力は 5 2 1 のあと「終わり」。10を半分にすると5…
アンケートを取ります。「まず1回は必ず質問する。答えが変だったら、もう一度聞く」。while だと「聞く前に条件を確かめる」ことになって、少し不自然です。こういうときはdo-while文が素直に書けます。 whileとの違いは1点だけ。条件を確かめるのが後なので、条件が最初から偽でも本体は必ず1回は実行されます。「とりあえずやってみて、駄目ならもう一度」とい…
探し物をしています。棚を端から見ていって、見つかったらそこでやめる。これがbreakです。仕分けをしています。対象外のものは飛ばして次へ。これがcontinueです。 break — いま入っているループ(または switch)をその場で抜ける。 continue — 本体の残りを飛ばして、次の周回へ進む。ループ自体は続く。 break から見ましょう。1か…
アナログ時計を見てください。長針が1周する間に、短針は1目盛りだけ進みます。外側が1回進む間に、内側は最初から最後まで回りきる。これがループのネスト(入れ子)です。 外側3回、内側3回なら、本体が実行されるのは 3×3 = 9回。掛け算になるのがポイントです。 定番中の定番、九九表を作りましょう。 9行9列の表が出ます。%3d は「3桁ぶんの幅で右寄せ」とい…
実行したら、画面が固まって返ってこない。カーソルだけが点滅している。初めてこれに出くわすと「壊した」と思うものですが、たいていは無限ループです。壊れてはいません。怖がるより、原因の型を覚えたほうが早く片付きます。 まず止め方から。実行中のコンソールで Ctrl + C を押せば中断できます。これを知っているだけで恐怖は半分になります。 無限ループの原因は、ほ…
もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。