手続き型プログラミング (英: Procedural programming) は、コンピュータが実行すべき命令や手続きを、順に記述していくことでプログラムを構成するスタイルのプログラミングパラダイムである。
『手続き』は、言語によってはサブルーチン、関数、メソッドなどと呼ばれることもあるが、手続き型においてはほぼ同じものとしてみなされている。
概要
手続き型では、プログラムはコードを上から下へ順番に動作する。また、関数に共通処理をまとめることもできる。ただし、関数の定義も上から下へ実行されることが多く、定義の順序が重要となる。
言語
主要な言語でいうとこのような感じになる。
特化
- C
- Pascal
- Fortran
- BASIC
マルチパラダイム
- Python
- JavaScript
- Ruby
- Swift
- C++
- Go
コード
手続き型プログラミング言語のコードは、まさに順序付けされた工程リストだ。
#include <stdio.h>
int sum(int array[], int length) {
int sum = 0;
for (int i = 0; i < length; i++) {
sum += array[i];
}
return sum;
}
int main() {
int numbers[] = {10, 20, 30, 40, 50};
int length = sizeof(numbers) / sizeof(int);
int numbers_sum = sum(numbers, length);
float average;
average = (float)numbers_sum / length;
printf("平均は %.2f です\n", average);
return 0;
}
これは、配列numbersから平均を導くコードである。実行結果は
平均は 30 です
となる。
関数sum
を定義した後に関数main
を呼び出しているため正常に実行できるが、sum
をmain
の下に定義するとコンパイルエラーとなる。(最近のgccは許してくれること多いけど)
備考
なお、この「上から下へ実行される」というルールは他のプログラミング言語でもよくみられるものだ。並列処理でない限りはほとんどの言語がこのルールに則って動く。
しかも、C#などの一部のマルチパラダイム言語ではローカルスコープで定義したラムダ式や関数は定義より上からは呼び出せないため、手続き型のパラダイムが顕著に現れている例だといえる。