公開問題  問1について

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
あかさたんさん  
(No.1)
IPAが公開している科目Bの公開問題、問1について教えてください。
https://www.ipa.go.jp/shiken/mondai-kaiotu/sg_fe/koukai/t6hhco0000003zx0-att/2023r05_fe_kamoku_b_qs.pdf

問1のプログラム中の下記注釈について、うまく腹落ちできずにいます。
/* iの正の平方根の整数部分が2未満のときは、繰り返し処理を実行しない*/

これはif文ではなく注釈なので、繰り返し処理の実行には影響しない(コメントなので無視される)と理解しているのですが、その後のプログラムを見ると、/* */内のコメント内容が条件として機能しているように見えます。
擬似言語では、/* */と囲まれた部分に条件のようなコメントが書かれていた場合、条件判定として理解すべきなのでしょうか?
プログラミングでは/* */の中に書かれたものはあくまでコメントであり、プログラムの動作に影響しないものと思いますが、擬似言語においてはそうではないのでしょうか?

疑問がうまく伝わっているか不安ですが…よろしくお願いいたします。
2024.06.21 21:22
jjon-comさん 
FE ゴールドマイスター
(No.2)
注釈は繰り返し処理の実行には影響しません。コメントなので無視されます。
実行に影響しているのは注釈行の直下のこの行だけです。
for (j を 2 から iの正の平方根の整数部分 まで 1 ずつ増やす) //α

iが2,3,4,5のとき、その平方根は次の値になります。
sqrt(2) = 1.41421356 ひとよひとよにひとみごろ
sqrt(3) = 1.7320508  ひとなみにおごれや
sqrt(4) = 2
sqrt(5) = 2.2360679  ふじさんろくおーむなく

sqrt(2)とsqrt(3)の「正の平方根の整数部分」は「1」ですから、
for (j を 2 から「1」まで 1 ずつ増やす) //α
となって、sqrt(2)とsqrt(3)の場合はこのfor文を実行しないことになります。

「え? for文なのに 開始値の2 より 終了値の1 の方が小さくても大丈夫なの?」
と不審に思うだろう受験者のために
/* iの正の平方根の整数部分が2未満のときは、繰り返し処理を実行しない */
つまり「それで大丈夫だよ。そういう意図で出題したよ」と出題者が注釈を与えたわけです。
2024.06.22 10:36
あかさたんさん  
(No.3)
jjon-comさん、ありがとうございます!

下記のfor文を、j = 2は実行するものと解釈してしまっていました。
for (j を 2 から「1」まで 1 ずつ増やす) //α

2から1まで1ずつ増やす、が成り立たないので、そもそもforを実行しないということなのですね。
よく理解できました、ありがとうございました。
2024.06.22 13:48

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。

その他のスレッド


Pagetop