C言語学習ポータル(無料版) 学習コンテンツ 人間がコンピュータになる訓練

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

全8トピック・無料版に収録

トレース表で1行ずつプログラムを追い、デバッグ思考の型を先に身につける。このポータル独自の基礎訓練。

アプリでこのトラックを学ぶ(無料・登録不要)

収録トピック

トレース表とは——実行を目で見る道具

ここからが、このポータルでいちばん力を入れている訓練です。やることは一つ。あなたがコンピュータになることです。 人はプログラムを読むとき、無意識に「こう動くはずだ」と期待を混ぜてしまいます。ところが機械は、書いてあることしかしません。この差がバグの正体です。だから、期待をはさむ余地のない読み方を身につけます。それがトレース表です。 トレース表とは プログラム…

代入をトレースする

まずは一番やさしい形、代入だけのプログラムをトレースします。ここを完璧にしておくと、あとがずいぶん楽になります。 代入は「上書き」である C言語の = は、数学のイコールではありません。右側を計算して、左側の箱に入れるという命令です。読むときは右から左へ、と覚えてください。 2行目のあと、a の値は5です。3はどこかに残っているのではなく、消えています。箱に…

分岐をトレースする

次は道が2つに分かれる形、分岐のトレースです。ここでトレース表の書き方に1つ工夫を加えます。 条件の結果を列に足す 分岐があるプログラムでは、変数の値だけでなく「条件がどう判定されたか」を残します。列を1つ増やして、真(成り立った)か偽(成り立たなかった)かを書きましょう。 ※ 実際のC言語では変数名に日本語は使いませんが、ここでは読みやすさを優先しています…

ループをトレースする

トレースの本番はここです。繰り返しが入るとトレース表は一気に縦へ伸びますが、やることは今までと1ミリも変わりません。1行ずつ書くだけです。 1周は3つの部分でできている 繰り返しは、次の3つが順番に回っています。 条件判定 — 続けるか、抜けるか 本体 — 中身の処理 更新 — 次の周に向けて値を変える このプログラムを、下のビジュアライザで1ステップずつ追…

バグを見つける思考法——仮説と検証

プログラムが思い通りに動かない。これは失敗ではなく、通常運転です。プロでも1日に何度も起こります。違うのは、その後の動き方です。 バグとは何か バグとは、プログラムが期待と違う動きをすることです。ここで一つ、大事な確認を。 プログラムは、あなたが思った通りには動きません。書いた通りに動きます。 つまりバグがあるとき、機械は正常です。ずれているのは、頭の中の想…

ラバーダック・デバッグ

海外のプログラマの机には、ゴム製のアヒルのおもちゃが置いてあることがあります。ふざけているわけではありません。アヒルに向かってコードを説明するという、由緒正しいデバッグ手法のためです。 やり方 詰まっているコードを開く アヒル(ぬいぐるみでも観葉植物でも可)に向かって、声に出して説明する 「この行は〜をしています。なぜなら〜」と、1行ずつ、飛ばさずに 説明が…

エラーメッセージは敵ではない

画面いっぱいに赤い英語が出ると、初めての人はまず心が折れます。でも大丈夫です。あれは怒られているのではなく、手紙をもらっているのです。 エラーメッセージは、コンパイラという翻訳者からの報告書です。しかも「どこで」「何が」おかしいかまで書いてくれています。これほど親切な情報が、他にあるでしょうか。 読む場所は決まっている 形式はほぼ共通です。 hello.c …

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

第0部の締めくくりです。ここまでに学んだ道具を全部使って、少し長めのプログラムを紙の上だけで実行します。 題材 % は割り算の余りを求める記号です。i % 2 == 0 は「i を2で割った余りが0」、つまり偶数かどうかを判定しています。文法はまだ習っていませんが、ここまでの説明で十分読めるはずです。 手順どおりにやる 表の列を決める(周 / 行 / i /…

このトラックで出てくる用語

エラーメッセージ 構文エラー コンパイル警告 実行時エラー デバッグ トレース表 バグ ラバーダック・デバッグ 論理エラー

ほかのトラック

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

完全版(BOOTH)を見る

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

Web版 / BOOTH