ブログのおねーさまこと山口あかねです。久々に基本情報の午後問題、CASLの解説をしてみますね。
設問1
配列中のデータをバブルソートで入れ替えをする、という簡単なプログラムである。
プログラムを見ると、
6行目:GR5に先頭データを取り出している。
7行目:GR5の内容と(GR4)+1番地の記憶内容を比較している。
つまり、先頭のデータとその次のデータを比較していることになる。
今回のバブルソートは昇順に並べるので、先頭からの比較であれば、先頭とその次のデータを比較して、大きなデータが後ろになるように並べ替えを行う。
今回であれば、GR5の内容の方が小さければそのまま、GR5の内容の方が大きければ次のデータと入れ替えることになる。
9行目から11行目で入れ替えを行っているので、GR5の内容が小さい場合は入れ替えの部分を飛び越える必要がある。
すなわち、解答は「JMI CONT」で、アとなる。
a:ア b:エ
設問2
バブルソートの比較交換の様子を下に図式化しておく。
比較は合計6回行われ、赤丸のところで交換が起きているため、CPL命令の実行は6回、交換が実行されてデータが格納される時に実行されるST命令は3回実行される。
c:カ d:ウ
設問3
設問3のプログラム2は、IN命令で数字文字列を入力し、それを2進化10進数に変換したあと、前述のプログラムを使い、バブルソートによって昇順に並べ替える。その後、再び数字文字列に直して、OUT命令で出力するという内容になっている。
まず、IN命令で入力した数字文字列は下の図左のように入力される。それをARRAYからの連続した領域に「0289」というような2進化10進数に変換して1つの数字を1領域ずつに格納していく。メモリは16ビットの大きさなので、2進化10進数は最大4桁のものまで入れることができる。
変換する手順は次の通り。
①IN命令で入力された文字コードの数字文字を先頭のものからGR5へ取り出す。(7行目)
②下位4ビットを取り出すためにマスクデータ#000FとANDする。
③2進化10進数を作成するレジスタ(GR3)を左へ4ビットシフトする。(9行目)
④空いた下位4ビットへ文字コードから取り出した下位4ビットデータを併合する。
この作業を文字の桁数分だけ繰り返すと、2進化10進数が作成できる。
これをデータ数回繰り返したのち、設問1のプログラム1を使い昇順に並べ替える。
昇順に並んだら、次はOUT命令を使って出力をする。出力の手順は入力の手順の逆で以下のことを行う。
①ARRAY配列の先頭からデータをGR0へ取り出す。(19行目)
②GR0のデータをGR3へコピーする。(21行目)
③下位から4ビットごとに2進化10進数を取り出す。(22行目の空欄e)
④取り出した下位4ビットデータに#0030を併合し、文字コードへと変換する。(23行目)
➄出来上がった文字コードをBUF配列に格納する。(24行目)
⑥GR0にある元データを右へ4ビットシフトして次の桁の数字が下位4ビットに来るようにする。(27行目空欄f)
以上の操作を繰り返す。
注意!!格納はBUF+3番地から上へと入れていくこと。
e:イ f:オ
2014年(平成26年度)秋期の解説
- 平成26年度 秋 基本情報技術者試験 【問7】(その2)
- 平成26年度 秋 基本情報技術者試験 【問7】(その1)
- 平成26年度 秋 基本情報技術者試験 【問6】
- 平成26年度 秋 基本情報技術者試験 【問5】
- 平成26年度 秋 基本情報技術者試験 【問4】
- 平成26年度 秋 基本情報技術者試験 【問12】
- 平成26年度 秋 基本情報技術者試験 【問3】
- 平成26年度 秋 基本情報技術者試験 【問2】
- 平成26年度 秋 基本情報技術者試験 【問1】
- Date:
- この記事を
友だちに教える - LINE
- - HatenaBookmark
- GooglePlus