C言語学習ポータル(無料版) 学習コンテンツ 人間がコンピュータになる訓練 総仕上げ——紙上プログラム実行

🔍 人間がコンピュータになる訓練

総仕上げ——紙上プログラム実行

無料公開版に収録・読む目安 14分

🎯 代入・分岐・繰り返しが混ざったプログラムを、最後まで自力でトレースできる

第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」、つまり偶数かどうかを判定しています。文法はまだ習っていませんが、ここまでの説明で十分読めるはずです。

手順どおりにやる

  1. 表の列を決める(周 / 行 / i / sum / 条件 / 出力)
  2. 変数が作られた行から1行ずつ書く
  3. 条件は、変数を今の値に置き換えてから判定する
  4. 通らなかった行は書かない
  5. ループを抜けたあとの値まで、必ず追う

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つの勘所

答えが出たら、そこで終わりにしない

表を最後まで書けたら、もう一段だけ確かめてください。この結果は、期待した結果か。

もし「2と4を足して6のはずが、表では6になった」なら合格です。もし違っていたら、表の中で最初におかしくなった行を探します。そこが原因の場所です。この紙の上の結果と実際の実行結果を突き合わせる作業が、そのままデバッグになります。

ビット表が書けたら、もう半分はプログラマだよ。あとは文法を覚えるだけ。

第0部を終えるあなたへ

ここまでで、次のことができるようになりました。

これは、C言語の文法を1つも知らない段階で身につけたものです。そして正直に言えば、ここから先で身につく文法よりも、この土台のほうが長く効きます。言語は移り変わりますが、分解する力とトレースする力は、どの言語でも、AIと組む時代でも減価しません。

次の第1部からは、いよいよC言語そのものに入ります。Hello, World! の1行を、あなたはもう「ただのおまじない」としてではなく、機械の中で何が起きるかを想像しながら読めるはずです。

要点まとめ

アプリで演習問題まで解く(無料・登録不要)

この項目に出てくる用語

トレース表とれーすひょう

プログラムを1行ずつ実行したときの、各変数の値の変化を表にまとめたもの。頭の中でコンピュータになりきって処理を追いかける道具にあたる。変数の値がどう変わっていくかを紙の上で追うことで、頭の中の実行イメージがはっきりする。

ソースコードそーすこーど

人間が読み書きできる形でプログラムを書いた文章そのもの。この段階ではコンピュータはまだ直接実行できず、機械語への変換が必要になる。この文章を人間が理解しやすい形のまま保存したファイルがソースファイルと呼ばれる。

機械語きかいご

0と1の並びだけで書かれた、CPUが直接理解できる命令の集まり。人間には読みにくいが、コンピュータが実行できる唯一の言葉にあたる。同じソースコードでも、CPUの種類が変われば生成される機械語も変わってくる。

アルゴリズムあるごりずむ

問題を解くための手順を、誰が読んでも同じ結果になるように整理したもの。料理のレシピのように、順序立った具体的な手続きのことを指す。同じ問題でも、良いアルゴリズムを選ぶことで処理速度が大きく変わることがある。

バグばぐ

プログラムに含まれる誤りのこと。意図した動きと実際の動きがずれている状態を指し、プログラミングにつきものの現象として扱われる。「虫」を意味する言葉が由来とされ、古くから使われてきたプログラミング用語。

同じトラックのほかの項目

トレース表とは——実行を目で見る道具トレース表の作り方と書き進め方のルールを覚え、自分で表を用意できるようになる 代入をトレースする代入が「右辺を計算して左辺に上書きする」動作だと理解し、値の推移を正確に追える 分岐をトレースする条件の真偽を判定し、通った道だけをトレース表に残せるようになる ループをトレースする繰り返しの1周ごとに条件判定・本体・更新を追い、ループ終了後の値まで正しく求められる バグを見つける思考法——仮説と検証バグの原因を絞り込む手順(再現→範囲を狭める→仮説→1つずつ検証)を身につける ラバーダック・デバッグコードを声に出して説明することで、自分の理解の穴を見つけられるようになる エラーメッセージは敵ではないエラーメッセージの構造を知り、英語のまま読んで対処できるようになる
‹ エラーメッセージは敵ではない

もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。

完全版(BOOTH)を見る

📚 姉妹教材:手を動かして覚える Linux 教材 — Linuxとインフラの仕組みを地図で学ぶ

Web版 / BOOTH