1. 手続き型プログラミングの基本概念と歴史 MOC
- 手続き型プログラミングの定義と目標
- 手続き型プログラミングの歴史的背景
- 他のプログラミングパラダイムとの比較
- オブジェクト指向プログラミング (OOP) と手続き型プログラミングの違い (データと手続きの分離 vs. カプセル化)
- 関数型プログラミング (FP) と手続き型プログラミングの違い (副作用、状態変更の扱い)
- 手続き型プログラミングの現代における位置づけと影響 (多くの言語の基礎)
2. サブルーチン (Subroutine) MOC
- 定義と目的
- 手続きの呼び出しと復帰 (Procedure Call and Return)
- 引数 (Argument) と仮引数 (Parameter)
- 仮引数の宣言と実引数の受け渡し
- 引数渡し方式 (Parameter Passing Mechanisms)
- 可変長引数リスト (Variable Number of Arguments) (C言語の
va_listなど)
- 戻り値 (Return Value)
- 手続きからの結果の返し方
- [[
void/procedure(戻り値なし) とfunction(戻り値あり)]] - 複数の戻り値の扱い方 (構造体、ポインタ、タプルなど)
- 変数のスコープと生存期間 (Scope and Lifetime of Variables)
- 副作用 (Side Effects) のある手続き
- 再帰手続き (Recursive Procedures)
3. モジュール性 (Modularity) とプログラム構造 MOC
- モジュール化の概念
- ソースファイルの分割とリンク
- 名前空間 (Namespace) とスコープ解決 (限定的、C言語では主にファイルスコープ)
[[staticキーワードによる内部リンケージ (C言語)]]
- 情報隠蔽 (Information Hiding) の実現 (手続き型における限定的な方法)
- モジュール内部の詳細を隠蔽し、インターフェースのみを公開する考え方
- [[C言語における
static関数やstaticグローバル変数]] - 抽象データ型 (ADT - Abstract Data Type) の手続き型での実現の試み (構造体とそれを操作する関数のセット)
4. 制御構造 (Control Structures) MOC
- 構造化プログラミング (Structured Programming) の原則
- 順次実行
- 選択 / 条件分岐構造
[[if文]][[if-then構造]][[if-then-else構造]][[else if/elifによる多分岐]]- [[ネストされた
if文]]
[[switch/case文 /select文]]- 多分岐処理の効率的な記述
[[caseラベルとdefault/otherwise句]][[break文の役割 (C言語など)]] (フォールスルー)
- 反復 / ループ構造
- [[カウンタ制御ループ (
forループ)]]- 初期化、条件式、更新式の構成要素
- [[
forループの様々な形式 (Pascal, C, Pythonなど)]]
- [[条件制御ループ (前判定 -
whileループ)]] - [[条件制御ループ (後判定 -
do-while/repeat-untilループ)]] - ループ制御文
[[break文 (ループからの脱出)]][[continue文 (ループの次の反復へ)]]
- 無限ループ (Infinite Loop) とその対処
- ネストされたループ
- [[カウンタ制御ループ (
[[goto文]]- [[
goto文の機能 (無条件ジャンプ)]] - [[
goto文の弊害と構造化プログラミングにおける忌避]] - [[限定的な
goto文の許容例 (エラー処理、多重ループ脱出 - 議論あり)]]
- [[
- (オプション) 例外処理 (Exception Handling) の手続き型言語における実現 (C言語では
setjmp/longjmpなど、限定的)
5. データ型と変数 (Data Types and Variables) MOC
- 変数の基本
- 基本データ型 (Primitive / Basic Data Types)
- 整数型 (Integer Types) (
int,short,long,byteなど、符号付き/符号なし) - 浮動小数点型 (Floating-Point Types) (
float,double,realなど) - 文字型 (Character Types) (
char, ASCII, Unicode) - ブーリアン型 (Boolean Type) (
bool,boolean, 真偽値) (C言語では整数で代用することも)
- 整数型 (Integer Types) (
- 派生データ型 / 複合データ型 (Derived / Composite Data Types)
- 型変換 (Type Conversion / Casting)
- 型エイリアス (Type Alias)
6. O) 操作 MOC
- 標準入出力 (Standard Input/Output)
- 標準入力 (stdin) と標準出力 (stdout)、標準エラー出力 (stderr)
- [[コンソールからの入力 (例:
scanf,gets,cin,readln)]] - [[コンソールへの出力 (例:
printf,puts,cout,writeln)]] - リダイレクションとパイプ (OSの機能との連携)
- ファイル入出力 (File I/O)
- ファイルとは (補助記憶装置上のデータのまとまり)
- ファイルのオープン (Open) (ファイル名、モード指定 - 読込/書込/追記、バイナリ/テキスト)
- ファイルハンドル
- ファイルからの読み込み (Read) (文字単位、行単位、ブロック単位)
- ファイルへの書き込み (Write)
- ファイルのクローズ (Close)
- ファイルの位置制御 (Seek) (ファイルポインタの移動)
- エラー処理 (ファイルが見つからない、アクセス権限など)
- テキストファイルとバイナリファイル
7. メモリ管理 (Memory Management) - 手続き型における基礎 MOC
- メモリ領域の分類
- Global Area) (グローバル変数、静的変数)
- スタック領域 (Stack Area) (ローカル変数、関数呼び出し情報)
- ヒープ領域 (Heap Area) (動的に確保されるメモリ)
- 静的メモリ割り当て (Static Memory Allocation)
- スタックベースのメモリ割り当て (Stack-based Memory Allocation)
- 動的メモリ割り当て (Dynamic Memory Allocation) (ヒープ領域)
- [[C言語における動的メモリ確保 (
malloc,calloc,realloc,free)]] - [[Pascalにおける動的メモリ確保 (
New,Dispose)]] - 動的メモリ確保の必要性
- メモリリーク (Memory Leak) (
free/Disposeのし忘れ) - ダングリングポインタ (Dangling Pointer) (解放済みメモリへのポインタ)
- ヒープの断片化 (Heap Fragmentation)
- (オプション) ガーベジコレクション (Garbage Collection) - 手続き型言語では通常は手動管理
- [[C言語における動的メモリ確保 (
8. 手続き型プログラミングの利点と欠点 MOC
- 利点
- 欠点
9. 手続き型プログラミングの設計手法 MOC
- トップダウン設計 (Top-down Design)
- ステップワイズリファインメント (Stepwise Refinement)
- フローチャート (設計の視覚化)
- (関連) モジュール設計の原則 (凝集度を高め、結合度を低くする)
10. 代表的な手続き型言語の特徴と例 MOC
- C言語における手続き型プログラミング (ポインタ、メモリ管理、システムコール)
- Pascalにおける手続き型プログラミング (構造化、型安全性、教育用)
- FORTRANにおける手続き型プログラミング (数値計算、サブルーチン)
- COBOLにおける手続き型プログラミング (データ構造、事務処理)
- BASIC (初期) における手続き型プログラミング (GOTO、行番号)
- (現代) 手続き型スタイルが活用される場面 (スクリプト、小さなユーティリティ、パフォーマンスが重要な部分)