Im letzten Kapitel haben wir ein Programm geschrieben, das Karel hilft, einen einfachen Felsvorsprung zu besteigen:
Obwohl die ErsterKarel Das obige Programm zeigt, dass es möglich ist, die turnRight Die Bedienung erfolgt nur mit den in Karel integrierten Befehlen. Das daraus resultierende Programm ist konzeptionell nicht besonders klar. In Ihrer mentalen Programmgestaltung dreht sich Karel nach rechts, wenn es die Spitze des Felsvorsprungs erreicht. Die Tatsache, dass Sie drei biegenSieLinksAb-Befehle verwenden müssen, ist ärgerlich. Es wäre viel einfacher, wenn Sie einfach sagen könnten turnRight() und lassen Sie Karel diesen Befehl verstehen. Das resultierende Programm wäre nicht nur kürzer und einfacher zu schreiben, sondern auch wesentlich einfacher zu lesen.
Glücklicherweise ermöglicht die Programmiersprache Karel die Definition neuer Befehle, indem einfach neue Methodendefinitionen eingefügt werden. Immer wenn Sie eine Folge von Karel-Befehlen haben, die eine nützliche Aufgabe ausführen, wie z. B. nach rechts drehen, können Sie eine neue Methode definieren, die diese Folge von Befehlen ausführt. Das Format zum Definieren einer neuen Karel-Methode entspricht weitgehend der Definition von run in den vorhergehenden Beispielen ist dies eine eigene Methodendefinition. Eine typische Methodendefinition sieht folgendermaßen aus:
private void Name () {
Befehle, die den Hauptteil der Methode ausmachen
}
In diesem Muster steht name für den Namen, den Sie für die neue Methode ausgewählt haben. Um die Definition zu vervollständigen, müssen Sie lediglich die Befehlsfolge in den Zeilen zwischen den geschweiften Klammern eingeben. Zum Beispiel können Sie definieren turnRight wie folgt:
private void turnRight() {
turnLeft();
turnLeft();
turnLeft();
}
Ebenso könnten Sie ein neues definieren turnAround Methode wie folgt:
private void turnAround() {
turnLeft();
turnLeft();
}
Sie können den Namen einer neuen Methode genau wie die in Karel integrierten Befehle verwenden. Zum Beispiel, sobald Sie definiert haben turnRight könnten Sie die drei Befehle biegenSieLinksAb in der ersetzen SteigAufKarel Programm mit einem einzigen Aufruf an die turnRight Methode. Hier ist eine überarbeitete Implementierung des verwendeten Programms turnRight :
Es gibt natürlich einen offensichtlichen Unterschied zwischen den Definitionen der run und turnRight Methoden im obigen Programm: die run Methode ist markiert als public im Kontrast zu turnRight , die markiert ist als private . Der Unterschied zwischen diesen beiden Bezeichnungen besteht darin, dass öffentliche Methoden von außerhalb des Programms aufgerufen werden können, während private Methoden dies nicht können. Die run Methode muss öffentlich sein, da die Karel-Umgebung in der Lage sein muss, einen run Befehl run , um die Dinge zum Laufen zu bringen. Es ist im Allgemeinen eine gute Programmierpraxis, Definitionen nach Möglichkeit geheim zu halten.
Eine Befehlsgruppe zwischen zwei geschweiften Klammern { } heißt a Codeblock . Der Hauptteil Ihres Programms ist ebenso wie der Hauptteil einer Methode ein Codeblock. Beachten Sie, wie der Inhalt eines Codeblocks alle um eine Registerkarte eingerückt ist. Dies ist stilistisch wichtig, da der Mensch leicht erkennen kann, welche Codezeilen sich in einem bestimmten Block befinden.
Sie können beliebig viele Methoden definieren. Sie sollten alle nacheinander in Ihren Programmcode-Block geschrieben werden. Sie können keine Methode innerhalb einer anderen Methode definieren.