🔍 人間がコンピュータになる訓練
🎯 代入・分岐・繰り返しが混ざったプログラムを、最後まで自力でトレースできる
第0部の締めくくりです。ここまでに学んだ道具を全部使って、少し長めのプログラムを紙の上だけで実行します。
題材
int sum = 0;
int i = 1;
while (i <= 5) {
if (i % 2 == 0) {
sum = sum + i;
}
i = i + 1;
}
printf("%d\n", sum);% は割り算の余りを求める記号です。i % 2 == 0 は「i を2で割った余りが0」、つまり偶数かどうかを判定しています。文法はまだ習っていませんが、ここまでの説明で十分読めるはずです。
手順どおりにやる
i / sum / 条件 / 出力)1周目の頭はこうなります。
周 | 行 | i | sum | 条件 | 出力
---+----+---+-----+-----------+-----
ー| 1 | ー| 0 | |
ー| 2 | 1 | 0 | |
1 | 3 | 1 | 0 | 1<=5 真 |
1 | 4 | 1 | 0 | 1%2==0 偽 |
1 | 7 | 2 | 0 | |1周目は i が1(奇数)なので、5行目の sum = sum + i; は通りません。だから表にも書きません。続きはご自分の紙で最後まで進めてください。答え合わせは演習問題でどうぞ。
確認したい3つの勘所
i が偶数のときだけ)i はいくつか(5ではありません)sum はいくつか答えが出たら、そこで終わりにしない
表を最後まで書けたら、もう一段だけ確かめてください。この結果は、期待した結果か。
もし「2と4を足して6のはずが、表では6になった」なら合格です。もし違っていたら、表の中で最初におかしくなった行を探します。そこが原因の場所です。この紙の上の結果と実際の実行結果を突き合わせる作業が、そのままデバッグになります。
第0部を終えるあなたへ
ここまでで、次のことができるようになりました。
これは、C言語の文法を1つも知らない段階で身につけたものです。そして正直に言えば、ここから先で身につく文法よりも、この土台のほうが長く効きます。言語は移り変わりますが、分解する力とトレースする力は、どの言語でも、AIと組む時代でも減価しません。
次の第1部からは、いよいよC言語そのものに入ります。Hello, World! の1行を、あなたはもう「ただのおまじない」としてではなく、機械の中で何が起きるかを想像しながら読めるはずです。
プログラムを1行ずつ実行したときの、各変数の値の変化を表にまとめたもの。頭の中でコンピュータになりきって処理を追いかける道具にあたる。変数の値がどう変わっていくかを紙の上で追うことで、頭の中の実行イメージがはっきりする。
人間が読み書きできる形でプログラムを書いた文章そのもの。この段階ではコンピュータはまだ直接実行できず、機械語への変換が必要になる。この文章を人間が理解しやすい形のまま保存したファイルがソースファイルと呼ばれる。
0と1の並びだけで書かれた、CPUが直接理解できる命令の集まり。人間には読みにくいが、コンピュータが実行できる唯一の言葉にあたる。同じソースコードでも、CPUの種類が変われば生成される機械語も変わってくる。
問題を解くための手順を、誰が読んでも同じ結果になるように整理したもの。料理のレシピのように、順序立った具体的な手続きのことを指す。同じ問題でも、良いアルゴリズムを選ぶことで処理速度が大きく変わることがある。
プログラムに含まれる誤りのこと。意図した動きと実際の動きがずれている状態を指し、プログラミングにつきものの現象として扱われる。「虫」を意味する言葉が由来とされ、古くから使われてきたプログラミング用語。
もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。