平成20年度 技術士第一次試験問題【専門科目】
【16】情報工学部門
W−4
仮想的なスタックマシンが次の命令を持つとする。

 push a スタックにデータ aを積む。
 dup   スタックの最上部のデータを複製してスタックに積む。
 swap  スタックの最上部の2つのデータの位置を交換する。
 add   スタックの最上部の2つのデータを取り出し、その和をスタックに積む。
 sub   スタックの最上部に2つのデータ a, b があり、b が上に積まれている
      とき、a, b を取り出し、a-b をスタックに積む。
 div   スタックの最上部に2つのデータ a, b があり、b が上に積まれている
      とき、a, b を取り出し、a/b の商をスタックに積む。

このとき、(a-b+c) / (a-b) を計算するために次のようにプログラムを作成した
とき、(ア) と (イ) に当てはまる命令を@〜Dの中から選べ。

push a
pish b
sub
(ア)
push c
add
(イ)
div

       
@ dup   dup
A dup   push b
B swap  dup
C swap  push b
D dup   swap



【正解】 D

便宜上、スタックの状態を左から順に表記する。

push a ・・・ a
push b ・・・ b, a
sub    ・・・
a-b
dup(ア)  ・・・
a-b, a-b
push c ・・・
c, a-b, a-b
add    ・・・
a-b+c, a-b
swap(イ) ・・・
a-b, a-b+c
mul    ・・・ (
a-b+c) / (a-b)

EXCELのマクロのご相談なら ファーストマクロ 



W−3 目次 W−5
ファーストマクロ TOPページ