見出し画像

基本問題

※ 背景はこちらの記事をご参照ください.

問1

変数zに0以上の整数yを加えるプログラムを作れ.ただし,プログラムは,解答群の選択肢を適当な順に並べることで作ること.なお,選択肢は,何回使ってよいし,使わない選択肢があってもよい.

解答群  
(A) uが0より大きい間繰り返す
(B) ここまでが繰り返しの範囲
(C) uにyを代入する
(D) zに1を加える
(E) uから1を引く

解答記入欄

画像4

問2

0以上の整数を x と y に読み込み,その積を計算して表示するプログラムを作れ.ただし,プログラムは,解答群の選択肢を適当な順に解答記入欄に上から順に並べることで作ること.なお,選択肢は,何回使ってよいし,使わない選択肢があってもよい.

解答群
(A) vが0より大きい間繰り返す
(B) ここまでが繰り返しの範囲
(C) zに0を代入する
(D) zにyを加える
(E) vにxを代入する
(F) vから1を引く
(G) xに整数を入力する
(H) yに整数を入力する
(I) zを出力する

解答記入欄

画像1


問1の正解例とその説明

画像3

解答群の選択肢から,演算として使えるのは「1を加える」か「1を引く」だけになっています.その演算を使って「zにyを加える」手順を考えさせることがこの問いの目的です.つまり,wに1を加えることをy回繰り返すことを思いつく必要があります.手続きをプログラム風に書くと以下のようになります.

(C) uにyを代入する   
(A) uが0より大きい間繰り返す  
(D)    zに1を加える      
(E)    uから1を引く      
(B) ここまでが繰り返しの範囲

問2の正解例とその説明

画像4

今度は「zにyを加える」が選択肢にありますから,それをx回繰り返す手順を考えることになります.手続きをプログラム風に書くと以下のようになります.

(G) xに整数を入力する       
(H) yに整数を入力する      
(C) zに0を代入する         
(E) vにxを代入する       
(A) vが0より大きい間繰り返す   
(D)   zにyを加える       
(F)   vから1を引く        
(B) ここまでが繰り返しの範囲 
(I) zを出力する          

解説

プログラムが基本となる作業指示(四則演算した結果を変数に代入する/外界からデータを読み込む/外界にデータを書き出す)を組み合わせたものであり,その組合せ方に,順に並べること(順接),条件によって場合分けすること(分岐),条件に応じて繰り返すこと(反復)があることを理解していて,具体的な課題に対して実際に作業指示を書き下せることを問う設問です.
 基本となる作業指示に何があってどう書き表すか,順接・分岐・反復をどう書き表すかは,プログラミング言語によって異なっています.共通テストでの設問では,ここに示した問題例のように,特定のプログラミング言語に依存しない形での設問方式が採用されることになるでしょう.
 この例で示した出題では,用意した解答群のそれぞれを適切に並べ直すことで正解例が構成できるようになっています.出題によっては,同じ選択肢を複数回使う必要があったり,使わない選択肢があったりすることも考えられます.また,解答記入欄を正解に必要な欄数よりも多く設けておくことで,作文における「指定字数以内で書け」という設問と類似の効果を上げることも考えられます.この回答方式のことを短冊式と呼んでいます.
 なお,正解となる解答は正解例に示したものに限られるわけではありません.また,プログラム全体としての正解に達していなくても,部分点を与えることが考えられます.

(情報処理学会 情報入試委員会 筧捷彦)


情報処理学会ジュニア会員へのお誘い
小中高校生,高専生本科~専攻科1年,大学学部1~3年生の皆さんは,情報処理学会に無料で入会できます.会員になると有料記事の閲覧,情報処理を学べるさまざまなイベントにお得に参加できる等のメリットがあります.ぜひ,入会をご検討ください.入会はこちらから!


この記事が気に入ったらサポートをしてみませんか?