pulpul 日本の試験

基本情報技術者 概念書 · アルゴリズムとプログラミング

プログラミング

要点と定義

プログラミングでは、処理を読みやすく正確に表し、変更や再利用をしやすくする作法とコーディング標準を守ります。命名規則や字下げ、変数の用途、資源確保に失敗した場合の処理などをそろえると、誤りを見つけやすくなります。異なる用途の値を一つの変数で使い回すと、値の意味を取り違えやすくなります。領域割付けに失敗した場合の処理を用意するのも、異常時に安全に対応するための作法です。

基本的な制御構造には、条件に応じて処理を選ぶ選択処理と、条件を満たす間に処理を繰り返す反復処理があります。反復の終了条件や更新を誤ると、処理が終わらない、または必要な候補を調べ損ねることがあります。装置の状態を読み、変換中なら確認を繰り返し、完了後に値を読み取って表示するような処理も、状態に応じた反復と順序づけで表せます。

ビット演算は、ビット列をビット単位で扱う演算です。ビットごとの論理積「&」は両方が1の位置だけを残し、論理和「|」はどちらかが1の位置を残します。論理演算の「&&」は条件全体の真偽を扱うもので、ビットごとの演算とは役割が異なります。選択肢をビット列で表す場合、正答と受験者の解答の共通部分は論理積で取り出せます。1のビット数を数えれば一致数を求められます。

オブジェクト指向では、クラスがデータや操作の共通仕様を定義し、その定義から具体的なオブジェクトであるインスタンスを生成します。一つのクラスから複数のインスタンスを作れます。委譲は、あるオブジェクトが受けた操作を内部で別のオブジェクトに依頼する仕組みです。下位クラスが上位クラスの属性や操作を引き継ぐ継承とは異なります。

適用条件と例

候補の組合せから条件に合うものを選ぶときは、候補の有効条件と「現在の最良候補を更新する条件」を分けて考えます。たとえば荷物の候補重量を列挙するなら、上限以下の候補に絞り、その中で現在の最大値より重い候補が見つかった場合に記録します。上限を超える候補を選んだり、現在値より軽い候補に更新したりすると、発送可能な最大の組合せになりません。確定した数量は残数から差し引き、次の荷物を調べます。この例は、条件分岐、反復、作業用変数の更新を組み合わせたものです。過年度の午後問題に現れた処理設計の基礎として参照できます。

ビット列で複数選択の採点を行う例では、受験者が選んだ数が指定数以下かを先に調べます。指定数を超えた場合は得点を0にし、超えていない場合は正答ビット列と解答ビット列の論理積を取り、その1の数を数えます。たとえば正答が「0101」、解答が「0110」なら、論理積は「0100」で、一致数は1です。選択数の上限判定には受験者の解答ビット列の1の数を使い、指定数と比較します。

この節の続き

ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。

アプリでこの節を読む