メインコンテンツへスキップ
見出し画像

【基本情報】科目Bトレース実演|負の数の最大値で学ぶ初期値と更新条件

    最大値を探すプログラムなのに、答えが0になる。配列の値は全部マイナスなのに、どこを間違えたのか分からない。

    今回は、短いプログラムを最後まで追いながら、変数の初期値と更新条件を確認します📚 全文無料。紙に途中の値を書いてから、解説へ進んでください。

    1.まず、自分で最後の値を求める

    配列dataは{-8, -3, -10, -5}です。次の処理が終わったときのbestを求めてください。

    best ← data[1]
    for (i を 2 から 4 まで 1 ずつ増やす)
      if (data[i] が best より大きい)
        best ← data[i]
      endif
    endfor

    この記事はオリジナルの基礎演習です。配列は1始まり、forの終点は含み、←は代入を表します。説明のため型宣言などを省いています。公式問題では問題文の定義を確認してください。

    2.表に書くのは「比較前」と「比較後」

    最初のbestはdata[1]、つまり-8です。iは位置、data[i]はその位置にある値です。

    i=2:data[2]=-3。比較前のbestは-8。-3>-8は真なので、bestを-3へ更新。

    i=3:data[3]=-10。比較前のbestは-3。-10>-3は偽なので、bestは-3のまま。

    i=4:data[4]=-5。比較前のbestは-3。-5>-3は偽なので、bestは-3のまま。

    答えは-3です。 比較が偽の行も省略せず、「更新しなかった」と記録します。

    3.なぜbestを0で始めないのか

    この配列の最大値は-3ですが、0はどの要素よりも大きく、配列の中には存在しません。bestを0にすると、どの比較でも更新されず、答えが0になってしまいます。

    最初の要素を候補にして、残りの要素と比べれば、すべてが負の数でも処理できます。ただし、配列に少なくとも1要素あることが前提です。空の配列なら、先に別の扱いを決める必要があります。

    ここまでで「調べ終えた範囲の最大値をbestに残す」という処理の目的も説明できるか、確認しましょう。

    4.確認問題は、解説を読む前に

    問1:配列を{-4, -9, -2, -2}へ変えます。同じ処理で最後のbestはいくつ? bestへの代入は、最初の初期化を除いて何回起きますか。

    問2:元の配列{-8, -3, -10, -5}で、比較を「data[i]がbestより小さい」へ変えると、最後のbestはいくつになりますか。

    問3:元の配列でbest←data[1]のまま、forの開始を1へ変えると、答えは変わりますか。

    5.解答と、間違えたときの見直し先

    問1:bestは-2、更新は1回です。i=2の-9では更新せず、i=3の-2で更新。i=4では-2>-2が偽です。等しい場合を、より大きい場合と区別します。

    問2:-10です。最初の-8より小さい-10へ更新され、最小値を探す処理になります。条件の記号1つで目的が変わります。

    問3:答えは変わらず-3です。最初に-8と-8を比較するだけで更新されません。不要な比較が1回増えます。

    誤答は「負の数の大小」「添字と値」「等しい場合」「更新後の値」のどれで迷ったか、1行で残してください。翌日は解説を閉じ、配列だけを変えて同じ手順を再現します。

    6.別の処理でもトレースを練習したい方へ

    対応する既存教材は 科目B・擬似言語 完全攻略(有料記事・無料部分あり) です。まず無料部分で収録内容と説明を確認してください。購入済みの方は買い直さず、お手持ちの教材で変数の更新を追う練習へ進めます。

    この記事の例題・確認問題・解説は、すべて無料で使えます。

    表記の確認:IPA 基本情報技術者試験 科目Bサンプル問題
    次の確認|最大値が同じ値で2回出たら

    配列を{-5, -1, -1, -4}へ変え、本文と同じ「より大きい」のコードを追ってください。bestの最終値と、初期化を除く更新回数は?

    ここで解答を見ずに、答えと理由を紙へ書いてください。

    解答:best=-1、更新1回です。2番目で更新し、3番目の-1は等しいため更新しません。

    初期値は分かっても、探索や整列の途中で値を見失う場合は、対応教材の無料部分・到達点・FAQを確認してください。無料の問題だけで手順を説明できれば、まず手持ちの教材で続けられます。購入済み・加入中の教材で読める内容は買い直し不要です。
    短い復習を続けたい方へ|月額プランの選び方

    今回の無料演習で「読む→自分で追う→理由を確認する」を試せたら、次は自分の弱点に合わせて選びましょう。用語の違いや計算の要点を短い図解で整理したい方には、基本情報 学習ライブラリプラン(月額500円・継続課金)があります。

    特典は1枚絵・VSシリーズ・計算問題1枚攻略です。このトレース演習や、科目Bの有料単品・全60回講座がすべて含まれるプランではありません。現在の料金と特典を確認する / 無料の利用ガイドと加入後7日間を見る。

    会員の方は利用ガイドから、まずRAM vs ROM・TCP vs UDP・スタック vs キューのうち苦手な1組へ。単品・講座を購入済みの方は、お手持ちの教材で同じ処理を追ってください。同じ記事の重複購入は不要です。この記事の問題・解説は引き続き全文無料です。


    あなたへのおすすめ