擬似言語 part 2の解答

記事
IT・テクノロジー

問題1の解答

2.png

この問題は、CALCULATIONと関数AVERAGEの2つで構成されています。関数とは、ひとかたまりの処理のことです。この関数AVERAGEは、「平均点を算出する」処理を行います。

1.png


プログラムの
・AVG-K←AVERAGE(KOKUGO, 3)
この部分で、関数AVERAGEを呼び出しています。この関数は、

○整数型関数:AVERAGE(整数型:TBL[], 整数型:N)
と宣言されています。「整数型関数」というのは、「整数の値を返します」という意味です。関数内で
・return AVG
の部分が、整数型の変数AVGを呼び出し元に返している箇所です。
また、カッコ内の「整数型:TBL[], 整数型:N」の部分は、引数といいます。パラメータともいいますが、これは関数に渡す値のことです。

それでは(a)を見ていきます。平均を算出するには、学生全員の点数の合計が必要です。変数TOTALが、繰り返しの中で+されていますので、ここで合計点を計算しています。各学生の点数は、引数のTBLに登録されていますので、添字Iを利用して
TBL[I]
が答えになります。

続いて(b)は、人数で割って平均点を算出するところです。合計点÷人数を擬似言語で表現すると、
TOTAL / N
が答えです。今回の場合、「TOTAL / 3」でも間違いではないのですが、学生の人数が引数で渡されていますので、3という固定の数ではなく、整数型の変数Nを利用するようにしましょう。
ちなみにですが、算数の「÷」は、擬似言語では「/」のようにスラッシュで表現します。試験の問題用紙に擬似言語の仕様が書かれていますが、なるべく試験前までに覚えておきましょう。


問題2の解答

3.png

配列 TEXT と配列 PTN は、例えば下記のようにイメージします。

1.png


この例の場合、ABCABCAの文字列からCAという文字列を探索すると、2か所見つかります。そして、CAの先頭位置である「2」と「5」を表示することになります。
また、このプログラムは下記のようにパターン文字列を探索します。

2.png


配列TEXTから配列PTNを最後に探索する位置は、5(テキストの長さ – パターン文字列の長さ)です。(a)の前に変数Iを0で初期化していたり、繰り返しの中で変数Iを+1していますので、この変数を繰り返し条件に使います。
(a)は、
I≦m-n 
が正解で、この条件の間、パターン文字列があるか探すことになります。

続いて(b)です。ここは2文字の配列PTNと配列TEXTが一致するかどうかを、1文字ずつ調べる箇所です。

3.png


繰り返しの中で、変数WKと変数Jを+1しています。もし配列PTNの文字が配列TEXTと一致しなければ、繰り返して調べる必要はありません。反対に、文字が一致している間は繰り返す必要があります。そのため、(b)は
TEXT[WK] = PTN[J]
もしくは
PTN[J] = TEXT[WK]
が正解です。このように、どのような役割でそれぞれの変数を使っているのか、読み取れるようにならないと正解に辿り着けません。たくさんのプログラムをそのように意識して読む練習をしてみると良いと思います。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す