共通テストで情報Ⅰが新たに
2025年の共通テストから新たに「情報Ⅰ」が追加されて、興味がてら会社のみんなでやってみました。
勝手に想像していたのは、暗記問題やプログラミングだったのですが、意外や暗記問題などは少なく、文章や資料の読解に重きをおいたり、難しくない数学よりな内容に思えました。
初めての試みですし、業務フロー的な問題は情報っぽくて私は好きでした。なかなか楽しかったです
その中で、問題3では少しプログラミング的な要素があり(ネストから見るにPythonベースでしょうか?)とても簡単なプログラムですが、ネタでRPGを使って記述しました。
RPGで書くと
共テでは Akibi = [5,3,カ]
と記載されている初期化処理は、昔のRPGだと以下の様な記述となりましたが
※ カは問題の答えです
昔のRPG
Akibi(1) = 5 ;
Akibi(2) = 3 ;
Akibi(3) = カ ;
この様な記述は現在では %LIST
組み込み関数を使う事ができますのでそちらを使います。
問3-2(キ)Q25KT01
~~~中略~~~
// D*-********************************************************************
// D*-* 変数等宣言 **
// D*-********************************************************************
DCL-C buinsu CONST(3) ; // 部員の合計人数
DCL-S Akibi PACKED(003 : 00 ) DIM(buinsu ) ; // 部員の空き日(配列
DCL-S tantou PACKED(003 : 00 ) ; // 担当の部員コード
DCL-S buin PACKED(003 : 00 ) ; // 部員コード(ループ用
// C*-********************************************************************
// C*-* メインルーチン **
// C*-********************************************************************
//空き日の初期化
Akibi = %LIST(5 :3 :4) ;
tantou = 1 ;
//部員変数を2~部員の合計人数まで1ずつ増やしながら繰り返す
for buin = 2 to buinsu ;
//もし現在部員の空き日が担当部員より前なら担当部員を現在部員とする
if Akibi(buin) < Akibi(tantou) ;
tantou = buin ;
endif ;
endfor ;
//次の担当部員を表示する
DSPLY ('次の工芸品担当は部員' + %CHAR(tantou) + 'です。') ;
*INLR = *ON ;
RETURN ;
問3-2(ケ~シ)Q25KT11
~~~中略~~~
// D*-********************************************************************
// D*-* 変数等宣言 **
// D*-********************************************************************
DCL-C buinsu CONST(3) ; // 部員の合計人数
DCL-S Akibi PACKED(003 : 00 ) DIM(buinsu ) ; // 部員の空き日(配列
DCL-S tantou PACKED(003 : 00 ) ; // 担当の部員コード
DCL-S buin PACKED(003 : 00 ) ; // 部員コード(ループ用
//
DCL-C kougeihinsu CONST(9) ; // 工芸品の数
DCL-S Nissu PACKED(003 : 00 ) DIM(kougeihinsu) ; // 工芸品の制作日数(配列
DCL-S kougeihin PACKED(003 : 00 ) ; // 工芸品コード(ループ用
// C*-********************************************************************
// C*-* メインルーチン **
// C*-********************************************************************
//制作日数の初期化
Nissu = %LIST(4 :1 :3 :1 :3 :4 :2 :4 :3 ) ;
//空き日の初期化
Akibi = %LIST(1 :1 :1) ;
//工芸品を1~工芸品数まで1ずつ増やしながら繰り返す
for kougeihin = 1 to kougeihinsu ;
tantou = 1 ;
//部員変数を2~部員の合計人数まで1ずつ増やしながら繰り返す
for buin = 2 to buinsu ;
//もし現在部員の空き日が担当部員より前なら担当部員を現在部員とする
if Akibi(buin) < Akibi(tantou) ;
tantou = buin ;
endif ;
endfor ;
//工芸品の担当部員を表示する
DSPLY ('工芸品' + %CHAR(kougeihin)
+ '…部員' + %CHAR(tantou ) + ':'
+ %CHAR(Akibi(tantou)) + '日目~'
+ %CHAR(Akibi(tantou) + Nissu(kougeihin) -1 ) + '日目'
) ;
//担当の空き日を設定する
Akibi(tantou) = Akibi(tantou) + Nissu(kougeihin) ;
endfor ;
*INLR = *ON ;
RETURN ;
結果
こんな感じで出力されます (^^)
学生さんが情報に興味を持ってくれると良いですね!