プログラミングの基礎(擬似言語のトレース)
基本情報技術者試験の科目Bと同じ形式の擬似言語で書いた短いプログラムを、1行ずつたどって結果を求める3択問題で学べます。代入と変数、繰返しと条件分岐、配列と文字列、整数の除算と剰余、再帰呼出し、ビット演算、スタックとキュー、連結リスト、オフバイワンエラー、短絡評価、実数の誤差、クラスとインスタンスを扱います。
—あなたの正答率
0 / 40解いた問題
プログラミングの基礎(擬似言語のトレース)の要点
プログラムの動きを正確に読むには、変数の値が1行ごとにどう変わるかを、自分の手でたどる(トレースする)力が欠かせません。繰返しの回数を1つ数え違える、代入の順序で値が失われる、整数の除算で小数点以下が切り捨てられる、といった小さな見落としが、誤った結果やバグの原因になります。
基本情報技術者試験の科目Bで使われる擬似言語(整数型の宣言、← による代入、if・while・for、1から始まる配列の要素番号など)にならって書いた短いプログラムをトレースし、結果を答える問題を中心に学びます。誤りの選択肢は、終値の取り違えや演算子の優先順位の誤解など、典型的なまちがいから生じる値にしてあり、解説では各選択肢がどのまちがいから来るかを説明します。
プログラミングの基礎(擬似言語のトレース)の問題一覧(40問)
- 次のプログラムで、x と y の値を入れ替えるつもりで2つの代入文を書いた。実行した後の x と y の値の組はどれか。
- 3つの変数の値を順に送る次のプログラムを実行した後の a、b、c の値の組はどれか。
- x を3倍することを繰り返す次のプログラムを実行した後の n の値はどれか。
- i を2ずつ増やす次の for 文を実行した後の s の値はどれか。
- 内側の繰返しの初期値が外側の変数 i で決まる次の二重ループを実行した後の c の値はどれか。
- 二重ループの中に条件分岐がある次のプログラムを実行した後の c の値はどれか。
- 配列 a のすべての要素の合計を求めるつもりで、次のプログラムを書いた。配列の要素番号は1から始まる。実行した後の s の値はどれか。
- 配列の要素番号は1から始まる。最大の要素を探す次のプログラムを実行した後の m の値はどれか。
- 配列 a の要素を逆順に並べ替えるつもりで、次のプログラムを書いた。配列の要素番号は1から始まる。実行した後の a の内容はどれか。
- 配列の要素番号は1から始まる。次のプログラムを実行した後の配列 a の内容はどれか。
- 配列の要素番号は1から始まる。隣り合う要素を比べる次のプログラムを実行した後の c の値はどれか。
- m[i, j] は二次元配列 m の i 行目 j 列目の要素を表し、要素番号は1から始まる。次のプログラムを実行した後の s の値はどれか。
- 4行5列の二次元配列 m の要素を、次のプログラムで要素数20の配列 b に移す。m[i, j] は i 行目 j 列目の要素を表し、要素番号は1から始まる。m[3, 2] が代入される b の要素番号はどれか。
- 配列の要素番号は1から始まり、+ は文字列を連結する。次のプログラムを実行した後の r の値はどれか。
- 次の関数 isPal は、文字列型の配列 s の文字の並びが前から読んでも後ろから読んでも同じ(回文)なら true を返す。配列の要素番号は1から始まる。プログラム中の【a】に入れる字句はどれか。
- ÷ は除算で、整数型の変数(引数を含む)に代入するときは小数点以下を切り捨てる。次の関数 f を f(9087) として呼び出したときの戻り値はどれか。
- ÷ は除算で、整数型の変数(引数を含む)に代入するときは小数点以下を切り捨てる。次の関数 toBin を toBin(12) として呼び出したときの戻り値はどれか。
- 2つの整数 a、b を引き算で等しくしていく次のプログラムを実行した後の k の値はどれか。
- 次の関数 isLeap は、西暦 y 年がうるう年なら true を返す。and は or より先に計算する。isLeap(y) が true を返す y はどれか。
- ÷ は除算で、整数型の変数(引数を含む)に代入するときは小数点以下を切り捨てる。次の関数 pow を pow(2, 10) として呼び出したとき、pow が呼ばれる回数(最初の呼出しを含む)はどれか。
- 次の関数 s を s(7) として呼び出したときの戻り値はどれか。
- 次の手続 p を p(3) として呼び出したとき、出力される値の並びはどれか。
- 次の関数 fib を fib(10) として呼び出したときの戻り値はどれか。
- 次の関数 c を c(4, 2) として呼び出したとき、c が呼ばれる回数(最初の呼出しを含む)はどれか。
- ⊕ はビットごとの排他的論理和を表す。次のプログラムを実行した後の x と y の値の組はどれか。
- x と y は8ビットの符号なし整数とする。<< と >> は論理シフトで、空いたビットには0が入り、8ビットからあふれたビットは捨てる。∨ はビットごとの論理和を表す。次のプログラムを実行した後の y の値はどれか。
- ∧ はビットごとの論理積を表す。次のプログラムを実行した後の c の値はどれか。
- x と y は8ビットの符号なし整数とする。<< と >> は論理シフトで、空いたビットには0が入り、8ビットからあふれたビットは捨てる。∨ はビットごとの論理和を表す。x が 75 のとき、次の代入を実行した後の y の値はどれか。
- 次の手続 bubble は、整数型の配列 data を昇順に並べ替えるバブルソートである。swap(data, j, k) は data[j] と data[k] の値を入れ替える手続で、配列の要素番号は1から始まる。プログラム中の【a】に入れる字句はどれか。
- ÷ は除算で、整数型の変数(引数を含む)に代入するときは小数点以下を切り捨てる。次のプログラムは、昇順に整列された整数型の配列 data(要素番号は1から始まる)で、x 以上の値が最初に現れる要素番号を lo に求める。x は data の最後の要素以下とする。プログラム中の【a】に入れる字句はどれか。
- 要素数5の整数型の配列 st と整数型の変数 top でスタックを表す。st の要素はすべて0、top は0から始める。push(v) は top に1を加えてから st[top] ← v を行い、pop() は st[top] の値を返してから top から1を引く(st の要素は変えない)。次のプログラムを実行した後の top と st の組はどれか。
- 要素数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 の要素はどれか。
- 次のプログラムは、配列 next で要素どうしをつないだ連結リストを、要素番号1の要素から順にたどって出力する。配列の要素番号は1から始まる。next の値0はリストの終わりを表す。出力される値の並びはどれか。
- 次のプログラムは、配列 next でつないだ連結リスト A → C → E → D → B の「C」(要素番号3)の直後に、val[6] の「F」を挿入してから、要素番号1の要素から順にたどって出力する。配列の要素番号は1から始まる。next の値0はリストの終わりを表す。出力が A, C, F, E, D, B となるように【a】に入れる処理はどれか。
- 制御変数を5ずつ増やす次の for 文を実行した後の c の値はどれか。
- 次のプログラムの and は、左側の式が false のときは右側の式を評価しない(短絡評価)。cnt は大域変数である。実行した後の cnt の値はどれか。
- 要素数 n の配列 a から値 x を探し、見つかった要素番号を i に求める次のプログラムがある。配列の要素番号は1から始まる。and と or は、左側の式だけで結果が決まるときは右側の式を評価しない。【a】に入れる条件式のうち、x が a の中にないときに範囲外の a[n + 1] を参照してしまうものはどれか。
- 実数型の値は IEEE 754 の倍精度(binary64)で表し、加算の結果は最も近い表せる値に丸める。次のプログラムを実行した後の c の値はどれか。
- クラス Counter は、インスタンスごとに整数型のメンバ変数 count(生成時は0)を持ち、メソッド inc() は自分の count に1を加える。次のプログラムを実行した後の x の値はどれか。
- クラス Counter は、インスタンスごとに整数型のメンバ変数 count(生成時は0)を持ち、メソッド inc() は自分の count に1を加える。Counter 型の変数には、インスタンスそのものではなく、インスタンスへの参照が入る。次のプログラムを実行した後の x の値はどれか。
プログラミングの基礎(擬似言語のトレース)の参考書を探す PR
Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。
コンピュータシステムのほかの分野
- 計算機算術 IEEE 754・固定小数点・丸め誤差
- 確率・統計と待ち行列 場合の数・確率分布・推定と検定・M/M/1
- 命令セット・アセンブリ RISC-V・アドレッシング・呼び出し規約
- コンパイラ 構文解析・SSA・最適化・レジスタ割り当て
- リンカ・ローダと実行形式 ELF・シンボル解決・再配置・動的リンク
- OSとハードウェア 割り込み・システムコール・ページフォールト
- Linuxとコマンドラインの基礎 シェル・パーミッション・パイプ・スクリプト
- メモリ階層と性能 キャッシュ・置き換え方式・ミスの3分類
- マルチコアと同期 MESI・アトミック命令・メモリバリア
- GPUプログラミング ワープ・共有メモリ・合体アクセス・占有率
- AIハードウェアとソフトウェアスタック 推論と学習・量子化・Rooflineモデル
- 機械学習の基礎 学習の種類・評価指標・ニューラルネットワーク
- 組込み・ファームウェア GPIO・UART/SPI/I2C・RTOS
- ハードウェア記述言語と検証 Verilog・ラッチ・状態機械・テストベンチ
- インターフェース・バス規格 PCIe・USB・SerDes・CXL
- ネットワークの基礎 TCP/IP・サブネット計算・DNS・TLS
- Web技術の基礎 HTTP・Cookie・REST・CORS・キャッシュ
- 無線通信の基礎 変調・OFDM・MIMO・RF回路
- 情報セキュリティの基礎 暗号・認証・Web攻撃と対策
- データベースの基礎 SQL・正規化・トランザクション
- データ構造とアルゴリズム 計算量・探索・ソート・グラフ
- C言語の基礎 ポインタ・メモリ・未定義動作
- ソフトウェア開発とプロジェクト管理 開発プロセス・テスト・日程とコストの管理
- 経営戦略と会計の基礎(ストラテジ系) 会計・損益分岐点・経営戦略・マーケティング
- サービスマネジメントとシステム監査 SLA・インシデントと問題・監査と内部統制
- システム構成と信頼性設計 冗長化・RAID・バックアップ・クラウド
- クラウドとコンテナの基礎 Docker・Kubernetes・責任共有モデル・IaC
- 性能評価・プロファイリング アムダールの法則・CPI・ボトルネック
- ハードウェアセキュリティ サイドチャネル・セキュアブート・TEE・PUF
- 電力管理(ソフトウェア制御) DVFS・パワーゲーティング・スリープ状態