設問1のa
問われている内容は?
穴埋め箇所に適する命令は?(要素走査)
|
3
4
5
6
7
8
9
10
|
LD
GR4,GR2 ;GR4←n
LP LD
GR2,0,GR1 ;次の要素をたどる
JZE
FIN ;n>Nか?
SUBA
GR4,=1
JZE
NEXT ;要素nに達したか?
[
a ]
JUMP
LP
NEXT LD
GR3,LTBL,GR3
|
ア
|
JMI FIN
|
イ
|
LAD GR1,1,GR1
|
ウ
|
LAD GR4,1,GR4
|
エ
|
LD GR1,GR2
|
オ
|
LD GR1,0,GR2
|
穴埋め箇所の前後の処理、解答群からの推測
穴埋め箇所の前後の処理や解答群から、解答が絞りにくいので、〔プログラムの説明〕から処理を推測してみます。
〔プログラムの説明〕からの処理を推測
〔プログラムの説明〕から穴埋め箇所の処理を推測します。
推測される処理は、
次のリストのアドレス(GR2)を現リストのアドレス(GR1)とする。
|
です。
この処理に該当する選択肢は、「エ LD GR1,GR2」です。
3
4
5
6
7
8
9
10
|
LD
GR4,GR2 ;要素n番目
LP LD
GR2,0,GR1 ;次アドレスを取得
JZE
FIN ;現アドレスが0?
SUBA
GR4,=1 ;要素番号減算
JZE
NEXT ;要素nに達したか?
[
a ] ;次アドレスを現アドレスとする
JUMP
LP ;
NEXT LD
GR3,LTBL,GR3
|
講評
設問1のaではイと誤って解答した受験者が多く見受けられた。
また、ウ又はオと誤って解答した受験者が見受けられた。
GR1とGR2の役割と“要素をたどる"という操作の意味が理解できれば、正答できた。
|
設問1のb
問われている内容は?
穴埋め箇所に適する命令は?(要素挿入)
|
12
13
14
15
16
17
|
LINS LD
GR4,GR2
CALL
EGET ;GR2←挿入される要素の先頭アドレス
[
b ]
ST
GR4,0,GR2 ;挿入される要素の1語目を設定
ST
GR0,1,GR2
JUMP
FIN
|
ア
|
LD GR4,0,GR1
|
イ
|
LD GR4,0,GR2
|
ウ
|
ST GR2,0,GR1
|
エ
|
ST GR2,0,GR2
|
オ
|
ST GR4,0,GR1
|
カ
|
ST GR4,0,GR2
|
穴埋め箇所の前後の処理、解答群からの推測
穴埋め箇所の前後の処理や解答群から、解答が絞りにくいので、〔プログラムの説明〕から処理を推測してみます。
〔プログラムの説明〕からの処理を推測
穴埋め箇所は、リスト挿入時の処理の一部です。
ソースをトレースして、獲得した領域をリストに挿入する処理に不足がないかを確認します。
推測される処理は、
現要素の次アドレスに新アドレス(GR2)設定する。
|
です。
GR2を設定する選択肢は、「ウ ST
GR2,0,GR1」「エ ST GR2,0,GR2」です。
「エ ST GR2,0,GR2」は、GR2をGR2+0に設定しているので除外され、「ウ ST GR2,0,GR1」が正解となります。
12
13
14
15
16
17
|
LINS LD
GR4,GR2 ;現要素の次アドレス取得
CALL
EGET ;GR2←挿入される要素の先頭アドレス
[
b ] ;現要素の次アドレスに新アドレス設定
ST
GR4,0,GR2 ;新要素に次アドレス格納
ST
GR0,1,GR2 ;新要素に挿入値を格納
JUMP
FIN
|
[行番号12]実行後
要素の最終
|
|||
GR1→
|
GR4=GR2=0
|
||
値N
|
[行番号13]実行後
要素の最終
|
新規リスト
|
||
GR1→
|
GR4=0
|
GR2→
|
|
値N
|
[行番号14]実行後
要素の最終
|
新規リスト
|
||
GR1→
|
GR2
|
GR2→
|
|
値N
|
[行番号15,16]実行後
要素の最終
|
新規リスト
|
||
GR1→
|
GR2
|
GR2→
|
GR4=0
|
値N
|
GR0
|
講評
bではア又はイと誤って解答した受験者が見受けられた。
直前の命令で、GR2に、新たに挿入される要素の先頭アドレスが得られていることに気がつけば、正答できた。
|
設問1のc
問われている内容は?
穴埋め箇所に適する命令は?(要素削除)
|
18
19
20
|
LDEL [
c ] ;GR4←要素n+1の先頭アドレス
ST
GR4,0,GR1 ;要素n-1の1語目を再設定
CALL
EFREE ;削除された要素nの領域を解放
|
ア
|
LD GR4,0,GR1
|
イ
|
LD GR4,0,GR2
|
ウ
|
LD GR4,2,GR1
|
エ
|
LD GR4,2,GR2
|
オ
|
LD GR4,GR1
|
カ
|
LD GR4,GR2
|
穴埋め箇所は、リスト削除時の処理の一部です。
ソースをトレースして、リストから削除する処理に不足がないかを確認します。
推測される処理は、
削除する要素の次アドレスをGR4に設定する。
|
です。
0番目にアドレスが格納されていることから、「ア LD GR4,0,GR1」「イ LD GR4,0,GR2」に絞られます。
行番号19のコメントより、GR1は削除要素の一つ前の要素アドレスなので、「ア
LD GR4,0,GR1」は除外され、「イ LD GR4,0,GR2」が正解となります。
[行番号18]実行前
N-1番目orROOT
|
N番目
|
N+1番目
|
|||
GR1→
|
要素nの領域アドレス
|
GR2→
|
要素n+1の領域アドレス
|
||
値N-1
|
値N
|
[行番号18]実行後
N-1番目orROOT
|
N番目
|
N+1番目
|
|||
GR1→
|
要素nの領域アドレス
|
GR2→
|
要素n+1の領域アドレス(=GR4)
|
GR4→
|
|
値N-1
|
値N
|
[行番号19]実行後
N-1番目orROOT
|
N番目
|
N+1番目
|
|||
GR1→
|
要素n+1の領域アドレス(=GR4)
|
GR2→
|
要素n+1の領域アドレス
|
GR4→
|
|
値N-1
|
値N
|
講評
cではウ又はエと誤って解答した受験者が見受けられた。
ここでも、GR2の役割が理解できれば、正答できた。
|
設問2
問われている内容は?
プログラムのトレース結果
|
12
13
14
15
16
17
|
LINS LD
GR4,GR2 ;現要素の次アドレス取得
CALL
EGET ;GR2←挿入される要素の先頭アドレス
[
b ] ;現要素の次アドレスに新アドレス設定
ST
GR4,0,GR2 ;新要素に次アドレス格納
ST
GR0,1,GR2 ;新要素に挿入値を格納
JUMP
FIN
|
ア
|
挿入する要素の先頭アドレス
|
イ
|
要素2の先頭アドレス
|
ウ
|
要素3の先頭アドレス
|
エ
|
O
|
〔プログラムの説明〕を確認
「n番目に挿入」とあるが、どこに挿入されるか再確認する。
(3)の②に、「挿入された要素がn番目になるように挿入される」と記述されています。
本問の場合、既存の要素2と要素3の間に要素が挿入されます。
トレースしてみる
既に「設問1のb」にてトレース済で、GR2には次の要素のアドレスが格納されることが分っている。
正解は、「ウ 要素3の先頭アドレス」になる。
[行番号12]実行後
N
|
N+1
|
||
GR1→
|
GR2=GR4=N+1のアドレス
|
GR2=GR4→
|
|
値N
|
講評
設問2では、ア又はイと誤って解答した受験者が見受けられた。
GR2は、但し、GR4に退避された後、行番号15で新たに挿入される要素の1語目が設定されることに気がつけば、正答できた。
|
設問3
問われている内容は?
プログラムのトレース結果
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
MAIN START
LD
GR0,=1 ;挿入する値
LD
GR2,=3 ;3番目となるように挿入
LD
GR3,=0 ;挿入指示
LAD
GR1,ROOT ;ROOTアドレス
CALL
LPROC
LD
GR0,=2 ;挿入する値
CALL
LPROC ;3番目となるように挿入
LD
GR3,=1 ;削除指示
CALL
LPROC ;3番目を削除
RET
ROOT DC
LIST
LIST DC
E3,#000A ;リストの最初の要素(要素1)
E1 DC
E2,#000B
E2 DC
#0000,#000D ;リストの最後の要素
E3 DC E1,#000C
END
|
ア
|
α1
|
イ
|
α2
|
ウ
|
E1
|
エ
|
E2
|
オ
|
0
|
トレースして操作内容を把握する
操作内容は以下のとおりです。
1.
3番目に挿入
2.
3番目に挿入
3.
3番目を削除
初期状態
LIST
|
E3
|
E1
|
E2
|
||||
E3
|
E1
|
E2
|
#0000
|
||||
#000A
|
#000C
|
#000B
|
#000D
|
3番目挿入後
LIST
|
E3
|
α1
|
E1
|
E2
|
|||||
E3
|
α1
|
E1
|
E2
|
#0000
|
|||||
#000A
|
#000C
|
#0001
|
#000B
|
#000D
|
3番目挿入後
LIST
|
E3
|
α2
|
α1
|
E1
|
E2
|
||||||
E3
|
α2
|
α1
|
E1
|
E2
|
#0000
|
||||||
#000A
|
#000C
|
#0001
|
#0001
|
#000B
|
#000D
|
3番目削除後
LIST
|
E3
|
α1
|
E1
|
E2
|
|||||||
E3
|
α1
|
E1
|
E2
|
#0000
|
|||||||
#000A
|
#000C
|
#0001
|
#000B
|
#000D
|
正解は、「アα1」になります。
講評
設問3では、オ以外に解答が分散した。
主記憶上に展開されたリストを、図示するなどの工夫をしてイメージできれば、正答できた。
|
0 件のコメント:
コメントを投稿