中高生のプログラミングの学び方|アルゴリズムの基礎を「考える・動かす・直す」で身につける
「プログラミングを始めたいけれど、何から学べばいいのか分からない」「教材のとおりに入力すれば動くのに、自分で作ろうとすると止まってしまう」。中学生・高校生が学習を始めると、こうした壁に出会うことがあります。
基礎を身につけるには、コードの書き方と一緒に、何を受け取り、どの順番で処理し、何を出すのかを考える練習が大切です。この問題を解くための手順が、アルゴリズムです。
この記事では、順次・分岐・反復の基本から、短いPythonの例題、間違いの調べ方、小さな作品への発展までを紹介します。読むだけで終わらせず、結果を予想し、自分で条件を変えながら進めてみましょう。
目次
1.プログラミングは、手順を考えて確かめる学習
プログラミングでは、コンピューターに実行させる処理を、決められた書き方で表します。文法を知ることは必要ですが、文法を暗記するだけで、作りたいものの動作が決まるわけではありません。
例えば「クイズアプリを作る」なら、問題を表示する、回答を受け取る、正誤を判定する、結果を表示するといった処理が必要です。最初に、この流れを自分の言葉で整理してみましょう。
入力・処理・出力に分ける
作りたいものが大きく感じられるときは、入力・処理・出力の3つに分けます。何を材料にして、何を計算・判断し、どんな結果を返すのかを整理する考え方です。
| 要素 | 考えること | 点数を集計する例 |
|---|---|---|
| 入力 | 何を受け取るか | 複数人の点数 |
| 処理 | 何を計算・判断するか | 60点以上の人数を数える |
| 出力 | どんな結果を示すか | 条件に当てはまる人数 |
入力は、キーボードから打ち込むものだけではありません。プログラム内に用意したデータや、別の処理から渡された値も、考え方としては入力になります。
2.アルゴリズムとは、問題を解くための手順
アルゴリズムは、問題を解くために整理された手順です。「点数を順番に調べ、60点以上なら人数を1増やす」という説明も、手順を具体化したものです。
同じ問題でも、解き方が一つとは限りません。まずは正しく動く手順を作り、その後で分かりやすさや処理の回数などを比較していきます。
順次・分岐・反復の3つを押さえる
| 基本構造 | 意味 | 例 |
|---|---|---|
| 順次 | 処理を順番に実行する | 人数を0にする→点数を調べる→結果を表示する |
| 分岐 | 条件によって処理を変える | 60点以上なら人数を1増やす |
| 反復 | 処理を繰り返す | リストにある点数を、一つずつ調べる |
この3つは、短い集計プログラムにも、ゲームやWebアプリにも登場します。用語を覚えるだけでなく、「この処理は何回行われるか」「条件に当てはまらない場合はどうなるか」を考えてみてください。
変数・リスト・関数も、役割と一緒に学ぶ
変数は値を名前で扱うために、リストは複数のデータをまとめるために使います。関数は、まとまりのある処理に名前を付け、呼び出して使う仕組みです。
最初からすべてを一度に理解する必要はありません。「今の人数を覚えておきたいから変数を使う」のように、作るものの中で役割を確かめていきましょう。
3.例題:60点以上の人数を数えてみよう
ここからは、72点・58点・60点・91点という4人分の点数を使います。「60点以上の人数を数える」という、練習用に決めた条件で考えます。
この例では、点数は0〜100の整数として、あらかじめプログラム内に用意します。実際の生徒の成績や個人情報を使う必要はありません。
コードを書く前に、日本語で手順を作る
- 数えた人数を0にする。
- 点数を先頭から一つずつ取り出す。
- 取り出した点数が60点以上なら、人数を1増やす。
- すべての点数を調べ終えたら、人数を表示する。
この時点で、答えが3人になることを手で確認できます。プログラムを動かす前に期待する答えを決めておくと、実行後の結果を比べられます。
Pythonで表すとどうなる?
以下は、Python 3で実行する短い例です。学校や教室で使用しているPython環境があれば、コードを入力して実行してください。WebブラウザーのJavaScript用コンソールでは実行できません。
実行すると、3を表す「3」が表示されます。Pythonでは行頭の字下げにも意味があるため、forやifの内側の空白を保って入力してください。
- scores:点数をまとめたリスト。
- count:条件に当てはまった人数。
- for:点数を一つずつ取り出す繰り返し。
- if:60点以上かを調べる条件分岐。
- count = count + 1:現在の人数に1を足し、その値で更新する処理。
- print(count):最後に人数を表示する処理。
「=」は、このコードでは数学の等式ではなく、右側の値を左側の変数に代入するために使っています。今のcountに1を足して、その結果を新しいcountにする、と読んでみましょう。
途中の値を追うと、仕組みが見えてくる
| 調べる点数 | 60点以上か | 処理後のcount |
|---|---|---|
| 開始前 | まだ調べていない | 0 |
| 72 | はい | 1 |
| 58 | いいえ | 1 |
| 60 | はい | 2 |
| 91 | はい | 3 |
58点のときは人数を増やさず、現在の値をそのまま保っています。このように処理を順番に追うことを「トレース」と呼びます。
答えだけでなく、途中の値を説明できるかも確認しましょう。「なぜ最後に3になるのか」が分かると、条件を変える練習に進みやすくなります。
4.写した後は、一つ変えて、もう一度確かめる
教材のコードを写すことも、書き方に慣れるきっかけになります。ただし、同じものが動いただけでは、自分で変更できるかまでは分かりません。
動いた後に、条件やデータを一つ変えてみましょう。変更前に答えを予想し、実行結果と比べることがポイントです。
例題を使った3つの変更練習
- 基準を変える:60点以上ではなく、80点以上の人数を数える。
- データを変える:点数を追加したとき、結果がどう変わるか確かめる。
- 条件を反対にする:60点未満の人数を数えるように変更する。
最初の点数リストなら、80点以上は1人、60点未満は1人です。どの部分を変えればよいか考え、変更した理由も説明してみてください。
境目の値と、データがない場合を試す
「60点以上」と「60点より大きい」は、60点の扱いが異なります。こうした条件の境目は、間違いを見つけるために確認したいところです。
| 点数のリスト | 期待する人数 | 確認すること |
|---|---|---|
| [59] | 0 | 基準より1小さい場合 |
| [60] | 1 | 基準と同じ場合 |
| [61] | 1 | 基準より1大きい場合 |
| [] | 0 | 点数が一つもない場合 |
| [60, 60] | 2 | 同じ点数でも、それぞれ数えること |
この練習では、文字や範囲外の点数を受け取った場合の処理は実装していません。利用者が入力する仕組みへ広げるときは、受け付ける値と、受け付けない場合の動作も決めます。
5.うまく動かないときは、間違いの種類を分ける
プログラムが期待どおりに動かないとき、すぐに全部を書き直す必要はありません。どこまで動き、何が予想と違ったのかを確かめましょう。
例えば、文法の間違いで実行が止まる場合と、実行できるのに答えが違う場合では、調べる場所が異なります。
| 起きていること | 例 | 確認すること |
|---|---|---|
| 書き方の問題 | コロンや字下げが合っていない | エラーの種類、示された行、その前後 |
| 実行中の問題 | 数値と比較できない文字列を扱っている | 実際に入っている値とデータ型 |
| 手順の問題 | 60点以上なのに、60点を数えていない | 条件式、途中の値、期待する答え |
一つの変更ごとに、結果を確認する
分からないまま何か所も変えると、何が原因で直ったのか分からなくなります。まず原因の候補を一つ考え、変更して、同じデータで確かめましょう。
直った後は、別の入力でも動くかを確認します。「なぜ直ったか」を短く残しておくと、似た問題に出会ったときの手掛かりになります。
6.AIや先生には、答えだけでなく考え方を相談する
分からないことを質問するのは、学習を進めるための方法です。自分の予想、実際の結果、調べたことを伝えると、必要な説明を受けやすくなります。
AIを使う場合も、最初から完成コードだけを求めるのではなく、手順や確認方法のヒントを依頼してみましょう。利用するサービスの年齢条件や、学校・家庭のルールに沿って使ってください。
質問の例
60点以上の人数を数えるプログラムを作っています。点数が59・60・61のとき、答えは2人になると考えましたが、実行すると1人になります。
完成コードを先に示さず、どの条件を確認するとよいかヒントをください。自分で直した後に、確認すべき入力例も教えてください。
AIの説明にも誤りが含まれることがあります。手計算、実行結果、教材や公式資料と比べ、自分でも納得できるかを確認しましょう。
AIがコードを作れる時代に、どの基礎を自分で身につけたいか。コードを読み、変更し、確かめる学び方はこちらでも紹介しています。
AI時代もプログラミング学習は必要?初心者が身につけたい基礎と学び方 記事を読む →7.基礎を、小さな作品につなげる
短い例題に慣れたら、作ってみたいものの一部へ広げていきます。最初から多くの機能をまとめず、「これができたら完成」という条件を一つ決めましょう。
| 作りたいもの | 最初に作る機能 | 使う基礎 |
|---|---|---|
| クイズ | 1問の回答を受け取り、正誤を表示する | 入力、比較、条件分岐 |
| 学習記録 | 数日分の学習時間を合計する | リスト、繰り返し、加算 |
| ミニゲーム | 得点に応じて表示を変える | 変数、条件分岐 |
| 持ち物チェック | 未確認の項目を順番に表示する | リスト、分岐、繰り返し |
「できるようになったこと」で進み具合を見る
学習時間や解いた問題数も記録になりますが、それだけで理解が分かるわけではありません。「結果を予想できる」「条件を変えられる」「間違いの理由を説明できる」といった行動でも確かめます。
- 入力・処理・出力を、自分の言葉で説明できる。
- 短いコードを読み、実行結果を予想できる。
- 条件やデータを一つ変え、結果を確認できる。
- 境目の値や、データがない場合を試せる。
- 困った状況を整理して質問できる。
すべての項目を完璧にしてから作品を作る必要はありません。作品を作る中で基礎へ戻り、もう一度使ってみる進め方もできます。
小さな機能から、実際に操作できるアプリへ進みたい方へ。環境準備・動作確認・公開までの学習手順を紹介しています。
プログラミング未経験から始めるAI開発|環境構築・アプリ作成・公開の学習手順 記事を読む →8.中高生のプログラミング学習で、よくある質問
数学が得意でなくても学べますか?
今回のような基礎的な例は、数の比較や足し算から取り組めます。扱う分野によって必要な数学は変わるので、最初から高度な数学をすべて学ぶ必要はありません。必要になった考え方を、その都度確認していきましょう。
英語の単語や文法を全部覚える必要はありますか?
すべて暗記してから始める必要はありません。よく使う命令を繰り返し使い、分からないものは調べながら進められます。ただし、エラーメッセージを丸ごと無視せず、種類や重要な単語を読み取る練習もしてみてください。
Pythonから始めなければいけませんか?
必須ではありません。この記事では処理の流れを短いコードで示すためにPythonを使っています。学校や教室で使う環境、作りたいもの、相談できる相手に合わせて選んで構いません。
保護者や先生は、どのように手伝えばよいですか?
「どんな結果になると思った?」「どこまでは予想と同じだった?」と、考えを言葉にできる質問をしてみましょう。一方で、操作方法や環境設定で止まっているときは、必要な手助けをし、考える課題に戻れるようにします。
最初から速いアルゴリズムを考えるべきですか?
まずは条件を満たす手順を作り、正しく動くか確認します。その後で、データが増えたときに何回処理するかを比べてみましょう。「正しさ」と「処理の効率」を分けると、改善点を考えやすくなります。
まとめ:小さな手順を、自分で確かめられるようにする
プログラミングの基礎は、命令を知ることに加え、それを使って手順を考え、結果を確かめる中で身につけていきます。順次・分岐・反復を、具体的なデータと結び付けて考えてみましょう。
まずは、短いコードの答えを予想し、動かし、条件を一つ変えるところから始めてください。「動いた」から「なぜ動くか説明できる」へ進むことが、自分のアイデアを形にする土台になります。
参考資料
- Python公式ドキュメント:その他の制御フローツール — if文・for文など、Pythonの書き方を確認する資料。
※公式チュートリアルが難しく感じられる場合は、初心者向け教材と併用してください。例題の人数を数える処理は、通常の入力・境界の値・空のリストなど6パターンで確認しています。
Learning Tools
記事を検索したい方はここから!
記事を検索
関連記事や、今の内容に近いテーマをすぐに検索できます。
例: AI / 情報Ⅰ / Python / 統計 / 資格 / 学習法