プログラムの流れ〜順次実行〜
![tutorial-gear.png](/images/docs/tutorial/tutorial-gear.png)
想定時間:10分
今回の内容
- プログラムは上から順に実行される
プログラム実行の順番
エディターはプログラムを入力する部分です。
エディターに書き込まれたプログラムは、行番号の順番通り、上から順に実行されます。
🗒️覚えよう
エディターに書かれたプログラムは、上から順番に(行番号の順番通りに)実行される
このことは、「順次(実行)」と呼ばれており、プログラミングでとても重要な考え方です。
🗒️覚えよう
上から順にコンピューターが実行していくことを「順次(実行)」という
ただし、「繰り返し」や「条件分岐」「ラベル」を使った場合はただ単に上から実行するだけでない動き方もします。詳しくは別のチュートリアルで説明します。
順次実行をもっと理解しよう
順次実行はとても簡単な仕組みですが、忘れてしまうと意図していた通りのプログラムにならない(論理エラーが起こる)ことがあります。
実例を見て考えてみましょう。
作りたいプログラム
買い物の合計金額を知るプログラム
購入するもの
たまご(1個15円)10個
牛乳(1パック198円)2個
変更前のプログラム
変更前の実行結果
ここまでは、意図したとおりに動くプログラムになっています。論理エラーは起きていません。
追加の買い物をしたときのプログラム修正を考えてみよう
このプログラムを作ってから「実はたまごがあと3個必要だから追加購入して、合計金額が変わった」という状況になったと想定しましょう。
まずは、どんな風に変えたらいいか、自分で考えてみてください。
プログラムをコピー&ペーストしてチャレンジ
以下から、コピー&ペーストボタンを使って「変更前のプログラム」をエディターに移して、たまごを3つ追加購入した際の合計金額を求めるプログラムに修正して実行してみましょう。
加える変更
たまごを追加で3つ購入したので、その分も合計金額に追加したい
変更前のプログラム
cls
tamago = 15 * 10
gyuunyuu = 198 * 2
goukei = tamago + gyuunyuu
// 合計金額を表示
print goukei
今回は、正解を見る前に、順次実行や変数の仕組みを忘れると起こる論理エラーの実例を見てみましょう。
論理エラーが起こる変更例
論理エラーの例での実行結果
5行目でたまごと牛乳の合計金額を計算するより先に、4行目にたまご3個分の値段を計算する式を追加したけれど、なぜか表示された合計金額は追加する前より少なくなっています。
間違った合計金額が出てしまう理由は、「2行目で変数 tamago に入った数値が4行目で上書きされているから」です。
順次実行をするコンピューターは、2行目にたどり着くと「tamago の中身は 15 * 10」だと覚えます。
そのまま3行目の変数 gyuunyuu の中身も覚えて、4行目にたどり着くと、何が起こるでしょうか。
変数 tamago の中身の上書きが起こります。
人間だったら「さっき tamago の中に入っていた15*10は、何にも使わなかったけどいいのかな?」と疑問に思うかもしれません。ですがコンピューターは、上から順に、忠実に仕事をこなしてくれます。
この論理エラーの例では、4行目で tamago に追加の3つ分の金額を追加しているつもりが、tamago の金額を上書きするだけになってしまいました。だから合計金額も変更前より減ります。
たまごを「追加」するならプログラムも「追加」しなくてはならないとは限りません。たぶん、一番簡単な修正例は tamago のかけ算に使う数字を「変更」することです。
簡単な変更で、正しく動く修正例
追加の3つ分を足したらたまごは全部で13個購入しているはずなので、10だった数字を13に変更しています。
もし、4行目に追加する方法で正しく動作するプログラムを作りたかったら、一例としてはこうなります。
4行目に追加する方法で正しく動く修正例
他にもいろいろな修正方法があります。実行結果にこの数字が表示されていたら、正しく修正できたと考えていいでしょう。
正しく修正できた場合の実行画面
今回のおさらい
- エディターに書かれたプログラムは、上から順番に(行番号の順番通りに)実行される
- 上から順にコンピューターが実行していくことを「順次(実行)」という