もっと詳しく知る

第3章:新しいメソッドを定義する


最後の章で、Karelが簡単な棚を登るのを手助けするプログラムを書きました。

例:最初のカレル

にもかかわらず 最初のカレル 上記のプログラムは、実行することが可能であることを示しています turnRight Karelの組み込みコマンドのみを使用して操作した場合、結果として得られるプログラムは概念的には特に明確ではありません。プログラムのあなたの精神的なデザインでは、カレルはそれが棚の頂上に達すると右に曲がります。 3つのturnLeftコマンドを使用しなければならないという事実は厄介です。あなたが単純に言うことができればそれははるかに簡単になります turnRight() そしてカレルにこの命令を理解させなさい。結果として得られるプログラムは、短くて書くのが簡単になるだけでなく、読むのもかなり簡単になります。

新しいコマンドの定義

幸いなことに、Karelプログラミング言語は新しいメソッド定義を含めることによって新しいコマンドを定義することを可能にします。右に曲がるなど、便利なタスクを実行する一連のKarelコマンドがあるときはいつでも、その一連のコマンドを実行する新しいメソッドを定義できます。新しいKarelメソッドを定義するためのフォーマットは、の定義とほとんど同じです。 run 上記の例では、それ自体がメソッド定義です。一般的なメソッド定義は次のようになります。

   private void () {
メソッドの本体を構成するコマンド
   }

このパターンでは、nameは新しいメソッドに選択した名前を表します。定義を完成させるために、あなたがしなければならないのは中括弧の間の行にコマンドのシーケンスを提供することだけです。たとえば、次のように定義できます。 turnRight 次のように:

   private void turnRight() {
turnLeft();
turnLeft();
turnLeft();
   }

同様に、新しいものを定義できます。 turnAround このような方法:

   private void turnAround() {
turnLeft();
turnLeft();
   }

Karelの組み込みコマンドのように新しいメソッドの名前を使うことができます。たとえば、一度定義したら turnRight では、3つのturnLeftコマンドを ステップアップカレル 1回の呼び出しでプログラム turnRight 方法。これを使用するプログラムの修正された実装はここにあります turnRight

もちろん、の定義には明らかな違いが1つあります。 run そして turnRight 上記のプログラムのメソッド: run メソッドはとしてマークされています public とは対照的に turnRight としてマークされている private 。これら2つの指定の違いは、パブリックメソッドはプログラムの外部から呼び出せるのに対し、プライベートメソッドは呼び出せないことです。 runメソッドはrunする必要があります。これは、Karel環境が、問題を解決するためにrunコマンドを発行できる必要があるためです。可能な限り定義を非公開にしておくのが一般的に良いプログラミング方法です。

メソッドコードブロック

2つの中括弧の間のコマンドのグループ { } と呼ばれる コードブロック 。プログラム本体は、メソッド本体と同じコードブロックです。コードブロックの内容がすべて1タブ内でインデントされていることに注意してください。これは、特定のブロック内にコードのどの行があるかを人間が簡単に認識できるため、スタイル上重要です。

必要なだけメソッドを定義できます。それらはすべてあなたのプログラムコードブロックの中に次々に書かれるべきです。他のメソッドの中にメソッドを定義することはできません。


次の章