HOME»基本情報技術者試験掲示板»平成27年秋 問8 アルゴリズム質問です
投稿する
平成27年秋 問8 アルゴリズム質問です [0898]
かなどさん(No.1)
まだ解説が載ってなかったと思うので、答えから、自力で導き出しているところです。大変。
プログラムの11行目のようにreturn(PText)
と書いてある意味を教えてください。どこまで戻れば良いのですか?
プログラムの11行目のようにreturn(PText)
と書いてある意味を教えてください。どこまで戻れば良いのですか?
2017.09.25 16:48
昨年合格者さん(No.2)
プログラムはBMMatchは「引数」と「戻り値」を持っていますので、他のプログラム(親プログラム)から呼び出されることを前提としてます。親プログラムの中で
PRet←BMMatch(Text[],TextLen,Pat[],PatLen)
のような形で呼び出されると、BMMatchは対象文字列の中で検索文字列が見つかった文字位置(つまりPTextの値)もしくは発見できなかったことを示す値(-1)を返しますので、親プログラムのPRetにPTextまたは-1が格納され、親プログラムではその結果を受けて別の処理を続けます。
returnの()はBMMatch内のどこかに移動するのではなく、()内の値を戻り値として親プログラムに引き渡し、BMMatch自体を終了させる処理です。
PRet←BMMatch(Text[],TextLen,Pat[],PatLen)
>>PRetは親プログラムの中で、検索結果を格納するための変数。問題文に出てきませんが、解説のために便宜的に用いています。。
のような形で呼び出されると、BMMatchは対象文字列の中で検索文字列が見つかった文字位置(つまりPTextの値)もしくは発見できなかったことを示す値(-1)を返しますので、親プログラムのPRetにPTextまたは-1が格納され、親プログラムではその結果を受けて別の処理を続けます。
returnの()はBMMatch内のどこかに移動するのではなく、()内の値を戻り値として親プログラムに引き渡し、BMMatch自体を終了させる処理です。
2017.09.25 18:38
かなどさん(No.3)
わかりやすい説明ありがとうございました。
リターンの意味を間違えていました。
リターンの意味を間違えていました。
2017.09.25 19:25