擬似言語 part 2

記事
IT・テクノロジー

part 1の解答

1.png


問題文を理解するため、図にしてみましょう。

1.png


配列BANGOと配列NAMEに格納されている値は、一例として書いていますので、どんな値でもOKです。この例では、学生番号201の学生の氏名は、「基本太郎」です。このように、80名の学生番号と氏名が配列に登録されています。

続いてプログラムを見てみると、
・W-BANGOを入力
とあります。これは、「学生番号279の学生の氏名が知りたい」と思ったときに「279」を操作卓から入力すると、変数W-BANGOに279が格納されるということです。この「279」が配列BANGOにあるかどうか、探していくことになります。

では、(a)の空欄について考えます。(a)の下から繰り返しが始まっているので、この繰り返しは配列BANGOから学生番号を探す処理だろうと推測します。この処理の中で変数Iを+1していますので、変数Iは添字として使っています。しかし、変数Iを初期化している箇所が見当たりません。今回の配列の添字は0から始まりますので、(a)の部分で変数Iを0で初期化するのが正しいです。そのため、(a)の答えは
・I ← 0
になります。

次は(b)を解きます。どのような条件で繰り返しを続けるか、これが(b)の答えになります。「I<80」とは、学生が80名ですので、Iが80未満の間は繰り返します。さらに、「学生番号が見つからない間」は繰り返す必要があるので、これを(b)に記述します。「W-BANGO」と「BANGO[I]」を使うと、
BANGO[I] ≠ W-BANGO
もしくは
W-BANGO ≠ BANGO[I]
が(b)の答えです。ただ、「BANGO[I] ≠ W-BANGO」の方がプログラムが読みやすくなると思います。これは、
 BANGO[0]の学生番号は279か?
 BANGO[1]の学生番号は279か?
 BANGO[2]の学生番号は279か?
      ・
      ・
      ・
のように配列を調べていますので、左辺はBANGO[I]にした方が良いでしょう。

最後は(c)です。入力した学生番号が見つからなければ、「在籍していない」を表示します。一方、見つかった場合は氏名を表示することになります。配列NAMEを利用すると、
NAME[I]
が(c)の答えです。


基本情報技術者試験で出題される擬似言語の問題は選択肢から答えを選ぶのですが、選択肢が無くても答えられるくらいに勉強しておけば、試験で点数を落とすことはないでしょう。


それでは、次の2問を解いてみてください。答えは次回書きます。


問題1

以下の擬似言語の空欄を埋めなさい。

<プログラムの内容>
3 人の学生の国語、数学、英語の教科ごとの平均点を求めるプログラム。
(条件1)3 人の国語の点数は配列 KOKUGO[3]、
                数学の点数は配列 SUUGAKU[3]、
                英語の点数は配列 EIGO[3]
                にあらかじめ格納されている。
(条件2)配列 KOKUGO、SUUGAKU、EIGOの添字は、0から始まる。

2.png



問題2

 以下の擬似言語の空欄を埋めなさい。

<プログラムの内容>
7文字のテキスト(配列 TEXT)の中から2文字のパターン文字列(配列 PTN)を探索し、その位置を表示するプログラム。

(条件1)テキスト、パターン文字列の長さは、それぞれ m, n である。
(条件2)テキスト中にパターン文字列が見つかった場合、先頭位置を表示する。
(条件3)配列TEXT、PTNの添字は、0から始まる。

3.png

サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す