【合格実践記】白紙の画面からC言語で「ハノイの塔」をフルスクラッチ実装|再帰処理の壁を突破し、プログラミング総合型選抜を制するまで

高校1年次から当ラボに通い、当時はPythonを少し齧る程度だった生徒の指導事例(ケーススタディ)です。当初は一般的な大学入試を想定して基礎固めを進めていましたが、高2の夏頃、本人が自らプログラミングスキルを活かせる大学の入試方式(総合型選抜・AO入試)を発見。「これに挑戦したい」と、自らの意思で舵を切ったことからこのプロジェクトはスタートしました。

過去データや過去問が一切存在しない中、試験内容は大きく分けて「2つの壁」として立ちふさがりました。

  • コンピュータの基礎知識試験(反復処理、条件分岐、基本アルゴリズムなど)
  • C言語によるオリジナル制作物のプレゼンテーション・質疑応答

知識試験に対してはラボでの学習の蓄積で対応できる算段はあったものの、最大の難関は「どれほどのレベルの制作物を作れば合格ラインに届くのかが全く分からない」という不確定要素でした。

01. 実装の壁:白紙から「ハノイの塔」を構築する苦闘

「何かを作ろう」と思い立ったものの、これまではテキストベースの演習が中心。いざ、完全な白紙の状態から画面に出力し、動くプログラムをゼロから組み上げるとなると、手が完全に止まってしまいました。

どこから手をつけてよいやらという感じで、作り始めた時はかなりくじけまくっていましたね。

当時の指導記録より

ここで指導の軸としたのは、「全体を一度に作ろうとせず、小さなモジュール(部品)に切り取って各個撃破する」というエンジニアリングの基本原則です。そして、データ構造とアルゴリズムの山場として選んだのが、ターミナル画面上で動作し、円盤の枚数(変数 n)を動的にセットできる「ハノイの塔」のシミュレーション実装でした。

白紙の状態からモジュール単位で組み上げたC言語プログラム
再帰処理の挙動とターミナル上での出力シミュレーション検証

特に、多くのプログラミング学習者がつまずく「再帰処理(Recursion:関数内で自分自身を呼び出す構造)」の概念理解は容易ではありませんでした。高校数学の漸化式(a_n = 2a_{n-1} + 1)とも直結するこのロジックは、頭の中だけで追うのが極めて難しいため、紙の上での図解とコードのトレースを徹底的に重ね、「本番の面接や質疑応答で、自分の言葉でそのロジックを完全に説明し切る」ことを目標に据えました。

02. 完遂と突破:ロジックの暗唱、そしてプレゼンテーションへ

「自分でやりたいと言い出したことだから」と、本人の執念はここから一気に加速しました。

モジュール単位で組み上げたコードを結合し、ターミナル上でエラーを一つずつデバッグ。最終的に「ハノイの塔」のシミュレータを完成させただけでなく、その内部アルゴリズムと再帰の挙動を完全に自分のものにし、面接官の前でよどみなくロジックを暗唱・説明できるレベルまでプレゼンテーションを鍛え上げました。

白紙の状態から始まり、自らの手でコードをコンパイルし、難解な再帰処理を突破したこの一連のプロセスは、単なる受験対策の枠を超え、彼を「自走するエンジニア(設計者)」へと変貌させました。そして見事、大阪電気通信大学 情報通信工学部への合格を勝ち取りました。

BEFORE // 出願前の状態
高1からPythonの基礎を少し学習。当初は一般入試を想定していたが、高2の夏に自らプログラミングスキルを活かせる入試方式を発見し、挑戦を決意。
PROCESS // 実装と指導アプローチ
白紙からのC言語「ハノイの塔(円盤変数可変)」シミュレータのスクラッチ開発。モジュール分割による各個撃破と、最大の難所である「再帰処理」の論理的理解・プレゼン暗唱を完遂。
OUTCOME // 到達成果
過去問なき未知の試験と質疑応答を自走で突破し、大阪電気通信大学・情報通信工学部に合格。

CASES & ADMISSIONS // ENGINEERING & ROBOTICS LAB

仕様書のない未知の課題を突破する「本物のエンジニアリング思考」

当ラボでは、前例のない課題や未知の入試方式に対しても、自ら仮説を立て、モジュール単位で分解し、実装・検証をやり抜く力を育成しています。他の指導事例やカリキュラムの詳細については、以下のマスターページをご確認ください。