Está en la página 1de 64

PREÁMBULO

Estimados estudiantes:

Cuando creé RUR-PLE, lo hice para que fuera un proyecto de programación divertido con la
esperanza de usarlo para enseñarles a mis dos hijos. Decidí que fuese gratuito y estuviera
disponible para todos, para que otras personas también pudieran usarlo.
En principio, pensé que quizás unos pocos estudiantes podrían usarlo. Desde entonces, una gran
cantidad de estudiantes de muchos países lo han usado. Sin embargo, fue una gran sorpresa y un
gran honor cuando Samsung se comunicó conmigo para informarme que habían elegido RUR-PLE
como herramienta para enseñarles el pensamiento computacional a muchos de ustedes. Lo que más
me impresionó fue la forma en la que han incorporado las ideas de RUR-PLE en un libro tan
interesante y divertido que presenta las ideas de una forma que hace que aprender sea mucho más Andre Roberge es un físico cuyo pasatiempo es la programación. Después de
fácil. obtener su doctorado, desarrolló varios programas de computadora (incluido RUR-
PLE) mientras trabajaba como profesor en tres universidades, como la Universite
Aun así, incluso con la ayuda de este libro visual, cuando empiecen a aprender con RUR-PLE, Sainte-Anne en Canadá, de la que ha sido presidente durante los últimos 10 años.
esperen sorprenderse con el comportamiento del robot: la forma en que hace exactamente lo que le En 2002, recibió el premio Queen Elizabeth Jubilee, y actualmente enseña Física e

indicas y no lo que quisiste decirle. Un estudiante que usa RUR-PLE le dijo a su maestro: “¡Es tan Hidráulica en la Universite Sainte-Anne. Al mismo tiempo, es padre de dos niños
que también estudian Hidráulica.
lógico y tan frustrante a la vez!”.

Pronto aprenderás que escribir un programa que funciona exactamente como lo planeaste es una de
las sensaciones más gratificantes del mundo. La programación por computadora es divertida y te
ayuda a desarrollar habilidades de pensamiento computacional. Quizás, algún día uses estas
habilidades para crear algo que mis hijos o nietos en Canadá puedan aprender.

¡Feliz programación!

Andre Roberge
Canadá
Cómo usar el material
La “Bienvenido al mundo Rurple” está formado por 12 contenidos de aprendizaje e incluye una tarea Comprensión En general,
En general, este
este libro
libro estáestá formado
formado por historias
por historias que interés
que generan generan interés
en los en losyestudiantes
estudiantes que ayudan ayentender
que
composición práctica llamada “Práctica de manipulación de robots” que te ayudará a entender. Como tareas que el de la lección ayudan a entender mediante narraciones. El aprendizaje de los contenidos y las tareas de la misión
mediante narraciones. El aprendizaje de los contenidos y las tareas de la misión no se enseñan por separado, si
estudiante puede vincular con los contenidos de aprendizaje, se incluye la “Capacitación para controlar no se enseñan por separado, si no que las tareas de la misión (Capacitación para controlar
no que las tareas de la misión (Capacitación para controlar robots y Solicitud de despacho de robots) robots
se y
de este libro Solicitud de despacho de robots) se combinan en la lección según los contenidos de aprendizaje.
robots” (con un nivel de dificultad de 1 a 4) y la “Solicitud de despacho de robots” (con un nivel de combinan en la lección según los contenidos de aprendizaje.
dificultad de 3 a 5). La composición del libro es la siguiente:
Contenidos de NIVEL 1a4 Capacitación para
aprendizaje
controlar robots
La información general necesaria para desarrollar RUR-
PLE y la introducción a Python se incluyen a modo de
historieta.

Concepto de programa
+ Práctica de
manipulación de robots
NIVEL 3a5 Solicitud de despacho
de robots

Nota
La guía del método de instalación de
RUR-PLE y Python El manual cuenta con un total de 20 lecciones; para las lecciones 1 a 12, los contenidos de aprendizaje
Contenido de aprendizaje presentados en el libro y en las tareas de la misión (Capacitación para controlar robots y Solicitud de despacho de
Aprender el concepto de la programación robots) se realizan en conjunto en la clase, y para las lecciones 13 a 16, la clase se realizará en un entorno en el
mediante RUR-PLE que los estudiantes deberán pensar y resolver problemas. Para las lecciones 17 a 20, la clase se lleva a cabo en
forma de proyecto en equipo que se basará en la experiencia para pensar y resolver problemas obtenida de las
Información adicional y
explicación de conceptos lecciones anteriores. (Consulte el Método de enseñanza y aprendizaje para maestros de cada lección).

Práctica de manipulación de
robots Práctica simple asociada
con el “Contenido de aprendizaje”

El movimiento del personaje se muestra para


Cada lección está formada por los
ayudar a entender el contexto del problema de
Contenidos de aprendizaje y las Tareas
la “Práctica de manipulación del robot”.
de la misión, y todos los contenidos de
Capacitación para controlar robots este libro se pueden aprender con el
Tarea de práctica en forma de misión relacionada con el Mapa mundial (imagen de la izquierda).
Se muestra el nivel de
“Contenido de aprendizaje” con un nivel de dificultad de 1 a 4.
dificultad (1 a 5) La composición del contenido para
cada lección se da de la siguiente
El movimiento del personaje se muestra para manera.
ayudar a entender el contexto del problema de
“Capacitación para controlar robots”.

Tema de cada lección


Solicitud de despacho de robots
Tarea de práctica en forma de misión relacionada
Objetivos para cada lección

Contenidos de aprendizaje: contenidos a


Página de introducción para generar interés al
aprender para la lección correspondiente
construir cada tarea de “Solicitud de despacho de Capacitación para controlar robots: tareas
robots” en forma de mapa relacionadas con la lección correspondiente
Solicitud de despacho de robots: tarea
relacionada con la lección correspondiente
CONTENIDOS

Todos deben convertirse en


maestros de RUR-PLE y
mantener la paz del Mundo Rurpl
e
Práctica de manipulación 1 Entregar el periódico
de robots
Capacitación
para controlar 2 Saltar obstáculos

3 Visitar la tienda
robots
4 Reparar el centro comercial
5 Verificar el semáforo
Capacitación para Solicitud de 6 Ir a un concierto en la ribera
controlar robots despacho de robots
7 Entrada en calor
8 Jugar al béisbol
9 Limpiar el parque de diversiones
Ingresar Mapa de la misión/Resumen de la aventura
10 Construir un helipuerto
Presentación de personajes/Prólogo

Nota Instalación de RUR-PLE


Solicitud de 1 Diseñar una pirámide
Instalación y ejecución de Python 2 Limpiar el lugar de construcción de la pirámide
despacho de
3 Dibujar un espiral
robots
1 Comienzo de la programación 4 Cultivar flores en un oasis
Contenidos
2 Aspectos básicos de RUR-PLE 5 Entregar pizzas a los apartamentos del hormiguero
de
3 Función para el movimiento | Práctica de manipulación de robots 01, 02, 03 6 Repeler a la araña camello, la guardiana de la cueva
aprendizaje
4 Qué hacer en cada caso | Práctica de manipulación de robots 04, 05 7 Repeler al escorpión gigante, el guardián de la salida

5 ¿Verdadero o falso? | Práctica de manipulación de robots 06 8 Salvar a la princesa atrapada en el laberinto

6 La variable, un recipiente para guardar información | Práctica de manipulación de robots 07 9 Cuidar el jardín de flores de la princesa
7 Entrada y salida de datos 10 Calcular el tamaño de la habitación de la princesa
8 Las cuatro operaciones matemáticas también se pueden realizar con el programa | Práctica de manipulación de robots 08, 09 11 Limpiar la torre del cielo
9 Varias formas de información | Práctica de manipulación de robots 10, 11 12 Cuidar el jardín de flores del cielo
10 Los trabajos competitivos se pueden realizar de forma conveniente | Práctica de manipulación de robots 12, 13 53
11 Comparar y evaluar | Práctica de manipulación de robots 14
12 Crear un clon de robot | Práctica de manipulación de robots 15
Proyecto Plantilla
Entender RUR-PLE
Mapa de la misión del mundo RUR-PLE Programación orientada
Podrás instalar el programa RUR-PLE y Podrás escribir un programa
usar las funciones básicas. que produzca y controle una
cantidad de objetos robot
Podrás realizar una manipulación sencilla
mediante las funciones básicas de RUR-PLE. 02 Función definida por el usuario FIN mediante la clase UsedRobot.

Mapa de la misión del mundo Uso del enunciado de control II Contenidos de aprendizaje | 11
Podrás definir y ejecutar las
Contenidos de Solicitud de despacho de robots | 11,
aprendizaje | 1, 2, 3 LISTO funciones definidas por el usuario. RUR-PLE Podrás resolver los problemas 12
LISTO
Podrás resolver los problemas mediante las mediante el enunciado de control.
Debes colocar el adhesivo de misión completa
funciones.
cada vez que termines las misiones de la Solicitud de despacho de robots | 9, 10
aventura de programación exitosamente. LISTO Resolución de problemas
Contenidos de aprendizaje | 3
Función del sensor y operador lógico I
Capacitación para controlar robots | 1, 2 Cuando resuelvas situaciones
Solicitud de despacho de robots | 1, 2 problemáticas de otros amigos, podrás
Podrás comprender la función del sensor de LISTO Implementación de problemas I
compararlas con tu problema.
RUR-PLE y ejecutarlo según las condiciones.
Podrás definir la situación problemática
Comprenderás los conceptos de enunciados dentro de un mundo de 5x5. A medida que resuelvas situaciones
condicionales y operadores lógicos. problemáticas de otros amigos,
Variable
Podrás resolver problemas mediante encontrarás contenidos que requieran
Podrás diseñar e implementar un modificaciones o adiciones, y podrás
enunciados condicionales y operadores algoritmo para resolver problemas que
Podrás comprender el concepto de compartir tu opinión.
lógicos. se adapte a una situación específica.
variable y escribir un programa que
distinga variables locales y globales. Podrás elegir un problema bien
Contenidos de aprendizaje | 4, 5 Proyecto | 1 diseñado entre los problemas que
Podrás resolver los problemas LISTO
Capacitación para controlar robots | 3, 4 crearon otros amigos.
LISTO mediante las variables.

Proyecto | 2
LISTO
Implementación de problemas II
Contenidos de aprendizaje | 5
Capacitación para controlar robots | 5, 6 LISTO Podrás definir una situación
Función del sensor y operador lógico Resolución de problemas II
problemática superior al 5x5 del
tamaño del mundo.
Podrás comprender el proceso de Cuando resuelvas situaciones
entrada y salida de datos, e Podrás diseñar e implementar un problemáticas de otros amigos, podrás
implementarlo durante la práctica. algoritmo para resolver problemas que compararlas con tu problema.
se adapte una situación específica.
Podrás resolver los problemas
Tipos de información, lista y conjunto A medida que resuelvas situaciones
mediante operadores matemáticos. Proyecto | 3 problemáticas de otros amigos,
Podrás comprender varios tipos de
LISTO encontrarás contenidos que requieran
información y usarlos en la situación modificaciones o adiciones, y podrás
Contenidos de aprendizaje | 7, 8
LISTO correspondiente. compartir tu opinión.
Comprenderás los conceptos de lista
Organización del equipo y plan
de operación Podrás elegir un problema bien
y conjunto, y podrás resolver los
diseñado desde los problemas
problemas.
Podrás elegir un líder y el nombre que crearon otros amigos.
Enunciado de repetición y
LISTO del equipo, y compartir las tareas.
función range ( ) Contenidos de aprendizaje | 9
Proyecto | 4 LISTO
Podrás leer una guía de tareas y escribir un
Podrás comprender la estructura de plan de desempeño para la tarea.
un bucle básico y un bucle anidado. INICIO
Enunciado de repetición
Podrás resolver los problemas Proyecto | 5, 6, 7 LISTO Producción de una ficha de trabajo
mediante el enunciado de y operador de
repetición. comparación
Podrás resolver problemas mediante Podrás fijar una misión y crear el
Podrás implementar un bucle for
enunciados de repetición y operadores de mundo para cada sinopsis.
mediante la función range ( ).
comparación. Podrás implementarla mediante RUR-
Recolectar información y
Contenidos de aprendizaje | 11 PLE y escribir una ficha de trabajo para
escribir la sinopsis
Contenidos de aprendizaje | Solicitud
Capacitación para controlar robots | 7, 8 una competencia.
de despacho de robots 7, 8 | 3
LISTO
LISTO Podrás recopilar información para la tarea,
Proyecto | 9
tener un debate según tu experiencia y
LISTO
recopilar opiniones.

Comprender el enunciado de control Uso del enunciado de control I Según las opiniones recopiladas, podrás
escribir una sinopsis para una situación Presentación y evaluación del
Podrás comprender los enunciados de control con Podrás resolver los problemas problemática. producto
las estructuras de secuencia, condición y mediante el enunciado de control.
repetición. Proyecto | 8 LISTO Podrás brindar una presentación sobre
Podrás resolver los problemas mediante estos Solicitud de despacho de robots | 6, 7, 8 el proceso de creación del producto
enunciados de control.
LISTO
Podrás evaluar según los criterios
Capacitación para controlar robots | 9, 10 de evaluación basados en los
Solicitud de despacho de robots | 4, 5 contenidos de la presentación.
LISTO
Proyecto | 10, 11 LISTO
SINOPSIS PERSONAJES
Resumen de la aventura de programación Compañeros de aventura

Existe un “Servicio de despacho de robots” en el que los robots con muchas funciones ayudan a las personas del
“Mundo Rurple” desde hace mucho tiempo. Un buen día, Old-bot, que había estado encargándose del Servicio de
despacho de robots, decidió jubilarse y nombrarte a ti como su sucesor. Tendrás que enseñarles y capacitar a los Red-bot
robots sin experiencia para que sean buenos y mantengan la paz del Mundo Rurple al completar varias misiones
con robots bien entrenados. El robot rojo es saludable y fuerte. Suele cometer errores, ya que actúa
Por esto, tienes que elegir entre Red-bot, Blue-bot y Green-bot, y aprender la programación básica, como sin pensar, pero a la hora de enfrentarse a una crisis es el mejor.
“Funciones y enunciados condicionales para operar robots”, etc. mediante los 15 pasos de “Práctica de
manipulación de robots”. Luego, desarrollarás tu capacidad para resolver problemas mediante la “Capacitación
para controlar robots” en varias situaciones que pueden ocurrir en tu hogar o en la escuela, como entregar el
periódico, saltar obstáculos y limpiar un parque de diversiones. Básicamente, estás capacitándote para aprender
Green-bot
a programar un robot. El robot verde es muy entrometido. Siempre tiene mucha curiosidad y
Cuando termines la capacitación, comenzarás el nivel “Solicitud de despacho de robots”. La misión de
desea conocer más sobre Python en particular. A veces, hace muchas
programación estará completa si llegas a la Torre del cielo y te reúnes con los ángeles a medida que resuelves
varias misiones, como diseñar una pirámide, cuidar las flores del oasis, entregar pizza en los apartamentos del
preguntas y sus amigos se agotan.
hormiguero y salvar a la princesa atrapada en el laberinto. Si llegas a la cima, es probable que seas el maestro
del Mundo Rurple mientras diseñas tu propio mundo y resuelves las misiones. Blue-bot

1-3 Los pensamientos creativos son la especialidad del robot azul. Tiene
muchos conocimientos pero su manera brusca de hablar es una falla.
Puedo salir a jugar
después de limpiar Sin embargo, siempre tiene nuevas ideas y no se cansa de responder
este lugar, ¿verdad?
todas las preguntas de Green-bot.
Entreguemos este
periódico a la casa
de mi abuelo.
Old-bot
Robot viejo y sabio que es respetado por todos los robots. Lo
consideran un robot legendario porque tiene mucha experiencia

5-1 9-1 ayudando a las personas mediante el Servicio de despacho de robots.

Estoy Por favor, cuida mucho Princesa


llegando mi jardín de flores.
Una princesa hermosa y elegante del Mundo Rurple. A veces, se mete
¿Alguien pidió
una pizza? en problemas porque se escapa en secreto. El Servicio de despacho
de robots la ha salvado muchas veces.
Soy “Old-bot” y me he encargado del Los robots de este mundo Los robots tenían que realizar varias
Hola. Bienvenido solían tener una función muy
Servicio de despacho de robots para funciones complejas al combinar funciones
al Mundo Rurple. limitada. simples, pero un robot llamado Karel usó
ayudar a las personas
un idioma de programación llamado
con robots en el Mundo Rurple.
“Pascal” para esto.

Solo podían realizar acciones muy sencillas


como “paso adelante”, “girar a la izquierda”
y “levantar o soltar beeper” (sensor que
puede detectar un robot).

Por lo tanto, voy a jubilarme del Sin embargo, como los robots no tienen ¡Hola!
Me encargo del servicio de despacho y se lo experiencia aún, necesitamos a alguien ¡Voilá!
Servicio de dejaré a los robots más jóvenes. que les enseñe.
despacho de
robots. Es difícil
para mí continuar
con esta tarea.
También soy un robot que crearon
Las personas podrían aprender
Este concepto de aprender un lenguaje de para usar en GvR, uno de los
conocimientos básicos de la programación
programación al controlar un robot ha aparecido lenguajes de programación. Podrías
de una forma divertida al manipular al
en varias versiones del lenguaje de programación decir que soy un ancestro del RUR-
robot que solo puede realizar acciones
desde entonces. PLE que usarás.
simples mediante Pascal.

Creo que puedes


Además, el “PLE” de “RUR-PLE”
capacitar a los robots
es un acrónimo para Python
maravillosamente. Learning Environment (entorno
de aprendizaje de Python).

Primero, te
El “RUR” de “RUR-PLE” significa
contaré Es una herramienta de aprendizaje excelente
un poco sobre Rossum's Universal Robots, una
para usar casi cualquier factor del lenguaje de
Es por eso que te elijo obra de Karel Capek, a quien se
RUR-PLE para que programación llamado Python que está más
como mi sucesor. puedas capacitar le ocurrió el concepto de desarrollado que GvR y yo.
a los robots. “robot” por primera vez.

Creo que mi función


Al igual que Karel el robot, se ha terminado. Te
estos niños también unirás a estos niños
tienen funciones muy en su viaje al futuro.
simples.

Sin embargo, si intentan


Sabes bien que el En 1981, Richard E. Pattis realizar varias acciones
La palabra robot, (que deriva de “robota”, que concepto de robot tiene complejas al combinar estas
creó un mundo imaginario en el
significa esclavo o trabajo pesado en checo) una fuerte influencia funciones simples,
que los robots viven a través de eventualmente tendrán la
significa “una máquina parecida a un humano sobre la sociedad un libro, “Karel el robot”. capacidad de controlar Python
que hace el trabajo por las personas”. moderna. ¡Que tengan un gran viaje!
cuando se los indiquen.
Ya lo expliqué
¡Listos para la ¿Podrías explicarlo lo más sencillo
operación! con palabras
posible.
sencillas?

Es así. Es un idioma de conversación


que se escribe de forma dinámica
independientemente de la plataforma,
en forma de intérprete y orientado a
objetos. ¡Ah! En pocas palabras...

¡Hola! Soy Red-bot y quiero ¡Soy Green-bot! Ja, ja, ja. Soy Blue-bot.
convertirme en el mejor Cambio y fuera.
robot del futuro.

Python tiene una gramática fácil y


sencilla. También se puede leer sin Como brinda varios campos
problemas, ya que el bloque del extensivos de bibliotecas
código se distingue con sangrías. (módulos), es muy extensible.

¿Empezamos Espera. Todavía El string de caracteres se muestra con


¡Oh! Tú eres la nueva
con el no hemos Unicode, por lo que será muy fácil expresar
persona a cargo del
Servicio de despacho de trabajo? Diablos, idiomas como coreano o chino.
aprendido nada.
robots. odio
estudiar..
.
¡Es un placer
conocerte!

Se puede asociar con otros


¡El aprendizaje Es imposible. Tenemos que terminar la
práctica de manipulación y la capacitación
Casi toda la información que se idiomas de programación, como el
se realiza en la de control antes de empezar a trabajar. proporciona es gratuita. lenguaje C.
vida real!

Es un lenguaje de programación También tiene Oh. ¡Es más rápido aprender


¿No deberíamos aprender
muchas otras en la vida real! Comencemos.
qué es Python? presentado por Guido van Ahora entiendo un poco. ventajas.
Rossum.

¿No
deberíamos...?

Es así. Para avanzar


rápidamente, te explicaré sobre
Python. Python es..
NOTA

1 Instalación de RUR-PLE

1 Ingresa al sitio web (http://code.google.com/p/rur-ple/) para descargar RUR-PLE. 3 Descarga el archivo de instalación en la página “Descargas”.

* Sitio web oficial de RUR-PLE


http://rur-ple.sourceforge.net

2 Selecciona el archivo correspondiente para tu sistema operativo en el menú 4 El proceso de instalación después de la descarga es el mismo que para cualquier
“Descargas”. otro programa.
2 Instalación y ejecución de Python

Ingresa al sitio web oficial de Python (http://www.python.org/download) y descarga el archivo de 02 IDLE: [iniciar] → [programa] → [Python 3.4.2] →
instalación correspondiente para tu sistema operativo y CPU. Existe una pequeña diferencia gramatical
[IDLE(Python GUI)]

entre la versión Python 2.X y la versión Python 3.x. La pantalla de ejecución de Python se ve así: Python
es un lenguaje de programación en el que el resultado
de ejecución aparece inmediatamente cuando se
Es posible ejecutar RUR-PLE sin instalar Python. La programación básica que se puede ingresa un comando. Por ejemplo, si ingresas un
realizar en Python también se puede realizar en RUR-PLE, por lo que no es necesario que enunciado comando como print (“Hello”) a una consola
instales Python. (>>>), como se muestra en la figura, y presionas la
tecla Enter, el programa “Hello” se muestra
inmediatamente como resultado de ejecución. Para los
comandos de Python se escribe todo en minúscula, ya
que podrían ocurrir errores si se usan letras
mayúsculas. La pantalla de ejecución de Python se
denomina Python Shell.

Ejecución de Python
01 Cómo ejecutar directamente en el estado de consola (>>>)
Python se puede ejecutar directamente en el estado de consola (>>>) y el
resultado se verifica inmediatamente.
De esta forma, el resultado se puede verificar rápidamente, pero es molesto volver
a ingresar el programa cada vez que desees ejecutarlo.
02 Cómo ejecutar el programa después de guardarlo.
Python se puede ejecutar después de escribir y guardar el código del programa.
Sitio web para descargar Python De esta forma, podrás ejecutar el programa sin la inconveniencia de ingresarlo
cada vez que lo necesites porque el programa estará guardado.
Iniciar Python
1 Presiona [Archivo]-[Ventana nueva]
01 Comando de Python: [Iniciar] → [Programa] → [Python 3.4.2] → Ejecución de [Python(línea de comando)] 2 Ingresa el programa si aparece la ventana (ventana de edición de IDLE) y ejecuta [Archivo]-[Guardar].

3 Designa la ruta y guarda los contenidos del programa al ingresar el nombre del programa. (extensión : py)

4 Al presionar [Ejecutar]-[Ejecutar módulo] desde la ventana de edición IDLE o al presionar la tecla F5,
ejecuta el programa y verifica el resultado. Para que se ejecute el programa, se debe activar la ventana
en la que se está editando el código py.

Ingresar el programa (Editor IDLE) Ejecución del programa (Python Shell)

a=10 >>> =============================


>>>
b=20 15.0
print((a+b)/2.0) >>>
Contenidos de aprendizaje 01 El comienzo de la programación

1 ¿Por qué aprendes a programar? Sin embargo, como la computadora no es tan inteligente como un ser humano, existen muchas tareas

que las computadoras no pueden realizar. Los tipos de lenguajes que pueden entender también son

¿En qué piensas cuando escuchas la palabra escasos. Su velocidad de cálculo es mucho más rápida que la de un ser humano. En realidad, la
programación? ¿En un hácker genio? ¿O en letras computadora solo puede sumar, pero no restar.
enigmáticas que se parecen a un código? En realidad, la La magia de la programación nos permite hacer que una computadora (que solo puede realizar una
programación no es tan complicada como crees. No es cantidad limitada de acciones a una velocidad rápida) tenga una capacidad ilimitada. Sin embargo,
algo que solo las personas inteligentes pueden hacer. ingresar comandos en una computadora debe ser más exacto, lógico y amable que darle órdenes a

una persona. Si ocurre algún error, la computadora no funcionará como deseas.


En realidad, la programación es algo que nos rodea
Sin embargo, cuando programas para que la computadora entienda, podrás experimentar el proceso de
todos los días. ¿Alguna vez le has dado direcciones a
pensamiento lógico y sistemático que experimentaron los filósofos griegos o el rey de Inglaterra. Dicha
una persona que estaba perdida? En ese caso,
experiencia mejorará tu capacidad de pensar y resolver problemas poco a poco. En general, lo atractivo
puedes decir que tienes experiencia programando.
de la programación es la diversión.
Programar no es un concepto que solo se usa en computadoras.
El proceso de comunicar y compartir nuestros pensamientos u opiniones también se puede considerar Entonces, ¿aprendemos la magia que les da una capacidad ilimitada a las computadoras?
programación. Desde darle indicaciones a un peatón hasta gobernar a un país, estas actividades también
se pueden considerar programación.
En el siglo XIX, Inglaterra gobernaba hasta el otro extremo de la tierra aunque era un país que se
encontraba en una isla de Europa. ¿Cómo podían enviar órdenes a las personas del otro lado del mar sin
teléfonos o Internet? Muchas de las fórmulas matemáticas que aprendimos fueron inventadas por filósofos
griegos hace 2000 años. ¿Cómo podemos comprender y usar las fórmulas matemáticas incluso 2000 años
después cuando usamos un idioma diferente y pensamos de forma diferente?

Desde hace mucho tiempo, la humanidad ha estado


desarrollando idiomas, letras e incluso sistemas sociales
para transmitir o compartir comandos y conocimientos. El
rey de Inglaterra creó una burocracia para reinar y educar
a los colonizadores para que usaran el mismo idioma que
Inglaterra. Los filósofos griegos estudiaron la lógica para
expresar y compartir pensamientos con más exactitud, y
desarrollaron letras o idiomas para documentarlos.

La programación por computadora se puede comparar con


estas actividades. La idea de transmitir comandos o
conocimientos cambia desde las personas a las
computadoras. También es el motivo por el cual nos * Un grupo de instrucciones que puede ejecutar una computadora se denomina programa; escribir un método para
referimos al sistema y a las letras para crear programas resolver problemas con regularidad se denomina algoritmo; y el proceso de escribir un algoritmo en un programa
mediante un lenguaje de programación se denomina programar.
por computadora como lenguajes de programación.
Este método ayuda a las personas que aprenden un lenguaje de programación por primera vez a
2 Cómo iniciar Python
entenderlo con facilidad y a evitar errores de sintaxis. Además, un enunciado se expresa en una línea
para que sea más natural y sencillo de leer para las personas.
Python expresa elementos complicados de forma más sencilla para las personas que aprenden un
lenguaje de programación por primera vez. Las características principales son “un método para expresar
el final de un enunciado” y una forma de “expresar la estructura de un bloque”. ¡Atención!
Si expresas las 3 instrucciones previas en una línea con un espaciado como el que se
1) Cómo expresar el final de un enunciado
Un enunciado es una unidad de expresión que permite que la computadora entienda nuestros muestra a continuación, ocurrirá un error de sintaxis en Python. Cuando se termina un

pensamientos y ejecute una acción al respecto. Si la computadora puede entender una oración como “ir enunciado, debes usar un salto de línea. a=10 b=20 print a+10 (X)

adelante”, se convierte en un enunciado. En las computadoras, se puede decir que un enunciado es una
oración que puede convertirse en una instrucción. Un programa de computadora es un conjunto de
2) Cómo expresar la estructura de bloque
enunciados.
En el idioma de las computadoras, los enunciados que expresan
En muchos lenguajes de programación (incluido el lenguaje C), el método de agregar un punto y coma (;)
una característica o acción similar se expresan en un conjunto, y
se usa para indicar el final de un enunciado. En estos lenguajes de programación, la computadora no
esto se denomina estructura de bloque. En otras palabras,
considera que la expresión escrita en su totalidad es un enunciado hasta que aparezca el punto y coma.
interpreta una cantidad de enunciados al unirlos en un solo
En otras palabras, no funciona.
bloque. Si expresas enunciados en un bloque, será muy útil para
Ir adelante No se interpreta como un enunciado y la acción no se realiza repetir los enunciados múltiples o administrar un conjunto de

Ir adelante; Se interpreta como un enunciado y se realiza la acción correspondiente enunciados complejos.

En muchos lenguajes de programación, como el lenguaje C y


Para las personas que aprenden programación por primera vez, el método de usar un punto y coma
Java, se usan llaves ({}) como forma de expresar dicha
podría causar un error de sintaxis.
estructura de bloque. De esta forma, un bloque empieza con
“{” y termina con “}”. Si varios enunciados se colocan dentro de
¿Qué es un error de sintaxis?
las llaves, se considera un solo bloque.
Una regla para expresar un lenguaje se denomina “gramática”. Las personas tienen la
capacidad de hacer una analogía con el significado de lo que otra persona está intentando <Ejemplo de lenguaje C>
decir según la experiencia y el contexto, aunque sea gramaticalmente incorrecta en cierta
forma. Sin embargo, a diferencia de las personas, las computadoras no entienden expresiones while(1) ← Nombre del bloque (significado: repetir por siempre los enunciados del bloque)
no gramaticales y causan un error. Dicho error se denomina “error de sintaxis”. Los programas
{ ← comienzo del bloque
de computadora deben tener un conjunto de enunciados perfectos sin errores de sintaxis.
scanf("%d",&a);
- enunciados unidos como bloque
printf("%d",a);
En “Python”, para escribir un programa de forma más sencilla, el final del enunciado se expresa
con un salto de línea. { ←final del bloque

Enunciado de Python Significado Enunciado de Python Significado


Este método no es un método que usan las personas al escribir, por lo que podría ser otro error de sintaxis. Por
move() mover adelante una unidad a=10 guardar 10 en la variable a
lo tanto, en Python, las llaves no se usan como método para expresar una estructura de bloques. En cambio,
turn_left() girar 90 grados a la izquierda b=20 guardar 20 en la variable b
se usan sangrías mediante los dos puntos(:) y la tecla Tab. Esto se debe a que los dos puntos se suelen usar
mostrar el valor de la suma de
move() mover adelante una unidad print a+b para empezar una explicación.
ayb
Además, en Python, no existen procesos para declarar variables, lo cual también causa errores de sintaxis
que los principiantes suelen cometer. Las reglas gramaticales de Python son fáciles de aprender y están
Lista de tareas para hoy:
diseñadas para comprender las estructuras fácilmente.
Hacer la tarea
Organizar un plan para el fin de 3) Cómo escribir un comentario
semana con tus amigos
Cuando programas, a veces necesitas dejar una nota simple en el código o
Escribir en un diario. * Cuando hay una sola línea: #
registrar un mensaje para otro programador. Como la computadora no tiene que
* Cuando hay muchas líneas:
Escribir un plan para las vacaciones de verano entender estos mensajes, se deben marcar para que la computadora no Tres comillas o comillas dobles
interprete el mensaje como enunciado y lo ignore. Este enunciado se denomina
comentario y se marca al agregarle un “#” delante del enunciado. Como la " " " ' ' '
Como en el ejemplo, las oraciones con sangría en la misma posición son fáciles de detectar porque están computadora ignora la línea con “#”, el error no ocurre aunque haya una oración
contenidos o contenidos
en una lista y el título “Lista de tareas para hoy” está antes de los dos puntos. Sin embargo, la última que no cumpla con la gramática de Python.
oración sin sangría se reconoce como elemento separado del título, “Lista de tareas para hoy”. La " " " ' ' '

gramática de Python que expresa la unión de elementos que se refieren al mismo sujeto (suite) con * Nota: si escribes un comentario en coreano en RUR-PLE, ocurre un error y el programa no puede guardar.
sangría en la misma posición es parecida a la forma de escribir, leer y comprender de las personas, por lo
que es bueno que otros puedan leer y comprender el código.

¿Qué es la sangría?
La sangría es un espacio en blanco delante del enunciado. El tamaño de la
sangría depende de la cantidad de espacios en blanco.

Ejemplo de Python>

if(X<0): ← nombre del bloque: ← sangría al comienzo del bloque


→ print("X era negativo")
¿De dónde proviene la gramática de Python?
X=-X El motivo por el cual Python es apto para principiantes es porque tiene mucha influencia del
print("X era positivo") ← como la sangría cambia, este enunciado lenguaje de programación “ABC”. El creador de Python, Guido van Rossum, participó en el
desarrollo de “ABC”, y con esa experiencia, creó Python más adelante.
ya no está unido al bloque if.
Cuando diseñaron “ABC”, Robert Dewar, Peter King, Jack Swartz y Lambert desarrollaron
En Python, el bloque también se denomina “suite”. En el caso del ejemplo anterior, la suite de “if(X<0)” es su propia gramática y tuvieron un debate al comparar cuál era mejor. Como no podían
“print(“X era negativo”) y X=-X. La sangría ha cambiado para el último “print(“X era positivo)”, por lo que ya llegar a un acuerdo, Robert Dewar le preguntó a su esposa qué opinaba. En este proceso,
no es la suite de “if(X<0)”. descubrieron elementos que las personas consideran elementos gramaticales complicados
y confusos cuando se les presenta la programación por computadora. Y cuando se

Como Python no usa marcas especiales para designar el final de un bloque, las personas que aprenden eliminaron estos elementos, aprendieron que podían escribir un programa fácil de aprender,

un lenguaje de programación por primera vez no tienen errores de sintaxis, como una “}” faltante. Además, reducir los errores de los desarrolladores y hacerlo más fácil de entender estructuralmente.

los enunciados en bloques expresados con sangrías del mismo tamaño funcionan como método de
En consecuencia, a diferencia del lenguaje de programación existente, “ABC” se diseñó
expresión para que las personas entiendan con mayor facilidad. Esto se debe a que usamos el mismo
para expresar de forma similar a la que el público lee y escribe, y estos elementos se
método de expresión para escribir a fin de mostrar los componentes del sujeto en una lista.
transfirieron a Python.
Contenidos de aprendizaje 02 Principios básicos de RUR-PLE

RUR-PLE (RUR-Python Learning Environment) es un programa que sirve para


aprender los conceptos básicos de la programación y el conocimiento básico de
3 Cómo ingresar instrucciones en
un programa llamado Python al controlar al robot que se muestra en pantalla. Si RUR-PLE
resuelves problemas al imaginar la situación como si controlaras al robot real, Si ingresas las instrucciones en el código de área ubicado a la izquierda de la pantalla de RUR-
podrás entender los conceptos básicos de la programación fácilmente de una PLE y presionas el botón “Iniciar programa” desde el menú de botones, el robot ejecuta una
forma divertida.
acción según las instrucciones presentadas.

44 Manipular el robot y comprender el sensor


1 Composición de la pantalla
1) Manipulación manual del robot
RUR-PLE En el mundo, el robot se puede mover con las flechas( ↑ ← ) del teclado. Si presionas ↑ , el
Existen cuatro pestañas generales en RUR-PLE.
Desde estas pestañas, podrás aprender a programar robot da un paso en la dirección a la que se dirige, y si presionas ← , gira 90 grados a la
el robot en la pestaña
izquierda en el lugar
.
2) Cómo comprender el sensor del robot
Robot: codifica y aprende está formada por el área de Los robots tienen sensores para que puedas ver el estado actual del robot. Con instrucciones
código para ingresar instrucciones, el mundo para
mover los robots según las instrucciones ingresadas y como las que se muestran a continuación, puedes usar los sensores de los robots.
por ③ la pantalla de ejecución para mostrar el
front_is_clear( ) right_is_clear( )
resultado de la ejecución.

2 Menú del robot de RUR-PLE

En la parte superior del programa RUR-PLE, existen botones en el menú para varias
funciones. Esta función verifica si existe un muro frente al Esta función verifica si existe un muro a la
Abre o guarda el robot. Muestra “Verdadero” si no hay un muro y izquierda del robot. Muestra “Verdadero” si no
Controla la
archivo RUR-PLE.
velocidad de Le da un beeper (zumbador) al robot. “Falso” si hay uno. hay un muro a la derecha y “Falso” si hay uno.
El archivo de código RUR- Reinicia el mundo a la
ejecución del El beeper puede variar de 0 a 1000.
PLE se guarda con condición previa a la Puede construir un
programa. La cantidad de beepers se marca
extensión .rur. ejecución del muro que limita el en la parte inferior de la pantalla de la
programa. movimiento de los siguiente manera.
robots en el
mundo. left_is_clear( ) on_beeper( )

Ejecuta el programa de una vez


o ejecuta, hace una pausa y
Abre o guarda el finaliza el programa Cambia la imagen del
Borra o muestra un robot. Esta función verifica si existe un muro a la Esta función verifica si existe un beeper donde se
archivo RUR-PLE. por cada paso. robot al importar el
El archivo de código RUR-
PLE se guarda con extensión
archivo de imagen.
izquierda del robot. Muestra “Verdadero” si no encuentra el robot. Muestra “Verdadero” si hay un
.wld. Cambia el tamaño del mundo. Muestra la información del mundo del hay un muro a la izquierda y “Falso” si hay uno. beeper donde se encuentra el robot y “Falso” si
Puede seleccionar entre 5x5 y 30x30. lado derecho de la pantalla.
no hay un beeper.
carries_beepers() Si generas un mundo, el tamaño predeterminado se fija
en 10x10. Mediante el menú, puedes expandir desde el
Esta función verifica si existe el robot
mínimo de 5x5 al máximo de 30x30.
tiene un beeper. Muestra “Verdadero”
si el robot tiene un beeper y “Falso” si
La abscisa del mundo se expresa como “Avenue”
el robot muestra “Falso”.
(Avenida) y la ordenada se expresa como “Street”
(Calle).
Beeper es una clase de objeto que se puede colocar
en el mundo. El beeper se puede fijar directamente en
Muestra “ Verdadero” para los sensores frontal y
el mundo, o se le puede asignar al programa al
derecho donde no hay muros, y para el resto de
los sensores muestra “Falso”. comienzo del programa.

Si presionas el botón derecho del


ratón, aparece el número. Si eliges
1 como la cantidad de beepers que
deseas colocar en el mundo, el
beeper se coloca en la posición
correspondiente.

*Números a elegir: 0, 15,


0 20, 40, 60, 80, 99
1
2
El robot actualmente tiene 11 beepers; muestra
“Verdadero” porque no existen muros en las
partes delantera e izquierda; muestra El beeper desaparece si
“Verdadero” porque hay un beeper en el lugar presionas el 0 después de
del robot y muestra “Falso” porque el lado presionar el botón derecho del
*La instrucción “Print” es una instrucción que
derecho está bloqueado por un muro. ratón en el beeper colocado en el
muestra el resultado de la función ejecutada. mundo.

5 Menú del robot de RUR-PLE 0


1
2
El mundo es el lugar que explora el robot que controlamos. El robot se puede mover libremente
en el mundo según el programa que ingresas, pero no puede ir más allá de los muros.
También puedes hacer que el robot recoja el beeper colocado en el mundo al escribir un
programa, o puedes hacer que el robot suelte el beeper en el mundo.
Contenidos de aprendizaje 03 Funciones para realizar acciones

Práctica de
Una función es como una instrucción. Como una acción que corresponde al manipulación
de robots
01 Primer paso de la manipulación del robot
nombre de una instrucción se debe realizar cuando se proporciona una
instrucción, podemos hacer que el robot ejecute el nombre de la función al Movamos el robot de la forma que prefieras mediante las funciones incorporadas.
ingresar la función en el área del código de RUR-PLE.

Las funciones como “move( ) and turn_left( )” (“mover y girar a la izquierda”) se move()
denominan funciones incorporadas. Podemos combinar varias funciones incorporadas, move()
o podemos agregar instrucciones a las funciones incorporadas para darle nombre a una turn_left()
nueva función. Se denominan “funciones definidas por el usuario”. Cuando creas y usas move()
una función definida por el usuario, el proceso complejo se puede ejecutar de forma move()
más simple que al usar una sola función incorporada y también es más fácil modificar
turn_off()
contenidos creados previamente.

Práctica de
manipulación
de robots
02 Habilidades para manipular el robot
1 Usar una función incorporada Hagamos que el robot levante un beeper a medida que se mueve hacia la derecha y luego que lo suelte en el
próximo espacio.
Las funciones incorporadas típicas de RUR-PLE son move(), turn_left() y turn_off(), etc.
move()
move () es una función que hace que el robot dé un paso hacia la dirección a la que se dirige. pick_beeper()
move()
turn_off() es una función que apaga el suministro de energía del robot. Esta función también debe estar put_beeper()
al final del programa. move()
pick_beeper()
r turn_left() es una función que sirve para giar el robot 90 grados a la izquierda.
move()
put_beeper()
pick_beeper() es una función que hace que el robot recoja el beeper colocado en el mundo.
turn_off()

put_beeper() es una función que hace que el robot suelte el beeper colocado en el mundo. Sin
embargo, para soltar el beeper, el robot debe tener uno. Para hacer que el robot lleve el beeper
antes de comenzar el programa, puedes fijar la cantidad de beepers que el robot tendrá al hacer
clic en: Notas para resolver problemas

Gira a la
Usar una función
izquierda,
por favor.
incorporada
turn_left()

Para hacer que el robot dé una vuelta alrededor del mundo 5x5, necesitarás escribir un código
2 Definir la función definida por el usuario al repetir move() y turn_left() varias veces. Si usas la función definida por el usuario para la
parte en la que tienes que usar las funciones, move() y turn_left(), el código se puede abreviar.

Código formado por


funciones incorporadas Código formado por funciones
Usar una función incorporada ¿Perdón? Esa definidas por el usuario
¿Regresarás? función no está
turn_back() incorporada.

def nombre de la funcion ( ):


ejecutar enunciado

Las reglas para crear nombres de funciones son las siguientes.

Mmm, entonces, ¿qué Cómo crear funciones Para el nombre de la función, tendrás que usar el abecedario, los
definidas por el usuario
debo hacer? ¡Ah! Si giro
números y guiones bajos (_).
a la izquierda dos veces, def turn_back():
puedo regresar. El nombre de la función no debe comenzar con un número y no
turn_left()
turn_left() puede tener espacios en blanco ni tildes.
No se pueden usar palabras reservadas (def, y while, etc.).

La última instrucción siempre debe ser la función turn_off() para


Debería crearla como apagar el robot. Las funciones deben tener paréntesis “( )”. Para
función definida por el
usuario y luego usarla algunas funciones, tendrás que presentar datos adicionales en
varias veces. conjunto; en este caso, debes escribir información adicional (se
def nombre de la
denomina parámetros) entre paréntesis. Cuando los ( ) estén vacíos, funcion ():
ejecutar enunciado
significa que no hay ningún parámetro.

Ahora que creé la


función definida por el
Cómo usar funciones
definidas por el usuario 3 Cómo nombrar las funciones
usuario, ¿puedes
def turn_back()
regresar?
: turn_left Definir las funciones no es suficiente para ejecutar sus contenidos. Para ejecutar una función definida,
() turn_lef
tendrás que nombrar la función mediante “function name()”.
t()
turn_back() definició
nombre
def f(): f()
n de la
move() de la
función
función
move()
move()
move()
turn_left()
Contenidos de aprendizaje 04

Práctica de
manipulación 03 Cómo hacer que el robot avance Se denomina enunciado condicional a la instrucción que solo se ejecuta
de robots

Subamos la colina mediante la función definida por el usuario. cuando se cumple la condición dada.

Para que el robot suba la colina, es necesario que gire a la derecha y a la izquierda. Para
que el robot gire a la derecha, puedes repetir la función turn_left() 3 veces. Hagamos que el
robot suba la colina al crear una función para que gire a la derecha.

def turn_right(): 1 Enunciado condicional


turn_left()
turn_left() Se denomina enunciado condicional a la instrucción que solo se ejecuta cuando se cumple
turn_left() la condición dada. Es una estructura en la que si la expresión condicional del “enunciado if”
es verdadera, la instrucción de ejecución 1 se ejecuta; si no, se ejecuta la instrucción de
turn_left()
move() ejecución 2. En este momento, el “enunciado else” se puede omitir según la condición.
turn_right()
expresión condicional if 1:
move()
move() ejecución de instrucción 1 // cuando la expresión
else: condicional 1 es verdadera
turn_right()
move() ejecución de instrucción 2 // cuando la expresión condicional 1 es falsa
turn_left()
turn_off()
El flujo de código 11 cuando el enunciado condicional 1 es verdadero

Función def turn_right(): Enunciado condicional simple 3


repeat() turn_left() ¡Hacia
1
Si usas la función repeat() (qué es una función if on_beeper(): 1 adelante!
turn_left() ¿Hay un beeper?
incorporada), es más fácil repetir el mismo trabajo.
turn_left() turn_left()
En general, tendrás que usar turn_left() tres veces
para girar a la derecha. Si usas la función repeat() turn_left() 2
para esto, se podrá reducir al igual que en la turn_left()
derecha.
def turn_right():
Repeat (nombre de la función, cantidad de else:
repeat(turn_left,3)
repeticiones) turn_left()
*cuando escribas el nombre de la función, no es necesario
agregar los paréntesis ( ).

Notas para resolver move() 3


problemas

Girar a la izquierda
3 veces
(girar a la derecha)
2

Girar a la
izquierda
El flujo de código 1 cuando el enunciado condicional es falso
2 Enunciado if anidado
Enunciado condicional si
mple Un enunciado if anidado se refiere a la estructura de otro enunciado condicional dentro de un
if on_beeper(): 1
turn_left() enunciado condicional. Para ejecutar <execution instruction 2>, la expresión condicional 1 y la
1
turn_left() ¿Hay un beeper? expresión condicional 2 tienen que ser verdaderas.
turn_left()

expresión condicional if 1:
else: ejecución de instrucción 1 // cuando la expresión condicional 1 es verdadera
2
turn_left()
expresión condicional if 2:
move() 3 instrucción de ejecución 2 // cuando la expresión condicional 1 y la expresión condicional 2 son verdaderas
else:
ejecución de instrucción 3 // cuando la expresión condicional 1 es falsa
Girar a la izquierda 3
veces
(girar a la derecha)
Enunciado if anidado
3 ¡Hacia if front_is_clear():
adelante! Girar a la if on_beeper():
izquierda
pick_beeper()
2
move()

else:
turn_left()
¿No hay un muro adelante?

Práctica
de manipulación 04 ¡Alto!
de robots
Hagamos que el robot se detenga en el lugar donde se encuentra el beeper mientras
se mueve a la derecha.
Si escribes un programa en el que el robot se mueve hacia el lugar donde se ¿Hay un beeper?
Levanta el beeper
encuentra el beeper y se detiene, ocurre de la siguiente manera. Si el beeper está en
la línea 1 (Street:1), funciona sin importar dónde se encuentra. Pero hay solo 1 beeper.

def f():
if on_beeper(): ¡Hacia
turn_off() adelante!

move()
repeat(f,5)

Girar a la
izquierda
Práctica de
manipulación
de robots
05 Aspiradora robótica 3 Cómo nombrar las funciones
Hagamos que el robot recoja todos los beepers del suelo a medida que se mueve hacia
el muro derecho. Varios enunciados if múltiples se refieren a la estructura con muchos casos de enunciados if.
Esta es una estructura en la que si la condición del enunciado if no es verdadera, evalúa el
El programa para que el robot recoja todos los beepers en la línea 1 (Street: 1) y se dirija hacia el control del enunciado elif, y si la condición del enunciado elif tampoco es verdadera, ejecuta
muro se puede escribir de la siguiente manera. Si el beeper está en la línea 1 (Street:1), funciona el enunciado else. En este momento, el enunciado if se puede usar varias veces según la
sin importar donde se encuentra. Pero solo un beeper se coloca en un solo lugar. condición, pero la expresión condicional debe estar escrita.

def f(): expresión condicional if 1:


if on_beeper():
ejecución de instrucción 1 // cuando el enunciado condicional 1 es verdadero
pick_beeper()
if front_is_clear(): expresión condicional if 2:
move() instrucción de ejecución 2 // cuando el enunciado condicional 1 es falso y el enunciado condicional 2 es verdadero
else: else:
turn_off() instrucción de ejecución 3 // cuando el enunciado condicional 1 y el enunciado condicional 2 son falsos

repeat(f,5)
Enunciado if múltiple

if front_is_clear():
move()
elif left_is_clear():
¡Hacia
turn_left() adelante!

elif right_is_clear():
turn_left()
turn_left() ¿No hay un
muro adelante?
turn_left()
Notas para resolver problemas
else:
turn_left() ¿No hay un muro
a la izquierda?
turn_left() Girar a la
izquierda

Girar a la
Regresar
derecha
¿No hay un muro
a la derecha?
Contenidos de aprendizaje 05 ¿Verdadero o falso?

Práctica de
Cuando muestras relaciones lógicas entre los operadores en el programa, se manipulación
de robots
06 Completar el blanco con el robot
usa un operador lógico. Los operadores lógicos muestran el resultado con Hagamos que el robot coloque el beeper en el lugar sin el beeper a medida que
verdadero (0) o falso (1) cuando hay conjunciones (AND), disyunciones (OR) y se mueve a la derecha.
negaciones (NOT). El programa para colocar el beeper donde no haya un beeper en la posición desde (Avenue:1, Street:1)
a (Avenue:4, Street:1) se puede escribir de la siguiente manera. Pero el robot debe tener una cantidad
suficiente de beepers.

Ingresar (0: falso, 1: verdadero) Conjunción Disyunción Negación de A def f():


if not on_beeper():
(AND) (OR) (NOT)
put_beeper()
move()
repeat(f,4)
turn_off()

5 5

4 4

Street

Street
3 3

2 2

1 1

1 2 3 4 5 1 2 3 4 5

1 Negación (NOT) Avenue Avenue

Notas para resolver problemas


La negación es un operador lógico que muestra falso si la condición actual es verdadera
y muestra verdadero si la condición actual es falsa.

2 Conjunción (AND)

La conjunción es un operador lógico que muestra verdadero si las dos condiciones son
verdaderas, y si no, muestra falso para todos.

3 Disyunción (OR)

La disyunción es un operador lógico que muestra verdadero si una de las dos condiciones es
verdadera, y muestra falso solo si las dos condiciones son falsas.
La variable, un recipiente para guardar información
Contenidos de aprendizaje 06

1 Definición de variable 2 Características de una variable

La variable es un espacio de memoria en el que se puede guardar un valor. Si usas una En Python, la variable se denomina nombre. En general, las formas
variable, varias acciones se pueden realizar fácilmente, como contar números y calcular una de declarar una variable difieren según el lenguaje de programación, >>>
y Python declara la variable de una forma muy sencilla. En Python, >>> a=3
fórmula.
sin necesidad de declarar el tipo de información de la variable como >>> a 3
Para crear dicha variable, debes declarar el nombre, que es un nombre único que la representa. en otros lenguajes, la declaración de la variable se completa si >>> print(a) 3
En RUR-PLE, la declaración de una variable se completa cuando escribes el nombre escribes “nombre de la variable = información”. Si ves el ejemplo de >>>
(nombre=información). Si usas el nombre de una variable no declarada, la computadora no la derecha, guarda la información (3) en el nombre de la variable (a).
El nombre de la variable (a) automáticamente se declara como tipo
sabe a qué información se refiere el nombre correspondiente y causa un error.
de número entero por el número entero designado, que es 3.

Cómo crear una variable ¡Muy bien! 10 se


¡Guardar a guardó en a.
como 10! aa == 10
10
3 Reglas para declarar nombres de variables.

Solo se pueden usar caracteres alfabéticos, coreanos, números y guiones bajos (_) para el nombre
de la variable. Las palabras no deben llevar tilde.

El nombre de la variable no puede incluir caracteres especiales.

El primer carácter debe ser un guion bajo (_), un carácter coreano o alfabético.
¡Muy bien! Le
Restar 2 de a. Cómo cambiar la restaré 2 a a.
variable El nombre de la variable distingue mayúsculas y minúsculas.
a = 10
a = a-2
No se puede usar una palabra reservada que ya se definió en el programa Python como nombre
de una variable. Las palabras reservadas son palabras que ya se designaron en el programa
e incluyen if, while, y for, etc.

4 Variables locales y variables globales

Entonces, ¿cuál es el Mostrar una va ¡Ok! ¡8 se


Cuando declaras una variable, la variable correspondiente o el rango para usar la variable
valor guardado en a? riable guardó en a! cambia según la posición de la variable declarada. Las variables se pueden clasificar como
a = 10
a = a-2 variables locales o variables globales.
print a
Print 1) Variable local
Como variable declarada en una función, la variable local es una variable temporal que existe solo
en el transcurso de la función nombrada y desaparece cuando la función se acaba. Si ejecutas el
programa de la siguiente manera, la n declarada en la función f() se muestra en la función, pero la
variable desaparece del espacio de la memoria después de que la ejecución de la función finalice,
por lo tanto, ocurrirá un error si intentas mostrarla con la función print.
Bien, avancemos Código del ¿Perdón? No existe Práctica de
según la cantidad una variable a. manipulación 07 Jugar con la variable
indicada en el valor programa de robots
guardado en a def f():
a = 10 Usemos la variable global en una función

while(a): Como declaramos n como variable global, aumentaremos el valor dentro y fuera de la
move()
función por 1 y luego lo mostraremos.
a = a-1

n=3
Como la variable que
¿Qué quieres declaramos anteriormente es def f():
Código del
decir? A está una variable local, no se puede global n
declarada en la def f():programa usar fuera de la función. n=n+1
función f()
a = 10 print n
f()
while(a): n=n+1
move() print n
a = a-1 turn_off()

*Cuando muestras información en


RUR-PLE, se puede usar “print
n” o “print(n)”. .

Notas para resolver problemas

2) Variable global
Como variable declarada fuera de la función, se puede usar en cualquier parte del programa.
Si intentas usar n, que se declara fuera de la función, la variable global n se puede usar en la
función f() cuando ingresas global n en el sentido de usar n, que es una variable global.
Las cuatro operaciones matemáticas
Contenidos de aprendizaje 07 Ingresar y mostrar información Contenidos de aprendizaje 08 fundamentales con el programa

Si ingresas información, el resultado se muestra según el programa. Guardar El operador que realiza el cálculo con las cuatro operaciones matemáticas
(designar) un valor en la variable al ingresar una instrucción se denomina fundamentales en el programa se denomina operador aritmético. A diferencia
“ingresar información”, y mostrar las variables guardadas (designadas) en la
pantalla mediante la instrucción print se denomina “mostrar información”. Por lo de otros lenguajes de programación, Python (RUR-PLE) se clasifica en
general, cuando ingresas o muestras información, se usan unidades de entrada operadores que descartan el punto decimal en la división (//) y que no
y salida, como el teclado, el ratón y el monitor. descartan el punto decimal (/).
La práctica para ingresar y mostrar información se puede realizar en el programa Python o en

Ejemplo para ingresar/mostrar información 1 Ejemplo para ingresar/mostrar información 2

>>> n=input() >>> n1=input()


<-- 3 <-- 10 División de
>>> type(n) >>> n2=input() Significado Suma Resta Multiplicación números reales
<type 'int'> <-- 20
>>> print n 3 >>> print n1+n2 30 Ejemplo

Las instrucciones funcionales para ingresar información en RUR-PLE son input_int() o


input_string(), y las instrucciones funcionales para mostrar información son print( ) o print.

Función de entrada de números enteros División de números Potenciación Resto


Significado enteros

Ejemplo

Práctica de
manipulación
de robots
08 Operaciones matemáticas para principiantes
Busquemos el cociente y el resto al dividir dos entradas de números enteros.

Crearemos un programa para encontrar el cociente y el resto al dividir


Función de entrada de string de caracteres dos entradas de números enteros, a y b.
※ La práctica para ingresar y mostrar información se puede realizar en el programa
Python o en

>>> a=input()
<-- 10
>>> b=input()
<-- 3
<<< print a//b, a%b 3 1
>>>
Contenidos de aprendizaje 09 Varias formas de datos

Práctica
de 09 Operaciones matemáticas para expertos 1 ¿Qué son los tipos de información?
manipulación
de robots
Averigüemos el área del triángulo mediante la entrada de la base y la altura.
Los tipos de información se clasifican en dos tipos. Existen dos tipos de información: los
Crearemos un programa para averiguar el área del triángulo después de ingresar la longitud de la base y números enteros y el string . Pero, ¿por qué se clasifica la información?
la altura de un triángulo.
La computadora puede calcular que 1+1 es 2 rápidamente, pero no sabe qué hacer con
Ejemplo de entrada Ejemplo de salida 1+AMOR. Para distinguir si es posible realizar una operación con cierta información, la
computadora distingue la forma de cada variable con tipos de información.
13 19.5
3 En otros lenguajes de programación como el lenguaje C, tienes qué escribir el tipo de
información delante del nombre de la variable cuando se declara una variable. Sin embargo,
Python decide los tipos de información de la variable según el tipo de información guardada.

Fórmula para encontrar el área de un triángulo


Declaración de la variable en el lenguaje C
Base * altura * 0.5 (o base * altura / 2.0)
// declaración de variable para guardar información de números enteros
int i = 0;

// declaración de variable para guardar información de caracteres


Cómo transformar los tipos de información char c = ‘a’;

Los tipos de información se pueden transformar mediante la expresión de tipos de


información.
Declaración de variables en Python
Es un método que sirve para transformar la forma de entrada de las funciones int() y
float(), frente a las variables o el valor según el tipo de información.
i=0
Transformación de tipos de información mediante el valor de la información.
Este método sirve para transformar información al cambiar su valor sin ingresar el tipo de c = ‘a’
información. Para transformar números enteros en números reales, la información se
transforma automáticamente porque cambia el valor al agregar un 0 detrás del valor del
número entero.

Información numérica: números enteros, números reales (float)


Método para transformar información Método para transformar información mediante
2 y números complejos
mediante la expresión de la información el valor de la información

>>> a=input() >>> a=input()


<-- 13 <-- 13 Número Entero Float Complejo Octal Hexadecimal
>>> b=input() >>> b=input()
<-- 3 <-- 3
<<< print (a*b)/float(2) 19.5 <<< print (a*b)*0.5 19.5
Ejemplo de
1+2j
uso
Práctica
de 10 Combinar operadores aritméticos 3 Información del tipo de carácter
manipulación
de robots
Averigüemos el área del círculo al ingresar del radio. En Python, el string de caracteres se expresa mediante las
>>> a="the"
comillas (‘ o “). El string de caracteres también se puede >>> b=" Call"
Crearemos un programa para averiguar el área el círculo mediante el radio (r). (PI se calcula como 3,14). sumar o multiplicar. >>> a+b 'the Call'
>>> a*2 'thethe'
Para expresar el string de caracteres, se usan comillas simples >>> b*2
Ejemplo de entrada Ejemplo de salida ' Call Call'
(‘) y tres comillas dobles o simples seguidas (“””””” o ‘’’’’’)
5 78.5 durante la suma además de las comillas dobles (“”).

Está contando desde


Fórmula para hallar el área del círculo la izquierda.
¡Comienza desde 0!

Radio * radio * 3.14

Importar la función a utilizar


Para usar la función pow() para la potencia, tendrás que importar el módulo de matemática.

※ La práctica se puede realizar en el programa Python o en


¿Por qué Y es 1 y no 2
Método para multiplicar dos veces Método para usar la potencia cuando es la segunda
letra?
>>> r=input() >>> import math
<-- 5 >>> r=input()
>>> print r*r*3.14 78 <-- 5
.5 >>> print pow(r,2)*3.14 7
>>> 8.5 No olvides que el
>>> espacio en blanco
también se considera
una letra.

Notas para resolver problemas


Python indica el carácter correspondiente al colocar el número de índice (desde la izquierda,
empieza desde 0; desde la derecha, empieza desde -1) para cada carácter del string.

Índice

CCaarra
acctteerr
Práctica
de 11 Crucigrama 4 Información del tipo de lista
manipulación
de robots Guarda a todas
Mostremos parte de un string de caracteres. las personas que
asistieron a la Código del programa ¡Guau! Hay muchas variables.
reunión de hoy
como variables.
a = “Dr. Kim”
Crearemos un programa para mostrar parte del string de caracteres después de b = “Dr. Lee”
ingresar el string “secret garden” (jardín secreto). c = “Dr. Choi”

>>> str="secret garden"


>>> str[0] 's'
>>> str[5:9]
't ga'
Código del programa ¡Es simple!
>>> str[10:12] Entonces, ¿lo
'de' guardamos como a = [“Dr. Kim”, “Dr. Lee”,
>>> str[3:] 'ret garden' lista? “Dr. Choi”]
>>> str[:7] 'secret '
>>>

La lista es una forma de información que contiene cierta cantidad de información. Si usas la lista, es
0 1 2 3 4 5 6 7 8 9 10 11 12
posible usar mucha información con facilidad. La lista se puede crear al colocar la información dentro de
corchetes [ ] y al distinguir el valor a colocar dentro con una coma. La información colocada en la lista se
s e c r e t g a r d e n puede mostrar si el número de índice de la información correspondiente se coloca dentro del corchete [ ].

Str[5:9] # se refiere a una serie de letras desde el primer índice hasta (el segundo índice -1). (9-5=4 letras) En la lista, se puede colocar la lista misma y la información individual. Tener otra lista dentro de la lista
Str[3:] # se refiere a una serie de letras desde el tercer índice hasta el final. a veces se denomina “lista bidimensional”. Cuando existe una lista dentro de la lista, la información se

Str[:7] # se refiere a una serie de letras desde el primer índice hasta el 6to (7-1) índice. puede mostrar mediante corchetes [ ].

A continuación presentamos ejemplos de listas de una dimensión ( a=[1,2,3]) y una lista bidimensional (a=[[1,2,3],[4,5,6]]).
Notas para resolver problemas
>>> a=[1,2,3]
>>>
a[0] 1
>>> a=[[1,2,3],[4,5,6]]
>>>
>>>
a[0][0] 1
>>>
a=[0][2] 3
>>>
a[1][1] 5
>>>
Los trabajos repetitivos se pueden
Contenidos de aprendizaje 10 realizar de forma conveniente

1) Operador de lista y modificación


Cuando tienes cierta instrucción que se repite en alguna condición, puedes usar
>>> x=[1,2,3] la instrucción llamada “enunciado de repetición”. Si usas el enunciado de
>>> y=[4,5,6] repetición cuando tienes que repetir el mismo trabajo varias veces, es
>>> x[0]+x[2] 4 conveniente que escribas un programa, ya que la parte que se superpone se
>>> x[0]+y[1] 6
puede escribir una sola vez.
>>> a=['a','b','c']
>>> a[0]
'a'
>>> a[0]=4
¿Hay un Ir adelante
>>> a
muro? Código del programa
[4, 'b', 'c'] ¡Estoy tan
if front_is_clear(): ocupado!
¿Hay un
muro?
move()
if front_is_clear():
Ir adelante move()
if front_is_clear():
2) Funciones relacionadas a la lista move() ¡Estoy tan
Puedes usar varias funciones relacionadas a la lista al agregar ‘.’ detrás del nombre de la lista. if front_is_clear(): ocupado!
move()
■ List name.append(x): función que agrega el valor if front_is_clear():
>>> a=[4,3,2,5,1,6] move()
X al final de la lista. >>> a.append(10)
>>> a
■ List name.insert(x,y): función que inserta el valor
[4, 3, 2, 5, 1, 6, 10]
Y en el lugar de X en la lista.
>>> a.insert(2,8)
■ List name.remove(x): función que eliminar el valor >>>a Código del programa
[4, 3, 8, 2, 5, 1, 6, 10]
de X que aparece primero en la lista. while front_is_clear():
>>> a.remove(3) move() ¡Estoy tan
■ List name.pop(): función que elimina el último >>> a ocupado!

valor de la lista. [4, 8, 2, 5, 1, 6, 10]


>>> a.pop() 10
■ List name.pop(o): función que elimina el primer >>> a ¡Estoy tan
valor de la lista. [4, 8, 2, 5, 1, 6] ocupado!
>>> a.append(8) Continúa moviéndose
■ List name.count(x): función que cuenta la hacia adelante si no
>>> a hay un muro.
cantidad del valor X en la lista. [4, 8, 2, 5, 1, 6, 8]
>>> a.count(8) 2 Existen dos instrucciones para los enunciados de repetición: while y for.
■ List name.sort(): función que ordena los valores
>>> a.sort() Los enunciados while se usan principalmente cuando se repiten las instrucciones al cumplir con cierta condición.
de la lista en orden ascendente.
>>> a Necesitas expresiones condicionales para fijar la cantidad de repeticiones para evitar caer en un bucle infinito.
■ List name.reverse(): función que invierte el orden [1, 2, 4, 5, 6, 8, 8] Los enunciados for pueden reducir el largo del código ya que se puede usar el valor inicial, y el incremento y
de los valores en la lista. decremento del operador, que se describe individualmente en el enunciado while una sola vez.
1 Enunciado de bucle básico Práctica de
manipulación 12 Robot para construir un camino
de robots

Como una estructura con un enunciado de repetición, un enunciado de bucle básico se refiere a la forma
Haremos que el robot se mueva hacia la derecha mientras suelta el beeper.
que se ejecuta repetidamente hasta que se cumple la condición. La estructura de un enunciado de bucle
básico con while es la siguiente.
Crearemos un programa que repita el proceso en el que el robot suelta el beeper en la
Configuración de valor inicial posición en la se encuentra y se mueve cuatro veces.
Expresión condicional while:
i=1
Instrucción
while i<=4:
Operador de incremento y decremento put_beeper() move()
i=i+1
turn_off()
While repite la instrucción continuamente mientras la expresión condicional sea verdadera.
Cuando uses while, necesitarás el “valor inicial”, la “expresión condicional”, la “estructura de repetición”
y el “operador de incremento y decremento”.
Es conveniente si usas el enunciado for para crear estructuras de repetición mediante la lista o la
función range().
Cuando creas estructuras de enunciados de repetición básicas para for, puedes usar la función range() o lista.

Enunciado while Enunciado for


Para variables en range(valor inicial, valor final, valor de incremento y decremento): la instrucción i=1 for i in range(1,5):
while i<=4: put_beeper()
put_beeper() move()
for repite la instrucción según el resultado fijado en range().
move() turn_off()
i=i+1
¿Qué es el operador de incremento y decremento? turn_off()
El enunciado bucle while repite la instrucción cuando la expresión condicional es verdadera. De forma
opuesta, repite la instrucción continuamente hasta el que el enunciado condicional sea falso. Además, el
operador de incremento y decremento se usa para verificar cuántas veces se repite la instrucción. Función range()
La función range( ) fija el rango del valor dentro de la lista de una vez.

i=0
Rango ([valor inicial], valor final, [valor de incremento y decremento])
while i<10: # conditional expression
# instruction *El valor inicial y el valor de incremento y decremento se pueden omitir. (al omitir un valor, el valor inicial es 0,
i=i+1 # increment and decrement operator el valor de incremento y decremento es 1 y se ejecuta hasta (final value-1))
>>> list(range(10))
Si lo escribes como se indica anteriormente, i comienza desde 0 y aumenta en 1 cada vez que se ejecute [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
la orden. Si el valor de i llega a 10 al repetir la orden de esta manera, el enunciado de repetición finalizará. >>> list(range(1, 11))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Cuando domines Python, podrás escribir el código de la siguiente manera para expresar operadores de
>>> list(range(0, 30, 5))
incremento y decremento de forma más simple.
[0, 5, 10, 15, 20, 25]
>>> list(range(0, 10, 3))
[0, 3, 6, 9]
while i<10: # Conditional expression
>>> list(range(0, -10, -1))
# instruction
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
i+=1 # increment and decrement operator >>> list(range(0)) []
>>> list(range(1, 0)) []
2 Enunciado de bucle anidado 2. Cómo alinear el valor de una lista almacenada en orden ascendente
Crearemos un programa para alinear los valores de una lista guardada en orden ascendente.

Un enunciado de bucle anidado es una manera de escribir un código al agregar un bucle Resultado

dentro de otro bucle y el ejemplo más común es el de la tabla de multiplicación


de la [1, 1, 2, 4, 6, 6, 7, 8, 9, 10]
ejecución

i=2 2*1=2 La función que alinea los valores de la lista en orden ascendente es sort( )
while i<=9: 2*2=4
Tabla de
j=1 2*3=6
2*4=8 list.sort()
multiplicaciones while j<=9:
utilizando bucle 2 * 5 = 10 print list
print i,"*",j,"=",i*j
while 2 * 6 = 12
j=j+1
2 * 7 = 14
i=i+1 2 * 8 = 16 3. Cómo alinear el valor de una lista almacenada en orden descendente.
turn_off() 2 * 9 = 18
Ahora, crearemos un programa para alinear los valores de una lista guardada en orden
3*1=3
descendente.
for i in range(2,10): 3*2=6
Tabla de 3*3=9 Resultado
multiplicaciones for j in range(1,10): de la
utilizando 3 * 4 = 12 [10, 9, 8, 7, 6, 6, 4, 2, 1, 1]
ejecución
bucle for print i,"*",j,"=",i*j 3 * 5. = 15
turn_off()
.
La función que almacena los valores de la lista en orden inverso es reverse( ).
Para alinear los valores de una lista en orden descendente, primero deberás alinear los valores
Práctica de en orden ascendente utilizando sort( ) y luego utilizar la función reverse( ).
manipulación
de robots
13 La lotería
Buscaremos un valor al azar según la condición. list.sort()
print list
list.reverse()
1. Cómo encontrar un número entero al azar print list
Crearemos un programa para guardar los valores del 1 al 10 a la lista de manera aleatoria
utilizando la función aleatoria.
Resultado
de la [7, 10, 6, 2, 6, 1, 4, 1, 8, 9] 4. Mostrar los 3 valores más bajos
ejecución
Crearemos un programa para encontrar y mostrar los tres valores más bajos de entre los valores de la
Para utilizar la función aleatoria (radint( )), deberás utilizar el módulo aleatorio. lista almacenada. Solo

Para agregar un valor a la lista, la lista debe estar declarada como list=[ ] para crear una lista vacía. los valores mostrados se eliminarán de la lista.
Resultado
de la 1 for i in range(3):
La función para agregar un valor a la lista es append( ). ejecución 1 print list.pop()
2 print list

import random [10, 9, 8, 7, 6, 6, 4]


list=[ ]
for i in range(1,11): La función pop( ) implementará el proceso de retirar los valores almacenados en la pila, que
list.append(random.randint(1,10)) es una unidad de almacenamiento de datos, como una función. Al explicar la estructura de la
print list pila, podrás utilizar la función pop( ). La función pop( ) retira el último valor de la lista.
Contenidos de aprendizaje 11 Comparar y evaluar Contenidos de aprendizaje 12 Crear un clon de robot

Los operadores que comparan el tamaño de dos valores, como mayor que (>), En RUR-PLE, puedes crear y utilizar distintos robots. La orden para crear un
menor que (<) o igual que (>=), menor o igual que (<=), igual que (==), y distinto robot es UsedRobot( ) y puedes designar propiedades como el nombre del
de (!=) se conocen como operadores de comparación. Al utilizar un operador de robot, la posición, el color y la dirección hacia la que apunta. Las instrucciones
comparación, se compara el valor real o el valor que el nombre indica y muestra para crear un robot y las propiedades de cada uno son las siguientes:
el resultado como verdadero (true) o falso (false).

Signos Significado Ejemplo (when a=10, Signos


b=50)
La coordenada X donde se La dirección a la que apuntará el clon de robot El nombre del clon de robot que deseas
Igual ubicará el clon de robot que (N/n, E/e, O/o, S/s, W/w, el valor predeterminado es “e”) crear (no deben repetirse)
deseas crear (coordenada
Distinto de avenue)

Menor que

Menor o igual

Mayor que

Mayor o igual que

Práctica de
manipulación 14 Robot inteligente
de robots La coordenada Y donde se
La cantidad de beepers que El color del clon de robot que
ubicará el clon de robot que
tendrá el clon de robot que deseas crear (yellow/blue/light
Haremos que el robot encuentre la suma de las cantidades de beepers. deseas crear (coordenada street)
blue/purple/green)
deseas crear

Crearemos un programa para encontrar la suma de la cantidad de beepers ubicados en dos * Para el clon de robot no se pueden utilizar las funciones del sensor left_is_clear() y right_is_clear().
posiciones.
Al crear un robot, no es necesario guardar todas las propiedades. Observa el siguiente ejemplo
para crear cinco robots nuevos distintos del robot básico.

R1=UsedRobot(2)
R2=UsedRobot(2,3)
i=0 n=1 R3=UsedRobot(3,1,'S',colour='green')
while n<=2: R4=UsedRobot(5,colour='yellow')
move()
while on_beeper(): R5=UsedRobot(avenues=1,streets=2,orient_key='E',beepers=10,colour='blue')
pick_beeper() n=0
i=i+1 while R5.carries_beepers():
n=n+1
R5.put_beeper()
move()
while carries_beepers(): n=n+1
put_beeper() R5.move()
move() print n
turn_off()
turn_off()
Práctica de
Antes de ejecutar el programa Después de ejecutar el programa manipulación 15 Cómo duplicar un robot
de robots

Crearemos 4 robots y haremos que cada uno se mueva.

Crearemos un programa en el que cuatro robots reciban un valor al azar entre números
4
enteros del 0 al 10 y se muevan según ese valor.
Street

3
import random 5

RB=UsedRobot(1,2,colour='blue')
4
2 RG=UsedRobot(1,3,colour='green')

Street
RY=UsedRobot(1,4,colour='yellow') 3

1 d=random.randrange(10)
2
b=random.randrange(10)
1 2 3 4 5 g=random.randrange(10) 1
Avenue y=random.randrange(10) 1 2 3 4 5 6 7 8 9 10
for i in range(d): Avenue

move()
for j in range(b):
Se crea en la posición (Avenue:2, RB.move() 5
Street:1) apuntando hacia el valor for k in range(g):
predeterminado, el este (E).
RG.move() 4

for l in range(y):

Street
3
Se crea en la posición (Avenue:2,
Street:3) apuntando hacia el valor
RY.move()
predeterminado, el este (E). turn_off() 2

RB.turn_off() 1

Se crea en la posición (Avenue:3, Street:1) RG.turn_off()


1 2 3 4 5 6 7 8 9 10
apuntando a la dirección determinada, el sur
RY.turn_off() Avenue

(S). El color del robot se fija a verde (green). * random.randrange(número) es una función para crear números enteros aleatorios entre 0 y (el número seleccionado -1)

Notas para resolver problemas


Se crea en la posición (Avenue:5, Street:1)
R1=UsedRobot( apuntando hacia el valor predeterminado, el este
2)
R2=UsedRobot(2,3 (E). El color del robot se fija a amarillo (yellow).
)R3=UsedRobot(3,1,'S',colour='green')
R4=UsedRobot(5,colour='yellow')
R5=UsedRobot(avenues=1,streets=2,orient_key='E',beepers=10,colour='blue')
n=0
while R5.carries_beepers():
R5.put_beeper()
Se crea en la posición (Avenue:1, Street:2)
n=n+1
apuntando a la dirección predeterminada, el
R5.move() este (E). El color del robot es azul y se crea
print n con 10 beepers.
turn_off()
PASO1
Capacitación para controlar robots

Misión Nivel
1 Entregar el periódico
2 Saltar obstáculos
3 Visitar la tienda
4 Reparar el centro comercial
5 Verificar el semáforo
6 Ir al concierto en la ribera
7 Entrada en calor
8 Jugar al béisbol
9 Limpiar el parque de diversiones
10Construir un helipuerto
1-3
1-1 1-2
Me pregunto si estarán
realizando bien las entregas
¡AY! .

¡Puedo subir Llevemos el periódico a la


fácilmente la casa del abuelo!
colina!

1. Entregar el periódico Nivel 1. Entregar el periódico Nivel

1-1. Quiero girar a la derecha 1-3. Debo ir a entregar los periódicos

En realidad, no tenemos una función para girar a la derecha, únicamente tene ¡Ahora puedo ir a cualquier parte! Crearemos un programa para entregar periódicos (
mos una función
Utilizando paraturn_left(),
la función girar a la izquierda.
¿podrías hacernos girar a la derecha? beepers) a abuelo en la colina y regresar utilizando la función turn_right() que creamos anteriormente.
la casa del

LISTO COMPLETADO
Notas para resolver problemas

5 5

4 4

3 3

2 2

1-2. Quiero girar a la derecha


1 2 3 4 5 6 7 1 2 3 4 5 6 7
¡Ahora puedo subir la colina! ¿Qué tal si escribimos sobre cómo realizar movimientos?
Notas para resolver problemas
LISTO COMP 5RERW 0RYHPHQW 2
LETA
UGHU
5 5 DO
1 Girar a la izquierda
4 4 2 2 Mover
3
3 3
4
2 2 5
6
7
1 2 3 4 5 1 2 3 4 5 8

Sería conveniente crear la función para girar a la derecha como una función definida por el
usuario llamada turn_right().
Notas para resolver problemas
¡Oh, no! ¡Está bloquead
¡Los alcanzar
3--
o!
é!

! 1
2- ¡Bien! ¡Un nuevo récord
!
1 Debería regresa
r por hoy.

2. Saltar obstáculos Nivel 3. Visitar la tienda Nivel

2-1. Seré un vallista 3-1. Regresaré si la ruta está bloqueada


¡Oh! Están practicando deportes por aquí. Hay algunas vallas. ¿Qué tal si
Me duelen las piernas hoy, creo que no podré saltar el muro. ¿Podrías crear un pr
creamos un programa para saltar las vallas utilizando la función definida por ograma
para regresar si me topo con un muro?
el usuario? ¡Intentémoslo!
LISTO COMPLETADO
LISTO COMP
LETA
5 5
5 5 DO

4 4 4 4

3 3 3 3

2 2
2 2

1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10

1 2 3 4 5 1 2 3 4 5

Notas para resolver problemas Notas para resolver problemas


(1
Oh, ¿está Ok
¡Ok!
cerrado hoy? 4-1 ¡Ok!
¡SÍ!
3-2
¡Ji, ji! Ir de
compras es Amigos, marquemos
divertido. los muros
¿Tiene buenos
productos? colapsados.

3. Visitar la tienda Nivel 4. Reparar el centro comercial Nivel

3-2. Iré de compras a la tienda 4-1. Necesito marcar los muros colapsados

Necesito ir a comprar a la tienda. ¿Qué debería hacer si la tienda está cerrada? ¿Qué es esto? Algunos muros han colapsado alrededor del centro comercial y son muy peli
Por favor,crear un programa para regresar cuando la puerta de la tienda (muro) e
¿Podrías grosos. Si los muros colapsados con un beeper, el personal de mantenimiento los arreglará.
marcamos
stépuerta
la cerrada y para
esté saltar
abierta? cuando
Haz que la condición de la puerta cambie aleatoriamente (0 Crea un programa para recoger el beeper si el beeper está en el suelo mientras doy vueltas
o 1).
(utiliza randrange() de una biblioteca aleatoria) alrededor del centro comercial y para marcar el muro con un orificio al dejar caer el beeper.

LISTO ABIERTO Cuando la condición CERRADO Cuando la condición para LISTO COMPLETADO
para la puerta sea 1 la puerta sea 0. 10
9 9
5 5 5
8 8
7 7
4 4 4
6 6
5 5
3 3 3
4 4
3 3
2 2 2
2 2

1
1 2 3 4 5 6 7 8 9 1 1 2 3 4 5 6 7 8 9 1
1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 0 0

Notas para resolver problemas


Notas para resolver problemas
¿Dos beepers? ¡Estoy muy
Debo girar a la izquierda. ¡Mi corazón emocionado!
palpita! 6-1
5-1

Si sigo estas marcas


podré llegar al concierto.

5. Verificar el semáforo Nivel 6. Ir al concierto en la ribera Nivel

5-1. Quiero aprender a leer el semáforo 6-1. Ir al concierto en la ribera


Creo que ya casi llego al concierto en la ribera. Después de todo, el camino hacia el recital está Creo que ya casi llego al concierto en la ribera. Después de todo, el camino hacia el recital está
marcado con beepers. Si giro a la izquierda cuando encuentre un beeper y giro a la derecha marcado con beepers. Si giro a la izquierda cuando encuentre un beeper y giro a la derecha
cuando encuentre dos beepers, podré llegar al concierto. Crea un programa para cuando encuentre dos beepers, podré llegar al concierto. Crea un programa para
llegar al concierto. llegar al concierto.

LISTO COMPLETADO LISTO COMPLETADO


La señal se configura según la 8 8 Para distinguir las señales,
5 5
cantidad de beepers colocados 7 7 ¿qué instrucciones
4 4 aleatoriamente por el usuario 6 6 necesitamos?
en la intersección. 5 5
3 3 4 4 ¿Cómo trabajamos
con más de dos co
· 1 beeper: Girar a la derecha 3 3
2 2 2 2 ndiciones?
· 2 beepers: Girar a la izquierda
· 3 beepers: Ir en línea recta 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 ¿Qué tipos de movimientos
1 2 3 4 5 1 2 3 4 5 · 4 beepers: Regresar repetitivos existen?

Notas para resolver problemas Notas para resolver problemas


¡Ok!
7-
Debo llevarlo a la
estación de policía,

1
¿verdad?

6-2

Vamos a limpiar todo Fue un concierto muy ¡Guau! ¡Había dinero


rápidamente. divertido. en el suelo!

6. Ir al concierto en la ribera Nivel 7. Entrada en calor Nivel

6-2. Limpiaré el lugar del concierto 7-1. Quiero recoger los objetos que están en el suelo

Fue un concierto muy divertido, ¿no? Pero las personas dejaron demasiada basura. ¡Había dinero en el suelo! Primero lo levantaremos. Decidiré qué hacer después de levantarlo.
Necesito recoger toda la basura (beepers) y luego reunirla en un solo lugar. Crea un programa para que el robot recoja el dinero (beeper) y continúe moviéndose
hasta el final.
¿Podrías crear un programa con estas instrucciones?
LISTO COMENZAR COMPLETADO

LISTO COMPLETADO
5 5 5

5 5
4 4 4
4 4
Street

Street

3 3 3
3 3
2 2 2
2 2

1 2 3 4 5 6 7 1 2 3 4 5 6 7 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
Avenue Avenue

Notas para resolver problemas


Asume que la basura (beeper) siempre queda en el suelo en un lugar y que únicamente está en
la posición de la línea 1 (Street:1).
¿Qué tipos de movimientos repetitivos existen?
¿Qué deberíamos hacer para desechar la cantidad de basura recolectada en un solo lugar?

Notas para resolver problemas


¿Cuánto tiempo
No olviden queda? ¡Jonrón! ¡Corre a la base del bateador!
entrar en calor primero.

8-1
7-2 ¡GUAU!
¡GUA Debo correr
U!
aasegunda
segunda base
base

7. Entrada en calor Nivel 8. Jugar al béisbol Nivel

7-2. ¿Qué tal si intento una carrera corta? 8-1. Batearé un jonrón

Creo que necesito entrar en calor antes de jugar al béisbol. Si fijas el número del beeper ¡Viva! Llegó el momento que tanto esperé, ¡hora de jugar al béisbol! Batearé un jonrón.
a (Avenue:1, Street:1), correré hasta el muro. Sabes que ahora debes Crea un programa para ir a la primera, segunda y tercera base y regresar a la base
crear un programa con todo esto, ¿verdad? del bateador por adelantado, ya que estoy seguro de que batearé un jonrón.

LISTO CO COMP LISTO COMP


ME LETAD LETA
5 5 NZ 5O 5 5
DO
AR
4 4 4

Street
Street
Street

4 4
3 3 3

2 2 2 3 3

2 2
1 2 3 4 5 6 7 1 2 3 4 5 6 7 1 2 3 4 5 6 7
Avenue Avenue Avenue

Notas para resolver problemas 1 2 3 4 5 1 2 3 4 5

Notas para resolver problemas


¿Tal vez?
¡Uf! Puedo jugar después de
¡BIEN!
¡CORRE! limpiar esta área,
¿verdad?
9-1
¡Bam!
¡Oh! ¡Bateó
la pelota!
8-1

8. Jugar al béisbol Nivel 9. Limpiar el parque de diversiones Nivel

8-2. Puedo batear la pelota 9-1. Limpiemos la basura del parque de diversiones

¡Ok! Comencemos con el juego. Crea un programa para hacerme avanzar según El parque de diversiones es muy divertido. Pero también hay mucha basura.
el bateo Hay montones de basura acumulados en un lugar. Creo que deberíamos
Si el tipo de bateo está fijado con un beeper en (Avenue:2, Street: 1). Luego de
limpiar un poco. Crea un programa para recoger toda la basura (beepers)
avanzar, necesito mirar hacia el frente para el siguiente bateo, ¿no? y llevar la basura al basurero (Avenue:1, Street:2).

LISTO COMPLETADO LISTO COMPLETADO

5 5 5 5

4 4

Street
4 4 4

Street
Street

Street

3 3
3 3 3
2 2
2 2

1 2 3 4 5 6 7 8 9 1 1 2 3 4 5 6 7 8 9 10
Avenue 0 Avenue
1 2 3 4 5 1 2 3 4 5
Avenue Avenue
¿Qué debería hacer para recoger una cantidad de beepers? (usar bucle while)
El tipo de bateo se configura según la cantidad de beepers colocados frente al robot.
¿Cómo encontraré la basura?
· 1 beeper: Bateo
· 2 beepers: bateo y carrera a segunda base ¿Qué haré para encontrar la basura hasta toparme contra un muro? (usar bucle while)
· 3 beepers: bateo y carrera a tercera base
· 4 beepers: Jonrón Notas para resolver problemas
Notas para resolver problemas
Limpiar todo el ¡Qué hermosa vista!
parque de diversiones ¡Qué hermosa vist
Realmente es a!
es demasiado trabajo.
muy grande.
10-1
Lo es. 9-2
Por favor, yo quiero ir también

9. Limpiar el parque de diversiones Nivel 10. Construir un helipuerto Nivel

9-2. Limpiaré todo el parque de diversiones 10-1. Necesito dibujar un cuadrado grande

Ya terminé de limpiar esta área. Ya que estoy limpiando, ¿qué tal si limpio Oh. No podemos transportar tanta basura sin utilizar el helicóptero. Crea un programa
todo el parque de diversiones? Se puede hacer rápido si utilizo el enunciado para dibujar un helipuerto cerca de aquí. Primero deberás dibujar un cuadrado,
de repetición. Puedes crear un programa con todo esto, ¿verdad? No olvides el largo de cada lado es la cantidad de beepers colocados en (Avenue:1, Street:2),
que el basurero está en (Avenue:1, Street:2). a partir de (Avenue:2, Street:2).
LISTO COMPLETADO
LISTO COMPLETADO
5 5
7 7
4 4
6 6
Street
Street

3 3
5 5

Street

Street
2 2
4 4

3 3
1 2 3 4 5 6 7 8 9 1 1 2 3 4 5 6 7 8 9 1 2 2
Avenue 0 Avenue 0

¿Qué debería hacer para recoger una cantidad de beepers? (usar bucle while) 1 2 3 4 5 6 7 1 2 3 4 5 6 7
Avenue Avenue
¿Cómo encontraré la basura?
¿Qué haré para encontrar la basura hasta toparme contra un muro? (usar bucle while) El beeper colocado en (Avenue:2, Street:1) se fija de manera aleatoria por
el usuario (5 o 6).
Notas para resolver problemas
Notas para resolver problemas
80 81

PASO 2
Solicitud de despacho de robots
Misión Nivel
1 Diseñar una pirámide
2 Limpiar el lugar de construcción de la pirámide
3 Dibujar un espiral
4 Cultivar flores en un oasis
5 Entregar pizzas a los apartamentos del hormiguero
6 Repeler a la araña camello, la guardiana de la cueva
7 Repeler al escorpión gigante, el guardián de la salida
8 Salvar a la princesa atrapada en el laberinto
9 Cuidar el jardín de flores de la princesa
10 Calcular el tamaño de la habitación de la princesa
11 Limpiar la torre del cielo
12 Cuidar el jardín de flores del cielo
1. Diseñar una pirámide Nivel

ETAPA A 1-1. Necesito dibujar un triángulo


Prepárense para esta
etapa Recibí la primera solicitud. Es una solicitud para diseñar la pirámide en el
¡OK!
sitio de construcción. Lee la solicitud atentamente y crea un programa.

¡Los robots
son Solicitud
geniales!
· Dibuja un triángulo rectángulo isósceles con una medida determinada para la base y la altura.
· El punto de inicio del triángulo es (Avenue:2, Street:2), dibújalo para que el tamaño no sea
mayor que el del mundo.
¡Uf! ¿Cuándo es
Soy la esfinge. Dibuja el
la fecha límite?
triángulo necesario para · Provee suficientes beepers para el robot.
construir una pirámide.
¡No sean Si no lo haces, ¡te comeré!
LISTO COMPLETADO
holgazanes y
apresúrense!
7 7

6 6

5 5
¿Cuál es la mejor manera
1-1

Street
Street
de deshacernos de la 4 4
basura en el sitio de
Empieza a verse construcción? 3 3
como un triángulo.
2 2

1 2 3 4 5 6 7 1 2 3 4 5 6 7
Avenue Avenue

¿Cómo debería moverse el robot para formar un triángulo con beepers?


¿Cómo deberías configurar el movimiento diagonal del robot?
¡Vamos a
Debería irme luego limpiar de
de limpiar toda la inmediato!
Notas para resolver problemas
basura.
2-1

Solicitud 1 Solicitud 2

Diseñar una pirámide Limpiar todo el lugar de construcción


de la pirámide
Notas para resolver problemas
2. Limpiar el lugar de construcción de la pirámide Nivel

2-1. Quieren retirar los obstáculos (beepers).


El cliente del sitio de construcción de la pirámide parece satisfecho con el resultado de la solicitud.
Hemos recibido otra solicitud. Creo que podemos lograrlo mediante la repetición de
movimientos según una función definida por el usuario. ¿Podrías crear un programa?

Solicitud

Limpia todos los obstáculos (beepers) ubicados en el lugar de construcción de la pirámide.

LISTO COMPLETADO

11 11
10 10
9 9
8 8
7 7
6 6
5 5
4 4
3 3
2 2

1 2 3 4 5 6 7 8 9 10 1 1 2 3 4 5 6 7 8 9 10 1

Para recoger todos los beepers, ¿qué movimientos deberíamos repetir?


Dibujaremos los movimientos del robot con lápiz.
¿Existe alguna solución más efectiva?
Notas para resolver problemas
3. Dibujar un espiral Nivel

ETAPA B 3-1. Necesito dibujar un espiral

Recibí una solicitud para un festival de Halloween. Quieren que dibuje un espiral en
el centro del lugar del festival. Lee la solicitud atentamente y crea un programa.

Solicitud

· Dibuja un espiral que comience en el centro del mundo y gire en sentido antihorario.
· Al final del espiral, marca la cantidad de beepers que utilizaste.
¿Por qué la audiencia · Provee suficientes beepers para el robot.
está llena de zombis?

LISTO COMPLETADO

9 9
¡Oh! ¡Escucho
la música! 8 8
7 7
6 6
Si sigo el espiral, llegaré 5 5
al lugar del festival.
4 4
3 3
3-1 2 2
¡GUAU!
¡Uf! ¿Cuánto más
van a seguirme? 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9

Dibujaremos un espiral con un número que aumente progresivamente.

Notas para resolver problemas

Solicitud 3

Dibujar un espiral
4. Cultivar flores en un oasis Nivel

ETAPA C 4-1. Cultivar flores en un oasis

Esta vez he recibido una solicitud poco común. El cliente solicitó limpiar el lecho de
las flores junto al oasis. Lee la solicitud atentamente y crea un programa.
Quiero que
quede hermoso
como este. Solicitud

· Limpia el lecho de flores tetragonal desde (Avenue:2, Street:1) hasta (Avenue:6,


Street:5).
Por favor,
¡crezcan · Si ya hay una semilla (beeper) en el mismo lugar, deja una y recoge el resto.
rápido!
· Para los lugares sin semillas (beepers), deja una semilla (beeper).
¡Plantaremos
semillas en
intervalos regulares!
LISTO COMPLETADO
4-1
6 6

5 5
¿Está seguro de
Oh. ¿Qué es que pidió pizza? 4 4
este agujero?
3 3

2 2

¡Oh, no! ¡Ayúdenme! 1 2 3 4 5 6 1 2 3 4 5 6

Notas para resolver problemas

5-1

¡Voy en
camino!
¿Alguien
pidió pizza?

Solicitud 4 Solicitud 5

Entregar pizzas a los apartamentos


Cultivar flores en un oasis
del hormiguero
Notas para resolver problemas

5. Entregar pizzas a los apartamentos del hormiguero Nivel

Recibí una solicitud de un apartamento del hormiguero junto al oasis.


Esta vez, es una solicitud de entrega. Ya que he recibido esta solicitud por
escrito, lee atentamente y escribe un programa.

Solicitud

· El número del apartamento donde debo entregar la pizza está designado con un
beeper en la posición (Avenue:2, Street:1)
· La pizza (beeper) para entregar se encuentra en la posición (Avenue:3, Street:1). (11
tipos de pizza)
· Haz que el robot verifique el número del apartamento y entregue la cantidad exacta de
pizzas (beepers) a la ubicación exacta.

LISTO COMPLETADO

5 5

4 4

3 3

2 2

1 2 3 4 5 6 7 8 9 1 1 2 3 4 5 6 7 8 9 1
Avenue 0 Avenue 0

Notas para resolver problemas


6. Repeler a la araña camello, la guardiana de la cueva Nivel

ETAPA D 6-1. Enséñame a hacer una suma de un solo dígito


Es una solicitud para repeler a la araña camello que lanza problemas matemáticos en la
entrada de la caverna. Las sumas son fáciles, pero crear un programa que realice
sumas parece difícil.

¡Lo haremos juntos! Solicitud


¡Ja, ja, ja!
Si no resuelven el · Ahuyenta a la araña camello resolviendo el problema de suma con dígitos simples.
problema, ¡prepárense
para más problemas! ¡Ayuda! · Muestra la respuesta con beepers al sumar los números ubicados en (Avenue:4,
¡Ok!
6-1 Street:2)
y (Avenue:4, Street:3).
· Coloca el beeper para que las decenas aparezcan en (Avenue:3, Street:1) y las unidades
aparezcan en (Avenue:4, Street:1).
Je, je. Es fácil. ¡Está bien!

LISTO COMPLETADO
¡Oh, no!
Estoy 5 5
atrapado

4 4

Street
Street
3 3
¡Uf! ¿Es un
escorpión esta vez? 8-1 ¿Dónde estoy?
¡Sálvenme, por favor! 2 2

7-1 1 2 3 4 5 1 2 3 4 5
Avenue Avenue
Puedes contar Resiste un
conmigo. minuto, Princesa. ¿Cuáles son los sensores para detectar la presencia de un beeper?
¿Cómo puedes implementar el movimiento repetitivo del robot para recoger todos los beepers?
¿Cómo puedes distinguir la cantidad de beepers que el robot recoge entre las decenas y las
unidades?
¡Esta vez el problema es más difícil!
¡Ja, ja! ¿Podrán responder Para utilizar la cantidad de beepers recolectados en una función diferente,
correctamente?
¿qué variable deberías declarar?
¡Viva! ¡Logré pasar!

Notas para resolver problemas

Solicitud 6 Solicitud 7 Solicitud 8


Repeler a la araña camello, Repeler al escorpión gigante, Salvar a la princesa
la guardiana de la cueva el guardián de la salida atrapada en el laberinto
7. Repeler al escorpión gigante, el guardián de la salida Nivel 22 move()
23 repeat (put_beeper ,carry)
24
7-1. Enséñame a sumar con dos dígitos, también 25 def compute():
4

26 repeat(pick,2)
¡De la sartén al fuego! A la salida de la cueva, un escorpión gigante bloquea el paso 27 repeat(turn_left,2)
con un problema de suma más difícil. Escribamos un programa para ahuyentarlo. 28 repeat(move,2)
29 result_put()
30
Solicitud 31 repeat(move,3)
· Ahuyenta al escorpión gigante al resolver el problema de suma con dos números de dos dígitos. 32 turn_left()
33 compute()
· Al sumar un número de dos dígitos (por ej., 29) que aparece en (Avenue:3, Street:3). y (Avenue:4, Street:3). 34 repeat(turn_left,3)
y otro número de dos dígitos (por ej., 96) que aparece en (Avenue:3, Street:2) y (Avenue:4, Street:2). 35 sum += carry
muestra el resultado con un beeper. 36 compute
37 move()
· Coloca el beeper para mostrar el lugar de las centenas en (Avenue:2, Street:1), las decenas
38 turn_off()
en (Avenue:3, Street:1) y las unidades en (Avenue:4, Street:1) para que los números
sean visibles.
1 Si el robot encuentra el beeper, ¿qué instrucción debe seguir?
LISTO COMPLETADO →
5 5 2 ¿Cómo debería utilizarse la variable a, que almacenó la cantidad de beepers que el robot recogió?

4 4
3 ¿Cuál es la función de la variable carry (acarreo)?
Street
Street

3 3

2 2
4 ¿Cuál es la instrucción que se debe repetir utilizando el valor de la variable carry?

1 2 3 4 5 1 2 3 4 5
Avenue Avenue Notas para resolver problemas
Escribiremos las instrucciones en el recuadro del programa sugerido

1 a=0
2 sum = 0
3 carry = 0
4
5 def pick():
6 move()
7 global a, sum
8 while on_beeper():9
9 pick_beeper() 1
10 a += 1
11 sum += a 2
12 repeat(put_beeper,a)
13 a=0
14
15 def result_put():
16 global sum, carry
17 repeat(pick_beeper,carry)
18 carry = sum/10 3
19 repeat(put_beeper,sum-(carry*10))
20 sum = 0
21 repeat(turn_left,3)
El programa de ejemplo anterior es un método para salir del laberinto con
8. Salvar a la princesa atrapada en el laberinto Nivel
la regla de la mano derecha. Escribiremos un programa utilizando la regla
8-1. Necesito encontrar a la princesa de la mano derecha.
1
2
Es una solicitud de emergencia. La princesa había salido a pasear cuando quedó
3
atrapada en el laberinto. Crea un programa para llegar a la princesa explorando el
laberinto, ¡rápido! 4
Solicitud 5
Solicitud 6
7
· Haz que el robot explore el laberinto automáticamente y llegue a la princesa (beeper).
8

LISTO COMPLETADO Crea un programa para salir de un laberinto por ti mismo. (El tamaño del mundo deberá ser mayor
que 10x10).
7 7
Notas para resolver problemas
6 6

5 5

4 4

3 3

2 2

1 2 3 4 5 6 7 1 2 3 4 5 6 7

Dibujaremos la trayectoria al predecir el camino de exploración del robot


según el programa de ejemplo que aparece debajo.

1
while not on_beeper():
2
2 if right_is_clear():
3
3 repeat(turn_left,3)
4
4 move()
5
5 elif front_is_clear():
6
6 move()
7
7 else :
8
8 repeat(turn_left,2)
9
9 turn_off()
10
10
11
1
12
12
13
13
14
14
15
15
9. Cuidar el jardín de flores de la princesa Nivel

ETAPA E 9-1. Ahora soy el jardinero de la princesa

La princesa nos contrató como jardineros para agradecernos por haberla


rescatado. Pero...es complicado. ¿Podrías crear un programa?

Solicitud
¡Qué bien
huelen las flores! · Planta tulipanes en los lechos vacíos.
· Retira las flores secas y planta rosas en su · 1 beeper: flor seca
Hay que retirar las lugar. · 2 beepers: flor marchita
9-1 flores secas.
· Riega las flores marchitas para que florezcan. · 3 beepers: flores nuevas
· Descarta las flores secas que arrancaste en un · 4 beepers: tulipán
¡Hay que regar basurero designado (Avenue:11, Street:7). · 5 beepers: rosa
las flores marchitas! Cuiden muy bien
de mi jardín de flores · Provee suficientes beepers para el robot.

LISTO COMPLETADO

8 8
7 7
6 6

Street
Street
5 5
Quiero averiguar 4 4
La habitación de el tamaño de esta 3 3
la princesa está aquí. habitación.
2 2

Huelo un dulce aroma. 10-1 1 2 3 4 5 6 7


Avenue
8 9 0 1 2 1 2 3 4 5 6 7
Avenue
8 9 0 1 2

En esta misión debemos resolver problemas según una variedad de condiciones. ¿Cuáles son las
¡Mi corazón
palpita! instrucciones necesarias? ¿Cómo podemos conocer la cantidad de beepers que hay en el suelo?
No hay
problema. ¿Cómo debería moverse el robot?
¿Cómo deberías declarar las variables?

Notas para resolver problemas

Solicitud 9 Solicitud 1
0
Cuidar el jardín de flores de la princesa Calcular el tamaño de la habitación
de la princesa
10. Calcular el tamaño de la habitación de la Nivel 22
23 elif front_is_clear(): Pantalla
princesa 10-1. Necesito contar la cantidad de muros 24 move()
25 1 i=
26 else: 2 count =
27 turn_left() 3 i=
La princesa ha enviado una nueva solicitud. Esta vez, es una solicitud para medir el 28 count = 4 4 count =
perímetro de la habitación. Es un nuevo tipo de solicitud, pero tú puedes hacerlo, ¿verdad? 29 5 i=
30 while not on_beeper(): 6 count =
31 count += travel_wall() 7 i=

Solicitud 32 if left_is_clear(): 8 count =


33 turn_left() 9 i=
· Haz que el robot calcule cuántos muros rodean a la habitación y muestre el resultado. 34 move() 10 count =

· Haz que el robot comience con un beeper para marcar la posición de inicio. 35 elif not right_is_clear(): 11 i=

36 turn_around() 12 count =
· Es una solicitud para contar la cantidad de muros, no la cantidad de beepers. Necesitas
37 count += 2 13 i=
comprender la función facing_north()※. 38 else: 14 count =
39 turn_right() 15 i=
LISTO COMPLETADO 40 count += 1 16 count =
41 17 i=
7 7 print "count = ", count 2
18 count =
42
6 6
43 19 perimeter wall count =
44 pick_beeper()
5 5 45
46 while not facing_north():
4 4 turn_left()
47
3 3 48 count += 1

2 2
49
50 turn_right()
51 print "perimeter wall count = ", count 3
1 2 3 4 5 6 7 1 2 3 4 5 6 7 turn_off()
※ facing_north(): es una función para verificar si el robot está apuntando hacia el norte. Es verdadera cuando el
robot apunta hacia el norte y falsa cuando el robot no apunta hacia el norte.
Notas para resolver problemas
Observa la respuesta de ejemplo y escribe el valor resultante para ①, ②, ③ que aparecerá en
pantalla

1 def turn_around():
2 repeat(turn_left,2)
3
4 def turn_right():
5 repeat(turn_left,3)
6
7
8 def travel_wall(): i = 0
9 while front_is_clear() and not left_is_clear():
10 move()
11 i += 1
12
13 print "i =", i 1
14 return i
15
16 put_beeper()
17 count = 1
18
19
if left_is_clear():
20
turn_left() move()
21
11. Limpiar la torre del cielo Nivel

ETAPA F 11-1. Necesito limpiar con un clon de robot


Hemos completado todas
las solicitudes de despacho La princesa debe estar satisfecha con el resultado de la solicitud. Recibí una solicitud de
Eso es
Ángel, ¿cómo realmente un ángel por recomendación de la princesa. Lee la solicitud atentamente y crea un programa.
estás? increíble.

Solicitud

Las flores están · Limpia todas las plumas (beepers) del suelo de la Torre del cielo.
creciendo bien porque
salió el sol. · Haz que cada robot limpie la mitad de la torre utilizando la función UsedRobot() para una
12-1 limpieza más rápida,
LISTO COMPLETADO

6 6

5 5

Street
4 4

Street
Supongo que los ángeles
también aman las flores.
3 3

2 2
Colocaré las flores
secas en un solo lugar

1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
¡Guau! ¡Los robots Avenue Avenue
tienen la habilidad de
duplicarse!
Cómo utilizar la función UsedRobot()

11-1 R1 = UsedRobot(avenues=1, streets=1, orient_key=‘E’, beepers=0, name=‘robot’, colour=‘grey’)


¡Vamos a limpiar la
Torre del cielo! ¡Anímense!
avenue la coordenada X donde se ubicará el clon de robot que deseas crear (coordenada avenida)
streets la coordenada Y donde se ubicará el clon de robot que deseas crear (coordenada calle)
orient_key la dirección a la que apuntará el clon de robot (N/n, E/e, O/o, S/s, W/w, el valor predeterminado es e)
beepers el número de “zumbadores” que tendrá el clon de robot que deseas crear
Colocaremos la Colocaremos
basura la basura name el nombre del robot que deseas crear (no deben repetirse)
en el basurero en el basurero
colour el color del clon de robot que deseas crear (grey [valor predeterminado]/yellow/blue/light blue/purple/green)

Notas para resolver problemas

Solicitud 9 Solicitud 10

Cuidar el jardín de flores de la princesa Calcular el tamaño de la habitación de la princesa


12. Cuidar el jardín de flores del cielo Nivel Notas para resolver problemas

12-1. Debo cuidar el jardín de flores del cielo con el clon de robot

Supongo que los ángeles también cultivan flores. He recibido una solicitud
para cuidar el jardín de flores del cielo. La jardinería es complicada.
Lee la solicitud atentamente y crea un programa.

Solicitud

· Planta tulipanes en los lechos vacíos.


· 1 beeper: flor seca
· Arranca las flores secas y planta rosas en su
lugar. · 2 beepers: flor marchita
· Riega las flores marchitas para que florezcan. · 3 beepers: flores nuevas
· Descarta las flores secas que arrancaste en un · 4 beepers: tulipán
basurero designado (Avenue:11, Street:7).
· Haz que el clon de robot R1 coloque un beeper en · 5 beepers: rosa
(Avenue:8, Street:6) y muestre la cantidad de tulipanes
restantes.
· Haz que el clon de robot R3 coloque un beeper en (Avenue:9,
Street:6) y muestre la cantidad de rosas restantes.
· Provee suficientes beepers para el robot.
LISTO COMPLETADO

8 8

7 7

6 6

5 5
Street
Street

4 4

3 3

2 2

1 2 3 4 5 6 7 8 9 0 1 2 1 2 3 4 5 6 7 8 9 0 1 2
Avenue Avenue

Notas para resolver problemas


106 107

PASO 3
PLANTILLA
DE PROYECTO

1 Cómo crear una capacitación virtual 1


2 Cómo resolver la capacitación virtual 1
3 Cómo crear una capacitación virtual 1
4 Cómo resolver la capacitación virtual 2
5 Guía de tareas
6 Cuadro de asignación de roles
7 Plan de ejecución de proyecto en equipo
8 Hoja de sinopsis de la actividad
9 Ficha
10 Formulario de evaluación del equipo
11 Formulario de autoevaluación
Plantilla de proyecto
1. Cómo crear una capacitación virtual 1
1-3. Código de respuesta
Crearemos un problema para un tamaño de mundo de 5x5

1-1. Quiero girar a la derecha

SOLICITUD

1-2. Composición del mundo


LISTO COMPLETADO

5 5

4 4

3 3

2 2

1 2 3 4 5 1 2 3 4 5

Notas para resolver problemas


2. Cómo resolver la capacitación virtual 1

Resolveremos el problema para un tamaño de mundo de 5x5.


2-3. Código de respuesta

2-1. Definición del problema

SOLICITUD

2-2. Composición del mundo


LISTO COMPLETADO

5 5

4 4

3 3

2 2

1 2 3 4 5 1 2 3 4 5

Notas para resolver pro


blemas
3. Cómo crear una capacitación virtual 2

Crearemos un problema para un mundo grande de más de 5x5 3-3. Código de respuesta

3-1. Definición del problema

SOLICITUD

2-2. Composición del mundo


LISTO COMPLETADO
4. Cómo resolver la capacitación virtual 2

Resolveremos el problema para el mundo grande de más de 5x5.


4-3. Código de respuesta

4-1. Definición del problema

SOLICITUD

4-2. Composición del mundo


LISTO COMPLETADO

Notas para resolver pro


blemas
5. Guía de tareas 6. Cuadro de asignación de roles

Nombre de la tarea: oo Robot despachado Nombre del equipo

Guía de tareas
Líder del equipo
Para cada equipo, creen 3 situaciones de la vida real que puedan resolverse utilizando
robots y escriban una sinopsis que pueda conectarlas.
Construyan un mundo que se adapte a la sinopsis y coordinen las misiones detalladas.
Nombre del miembro Rol
Deberán preparar una ficha con los contenidos que hayan producido.

01 Al asignar roles a los miembros, cada equipo deberá asegurarse de que ningún miembro realice
demasiado trabajo o quede excluido.

02 Esta tarea debe realizarse con problemas que puedan resolverse con robots y situaciones que
puedan ocurrir en la vida real.

03 Cada equipo deberá guardar los archivos producidos durante la clase del proyecto en la biblioteca del
laboratorio de aprendizaje y prepararse para crear una carpeta con copias en limpio.

04 Cada equipo deberá finalizar un paso antes de avanzar al siguiente. Incluso si un miembro del equipo
no ha terminado la tarea asignada, todo el equipo deberá resolver el problema en conjunto y luego
avanzar al siguiente paso.

05 Después de completar la ficha, cada equipo deberá preparar un informe sobre el proceso de avance del proyecto en forma de

presentación y presentar los contenidos. El tiempo dado para la presentación es de 5 minutos para cada equipo

El orden de progreso de la tarea

Módulo 1 Conformación de equipos, asignación de roles y plan de 1 hora


ejecución de manera oral
Módulo 2 Recolectar datos para la tarea, escribir sinopsis de la 1 hora
situación del problema
Módulo 3 Crear el mundo y establecer cada misión, completar la ficha 2 horas

Módulo 4 Presentación y evaluación del trabajo de cada equipo 1 hora

Módulo 5 Organizar un concurso con los problemas presentados 1 hora


por cada equipo
7. Plan de ejecución de proyecto en equipo 8. Hoja de sinopsis de la actividad

Nombre del equipo Nombre del equipo

Miembro Miembro

Tiempo Plan Problema Sinopsis

Problema 1

Problema 2

Problema 3
9. Ficha 10. Formulario de evaluación del equipo

Nombre del equipo Nombre del equipo

Miembro Miembro

9-1. Definición del problema


Clasificación Contenidos

Nombre del
equipo
a evaluar
Guía de tareas

Puntos fuertes

9-2. Pantalla del problema


LISTO COMPLETADO
Puntos para
mejorar

Opinión
11. Formulario de autoevaluación

Nombre del equipo

Miembro

Clasificación Contenidos

Mi nombre

Mi rol

Puntos fuertes

Puntos para mejorar

También podría gustarte