HOME»基本情報技術者試験掲示板»パーフェクトラーニング予想問題集を持っている方へ
投稿する

パーフェクトラーニング予想問題集を持っている方へ [4856]

 みるさん(No.1) 
令和05年【上期】 基本情報技術者 パーフェクトラーニング予想問題集を持っている方がいましたら教えてください。
対策問題①の科目B問7が全然理解できません。
読解力が無いせいか、書いてあることすらわからない状態です。
何がわからないというか、もう全体的にわかりません。
できれば解説をお願いします
2023.05.23 14:15
まきさん(No.2) 
問題文の  2*(34-(5+67))/8
という式を計算する時に優先順位をつけて計算をするものです。
まずはこの式はどう計算しますかということを考えてみてください
四則計算です
2023.05.23 20:27
えださまさん(No.3) 
トレースの前に、「プログラム(解析処理の部分)の説明」を読んでみます。
Expression[]で与えられた引数のうち、数字(2,34など)はValue[]に格納、演算子(+,-,÷,×)はOperation[]に格納、演算子の計算優先順位をPriority[]に格納、演算子の数をOpeCnt[]に格納していくプログラムだと理解できます。
※要素番号は0から始まることに注意

「プログラム(解析処理の部分)」をトレースしていきます。
私は、A4ノートの横幅フルに使用して変数や配列を全て書き、トレースしました。
流れとして、Expression[i]  iは初期値0で+1ずつ増加し、Expression[i]をchrに退避させ、chrが「数字」なのか「演算子」なのか「”(”or”)”」なのかをif文で処理を分けています。
Expression[]に入れる値は、「プログラム(解析処理の部分)の解説」の値を使用します。  ←  科目Bを解くうえで必要なテクニック
Expression[14]までトレースしたとします。
Operator(×,-,+,÷)
      ↓の優先順位はPriorityの数値が大きい順
Priority(2,11,21,12)  =  Priority[0] < [1] < [3] < [2]


設問を読むと、□aに入る解答は「1以上」なのか「2以上」なのか「11以下」で分けられてます。
上記3つの境界値を考えてみます。  ←  科目Bを解くうえで必要なテクニック
「0」を含むのは「11以下」
「1」を含むのは「1以上」と「11以下」
「12」を含むのは「1以上」と「2以上」
の選択肢になります。
③に、nest + 0 , nest + 1 , nest + 12を
④に、nest - 0 , nest - 1 , nest - 12を
選択した場合のトレースを書き直します。
それぞれ得られたPriority[]の値が、Priority[0] < [1] < [3] < [2]となっているか。
「0」「1」の時はPriority[0] < [1] < [3] < [2]となっていないので
選択肢「1以上」と「11以下」は不正解
「12」の時はPriority[0] < [1] < [3] < [2]となっているので
選択肢「1以上」と「2以上」は正解
「1以上」はすでに不正解となっているので、□aに入るのは、「2以上」

□bですが、「プログラム(解析処理の部分)」の①②と設問上の①②を比べると

Priority[OpCnt]  ←  nest + 1  ・・・①
Priority[OpCnt]  ←  nest + 2  ・・・②



Priority[OpCnt]  ←  nest + Prilow  ・・・①
Priority[OpCnt]  ←  nest + Prihigh  ・・・②

ここから、Prilowは「1」でPrihighが「2」とわかります。

選択肢がそれぞれ「Prihigh以上」か「(Prihigh - Prilow)以上」か「(Prihigh - Prilow+1)以上」となっており、それぞれに値を当てはめると
「Prihigh以上」  =  「2以上」
「(Prihigh - Prilow)以上」  =  「1以上」
「(Prihigh - Prilow+1)以上」  =  「2以上」
となる。
□bの前に、「nestの値を増減する定数」とあるが、これは□aの設問内容と同じであるため、□bが「2以上」となるのが解答。
よって、「Prihigh以上」と「(Prihigh - Prilow+1)以上」回答の候補となるが
「Prihigh以上」に関してはPrilowに言及していないので、①「Prilow」に好きな数字を入れても正解になるという選択肢の為、不正解。

よって、□aは「2以上」、□bは「(Prihigh - Prilow+1)以上」の組み合わせである、「カ」が答えになる。

ちなみに、100ページ右上の定数1の場合と書かれたトレース表は「定数2」の間違いです。
2023.05.24 10:26
えださまさん(No.4) 
あと余談ですが、変数名から何を格納する変数なのかを予測できれば科目Bの正答率はさらに上がると思います。

例)
Priority = 優先順位
Operator = 何かを操作
OpCnt = OperatorのCount = 演算子の数をカウントする

nestに関しては、ネストは入れ子の入れ子(value((1,2),(3,4))なのですが
本問題におけるnestの意味はわかりませんでした。
※多分ですが、「以上」などが入るので、1つの値に限定されない値  =  その範囲であれば”入れ子”になっても問題にない。って意味かな?
2023.05.24 11:05
 みるさん(No.5) 
お二方返信ありがとうございます。

めっちゃ詳しくありがとうございます。わかりやすいです&#8252;
自分読解力がかけていて中々理解するのに時間がかかってしまっている状態なので助かりました!
予測できるように頑張ります。
ありがとうございます。
2023.05.24 12:54
jjon-comさん(No.6) 
FE ゴールドマイスター
回答 No.2,3,4 に登場するキーワードから予想するに,
その問題集で取り上げているのはこの過去問題でしょうか。

基本情報技術者過去問題 平成30年秋期 午後問8
https://www.fe-siken.com/kakomon/30_aki/pm08.html

であるなら,
このサイト(上記リンク先)には解説も掲載されていますし,
掲示板を検索するとこの問いについてのQ&Aも見つかります。
2023.05.24 14:41
返信投稿用フォームスパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
© 2010- 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop