教えて!しごとの先生
教えて!しごとの先生
  • 回答終了

基本情報技術者試験の科目Bについて。 トレースのみで解答していく、テクニカルではなく地道に書き出す参考書で勉強し、…

基本情報技術者試験の科目Bについて。 トレースのみで解答していく、テクニカルではなく地道に書き出す参考書で勉強し、試験に臨みました。ただ、全20問をその解き方ではとても時間が足りませんでした…。 もちろん、全てを満点取る必要はありませんし、私の演習量が足りなかったことも影響しているかと思います。 また、再度試験を受けるにあたって、アルゴリズムを中心に書かれた参考書も始めてみました。 ただ、今度は解答がとても綺麗で、テクニカルのような、気づかないと解答できないような印象を受けてしまいました。 (説明も解説もとても丁寧なのですが、本番もこの解き方ができるかな…という不安) 私がIT未経験なこともあるかと思いますが、みなさんはどのように試験を合格されましたか? 同じく、IT未経験で合格した方のご意見。また、経験者の方でも構いません。 おすすめの勉強法などございましたら、ご教授よろしくお願い致します。 科目Aはギリギリ合格できました…。

続きを読む

180閲覧

回答(1件)

  • 基本情報合格者です。トレースのみだと時間不足は必至ですね。アルゴリズムは詳しい方だと思いますが、未知のアルゴリズムには当然対応できません。私は「変数の定義域で絞る」→「明らかに不自然な挙動になる選択肢を排除する」で解いています。 試しに、以下の問題を解いてみます(私も見たことがないやつ)。 https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/patterns_algorithms/trace_with_steps/ ・空欄a for文から、Idx1の定義域は1~N-1と分かり、「Tmp ← A[Idx1]」からIdx1を添え字に使っていることも分かります。 添え字の範囲は0~N-1なので、添え字として使えない値になりうる 「イ: Idx1+1」と 「エ: 1-Idx1」は除かれます。ここまでで、 「ア: Idx1」か 「ウ: Idx1-1」に絞れます。 while文の内側にif文があり、その条件が「A[Idx2]がTmpより大きい」とありますが、もし「ア: Idx1」だった場合、A[Idx2]=A[Idx1]=Tmpとなります。するとこのif文は必ずelse側に飛び、一切ループ処理を行わずwhile文を脱出します。then側に飛ばないので不正解だと判断できます。 答え: ウ: Idx1-1 ・空欄b 問題文2.b.がこれに当たります。ただし、そのことがすぐにわからなくてもOKです。空欄aを解いた時と同様に、Idx2の定義域を押さえておきましょう。 Idx2は外ループ(for)の初期値としてIdx1-1が与えられるので、最大値はどうあがいてもN-2、内ループ(while)の脱出条件として0以上が与えられるので、最小値はどうあがいても0です。Idx2もAの添え字として使われるので、添え字として使えない値になりうる 「イ: A[Idx2]←A[Idx2-1]」と 「エ: A[Idx2-1]←A[Idx2]」は除かれます。ここまでで、 「ア: A[Idx2]←A[Idx2+1]」か 「ウ: A[Idx2+1]←A[Idx2]」に絞れます。 空欄bの直後でIdx2は1減っているので、もし「ア: A[Idx2]←A[Idx2+1]」だった場合は、 A[Idx2]←A[Idx2+1] →A[Idx2-1]←A[Idx2](=A[Idx2+1]) →A[Idx2-2]←A[Idx2-1](=A[Idx2]=A[Idx2+1]) と、A[0]~A[Idx1-1]の全ての値が同じになってしまいます。したがって不正解だと判断できます。 答え: ウ: A[Idx2+1]←A[Idx2] https://www.fe-siken.com/pdf/archive/2007h19a_fe_pm_qs.pdf の問4も解いてみます(もちろん見たことがないやつ)。 ・設問1 ・・空欄a 直前でChr[Idx]をスタックに積んでいます。さらにその直前でIdx←Fint-(Fint÷10)×10 (Fintを10で割った余りと同じ意味)と代入しているので、IdxにはFintの下1桁が入っています。したがって、1の位から順々にスタックに積んでいく処理だと推測できるので、「エ: Fint÷10」です。 答え: エ: Fint÷10 ・・空欄b 直後に「Out[L]←"0"」があるので、整数部がない(Floatの初期値が-1より大きく1より小さい)場合と判断できます。したがって「ア: L=0」としたいところですが、/*符号の処理*/があるのでL=1になっている場合があり、「ア: L=0」「エ: L=1」ではないと分かります。また、符号がない場合にfalseとなる「オ: L=1 and Out[0]="-"」も違います。 「イ: L=0 or Out[0]="-"」と「ウ: L=0 or (L=1 and Out[0]="-")」は一見同じことを言っているように見えますが、前者はOut[0]="-"ならたとえL≧2でも条件に合致します。つまり、Float≦-1でも当てはまってしまうので不正解です。 答え: ウ: L=0 or (L=1 and Out[0]="-") ・・空欄c 直後に「Idx←Int(Fdec)」と「Out[L]←Chr[Idx]」があるので、Fdecの1の位を出力する処理だと分かりますが、直前の「Fdec←F-Int(F)」でFdecは0以上1未満になっています。このままだとChr[Idx]は必ず"0"になってしまうので、「エ: Fdec×10」が正解です(「イ: Fdec-Int(Fdec×10)」は負値になりうるのでIdxの定義域を超えうる)。 答え: エ: Fdec×10 ・・空欄d 空欄dの直前の時点で、Fdecの整数部分は出力済でもう要らないので、整数部分を除去することになります。「ア: Fdec-Int(Fdec)」が正解です。 ・設問2 ・・α Fint>0を1度も満たさないのでア: 0 ・・β 「N: 1, N≦Num, 1」からウ: 2

    続きを読む

< 質問に関する求人 >

基本情報技術(東京都)

この条件の求人をもっと見る

< 質問に関する求人 >

未経験(東京都)

求人の検索結果を見る

もっと見る

この質問と関連する質問

    < いつもと違うしごとも見てみませんか? >

    覆面調査に関する求人(東京都)

    この条件の求人をもっと見る

    Q&A閲覧数ランキング

    カテゴリ: 資格

    転職エージェント求人数ランキング

    • 1

      続きを見る

    • 2

      続きを見る

    • 3

      続きを見る

    あわせて読みたい
    スタンバイプラスロゴ

    他の質問を探す

    答えが見つからない場合は、質問してみよう!

    Yahoo!知恵袋で質問をする

    ※Yahoo! JAPAN IDが必要です

    スタンバイ アプリでカンタン あなたにあった仕事見つかる