正六角形描画プログラムの繰返し回数と曲がる角度を考える
ITパスポート試験 令和8年度 問88 / アルゴリズムとプログラミング › アルゴリズムとプログラミング
過去問にチャレンジ
プログラミングすることによって、ペンの上げ下げ、直進及び右回りの方向転換が可能なロボットがある。このロボットに1辺が1mの正六角形を描画させるプログラムを作成した。次の正六角形描画プログラムのa、bに入れる字句の適切な組合せはどれか。 〔正六角形描画プログラム〕 (1) ペンを下ろす。 (2) 処理回数のカウンタに【a】を設定する。 (3) 次の処理を順に実行する。 ・1m直進する。 ・右回りに【b】度方向転換する。 ・処理回数のカウンタに1を加える。 (4) 処理回数のカウンタが6未満の場合は、(3)に戻る。 (5) ペンを上げる。

- ア
a:0、b:60
- イ
a:0、b:120
- ウ
a:1、b:60
- エ
a:1、b:120
会話形式の解説
講師この問題で見るところは2つです。1つ目は、カウンタの初期値によって「直進して曲がる」処理が何回繰り返されるか。2つ目は、1辺を描くたびに何度曲がればよいかです。
受験者正六角形は辺が6本なので、直進は6回必要ですよね。ただ、初期値を0にするか1にするかで回数がどう変わるのかが、ぱっと分かりません。
講師迷ったときは、カウンタの値を1回ずつ書き出すのが確実です。初期値を0にすると、(3)を1回実行するごとにカウンタは1、2、3と増えていきます。終了条件は「6未満なら(3)に戻る」なので、何回目で終わりますか。
受験者6回目の実行でカウンタがちょうど6になって、6未満ではなくなるので終わります。直進が6回なので、辺の数と合いますね。
講師そのとおりです。では初期値を1にした場合はどうでしょう。
受験者1回目で2、そのあと3、4、5、6と進むので、5回目で終わります。5辺しか描けないということですか。
講師はい。最後の1辺が欠けて、図形が閉じません。回数は「終了時のカウンタの値から初期値を引いたもの」と考えると、0なら6回、1なら5回とすぐに求められます。これで初期値1の2つの組合せは外れます。
受験者次は角度ですね。正六角形の角は120度だと習ったので、120度曲がればいいと思ったのですが、違うのでしょうか。
講師そこが引っかけです。120度は内角、つまり図形の内側の角度です。ロボットが曲がる角度は、進行方向がどれだけ変わるかを表す外角のほうです。一周して元の向きに戻るので、6回の外角を足すと360度になり、1回あたりは360÷6で60度です。
受験者なるほど。もし120度ずつ曲がったら、どんな図形になりますか。
講師120度を3回で360度になるので、3辺で一周してしまいます。直進は6回あるので、正三角形を2周なぞることになります。初期値1で120度の組合せは、回数と角度の両方が誤りです。
受験者整理すると、初期値0で直進を6回、曲がる角度は外角の60度。この組合せが正しいということですね。
講師はい。補足すると、初期値が1でも終了条件を「6以下なら戻る」に変えれば6回実行できます。初期値と終了条件は必ずセットで確認してください。また、正n角形の外角は360÷n度で、外角の合計は何角形でも360度です。「一周して元の向きに戻る」と考えると思い出しやすくなります。
まとめ
この問題は、ロボットに1辺1mの正六角形を描かせるプログラムで、カウンタの初期値と右回りに曲がる角度の組合せを選ぶものです。終了条件が「6未満なら戻る」なので、初期値を0にすると処理は6回実行され、辺の数と一致します。初期値を1にすると5回で終わり、図形が閉じません。曲がる角度は内角の120度ではなく外角で、360÷6=60度になります。したがって、初期値0と60度の組合せが正解です。
解答・解説
正解はアです
この問題のテーマ
ロボットに正六角形を描かせるプログラムで、繰返し回数を決めるカウンタの初期値と、1辺ごとに曲がる角度を正しく選べるかを問う問題です。
解き方の考え方
まず、正六角形を描くには「1m直進して曲がる」処理を6回繰り返す必要があることを押さえます。次に、カウンタの初期値ごとに(3)が何回実行されるかをたどります。終了条件は「6未満なら戻る」なので、カウンタが6になった時点で終わります。最後に、曲がる角度は内角ではなく、進行方向の変化分である外角だと考えて、360÷6=60度を求めます。
選択肢ごとの解説
- ○ア a:0、b:60初期値を0にすると、(3)を1回実行するごとにカウンタは1、2、…と増え、6回目でちょうど6になって繰返しが終わります。つまり直進は6回で、辺の数と一致します。毎回右へ60度曲がると6回で合計360度になり、出発点に戻って正六角形が閉じます。
- ×イ a:0、b:120初期値0なので直進の回数は6回で問題ありませんが、120度は正六角形の内角であり、曲がる角度(外角)ではありません。120度ずつ曲がると3辺で一周するので、正三角形を2周なぞることになります。
- ×ウ a:1、b:6060度という曲がる角度は正しいものの、初期値を1にすると、カウンタは2、3、4、5、6と進んで5回目で終了します。5辺しか描けないため、最後の1辺が欠けて図形が閉じません。
- ×エ a:1、b:120初期値1では直進が5回しか実行されず、必要な6回に足りません。さらに120度は内角であり、正六角形を描くのに必要な曲がる角度とも違うので、2つの点で誤っています。
補足
回数に迷ったら、カウンタの値を1回ずつ書き出して数えるのが確実です。初期値が1の場合でも、終了条件を「6以下なら戻る」に変えれば6回実行できるので、初期値と条件は必ずセットで確認しましょう。なお、外角を全部足すと何角形でも360度になるため、「一周して元の向きに戻る」と考えると角度を思い出しやすくなります。
POINT
- 繰返し回数は「終了時のカウンタの値−初期値」で求められ、初期値0・6未満で継続なら6回、初期値1なら5回です。
- ロボットやタートルグラフィックスで曲がる角度は、内角ではなく外角を使います。
- 正n角形の外角は360÷n度で、正六角形なら60度です。
- 正六角形の内角120度は選択肢の引っかけとして出やすい値です。
