正六角形描画プログラム|ITパスポート 令和8年 公開問題 問88
出典:令和8年 公開問題 問88
分野:基礎理論(大分類) / アルゴリズムとプログラミング
プログラミングすることによって、ペンの上げ下げ、直進及び右回りの方向転換が可能なロボットがある。このロボットに1辺が1mの正六角形を描画させるプログラムを作成した。次の正六角形描画プログラムのa、bに入れる字句の適切な組合せはどれか。
[正六角形描画プログラム]
(1)ペンを下ろす。
(2)処理回数のカウンタに a を設定する。
(3)次の処理を順に実行する。
・1m直進する。
・右回りに b 度方向転換する。
・処理回数のカウンタに1を加える。
(4)処理回数のカウンタが6未満の場合は、(3)に戻る。
(5)ペンを上げる。
[正六角形描画プログラム]
(1)ペンを下ろす。
(2)処理回数のカウンタに a を設定する。
(3)次の処理を順に実行する。
・1m直進する。
・右回りに b 度方向転換する。
・処理回数のカウンタに1を加える。
(4)処理回数のカウンタが6未満の場合は、(3)に戻る。
(5)ペンを上げる。
| a | b | |
|---|---|---|
| ア | 0 | 60 |
| イ | 0 | 120 |
| ウ | 1 | 60 |
| エ | 1 | 120 |
TSUNAGARU-ADVICE
まず押さえたいこと
ループ処理で図形を描く場合、繰り返す回数と方向転換角度の設定が重要です。特に正多角形は全周360度を辺の数で割った角度で回転します。
迷ったときの判断軸
カウンタの初期値が0か1かはループ条件式の表現に依存するため、問題文の条件に従って正確に判断します。回転角は360度を辺数で割った値が基本です。
次の学習につなげるために
この考え方はプログラミングでの図形描画だけでなく、反復処理や制御構造の理解にも役立ちます。さらに多角形の描画プログラム作成で応用可能となります。
プログラミングによってロボットに図形を描かせる際には、処理回数のカウンタの初期値と、方向転換の角度を正しく設定する必要があります。正六角形は6つの辺を持つため、ループは6回反復します。カウンタは、1から開始(すなわち1を設定)する場合もありますが、この問題文では(2)で処理回数のカウンタにaを設定し、その後(3)で1m直進し、右回りにb度回転し、カウンタに1を加える構造です。ループの条件が「処理回数のカウンタが6未満の場合は、(3)に戻る」となっていることから、カウンタは0から始まることが想定されます。つまり、aは0が適切です。正六角形の各内角の外側への旋回角は360度÷6辺=60度です。したがって、bは60度とする必要があります。これにより、6回の繰り返しで1辺1mの正六角形を描くことができます。
したがって、アが適切です。
❌他選択肢が誤りの理由
イ:a=0、b=120
⇒120度の回転は2辺分の角度に相当し、正六角形を描くには不適切です。
ウ:a=1、b=60
⇒カウンタを1から開始するとループの回数制御がうまくいかず、6回の繰り返しになりません。
エ:a=1、b=120
⇒カウンタ1スタートかつ120度の回転はどちらも正六角形の描画には誤りです。