プログラミングの基礎
要点と定義
プログラムは、データを変数に受け取り、演算や条件判定を行い、制御構造に従って処理し、結果を出すものです。変数への代入は値を設定する操作で、型は扱える値や演算に関係します。複数の処理を役割ごとに分けると、見通しや変更のしやすさが高まります。販売データを集計する例では、行ごとの単価と数量を掛け、その結果を累積用の変数に加えます。商品コードを照合する条件、売上を加える処理、次の年の出力行へ進める処理はそれぞれ別の役割です。
手続や関数は、まとまった処理に名前を付けて呼び出す仕組みです。引数は呼出し側から処理へ渡す値、戻り値は処理結果を呼出し側へ返す値です。呼出し先で計算した料金を呼出し元に返す場合、結果を返すために定められた受渡し先へ格納します。
再帰呼出しとは、関数が自分自身を呼び出すことです。同じ形式の小さな問題に分けて解ける場合に使えます。呼出しが終わる条件を設け、各呼出しでその条件に近づくようにします。例えば階乗なら、1以下の入力では1を返し、それより大きい入力では入力値と、1小さい値についての再帰結果を掛けます。
オブジェクト指向プログラミングでは、クラスがオブジェクトのデータや処理の構造を定め、メソッドが処理を表します。オーバーライドは、サブクラスがスーパークラスで定義されたメソッドを再定義することです。同じ操作の呼出しでも、実際のオブジェクトに応じた処理を実行でき、多相性の実現に使われます。
選択処理は条件に応じて実行する処理を選び、繰返し処理は条件や回数に応じて処理を繰り返します。繰返しでは、処理回数を数える変数と、処理対象を指す添字を区別し、終了条件・更新・範囲外への対応を設計します。
適用条件と例
集計では、対象行から必要な値を取り出し、条件に合う行だけを加算します。単価800円、数量3個の行なら売上は800×3=2,400円です。商品ごとにまとめる場合は、現在の集計対象の商品コードとデータ行の商品コードが一致する間、単価と数量の積を累積します。商品コードが一致しない行まで加算すれば別商品の売上が混ざります。年の出力先が一定間隔で並ぶなら、販売データの行番号とは別の変数で出力位置を管理します。
呼出し元と呼出し先の間で値を渡すときは、引数と戻り値の仕様を確認します。例えば呼出し側が利用番号と出庫時刻を渡し、呼出し先が料金を計算するなら、計算結果を結果用の受渡し先へ格納して返します。入力用の値を結果用の値と取り違えたり、代入方向を逆にしたりすると、呼出し側が期待する結果になりません。日をまたぐ時間の差を求める例では、日付を通算日数に変換し、時刻と組み合わせて同じ単位の値にしてから差を取ります。分を時間差に含めない計算では、分の大小関係によって課金単位を補う条件も別に確認します。
この節の続き
- 誤りやすい点
ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。
アプリでこの節を読む