Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Karel Cap 1 y 2 PDF
Karel Cap 1 y 2 PDF
1
Karel ha sido nombrado así en honor del dramaturgo checoeslovaco Karel Capek, quien popularizó la palabra
"robot" en su obra R.U.R. (Rossum's Universal Robots). La palabra "robot" se deriva de la palabra checoeslovaca
"robots" que significa "trabajo forzado".
CAPÍTULO DOS
Instrucciones
primitivas y programas simples
A partir de esta definición se puede ver que Karel ejecuta una instrucción avanza
ya sea moviéndose hacia adelante (cuando el espacio al frente está libre hasta la
siguiente esquina) o efectuando un paro por error (cuando el espacio al frente está
bloqueado). Ambas situaciones se ilustran en la siguiente página. En la figura 2-1 se
muestra la ejecución con éxito de una instrucción avanza. La sección de pared mostrada
está más allá del rango de visión de Karel, o sea media cuadra, y por lo tanto no puede
impedir su movimiento. En contraste, la figura 2-2 muestra un intento fallido de
movimiento. Cuando Karel ejecuta una instrucción avanza en esta situación, detecta una
sección de pared que se interpone directamente en su trayectoria. Aplicando su instinto
de conservación, Karel ejecuta esta instrucción avanza efectuando un paro por error.
La segunda instrucción primitiva que modifica la posición de Karel es gira-
izquierda. Esta instrucción cambia la dirección hacia la cual está volteando Karel, pero
no altera su posición.
Figura 2-2: La ejecución de esta instrucción avanza provoca un paro por error
Karel inicia siempre sus tareas en una esquina, de cara hacia el norte, el sur, el
este o el oeste. No puede desplazarse a distancias equivalentes a fracciones de una
cuadra o girar en ángulos distintos a 90°. Por lo tanto, aunque tanto avanza como gira-
izquierda cambian su posición, después de ejecutar cualquiera de estas instrucciones
Karel se encontrará todavía en una esquina y continuará estando de cara a cualquiera de
los puntos cardinales.
El diseñador de Karel no incluyó una instrucción gira-a-la-derecha a propósito.
Si se añadiera una instrucción gira-a-la-derecha a la lista de instrucciones primitivas de
Karel, ¿le permitiría esto efectuar alguna tarea que no pudiera ejecutar en caso de no
contar con dicha instrucción? Si el lector lo piensa un momento (y aplica una dosis
adecuada de perspicacia), se dará cuenta de que la instrucción gira-a-la-derecha no es
indispensable; no le permite a Karel llevar a cabo ninguna tarea nueva. La observación
clave es que Karel puede lograr el equivalente a una instrucción gira-a-la-derecha
ejecutando tres instrucciones gira-izquierda.
Los zumbadores son tan pequeños que Karel puede pasar sobre ellos;
únicamente las secciones de pared y las paredes limítrofes pueden bloquear su
movimiento.
INICIAR-PROGRAMA
INICIA-EJECUCION
avanza;
avanza;
toma-zumbador;
avanza;
gira-izquierda;
avanza;
avanza;
deja-zumbador;
avanza;
apagate
TERMINA-EJECUCION
FINALIZAR-PROGRAMA
2.4.1. Ejecución de un programa
¿Qué se debe hacer para lograr que Karel ejecute este programa? Primero, se
activa a Karel oprimiendo el botón de encendido. Al hacer esto, se conecta el suministro
de energía a Karel y queda listo para recibir y memorizar un programa. A continuación
se lee el programa a Karel, asegurándose de incluir todas las palabras y signos de
puntuación. En este ejemplo se empieza por leer: "INICIAR-PROGRAMA, INICIA
EJECUCION, avanza punto y coma avanza punto y coma levanta un zumbador punto y
coma avanza punto y coma gira a la izquierda ..." Desafortunadamente, no se pueden
comunicar a Karel las sangrías del programa; esto es únicamente en beneficio del
programador. Mientras se lee el programa a Karel, él lo va memorizando, pero no
comienza a ejecutar las instrucciones que contiene.
Cuando ya se ha terminado de leerle el programa a Karel, se establece primero la
situación inicial añadiendo las secciones de pared y los zumbadores requeridos al
mundo de Karel. A continuación, se oprime el botón Ejecutar-Programa, el cual indica a
Karel que debe comenzar a ejecutar el programa. En este momento, Karel asume el
control completo del programa y no se puede afectar sus acciones nuevamente sino
hasta que se apague. Si el programa contiene errores, hay que esperar a que éstos se
presenten antes de corregir el programa y leérselo nuevamente a Karel.
¿Cómo ejecuta Karel un programa? Las reglas son bastante sencillas; Karel
ejecuta en forma secuencial cada una de las instrucciones entre las palabras INICIA-
EJECUCION y TERMINA-EJECUCION. Esto se efectúa, sin omitir ninguna
instrucción, en un orden estricto de arriba hacia abajo. Karel continúa ejecutando las
instrucciones hasta que aparezca una instrucción apágate o si se efectúa un paro por
error.
Por supuesto, Karel no es un robot real, así que no se le puede leer un programa
y ver cómo lo ejecuta. Para determinar qué es lo que hace un programa, hay que simular
la forma en que Karel lo ejecuta. Simular un programa robot significa que se debe
ejecutar en forma sistemática el programa exactamente de la forma en que Karel lo
ejecutaría, registrando cada una de las acciones que se llevan a cabo. Se puede simular
manualmente un programa robot utilizando marcas en una hoja de papel (representando
a Karel y a su mundo). Con el fin de llegar a ser programadores eficientes, es necesario
entender exactamente cómo ejecuta Karel los programas robot. La habilidad para
simular el comportamiento de Karel en forma rápida y correcta es una capacidad
importante que se debe adquirir. . .
Ahora ya se puede simular la ejecución del programa por Karel en la situación
inicial. Se presiona el botón de encendido de Karel, se le lee el programa, delinea el
mundo y oprime su botón Ejecutar-Programa. Karel inicia la ejecución del programa en
la instrucción avanza colocada inmediatamente después de las palabras INICIA-
EJECUCION. Karel ejecuta esta instrucción moviéndose una cuadra hacia el este,
llegando a Calle Dos y Avenida Tres. A continuación, ejecuta la siguiente instrucción
avanza; esto provoca que Karel se mueva hacia la misma esquina en que se encuentra el
zumbador. Enseguida Karel ejecuta con éxito la instrucción toma-zumbador. Continúa
ejecutando la siguiente instrucción avanza, la que lo lleva a la esquina de la Calle Dos y
la Avenida Cinco. En este lugar Karel ejecuta la instrucción gira-izquierda; esta
instrucción hace que quede de cara hacia el norte. Ejecuta las siguientes dos
instrucciones avanza, después de las cuales se encuentra en la esquina de la Calle
Cuatro y la Avenida Cinco, en donde Karel ejecuta a continuación la instrucción deja-
zumbador. La última instrucción avanza lo dirige una cuadra más hacia el norte, a la
Calle Cinco y Avenida Cinco. Finalmente, Karel ejecuta la instrucción apágate,
completando el programa y efectuando la tarea requerida. De esta manera, se ha
verificado que el programa es correcto a través de la simulación.
INICIAR-PROGRAMA
INICIA-EJECUCION
avanza;
avanza;
toma-zumbador;
avanza;
gira-izquierda;
avanza;
avanza;
coloca zumbador;
avanza;
apagate
TERMINA-EJECUCION
FINALIZAR-PROGRAMA
2.7 Problemas
El propósito de este grupo de problemas es probar sus conocimientos respecto a
la forma y contenido de programas robot simples. Los programas que se pide que sean
escritos son extensos pero no complicados. Consulte el programa y la explicación de la
sección 2.4 en cuanto a reglas y ejemplos de puntuación y gramática correctos.
Verifique que los programas sean correctos simulándolos con Karel colocado en la
situación inicial adecuada.
1. Encienda a Karel en la situación inicial que se muestra en la figura 2-4
y simule la ejecución del programa que se indica a continuación. La
tarea de Karel es encontrar el zumbador, levantarlo y apagarse. Dibuje
un mapa de la situación final, indicando los puntos en donde se
encuentre un error. Si ocurre un error de ejecución o de intento,
indique la forma en que corregiría el programa. Este programa no
tiene errores de sintaxis o lexicológicos.
INICIA-EJECUCION;
INICIAR-PROGRAMA
avanza;
avanza
toma-zumbador;
avanza;;
gira-izquierda;
avanza;
avanza;
gira-a-la-derecha;
deja-zumbador;
avanza;
apagate;
TERMINA-EJECUCION
FINALIZAR-PROGRAMA;
Figura 2-7: Situación inicial para la tarea dé recoger los artículos tirados
1
INICIA-EJECUCION no siempre sigue directamente a INICIAR-PROGRAMA. En el siguiente
capitulo se aprenderá qué es lo que puede colocarse entre estas líos palabras reservadas.
2
Antaño, los magos podían controlar los objetos inanimados si conocían su "verdadero” nombré.
Desafortunadamente los nombres verdaderos de los errores de programación se perdieron hace muchos
años, pero los nombres "aproximados”, que se estudian en esta sección, ayudan a que uno se concentre en
la identificación y corrección de errores en los programas.