エラーを使いこなそう~エラーメッセージ~

error_9.png

想定時間:10分

今回の内容

  • エラーメッセージとは
  • エラーメッセージが出たらエラーメッセージ一覧を確認
  • コンピューターには教えられないエラーもある

エラーメッセージとは

前回のチュートリアル「色でわかるエラー」では、エディター画面で確認できる、茶枠や赤文字のエラーを紹介しました。

今回は、それとは少し違うエラー「エラーメッセージ」を紹介します。

エラーメッセージは、エディターにプログラムを入力し、実行ボタンを押してから「実行画面」に言葉で表示されるエラーです。

tutorial-9-1

たとえば「1÷0」の計算結果を表示しようとすると、こんな風に表示されます。

tutorial-9-2

tutorial-9-3

🗒️覚えよう

エラーメッセージは実行画面に言葉で表示される

エラーメッセージの特徴

エラーメッセージには、次のような特徴があります。

どこが間違っているか言葉で教えてくれる

エラーメッセージでは、何行目に、どんなエラーが起こっているかを簡単に言葉で教えてくれます。

🗒️覚えよう

エラーメッセージは、何行目にどんなエラーが起こっているかを教えてくれる

エラーメッセージ一覧で確認すると原因や対処法が分かる

エラーメッセージが出たらプログラマーズガイドのエラーメッセージで、原因と対処法を調べましょう。

tutorial-9-4

エラーメッセージのページの目次から、実行画面に表示されたエラーメッセージと同じ内容のものを探して、そのページを参照してください。

エラーメッセージ一覧はプログラマーズガイドに収録されています。

tutorial9-error.gif

プログラマーズガイドの「エラーメッセージ」のページを開いたら、ドキュメントを別タブで開いてください。

そうすると、目次が現れてエラーメッセージを探しやすくなります。

tutorial-9-5

tutorial-9-6

🗒️覚えよう

エラーメッセージが出たら、プログラマーズガイドの エラーメッセージ で、原因と対処法を調べる

実行はエラーメッセージ表示の原因となった行で終わっている

プログラムの実行は、エラーメッセージの原因となった行で終わっています。

tutorial-9-7

tutorial-9-8

tutorial-9-9

1度にひとつしか表示されない

エラーメッセージの原因となった行で実行は止まっているので、それより下の行にあるエラーについてメッセージは表示されません。また、同じ行にエラーの原因が複数あっても、一度に表示されるエラーメッセージはひとつまでです。

エラーの原因を調べて修正してみよう

では、実際にエラーメッセージに対応する練習をしましょう。

コピーボタンとペーストボタンを使って、下のプログラムをエディターにうつし、エラーをなおしてください。

cls 4
ringo = 200
kosuu = random(3,1)
goukei = ringo * kosuu
print kosuu
print goukei

プログラムの内容

1つ200円のリンゴを、1~3のランダムな個数購入したときの、購入数と合計金額を表示するプログラム

1行目:cls 命令を使って実行画面(テキスト画面)を消去しています

2行目:ringo という変数に200を代入しています

3行目:kosuu という変数に random 関数を使って、1~3のランダムな数値を代入しています

4行目:goukei という変数に ringo と kosuu を掛け算した数値を代入しています

5行目:kosuu の数値を表示しています

6行目:goukei の数値を表示しています

手順

  1. 実行ボタンを押す
  2. 実行画面に表示されたエラーメッセージを確認する
  3. エラーメッセージ一覧からエラーの原因と対処法を確認する
  4. エラーが起こっている行数を確認する
  5. その行のプログラムを確認する
  6. 必要に応じて、そのプログラムに含まれている命令や関数の書き方を 命令/関数辞書 で確認する

答え合わせ

<1つ目のエラーメッセージ>

tutorial-9-10

  1. エラーメッセージ一覧の「命令の呼び出し方が間違っています」からエラーの原因と対処法を確認

→これだけでは何が違うのか分からないので、使われている cls 命令を調べる

  1. cls 命令 の文法を確認

tutorial-9-11

→ cls のあとにつく数字には、4は存在しないみたい…?

テキスト画面を消去したいときは、どの数値を使えばいいんだろう?

正解例

tutorial-9-12

または、「cls」「cls 3」とした場合も正解とします。

※ テキスト画面・グラフィック画面・スプライトについては今後のチュートリアルで学習します

<2つ目のエラーメッセージ>

tutorial-9-13

  1. エラーメッセージ一覧の「関数の呼び出し方が間違っています」からエラーの原因と対処法を確認

→ これだけでは何が違うのか分からないので、使われている random 関数を調べる

  1. random 関数 の文法を確認

tutorial-9-14

→ random 関数の中の数値は、先に最小値・後に最大値を指定しなければいけないみたい…

正解

tutorial-9-15

エラーメッセージは、何行目に間違いがあるかだけでなく、エラーメッセージ一覧 を確認することで対処法まで確認できます。

実行画面にメッセージが現れたら、エラーメッセージ一覧 を確認するクセをつけましょう。よく使うので、一覧のページをブックマークすることもおすすめです。

プログラミングの手順とエラーの関係

プログラミングの基本手順は「エディターに書き込む→実行ボタンを押す→期待通りか確認する」の繰り返しです。

Jasmine Teaが教えてくれるエラーは、このうち書き込む手順と、実行ボタンを押した手順のときに表示されます。それぞれの手順でエラーが出ていないかチェックすることを習慣にしましょう。

🗒️覚えよう

エディターにプログラムを書き込んだら…
→茶枠や赤文字(色でわかるエラー)が出ていないかチェック!

実行ボタンを押したら…
→実行画面にエラーメッセージが表示されてないかチェック!

コンピューターが教えられないエラー

ここまで、コンピューターが教えてくれるエラーについて学んできました。

コンピューターが気付くことのできる間違いは、一定のルールから外れているものです。これらを文法エラーと呼びます。コンピューターは文法エラーに気付くのが得意で、すぐに教えてくれます。

一定のルールから外れている文法エラーの例

  • 書き方が正しくない
  • 必要な情報が足りない
  • 必要でない情報がある
  • 使える範囲でない数値や文字などを使おうとする

これらがあると、そもそもコンピューターは実行をおこなえません。

一方、コンピューターが実行できてしまう間違いもあります。これらは論理エラーと呼ばれ、コンピューターが教えることのできないものです。論理エラーの例を見てみましょう。

論理エラーの例

作りたいのは、1個200円のリンゴを1~3個のうちランダムな個数買うときの合計金額を計算するプログラムです。

❌ringo に代入する値段を間違えている

tutorial-9-16

本来 ringo に代入すべきなのは 2000 ではなく 200

❌goukei に代入する金額を ringo / kosuu とわり算にしてしまっている

tutorial-9-17

本来は ringo * kosuu とかけ算をする

上の例はどちらも、正しい合計金額を求めることができないので、期待通りのプログラムではありません。けれど、文法上は正しいので、コンピューターが教えてくれる文法エラーはありません。

こうした、コンピューターとしては問題がないけれど、本来やりたいことと違ってしまう間違いについては、人間が気付くしかありません。実行できたから期待通りに動いているとは限らないので、注意してください。

🗒️覚えよう

コンピューターが教えてくれるのは「文法エラー」だけ
実行できている=エラーがないとは限らず、論理エラーは起こっている可能性がある

今回のおさらい

  • エラーメッセージは実行画面に言葉で表示される
  • エラーメッセージは、何行目にどんなエラーが起こっているかを教えてくれる
  • エラーメッセージが出たら、プログラマーズガイドのエラーメッセージで、原因と対処法を調べる
  • エディターにプログラムを書き込んだら、色でわかるエラーをチェック
  • 実行ボタンを押したら、エラーメッセージをチェック
  • コンピューターが教えてくれるのは「文法エラー」だけ
  • 実行できている=エラーがないとは限らず、論理エラーは起こっている可能性がある