スゴ技

平成23年度 秋 基本情報技術者試験 【問8】(その2)

Blog:IT・情報処理BLOG |

ソフトⅡコース担当 ブログのおにーさまこと高橋です。

基本情報技術者試験の合格発表が先日ありましたが、受験した人、結果はどうだったでしょうか?合格した人は、次は応用情報技術者試験合格を目指して頑張りましょう。残念ながら合格できなかった人、次こそは合格できるように頑張りましょう。

それでは、問8の解答の続きです。

設問2
(1)
手順(2)は、配列Vから優先順位が最も高い最初の算術演算子の要素番号を求めることです。算術演算子の優先順位は11か12です。代入文の文法誤りがないのが前提なので、優先順位10の「=」は必ずあることになります。そこで、「副プログラム1」では見つかった最も高い優先順位を格納する変数「priority」に10を初期設定しています。

先頭から調べ始め、V[i]が1でない間、すなわち「>>」が現れる直前までを調べます。調べる内容は、「priority」に格納している優先順位よりも高い優先順位であれば、その値と位置を記録します。つまり、空欄cには、「priority<V[i]」が入ります。
ここで、代入文に誤りがないことが前提であることに注意します。

  • 代入文には必ず「=」があること
  • 算術演算子があるとすれば「=」よりも後にあること
  • 「=」の直後は変数か定数が最低1文字あること

つまり、先頭から調べる必要はなく、「=」よりも2つ後ろの位置から調べればよいことになります。このことより、空欄eには「Getpos(s[],”=”)+2」が入ります。

「副プログラム2」は、配列の後ろから前に調べています。ここで注意しなければならないことは、最も高い「最初の」算術演算子の要素番号を求めるということです。

同じ優先順位の演算子が並んでいる場合、前にある方の位置、この場合後から見つかった位置を求めなければならないということです。従って、「priority」に格納している優先順位よりも高いか等しい優先順位であれば、その値と位置を記録しなければなりません。空欄dは「priority<=V[i]」が入ります。ちなみに、「priority」の初期値が11であるのは、10であると「=」の位置を求めてしまうからです。

(2)
「副プログラム3」は、配列の要素番号from以降の要素を、前後に移動するものです。1要素ずつしか移動できないので、移動していない要素が上書きされないように注意する必要があります。

後ろに移動(moveが正)の場合、前から移動させると後ろにある要素が上書きされてしまいます。後ろ、すなわちtoから前に向かってfromまで移動させます。空欄fには、「to,i>=from,-1」が入ります。
前に移動(moveが負)の場合、後ろから移動させると前にある要素が上書きされてしまいます。前、すなわちfromから後ろに向かってtoまで移動させます。空欄gには「from,i<=to,1」が入ります。

2011年(平成23年度)秋期の解説

Date:

神戸電子の
IT・情報処理学科
についてもっと知りたい!

Webアプリケーション等のシステム管理、設計、開発が行える総合的なITエンジニアを育成する学科です。

学科紹介を見る (神戸電子サイト)

学科紹介イメージ
Info神戸電子からのお知らせ

Tagタグ

Teamライターチーム紹介

神戸電子オフィシャルSNS

オープンキャンパスなどの
誰でも参加OKの楽しいイベント
やブログの最新記事などお届けします!

ページの上へ移動