プログラミング部門 1 級 無断転載禁止 2013 年? 月? 日実施 この問題は, 平成 24 年 5 月時点の参考資料です 平成 25 年度 ( 新検定基準による出題例 ) 情報処理検定試験 <プログラミング部門 > 第 1 級試験問題 注意事項 1. 監督者の指示があるまで, 試験問題に手を触れないでください 2. 試験問題は,10 ページあります 3. 解答はすべて解答用紙に記入します 4. 1 2 3 4 5 6 は共通問題です 5. 7 の問題は,Java マクロ言語 COBOLのいずれか1つを選択し, 解答用紙の選択言語を で囲んでください 6. 電卓などの計算用具は使用できません 7. 筆記用具などの物品の貸借はできません 8. 問題用紙の回収については監督者の指示にしたがってください 9. 制限時間は,60 分です 主催公益財団法人全国商業高等学校協会
[1 級共通問題 ] 1 次の説明文に最も適した答えを解答群から選び, 記号で答えなさい 1. 複数のハードディスク装置を 1 つの装置として管理し, アクセスの高速化や信頼性を高めるための技術 2. 経路選択機能やパケットのフィルタリング機能を持ち, ネットワーク上のデータを中継する装置 3. システム全体をいくつかの工程に分割し, 各工程の成果物をもとに後工程を順次進め, 前の工程に戻らないことを前提として開発する手法 4. 異機種間のデータ通信を可能とするために, 国際標準化機構が制定した通信機器の持つべき機能を階層別に定義したネットワーク設計指針 5. 電子商取引などの暗号化通信において使用される公開鍵の正当性を認める第 3 者機関 解答群 ア. 認証局 イ. プロトタイプモデル ウ. シンクライアント エ.HTTPS オ.UPS カ. ルータ キ. ウォータフォールモデル ク. プログラム設計 ケ.RAID コ. ディジタル署名 サ.OSI 参照モデル シ. ハブ 2 次の A 群の語句に最も関係の深い説明文を B 群から選び, 記号で答えなさい <A 群 > 1. サブネットマスク 2. ブラックボックステスト 3.VRAM 4. トップダウンテスト 5.MIME <B 群 > ア.NIC などのネットワーク機器を一意に識別するためのハードウェア固有の番号 イ. ディスプレイ装置に表示するための画像情報を一時的に保持する専用の記憶装置 ウ. インターネットやイントラネットなどの情報通信ネットワークを使って, 音声データを送受信する技術 エ. 複数のモジュールを結合してテストをするさいに, スタブと呼ばれるダミーの下位モジュールを用意して, 上位モジュールから順番に行うテスト手法 オ. プログラムの内部構造に着目せず, 入力データに対する出力結果が正しいかどうかを検証すること カ. 複数のモジュールを結合してテストをするさいに, ドライバと呼ばれるダミーの上位モジュールを用意して, 下位モジュールから順番に行うテスト手法 キ. 各国の言語や, 画像, 音声, 動画など形式の異なる様々なデータを電子メールで扱うための規格 ク.IP アドレスから, 特定のグループを示すネットワークアドレスを取り出すための値 ケ. プログラムの内部構造に着目し, 設計したとおりに動作するかどうかを検証すること コ. ハードディスク装置の代替として利用されており, 記憶媒体としてフラッシュメモリを使用している補助記憶装置 3 次の説明文に最も適した答えをア, イ, ウの中から選び, 記号で答えなさい 1.10 進数の 7.25 を 2 進数で表したもの ア.111.01 イ.111.1 ウ.111.11 2.LAN 内部のクライアントの代理としてインターネット接続を行うサーバ ア.DNS サーバイ. プロキシサーバウ.POP サーバ 3. 入力が 0 と 1 または, 1 と 0 のときだけ 1 を出力する論理回路 ア.AND 回路イ.OR 回路ウ.XOR 回路 4. システムの一部に障害が発生しても, 最低限の機能でシステムの稼働を継続する設計思考 ア. フェールセーフイ. フェールソフトウ. フールプルーフ 5. 平均シーク時間が 15 ミリ秒,6,000 回転 / 分の磁気ディスク装置の平均待ち時間はいくらか ア.10 ミリ秒イ.15 ミリ秒ウ.20 ミリ秒
[1 級共通問題 ] 4 次の各問いに答えなさい 問 1. 流れ図の説明を読んで, 流れ図の (1) にあてはまる答えを解答群から選び, 記号で答えなさい < 流れ図の説明 > 処理内容配列に記憶された数値を並べ替える流れ図である 処理条件 1. 配列 Pt は 2 桁の数値が記憶されており, データ件数は n である 配列 Pt 71 24 (0) (n-1) 2. 配列 Pt の数値を先頭から昇順に並べ替える 3. 条件式が かつ で複合されている場合, 先に記述された条件式が偽となった時点で, 判定を終了するものとする 4. 並べ替えが終わったら, 配列 Pt の内容をディスプレイに表示する < 流れ図 > はじめ 配列 Pt を準備し, データを記憶する データ件数 n s は 1 から 1 ずつ増やして (1) の間 Pt(s) Work t は s - 1 から 1 ずつ減らして t 0 かつ Pt(t) > Work の間 Pt(t) Pt(t + 1) t s - 1 解答群 ア.Work Pt(t + 1) イ.s n 配列 Pt を表示 おわり ウ.Work Pt(t) エ.s n - 1 問 2. 流れ図の説明を読んで, 流れ図の (3)(5) にあてはまる答えを解答群から選び, 記号で答えなさい < 流れ図の説明 > < 流れ図 > 処理内容はじめ配列に記憶された数値に順位を付ける流れ図であ配列 Nin を準備し, データを記憶するる 配列 Jun を準備する処理条件 1. 配列 Nin は整数値が記憶されており, データ件データ件数 n 数はnである ループ1 p は 0 から 1 ずつ増やして配列 p < n の間 Nin 271 523 (0) (n-1) 2. 配列 Jun を利用して, 配列 Nin の数値の降順に順位を付ける 配列 Jun (0) (n-1) 3. 順位付けが終わったら, 配列 Nin と Jun の内容をディスプレイに表示する 解答群 (3) s は 0 から 1 ずつ増やして s < n - 1 の間 ループ 3 (4) t < n の間 Nin(s) < Nin(t) (5) Nin(s) > Nin(t) 解答不要 ア.0 Jun(p) イ.Jun(s) + 1 Jun(s) ウ.t は s + 1 から 1 ずつ増やしてエ.Jun(t) + 1 Jun(t) オ.t は s から 1 ずつ増やしてカ.1 Jun(p) ループ 3 ループ 4 p は 0 から 1 ずつ増やして p < n の間 Nin(p),Jun(p) を表示 ループ 4 おわり
[1 級共通問題 ] 5 流れ図の説明を読んで, 流れ図の (1)(5) にあてはまる答えを解答群から選び, 記号で答えなさい < 流れ図の説明 > 処理内容発生順に記録された営業成績データを読み, キーボードから入力された担当地区の営業成績状況を表示する流れ図である 入力データ社員 ID (Sid) 実行結果 3405 社員 IDエラー 1345 社員 IDエラー 取扱品目コード (Tcodo) 販売金額 (Kin) ( 第 1 図 ) 担当地区を入力してください 北陸 ( 担当地区 ) 北陸 ( 社員 ID) ( 品目 1) ( 品目 20) ( 合計 ) ( 順位 ),,,,,, 担当地区を入力してください 関東 ( 担当地区 ) 関東 < 流れ図 > はじめ 配列 Hsid Htiku を準備しデータを記憶する 配列 Hkin を準備し, 初期化する データがある間 データを読む 探索処理 Ka Jo (1) Hkin(m,21) + Kin Hkin(m,21) g は 0 から 1 ずつ増やして g 99 の間 Sid " 社員 ID エラー " を表示 ( 第 2 図 ) 処理条件 1. 社員は 100 人であり, 配列 Hsid には社員 IDが, 配列 Htiku には担当地区が, 社員 IDの昇順にあらかじめ記憶されている なお, 配列 Hsid と Htiku は添字で対応している 配列 (0) (1) (99) Hsid 1001 1005 4502 (0) (1) (99) Htiku 関東九州 北陸 2. 第 1 図の入力データを読み, 次の処理を行う 社員 IDをもとに配列 Hsid を探索する なお, 見つからない場合は, 入力データのエラーとし, 社員 IDとエラーメッセージを表示する 配列 Hkin に取扱品目別に販売金額を集計する なお, 取扱品目コードは120 であり, 配列 Hkin の列方向の添字と対応しており, 行方向の添字は配列 Hsid と対応している また, 21 列目に社員別の合計を集計する 配列 Hkin (0) (1) (20) (21) (22) (0) (1) (99) ( 不使用 ) ( 品目 1) ( 品目 20) ( 合計 ) ( 順位 ) 配列 Hkin の 22 列目に合計の降順に順位を付ける だたし, 合計が同じ場合は, 同順位とする 3. 入力データが終了したら, キーボードから入力された担当地区の社員だけを, 社員 ID の昇順に営業成績状況をディスプレイに表示する 4. キーボードから end が入力されたら処理を終了する 5. 社員 ID 以外のデータにエラーはないものとする 解答群ア.m - 1 Ka イ.Hkin(m,Tcodo) + Kin Hkin(m,Tcodo) ウ.Hkin(Tcodo,m) + Kin Hkin(Tcodo,m) エ.m + 1 Ka オ.Hkin(h,21) > Hkin(k,21) カ.Tiku = Htiku(m) キ.h + 1 k ク.Tiku = Htiku(g) ケ.Hkin(h,21) < Hkin(k,21) コ.h + 1 j 1 Hkin(g,22) ループ 3 h は 0 から 1 ずつ増やして h 98 の間 ループ 4 k は j から 1 ずつ増やして k 99 の間 (3) Hkin(k,22) + 1 Hkin(k,22) ループ 4 ループ 3 " 担当地区を入力してください " を表示 キーボードから Tiku を入力 ループ 5 Tiku "end" の間 Tiku を表示 ループ 6 g は 0 から 1 ずつ増やして g 99 の間 (4) Hsid(g),Hkin(g,1) Hkin(g,22) を表示 ループ 6 " 担当地区を入力してください " を表示 キーボードから Tiku を入力 ループ 5 おわり 解答不要 Hkin(h,22) + 1 Hkin(h,22) 探索処理 入口 0 Ka 99 Jo (Ka + Jo) 2 m ループ 7 Sid Hsid(m) かつ Ka Jo の間 Sid > Hsid(m) (5) m - 1 Jo (Ka + Jo) 2 m ループ 7 出口 小数点以下切り捨て
[1 級共通問題 ] 6 流れ図の説明を読んで, 流れ図の (1)(5) にあてはまる答えを解答群から選び, 記号で答えなさい < 流れ図の説明 > 処理内容 開発商品評価データを読み, 開発商品評価表を表示する流れ図である 入力データ 商品番号 (SyoBan) 実行結果 評価コード (Hcod) 評価 1 (Hyo(1)) 評価 5 (Hyo(5)) ( 第 1 図 ) ( 開発商品評価表 ) ( 消費者評価 ) ( 社長評価 ) ( 商品番号 ) ( 評価 1)( 評価 5) ( 評価 1)( 評価 5) ( 評価計 ) 4 20 12 5 7 105 2 14 14 1 8 103 35 16 18 5 2 103 31 2 18 5 7 60 6 8 6 6 8 54 ( 第 2 図 ) 処理条件 1. 開発商品は 50 個であり, 商品番号 150 が割り当てられている 2. 評価コードは1: 消費者評価,2: 社長評価である 評価 1 評価 5は110 点であり, 消費者評価のみ, 各評価に配列 Omomi の値を乗じて求める なお, 値はあらかじめ記憶されている 配列 (0) (1) (3) (4) (5) 0momi 不使用 2 1 3 2 2 3. 第 1 図の入力データを読み, 以下の手順で配列 Kei に集計する なお, 配列 Kei の行方向は商品番号と添字で対応している 商品番号を0 列目に転記する 評価コードが1の場合, 各評価を配列 Omomi で乗じて求め,1 列目から5 列目に記憶する 評価コードが2の場合, 各評価をそのまま6 列目から 10 列目に記憶する 11 列目には評価計を集計する 配列 Kei (0) (1) (5) (6) (10) (11) (0) (1) (49) (50) ( 商品番号 ) ( 評価 1) ( 評価 5) ( 評価 1) ( 評価 5) ( 評価計 ) 4. 入力データが終了したら, 配列 Kei のデータを評 価計の降順に並べ替える ただし, 評価計が同じ場 合は商品番号の昇順に並べ替える 5. データにエラーはないものとする 解答群 ア.Kei(0,11) > Kei(n,11) イ.Hcod + 5 h ウ.g + 5 h エ.Hyo(SyoBan) Omomi(g) オ.Kei(s,t) カ.Kei(0,s) Kei(n + 1,s) キ.Hyo(g) Omomi(g) ク.Kei(0,11) < Kei(n,11) ケ.Kei(t,s) コ.Kei(m,s) Kei(0,s) < 流れ図 > はじめ 配列 Omomi を準備し, データを記憶する 配列 Kei を準備し, 初期化する データがある間 データを読む SyoBan Kei(SyoBan,0) g は 1 から 1 ずつ増やして g 5 の間 Hcod = 1 (1) Kei(SyoBan,g) Kei(SyoBan,11) + Kei(SyoBan,g) Kei(SyoBan,11) ループ 3 m は 2 から 1 ずつ増やして m 50 の間 ループ 4 s は 0 から 1 ずつ増やして s 11 の間 Kei(m,s) Kei(0,s) ループ 4 ループ 5 n は m - 1 から 1 ずつ減らして (3) の間 ループ 6 s は 0 から 1 ずつ増やして s 11 の間 Kei(n,s) Kei(n + 1,s) ループ 6 ループ 5 ループ 7 s は 0 から 1 ずつ増やして s 11 の間 (4) ループ 7 ループ 3 ループ 8 t は 1 から 1 ずつ増やして t 50 の間 ループ 9 s は 0 から 1 ずつ増やして s 11 の間 (5) を表示 ループ 9 ループ 8 おわり Hyo(g) Kei(SyoBan,h) Kei(SyoBan,11) + Kei(SyoBan,h) Kei(SyoBan,11)
[1 級 Java 選択者のための問題 ] 7 プログラムの説明を読んで, プログラムの (1)(5) を答えなさい <プログラムの説明 > 処理内容データベースに記録された学籍番号と進路先コードから, 学年進路先別割合を表示するプログラムである 入力データ ( 表名 :sinro) ( 学籍番号 ) gakusekibango 実行結果 ( 進路先コード ) code ( 第 1 図 ) 処理条件 1. 第 1 図の入力データは, 学籍番号と進路先コードが記録されている なお, 進路先コードは次のとおりである 0: 四大 1: 短大 2: 専門 3: 企業 4: 公務員 5: その他 sinro 表の内容 gakusekibango code 3101 1 3102 4 3540 0 2.sinro 表から学籍番号の昇順に抽出する 1 件分のデータごとに,getInt メソッドで取得したデータを次のような syukei オブジェクトと sinrobetu オブジェクトに人数を集計する syukei オブジェクト ( 配列 ) sinrobetu オブジェクト ( 配列 ) (0) (1) (5) (0) (3 年 1 組 ) (1) (3 年 2 組 ) (4) (3 年 5 組 ) (5) ( 学年合計 ) (0) ( 進学 ) (1) ( 就職 ) ( その他 ) ( 四大 ) ( 短大 ) ( 専門 ) ( その他 ) getint メソッドは,ResultSet オブジェクトの現在行にある指定された列の値を int として取得する 3. 第 1 図の入力データが終了したら,syukei オブジェクトの内容を第 2 図の実行結果のようにディスプレイに表示する 4.syukei オブジェクトの学年合計の降順に並べ替えを行う なお, 同じ人数の場合は, 進路先コードの昇順に並べ替えられる 5. 最後に, 生徒人数に対する進路先別の割合を計算し,syukei オブジェクトと sinrobetu オブジェクトの内容を第 2 図の実行結果のようにディスプレイに表示する <Java プログラム > // クラス Sinro public class Sinro { public static void main(string[] args) { Syori syori = new Syori(); syori.sinrobetusyukei(); Hyoji hyoji = new Hyoji(syori); hyoji.kurasuhyoji(); syori. (1) ; hyoji.gakunenhyoji(); // クラス Syori import java.sql.*; public class Syori { private String[] sinrosaki = {" 四大 "," 短大 ", " 専門 "," 企業 "," 公務員 "," その他 "; private int[][] syukei = new int[6][6]; private int[] sinrobetu = new int[3]; private int seitonin; private ResultSet rs; private Statement stmt; private Connection con; public Syori(){ try { Class.forName(" ドライバ名 "); con = DriverManager.getConnection(" データベースの場所 ", " ユーザ名 ", " パスワード "); stmt = con.createstatement(); String sqlstr = "SELECT * FROM sinro ORDER BY gakusekibango ASC"; rs = stmt.executequery(sqlstr); catch (ClassNotFoundException e) { System.out.println(" クラスが見つかりません "); catch (SQLException e) { ( 第 2 図 )
[1 級 Java 選択者のための問題 ] System.out.println(" エラーが発生しました "); public String[] getsinrosaki(){ return sinrosaki; public int[][] getsyukei(){ return syukei; public int[] getsinrobetu(){ return sinrobetu; public int getseitonin(){ return seitonin; public void sinrobetusyukei() { try{ while (rs.next()) { int soe2; int gakusekino = rs.getint("gakusekibango"); int sinrono = rs.getint("code"); int soe1 = gakusekino / 100-31; ; syukei[5][sinrono]++; if (sinrono <= 2) { soe2 = 0; else if (sinrono <= 4) { soe2 = 1; else { soe2 = 2; sinrobetu[soe2]++; seitonin++; rs.close(); stmt.close(); con.close(); catch (SQLException e) { System.out.println(" エラーが発生しました "); public void sinrobetusort() { for (int m = syukei[5].length - 1; m > 0; m--) { for (int n = 0; n < m; n++) { if (syukei[5][n] < syukei[5][n + 1]) { int hozonkei = syukei[5][n]; syukei[5][n] = syukei[5][n + 1]; syukei[5][n + 1] = hozonkei; String hozonsaki = sinrosaki[n]; sinrosaki[n] = sinrosaki[n + 1]; (3) = hozonsaki; // クラス Hyoji public class Hyoji { private Syori syori; private String[] sinrosaki; private int[][] syukei; private int[] sinrobetu; private int seitonin; public Hyoji(Syori syori){ this.syori = syori; sinrosaki = syori.getsinrosaki(); syukei = (4) ; sinrobetu = syori.getsinrobetu(); seitonin = syori.getseitonin(); public void KurasuHyoji() { for (int m = 0; m < 5; m++) { int kumi = m + 1; System.out.print("3 年 " + kumi + " 組 "); for (int n = 0; (5) ; n++) { String ninzu = String.format("%2d",syukei[m][n]); System.out.print("\t" + sinrosaki[n] + ":" + ninzu + " 名 "); System.out.println(); public void GakunenHyoji() { syori.sinrobetusort(); System.out.println(" 学年進路先別割合 "); for (int m = 0; m < syukei[5].length; m++) { double wari = (double)syukei[5][m] * 100 / seitonin; String per = String.format("%.1f", wari); System.out.println(sinrosaki[m] + ":" + " 約 " + per + "%"); System.out.print(" 進学 :" + sinrobetu[0] + " 名 " + "\t"); System.out.print(" 就職 :" + sinrobetu[1] + " 名 " + "\t"); System.out.print(" その他 :" + sinrobetu[2] + " 名 " + "\t");
[1 級マクロ言語選択者のための問題 ] 7 次のプログラムの説明を読んで, プログラム中の空欄 (1)(5) を答えなさい < プログラムの説明 > 処理内容ユーザーフォームから備品貸出返却情報を入力し, 予約情報の更新および貸出可能リストを表示するプログラムである 入出力データ備品データ ( ファイル名 :bihin.csv) 備品管理番号備品名貸出フラグ ( 第 1 図 ) 貸出簿データ ( ファイル名 :kasidasi.csv) 備品管理番号部署コード貸出年月日返却予定日返却フラグ ( 第 2 図 ) 処理条件 1. 第 1 図の備品データは, 次のように備品管理番号の昇順に記録されている なお, 備品数は 300 件以内であり, 貸出フラグは 1 が貸出中を示している bihin.csv の内容配列 101, プロジェクタ ZX01,0 102, プロジェクタ ZX02,0 845, ホワイトボード,WBK4,1 ユーザーフォーム 実行結果 BBkno BNamae BFlg (0) (0) (0) (299) (299) (299) ( 備品名 ) 2. 第 2 図の貸出簿データは, 次のように貸出番号の昇順に記録されている なお, 返却フラグは 1 が貸出中の備品である Kasidasi.csv の内容配列 101,115,120425,120512,1 Kasi (0) (1) (3) (4) (0) (9999) 本日の日付 120106 (TextBox1) 備品管理番号 244 (TextBox2) 部署コード 114 (TextBox3) 返却予定日 120204 (TextBox4) ( 備品管理番号 ) ( 部署コード ) ( 貸出年月日 ) ( 返却予定日 ) ( 返却フラグ ) 3.TextBox1 および TextBox4 の日付の表示形式は次のとおりである 例 2012 年 1 月 1 日 120101 4. 備品データのうち, 貸出可能機器 ( 貸出フラグが 0 である備品 ) の備品管理番号と備品名を TextBox5 に表示する 5. 貸出の場合は,TextBox2TextBox4 に使用者の情報を入力し 貸出ボタンをクリックする 6. 返却の場合は, 借用している備品管理番号を TextBox2 に入力し 返却ボタンをクリックすると使用者情報を TextBox3 および TextBox4 に表示し 確認したのち 処理を行う 7. 貸出処理および返却処理を 1 件行うごとに 貸出可能リスト (TextBox5) を更新する 8. 終了ボタンをクリックすると第 1 図の備品データと第 2 図の貸出簿データを最新の状況に更新し, 処理を終わる 9. 備品管理番号以外のデータにエラーはなく, 操作は正常に行われるものとする <マクロ言語プログラム > Option Explicit Dim Kasi(9999, 4) As Long Dim BBkno(299) As Integer, BNamae(299) As String, BFlg(299) As Integer Dim Kekka As Integer, f As Integer, n As Integer, p As Integer, h As Integer, s As Integer Private Sub UserForm_Initialize() Call Byomi Call Kyomi ' システム日付を TextBox1 に表示する TextBox1 = Format(Right(Year(Date), 2), "00") & Format(Month(Date), "00") & Format(Day(Date), "00") Private Sub Byomi() Open "bihin.csv" For Input As #1 n = 0 Do While (EOF(1) = False) Input #1, BBkno(n), BNamae(n), BFlg(n) If BFlg(n) = 0 Then TextBox5.Text = TextBox5.Text & BBkno(n) & " " & BNamae(n) & vbcr n = n + 1 Loop Close #1 Private Sub Kyomi() Open "kasidasi.csv" For Input As #2 p = 0 Do While (EOF = False) Input #2, Kasi(p, 0), Kasi(p, 1), Kasi(p, 2), Kasi(p, 3), Kasi(p, 4) p = p + 1 Loop Close #2 Private Sub clr() TextBox2.Text = "": TextBox3.Text = "": TextBox4.Text = "" 貸出 返却貸出 終了 貸出可能リスト 備品管理番号 備品名 101 プロジェクタZX01 102 プロジェクタZX02 105 プロジェクタZX05 201 ノートPC BZ323 202 ノートPC BZ324 205 ノートPC BZ327 (TextBox5) ( 第 3 図 )
[1 級マクロ言語選択者のための問題 ] Private Sub 貸出 _Click() Dim k As Integer Call tansaku(val(textbox2.text)) If (1) And BFlg(Kekka) = 0 Then Kasi(p, 0) = Val(TextBox2.Text): Kasi(p, 1) = Val(TextBox3.Text): Kasi(p, 2) = Val(TextBox1.Text) Kasi(p, 3) = Val(TextBox4.Text): Kasi(p, 4) = 1: BFlg(Kekka) = 1 TextBox5.Text = "" MsgBox " 貸出処理が完了しました " p = p + 1 Else If Kekka >= 0 And BFlg(Kekka) = 1 Then MsgBox " 入力された備品は貸出中です " Else MsgBox " 備品管理番号が間違っています 再入力してください " For k = 0 To n - 1 If BBkno(k) <> 0 Then If BFlg(k) = 0 Then TextBox5.Text = TextBox5.Text & BBkno(k) & " " & & vbcr Else Exit For Next k Call clr Private Sub 返却 _Click() Dim Kotae As Integer For f = 0 To n - 1 If Val(TextBox2.Text) = (3) Then Exit For Next f TextBox3.Text = Str(Kasi(f, 1)) TextBox4.Text = Str(Kasi(f, 3)) Kotae = MsgBox(" 部署コードと返却予定日に間違いはありませんか?", vbyesno) ' はい いいえ を選択する MsgBox If Kotae = 6 Then ' はい がクリックされた時 Kasi(f, 4) = 0 Call tansaku(val(textbox2.text)) BFlg(Kekka) = 0 TextBox5.Text = "" For s = 0 To n - 1 If BFlg(s) = 0 Then TextBox5.Text = TextBox5.Text & BBkno(s) & " Next s MsgBox " 返却処理が完了しました " Call clr Else ' いいえ がクリックされた時 MsgBox " 返却処理を中止しました " Call clr Private Sub tansaku(h As Integer) Dim Ue As Integer, Sita As Integer, m As Integer, Chk As Integer Ue = n: Sita = -1: Chk = 0 Do While (Chk = 0) m = (4) Select Case BBkno(m) Case Is = h: Chk = 1 Case Is < h: Sita = m Case Else: Ue = m End Select If Sita + 1 = Ue Then Chk = 2 Loop Select Case Chk Case 1: (5) Case 2: Kekka = -1 End Select Private Sub 終了 _Click() Open "bihin.csv" For Output As #1 For f = 0 To n - 1 Write #1, BBkno(f), BNamae(f), BFlg(f) Next f Close #1 Open "kasidasi.csv" For Output As #2 For f = 0 To p - 1 Write #2, Kasi(f, 0), Kasi(f, 1), Kasi(f, 2), Kasi(f, 3), Kasi(f, 4) Next f Close #2 End " & BNamae(s) & vbcr
[1 級 COBOL 選択者のための問題 ] 7 プログラムの説明を読んで, プログラムの (1)(5) を答えなさい < プログラムの説明 > 処理内容ある高校の生徒ファイルと図書館貸出ファイルを読み, 図書貸出数一覧表を印字するプログラムプログラムである 入力データ生徒ファイル ( ファイル名 :SEITO-FL, レコード名 :SEITO-REC) 生徒番号 (S-BAN) 名前 (S-NAMAE) ( 第 1 図 ) 図書館貸出ファイル ( ファイル名 :KASIDASI-FL, レコード名 :KASIDASI-REC) 貸出日 (K-TUKIHI) 生徒番号 (K-BAN) 分類番号 (K-BUN) 図書番号 (K-) ( 第 2 図 ) 実行結果 ( ファイル名 :OUT-FL, レコード名 :OUT-REC) ( 図書貸出数一覧表 ) ( 生徒番号 ) ( 名前 ) ( 総記 ) ( 文学 ) ( 合計 ) ( 順位 ) 2204 14 21 277 1 3622 8 33 275 2 1329 0 1 12 792 処理条件 1. 第 1 図の生徒ファイルは, 生徒番号の昇順に記録されている なお, 生徒数は 1,000 人以内である 2. 生徒ファイルを読み, テーブル NAMAE-TBL に名前を, テーブル TOSYO-TBL の 1 列目に生徒番号を記憶する テーブル NAMAE-TBL T-NAMAE (1) (1000) テーブル TOSYO-TBL T-TOSYO (1) (11) (12) (13) (1) 1101 1102 ( 第 3 図 ) (1000) ( 生徒番号 ) (000099) (900999) ( 合計 ) ( 順位 ) ( 総記 ) ( 文学 ) 3. 第 2 図の図書館貸出ファイルを読み, テーブル TOSYO-TBL に図書貸出数を集計する なお,12 列目には生徒ごとの貸出数の合計を集計する 生徒番号をもとに, テーブル TOSYO-TBL の1 列目を探索し, 行方向の添字を求める 分類番号の百の位は大分類 (09) であり, 列方向の添字 (211) を計算により求める 4. 図書館貸出ファイルを読み終えたあと, テーブル TOYO-TBL の合計の降順に順位をつける 5. 第 3 図のように順位の昇順に印字する 6. データにエラーはないものとする
[1 級 COBOL 選択者のための問題 ] <COBOL プログラム > WORKING-STORAGE SECTION. 01 PRINT-L. 02 PIC X(02) VALUE SPACE. 02 P-BAN PIC 9(04). 02 PIC X(06) VALUE SPACE. 02 P-NAMAE PIC X(14). 02 P-SYUKEI OCCURS 12. 03 PIC X(03) VALUE SPACE. 03 P-SU PIC Z,ZZ9. PROCEDURE DIVISION. S1. OPEN INPUT SEITO-FL KASIDASI-FL OUTPUT OUT-FL INITIALIZE E-FLG CNT TOSYO-TBL PERFORM UNTIL E-FLG = 1 READ SEITO-FL AT END MOVE 1 TO E-FLG T AT END COMPUTE CNT = CNT + 1 MOVE S-NAMAE TO T-NAMAE(CNT) MOVE S-BAN TO T-TOSYO(CNT 1) (1) END-READ INITIALIZE E-FLG PERFORM UNTIL E-FLG = 1 READ KASIDASI-FL AT END MOVE 1 TO E-FLG T AT END MOVE 0 TO KAG COMPUTE M = (KAG + JOG) / 2 PERFORM UNTIL T-TOSYO(M 1) = K-BAN IF T-TOSYO(M 1) < K-BAN THEN MOVE M TO KAG ELSE MOVE M TO JOG END-IF COMPUTE M = (KAG + JOG) / 2 (3) COMPUTE T-TOSYO(M SOE) = T-TOSYO(M SOE) + 1 COMPUTE T-TOSYO(M 12) = T-TOSYO(M 12) + 1 END-READ PERFORM VARYING N FROM 1 BY 1 UNTIL N = CNT COMPUTE S = N + 1 PERFORM VARYING T FROM S BY 1 UNTIL T > CNT IF (4) THEN COMPUTE T-TOSYO(N 13) = T-TOSYO(N 13) + 1 ELSE IF T-TOSYO(N 12) > T-TOSYO(T 12) THEN COMPUTE T-TOSYO(T 13) = T-TOSYO(T 13) + 1 END-IF END-IF PERFORM VARYING JUN FROM 1 BY 1 UNTIL JUN > CNT PERFORM VARYING N FROM 1 BY 1 UNTIL N > CNT IF T-TOSYO(N 13) = JUN THEN MOVE T-TOSYO(N 1) TO P-BAN MOVE T-NAMAE(N) TO P-NAMAE PERFORM VARYING (5) MOVE T-TOSYO(N P) TO P-SU(P - 1) WRITE OUT-REC FROM PRINT-L AFTER 1 END-IF CLOSE SEITO-FL KASIDASI-FL OUT-FL STOP RUN.
( 平成 25 年? 月? 日実施 ) 主催公益財団法人全国商業高等学校協会 平成 25 年度 ( 出題例 ) 情報処理検定試験プログラミング部門第 1 級 解答用紙 1 1 2 3 4 5 2 1 2 3 4 5 3 1 2 3 4 5 小計 4 (1) (3) (4) (5) 5 (1) (3) (4) (5) 6 (1) (3) (4) (5) 小計 Java マクロ言語 COBOL 7 (1) (3) (4) (5) 小計 試験場校名受験番号選択言語 合計 Java マクロ言語 COBOL 選択言語を で囲むこと
( 平成 25 年? 月? 日実施 ) 主催公益財団法人全国商業高等学校協会 平成 25 年度 ( 出題例 ) 情報処理検定試験プログラミング部門第 1 級審査基準 1 2 1 2 3 4 5 ケ カ キ サ ア 1 2 3 4 5 ク オ イ エ キ 各 2 点計 10 点 各 2 点計 10 点 3 1 2 3 4 5 小計各 2 点アイウイウ計 10 点 30 4 (1) (3) (4) エアカウ (5) イ 各 3 点計 15 点 5 (1) イ コ (3) (4) (5) オ ク エ 各 3 点計 15 点 6 (1) (3) (4) (5) キウアカケ 各 3 点計 15 点 小 45 計 Java マクロ言語 COBOL [Java] 7 (1) s i n r o b e t u S o r t ( ) s y u k e i [ s o e 1 ] [ s i n r o N o ] + + (3) s i n r o s a k i [ n + 1 ] (4) s y o r i. g e t S y u k e i ( ) (5) n < s y u k e i [ m ]. l e n g t h [ マクロ言語 ] 7 (1) K e k k a > = 0 B N a m a e ( k ) (3) K a s i ( f, 0 ) (4) I n t ( ( U e + S i t a ) / 2 ) (5) K e k k a = m [COBOL] 7 (1) M O V E 1 T O T - T O S Y O ( C N T 1 3 ) C O M P U T E J O G = C N T + 1 (3) C O M P U T E S O E = K - B U N / 1 0 0 + 2 (4) T - T O S Y O ( N 1 2 ) < T - T O S Y O ( T 1 2 ) (5) P F R O M 2 B Y 1 U N T I L P > 1 3 各 5 点計 25 点 試験場校名 受験番号 小 25 計 選択言語合計 Java マクロ言語 COBOL 100 選択言語を で囲むこと