【現役エンジニアが解説】結果が3つ以上でパニック? 情報I「入れ子の条件分岐」で鍛える本物の論理的思考
こんにちは!オンライン家庭教師のこばやしです。
普段はフリーランスのITエンジニアとしてシステム開発の現場に立ちながら、中高生向けに「情報I」「理系数学」「英語」を指導しています。
高校の「情報I」で学ぶプログラミングの「条件分岐(もし〜なら)」。
「もし雨が降っていたら傘を持つ。降っていなければ持たない」のような、結果が2パターン(Aか、Bか)の分岐であれば、すんなり理解できる生徒がほとんどです。
しかし、結果が3パターン以上になった途端、頭が真っ白になってしまう人が急増します。
今日は、なぜ条件が増えると難しくなるのか、そしてこの壁を乗り越えることで手に入る「本物のプログラミング的思考」についてお話しします。
■ 「未成年・成人・シルバー」で考える3パターンの罠
例えば、ある施設の入場料を計算するシステムを作るとします。条件は以下の3パターンです。
20歳未満は「未成年」
20歳以上、60歳未満は「成人」
60歳以上は「シルバー」
これをプログラムの言葉(条件分岐)で組み立てるとき、「条件を書く順番」を少しでも間違えると、システムはとんでもない大事故を起こします。
もし、コンピュータに以下のような順番で指示を出してしまったらどうなるでしょうか?
【悪い例】
もし(年齢 < 60)なら、「成人」と表示する
そうではなく、もし(年齢 < 20)なら、「未成年」と表示する
それ以外なら、「シルバー」と表示する
このプログラムに「15歳」のデータを入れると、コンピュータは一番上の「年齢 < 60」という条件を見て「はい、15歳は60未満ですね!あなたは【成人】です!」と判断し、そこで処理を終わらせてしまいます。
15歳なのに、お酒が買える成人のチケットが発行されてしまう(=バグが起きる)わけです。
■ 頭で考えず「数直線」で整理しよう
正しく動かすためには、以下のように「狭い条件から順番にふるいにかける」必要があります。
【正しい例】
もし(年齢 < 20)なら、「未成年」と表示する
そうではなく、もし(年齢 < 60)なら、「成人」と表示する ※この時点で20歳以上は確定
それ以外なら、「シルバー」と表示する ※この時点で60歳以上は確定
言葉や頭の中だけで「あれ? 20以上で60未満だから…」と考えていると、現場のプロのエンジニアでも「条件の漏れ(誰にも当てはまらない年齢ができる)」や「条件のダブり」を起こしてしまいます。
だからこそ、現役エンジニアは複雑な条件分岐を作るとき、必ず紙に**「数直線」**を書いて整理します。
数学の授業で「不等式」を解くときに描いた、あの数直線と全く同じです。ここでも「情報I」と「数学」がピタッと繋がるんですね。
■ これが流行りの「プログラミング的思考」の正体です
最近よく耳にする「論理的思考(プログラミング的思考)」とは、パソコンを早く叩けることではありません。
結果が3つ以上になるような複雑な状況を前にして、「どういう順番で条件を並べれば、漏れなく、ダブりなく、意図した通りに動くか?」を、図や数直線を使いながら徹底的に考え抜く力のことです。
これはプログラミングに限らず、将来どんな仕事に就いても求められる、一生モノのスキルになります。
私の授業では、この「考え抜く過程」を一番大切にしています。
いきなり正解を教えるのではなく、生徒自身が「あ!この順番だと15歳が成人になっちゃう!」と気づき、自分で論理を組み立て直せるように丁寧にサポートします。
「複雑な条件分岐の問題を見ると諦めてしまう」
「将来社会で役立つ『考える力』を身につけさせたい」
そんな方は、ぜひ一度体験授業にいらしてください。 現役エンジニアと一緒に、パズルを解くように論理を組み立てる面白さを体験しましょう!
【プロフィール】 taka|納得感を大切にするフリーランスエンジニア
北海道大卒。現役のITエンジニアとして活動しながら、オンライン家庭教師として中高生に「情報I」「数学」「英語」を指導中。企業の新人ITエンジニア研修のメイン講師も務めるプロが、「仕組みから理解する」論理的な指導を行います。