平成30年 秋期 基本情報技術者 午後 問08
問08 必須問題
次のプログラムの説明及びプログラムを読んで,設問1〜3に答えよ。
整数式を受け取って,その値を返すプログラムである。例えば,例1に示す整数式を受け取ると,
その値 50 を返す。
例1: 2 ×(34−(5+67)÷ 8)
〔プログラムの説明〕
(1)整数式は,文字の列で与えられる。整数式は,次のもので構成される。
- 符号のない数字 Ø 〜 9 の並び
- 演算子: 十,一,× ,÷
- 括弧: (,)
(2)引数 Expression[] で整数式を,引数 ExpLen で整数式の文字数を,それぞれ受け取る。
(3)プログラム中の破線で囲んだ解析処理の部分では,受け取った整数式を解析し,
計算に必要な情報を配列及び変数に設定する。
(4)プログラム中の破線で囲んだ計算処理の部分では,(3)で設定した情報を用いて,
整数式の値を計算する。整数式の値は,Value[Ø] に得られる。
(5)各配列の添字は,0 から始まる。各配列の要素数は,十分に大きいものとする。
(6)受け取った整数式に誤りはないものとする。また,計算の過程で,
あふれやゼロ除算は発生しないものとする。
〔プログラム〕
〔プログラム(解析処理の部分)の説明〕
(1)Expression[] で渡された整数式を解析し,計算に必要な情報を配列 Operator[],
Priority[],Value[] 及び変数 OpCnt に設定する。関数 int() は,引数の数字が表す値を整数型で返す。
(2)例1の整数式について,プログラム(解析処理の部分)を実行した直後の各配列及び変数の状態を,
図1に示す。
図1 プログラム(解析処理の部分)を実行した直後の状態
〔プログラム(解析処理の部分)の説明〕
〔プログラム(計算処理の部分)の説明〕
(1)整数式の値を計算していく。図1に示す各配列及び変数の状態から,
プログラム(計算処理の部分)の最外側の繰返しを1回実行した直後の各配列及び変数の状態を,図2に示す。
図2 プログラム(計算処理の部分)の最外側の繰返しを1回実行した直後の状態
〔プログラム(計算処理の部分)〕
設問1 |
プログラム(解析処理の部分)に関する次の記述中の に入れる
正しい答えを,解答群の中から選べ。
プログラム(解析処理の部分)の行@〜Cで用いている定数について考察する。
まず,行B及びCの処理では,定数として 10 を用いているが,この定数は 10 である必要はない。
このプログラムにおいては,定数が a であれば常に
正しい演算順序が保証される。
また,行@及びAの処理では,定数として1及び2を用いているが,
次に示すように書き換えることが可能である。ここで,priLow 及び priHigh は整数の定数を表し,
その値は priLow<priHigh とする。
@→ ・Priority[OpCnt] ← nest+priLow
A→ ・Priority[OpCnt] ← nest+priHigh
このように表現したとき,行B及びCの処理では,nest の値を増減する定数が
b のときに限り正しい演算順序が保証されることになる。
|
a に関する解答群
ア 1 以上 イ 2 以上
ウ 11 以下 エ 12 以下
b に関する解答群
ア priHigh 以上 イ priHigh + 1 以上
ウ priHigh − priLow 以上 エ priHigh − priLow + 1 以上
イ
エ
基本情報技術者試験
設問2 |
優先順位の等しい演算子が複数個含まれている整数式の,演算の実行順序について考察する。
プログラムに関する次の記述中の に入れる正しい答えを,
解答群の中から選べ。ここで,c1 〜 c3 に入れる答えは,c に関する
解答群の中から組合せとして正しいものを選ぶものとする。
プログラム(計算処理の部分)では,優先順位の等しい演算子が複数個含まれている場合,
演算を左から順に実行するようになっている。このプログラムでは,
演算を左から順に実行するか右から順に実行するかは,行 c1
の内容が c2 か c3 かで決まる。
演算の実行順序によって,計算結果が異なることがある。例えば,次の四つの整数式のケースを考える。
ケース1:(12+3+1)× 4×2
ケース2:(12+3+1)÷ 4÷2
ケース3:(12−3−1)× 4×2
ケース4:(12−3−1)÷ 4÷2
これらのケースのうち,演算を左から実行しても右から実行しても,
プログラムによる計算結果が等しくなるのは,ケース d である。
|
c に関する解答群
d に関する解答群
ア 1 イ 1 及び 2
ウ 1 及び 3 エ 1 及び 4
エ
ア
基本情報技術者試験
設問3 |
プログラムの動作に関する次の記述中の に入れる正しい答えを,
解答群の中から選べ。
符号付き整定数(数字の並びの先頭に符号+又は一を付けた定数)を含む整数式を考える。
符号付き整定数は,例2のように括弧で囲んで記述する。ただし,
符号付き整定数の直前の文字が演算子でない場合は,例3のように括弧で囲まなくてもよい。
例2:(+2)×((−3)+(−4))
例3: +2 ×(−3+(−4))
符号付き整定数を含む整数式 2 ×(−1)についてプログラム(解析処理の部分)を実行した結果を,
図3に示す。
このように,符号付き整定数を含む整数式を受け取ったとき,
プログラムは e 。
|
図3 整数式 2 ×(−1):こついてプログラム(解析処理の部分)を実行した結果
e に関する解答群
ア 整数式が符号付き整定数で始まる場合に,正しい値を返さない
イ 整数式中に符号−の付いた符号付き整定数がある場合に,正しい値を返さない
ウ 整数式中に二つ以上の符号付き整定数が含まれる場合に,正しい値を返さない
エ 正しい値を返す
f,g に関する解答群
ア −1 イ Ø ウ 1 エ 2
エ
イ
エ
[←前の問題]
[次の問題→]
[問題一覧表]
[分野別]
[基本情報技術者試験TOP
]
©2004-2023
|
|
|