【疑似言語問題の解き方】ITパスポート令和4年度問78解説

疑似言語問題解説令和4年度問78シラバス6
スポンサーリンク

疑似言語の問題は必ず出題されます。

問題のバリエーションも少ないので、解き方さえ覚えると確実に点を取れます。

今回は、ITパスポート令和4年度公開問題 問78を例にして解説しました。

かなり丁寧に手順を踏んで解説したため、記事が長くなっています。

まずは、問題を解く流れを掴んで、2回目以降、詳細を確認していくような読み方をお勧めします。

また、問題に慣れてしまえば、この解説のとおり手順を踏まなくても、問題を解けるようになります。

まずは、疑似言語の解き方をトレースすることから始めてみましょう。

スポンサーリンク

疑似言語の問題を解くポイント

次の、2つのポイントを押さえると、疑似言語の問題はそれほど難しくありません。

文章で書かれた説明、条件、手順を理解してから、プログラムを考える。

文章で書かれた説明、条件、手順だけで、プログラムの機能(動作)がわかるように、問題は作られています。

アルファベットで書かれて、わかりにくいプログラムを見て、プログラムの機能(動作)を考える必要ありません。

選択肢の式に具体的な値を代入して、矛盾が生じないものを選ぶ。

正解を得るのに、選択肢の内容を理解する必要はありません。

選択肢にある4つの式に値を代入して、結果に矛盾が生じないものを選ぶだけで正解できます。

式に代入すべき値は、文章で書かれた条件や手順から決めることが出来ます。

問題を解く手順(概要)

問題を解く手順をおおまかな図にしました。

Step1~Step3までは、文章で書かれた説明、条件、手順を確認します。

関数や条件についてよく理解してから、Step4以降、プログラムで確認するのがポイントです。

疑似言語問題を解く手順
  • Step 1
    問題文の全体の構成を確認する。
  • Step 2
    関数の働き(目的)を説明(条件)で確認する。
  • Step 3
    関数の動作、[手順]で具体的な値を使って確認する。
  • Step 4
    プログラムの構成を、[手順]と対応させて確認する。
  • Step 5
    選択肢の変数が、[手順]の具体的な値のどれに当たるか調べる。
  • Step 6
    各選択肢に具体的な値を代入して正誤を調べる。

問題を解く手順(詳細)

先に示した大まかな流れに従って、詳細を説明します。

1 問題文の構成を確認する。

正解するには、問題文を正しく読み取ることが大切です。

そのために、最初に、問題文の構成を確認します。

問題文の構成を覚えると、他の問題を解く時にも役立ちます。

説明(条件)

ITパスポート令和4年度春問78説明(条件)

関数の説明が書かれています。

ここでは、”配列を使う関数の問題なんだな”程度の理解で、次に進みましょう。

設問

ITパスポート令和4年度春問78設問

最初は、プログラムの中で、aの場所を確認するだけでいいです。

手順

ITパスポート令和4年度春問78手順

プログラムの流れを、言葉で説明しています。

ここの理解が、問題を解く上で重要なポイントです。

プログラム

ITパスポート令和4年度春問78プログラム

手順を理解してから、考えましょう。

手順を理解しないで、プログラムの詳細を考え始めると、大抵わからなくなります。

選択肢

ITパスポート令和4年度春問78選択肢

4つの中から1つ選ぶのに、一つ一つの選択肢の内容を理解する必要はありません。

”jとkを代入するんだな”程度の理解で、次に進みましょう。

ここでは、jとkが何を意味するか考える必要ありません。

2 関数の働き(目的)を確認する。

関数checkDigit

関数の働き(目的)を確認しましょう。

”配列orijinalDigit”の中身が気になるでしょうが、ここでは、”配列orijinalDigit”という塊としてとらえて置きます。

”配列orijinalDigit”については、次で確認します。

では、説明の太字の部分に着目します。

ITパスポート令和4年度春問78関数

関数の働き(目的)を理解するときは、”関数名”、”引数”、”戻り値”が大切です。

これらの関係を図にすると、次のようなイメージになります。

ITパスポート令和4年度春問78関数の説明

なお、この問題では、”チェックデジット”そのものが何を指すか知らなくても問題は解けます。

問題を解いてからでも、確認しておきましょう。

配列originalDigit

配列originalDigitについて、確認します。

問題文には、次のようにあります。

ITパスポート令和4年度春問78配列

説明の太字の部分から、次のことがわかります。

問題文わかること
”10進9桁の整数”例えば,
000000777
”上位の桁から順に格納された整数型の配列”9個の要素(箱)がある
”要素番号は1から始まる”箱には、1から9まで番号がついている。

図に示すと、配列originalDigitは、次のようになります。

ITパスポート令和4年度春問78配列の説明

3 関数の動作を、[手順]で具体的な値を使って確認する。

では、[手順]の内容を、一つ一つ具体的な数値で確認しましょう。

手順(1)

ITパスポート令和4年度春問78手順1

図に示すと、次のようになります。

ITパスポート令和4年度春問78手順1の説明

手順(2)

ITパスポート令和4年度春問78手順2

図に示すと、次のようになります。

ITパスポート令和4年度春問78手順2の説明

手順(3)

ITパスポート令和4年度春問78手順3

図に示すと、次のようになります。

ITパスポート令和4年度春問78手順3の説明

4 プログラムの構成を、[手順]と対応させて確認する。

はじめに結論を示します。

プログラムの構成を手順と対応させると、図のようになります。

ITパスポート令和4年度春問78プログラムと手順の対応

次からは、理由を説明します。

プログラムの構成考える時の目の付けどころ、プログラムの構成の分け方を参考にしてください。

○整数型~originalDigit)の部分←説明

関数を宣言しているので、問題文の説明にあたります。

for ~ endfor の部分

配列originalDigitの各要素を足しているので、手順1にあたります。

while ~ endwhile の部分

jを10で割った商を求めて、10の位の数を求めているの、手順2にあたります。

return j の部分

戻り値を記述しているので、手順3にあたります。

5 選択肢の変数が、[手順]の具体的な値のどれに当たるか調べる。

例えば、選択肢 アにある式 j ← j – 10 × k のjやkが何を示す変数なのかわからないと、値を代入して調べることができません。

そこで、次のように調べます。

 選択肢の入る a の前後で、jやkが使われている部分を調べる。

いくら選択肢の式そのものだけを見ても、jやkを理解できません。

選択肢の入る  の前後で、jやkを調べることが大切です。

調べる変数は3つあります。

○式右側のj(例:j ← j – 10 × k)

式の右側にあるので、計算に使う値です。
プログラムでは、式が入る a より上(前)を探します。

ITパスポート令和4年度春問78最初の変数jの説明

目印の部分にjがあります。

手順1に当たる部分です。

式右側のjは、配列originalDigitの各要素の数字を足した合計です。

○式右側のk(例:j ← j – 10 × k

式の右側にあるので、計算に使う値です。
プログラムでは、式が入る a より上(前)を探します。

ITパスポート令和4年度春問78変数kの説明

目印の部分にkがあります。

手順2に当たる部分です

jを10で割った商を求めているので、式の右側のkは10の位の数です。

○式左側の(例:j ← j – 10 × k)

式の左側にあるのでjは、計算の結果です。
プログラムでは、式が入る aより下(後) を探します。

ITパスポート令和4年度春問78変数jの説明

目印の部分にjがあります。

手順3に当たる部分にあります。

return j とあるので,左側のjの値は最終的に戻り値になります。

変数についてまとめると、次のようになります。

  • 式右側のjは、配列originalDigitの各要素の数字の合計
  • 式右側のkは、10の位の数
  • 式左側のjの値は、最終的に戻り値

手順2と照らし合わせて、変数に具体的な値を対応させる。

上のまとめに従って、jやkに具体的な値を対応させると次のようになります。

ITパスポート令和4年度春問78j,k,j説明

これで、式右側のj、式右側のk、式左側のjが決まりました。

なお、この値は、あくまで”000000777”の場合の値であって、10進9桁の整数が変わるとjやkの値も変わります。

6 各選択肢に具体的な値を代入して正誤を調べる。

次のように、各選択肢のj、kに具体的な値を代入して計算します。

ア j ← j – 10 × k

式右側を計算します。

21-10×2=1

式左側のj=1となり、手順(2)で求めた値 3と一致しません。

よって、アは正しくありません。

 イ j ← k + ( j – 10 × k )

式右側を計算します。

2+(21-10×2)=3

式左側のj=3となり、手順(2)で求めた値 3と一致します。

よって、イは正しいです。

 ウ j ← k + ( j – 10 )× k

2+(21-10)=13

式左側のj=13となり、手順(2)で求めた値 3と一致しません。

よって、ウは正しくありません。

 エ j ← k +j

2+21=23

式左側のj=23となり、手順(2)で求めた値 3と一致しません。

よって、エは正しくありません。

したがって、正解は、 イ です。

まとめ

ITパスポート令和4年度 問78を解きながら,疑似言語問題の解き方を解説しました。

最初に、疑似言語の問題を解くポイントを説明しました。

疑似言語の問題を解くポイント

文章で書かれた説明、条件、手順を理解してから、プログラムを考える。

選択肢の式に具体的な値を代入して、矛盾が生じないものを選ぶ。

次に、問題を解く手順を説明しました。

疑似言語問題を解く手順
  • Step 1
    問題文の全体の構成を確認する。
  • Step 2
    関数の働き(目的)を説明(条件)で確認する。
  • Step 3
    関数の動作を、[手順]で具体的な値を使って確認する。
  • Step 4
    プログラムの構成を、[手順]と対応させて確認する。
  • Step 5
    選択肢の変数が、[手順]の具体的な値のどれに当たるか調べる。
  • Step 6
    各選択肢に具体的な値を代入して正誤を調べる。

疑似言語の問題は必ず出題されます。

問題のバリエーションも少ないので、解き方さえマスターすると確実に点を取れます。

まずは、解き方を丁寧にトレースすることから始めたらいかがでしょうか。

以上、疑似言語問題の解き方を解説しました。

コメント

タイトルとURLをコピーしました