プログラムの前に、手順を作る
アルゴリズムとは、問題を解くための手順を、順番に書いたものです。プログラムを書く前に手順を作ると、途中で迷わなくなります。
大学の売店が、3日分の売上の平均を知りたいとします。レジの数字を見て暗算するときも、頭の中では手順を踏んでいます。
このレッスンのゴール
メモ
問題を手順に分け、その手順をトレース表で追うことができる。
キーワード
| ことば | いみ | れい |
|---|---|---|
| アルゴリズム | 問題を解く手順を、順番に書いたもの | |
| 分解 | 大きな問題を、小さな手順に分けること | |
| 疑似コード | 人間が読むための、手順の書き方 | |
| 変数 | 値に名前をつけて、しまっておく箱 | total |
| トレース表 | 1行ずつ実行して、変数の値を書きとめる表 | |
| バグ | プログラムの中の間違い |
学生が入力するセルは、このプレビューでは空白です。
大きな問題は、小さな手順に分解する
分解とは、大きな問題を小さな手順に分けることです。小さな手順なら、1つずつ確かめられます。
平均の問題は、3つに分かれます。売上を用意する。合計を出す。個数で割る。
ラボの端末で、Python を1行動かす
このモジュールの課題は、ラボの Linux マシンで進めます。マシンには Python が入っています。
python3 -c の後ろに、引用符で囲んだ Python の文を書くと、その1行が実行されます。次の Run で、3日分の平均を計算します。
平均を計算する
python3 -c "print((120 + 90 + 150) / 3)"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
疑似コードは人間が読む手順
疑似コードは、プログラミング言語の決まりを気にせず、手順を日本語で書いたものです。1行に1つのことだけ書きます。
手順が決まれば、Python に直すのは難しくありません。次のコードは、疑似コードの1行が、Python の1行になっています。
手順を Python に直す
# 3日分の売上(円)の平均を、手順どおりに求めます。
day1 = 6000
day2 = 7500
day3 = 9000
total = day1 + day2 + day3
average = total / 3
print("合計:", total)
print("平均:", average)
# day3 を 12000 に変えて、もう一度実行しましょう。
トレース表で、変数の動きを追う
トレース表は、プログラムを1行ずつ実行して、変数の値を書きとめる表です。実行しなくても、結果が予想できます。
次の表は、さっきのプログラムを追ったものです。空欄は、まだ値が入っていないことを表します。
例: トレース表
| 実行した行 | day1 | day2 | day3 | total | average |
|---|---|---|---|---|---|
| day1 = 6000 | 6000 | ||||
| day2 = 7500 | 6000 | 7500 | |||
| day3 = 9000 | 6000 | 7500 | 9000 | ||
| total = day1 + day2 + day3 | 6000 | 7500 | 9000 | 22500 | |
| average = total / 3 | 6000 | 7500 | 9000 | 22500 | 7500.0 |
学生が入力するセルは、このプレビューでは空白です。
よくある間違い
注意
「コンピュータは、やりたいことを察してくれる」と考える人がいます。実際は、書いた手順をそのとおりに1行ずつ実行するだけです。手順が1つ抜ければ、抜けたまま動きます。トレース表で、1行ずつ確かめましょう。