手続き型プログラミングは、やりたい処理を「入力→処理→出力」という手順で順番に記述していく考え方です。
流れを丁寧に設計し、意図どおりに動く小さな手続きを積み重ねることで、初心者でも安定したプログラムを書けます。
まずは考え方をつかみ、短い例で確実に身につけていきましょう。
手続き型プログラミングとは
初心者向けの意味と特徴
手続き型プログラミングとは、やるべき手順を上から順番に並べて実行する書き方のことです。
料理のレシピのように「材料を読み取る」「混ぜる」「焼く」「盛り付ける」といった手順を書き出して、その順に処理が動きます。
特徴は、流れが追いやすく、今どの操作をしているかが明確な点です。
初心者にとって、処理を追いかけやすいことは大きな助けになります。
手続き型の基本イメージ
プログラムはデータを受け取り、計算や判断をして、結果を出します。
この一連の流れを「手続き」と考え、必要なだけ手続きを積み重ねます。
複雑なことも、簡単な手続きに分ければ理解しやすくなります。
流れ(手順)を重視する理由
流れを重視すると、思考の順番とコードの順番が一致しやすく、間違いを見つけやすくなります。
また、コンピュータは命令を上から順に実行するのが基本なので、流れに合わせて書くことは自然です。
「次に何が起きるか」が明確になることで、テストや修正もやりやすくなります。
よく使う場面
日常の自動化スクリプト、データの整形や集計、簡単なゲーム、アルゴリズムの学習などで特に力を発揮します。
例えば「ファイルを読む→必要な行だけ選ぶ→数値を合計する→結果を表示する」といった処理は手続き型が得意です。
大規模で複雑な状態管理が必要な場合は、設計を工夫しないと見通しが悪くなりがちです。
流れを設計する考え方
入力→処理→出力の3ステップ
どんなプログラムでも「入力→処理→出力」の3ステップに整理できます。
この型に当てはめると、足りない部分や余計な部分が見つかりやすくなります。
例えば「数値の合計を求める」なら、入力は数値のリスト、処理は合計、出力は合計値という具合です。
入力: 数の列
↓
処理: すべて足す
↓
出力: 合計を表示
処理を小さく分ける
大きな処理は、小さな手続きに分けるほど理解と再利用がしやすくなります。
分け方に迷ったら「1つの手続きは1つの役割」にするのが基本です。
分割の例(合計と平均を求める場合)
| ステップ | 目的 | 入力 | 出力 |
|---|---|---|---|
| 1 | 数値を集める | テキスト | 数値の配列 |
| 2 | 合計を求める | 数値の配列 | 合計値 |
| 3 | 平均を求める | 合計値と個数 | 平均値 |
| 4 | 結果を表示する | 合計値と平均値 | 表示 |
表のように「何を入れて何を出すか」を書き出すと、手続き同士の受け渡しが明確になります。
顺番に並べて書く
手続きは正しい順番に並べないと、正しい結果が出ません。
例えば、平均を出す前に個数を数えておく必要があります。
順序を守るため、処理の前提条件(例: 合計する前に数値に変換する)を先に書くようにします。
「前提」「本体」「後片付け」の順で並べると迷いにくいです。
条件分岐で道を分ける
条件分岐は「もし〜なら、こうする。そうでなければ、別のことをする」という道の分かれ目です。
条件は短く、わかりやすい言葉で書くのがコツです。
1つの分岐に多くの条件を詰め込むと読みづらくなります。
複数に分けるか、小さな手続きに切り出しましょう。
繰り返しで回す
繰り返しは、同じ処理を何度も行うための仕組みです。
回す回数が決まっているときは回数で、終わりの条件が大事なときは条件で止めるように設計します。
回数の繰り返しと、条件の繰り返しは使い分けます。
フローチャートと擬似コード
フローチャートは流れの図、擬似コードは流れの文章版で、どちらも設計に役立ちます。
図で全体をつかみ、擬似コードで細部を固めるとスムーズです。
簡単なフローチャート例(最大値を探す)
[開始]
↓
[最初の値を最大とする]
↓
[次の値はある?]─Yes→[次の値と最大を比べる]→[大きければ最大を更新]→戻る
└─No →[最大を出力]→[終了]
擬似コード例
最大値 = 最初の値
それ以外の各値について繰り返す:
もし 値 > 最大値 なら 最大値 = 値
最大値を出力する
擬似コードは文法に縛られないので、初心者でも安心してロジックを表せます。
テストは1歩ずつ
動いたかどうかは小さな単位で確かめるのが最短ルートです。
入力だけ、合計だけ、出力だけと区切って確認します。
途中結果を表示して確かめることは恥ではなく、品質を上げる基本の技です。
大きく作ってからまとめてテストするのは避けましょう。
手続き型プログラミングの書き方
変数と値の基本
変数は「名前のついた入れ物」で、値を入れて後で取り出すために使います。
わかりやすい名前にすると読みやすくなります。
以下はPythonの例です。
# 合計を入れる変数
total = 0 # 0で初期化
price = 1200 # 値段
count = 3 # 個数
total = price * count # 計算して代入
print(total) # 3600
入出力の書き方
入力は情報を受け取る手順、出力は結果を伝える手順です。
最初はキーボード入力と画面出力から始めるとよいです。
# 入力: 文字列で入るため数値に変換する
text = input("数値を入力してください: ")
number = int(text) # 文字を数にする
result = number * 2
print("2倍は", result) # 出力
ファイルやネットワークも入出力ですが、最初は画面とキーボードだけに絞ると理解が進みます。
条件分岐の書き方
if文は「条件が真なら、この手続きを実行」という形で書きます。
複数の条件がある場合は順番に確かめます。
score = int(input("点数を入力: "))
if score >= 80:
print("合格")
elif score >= 60:
print("再テスト")
else:
print("不合格")
条件を重ねすぎると読みづらくなります。
条件を関数に分けるのも有効です。
繰り返しの書き方
回数が決まっている繰り返しはfor、条件で続ける繰り返しはwhileが基本です。
# for: 0から4までの合計を求める
total = 0
for i in range(5):
total += i
print(total) # 10
# while: 0になるまでカウントダウン
n = 3
while n > 0:
print(n)
n -= 1
print("発射!")
繰り返しの止め方を先に書くと、無限ループを避けやすいです。
手続き(関数)でまとめる
同じ処理を何度も書くなら、関数にまとめて名前をつけると再利用できます。
入力と出力をはっきりさせましょう。
def average(values):
"""数値のリストの平均を返す"""
if len(values) == 0:
return 0 # からのときは0を返すなど、扱いを決める
return sum(values) / len(values)
print(average([10, 20, 30])) # 20.0
関数は1つの役割に絞ると読みやすく、テストもしやすくなります。
名前付けとコメント
名前は中身をそのまま表す言葉にし、コメントは「なぜそうするか」を補足します。
何をする関数か、前提や例外的な扱いを書いておくと未来の自分が助かります。
# 悪い例: x, y では意図がわからない
# 良い例: price, discount_rate は意味がわかる
def final_price(price, discount_rate):
"""割引後の価格を返す。discount_rateは0〜1"""
return int(price * (1 - discount_rate))
コメントでコードの動作を繰り返すだけの説明は避け、意図や理由を書くようにしましょう。
小さな例で練習する
小さな完成例を作って、入力→処理→出力の型を体で覚えましょう。
以下は「複数の点数の合計と平均を出す」例です。
# カンマ区切りで点数を入力: 例) 70,80,90
raw = input("点数をカンマ区切りで入力: ")
# 入力: 文字列を分割して数値のリストにする
parts = raw.split(",")
scores = []
for p in parts:
scores.append(int(p.strip()))
# 処理: 合計と平均
total = sum(scores)
avg = total / len(scores) if len(scores) > 0 else 0
# 出力: 結果を表示
print("合計:", total)
print("平均:", avg)
このように短い完成形を何本か書くと、基礎の組み立て方が身につきます。
メリットと注意点
手続き型プログラミングのメリット
流れが読みやすく、動作の予想がしやすいので、初心者が論理の筋道を学ぶのに最適です。
また、無駄の少ない素直な書き方ができ、単純な処理では効率が良くなります。
テストやデバッグも「どの手続きが壊れているか」を切り分けやすいのが利点です。
手続き型プログラミングの注意点
手続きが長くなると、どこで何をしているかが分かりにくくなる危険があります。
早めに関数へ分割し、役割ごとに整理しましょう。
グローバル変数を多用すると、値がどこで変わったか追跡しづらくなります。
入力と出力を関数の引数と戻り値でやり取りするのが基本です。
つまずきやすい所とコツ
ありがちなつまずきは「条件が複雑になりすぎる」「繰り返しの回数を1つ多く/少なく回す」「順番を間違える」の3つです。
対策としては、条件は小分けにして名前をつける、繰り返しは小さなデータで検証、前提条件をコメントやチェックで明示が有効です。
一気に完成させようとせず、1歩ずつ動くところまで作っては確かめる習慣をつけましょう。
まとめ
手続き型プログラミングは「入力→処理→出力」を土台に、手続きを順番に積み上げる考え方で、初心者が論理と実装の橋渡しをするうえで最も学びやすい方法です。
処理を小さく分け、順番を守り、条件分岐と繰り返しを適切に使えば、安定して動くプログラムが作れます。
フローチャートや擬似コードで流れを確認し、テストは小さく1歩ずつ進めましょう。
小さな成功体験を積み重ねることが、上達への近道です。
