• 検索結果がありません。

ノード 3 ノード 4

01   W‐ZEIGAKU                  PIC  S9(07)

PROCEDURE DIVISION. 

PRO‐STA. 

     OPEN INPUT GEN‐F. 

  READ GEN‐F 

    AT END SET GEN‐EOF TO TRUE 

  END‐READ. 

     PERFORM UNTIL GEN‐EOF 

         COMPUTE T‐MAX = T‐MAX + 1 

         MOVE GEN‐KYUYO TO TBL‐KYUYO(T‐MAX) 

         PERFORM VARYING IX FROM 1 BY 1 UNTIL IX > 8 

       MOVE GEN‐ZEIGAKU(IX) TO TBL‐ZEIGAKU(T‐MAX IX)           END‐PERFORM 

     READ GEN‐F 

      AT END SET GEN‐EOF TO TRUE      END‐READ 

     END‐PERFORM. 

     CLOSE GEN‐F. 

     OPEN INPUT KYU‐F OUTPUT ZEI‐F       PERFORM UNTIL KYU‐EOF 

      READ KYU‐F          AT END 

       SET KYU‐EOF TO TRUE          NOT AT END 

      PERFORM VARYING IX FROM 1 BY 1             UNTIL 

 

               CONTINUE         END‐PERFORM 

       IF IX > T‐MAX THEN         b  

         PERFORM CALC‐ZEIGAKU         c  

       ELSE 

       PERFORM CALC‐ZEIGAKU         END‐IF 

       MOVE KYU‐SNUM TO ZEI‐SNUM         MOVE W‐ZEIGAKU TO ZEI‐ZEIGAKU          WRITE ZEI‐R 

        END‐READ       END‐PERFORM. 

     CLOSE KYU‐F ZEI‐F. 

     STOP RUN. 

CALC‐ZEIGAKU. 

     IF KYU‐FUYO > 7 THEN         d  

      IF W‐ZEIGAKU < 0 THEN         

e    

      END‐IF       ELSE 

         MOVE TBL‐ZEIGAKU(IX KYU‐FUYO + 1) TO W‐ZEIGAKU       END‐IF. 

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

解答群

ア IX < T‐MAX AND TBL‐KYUYO(IX) < KYU‐KYUYO イ IX > T‐MAX AND TBL‐KYUYO(IX) > KYU‐KYUYO ウ IX > T‐MAX OR TBL‐KYUYO(IX) > KYU‐KYUYO エ IX > T‐MAX OR TBL‐KYUYO(IX) < KYU‐KYUYO

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

解答群

ア MOVE IX TO T‐MAX  イ MOVE T‐MAX TO IX

ウ MOVE 1 TO I  エ MOVE 1 TO T‐MAX

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

解答群

ア COMPUTE W‐ZEIGAKU = W‐ZEIGAKU + KYU‐KYUYO * 1.3 イ COMPUTE W‐ZEIGAKU = W‐ZEIGAKU 

  + (KYU‐KYUYO ‐ TBL‐KYUYO(1)) * 0.3 

ウ COMPUTE W‐ZEIGAKU = W‐ZEIGAKU 

  + (KYU‐KYUYO ‐ TBL‐KYUYO(T‐MAX)) * 0.3 

エ COMPUTE W‐ZEIGAKU = W‐ZEIGAKU + TBL‐KYUYO(T‐MAX) * 1.3

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

解答群

ア COMPUTE W‐ZEIGAKU = TBL‐ZEIGAKU(IX 7) 

  ‐ (KYU‐FUYO ‐ 7) * 1500 

イ COMPUTE W‐ZEIGAKU = TBL‐ZEIGAKU(IX 7) 

  ‐ (KYU‐FUYO ‐ 8) * 1500 

ウ COMPUTE W‐ZEIGAKU = TBL‐ZEIGAKU(IX 8) 

  ‐ (KYU‐FUYO ‐ 7) * 1500 

エ COMPUTE W‐ZEIGAKU = TBL‐ZEIGAKU(IX 8) 

  ‐ (KYU‐FUYO ‐ 8) * 1500 

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

解答群

ア MOVE 0 TO W‐ZEIGAKU

イ MOVE TBL‐ZEIGAKU(IX 1) TO W‐ZEIGAKU  ウ MOVE TBL‐ZEIGAKU(IX 7) TO W‐ZEIGAKU エ MOVE TBL‐ZEIGAKU(IX 8) TO W‐ZEIGAKU

問9 次の

Java

プログラムの説明及びプログラムを読んで,設問

41~45

に答えよ。なお,

Java

プログラムで使用する

API

の説明は,この冊子の末尾を参照する。

〔プログラムの説明〕

スキー場に関する情報を,名前の辞書順と積雪量の多い順で並べ替えるプログラム である。

名前の辞書順に並べ替える場合は,java.util.Arrays.sort(Object[])を使用す る。

積 雪 量 の 多 い 順 に 並 べ 替 え る 場 合 は ,java.util.Arrays.sort(Object[],  java.util.Comparator)を 使 用 す る 。 こ の メ ソ ッ ド は , 引 数 で 与 え ら れ た Comparatorのインスタンスのメソッドcompareを呼び出し,配列中の要素を比較し て 並 べ 替 え る 。 こ こ で は , イ ン タ フ ェ ー ス Comparator を 実 装 す る ク ラ ス SkiComparatorを定義する。

(1) クラスSkiComparator

コンストラクタの引数で与えられたスキー場と積雪量からマップを作成する。積雪 量を取得するメソッド getSnowryou と,積雪量の降順でスキー場を並べ替えるメ ソッドcompareをオーバライドする。

(2) クラスTestSort

スキー場の名前を文字列配列で,それに対応する積雪量を数値配列で作成する。最 初 に , ス キ ー 場 の 辞 書 順 に 並 べ 替 え , 次 に , ス キ ー 場 と 積 雪 量 か ら ク ラ ス

SkiComparatorのインスタンスを作成して,積雪量の多い順に並べ替える。

このプログラムの実行結果を以下に示す。ただし,%はシステムのコマンドプロンプ トである。

%java TestSort 

SORT SKIAREA_NAME ASC 

[Biwako, Hakuba, Nozawa, Shigakougen, Zaou] 

 

SORT SNOW_RYOU DESC 

[Hakuba, Zaou, Shigakougen, Biwako, Nozawa] 

[150, 120, 100, 100, 30] 

〔プログラム〕

import java.util.*; 

 

public class TestSort { 

  public static void main(String[] args) {   

    String[] skiarea = { 

      "Zaou", "Shigakougen", "Nozawa", "Hakuba", "Biwako" 

    }; 

    int[] snowryou = {120, 100, 30, 150, 100}; 

    String[] skiarea2 =  a ;   

    Arrays.sort(skiarea); 

    System.out.println("SORT SKIAREA_NAME ASC"); 

    System.out.println(Arrays.toString(skiarea) + "¥n"); 

 

    SkiComparator skicomparator = 

      new SkiComparator(skiarea2, snowryou); 

    Arrays.sort(  b  ); 

    System.out.println("SORT SNOW_RYOU DESC"); 

    System.out.println(Arrays.toString(skiarea2)); 

    System.out.println("[" + 

      skicomparator.getSnowryou(skiarea2) + "]"); 

  }  }  

class SkiComparator implements  c   { 

  private Map<String, Integer> map =      new HashMap<String, Integer>(); 

  SkiComparator(String[] skiarea, int[] snowryou) {      for (int i = 0; i < skiarea.length; i++) {        map.put(skiarea[i], snowryou[i]); 

    }    } 

  public String getSnowryou(String[] skiarea2) {      String snowstring = ""; 

    int i = 0; 

    for ( ; i <  d ; i++) { 

      snowstring += map.get(skiarea2[i]); 

      snowstring += ", "; 

    } 

    snowstring += map.get(skiarea2[i]); 

    return snowstring; 

  } 

  public int compare(String skiplace1, String skiplace2) {      return  e ; 

  }  } 

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

解答群

ア ""    イ null

ウ skiarea    エ skiarea.clone()

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

解答群

ア skiarea    イ skiarea, skicomparator

ウ skiarea2    エ skiarea2, skicomparator

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

解答群

ア Comparator<int>  イ Comparator<Integer>

ウ Comparator<String>  エ Comparator<Object>

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

解答群

ア map.size()      イ map.size() ‐ 1 ウ map.size() + 1      エ map.size() ‐ 2

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

解答群

ア map.get(skiplace1) ‐ map.get(skiplace2) イ map.get(skiplace2) ‐ map.get(skiplace1) ウ skiplace1.length() ‐ skiplace2.length() エ skiplace2.length() ‐ skiplace1.length()

問10 次のアセンブラプログラムの説明及びプログラムを読んで, 設問

46~50

に答えよ。

〔プログラムの説明〕

コンマによって区切られた数値(以下,CSV形式のデータという)を集計する副プ ログラムCSVSUMである。

(1) 副プログラムCSVSUM は,GR1にCSV 形式のデータの先頭アドレスが設定されて 主プログラムから呼び出される。

(2) 副プログラムCSVSUM は,GR0にCSV 形式のデータ中の各数値の和を集計して主 プログラムに戻る。

(3) CSV形式のデータの仕様は,次のとおりである。

① 数値は,符号なし整数又は符号付き整数のいずれかである。

② コンマによって区切られた文字列の長さが0の(コンマが連続する)場合,そ の値は0とする。

③ データの末尾には,#0000が格納されている。

④ CSV 形式のデータの例を図に示す。この例では,1,-12,0,+123 の 4 個 の数値が格納されている。

+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 

(GR1) 1  ,   ‐  1 2 , , + 1 2 3  Nl 

注記“

Nl”は,#0000を表す。

CSV

形式のデータの例

(4) CSV形式のデータは,仕様どおりに格納されているものとする。

(5) 和を求める計算において,けたあふれは発生しないものとする。

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

〔プログラム〕

CSVSUM  START 

  RPUSH 

  LAD  GR0,0  ; 集計値を初期化 

NEXT  LAD  GR2,0  ; CSV値を初期化 

  LAD  GR3,0  ; 符号フラグを初期化 

LOOP  LD  GR4,0,GR1 

  JZE  LAST 

  CPL  GR4,=','  ; 区切り文字か 

  JZE  SUM 

  CPL  GR4,='+'  ; 正符号か 

  JNZ  PASS1 

  a  

  JUMP  LOOP 

PASS1  CPL  GR4,='‐'  ; 負符号か 

  JNZ  PASS2 

  LAD  GR1,1,GR1 

  b  

  JUMP  LOOP 

PASS2  c  

  SLA  GR2,3 

  SLA  GR5,1 

  d  

  AND  GR4,=#000F  ; 数値抽出 

  ADDA  GR2,GR4 

  LAD  GR1,1,GR1 

  JUMP  LOOP 

SUM  CALL  ADVAL 

  LAD  GR1,1,GR1 

  JUMP  NEXT 

LAST  CALL  ADVAL 

FIN  RPOP 

  RET 

ADVAL  e  

  JZE  RTN 

  XOR  GR2,GR3 

  LAD  GR2,1,GR2 

RTN  ADDA  GR0,GR2 

  RET 

  END 

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

解答群

ア LAD  GR1,1,GR1  イ LAD  GR2,1,GR2

ウ LAD  GR3,0    エ LAD  GR3,1,GR3

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

解答群

ア LAD  GR2,0    イ LAD  GR3,0

ウ LAD  GR3,#FFFF  エ LAD  GR4,#FFFF

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

解答群

ア LD  GR2,GR3   イ LD  GR2,GR5

ウ LD  GR5,GR2   エ SUBA  GR5,GR2

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

解答群

ア ADDA  GR2,GR5   イ ADDA  GR5,GR2

ウ SUBA  GR2,GR5   エ SUBA  GR5,GR2

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

解答群

ア CPA  GR2,=0    イ CPA  GR3,=0

ウ CPA  GR3,=#FFFF  エ CPA  GR4,=#0000

問11 次の表計算,ワークシートの説明及びマクロの説明を読んで,設問51~55 に答えよ。

〔表計算の説明〕

家電製品を販売しているU社では,前年度の売上実績を基にして,主力商品の売上分 析を行うことになった。

(1) 売上分析の方法は,次のとおりである。

① 売上金額を,商品別月別に集計(以下,商品別月別売上金額という)する。

② 商品別月別売上金額を,年単位で集計する(以下,商品別前年度売上金額という)。

③ 売上金額による重点管理を行うため,商品別前年度売上金額の降順に整列する。

④ 全商品の売上合計に対する比率を商品ごとに求める(以下,売上構成比率という)。

⑤ 売上金額の上位から順に売上金額を累計し,全商品の売上合計に対する,1 位か ら当該商品までの合計の比率(以下,累計構成比率という)を求める。

⑥ 累計構成比率を基に,ABC分析を行い,商品をA群,B群及びC群に分類する。

(2) 各ワークシートの内容は,次のとおりである。

① ワークシート“前年度売上集計”の内容は,次のとおりである。

・対象とする主力商品について,商品別,月別に売上金額を入力する。

・商品ごとに,期首から期末までの12か月分の売上金額を合計する。

・売上金額の合計による降順順位を求める。

・ワークシート“ABC分析”に順位順に整列して表示するため,次に示す算出式に より“一意値”を求める。さらに,一意値の昇順順位を求めて,“位置”に表示す ることにより,当該行のワークシート“ABC分析”での表示位置を定める。なお,

商品番号は3けたの数値であり,商品番号同士が重複することはない。

一意値 = 順位 × 1000 + 商品番号

② ワークシート“ABC分析”の内容は,次のとおりである。

・ワークシート“前年度売上集計”を基に,ワークシート“ABC分析”の明細行の

“番号(№)”と一致する“位置”を探索し,該当する商品番号及び売上金額合 計を表示する。

・売上金額の合計を求め,売上金額の合計に対する構成比率を商品ごとに求める。

・先頭行からの構成比率の累計(以下,累計構成比率という)を求めて表示する。

・商品の累計構成比率と群境界0.7との差の絶対値が最小になるまでをA群,累計 構成比率と群境界0.9との差の絶対値が最小になるまでをB群,残りをC群の商 品とする。例えば,ワークシート“ABC 分析”で,商品 X,商品 Y の順に連続 して並んでいるとし,その累計構成比率がそれぞれ0.69(群境界0.7との差の絶 対値0.01),0.72(群境界0.7との差の絶対値0.02)の場合,商品Xは A群,

商品YはB群となる。なお,これらの値が同じ場合は,ともにA群とする。

〔ワークシート:前年度売上集計〕

ワークシート“前年度売上集計”を作成した。作成したワークシートの例を,図1 に 示す。

A B C M N O P Q 1 前年度売上集計

2 商品番号 45月 … 3月 合計 順位 一意値 位置 3 101 105,756 127,521 161,750 1,679,603 25 25,101 25 4 102 124,148 168,612 183,638 1,674,987 27 27,102 27

30 128 135,623 158,553 185,641 1,732,641 22 22,128 22 31 129 105,626 189,729 122,621 1,641,018 30 30,129 30 32 130 150,615 161,965 193,122 1,826,780 14 14,130 14

図1 ワークシート“前年度売上集計”

(1) 図1中の各項目の説明は,次のとおりである。

① 売上金額の合計を表示するため,セルN3に次の計算式を入力し,セルN4~N32 に複写する。

合計(B3~M3)

② 売上金額の合計による降順順位を表示するため,セルO3に次の計算式を入力し,

セルO4~O32に複写する。

順位(N3,N$3~N$32, a )

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

O3*1000+A3

④ 位置を表示するため,セル Q3に次の計算式を入力し,セル Q4~Q32に複写す る。

順位(P3,$P$3~$P$32, b )

〔ワークシート:ABC分析〕

(1) ワークシート“前年度売上集計”を基に,ワークシート“ABC分析”を作成した。

作成したワークシートの例を,図2に示す。

A B C D E F G H

1 ABC分析 群境界 0.7 0.9

2 № 商品 番号

売上 金額

構成 比率

累計構 成比率

絶対値

(A群)

絶対値

(B群) 群 3 1 123 2,054,879 0.0381 0.0381 0.6619 0.8619 A群 4 2 122 1,984,546 0.0368 0.0749 0.6251 0.8251 A群

31 29 112 1,647,145 0.0306 0.9696 0.2696 0.0696 C群 32 30 129 1,641,018 0.0304 1.0000 0.3000 0.1000 C群

33 合計 53,896,316

図2 ワークシート“ABC分析”

関連したドキュメント