プログラミングの基礎(擬似言語のトレース)

基本情報技術者試験の科目Bと同じ形式の擬似言語で書いた短いプログラムを、1行ずつたどって結果を求める3択問題で学べます。代入と変数、繰返しと条件分岐、配列と文字列、整数の除算と剰余、再帰呼出し、ビット演算、スタックとキュー、連結リスト、オフバイワンエラー、短絡評価、実数の誤差、クラスとインスタンスを扱います。

10問練習するこの分野からランダムに10問・約5分 この分野を解くこの分野の問題をすべて、ランダムな順で出題します 苦手問題直近で間違えた問題だけを解き直します

ビット演算の計算ツール →

擬似言語の実行・トレースツール →

プログラミングの基礎(擬似言語のトレース)の要点

プログラムの動きを正確に読むには、変数の値が1行ごとにどう変わるかを、自分の手でたどる(トレースする)力が欠かせません。繰返しの回数を1つ数え違える、代入の順序で値が失われる、整数の除算で小数点以下が切り捨てられる、といった小さな見落としが、誤った結果やバグの原因になります。

基本情報技術者試験の科目Bで使われる擬似言語(整数型の宣言、← による代入、if・while・for、1から始まる配列の要素番号など)にならって書いた短いプログラムをトレースし、結果を答える問題を中心に学びます。誤りの選択肢は、終値の取り違えや演算子の優先順位の誤解など、典型的なまちがいから生じる値にしてあり、解説では各選択肢がどのまちがいから来るかを説明します。

プログラミングの基礎(擬似言語のトレース)の問題一覧(40問)

  1. 次のプログラムで、x と y の値を入れ替えるつもりで2つの代入文を書いた。実行した後の x と y の値の組はどれか。
  2. 3つの変数の値を順に送る次のプログラムを実行した後の a、b、c の値の組はどれか。
  3. x を3倍することを繰り返す次のプログラムを実行した後の n の値はどれか。
  4. i を2ずつ増やす次の for 文を実行した後の s の値はどれか。
  5. 内側の繰返しの初期値が外側の変数 i で決まる次の二重ループを実行した後の c の値はどれか。
  6. 二重ループの中に条件分岐がある次のプログラムを実行した後の c の値はどれか。
  7. 配列 a のすべての要素の合計を求めるつもりで、次のプログラムを書いた。配列の要素番号は1から始まる。実行した後の s の値はどれか。
  8. 配列の要素番号は1から始まる。最大の要素を探す次のプログラムを実行した後の m の値はどれか。
  9. 配列 a の要素を逆順に並べ替えるつもりで、次のプログラムを書いた。配列の要素番号は1から始まる。実行した後の a の内容はどれか。
  10. 配列の要素番号は1から始まる。次のプログラムを実行した後の配列 a の内容はどれか。
  11. 配列の要素番号は1から始まる。隣り合う要素を比べる次のプログラムを実行した後の c の値はどれか。
  12. m[i, j] は二次元配列 m の i 行目 j 列目の要素を表し、要素番号は1から始まる。次のプログラムを実行した後の s の値はどれか。
  13. 4行5列の二次元配列 m の要素を、次のプログラムで要素数20の配列 b に移す。m[i, j] は i 行目 j 列目の要素を表し、要素番号は1から始まる。m[3, 2] が代入される b の要素番号はどれか。
  14. 配列の要素番号は1から始まり、+ は文字列を連結する。次のプログラムを実行した後の r の値はどれか。
  15. 次の関数 isPal は、文字列型の配列 s の文字の並びが前から読んでも後ろから読んでも同じ(回文)なら true を返す。配列の要素番号は1から始まる。プログラム中の【a】に入れる字句はどれか。
  16. ÷ は除算で、整数型の変数(引数を含む)に代入するときは小数点以下を切り捨てる。次の関数 f を f(9087) として呼び出したときの戻り値はどれか。
  17. ÷ は除算で、整数型の変数(引数を含む)に代入するときは小数点以下を切り捨てる。次の関数 toBin を toBin(12) として呼び出したときの戻り値はどれか。
  18. 2つの整数 a、b を引き算で等しくしていく次のプログラムを実行した後の k の値はどれか。
  19. 次の関数 isLeap は、西暦 y 年がうるう年なら true を返す。and は or より先に計算する。isLeap(y) が true を返す y はどれか。
  20. ÷ は除算で、整数型の変数(引数を含む)に代入するときは小数点以下を切り捨てる。次の関数 pow を pow(2, 10) として呼び出したとき、pow が呼ばれる回数(最初の呼出しを含む)はどれか。
  21. 次の関数 s を s(7) として呼び出したときの戻り値はどれか。
  22. 次の手続 p を p(3) として呼び出したとき、出力される値の並びはどれか。
  23. 次の関数 fib を fib(10) として呼び出したときの戻り値はどれか。
  24. 次の関数 c を c(4, 2) として呼び出したとき、c が呼ばれる回数(最初の呼出しを含む)はどれか。
  25. ⊕ はビットごとの排他的論理和を表す。次のプログラムを実行した後の x と y の値の組はどれか。
  26. x と y は8ビットの符号なし整数とする。<< と >> は論理シフトで、空いたビットには0が入り、8ビットからあふれたビットは捨てる。∨ はビットごとの論理和を表す。次のプログラムを実行した後の y の値はどれか。
  27. ∧ はビットごとの論理積を表す。次のプログラムを実行した後の c の値はどれか。
  28. x と y は8ビットの符号なし整数とする。<< と >> は論理シフトで、空いたビットには0が入り、8ビットからあふれたビットは捨てる。∨ はビットごとの論理和を表す。x が 75 のとき、次の代入を実行した後の y の値はどれか。
  29. 次の手続 bubble は、整数型の配列 data を昇順に並べ替えるバブルソートである。swap(data, j, k) は data[j] と data[k] の値を入れ替える手続で、配列の要素番号は1から始まる。プログラム中の【a】に入れる字句はどれか。
  30. ÷ は除算で、整数型の変数(引数を含む)に代入するときは小数点以下を切り捨てる。次のプログラムは、昇順に整列された整数型の配列 data(要素番号は1から始まる)で、x 以上の値が最初に現れる要素番号を lo に求める。x は data の最後の要素以下とする。プログラム中の【a】に入れる字句はどれか。
  31. 要素数5の整数型の配列 st と整数型の変数 top でスタックを表す。st の要素はすべて0、top は0から始める。push(v) は top に1を加えてから st[top] ← v を行い、pop() は st[top] の値を返してから top から1を引く(st の要素は変えない)。次のプログラムを実行した後の top と st の組はどれか。
  32. 要素数4の文字列型の配列 q を環状に使うキューがある。head と tail の初期値は1で、enq(v) は q[tail] ← v の後に tail ← tail mod 4 + 1 を行い、deq() は q[head] の値を返した後に head ← head mod 4 + 1 を行う。次のプログラムを実行したとき、「E」が格納される q の要素はどれか。
  33. 次のプログラムは、配列 next で要素どうしをつないだ連結リストを、要素番号1の要素から順にたどって出力する。配列の要素番号は1から始まる。next の値0はリストの終わりを表す。出力される値の並びはどれか。
  34. 次のプログラムは、配列 next でつないだ連結リスト A → C → E → D → B の「C」(要素番号3)の直後に、val[6] の「F」を挿入してから、要素番号1の要素から順にたどって出力する。配列の要素番号は1から始まる。next の値0はリストの終わりを表す。出力が A, C, F, E, D, B となるように【a】に入れる処理はどれか。
  35. 制御変数を5ずつ増やす次の for 文を実行した後の c の値はどれか。
  36. 次のプログラムの and は、左側の式が false のときは右側の式を評価しない(短絡評価)。cnt は大域変数である。実行した後の cnt の値はどれか。
  37. 要素数 n の配列 a から値 x を探し、見つかった要素番号を i に求める次のプログラムがある。配列の要素番号は1から始まる。and と or は、左側の式だけで結果が決まるときは右側の式を評価しない。【a】に入れる条件式のうち、x が a の中にないときに範囲外の a[n + 1] を参照してしまうものはどれか。
  38. 実数型の値は IEEE 754 の倍精度(binary64)で表し、加算の結果は最も近い表せる値に丸める。次のプログラムを実行した後の c の値はどれか。
  39. クラス Counter は、インスタンスごとに整数型のメンバ変数 count(生成時は0)を持ち、メソッド inc() は自分の count に1を加える。次のプログラムを実行した後の x の値はどれか。
  40. クラス Counter は、インスタンスごとに整数型のメンバ変数 count(生成時は0)を持ち、メソッド inc() は自分の count に1を加える。Counter 型の変数には、インスタンスそのものではなく、インスタンスへの参照が入る。次のプログラムを実行した後の x の値はどれか。

プログラミングの基礎(擬似言語のトレース)の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

コンピュータシステムのほかの分野