1 0è9 >Ì h >Ì (í>Ì '¨h 4 >Ì · 2019. 9. 17. · 8 bm 2( q s v (b (8® 9 v...

49
サンプル問題 情報処理技術者能力認定試験 2 級 第2部 解答時における注意事項 1.この試験は,次の表のとおり選択問題があります。注意して解答してください。 問題番号 問1 問2~問4 問5 問6~問10 選択問題の数 必須 3問中2問選択 (注1,注2) 必須 5問中1問選択 (注1,注2) 試験時間 90分 注1:選択した問題は,マークシート左下の<2級選択問題>欄に必ずマー クしてください。 注2:<2級選択問題>欄に選択のマークがない場合,選択問題については 採点の対象になりません。 2.HB の黒鉛筆を使用してください。訂正する場合は,あとが残らないように消 しゴムできれいに消し,消しくずを残さないでください。なお,ボールペンや 万年筆等で記入した場合は,採点されません。 3.マークシート(解答用紙)の所定の欄に,会場コード,受験番号,級種を記入 しマークしてください。また,会場名,氏名及びフリガナ,性別を所定の位置 に記入してください。 4.解答は,次の例題にならって,「解答マーク欄」にマークしてください。 例題 日本の首都はどこか。 ア 東京 イ 京都 ウ 大阪 エ 福岡 正しい答えは“ア 東京”ですから,次のようにマークしてください。 例題 指示があるまで開いてはいけません。 試験終了後,問題冊子を回収します。 受験会場 受験番号

Upload: others

Post on 24-Sep-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

サンプル問題

情報処理技術者能力認定試験

2 級 第2部

解答時における注意事項

1.この試験は,次の表のとおり選択問題があります。注意して解答してください。

問題番号 問1 問2~問4 問5 問6~問10

選択問題の数 必須

3問中2問選択

(注1,注2)

必須

5問中1問選択

(注1,注2)

試験時間 90分

注1:選択した問題は,マークシート左下の<2級選択問題>欄に必ずマー

クしてください。

注2:<2級選択問題>欄に選択のマークがない場合,選択問題については

採点の対象になりません。

2.HB の黒鉛筆を使用してください。訂正する場合は,あとが残らないように消

しゴムできれいに消し,消しくずを残さないでください。なお,ボールペンや

万年筆等で記入した場合は,採点されません。

3.マークシート(解答用紙)の所定の欄に,会場コード,受験番号,級種を記入

しマークしてください。また,会場名,氏名及びフリガナ,性別を所定の位置

に記入してください。

4.解答は,次の例題にならって,「解答マーク欄」にマークしてください。

例題 日本の首都はどこか。

ア 東京 イ 京都 ウ 大阪 エ 福岡

正しい答えは“ア 東京”ですから,次のようにマークしてください。

例題

指示があるまで開いてはいけません。

試験終了後,問題冊子を回収します。

受験会場

受験番号

氏 名

∩ ∩ ∩ ∩

ア イ ウ エ

∪ ∪ ∪ ∪

Page 2: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

試験問題に記載されている会社名又は製品名は,それぞれ各社の商標又は登録商標です。

なお,試験問題では,® 及び TM を明記していません。

Page 3: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 1 -

問1は,必須問題です。

各設問の答えは,ア~エの中から一つだけ選び,設問番号に対応したマークシートの解答番

号の「解答マーク欄」にマークしてください。なお,二つ以上マークした場合は不正解になり

ます。

問1 ネットワークセキュリティに関する次の記述を読んで,設問1~4に答えよ。

N 社では,顧客との取引に Web ページの利用を計画している。インターネットの

ようなオープンなネットワークでは,通信データの盗聴,通信経路中での改ざん及

びなりすましなどの問題点があることが指摘されている。また,不正アクセスに

よって Web ページが改ざんされたり,顧客情報などが漏えいしたりすることは,企

業として社会的な信用問題となる。これらの問題点に対して,次のような対策を検

討することになった。

〔盗聴対策〕

通信データの盗聴に関しては,暗号通信が有効である。暗号通信には,大きく分け

て共通鍵暗号方式と公開鍵暗号方式がある。共通鍵暗号方式では,暗号化鍵と復号

鍵に同じ鍵を使用するが,公開鍵暗号方式では,一対の鍵(以下,非対称鍵とい

う)を作成し,一方を秘密鍵,他方を公開鍵として使用する。公開鍵暗号方式によ

る暗号化及び復号の手順は次のとおりである。

(1) 送信者は, a を入手する。

(2) 送信者は, a でデータを暗号化し,送信する。

(3) 受信者は,暗号化されたデータを b で復号する。

〔改ざん対策〕

通信データの改ざんに関しては,公開鍵暗号方式で使われる非対称鍵及びハッシュ

関数を利用した c が有効である。 c によるデータの送受信の

手順は,次のとおりである。

(1) 送信者は,データからハッシュ値を生成する。

(2) 生成したハッシュ値を d で暗号化し, c としてデータと

ともに受信者に送信する。

(3) 受信者は,送信者と同じ手順で,受け取ったデータからハッシュ値を生成する。

(4) 生成したハッシュ値と, c を e で復号したものを比較す

る。それらが一致すれば,受け取ったデータは,途中で改ざんされていないこと

が証明される。

Page 4: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 2 -

〔なりすまし対策〕

なりすましに関しては,N 社を被認証者として,認証機関から,被認証者の情報

及び被認証者の公開鍵に認証機関の c を施した f を発行して

もらうことにより対処する。通信による取引において,公開鍵が正当であることを

証明するこの f を利用することにより,取引相手からの信用を得ること

ができる。

〔不正アクセス対策〕

内部ネットワーク上のサーバを,インターネットに公開するときに必要となるもの

がファイアウォールである。ファイアウォールは,Web ページの不正な改ざんや,

サーバ内のファイルを消去するなどの不正アクセスに対して,外部との境界を流れ

るデータを監視し,不正なアクセスを検出・遮断するソフトウェアやハードウェア

である。ファイアウォールがもつパケットフィルタリングでは,一般に,

パケットの g ,送信元やあて先の h や i を事

前に登録しておくことで,パケットの通過を許可,又は禁止することができる。

[設問1]説明文中の a , b に入れる適切な字句の組合せを,解

答群の中から選べ。

解答群

a b ア 受信者の公開鍵 受信者の秘密鍵 イ 受信者の秘密鍵 受信者の公開鍵 ウ 送信者の公開鍵 送信者の秘密鍵 エ 送信者の秘密鍵 送信者の公開鍵

[設問2]説明文中の c , f に入れる適切な字句の組合せを,解

答群の中から選べ。

解答群

c f ア ハッシュ値 ディジタル署名 イ ディジタル証明書 ディジタル署名 ウ ディジタル署名 ディジタル証明書 エ ディジタル署名 ハッシュ値

Page 5: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 3 -

[設問3]説明文中の d , e に入れる適切な字句の組合せを,解

答群の中から選べ。

解答群

d e ア 受信者の公開鍵 受信者の秘密鍵 イ 受信者の秘密鍵 受信者の公開鍵 ウ 送信者の公開鍵 送信者の秘密鍵 エ 送信者の秘密鍵 送信者の公開鍵

[設問4]説明文中の g ~ i に入れる適切な字句の組合せを,解

答群の中から選べ。

解答群

g h i ア 長さ IP アドレス ポート番号 イ 長さ MAC アドレス IP アドレス ウ 方向 IP アドレス ポート番号 エ 方向 MAC アドレス IP アドレス

Page 6: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 4 -

問2~問4は,選択問題です。この中から2問を選択して解答してください。選択した問題

は,マークシート左下の<2級選択問題>欄に必ずマークしてください。マークがない場合,

選択問題については採点の対象になりません。

各設問の答えは,ア~エの中から一つだけ選び,設問番号に対応したマークシートの解答番

号の「解答マーク欄」にマークしてください。なお,二つ以上マークした場合は不正解になり

ます。

問2 CPU の高速化技術に関する次の記述を読んで,設問5~8に答えよ。

CPU の高速化に関する代表的な技術の一つに,パイプライン方式がある。パイプ

ライン方式は,命令を,命令の取出しから結果の書込みまでの幾つかのステップに

分割し,一つの命令の終了を待たずに次の命令を実行する方式である。例えば,一

つの命令において,次の①~④の順に処理を行う。

① 命令の取出し(以下,F ステップという)

② 命令の解読(以下,D ステップという)

③ 命令の実行(以下,E ステップという)

④ 結果の書込み(以下,W ステップという)

図 1 の例に示すように,命令 1~3(以下,I1~I3 という)を実行する場合,I1 の

F ステップが終了し,I1 の D ステップを開始すると同時に,I2 の F ステップを開始

する。続けて,I2 の F ステップが終了し,I2 の D ステップを開始すると同時に,I3

の F ステップを開始するというように,各ステップが命令を流れ作業のように処理

することによって,複数の命令をオーバラップさせて実行することができる。

0 1 2 3 4 5 6 クロック数

I1 F D E W I2 F D E W I3 F D E W

図1 パイプライン処理による命令の実行

一つの命令の終了を待って次の命令を行う方式(以下,逐次実行方式という)の

CPU において,クロック周波数を 500MHz としたとき,1 命令の実行がすべて 4 ク

ロックで完了する六つの命令を順に実行した場合,すべての命令が完了する時間は

a ナノ秒となるが,1 命令が 4 ステップで構成され,各ステップに 1 ク

ロックを必要とするパイプライン方式の CPU においては,六つの命令が完了する時

間は b ナノ秒となる。ここで,パイプライン方式の CPU は,逐次実行

方式と同じクロック周波数で駆動されるものとし,いずれの方式においても,命令

Page 7: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 5 -

中に実行順序を変更する命令はないものとする。

スーパ パイプラインと呼ばれる方式では,このステップをさらに小さく分け,ク

ロック周波数を上げることにより高速化を図っている。図 2 に,F,D,E,W の各

ステップをそれぞれ二つに分け,1 命令を 8 ステップにしたときの例を示す。

0 1 2 3 4 5 6 7 8 9 10 クロック数

I1 F1 F2 D1 D2 E1 E2 W1 W2 I2 F1 F2 D1 D2 E1 E2 W1 W2 I3 F1 F2 D1 D2 E1 E2 W1 W2

図2 スーパ パイプライン処理による命令の実行

図 2 の例のようなスーパ パイプライン方式において,クロック周波数を 1GHz と

したとき,六つの命令が完了する時間は c ナノ秒となる。

これらのパイプライン処理は,命令長が固定で単純な命令から構成される命令

セットをもち,複雑な処理には適さない d と呼ばれる設計思想に基づい

た,ハードウェアを e するコンピュータアーキテクチャに適している。

Page 8: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 6 -

[設問5]説明文中の a に入れる適切な字句を,解答群の中から選べ。

解答群

ア 24 イ 36 ウ 48 エ 60

[設問6]説明文中の b に入れる適切な字句を,解答群の中から選べ。

解答群

ア 12 イ 15 ウ 18 エ 20

[設問7]説明文中の c に入れる適切な字句を,解答群の中から選べ。

解答群

ア 12 イ 13 ウ 14 エ 15

[設問8]説明文中の d , e に入れる適切な字句の組合せを,解

答群の中から選べ。

解答群

d e ア CISC マイクロコードで制御 イ CISC ワイヤードロジックで構成 ウ RISC マイクロコードで制御 エ RISC ワイヤードロジックで構成

Page 9: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 7 -

問3 関係データベースに関する次の記述を読んで,設問9~12 に答えよ。

家電量販店の B 社では,関係データベースを利用した販売管理システム(以下,

システムという)が稼働している。システムのデータベースは,図に示すような会

員表,売上表,売上明細表,商品表,分類表から構成されている。ここで,図にお

いて,下線は各表の主キーを表す。

会員表

会員番号 会員名 メールアドレス 累計ポイント

売上表

売上番号 売上日 会員番号

売上明細表

売上番号 明細番号 商品番号 販売数量

商品表

商品番号 商品名 販売単価 ポイント付加率 分類番号

分類表

分類番号 分類名

図 システムのデータベース構造

〔データベースの説明〕

(1) B 社ではポイントカード会員制を採用していて,入会すると会員表に会員番号,

会員名及びメールアドレスが登録される。

(2) 会員証を提示して商品を購入すると,売上日,購入した会員の会員番号が売上

表に記録される。ここで,非会員が商品を購入した場合,売上表の会員番号には

NULLが設定される。

(3) 商品の購入時に,会員の希望により累計ポイントを購入代金,あるいはその一

部にあてることができる。

(4) 商品ごとにポイント付加率が定められている。

(5) ポイントには有効期限があり,1 年間商品を購入しないと累計ポイントは 0 にな

る。

(6) 商品は,分類番号により分類される。

Page 10: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 8 -

B 社では,毎月,次に示す資料を作成している。

〔作成する資料〕

(1) 前月分の分類別売上合計一覧表を作成する。分類別売上合計一覧表の作成例を

表 1 に示す。

表1 分類別売上合計一覧表

分類番号 分類名 売上合計 10001 テレビ 150000000 10002 ラジオ 7000000

… … … 20001 デスクトップパソコン 240000000 20002 ノートパソコン 100000000 20003 パソコン周辺機器 6000000

… … …

次に,表 1 を表示するための SQL 文を示す。ここで,〔月初日〕及び〔月末日〕

には,それぞれ前月の 1 日及び末日を入力する。

SELECT  B.分類番号, B.分類名, 

    SUM(M.販売数量 * S.販売単価) AS 売上合計 

  FROM 売上表 U, 売上明細表 M, 商品表 S, 分類表 B 

   WHERE  M.売上番号 = U.売上番号 

     AND  M.商品番号 = S.商品番号 

     AND  S.分類番号 = B.分類番号 

     AND  U.売上日  a  〔月初日〕  b  〔月末日〕 

   c   B.分類番号, B.分類名

(2) 前月分データを対象として,1 回の購入代金が 100,000 円を超える会員の売上を

表示するため,表 2 に示す高額売上一覧表を作成する。

表2 高額売上一覧表

売上番号 会員番号 売上金額

00001 00002 16000000003 00004 103000

… … …

次に,表 2 を表示するための SQL 文を示す。ここで,〔月初日〕及び〔月末日〕

には,それぞれ前月の 1 日及び末日を入力する。

Page 11: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 9 -

SELECT  U.売上番号, U.会員番号, 

    SUM(M.販売数量 * S.販売単価) AS 売上金額 

   FROM 売上表 U, 売上明細表 M, 商品表 S 

   WHERE  U.売上番号 = M.売上番号 

     AND  M.商品番号 = S.商品番号 

    AND U.会員番号  d  

     AND U.売上日  a 〔月初日〕 b 〔月末日〕 

   c   U.売上番号, U.会員番号 

   e   SUM(M.販売数量 * S.販売単価) > 100000 

(3) 累計ポイントが 300 ポイント以上の会員のうち,指定した日付以降に一度も商

品を購入していない会員にメールを送付するため,表 3 に示すお知らせ通知一覧

表を作成する。

表3 お知らせ通知一覧表

会員番号 会員名 メールアドレス 累計ポイント

00005 井上 京子 [email protected] 15000 00007 太田 稔 [email protected] 9000

… … … …

次に,表 3 を表示するための SQL 文を示す。ここで,〔指定日〕には,指定した

日付を入力する。

SELECT  K.会員番号, K.会員名, K.メールアドレス, K.累計ポイント 

   FROM 会員表 K 

   WHERE  K.累計ポイント >= 300 

    AND  K.会員番号  f  ( 

      SELECT U.会員番号 

         FROM  売上表 U 

          WHERE   U.会員番号  d  

           AND   U.売上日 >=〔指定日〕)

Page 12: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 10 -

[設問9]SQL 文中の a , b に入れる適切な字句の組合せを,解

答群の中から選べ。

解答群

a b ア AND  BETWEEN 

イ BETWEEN  AND 

ウ BETWEEN  OR 

エ OR  BETWEEN 

[設問10]SQL 文中の c , e に入れる適切な字句の組合せを,解

答群の中から選べ。

解答群

c e ア GROUP  BY  HAVING 

イ GROUP  BY  WHERE 

ウ ORDER  BY  HAVING 

エ ORDER  BY  WHERE 

[設問11] SQL 文中の d に入れる適切な字句を,解答群の中から選べ。

解答群

ア = '' イ NOT = ''

ウ IS NULL エ IS NOT NULL

[設問12] SQL 文中の f に入れる適切な字句を,解答群の中から選べ。

解答群

ア EXISTS イ NOT EXISTS

ウ IN エ NOT IN

Page 13: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 11 -

問4 コンピュータシステムの信頼性に関する次の記述を読んで,設問 13~16 に答えよ。

T 社では,本店に業務サーバ及びデータベースサーバを設置し,支店に設置したパ

ソコンとの間を回線で接続した業務システム(以下,システムという)を構築して

運用している。このシステムの支店における信頼性を調査するため,稼働率の計算

を行うことになった。

図 システムの構成図

稼働率を求めるための条件は,次のとおりである。

〔稼働率を求めるための条件〕

(1) 支店における各パソコン(PC1~PC3)の稼働率をすべて Prとする。

(2) 回線の稼働率を Lrとする。

(3) 本店の業務サーバの稼働率を Ar,データベースサーバの稼働率を Dr とし,本店

全体の稼働率を Hr とする。なお,これらのサーバは共に稼働していなければ業務

を行うことができない。

(4) 支店のパソコンのうち,少なくとも 1 台以上が稼働していれば,業務を行うこ

とができる。

上記の条件を基に,システム全体の稼働率を求めることにした。

支店内のパソコン全体の稼働率 Br は, a で求められ,システム全体の

稼働率は, b で求められる。

次に,システムの稼働率の向上を目的として,本店に業務サーバを新規に追加導

入することにした。導入する業務サーバの稼働率は,既存のサーバと同じで,これ

ら二つのサーバのうち,少なくともいずれか一方が稼働すれば業務を行うことがで

きる。業務サーバの追加後における本店全体の稼働率 Hrは, c となる。

調査の過程において,繁忙時に業務を行うためには,支店のパソコンは 2 台以

上稼動している必要があるということが判明した。このとき,支店内のパソコン

全体の稼働率 Br は, d となる。

PC1 PC2 PC3

本店 支店

業務

サーバ

回線

データベース

サーバ

Page 14: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 12 -

[設問13]説明文中の a に入れる適切な式を,解答群の中から選べ。

解答群

ア 1 -(1 - Pr3) イ 1 -(1 - Pr)

3

ウ Pr3 エ (1 - Pr)

3

[設問14]説明文中の b に入れる適切な式を,解答群の中から選べ。

解答群

ア 1 -(1 - Br)×(1 - Lr)×(1 - Hr)

イ 1 -(Br × Lr × Hr)

ウ Br × Lr × Hr

エ (1 - Br)×(1 - Lr)×(1 - Hr)

[設問15]説明文中の c に入れる適切な式を,解答群の中から選べ。

解答群

ア 1 - Dr ×(1 - Ar)2 イ Dr × Ar

2

ウ Dr ×(1 -(1 - Ar))2 エ Dr × (1 -(1 - Ar)2)

[設問16]説明文中の d に入れる適切な式を,解答群の中から選べ。

解答群

ア 3 ×(1 - Pr)3 イ 3 × Pr

2 ×(1 - Pr)

ウ Pr3 + 2 × Pr

2 ×(1 - Pr) エ Pr3 + 3 × Pr

2 ×(1 - Pr)

Page 15: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 13 -

問5は,必須問題です。

各設問の答えは,ア~エの中から一つだけ選び,設問番号に対応したマークシートの解答番

号の「解答マーク欄」にマークしてください。なお,二つ以上マークした場合は不正解になり

ます。

問5 次の整列アルゴリズムに関するプログラムの説明,擬似言語の記述形式などの説明

及びプログラムを読んで,設問 17~20 に答えよ。

〔プログラムの説明〕

主プログラムから渡された顧客番号及び獲得ポイントが格納されている配列を基

に,顧客番号をキーとして昇順に整列する副プログラム Sel_Sortである。

(1) 配列の要素番号は 0から始まる。

(2) 整列の対象となる顧客番号及び獲得ポイントが格納されている二つの配列

CoNo[],及び Pnts[]の内容例を図 1 に示す。ここで,配列に格納されている要素

数は,変数 Numに格納されている。

要素番号 CoNo[]  Pnts[]  0  7 10

… … …

4  5 30

… … …

Num-1 12 110

図1 二つの 1 次元配列の構成

(3) 顧客番号は 1~99999 の範囲である。

(4) 顧客番号は重複することもある。この場合は,獲得ポイントを 1 要素に集約する。

集約されて不要となった要素の顧客番号には,100000 を設定する。

(5) 引き渡された二つの 1 次元配列には,それぞれ少なくとも 2 要素以上のデータが

格納されている。

(6) 顧客番号 CoNo[],及び獲得ポイント Pnts[]が図 2 の内容で,要素数 Numが 5の

場合の整列手順を示す。

要素番号 CoNo[]  Pnts[]  0  7 101  1 202  5 303  1 404  3 50

図2 整列前の配列の内容

Page 16: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 14 -

① 未整列範囲を CoNo[0]~[4]とし,顧客番号 CoNo[0](先頭要素)と顧客番号

CoNo[1]~[4]を順に比較し,顧客番号 CoNo[0]が大きいとき,CoNo[0]と該当要

素の顧客番号を,Pnts[0]と該当要素の獲得ポイントをそれぞれ入れ替える。た

だし,顧客番号 CoNo[0]が該当要素と一致する場合は,Pnts[0]に該当要素の獲

得ポイントを加算し,該当する顧客番号には 100000 を格納する。ここで,加算

処理において,けたあふれは発生しないものとする。

要素番号 CoNo[]  CoNo[]  CoNo[] CoNo[] CoNo[] 

0  7 1 1 1 1 整列済 1  1 7 7 7 7 2  5 5 5 5 5 未整列範囲 3  1 1 1 100000 100000 4  3 3 3 3 3

要素番号 Pnts[]  Pnts[]  Pnts[] Pnts[] Pnts[] (顧客番号で)

0  10 20 20 60 60 整列済 1  20 10 10 10 10 2  30 30 30 30 30 未整列範囲 3  40 40 40 40 40 4  50 50 50 50 50

図3 先頭の要素が決定される様子

② 未整列範囲を CoNo[1]~[4],CoNo[2]~[4],CoNo[3]~[4]と変えながら,

①の処理を繰り返す。

(7) 副プログラム Sel_Sortの引数の仕様を,表に示す。

表 Sel_Sort の引数の仕様

引数名 データ型 入力/出力 意味

CoNo[]  整数型 入出力 顧客番号を格納する 1 次元配列

Pnts[]  整数型 入出力

獲得ポイントを格納する 1 次元

配列

Num  整数型 入力 1 次元配列に格納されている要

素数

Page 17: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 15 -

〔擬似言語の記述形式などの説明〕

(1) 記述形式 記述形式 説明

○ 手続,変数などの名前,型などを宣言する。 /* 文 */ 文に注釈を記述する。

処 理

・変数 ← 式 変数に式の値を代入する。 ・手続( 引数, ・・・ ) 手続を呼び出し,引数を受け渡す。 ▲ 条件式 単岐選択処理を示す。

条件式が真のときは処理を実行する。 処理

▲ 条件式 双岐選択処理を示す。 条件式が真のときは処理 1 を実行し,偽のと

きは処理 2 を実行する。

処理 1

処理 2

▼ ■ 条件式 前判定繰返し処理を示す。

条件式が真の間,処理を繰り返し実行する。 処理

■ ■ 後判定繰返し処理を示す。

処理を実行し,条件式が真の間,処理を繰り

返し実行する。

処理

■ 条件式

■ 変数: 初期値, 条件式, 増分

処理 ■

繰返し処理を示す。

開始時点で変数に初期値(定数又は式で与え

られる)が格納され,条件式が真の間,処理

を繰り返す。また,繰り返すごとに,変数

に増分(定数又は式で与えられる)を加える。

(2) 演算子と優先順位

演算の種類 演算子 優先順位

単項演算 +,-,not 高

乗除演算 ×,÷,%

加減演算 +,-

関係演算 >,<,≧,≦,=,≠

論理積 and 

論理和 or 

注記 整数同士の除算では,商を結果として返す。%演算子は,剰余算を表す。

(3) 論理型の定数

true,false

Page 18: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 16 -

〔プログラム〕

○Sel_Sort(整数型: CoNo[], 整数型: Pnts[], 整数型: Num)

○整数型: i, j, W_CoNo, W_Pnts

■ a

■ b

▲ c

・W_CoNo ← CoNo[i]

・W_Pnts ← Pnts[i]

・CoNo[i] ← CoNo[j]

・Pnts[i] ← Pnts[j]

・CoNo[j] ← W_CoNo

・Pnts[j] ← W_Pnts

▲ d

・Pnts[i] ← Pnts[i] + Pnts[j]

・ e

Page 19: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 17 -

[設問17]プログラム中の a に入れる適切な字句を,解答群の中から選べ。

解答群

ア i: 0, i < Num - 1, 1 イ i: 1, i < Num, 1

ウ i: 1, i < Num - 1, 1 エ i: 2, i < Num, 1

[設問18]プログラム中の b に入れる適切な字句を,解答群の中から選べ。

解答群

ア j: 0, j < Num - 1, 1 イ j: i, j < Num - 1, 1

ウ j: i + 1, j < Num, 1 エ j: i + 1, j < Num - 1, 1

[設問19]プログラム中の c , d に入れる適切な字句の組合せを,

解答群の中から選べ。

解答群

c d ア CoNo[i] < CoNo[j] CoNo[i] = CoNo[j] イ CoNo[i] < CoNo[j] CoNo[i] > CoNo[j] ウ CoNo[i] > CoNo[j] CoNo[i] = CoNo[j] エ CoNo[i] > CoNo[j] CoNo[i] < CoNo[j]

[設問20]プログラム中の e に入れる適切な字句を,解答群の中から選べ。

解答群

ア CoNo[i] ← 0 イ CoNo[i] ← 100000

ウ CoNo[j] ← 0 エ CoNo[j] ← 100000

Page 20: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 18 -

問6~問 10 は,選択問題です。この中から1問を選択して解答してください。選択した問

題は,マークシート左下の<2級選択問題>欄に必ずマークしてください。マークがない場合,

選択問題については採点の対象になりません。

各設問の答えは,ア~エの中から一つだけ選び,設問番号に対応したマークシートの解答番

号の「解答マーク欄」にマークしてください。なお,二つ以上マークした場合は不正解になり

ます。

問6 次の C プログラムの説明及びプログラムを読んで,設問 21~24 に答えよ。

〔プログラムの説明〕

連続する配列に格納されたデータを 16×16 ビットの図形とみなす。副プログラム

Rotateは,その図形を左又は右に 90°回転させるプログラムである。

(1) 主プログラムから渡された配列 ITblを,引数 Drctが“R”の場合は右に 90°,Drct

が“R”以外の場合は左に 90°回転させて,配列 OTblに格納する。 (2) 図 1 に,配列 ITbl及び配列 OTblにデータが格納されている様子を示す。

配列 ITbl 配列 OTbl(右 90°回転) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7 8 9 10  11  12 13 14 150                    * * 0    *      1           * * * *  * * 1 * * * * * * * * * *    2          * * * * * * * * 2 *    * * *  3         * * * * * * * * * * 3 * * * * * * *  * * * * 4       * * * * * * * * * * * 4 * *  * * * * *5     * * * * * * * * * * * * 5 * * * * * * *  * * * * * *6    * * * * * * * * * * * * * * 6 *    * * * * * * *7 * * * * * * * * * * * * * * * * 7 *    * * * * * * *8    *               * 8 * * * * * *  * * * * * * *9    *  * * *    * * * * * * 9 * * * *  * * * * * * *10    *  *  *    *  * * * 10 * * * * * *  * * * * * *11    *  *  *    * * * * * * 11 * * * *  * * * * *12    *  *  *    *  * * * 12 * * * * * *  * * * * * * *13    *  *  *    * * * * * * 13 *    * * * * * * *14    *  *  *         * 14 * * * * * * * * * *     *15    * * * * * * * * * * * * * * 15    *       *

配列 OTbl(左 90°回転)

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 *           *     1 *         * * * * * * * * * * 2    * * * * * * *     * 3    * * * * * * *  * * * * * * 4       * * * * *  *  * * * 5     * * * * * *  * * * * * * 6    * * * * * * *  *  * * * 7    * * * * * * *  * * * * * * 8    * * * * * * *     * 9    * * * * * * *     * 10     * * * * * *  * * * * * * * 11       * * * * *  *  * 12         * * * *  * * * * * * * 13          * * *     * 14           * * * * * * * * * * 15             *    

図1 配列 ITbl 及び配列 OTbl にデータが格納されている様子

Page 21: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 19 -

(3) 配列 OTblに格納する処理は,二重の繰返し処理(以下,外側ループ,又は内側ルー

プという)の中で転記を行うことにより実現している。

① 外側ループにおける ITbl の添字 Iy 及び内側ループにおける ITbl の添字 Ix

は 0 から開始し 15 で終了する。

② 右 90°回転の場合,外側ループにおける OTbl の添字 Ox は 15 から開始し 0 で

終了し,内側ループにおける OTblの添字 Oyは 0 から開始し 15 で終了する。

③ 左 90°回転の場合,外側ループにおける OTbl の添字 Ox は 0 から開始し 15 で

終了し,内側ループにおける OTblの添字 Oyは 15 から開始し 0 で終了する。

(4) 図 2 中の矢印に注目すると,右回転及び左回転のいずれも,Itblの X 軸方向へ(以

下,X という)の変化に対して,Otbl は Y 軸方向(以下,Y という),Itbl の Y

の変化に対して Otblの X が変化する。ここで,右回転では,Itblの X の増加(0,

1,2,…)に対して,Otbl は Y が同様に増加する。また,左回転では,Itbl の X

の増加に対して,Otblの Y は減少(15,14,13,…)する。

なお,図 2 中の ITblの最初に描画を行う座標は(0, 0)である。それに対応する

OTblは,右 90°回転の場合は(15, 0),左 90°回転の場合は(0, 15)となる。

 ITbl  OTbl  右 90°回転 左 90°回転 (0, 0) 開始座標 (15, 0) (0, 15)

図2 内側ループと外側ループ

外側ループ内側ループ

Y

X X

X

Y Y

Page 22: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 20 -

〔プログラム〕 #include <stdio.h> 

#define M 16 

 

void Rotate(char Drct, char ITbl[M][M], char OTbl[M][M]) 

  int S, D, Iy, Ix, Oy, Ox; 

 

  if (Drct == 'R') {    /* 右 90°回転 */ 

    S = 0; 

    D = 1; 

  } else { 

    S = M ‐ 1; 

    D = ‐1; 

  } 

  a ; 

  for (Iy = 0; Iy < M; Iy++) {    /* 外側ループ */ 

    b ; 

    for (Ix = 0; Ix < M; Ix++) {    /* 内側ループ */ 

      OTbl[Oy][Ox] = ITbl[Iy][Ix]; 

      c ; 

    } 

    d ; 

  } 

 

Page 23: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 21 -

[設問21]プログラム中の a に入れる適切な字句を,解答群の中から選べ。

解答群

ア Ox = M ‐ 1    イ Ox = M ‐ S ‐ 1

ウ Oy = M ‐ 1    エ Oy = M ‐ S ‐ 1

[設問22]プログラム中の b に入れる適切な字句を,解答群の中から選べ。

解答群

ア Ox = M    イ Ox = M ‐ 1

ウ Oy = S    エ Oy = M ‐ S ‐ 1

[設問23]プログラム中の c に入れる適切な字句を,解答群の中から選べ。

解答群

ア Ox += D    イ Ox ‐= D

ウ Oy += D    エ Oy ‐= D

[設問24]プログラム中の d に入れる適切な字句を,解答群の中から選べ。

解答群

ア Ox += D    イ Ox ‐= D

ウ Oy += D    エ Oy ‐= D

Page 24: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 22 -

問7 次の COBOL プログラムの説明及びプログラムを読んで,設問 25~28 に答えよ。

〔プログラムの説明〕

売上伝票ファイルを読み込み,重複及び欠番となっている伝票番号を検査して,そ

の番号を印字するプログラムである。

(1) 売上伝票ファイル(DP‐F)のレコード様式は,図 1 のとおりである。

① 売上伝票ファイルは,伝票番号の昇順に整列されている。

② 伝票番号は,1 から最大 99999 の数値データである。

③ 売上伝票ファイルには,1 件以上のレコードが存在する。

伝票番号 売上データ

5 けた 30 けた

図1 売上伝票ファイルのレコード様式

(2) 重複する伝票番号及び欠番となっている伝票番号を,エラーリスト(EL‐F)に印

字する。

① 伝票番号が重複する場合は,区分に“チョウフク”を,開始番号に重複する伝票番

号を,件数に同じ伝票番号をもつレコード件数を印字する。

② 欠番となっている伝票番号がある場合,区分に“ケツバン”を印字する。欠番と

なっている伝票番号が一つの場合は,開始番号にその伝票番号を印字する。欠番

が連続しているときは,その連続する最初の番号を開始番号,最後の番号を終了

番号とし,これらを「-」でつないで印字する。

③ エラーリストの印字例を,図 2 に示す。ここで,見出しはあらかじめ印字され

ているものとする。

伝票番号エラーリスト

区分 開始番号 終了番号 件数

チョウフク 00001 4ケツバン 00002 1ケツバン 00004 1ケツバン 00008- 00009 2ケツバン 00012 1チョウフク 00013 2

… … … …

図2 エラーリストの印字例

Page 25: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 23 -

〔プログラム〕

DATA DIVISION. 

FILE SECTION. 

FD   DP‐F. 

01   DP‐REC. 

     03  DP‐DPNO                  PIC  9(05). 

     03  DP‐DATA. 

       05   DP‐SH‐MEI            PIC  X(30). 

FD   EL‐F. 

01   EL‐REC                        PIC  X(30). 

WORKING‐STORAGE SECTION. 

01   EL‐D‐REC. 

     03                            PIC  X(04) VALUE SPACE. 

  03  EL‐D‐KUBUN               PIC  X(05). 

     03                            PIC  X(03) VALUE SPACE. 

     03  EL‐D‐S‐DPNO              PIC  9(05). 

  03                            PIC  X(01) VALUE SPACE. 

     03  EL‐D‐HYPHEN             PIC  X(01). 

  03                            PIC  X(01) VALUE SPACE. 

     03  EL‐D‐E‐DPNO‐X. 

       05   EL‐D‐E‐DPNO            PIC  9(05). 

     03                            PIC  X(01) VALUE SPACE. 

     03  EL‐D‐E‐CNT               PIC  ZZ,ZZ9. 

01   KY. 

     03  KY‐DPNO                  PIC  9(05). 

01   SV. 

     03  SV‐DPNO                  PIC  9(05). 

01   D‐CNT                         PIC  9(05). 

PROCEDURE DIVISION. 

PRO‐STA. 

     OPEN INPUT DP‐F OUTPUT EL‐F. 

     PERFORM READ‐DP‐RTN. 

     PERFORM UNTIL KY = HIGH‐VALUE 

          MOVE 0 TO D‐CNT 

          MOVE KY‐DPNO TO SV‐DPNO 

          PERFORM UNTIL KY > SV 

              COMPUTE D‐CNT = D‐CNT + 1 

               PERFORM READ‐DP‐RTN 

          END‐PERFORM 

          IF D‐CNT > 1 THEN 

              MOVE "チョウフク" TO EL‐D‐KUBUN 

              MOVE SV‐DPNO TO EL‐D‐S‐DPNO 

              MOVE SPACE TO EL‐D‐HYPHEN EL‐D‐E‐DPNO‐X 

              MOVE D‐CNT TO EL‐D‐E‐CNT 

              WRITE EL‐REC FROM EL‐D‐REC 

          END‐IF 

          IF  a  THEN 

Page 26: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 24 -

              IF KY‐DPNO > SV‐DPNO + 1 THEN 

                   MOVE "ケツバン" TO EL‐D‐KUBUN 

                   COMPUTE EL‐D‐S‐DPNO = SV‐DPNO + 1 

                   IF  b  THEN 

                       MOVE "‐" TO EL‐D‐HYPHEN 

                        c  

                   ELSE 

                       MOVE SPACE TO EL‐D‐HYPHEN EL‐D‐E‐DPNO‐X 

                   END‐IF 

                    d  

                   WRITE EL‐REC FROM EL‐D‐REC 

              END‐IF 

          END‐IF 

     END‐PERFORM. 

     CLOSE DP‐F EL‐F. 

     STOP RUN. 

READ‐DP‐RTN. 

     READ DP‐F 

          AT END MOVE HIGH‐VALUE TO KY 

          NOT AT END MOVE DP‐DPNO TO KY‐DPNO 

     END‐READ. 

Page 27: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 25 -

[設問25]プログラム中の a に入れる適切な字句を,解答群の中から選べ。

解答群

ア KY = HIGH‐VALUE  イ KY NOT = HIGH‐VALUE

ウ KY = SV    エ KY > SV

[設問26]プログラム中の b に入れる適切な字句を,解答群の中から選べ。

解答群

ア KY‐DPNO > SV‐DPNO  イ KY‐DPNO > SV‐DPNO + 1

ウ KY‐DPNO > SV‐DPNO + 2  エ KY‐DPNO > SV‐DPNO + 3

[設問27]プログラム中の c に入れる適切な字句を,解答群の中から選べ。

解答群

ア MOVE KY‐DPNO TO EL‐D‐E‐DPNO

イ COMPUTE EL‐D‐E‐DPNO = KY‐DPNO ‐ 1

ウ COMPUTE EL‐D‐E‐DPNO = KY‐DPNO ‐ 2

エ COMPUTE EL‐D‐E‐DPNO = KY‐DPNO ‐ 3

[設問28]プログラム中の d に入れる適切な字句を,解答群の中から選べ。

解答群

ア COMPUTE EL‐D‐E‐CNT = KY‐DPNO ‐ SV‐DPNO

イ COMPUTE EL‐D‐E‐CNT = KY‐DPNO ‐ SV‐DPNO ‐ 1

ウ COMPUTE EL‐D‐E‐CNT = SV‐DPNO ‐ KY‐DPNO

エ COMPUTE EL‐D‐E‐CNT = SV‐DPNO ‐ KY‐DPNO ‐ 1

Page 28: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 26 -

問8 次の Java プログラムの説明及びプログラムを読んで,設問 29~32 に答えよ。

〔プログラムの説明〕

渡された文字列から逆順の文字列を作成するプログラムである。

(1) プログラムは,次の二つのクラスから構成されている。

・クラス TestWord

クラス Word のコンストラクタに,引数として文字列を渡して,インスタンス

wordを作成する。作成されたインスタンスより渡された文字列が,アルファベッ

トかどうかの判断結果と文字型配列,逆順の文字列を格納した文字型配列(以下,

逆順文字型配列という)を取得して,標準出力へ出力する。

・クラス Word

このクラスは,文字型配列(originalword),逆順文字型配列(reverseword)

の二つのフィールドをもつ。また,一つの引数をもつコンストラクタ,文字型配

列を取得するメソッド,逆順文字型配列を取得するメソッド,及び文字型配列の

データがアルファベットかどうかを判断するためのメソッドをもつ。

コンストラクタでは,渡された文字列から文字型配列を作成する。また,文字

型配列から逆順文字型配列を作成する。

メソッド getOriginalwordでは,文字型配列(originalword)を取得する。

メソッド getReversewordでは,逆順文字型配列(reverseword)を取得する。

アルファベットかどうかを判断するメソッド checkAlphaは,文字型配列がア

ルファベットかどうかを検査し,アルファベットの場合は true をアルファベッ

ト以外が含まれている場合は falseを返す。

(2) このプログラムの実行結果を次に示す。ただし,%はシステムのコマンドプロンプ

トである。

%java TestWord 

alpha=true 

December 

rebmeceD 

Page 29: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 27 -

〔プログラム〕 public class TestWord { 

    public static void main(String[] args) { 

        Word word = new Word("December"); 

        System.out.println("alpha=" + word.checkAlpha()); 

        System.out.println(word.getOriginalword()); 

        System.out.println(word.getReverseword()); 

    } 

 

class Word 

    private char[] originalword; 

    private char[] reverseword; 

 

    Word(String originalword) { 

        reverseword =  a ; 

        this.originalword = originalword.toCharArray(); 

        for (int i = originalword.length() ‐ 1;  b ; i‐‐) { 

           reverseword[  c  ] = this.originalword[i]; 

        } 

    } 

 

    public char[] getOriginalword() { 

        return originalword; 

    } 

 

    public char[] getReverseword() { 

        return reverseword; 

    } 

 

    public boolean checkAlpha() { 

        for (int i = 0; i < originalword.length; i++) { 

           if (  d  ) { 

               return false; 

           } 

       } 

       return true; 

    } 

Page 30: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 28 -

[設問29]プログラム中の a に入れる適切な字句を,解答群の中から選べ。

解答群

ア ""

イ null

ウ new char[originalword.length()]

エ new char[this.originalword.length()]

[設問30]プログラム中の b に入れる適切な字句を,解答群の中から選べ。

解答群

ア i == 0

イ i >= 0

ウ i < 0

エ i <= originalword.length() ‐ 1

[設問31]プログラム中の c に入れる適切な字句を,解答群の中から選べ。

解答群

ア i

イ originalword.length()

ウ originalword.length() ‐ i

エ originalword.length() – 1 ‐ i

[設問32]プログラム中の d に入れる適切な字句を,解答群の中から選べ。

解答群

ア !((originalword[i] >= 'a' && originalword[i] <= 'z') 

  || (originalword[i] >= 'A' && originalword[i] <= 'Z')) 

イ (originalword[i] >= 'a' && originalword[i] <= 'z') 

  || (originalword[i] >= 'A' && originalword[i] <= 'Z') 

ウ !((originalword[i] >= 'a' || originalword[i] <= 'z') 

  && (originalword[i] >= 'A' || originalword[i] <= 'Z')) 

エ (originalword[i] >= 'a' || originalword[i] <= 'z') 

  && (originalword[i] >= 'A' || originalword[i] <= 'Z') 

Page 31: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 29 -

問9 次のアセンブラプログラムの説明及びプログラムを読んで,設問 33~36 に答えよ。

〔プログラムの説明〕

リスト中に格納されている単語を,格納順に表示する副プログラム CHNLISTである。

(1) 副プログラム CHNLIST は,GR1 にリストの先頭アドレスが格納されて,主プログ

ラムから呼び出される。

(2) 副プログラム CHNLIST は,格納された先頭の単語から順に,最後の単語までを表

示して主プログラムに戻る。

(3) リストの構造を次に示す。

① 一つのデータは,“データ長”,“単語”(0~30 語)及び“次のデータの先頭アド

レス”からなる。

② データ長には,データ長自身の語の長さ,単語の語数,及び次のデータの先頭

アドレスを示す語の長さの三つの合計が格納される。例えば,単語“XYZ”を格

納するには,データ長の 1 語,単語長の 3 語,次のデータの先頭アドレスの 1 語

を合計した 5 語を必要とする。

③ リストの最後のデータにおける“次のデータの先頭アドレス”には,#0000が

格納される。

④ リスト中には,少なくとも一つ以上の単語が格納されている。

⑤ 次の表に示す単語が格納されている例を図に示す。

表 格納されている単語と順序

格納順 単語 1 A2 AB3 ABCD

アドレス→ 10  11 12  13  14  15 16 17 18 19 20 21 22 23  24  25 

3 'A' 13 4 'A' 'B' 20 - - - 6 'A' 'B' 'C' 'D' 0 …

注記 数値は 10 進数で記述している。また,“-”は空き領域を表す。

図 単語が格納されている例

(4) 副プログラム CHNLISTから戻るとき,汎用レジスタ GR1~GR7の内容は元に戻す。

Page 32: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 30 -

〔プログラム〕 CHNLIST  START          ; リストの表示   RPUSH 

LOOP1  LD  GR2,0,GR1   ; 単語長を 

  LAD  GR2,‐2,GR2   ; バッファ長に 

  ST  GR2,BLN    ; 設定 

  a  

  LAD  GR3,BUF    ; バッファ領域の先頭アドレスを設定 b  

  JZE  DISP 

LOOP2  LD  GR4,0,GR1   ; 1 語を 

  ST  GR4,0,GR3   ; バッファ領域に設定 

  LAD  GR1,1,GR1 

c  

  SUBL  GR2,=1 

  JNZ  LOOP2 

DISP  OUT  BUF,BLN 

  d  

  JZE  FIN 

  JUMP  LOOP1 

FIN  RPOP 

  RET 

BUF  DS  30       ; バッファ領域 

BLN  DS  1        ; バッファ長 

  END 

 

Page 33: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 31 -

[設問33]プログラム中の a に入れる適切な字句を,解答群の中から選べ。

解答群

ア LAD  GR1,1,GR1  イ LAD  GR1,2,GR1

ウ LAD  GR2,1,GR2 エ LAD  GR2,2,GR2

[設問34]プログラム中の b に入れる適切な字句を,解答群の中から選べ。

解答群

ア CPA  GR1,=0    イ CPA  GR1,GR2

ウ CPA  GR2,=0    エ CPA  GR3,0

[設問35]プログラム中の c に入れる適切な字句を,解答群の中から選べ。

解答群

ア LAD  GR3,1,GR1  イ LAD  GR3,1,GR3

ウ LAD  GR3,BUF    エ ST  GR2,BLN

[設問36]プログラム中の d に入れる適切な字句を,解答群の中から選べ。

解答群

ア CPL  GR1,=0    イ CPL  GR2,=0

ウ LD  GR1,0,GR1  エ LD  GR1,1,GR1

Page 34: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 32 -

問10 次の表計算及びワークシートの説明を読んで,設問 37~40 に答えよ。

〔表計算の説明〕

T 専門学校では,情報ビジネス学科の学生を対象として,月 1 回の割合で科目試験を実施

している。今まで科目試験の成績管理をクラスごとに行っていたが,今回,表計算ソフトを

利用して学年単位に行うことになった。

(1) 情報ビジネス学科の構成は,次のとおりである。

① 情報ビジネス学科は 2 年制で,1 学年の定員は 200 名である。

② 1 学年は,1 組~5 組の 5 クラスに分かれている。

(2) 科目試験の内容は,次のとおりである。

① 科目試験は,3 科目について実施される。

② 試験は,すべて 1 科目につき 200 点満点である。

(3) 各ワークシートの作成手順は,次のとおりである。

① ワークシート“結果表”を作成し,1 学年 1 回分の科目試験の結果を表示する。この

とき,1 学年の定員数分のすべての行にデータが入力されても,結果が正しく表示され

るように作成する。

・クラス,学生番号,学生氏名及び科目 1,科目 2,科目 3 それぞれの得点を,受験し

た学生ごとに入力する。

・科目 1,科目 2,科目 3 のいずれか一つ以上に得点が入力されている場合に,それら

の合計得点を表示する。

・合計得点が表示されている場合,その降順の順位を求めて表示する。

・ ワークシート“順位表”において,合計得点の降順に科目試験の結果を表示するため,

ワークシート“結果表”に作業領域を用意する。ここで,用意する項目及びその内容

を,次の表に示す。

表 ワークシート“結果表”に用意する作業領域の項目と内容

項目 内容

連番 1 から始まる連続番号を定員数分入力する。

一意値 降順順位が表示されている場合に,次に示す式で求める。

降順順位 × 定員数 + 連番

表示位置 ワークシート“順位表”の明細行の位置を表示するため,一意値の昇

順順位を表示する。なお,一意値が設定されている場合に限り,その

値を表示する。

② ワークシート“順位表”を作成し,学生ごとの順位,クラス,学生番号,学生氏名,

科目 1,科目 2,科目 3 それぞれの得点及び合計得点を,ワークシート“結果表”の内

容を参照し,合計得点の降順に表示する。

各ワークシートの説明は,次のとおりである。

Page 35: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 33 -

〔ワークシート:結果表〕

(1) ワークシート“結果表”の作成例を,図 1 に示す。

A B C D E F G H I J K 1 結果表 2 順位 クラス 学生番号 学生氏名 科目 1 科目 2 科目 3 合計得点 連番 一意値 表示位置

3 15 1 組 1100 柿本 譲 152 148 196 496 1 3,001 154 8 1 組 1108 山下喜美 176 190 180 546 2 1,602 85 5 1 組 1126 山田倫子 198 176 190 564 3 1,003 56 10 1 組 1128 木島靖子 190 186 160 536 4 2,004 10

… … … … … … … … … … … …

図1 ワークシート“結果表”

(2) ワークシート“結果表”への計算式の入力手順は,次のとおりである。

① 合計得点を表示するため,セル H3 に次の計算式を入力し,セル H4~H202 に複写す

る。

IF( a ,'',合計(E3~G3))

② 順位を表示するため,セル A3 に次の計算式を入力し,セル A4~A202 に複写する。

IF(H3='','',順位(H3,H$3~H$202,1))

③ 一意値を表示するため,セル J3 に次の計算式を入力し,セル J4~J202 に複写する。

IF(A3='','', b )

④ 表示位置を表示するため,セル K3 に次の計算式を入力し,セル K4~K202 に複写す

る。

IF(J3='','', c )

〔ワークシート:順位表〕

(1) ワークシート“順位表”の作成例を,図 2 に示す。

A B C D E F G H 1 順位表 2 順位 クラス 学生番号 学生氏名 科目 1 科目 2 科目 3 合計得点

3 1 2 組 1203 木田真一 198 200 198 596 4 2 5 組 1515 土田美奈 200 198 188 586 5 3 2 組 1208 高田順子 186 198 196 580 6 3 3 組 1305 岩本貴代 190 192 198 580

… … … … … … … … …

図2 ワークシート“順位表”

(2) ワークシート“順位表”の順位,クラス,学生番号,学生氏名,科目 1,科目 2,科目

3 及び合計得点を表示するため,セル A3 に次の計算式を入力し,セル A3~H202 に複写

する。

IF(結果表!$K3='','', d )

Page 36: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 34 -

[設問37]ワークシート“結果表”のセル H3に入力する計算式中の a に入れる適切

な字句を,解答群の中から選べ。

解答群

ア 個数(E3~G3)=0 イ 個数(E3~G3)>0

ウ 合計(E3~G3)=0 エ 最大(E3~G3)=0

[設問38]ワークシート“結果表”のセル J3に入力する計算式中の b に入れる適切

な字句を,解答群の中から選べ。

解答群

ア A3*200 イ A3*200+I3

ウ A3*200-I3 エ A3*I3

[設問39]ワークシート“結果表”のセル K3に入力する計算式中の c に入れる適切

な字句を,解答群の中から選べ。

解答群

ア 順位(J3,J3~J202,0) イ 順位(J3,J3~J202,1)

ウ 順位(J3,J$3~J$202,0) エ 順位(J3,J$3~J$202,1)

[設問40]ワークシート“順位表”のセル A3 に入力する計算式中の d に入れる適切

な字句を,解答群の中から選べ。

解答群

ア 照合検索(結果表!I3,結果表!$K$3~$K$202,結果表!A$3~A$202)

イ 照合検索(結果表!$I3,結果表!$K$3~$K$202,結果表!A$3~A$202)

ウ 照合検索(結果表!$I3,結果表!$K$3~$K$202,結果表!$A$3~$A$202)

エ 垂直照合(結果表!$I3,結果表!$I$3~$K$202,3,0)

Page 37: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 35 -

アセンブラ言語の仕様

1. システムCOMETⅡの仕様

1.1 ハードウェアの仕様

(1) 1 語は 16 ビットで,そのビット構成は,次のとおりである。

上位 8 ビット 下位 8 ビット

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 (ビット番号)

符号(負:1,非負:0)

(2) 主記憶の容量は 65536 語で,そのアドレスは 0~65535 番地である。

(3) 数値は,16 ビットの 2 進数で表現する。負数は,2 の補数で表現する。

(4) 制御方式は逐次制御で,命令語は 1 語長又は 2 語長である。

(5) レジスタとして,GR(16 ビット),SP(16 ビット),PR(16 ビット),FR(3 ビット)の 4 種類が

ある。

GR(汎用レジスタ,General Register)は,GR0~GR7の 8 個があり,算術,論理,比較,シフトなど

の演算に用いる。このうち,GR1~GR7のレジスタは,指標レジスタ(index register)としてアドレスの修飾に

も用いる。

SP(スタックポインタ,Stack Pointer)は,スタックの最上段のアドレスを保持している。

PR(プログラムレジスタ,Program Register)は,次に実行すべき命令語の先頭アドレスを保持してい

る。

FR(フラグレジスタ,Flag Register)は,OF(Overflow Flag),SF(Sign Flag),ZF(Zero Flag)

と呼ぶ3個のビットからなり,演算命令などの実行によって次の値が設定される。これらの値は,条件付き

分岐命令で参照される。

OF

算術演算命令の場合は,演算結果が-32768~32767に収まらなくなったとき1になり,

それ以外のときは 0 になる。論理演算命令の場合は,演算結果が 0~65535 に収まらな

くなったとき 1 になり,それ以外のとき 0 になる。

SF 演算結果の符号が負(ビット番号 15 が 1)のとき 1,それ以外のとき 0 になる。

ZF 演算結果が零(全部のビットが 0)のとき 1,それ以外のとき 0 になる。

(6) 論理加算又は論理減算は,被演算データを符号のない数値とみなして,加算又は減算する。

1.2 命令

命令の形式及びその機能を示す。ここで,一つの命令コードに対し 2 種類のオペランドがある場合,上段

はレジスタ間の命令,下段はレジスタと主記憶間の命令を表す。

命 令

書 き 方

命 令 の 説 明 FR の設定 命 令 コード

オペランド

(1) ロード,ストア,ロードアドレス命令

ロード LoaD

LD r1,r2 r1 ← (r2)

○*1 r,adr [,x] r ← (実効アドレス)

ストア STore

ST r,adr [,x] 実効アドレス ← (r) -

ロードアドレス Load ADdress

LAD r,adr [,x] r ← 実効アドレス

Page 38: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 36 -

(2) 算術,論理演算命令

算術加算 ADD Arithmetic

ADDA r1,r2 r1 ← (r1) + (r2)

r,adr [,x] r ← (r) +(実効アドレス)

論理加算 ADD Logical

ADDL r1,r2 r1 ← (r1) +L (r2)

r,adr [,x] r ← (r) +L (実効アドレス)

算術減算 SUBtract Arithmetic

SUBA r1,r2 r1 ← (r1) - (r2)

r,adr [,x] r ← (r) - (実効アドレス)

論理減算 SUBtract Logical

SUBL r1,r2 r1 ← (r1) -L (r2)

r,adr [,x] r ← (r) -L (実効アドレス)

論理積 AND

AND r1,r2 r1 ← (r1) AND (r2)

○*1

r,adr [,x] r ← (r) AND (実効アドレス)

論理和 OR

OR r1,r2 r1 ← (r1) OR (r2)

r,adr [,x] r ← (r) OR (実効アドレス)

排他的論理和 eXclusive OR

XOR r1,r2 r1 ← (r1) XOR (r2)

r,adr [,x] r ← (r) XOR (実効アドレス)

(3) 比較演算命令

算術比較

ComPare Arithmetic CPA

r1,r2

(r1)と(r2),又は(r)と(実効アドレス)

の算術比較又は論理比較を行い,比較結

果によって,FR に次の値を設定する。

○*1

r,adr [,x]

論理比較

ComPare Logical CPL

r1,r2

r,adr [,x]

(4) シフト演算命令

算術左シフト Shift Left Arithmetic

SLA r,adr [,x] 符号を除き,(r)を実効アドレスで指定

したビット数だけ左又は右にシフトする。 シフトの結果,空いたビット位置には,

左シフトのときは0,右シフトのときは符号と同じものが入る。

○*2

算術右シフト Shift Right Arithmetic

SRA r,adr [,x]

論理左シフト Shift Left Logical

SLL r,adr [,x] 符号を含み,(r)を実効アドレスで指定

したビット数だけ左又は右にシフトする。 シフトの結果,空いたビット位置には0

が入る。 論理右シフト Shift Right Logical

SRL r,adr [,x]

(5) 分岐命令

正分岐 Jump on PLus

JPL adr [,x] FRの値によって,実効アドレスに分岐

する。分岐しないときは,次の命令に進む。

負分岐 Jump on MInus

JMI adr [,x]

非零分岐 Jump on Non Zero

JNZ adr [,x]

零分岐 Jump on ZEro

JZE adr [,x]

オーバフロー分岐 Jump on OVerflow

JOV adr [,x]

無条件分岐 unconditional JUMP

JUMP adr [,x] 無条件に実効アドレスに分岐する。

比較結果 FRの値 SF ZF

(r1) > (r2) 0 0

(r) > (実効アドレス)

(r1) = (r2) 0 1

(r) = (実効アドレス)

(r1) < (r2) 1 0

(r) < (実効アドレス)

命令 分岐するときのFRの値

OF SF ZF

JPL 0 0

JMI 1

JNZ 0

JZE 1

JOV 1

Page 39: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 37 -

列 行 02 03 04 05 06 07

0 間隔 0 @ P ` p

1 ! 1 A Q a q

2 " 2 B R b r

3 # 3 C S c s

4 $ 4 D T d t

5 % 5 E U e u

6 & 6 F V f v

7 ' 7 G W g w

8 ( 8 H X h x

9 ) 9 I Y i y

10 * : J Z j z

11 + ; K [ k {

12 , < L ¥ l |

13 - = M ] m }

14 . > N ^ n ~

15 / ? O _ o

(6) スタック操作命令

プッシュ PUSH

PUSH adr [,x] SP ← (SP) -L 1,

(SP) ← 実効アドレス -

ポップ POP

POP r r ← ( (SP) ),

SP ← (SP) +L 1

(7) コール,リターン命令

コール CALL subroutine

CALL adr [,x]

SP ← (SP) -L 1,

(SP) ← (PR),

PR ← 実効アドレス -

リターン RETurn from subroutine

RET PR ← ( (SP) ),

SP ← (SP) +L 1

(8) その他

スーパバイザコール SuperVisor Call

SVC adr [,x] 実効アドレスを引数として割出しを行

う。実行後の GR と FR は不定となる。 -

ノーオペレーション No OPeration

NOP 何もしない。

(注)r,r1,r2 いずれも GR を示す。指定できる GR は GR0~GR7

adr アドレスを示す。指定できる値の範囲は 0~65535

x 指標レジスタとして用いる GR を示す。指定できる GR は GR1~GR7

[ ] [ ]内の指定は省略できることを示す。

( ) ( )内のレジスタ又はアドレスに格納されている内容を示す。

実効アドレス adrと xの内容との論理加算値又はその値が示す番地

← 演算結果を,左辺のレジスタ又はアドレスに格納することを示す。

+L,-L 論理加算,論理減算を示す。

FR の設定 ○ :設定されることを示す。

○*1:設定されることを示す。ただし,OFには0が設定される。

○*2:設定されることを示す。ただし,OFにはレジスタから最後に送り出されたビットの値

が設定される。

- :実行前の値が保持されることを示す。

1.3 文字の符号表

(1) JIS X 0201 ラテン文字・片仮名用 8 ビット符号で規

定する文字の符号表を使用する。

(2) 右に符号表の一部を示す。1 文字は 8 ビットからなり,

上位 4 ビットを列で,下位 4 ビットを行で示す。例えば,

間隔,4,H,¥のビット構成は,16 進表示で,それぞれ

20,34,48,5C である。16 進表示で,ビット構成が

21~7E(及び表では省略している A1~DF)に対応す

る文字を図形文字という。図形文字は,表示(印刷)装

置で,文字として表示(印字)できる。

(3) この表にない文字とそのビット構成が必要な場合は,

問題中で与える。

Page 40: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 38 -

2. アセンブラ言語CASLⅡの仕様

2.1 言語の仕様

(1) CASLⅡは,COMETⅡのためのアセンブラ言語である。

(2) プログラムは,命令行及び注釈行からなる。

(3) 1 命令は 1 命令行で記述し,次の行へ継続できない。

(4) 命令行及び注釈行は,次に示す記述の形式で,行の 1 文字目から記述する。

行 の 種 類 記 述 の 形 式

命令行 オペランドあり [ラベル]{空白}{命令コード}{空白}{オペランド}[{空白}[コメント]]

オペランドなし [ラベル]{空白}{命令コード}[{空白}[{;}[コメント]]]

注釈行 [空白]{;}[コメント]

(注) [ ] [ ]内の指定が省略できることを示す。

{ } { }内の指定が必須であることを示す。

ラベル その命令の(先頭の語の)アドレスを他の命令やプログラムから参照するための名前である。長

さは1~8文字で,先頭の文字は英大文字でなければならない。以降の文字は,英大文字又は数

字のいずれでもよい。なお,予約語である GR0~GR7は,使用できない。

空白 1 文字以上の間隔文字の列である。

命令コード 命令ごとに記述の形式が定義されている。

オペランド 命令ごとに記述の形式が定義されている。

コメント 覚え書きなどの任意の情報であり,処理系で許す任意の文字を書くことができる。

2.2 命令の種類

命令は,4 種類のアセンブラ命令(START,END,DS,DC),4 種類のマクロ命令(IN,OUT,RPUSH,

RPOP)及び機械語命令(COMETⅡの命令)からなる。その仕様を次に示す。

命令の種類 ラベル 命 令コード

オペランド 機 能

アセンブラ命令

ラベル START [実行開始番地]

プログラムの先頭を定義 プログラムの実行開始番地を定義 他のプログラムで参照する入口名を定義

END プログラムの終わりを明示

[ラベル] DS 語数 領域を確保

[ラベル] DC 定数 [,定数]… 定数を定義

マクロ命令

[ラベル]

IN

入力領域,入力文字長領域

入力装置から文字データを入力

[ラベル] OUT 出力領域,出力文字長領域 出力装置へ文字データを出力

[ラベル] RPUSH GR の内容をスタックに格納

[ラベル] RPOP スタックの内容を GR に格納

機械語命令 [ラベル] (「1.2 命令」を参照)

2.3 アセンブラ命令

アセンブラ命令は,アセンブラの制御などを行う。

(1) START [実行開始番地]

START命令は,プログラムの先頭を定義する。

実行開始番地は,そのプログラム内で定義されたラベルで指定する。指定がある場合はその番地から,省

略した場合は START命令の次の命令から,実行を開始する。

また,この命令につけられたラベルは,他のプログラムから入口名として参照できる。

(2) END

END命令は,プログラムの終わりを定義する。

Page 41: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 39 -

(3) DS 語数

DS命令は,指定した語数の領域を確保する。

語数は,10 進定数(≧0)で指定する。語数を 0 とした場合,領域は確保しないが,ラベルは有効である。

(4) DC 定数 [,定数]…

DC命令は,定数で指定したデータを(連続する)語に格納する。

定数には,10 進定数,16 進定数,文字定数,アドレス定数の 4 種類がある。

定数の種類 書き方 命 令 の 説 明

10 進定数 n nで指定した 10 進数値を,1 語の 2 進数データとして格納する。ただし,n

が-32768~32767 の範囲にないときは,その下位 16 ビットを格納する。

16 進定数 #h hは 4 けたの 16 進数(16 進数字は 0~9,A~F)とする。hで指定した 16

進数値を 1 語の 2 進数データとして格納する(0000≦h≦FFFF)。

文字定数 '文字列'

文字列の文字数(>0)分の連続する領域を確保し,最初の文字は第 1 語の

下位 8 ビットに,2 番目の文字は第 2 語の下位 8 ビットに,…と順次文字デ

ータとして格納する。各語の上位 8 ビットには 0 のビットが入る。

文字列には,間隔及び任意の図形文字を書くことができる。ただし,アポス

トロフィ( ' )は 2 個続けて書く。

アドレス定数 ラベル ラベルに対応するアドレスを 1 語の 2 進数データとして格納する。

2.4 マクロ命令

マクロ命令は,あらかじめ定義された命令群とオペランドの情報によって,目的の機能を果たす命令群を

生成する(語数は不定)。

(1) IN 入力領域,入力文字長領域

IN命令は,あらかじめ割り当てた入力装置から,1 レコードの文字データを読み込む。

入力領域は,256 語長の作業域のラベルであり,この領域の先頭から,1 文字を 1 語に対応させて順次入

力される。レコードの区切り符号(キーボード入力の復帰符号など)は,格納しない。格納の形式は,DC

命令の文字定数と同じである。入力データが256文字に満たない場合,入力領域の残りの部分は実行前のデ

ータを保持する。入力データが 256 文字を超える場合,以降の文字は無視される。

入力文字長領域は,1語長の領域のラベルであり,入力された文字の長さ(≧0)が 2進数で格納される。

ファイルの終わり(end of file)を検出した場合は,-1 が格納される。

IN命令を実行すると,GR の内容は保存されるが,FR の内容は不定となる。

(2) OUT 出力領域,出力文字長領域

OUT命令は,あらかじめ割り当てた出力装置に,文字データを,1 レコードとして書き出す。

出力領域は,出力しようとするデータが1文字1語で格納されている領域のラベルである。格納の形式は,

DC命令の文字定数と同じであるが,上位8ビットは,OSが無視するので0でなくてもよい。出力文字長領

域は,1 語長の領域のラベルであり,出力しようとする文字の長さ(≧0)を 2 進数で格納しておく。

OUT命令を実行すると,GR の内容は保存されるが,FR の内容は不定となる。

(3) RPUSH

RPUSH命令は,GR の内容を,GR1,GR2,…,GR7の順序でスタックに格納する。

(4) RPOP

RPOP命令は,スタックの内容を順次取り出し,GR7,GR6,…,GR1の順序で GR に格納する。

Page 42: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 40 -

2.5 機械語命令

機械語命令のオペランドは,次の形式で記述する。

r, r1, r2 GR は,記号 GR0~GR7で指定する。

x 指標レジスタとして用いる GR は,記号 GR1~GR7で指定する。

adr アドレスは,10 進定数,16 進定数,アドレス定数又はリテラルで指定する。

リテラルは,一つの 10 進定数,16 進定数又は文字定数の前に等号(=)を付けて記述する。

CASLⅡは,等号の後の定数をオペランドとする DC命令を生成し,そのアドレスを adrの

値とする。

2.6 その他

(1) アセンブラによって生成される命令語や領域の相対位置は,アセンブラ言語での記述順序とする。ただし,

リテラルから生成される DC命令は,END命令の直前にまとめて配置される。

(2) 生成された命令語,領域は,主記憶上で連続した領域を占める。

3. プログラム実行の手引き

3.1 OS

プログラムの実行に関して,次の取決めがある。

(1) アセンブラは,未定義ラベル(オペランド欄に記述されたラベルのうち,そのプログラム内で定義されて

いないラベル)を,他のプログラムの入口名(START命令のラベル)と解釈する。この場合,アセンブラ

はアドレスの決定を保留し,その決定をOS に任せる。OSは,実行に先立って他のプログラムの入口名と

の連係処理を行いアドレスを決定する(プログラムの連係)。

(2) プログラムは,OSによって起動される。プログラムがロードされる主記憶の領域は不定とするが,プロ

グラム中のラベルに対応するアドレス値は,OS によって実アドレスに補正されるものとする。

(3) プログラムの起動時に,OSはプログラム用に十分な容量のスタック領域を確保し,その最後のアドレス

に 1 を加算した値を SP に設定する。

(4) OSは,CALL命令でプログラムに制御を渡す。プログラムを終了しOSに制御を戻すときは,RET命令を使

用する。

(5) IN命令に対応する入力装置,OUT命令に対応する出力装置の割当ては,プログラムの実行に先立って利

用者が行う。

(6) OSは,入出力装置や媒体による入出力手続の違いを吸収し,システムでの標準の形式及び手続(異常処

理を含む)で入出力を行う。したがって,IN,OUT命令では,入出力装置の違いを意識する必要はない。

3.2 未定義事項

プログラムの実行等に関し,この仕様で定義しない事項は,処理系によるものとする。

Page 43: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 41 -

表計算ソフトの機能・用語

表計算ソフトの機能,用語などは,原則として次による。

なお,ワークシートの保存,読出し,印刷,罫けい

線作成やグラフ作成など,ここで示す以外の機能

などを使用するときには,問題文中に示す。

1.ワークシート

(1) 列と行とで構成される升目の作業領域をワークシートという。ワークシートの大きさは256

列,10,000行とする。

(2) ワークシートの列と行のそれぞれの位置は,列番号と行番号で表す。列番号は,最左端列の

列番号を A とし,A,B,…,Z,AA,AB,…,AZ,BA,BB,…,BZ,…,IU,IV と表

す。行番号は,最上端行の行番号を1とし,1,2,…,10000と表す。

(3) 複数のワークシートを利用することができる。このとき,各ワークシートには一意のワーク

シート名を付けて,他のワークシートと区別する。

2.セルとセル範囲

(1) ワークシートを構成する各升をセルという。その位置は列番号と行番号で表し,それをセル

番地という。

[例]列 A 行1にあるセルのセル番地は,A1と表す。

(2) ワークシート内のある長方形の領域に含まれる全てのセルの集まりを扱う場合,長方形の左

上端と右下端のセル番地及び“~”を用いて,“左上端のセル番地~右下端のセル番地”と表

す。これを,セル範囲という。

[例]左上端のセル番地が A1で,右下端のセル番地が B3のセル範囲は,A1~B3と表す。

(3) 他のワークシートのセル番地又はセル範囲を指定する場合には,ワークシート名と“!”を用

い,それぞれ“ワークシート名!セル番地”又は“ワークシート名!セル範囲”と表す。

[例]ワークシート“シート1”のセル範囲 B5~G10を,別のワークシートから指定する場合

には,シート1!B5~G10と表す。

3.値と式

(1) セルは値をもち,その値はセル番地によって参照できる。値には,数値,文字列,論理値及

び空値がある。

(2) 文字列は一重引用符“ ’”で囲って表す。

[例]文字列“A”,“BC”は,それぞれ’A’,’BC’と表す。

(3) 論理値の真を true,偽を false と表す。

(4) 空値を null と表し,空値をもつセルを空白セルという。セルの初期状態は,空白セルとする。

(5) セルには,式を入力することができる。セルは,式を評価した結果の値をもつ。

(6) 式は,定数,セル番地,演算子,括弧及び関数から構成される。定数は,数値,文字列,論

理値又は空値を表す表記とする。式中のセル番地は,その番地のセルの値を参照する。

(7) 式には,算術式,文字式及び論理式がある。評価の結果が数値となる式を算術式,文字列と

なる式を文字式,論理値となる式を論理式という。

Page 44: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 42 -

(8) セルに式を入力すると,式は直ちに評価される。式が参照するセルの値が変化したときには,

直ちに,適切に再評価される。

4.演算子

(1) 単項演算子は,正符号“+”及び負符号“-”とする。

(2) 算術演算子は,加算“+”,減算“-”,乗算“*”,除算“/”及びべき乗“^”とする。

(3) 比較演算子は,より大きい“>”,より小さい“<”,以上“≧”,以下“≦”,等しい“=”

及び等しくない“≠”とする。

(4) 括弧は丸括弧“( ”及び“ )”を使う。

(5) 式中に複数の演算及び括弧があるときの計算の順序は,次表の優先順位に従う。

演算の種類 演算子 優先順位

括弧 ( ) 高 低

べき乗演算 ^

単項演算 +,-

乗除演算 *,/

加減演算 +,-

比較演算 >,<,≧,≦,=,≠

5.セルの複写

(1) セルの値又は式を,他のセルに複写することができる。

(2) セルを複写する場合で,複写元のセル中にセル番地を含む式が入力されているとき,複写元

と複写先のセル番地の差を維持するように,式中のセル番地を変化させるセルの参照方法を相

対参照という。この場合,複写先のセルとの列番号の差及び行番号の差を,複写元のセルに入

力された式中の各セル番地に加算した式が,複写先のセルに入る。

[例]セル A6に式 A1+5が入力されているとき,このセルをセル B8に複写すると,セル B8

には式 B3+5が入る。

(3) セルを複写する場合で,複写元のセル中にセル番地を含む式が入力されているとき,そのセ

ル番地の列番号と行番号の両方又は片方を変化させないセルの参照方法を絶対参照という。絶

対参照を適用する列番号と行番号の両方又は片方の直前には“$”を付ける。

[例] セル B1に式$A$1+$A2+A$5が入力されているとき,このセルをセル C4に複写すると,

セル C4には式$A$1+$A5+B$5が入る。

(4) セルを複写する場合で,複写元のセル中に,他のワークシートを参照する式が入力されてい

るとき,その参照するワークシートのワークシート名は複写先でも変わらない。

[例]ワークシート“シート2”のセル A6に式シート1!A1が入力されているとき,このセルを

ワークシート“シート3”のセル B8に複写すると,セル B8には式シート1!B3が入る。

Page 45: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 43 -

6.関数

式には次の表で定義する関数を利用することができる。

書式 解 説

合計(セル範囲1)) セル範囲に含まれる数値の合計を返す。

[例]合計(A1~B5)は,セル範囲 A1~B5に含まれる数値の合計を返す。

平均(セル範囲1)) セル範囲に含まれる数値の平均を返す。

標本標準偏差(セル範囲1))

セル範囲に含まれる数値を標本として計算した標準偏差を返す。

母標準偏差(セル範囲1))

セル範囲に含まれる数値を母集団として計算した標準偏差を返す。

最大(セル範囲1)) セル範囲に含まれる数値の最大値を返す。

最小(セル範囲1)) セル範囲に含まれる数値の最小値を返す。

IF(論理式,式1,

式2)

論理式の値が true のとき式1の値を,false のとき式2の値を返す。

[例]IF(B3>A4,’北海道’,C4)は,セル B3の値がセル A4の値より大きいとき文字列“北海道”を,それ以外のときセル C4の値を返す。

個数(セル範囲) セル範囲に含まれるセルのうち,空白セルでないセルの個数を返す。

条件付個数(セル範囲,検索条件の記述)

セル範囲に含まれるセルのうち,検索条件の記述で指定された条件を満たすセルの個数を返す。検索条件の記述は比較演算子と式の組で記述し,セル範囲に含まれる各セルと式の値を,指定した比較演算子によって評価する。

[例1]条件付個数(H5~L9,>A1)は,セル範囲 H5~L9のセルのうち,セル A1の値より大きな値をもつセルの個数を返す。

[例2]条件付個数(H5~L9,=’A4’)は,セル範囲 H5~L9のセルのうち,文字列“A4”をもつセルの個数を返す。

整数部(算術式)

算術式の値以下で最大の整数を返す。

[例1]整数部(3.9)は,3を返す。

[例2]整数部(-3.9)は,-4を返す。

剰余(算術式1,算術式2)

算術式1の値を被除数,算術式2の値を除数として除算を行ったときの剰余を返す。関数“剰余”と“整数部”は,剰余(x,y) =x-y*整数部 (x

/y)という関係を満たす。

[例1]剰余(10,3)は,1を返す。

[例2]剰余(-10,3)は,2を返す。

平方根(算術式) 算術式の値の非負の平方根を返す。算術式の値は,非負の数値でなければならない。

論理積(論理式1,

論理式2,…)2)

論理式1,論理式2,…の値が全て true のとき,true を返す。それ以外のとき false を返す。

論理和(論理式1,

論理式2,…)2)

論理式1,論理式2,…の値のうち,少なくとも一つが true のとき,true

を返す。それ以外のとき false を返す。

否定(論理式) 論理式の値が true のとき false を,false のとき true を返す。

Page 46: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 44 -

切上げ(算術式,桁位置)

算術式の値を指定した桁位置で,関数“切上げ”は切り上げた値を,関数“四捨五入”は四捨五入した値を,関数“切捨て”は切り捨てた値を返す。ここで,桁位置は小数第1位の桁を0とし,右方向を正として数えたときの位置とする。

[例1]切上げ(-314.159,2)は,-314.16を返す。

[例2]切上げ(314.159,-2)は,400を返す。

[例3]切上げ(314.159,0)は,315を返す。

四捨五入(算術式,桁位置)

切捨て(算術式,桁位置)

結合(式1,式2,…)2)

式1,式2,…のそれぞれの値を文字列として扱い,それらを引数の順につないでできる一つの文字列を返す。 [例]結合(’北海道’,’九州’,123,456)は,文字列“北海道九州123456”

を返す。

順位(算術式,セル範囲1),順序の指定)

セル範囲の中での算術式の値の順位を,順序の指定が0の場合は昇順で,1の場合は降順で数えて,その順位を返す。ここで,セル範囲の中に同じ値がある場合,それらを同順とし,次の順位は同順の個数だけ加算した順位とする。

乱数( ) 0以上1未満の一様乱数(実数値)を返す。

表引き(セル範囲,行の位置,列の位置)

セル範囲の左上端から行と列をそれぞれ1,2,…と数え,セル範囲に含まれる行の位置と列の位置で指定した場所にあるセルの値を返す。 [例]表引き(A3~H11,2,5)は,セル E4の値を返す。

垂直照合(式,セル範囲,列の位置,検索の指定)

セル範囲の左端列を上から下に走査し,検索の指定によって指定される条件を満たすセルが現れる最初の行を探す。その行に対して,セル範囲の左端列から列を1,2,…と数え,セル範囲に含まれる列の位置で指定した列にあるセルの値を返す。

・検索の指定が0の場合の条件:式の値と一致する値を検索する。

・検索の指定が1の場合の条件:式の値以下の最大値を検索する。このとき,左端列は上から順に昇順に整列されている必要がある。

[例]垂直照合(15,A2~E10,5,0)は,セル範囲の左端列をセル A2,A3,…,A10と探す。このとき,セル A6で15を最初に見つけたとすると,左端列 A から数えて5列目の列 E 中で,セル A6と同じ行にあるセル E6の値を返す。

水平照合(式,セル範囲,行の位置,検索の指定)

セル範囲の上端行を左から右に走査し,検索の指定によって指定される条件を満たすセルが現れる最初の列を探す。その列に対して,セル範囲の上端行から行を1,2,…と数え,セル範囲に含まれる行の位置で指定した行にあるセルの値を返す。

・検索の指定が0の場合の条件:式の値と一致する値を検索する。

・検索の指定が1の場合の条件:式の値以下の最大値を検索する。このとき,上端行は左から順に昇順に整列されている必要がある。

[例]水平照合(15,A2~G6,5,1)は,セル範囲の上端行をセル A2,B2,…,G2と探す。このとき,15以下の最大値をセル D2で最初に見つけたとすると,上端行2から数えて5行目の行6中で,セル D2と同じ列にあるセル D6の値を返す。

照合検索(式,検索のセル範囲,抽出のセル範囲)

1行又は1列を対象とする同じ大きさの検索のセル範囲と抽出のセル範囲に対して,検索のセル範囲を左端又は上端から走査し,式の値と一致する最初のセルを探す。見つかったセルの検索のセル範囲の中での位置と,抽出のセル範囲の中での位置が同じセルの値を返す。 [例]照合検索(15,A1~A8,C6~C13)は,セル範囲 A1~A8をセル

A1,A2,…と探す。このとき,セル A5で15を最初に見つけたとすると,セル範囲 C6~C13の上端から数えて5番目のセル C10の値を返す。

Page 47: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 45 -

照合一致(式,セル範囲,検索の指定)

1行又は1列を対象とするセル範囲に対して,セル範囲の左端又は上端から走査し,検索の指定によって指定される条件を満たす最初のセルを探す。見つかったセルの位置を,セル範囲の左端又は上端から1,2,…と数えた値とし,その値を返す。

・検索の指定が0の場合の条件:式の値と一致する値を検索する。

・検索の指定が1の場合の条件:式の値以下の最大値を検索する。このとき,セル範囲は左端又は上端から順に昇順に整列されている必要がある。

・検索の指定が―1の場合の条件:式の値以上の最小値を検索する。このとき,セル範囲は左端又は上端から順に降順に整列されている必要がある。

[例]照合一致(15,B2~B12,-1)は,セル範囲 B2~B12をセル B2,B3,…と探す。このとき,15以上の最小値をセル B9で最初に見つけたとすると,セル B2から数えた値8を返す。

条件付合計(検索のセル範囲,検索条件の記述,合計のセル範囲1))

行数及び列数が共に同じ検索のセル範囲と合計のセル範囲に対して,検索と合計を行う。検索のセル範囲に含まれるセルのうち,検索条件の記述で指定される条件を満たすセルを全て探す。検索条件の記述を満たした各セルについての左上端からの位置と,合計のセル範囲中で同じ位置にある各セルの値を合計して返す。

検索条件の記述は比較演算子と式の組で記述し,検索のセル範囲に含まれる各セルと式の値を,指定した比較演算子によって評価する。

[例1]条件付合計(A1~B8,>E1,C2~D9)は,検索のセル範囲である A1~B8のうち,セル E1の値より大きな値をもつ全てのセルを探す。このとき,セル A2,B4,B7が見つかったとすると,合計のセル範囲である C2~D9の左上端からの位置が同じであるセル C3,D5,D8の値を合計して返す。

[例2]条件付合計(A1~B8,=160,C2~D9)は,検索のセル範囲である A1~B8のうち,160と一致する値をもつ全てのセルを探す。このとき,セル A2,B4,B7が見つかったとすると,合計のセル範囲である C2~D9の左上端からの位置が同じであるセルC3,D5,D8の値を合計して返す。

注 1) 引数として渡したセル範囲の中で,数値以外の値は処理の対象としない。

2) 引数として渡すことができる式の個数は,1以上である。

Page 48: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

- 46 -

7.マクロ

(1) ワークシートとマクロ

ワークシートには複数のマクロを格納することができる。

マクロは一意のマクロ名を付けて宣言する。マクロの実行は,表計算ソフトのマクロの実行

機能を使って行う。

[例]○マクロ:Pro

例は,マクロ Proの宣言である。

(2) 変数とセル変数

変数の型には,数値型,文字列型及び論理型があり,変数は宣言することで使用できる。変

数名にセル番地を使用することはできない。

[例]○数値型:row,col

例は,数値型の変数 row,colの宣言である。

セルを変数として使用でき,これをセル変数という。セル変数は,宣言せずに使用できる。

セル変数の表現方法には,絶対表現と相対表現とがある。

セル変数の絶対表現は,セル番地で表す。

セル変数の相対表現は,次の書式で表す。

書式 解 説

相対(セル変数,行の位置,列の位置)

セル変数で指定したセルを基準のセルとする。そのセルの行番号と列番号の位置を0とし,下又は右方向を正として数え,行の位置と列の位置で指定した数と一致する場所にあるセルを表す変数である。

[例1]相対(B5, 2, 3)は,セル E7を表す変数である。

[例2]相対(B5, -2, -1)は,セル A3を表す変数である。

(3) 配列

数値型,文字列型又は論理型の配列は宣言することで使用できる。添字を“[ ”及び“ ]”で

囲み,添字が複数ある場合はコンマで区切る。添字は0から始まる。

なお,数値型及び文字列型の変数及び配列の要素には,空値を格納することができる。

[例]○文字列型:table[100, 200]

例は,100×200個の文字列型の要素をもつ2次元配列 tableの宣言である。

(4) 宣言,注釈及び処理

宣言,注釈及び処理の記述は,“共通に使用される擬似言語の記述形式”に従う。

処理の記述中に式又は関数を使用する場合,その記述中に変数,セル変数又は配列の要素が

使用できる。

[例]○数値型:row

■ row:0, row < 5, 1

・相対(B5, row, 0) ← 順位(相対(C5, row, 0), G5~G9, 0)

例は,セル C5,C6,…,C9の各値に対して,セル範囲 G5~G9の中での順位を調べ,

その順位をセル B5,B6,…,B9に順に代入する。

Page 49: 1 0è9 >Ì H >Ì (í>Ì '¨H 4 >Ì · 2019. 9. 17. · 8 BM 2( q S v (b (8® 9 V 0£ M0t/² 8 BM (8® 9 V 0£ M0t/²b 8 B [ /² 1 _&gM /²>/ (8® 9 V 0£ M0t/² (8®$ (8® ¡ V 0£

試験問題内容に関して,他人にこれを伝え,漏洩することを禁じます。

©CERTIFY Inc.2014 禁無断転載複写