気づけば解けるのは1点 ── √ は pow で書けることです。
難易度 ★(当サイトの目安)── 0.5乗が平方根だと分かれば、式を1つ選ぶだけ。4段階の決め方は科目B 最短合格の戦略にあります。
出題
出典:基本情報技術者試験 科目B サンプル問題 問5
次のプログラム中の に入れる正しい答えを,解答群の中から選べ。
関数calc は,正の実数x とy を受け取り,√(x2+y2) の計算結果を返す。関数calc が使う関数pow は,第1 引数として正の実数a を,第2 引数として実数b を受け取り,a のb 乗の値を実数型で返す。
〔プログラム〕
○実数型: calc(実数型: x, 実数型: y)
return
解答群
ア (pow(x, 2) + pow(y, 2)) ÷ pow(2, 0.5)
イ (pow(x, 2) + pow(y, 2)) ÷ pow(x, y)
ウ pow(2, pow(x, 0.5)) + pow(2, pow(y, 0.5))
エ pow(pow(pow(2, x), y), 0.5)
オ pow(pow(x, 2) + pow(y, 2), 0.5)
カ pow(x, 2) × pow(y, 2) ÷ pow(x, y)
キ pow(x, y) ÷ pow(2, 0.5)
※ 原本の √(x2+y2) は、根号 √ の下に x2+y2 を置いた数式です。当サイトではかっこで囲んで示しました。
答えだけ先に見る
正解は オ(pow(pow(x, 2) + pow(y, 2), 0.5))です。
この問題に出てくる記号
読めない記号があったときだけ開いてください。
擬似言語の記号 3コ の読み方をひらく
| 書き方 | 読み方 |
|---|---|
○実数型: calc(実数型: x, 実数型: y) |
ここから関数 calc が始まるという印。実数を2つ受け取って x・y と名前を付け、実数を1つ返します |
return ◯ |
◯ の式を計算して、その値を返す |
pow(a, b) |
関数 pow の呼び出し。a の b 乗が返ってきて、式のその場所に入ります |
コードは何をしているか ── return の式1本
〔プログラム〕(上の〔プログラム〕と同じ2行です)
○実数型: calc(実数型: x, 実数型: y)
return
※ 上の〔プログラム〕からの抜粋です(1字も変えていません)。
本体は return の1行だけです。関数 calc が返すのはこの式の値なので、空欄の式が √(x2+y2) そのものになっていなければなりません。使える道具は pow(a の b 乗)だけです。
2乗は pow で書けるので、残るのは √ です。ここが気づきどころで、√ は 0.5乗で書けます。掛け算では「◯乗」の数が足されるので(a2 × a3 = a5)、a の 0.5乗を2つ掛けると 0.5 + 0.5 = 1乗、つまり a に戻ります。2回掛けて a になる数 = √a です(25 の 0.5乗は 5)。
空欄に入るものを決める ── 内側から pow に置き換える
√(x2+y2) を、内側から pow に置き換える
① 2乗を pow にして、足す
式
x2 + y2
pow で
pow(x, 2) + pow(y, 2)
x の 2乗は pow(x, 2)、y も同じ。足し算はそのまま + でつなぎます。
② 全体の √ = 全体の 0.5乗
式
√(x2 + y2)
pow で
pow(pow(x, 2) + pow(y, 2), 0.5)
√ がかかっているのは足した全体なので、①の式をまるごと pow の1つ目の引数に入れ、2つ目を 0.5 にします。
解答群を見る
pow(pow(x, 2) + pow(y, 2), 0.5) は オ です。
答え合わせ
正解は オ です。
x2+y2 全体を 0.5乗しているのはオだけです(アは √2 で割っているだけ、エは 2 の x 乗の y 乗の √、イ・カ・キには 0.5乗がありません)。x = 3、y = 4 で確かめます。
1行ずつ追う 正解の オ で calc(3, 4)
出典:科目B サンプル問題 問5(空欄に オ を入れたもの)
ループ開始前
いま計算していること
変数の状態
return で返した値
トレース表(進めると1行ずつ積み上がります)
次に読む
この問題でどこに手間取ったかで、行き先が変わります。
この記事で引用した資料
いずれも独立行政法人情報処理推進機構(IPA)が公表したものです。IPAは公表済みの試験問題について、教育目的での使用に許諾および使用料を不要としていますが、著作権は放棄していません。本記事では問題文を改変せずに引用しています。

