20230503基本情報技術者試験午後問8 アルゴリズムの関数memo
アルゴリズム素人です。
基本情報技術者試験素人です。
以下違いだらけです。自分用メモです。(解説ではありません。)
アルゴリズムに使われる関数について
たまに、説明されない関数がある。(説明あるけど、見にくい・・・)
例:
Skip[Index(Pat[I])
上記の場合、
Skip
と
Pat
の2つの配列があって、
さらにIndex関数というのが、間に挟まっている。
このIndex関数はカッコが[ ]でなく、( )なので、配列ではないと推測できないといけない。多分見落としても気付く必要ありか。
(1)Pat[I]を引数にして、(この場合、I番目の値を引数)・・・これは、関数関係ない(例:Aという値(文字))
(2)Index関数で処理、(この場合、上記の値を使って処理)・・・これは、「関数」の処理。(Indexと書いてあるのでPat[I]は「添え字(数字)かな」と悩んだ。)
(3)上記の値をSkip関数で処理・・・これは、関数の処理。(これもSkip関数のプログラム自体載せていない・・・)
トレースを紙にしようとすると、「関数」部分は、細かくは追えない。
せっかく細かく見ようとしても関数で「ふわっ」となってしまう。
副プログラムはトレースで追でるが、関数処理は、割り切ろう。
(関数は関数メモ作るかな)
あと、変数や配列[]の中身に注意。配列があった場合、添え字または、最大の値を変数として使う。当たり前だけど。
PText ← PLast
PPat ← PatLen
とか変数の受け渡しが続くと中身が分からなくなる。
上も
下も、数字。(Textとか書いているけど。)
うーん。
プログラムの最初に、型の宣言で
〇整数型:Skip[26]、Ptext,Ppat,PLast,Iと並べて書いてあるから、全部整数型。
で、中身の比較のために、
Text[Ptext] = Pat[PPat]というのが出てくる。
思い込みはいけない・・・。