En el último capítulo escribimos un programa para ayudar a Karel escalar una simple repisa:
A pesar de PrimeroKarel programa anterior demuestra que es posible realizar la girarDerecha Al utilizar solo los Karel incorporados de Karel , el programa resultante no es particularmente claro conceptualmente. En su diseño mental del programa, Karel gira a la derecha cuando llega a la parte superior de la cornisa. El hecho de que tenga que usar tres comandos girarIzquierda para hacerlo es molesto. Sería mucho más simple si pudieras simplemente decir girarDerecha() y tener Karel entender este comando. El programa resultante no solo sería más corto y más fácil de escribir, sino también mucho más fácil de leer.
Afortunadamente, el Karel programación Karel hace posible definir nuevos comandos simplemente mediante la inclusión de nuevas definiciones de métodos. Siempre que tenga una secuencia de Karel comandos que realice alguna tarea útil, como girar a la derecha, puede definir un nuevo método que ejecute esa secuencia de comandos. El formato para definir un nuevo método Karel es muy similar a la definición de run en los ejemplos anteriores, que es una definición de método por derecho propio. Una definición de método típica se ve así:
private void nombre () {
Comandos que conforman el cuerpo del método.
}
En este patrón, el nombre representa el nombre que ha elegido para el nuevo método. Para completar la definición, todo lo que tiene que hacer es proporcionar la secuencia de comandos en las líneas entre las llaves. Por ejemplo, puedes definir girarDerecha como sigue:
private void girarDerecha() {
girarIzquierda();
girarIzquierda();
girarIzquierda();
}
Del mismo modo, podría definir una nueva mediaVeulta método como este:
private void mediaVeulta() {
girarIzquierda();
girarIzquierda();
}
Puede usar el nombre de un nuevo método como cualquiera de los Karel de Karel . Por ejemplo, una vez que haya definido girarDerecha , puede reemplazar los tres comandos girarIzquierda en el IntensificarKarel programa con una sola llamada a la girarDerecha método. Aquí hay una implementación revisada del programa que usa girarDerecha :
Existe, por supuesto, una diferencia obvia entre las definiciones de los run y girarDerecha métodos en el programa anterior: el run el método está marcado como public en contraste con girarDerecha , que está marcado como private . La diferencia entre estas dos designaciones es que los métodos públicos pueden invocarse desde fuera del programa, mientras que los métodos privados no pueden. El método run debe ser público porque el entorno Karel debe poder emitir un comando run para que todo run . En general, es una buena práctica de programación mantener las definiciones privadas siempre que sea posible.
Un grupo de comandos entre dos llaves. { } se llama un bloque de código . El cuerpo de su programa es un bloque de código, al igual que el cuerpo de un método. Observe que el contenido de un bloque de código está sangrado en una sola pestaña. Esto es importante desde un punto de vista estilístico, ya que facilita a los humanos saber qué líneas de código están en un bloque determinado.
Puedes definir tantos métodos como quieras. Todos deben escribirse uno tras otro dentro del bloque de código de su programa. No puedes definir un método dentro de otro método.