Capítulo 2: Programación Karel


El estilo más simple del programa Karel usa texto para especificar una secuencia de comandos incorporados que deben ejecutarse cuando el programa se ejecuta. run . Considere el programa simple Karel continuación. El texto de la izquierda es el programa. El estado del Karel de Karel se muestra a la derecha:

Presiona el botón "Ejecutar" para ejecutar el programa. Los programas se escriben típicamente en una aplicación especial llamada Entorno de Desarrollo Integrado (IDE) y la mayoría de los programas Karel están escritos en un IDE llamado PyCharm. Como un IDE, este lector tiene la capacidad de ejecutar programas para ayudarloverCómo funcionan las cosas a medida que aprendes.

El programa se compone de varias partes. La primera parte consta de las siguientes líneas:

# Archivo: Primero Karel .py
# -----------------------------
# El programa Primero Karel define un " main "
# función con tres comandos. Estos comandos causan
# Karel a moverse hacia adelante un bloque, tome un cono
# y luego moverse hasta la siguiente esquina.

Estas líneas son un ejemplo de una comentario , que es simplemente texto diseñado para explicar el funcionamiento del programa a lectores humanos. Los comentarios tanto en Karel como en Python comienzan con los caracteres # e incluir el resto de la línea. En un programa simple, los comentarios extensos pueden parecer tontos porque el efecto del programa es obvio, pero son extremadamente importantes como medio para documentar el diseño de programas más grandes y complejos. La segunda parte del programa es la línea:

from karel.stanfordimport *

Esta línea solicita la inclusión de todas las definiciones de la karel.stanford biblioteca. Esta biblioteca contiene las definiciones básicas necesarias para escribir programas Karel , como las definiciones de las operaciones estándar moverse() y recoger_cono() . Debido a que siempre necesita acceso a estas operaciones, cada programa Karel que escriba incluirá este comando de importación antes de escribir el programa real.

La parte final del programa Karel consta de la siguiente definición de función:

   def main():
      moverse()
      recoger_cono()
      moverse()

Estas líneas representan la definición de un nuevo función , que especifica la secuencia de pasos necesarios para responder a un comando. Como en el caso del PrimeroKarel programa en sí, la definición de la función consta de dos partes que se pueden considerar por separado: la primera línea constituye el encabezado de la función y el código sangrado siguiente es el cuerpo de la función. Si ignora el cuerpo por ahora, la definición de la función se ve así:

   def main():
cuerpo de la definición de función

La primera palabra en el encabezado de la función, def , es parte de la estructura sintáctica de Python. Dice que está creando una nueva función. La siguiente palabra en la línea del encabezado especifica el nombre de la nueva función, que en este caso es main . Definir una función significa que Karel ahora puede responder a un nuevo comando con ese nombre. los main() El comando juega un papel especial en un programa Karel . Cuando inicia un programa Karel , crea una nueva instancia Karel , agrega ese Karel a un mundo que usted especifique y luego emite el main() mando. El efecto de ejecutando el programa está definido por el cuerpo del main() función, que es una secuencia de comandos que el robot ejecutará en orden. Por ejemplo, el cuerpo del main() función para el PrimeroKarel el programa es:

   moverse()
   recoger_cono()
   moverse()

Por lo tanto, si el estado inicial del mundo coincide con el ejemplo dado en el Capítulo 1, Karel primero moverse s hacia adelante en la esquina que contiene cono , recoge ese cono y finalmente moverse s hacia adelante hasta la esquina justo antes de la pared, como se muestra en el siguiente diagrama de antes y después:

Antes de:
Después:

Resolviendo un problema más interesante.

los PrimeroKarel El programa definido anteriormente no hace mucho todavía. Intentemos hacerlo un poco más interesante. Suponga que el objetivo no es simplemente lograr que Karel recoja el cono sino que moverse el cono desde su posición inicial en la 2ª columna y la 1ª fila hasta el centro de una repisa. Por lo tanto, su próxima tarea es definir un nuevo programa Karel que Karel la tarea ilustrada en este diagrama:

Antes de:
Después:

Los primeros tres comandos del nuevo programa, los que moverse reenvían, recogen el cono y luego moverse hasta la repisa, son los mismos que antes:

   moverse()
   recoger_cono()
   moverse()

Desde aquí, el siguiente paso es el girar izquierda para comenzar a subir la cornisa. Esa operación es fácil, porque Karel tiene un girar_izquierda() comando en su repertorio estándar. Ejecutando un girar_izquierda() El comando al final de la secuencia de comandos anterior deja Karel mirando al norte en la esquina de la 1ª fila y la 3ª columna. Si Karel luego ejecuta un moverse() comando, será moverse norte para alcanzar la siguiente posición:

Desde aquí, lo siguiente que debe hacer es tomar Karel a girar derecha para que vuelva a mirar hacia el este. Si bien esta operación es conceptualmente tan fácil como obtener Karel a girar izquierda , existe un pequeño problema: el lenguaje de Karel incluye un girar_izquierda() comando, pero no girar_derecha() mando. Es como si comprara el modelo económico y ahora descubriera que le faltan algunas características importantes.

En este punto, tienes tu primera oportunidad de empezar a pensar como un programador. Tiene un conjunto de comandos, pero no exactamente el conjunto que necesita. ¿Qué puedes hacer? ¿Puedes lograr el efecto de un girar_derecha() comando usando solo las capacidades que tiene? La respuesta, por supuesto, es sí. Puede lograr el efecto de girar a la derecha girando a la izquierda tres veces. Después de tres giros a la izquierda, Karel estará mirando en la dirección deseada. Desde aquí, todo lo que necesita hacer es programar Karel a moverse hasta el centro de la repisa, dejar caer cono y luego moverse hacia la posición final. Aquí hay una implementación completa de un programa que realiza toda la tarea:


Siguiente capítulo