本文へスキップ

技術士試験(情報工学部門)・情報技術者試験。ファーストマクロ。


Since 2016.4.19

平成20年度 技術士第一次試験問題【専門科目】

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)

W−3 目次 W−5