Está en la página 1de 128

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
fácil.

Aun así, incluso con la ayuda de este libro visual, cuando empiecen a aprender con RUR-PLE,
esperen sorprenderse con el comportamiento del robot: la forma en que hace exactamente lo que le
indicas y no lo que quisiste decirle. Un estudiante que usa RUR-PLE le dijo a su maestro: “¡Es tan
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á
Andre Roberge es un físico cuyo pasatiempo es la programación. Después de
obtener su doctorado, desarrolló varios programas de computadora (incluido RUR-
PLE) mientras trabajaba como profesor en tres universidades, como la Universite
Sainte-Anne en Canadá, de la que ha sido presidente durante los últimos 10 años.
En 2002, recibió el premio Queen Elizabeth Jubilee, y actualmente enseña Física e
Hidráulica en la Universite Sainte-Anne. Al mismo tiempo, es padre de dos niños
que también estudian Hidráulica.
Cómo usar el material
La “Bienvenido al mundo Rurple” está formado por 12 contenidos de aprendizaje e incluye una tarea
composición práctica llamada “Práctica de manipulación de robots” que te ayudará a entender. Como tareas que el
estudiante puede vincular con los contenidos de aprendizaje, se incluye la “Capacitación para controlar
de este libro
robots” (con un nivel de dificultad de 1 a 4) y la “Solicitud de despacho de robots” (con un nivel de
dificultad de 3 a 5). La composición del libro es la siguiente:

La información general necesaria para desarrollar RUR-


PLE y la introducción a Python se incluyen a modo de
historieta.

Nota
La guía del método de instalación de
RUR-PLE y Python

Contenido de aprendizaje
Aprender el concepto de la programación
mediante RUR-PLE

Información adicional y
explicación de conceptos

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

El movimiento del personaje se muestra para


ayudar a entender el contexto del problema de
la “Práctica de manipulación del robot”.

Capacitación para controlar robots


Tarea de práctica en forma de misión relacionada con el
Se muestra el nivel de
“Contenido de aprendizaje” con un nivel de dificultad de 1 a 4.
dificultad (1 a 5)

El movimiento del personaje se muestra para


ayudar a entender el contexto del problema de
“Capacitación para controlar robots”.

Solicitud de despacho de robots


Tarea de práctica en forma de misión relacionada

Página de introducción para generar interés al


construir cada tarea de “Solicitud de despacho de
robots” en forma de mapa
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
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
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
Solicitud de despacho de robots) se combinan en la lección según los contenidos de aprendizaje.
combinan en la lección según los contenidos de aprendizaje.

Contenidos de NIVEL 1a4 Capacitación para


aprendizaje
controlar robots

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

El manual cuenta con un total de 20 lecciones; para las lecciones 1 a 12, los contenidos de aprendizaje
presentados en el libro y en las tareas de la misión (Capacitación para controlar robots y Solicitud de despacho de
robots) se realizan en conjunto en la clase, y para las lecciones 13 a 16, la clase se realizará en un entorno en el
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
lecciones anteriores. (Consulte el Método de enseñanza y aprendizaje para maestros de cada lección).

Cada lección está formada por los


Contenidos de aprendizaje y las Tareas
de la misión, y todos los contenidos de
este libro se pueden aprender con el
Mapa mundial (imagen de la izquierda).
La composición del contenido para
cada lección se da de la siguiente
manera.

Tema de cada lección

Objetivos para cada lección

Contenidos de aprendizaje: contenidos a


aprender para la lección correspondiente
Capacitación para controlar robots: tareas
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
de robots

Capacitación para Solicitud de


controlar robots despacho de robots

Ingresar Mapa de la misión/Resumen de la aventura

Presentación de personajes/Prólogo

Nota Instalación de RUR-PLE


Instalación y ejecución de Python

1 Comienzo de la programación
Contenidos
de 2 Aspectos básicos de RUR-PLE

3 Función para el movimiento | Práctica de manipulación de robots 01, 02, 03


aprendizaje
4 Qué hacer en cada caso | Práctica de manipulación de robots 04, 05

5 ¿Verdadero o falso? | Práctica de manipulación de robots 06

6 La variable, un recipiente para guardar información | Práctica de manipulación de robots 07

7 Entrada y salida de datos


8 Las cuatro operaciones matemáticas también se pueden realizar con el programa | Práctica

9 Varias formas de información | Práctica de manipulación de robots 10, 11

10 Los trabajos competitivos se pueden realizar de forma conveniente | Práctica de manipulación de r


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
1 Entregar el periódico
Capacitación
para controlar 2 Saltar obstáculos

3 Visitar la tienda
robots
4 Reparar el centro comercial
5 Verificar el semáforo
6 Ir a un concierto en la ribera
7 Entrada en calor
8 Jugar al béisbol
9 Limpiar el parque de diversiones

10 Construir un helipuerto

Solicitud de 1 Diseñar una pirámide

2 Limpiar el lugar de construcción de la pirámide


despacho de
3 Dibujar un espiral
robots
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


a de manipulación de robots 08, 09 11 Limpiar la torre del cielo
12 Cuidar el jardín de flores del cielo
robots 12, 13 53

Proyecto Plantilla
Entender RUR-PLE
Mapa de la misión d
Podrás instalar el programa RUR-PLE y
usar las funciones básicas.
Podrás realizar una manipulación sencilla
mediante las funciones básicas de RUR-PLE. 02 Función definida por el usuario FIN
Podrás definir y ejecutar las
Contenidos de
LISTO funciones definidas por el usuario.
aprendizaje | 1, 2, 3
Podrás resolver los problemas mediante las
funciones.

Contenidos de aprendizaje | 3
Función del sensor y operador lógico
Capacitación para controlar robots | 1, 2
Solicitud de despacho de robots | 1, 2
Podrás comprender la función del sensor de LISTO
RUR-PLE y ejecutarlo según las condiciones.
Comprenderás los conceptos de enunciados
condicionales y operadores lógicos.
Variable
Podrás resolver problemas mediante
enunciados condicionales y operadores
Podrás comprender el concepto de
lógicos.
variable y escribir un programa que
distinga variables locales y globales.
Contenidos de aprendizaje | 4, 5
Podrás resolver los problemas
Capacitación para controlar robots | 3, 4
LISTO mediante las variables.

Contenidos de aprendizaje | 5
Capacitación para controlar robots | 5, 6 LISTO
Función del sensor y operador lógico

Podrás comprender el proceso de


entrada y salida de datos, e
implementarlo durante la práctica.

Podrás resolver los problemas


Tipos de información, lista y conjunto
mediante operadores matemáticos.
Podrás comprender varios tipos de
información y usarlos en la situación
Contenidos de aprendizaje | 7, 8
LISTO correspondiente.
Comprenderás los conceptos de lista
y conjunto, y podrás resolver los
problemas.
Enunciado de repetición y
Contenidos de aprendizaje | 9
LISTO
función range ( )

Podrás comprender la estructura de


un bucle básico y un bucle anidado. INICIO
Podrás resolver los problemas
Enunciado de repetición
mediante el enunciado de y operador de
repetición. comparación
Podrás resolver problemas mediante
Podrás implementar un bucle for
enunciados de repetición y operadores de
mediante la función range ( ).
comparación.

Contenidos de aprendizaje | 11
Contenidos de aprendizaje | Solicitud
Capacitación para controlar robots | 7, 8 LISTO
de despacho de robots 7, 8 | 3 LISTO

Comprender el enunciado de control Uso del enunciado de control I


Podrás comprender los enunciados de control con Podrás resolver los problemas
las estructuras de secuencia, condición y mediante el enunciado de control.
repetición.
Podrás resolver los problemas mediante estos Solicitud de despacho de robots | 6, 7, 8
enunciados de control.
LISTO

Capacitación para controlar robots | 9, 10


Solicitud de despacho de robots | 4, 5
LISTO
del mundo RUR-PLE Programación orientada
Podrás escribir un programa
que produzca y controle una
cantidad de objetos robot
mediante la clase UsedRobot.

Mapa de la misión del mundo Uso del enunciado de control II Contenidos de aprendizaje | 11
Solicitud de despacho de robots | 11,
RUR-PLE Podrás resolver los problemas 12
LISTO
mediante el enunciado de control.
Debes colocar el adhesivo de misión completa
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
I
Cuando resuelvas situaciones
problemáticas de otros amigos, podrás
Implementación de problemas I
compararlas con tu problema.

Podrás definir la situación problemática


dentro de un mundo de 5x5. A medida que resuelvas situaciones
problemáticas de otros amigos,
encontrarás contenidos que requieran
Podrás diseñar e implementar un modificaciones o adiciones, y podrás
algoritmo para resolver problemas que
se adapte a una situación específica. compartir tu opinión.

Podrás elegir un problema bien


Proyecto | 1 LISTO diseñado entre los problemas que
crearon otros amigos.

Proyecto | 2
LISTO
Implementación de problemas II

Podrás definir una situación Resolución de problemas II


problemática superior al 5x5 del
tamaño del mundo.
Cuando resuelvas situaciones
Podrás diseñar e implementar un problemáticas de otros amigos, podrás
algoritmo para resolver problemas que compararlas con tu problema.
se adapte una situación específica.
A medida que resuelvas situaciones
Proyecto | 3 problemáticas de otros amigos,
LISTO encontrarás contenidos que requieran
modificaciones o adiciones, y podrás
compartir tu opinión.
Organización del equipo y plan
de operación Podrás elegir un problema bien
diseñado desde los problemas
Podrás elegir un líder y el nombre que crearon otros amigos.
del equipo, y compartir las tareas.
Proyecto | 4 LISTO
Podrás leer una guía de tareas y escribir un
plan de desempeño para la tarea.

Proyecto | 5, 6, 7 LISTO Producción de una ficha de trabajo

Podrás fijar una misión y crear el


mundo para cada sinopsis.

Recolectar información y Podrás implementarla mediante RUR-


PLE y escribir una ficha de trabajo para
escribir la sinopsis
una competencia.
Podrás recopilar información para la tarea,
Proyecto | 9
tener un debate según tu experiencia y
LISTO
recopilar opiniones.

Según las opiniones recopiladas, podrás


escribir una sinopsis para una situación Presentación y evaluación del
problemática. producto
Proyecto | 8 LISTO Podrás brindar una presentación sobre
el proceso de creación del producto

Podrás evaluar según los criterios


de evaluación basados en los
contenidos de la presentación.

Proyecto | 10, 11 LISTO


SINOPSIS
Resumen de la aventura de programación

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
robots sin experiencia para que sean buenos y mantengan la paz del Mundo Rurple al completar varias misiones
con robots bien entrenados.
Por esto, tienes que elegir entre Red-bot, Blue-bot y Green-bot, y aprender la programación básica, como
“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
a programar un robot.
Cuando termines la capacitación, comenzarás el nivel “Solicitud de despacho de robots”. La misión de
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
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.

1-3
Puedo salir a jugar
después de limpiar
este lugar, ¿verdad?

Entreguemos este
periódico a la casa
de mi abuelo.

5-1 9-1

Estoy Por favor, cuida mucho


llegando mi jardín de flores.

¿Alguien pidió
una pizza?
PERSONAJES
Compañeros de aventura

Red-bot
El robot rojo es saludable y fuerte. Suele cometer errores, ya que actúa
sin pensar, pero a la hora de enfrentarse a una crisis es el mejor.

Green-bot
El robot verde es muy entrometido. Siempre tiene mucha curiosidad y
desea conocer más sobre Python en particular. A veces, hace muchas
preguntas y sus amigos se agotan.

Blue-bot

Los pensamientos creativos son la especialidad del robot azul. Tiene


muchos conocimientos pero su manera brusca de hablar es una falla.
Sin embargo, siempre tiene nuevas ideas y no se cansa de responder
todas las preguntas de Green-bot.

Old-bot
Robot viejo y sabio que es respetado por todos los robots. Lo
consideran un robot legendario porque tiene mucha experiencia
ayudando a las personas mediante el Servicio de despacho de robots.

Princesa
Una princesa hermosa y elegante del Mundo Rurple. A veces, se mete
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
Hola. Bienvenido
Servicio de despacho de robots para
al Mundo Rurple.
ayudar a las personas
con robots en el Mundo Rurple.

Por lo tanto, voy a jubilarme del Sin embargo, como los robots no tienen
Me encargo del servicio de despacho y se lo experiencia aún, necesitamos a alguien
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.

Creo que puedes


capacitar a los robots
maravillosamente.

Primero, te
El “RUR” de “RUR-PLE” significa
contaré
un poco sobre Rossum's Universal Robots, una
Es por eso que te elijo obra de Karel Capek, a quien se
RUR-PLE para que
como mi sucesor. puedas capacitar le ocurrió el concepto de
a los robots. “robot” por primera vez.

Sabes bien que el En 1981, Richard E. Pattis


La palabra robot, (que deriva de “robota”, que concepto de robot tiene creó un mundo imaginario en el
significa esclavo o trabajo pesado en checo) una fuerte influencia que los robots viven a través de
significa “una máquina parecida a un humano sobre la sociedad un libro, “Karel el robot”.
que hace el trabajo por las personas”. moderna.
Los robots de este mundo Los robots tenían que realizar varias
solían tener una función muy funciones complejas al combinar funciones
limitada. simples, pero un robot llamado Karel usó
un idioma de programación llamado
“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).

¡Hola!
¡Voilá!

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.

Además, el “PLE” de “RUR-PLE”


es un acrónimo para Python
Learning Environment (entorno
de aprendizaje de Python).

Es una herramienta de aprendizaje excelente


para usar casi cualquier factor del lenguaje de
programación llamado Python que está más
desarrollado que GvR y yo.

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


realizar varias acciones
complejas al combinar estas
funciones simples,
eventualmente tendrán la
capacidad de controlar Python
¡Que tengan un gran viaje!
cuando se los indiquen.
¡Listos para la
operación!

¡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.

¿Empezamos Espera. Todavía


¡Oh! Tú eres la nueva
con el no hemos
persona a cargo del
Servicio de despacho de trabajo? Diablos,
aprendido nada.
robots. odio
estudiar..
.
¡Es un placer
conocerte!

¡El aprendizaje Es imposible. Tenemos que terminar la


práctica de manipulación y la capacitación
se realiza en la de control antes de empezar a trabajar.
vida real!

¿No deberíamos aprender Es un lenguaje de programación


qué es Python? presentado por Guido van
Rossum.

¿No
deberíamos...?

Es así. Para avanzar


rápidamente, te explicaré sobre
Python. Python es..
Ya lo expliqué
¿Podrías explicarlo lo más sencillo
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...

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.

El string de caracteres se muestra con


Unicode, por lo que será muy fácil expresar
idiomas como coreano o chino.

Se puede asociar con otros


Casi toda la información que se idiomas de programación, como el
proporciona es gratuita. lenguaje C.

También tiene Oh. ¡Es más rápido aprender


muchas otras en la vida real! Comencemos.
Ahora entiendo un poco. ventajas.
NOTA

1 Instalación de RUR-PLE

1 Ingresa al sitio web (http://code.google.com/p/rur-ple/) para descargar RUR-PLE.

* Sitio web oficial de RUR-PLE


http://rur-ple.sourceforge.net

2 Selecciona el archivo correspondiente para tu sistema operativo en el menú


“Descargas”.
3 Descarga el archivo de instalación en la página “Descargas”.

4 El proceso de instalación después de la descarga es el mismo que para cualquier


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


instalación correspondiente para tu sistema operativo y CPU. Existe una pequeña diferencia gramatical
entre la versión Python 2.X y la versión Python 3.x.

Es posible ejecutar RUR-PLE sin instalar Python. La programación básica que se puede
realizar en Python también se puede realizar en RUR-PLE, por lo que no es necesario que
instales Python.

Sitio web para descargar Python

Iniciar Python

01 Comando de Python: [Iniciar] → [Programa] → [Python 3.4.2] → Ejecución de [Python(línea de comando


02 IDLE: [iniciar] → [programa] → [Python 3.4.2] →
[IDLE(Python GUI)]
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
ingresa un comando. Por ejemplo, si ingresas un
enunciado comando como print (“Hello”) a una consola
(>>>), 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.
De esta forma, podrás ejecutar el programa sin la inconveniencia de ingresarlo
cada vez que lo necesites porque el programa estará guardado.

1 Presiona [Archivo]-[Ventana nueva]


o)] 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

1 ¿Por qué aprendes a programar?

¿En qué piensas cuando escuchas la palabra


programación? ¿En un hácker genio? ¿O en letras
enigmáticas que se parecen a un código? En realidad, la
programación no es tan complicada como crees. No es
algo que solo las personas inteligentes pueden hacer.

En realidad, la programación es algo que nos rodea


todos los días. ¿Alguna vez le has dado direcciones a
una persona que estaba perdida? En ese caso,
puedes decir que tienes experiencia programando.

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
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
referimos al sistema y a las letras para crear programas
por computadora como lenguajes de programación.
El comienzo de la programación

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

escasos. Su velocidad de cálculo es mucho más rápida que la de un ser humano. En realidad, la

computadora solo puede sumar, pero no restar.


La magia de la programación nos permite hacer que una computadora (que solo puede realizar una

cantidad limitada de acciones a una velocidad rápida) tenga una capacidad ilimitada. Sin embargo,

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.

Sin embargo, cuando programas para que la computadora entienda, podrás experimentar el proceso de

pensamiento lógico y sistemático que experimentaron los filósofos griegos o el rey de Inglaterra. Dicha

experiencia mejorará tu capacidad de pensar y resolver problemas poco a poco. En general, lo atractivo

de la programación es la diversión.

Entonces, ¿aprendemos la magia que les da una capacidad ilimitada a las computadoras?

* Un grupo de instrucciones que puede ejecutar una computadora se denomina programa; escribir un método para
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.
2 Cómo iniciar Python

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”.

1) Cómo expresar el final de un enunciado


Un enunciado es una unidad de expresión que permite que la computadora entienda nuestros
pensamientos y ejecute una acción al respecto. Si la computadora puede entender una oración como “ir
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
enunciados.
En muchos lenguajes de programación (incluido el lenguaje C), el método de agregar un punto y coma (;)
se usa para indicar el final de un enunciado. En estos lenguajes de programación, la computadora no
considera que la expresión escrita en su totalidad es un enunciado hasta que aparezca el punto y coma.
En otras palabras, no funciona.

Ir adelante No se interpreta como un enunciado y la acción no se realiza


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

Para las personas que aprenden programación por primera vez, el método de usar un punto y coma
podría causar un error de sintaxis.

¿Qué es un error de sintaxis?


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
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
no gramaticales y causan un error. Dicho error se denomina “error de sintaxis”. Los programas
de computadora deben tener un conjunto de enunciados perfectos sin errores de sintaxis.

En “Python”, para escribir un programa de forma más sencilla, el final del enunciado se expresa
con un salto de línea.

Enunciado de Python Significado Enunciado de Python Significado

move() mover adelante una unidad a=10 guardar 10 en la variable a

turn_left() girar 90 grados a la izquierda b=20 guardar 20 en la variable b


mostrar el valor de la suma de
move() mover adelante una unidad print a+b
ayb
Este método ayuda a las personas que aprenden un lenguaje de programación por primera vez a
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.

¡Atención!
Si expresas las 3 instrucciones previas en una línea con un espaciado como el que se
muestra a continuación, ocurrirá un error de sintaxis en Python. Cuando se termina un
enunciado, debes usar un salto de línea. a=10 b=20 print a+10 (X)

2) Cómo expresar la estructura de bloque


En el idioma de las computadoras, los enunciados que expresan
una característica o acción similar se expresan en un conjunto, y
esto se denomina estructura de bloque. En otras palabras,
interpreta una cantidad de enunciados al unirlos en un solo
bloque. Si expresas enunciados en un bloque, será muy útil para
repetir los enunciados múltiples o administrar un conjunto de
enunciados complejos.

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


Java, se usan llaves ({}) como forma de expresar dicha
estructura de bloque. De esta forma, un bloque empieza con
“{” y termina con “}”. Si varios enunciados se colocan dentro de
las llaves, se considera un solo bloque.
<Ejemplo de lenguaje C>

while(1) ← Nombre del bloque (significado: repetir por siempre los enunciados del bloque)

{ ← comienzo del bloque

scanf("%d",&a);
- enunciados unidos como bloque
printf("%d",a);

{ ←final del bloque

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
lo tanto, en Python, las llaves no se usan como método para expresar una estructura de bloques. En cambio,
se usan sangrías mediante los dos puntos(:) y la tecla Tab. Esto se debe a que los dos puntos se suelen usar
para empezar una explicación.
Lista de tareas para hoy:

Hacer la tarea
Organizar un plan para el fin de
semana con tus amigos
Escribir en un diario.

Escribir un plan para las vacaciones de verano

Como en el ejemplo, las oraciones con sangría en la misma posición son fáciles de detectar porque están
en una lista y el título “Lista de tareas para hoy” está antes de los dos puntos. Sin embargo, la última
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
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")
X=-X
print("X era positivo") ← como la sangría cambia, este enunciado
ya no está unido al bloque if.

En Python, el bloque también se denomina “suite”. En el caso del ejemplo anterior, la suite de “if(X<0)” es
“print(“X era negativo”) y X=-X. La sangría ha cambiado para el último “print(“X era positivo)”, por lo que ya
no es la suite de “if(X<0)”.

Como Python no usa marcas especiales para designar el final de un bloque, las personas que aprenden
un lenguaje de programación por primera vez no tienen errores de sintaxis, como una “}” faltante. Además,
los enunciados en bloques expresados con sangrías del mismo tamaño funcionan como método de
expresión para que las personas entiendan con mayor facilidad. Esto se debe a que usamos el mismo
método de expresión para escribir a fin de mostrar los componentes del sujeto en una lista.
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
diseñadas para comprender las estructuras fácilmente.

3) Cómo escribir un comentario

Cuando programas, a veces necesitas dejar una nota simple en el código o


* Cuando hay una sola línea: #
registrar un mensaje para otro programador. Como la computadora no tiene que
* Cuando hay muchas líneas:
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 " " " ' ' '
computadora ignora la línea con “#”, el error no ocurre aunque haya una oración
contenidos o contenidos
que no cumpla con la gramática de Python.
" " " ' ' '

* Nota: si escribes un comentario en coreano en RUR-PLE, ocurre un error y el programa no puede guardar.

¿De dónde proviene la gramática de Python?


El motivo por el cual Python es apto para principiantes es porque tiene mucha influencia del
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.

Cuando diseñaron “ABC”, Robert Dewar, Peter King, Jack Swartz y Lambert desarrollaron
su propia gramática y tuvieron un debate al comparar cuál era mejor. Como no podían
llegar a un acuerdo, Robert Dewar le preguntó a su esposa qué opinaba. En este proceso,
descubrieron elementos que las personas consideran elementos gramaticales complicados
y confusos cuando se les presenta la programación por computadora. Y cuando se
eliminaron estos elementos, aprendieron que podían escribir un programa fácil de aprender,
reducir los errores de los desarrolladores y hacerlo más fácil de entender estructuralmente.

En consecuencia, a diferencia del lenguaje de programación existente, “ABC” se diseñó


para expresar de forma similar a la que el público lee y escribe, y estos elementos se
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
un programa llamado Python al controlar al robot que se muestra en pantalla. Si
resuelves problemas al imaginar la situación como si controlaras al robot real,
podrás entender los conceptos básicos de la programación fácilmente de una
forma divertida.

1 Composición de la pantalla
RUR-PLE
Existen cuatro pestañas generales en RUR-PLE.
Desde estas pestañas, podrás aprender a programar
el robot en la pestaña
.

Robot: codifica y aprende está formada por el área de


código para ingresar instrucciones, el mundo para
mover los robots según las instrucciones ingresadas y
por ③ la pantalla de ejecución para mostrar el
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.
Abre o guarda el
archivo RUR-PLE. Controla la
velocidad de Le da un beeper (zumbador) al robot.
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.

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.
archivo RUR-PLE. por cada paso. robot al importar el
El archivo de código RUR- archivo de imagen.
PLE se guarda con extensión
.wld. Cambia el tamaño del mundo. Muestra la información del mundo del
Puede seleccionar entre 5x5 y 30x30. lado derecho de la pantalla.
3 Cómo ingresar instrucciones en
RUR-PLE
Si ingresas las instrucciones en el código de área ubicado a la izquierda de la pantalla de RUR-
PLE y presionas el botón “Iniciar programa” desde el menú de botones, el robot ejecuta una
acción según las instrucciones presentadas.

44 Manipular el robot y comprender el sensor

1) Manipulación manual del robot


En el mundo, el robot se puede mover con las flechas( ↑ ← ) del teclado. Si presionas ↑ , el
robot da un paso en la dirección a la que se dirige, y si presionas ← , gira 90 grados a la
izquierda en el lugar

2) Cómo comprender el sensor del robot


Los robots tienen sensores para que puedas ver el estado actual del robot. Con instrucciones
como las que se muestran a continuación, puedes usar los sensores de los robots.

front_is_clear( ) right_is_clear( )

Esta función verifica si existe un muro frente al Esta función verifica si existe un muro a la
robot. Muestra “Verdadero” si no hay un muro y izquierda del robot. Muestra “Verdadero” si no
“Falso” si hay uno. hay un muro a la derecha y “Falso” si hay uno.

left_is_clear( ) on_beeper( )

Esta función verifica si existe un muro a la Esta función verifica si existe un beeper donde se
izquierda del robot. Muestra “Verdadero” si no encuentra el robot. Muestra “Verdadero” si hay un
hay un muro a la izquierda y “Falso” si hay uno. beeper donde se encuentra el robot y “Falso” si
no hay un beeper.
carries_beepers()
Esta función verifica si existe el robot
tiene un beeper. Muestra “Verdadero”
si el robot tiene un beeper y “Falso” si
el robot muestra “Falso”.

Muestra “ Verdadero” para los sensores frontal y


derecho donde no hay muros, y para el resto de
los sensores muestra “Falso”.

El robot actualmente tiene 11 beepers; muestra


“Verdadero” porque no existen muros en las
partes delantera e izquierda; muestra
“Verdadero” porque hay un beeper en el lugar
del robot y muestra “Falso” porque el lado *La instrucción “Print” es una instrucción que
derecho está bloqueado por un muro.
muestra el resultado de la función ejecutada.

5 Menú del robot de RUR-PLE

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.
Si generas un mundo, el tamaño predeterminado se fija
en 10x10. Mediante el menú, puedes expandir desde el
mínimo de 5x5 al máximo de 30x30.

La abscisa del mundo se expresa como “Avenue”


(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
el mundo, o se le puede asignar al programa al
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 beeper desaparece si
presionas el 0 después de
presionar el botón derecho del
ratón en el beeper colocado en el
mundo.

0
1
2

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

Una función es como una instrucción. Como una acción que corresponde al
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
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


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

1 Usar una función incorporada

Las funciones incorporadas típicas de RUR-PLE son move(), turn_left() y turn_off(), etc.

move () es una función que hace que el robot dé un paso hacia la dirección a la que se dirige.

turn_off() es una función que apaga el suministro de energía del robot. Esta función también debe estar
al final del programa.

r turn_left() es una función que sirve para giar el robot 90 grados a la izquierda.

pick_beeper() es una función que hace que el robot recoja el beeper colocado en el mundo.

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:

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

Práctica de
manipulación
de robots
01 Primer paso de la manipulación del robot
Movamos el robot de la forma que prefieras mediante las funciones incorporadas.

move()
move()
turn_left()
move()
move()
turn_off()

Práctica de
manipulación
de robots
02 Habilidades para manipular el robot
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.

move()
pick_beeper()
move()
put_beeper()
move()
pick_beeper()
move()
put_beeper()
turn_off()

Notas para resolver problemas


2 Definir la función definida por el usuario

Usar una función incorporada ¿Perdón? Esa


¿Regresarás? función no está
turn_back() incorporada.

Cómo crear funciones


Mmm, entonces, ¿qué
definidas por el usuario
debo hacer? ¡Ah! Si giro
a la izquierda dos veces, def turn_back():
puedo regresar.
turn_left()
turn_left()

Debería crearla como


función definida por el
usuario y luego usarla
varias veces.

Ahora que creé la Cómo usar funciones


función definida por el definidas por el usuario
usuario, ¿puedes
def turn_back()
regresar?
: turn_left
() turn_lef
t()
turn_back()
Para hacer que el robot dé una vuelta alrededor del mundo 5x5, necesitarás escribir un código
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
definidas por el usuario

def nombre de la funcion ( ):


ejecutar enunciado

Las reglas para crear nombres de funciones son las siguientes.

Para el nombre de la función, tendrás que usar el abecedario, los


números y guiones bajos (_).
El nombre de la función no debe comenzar con un número y no
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


apagar el robot. Las funciones deben tener paréntesis “( )”. Para
algunas funciones, tendrás que presentar datos adicionales en
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.

3 Cómo nombrar las funciones

Definir las funciones no es suficiente para ejecutar sus contenidos. Para ejecutar una función definida,
tendrás que nombrar la función mediante “function name()”.

definició
def f(): nombre f()
n de la
move() de la
función
función
move()
move()
move()
turn_left()
Práctica de
manipulación 03 Cómo hacer que el robot avance
de robots

Subamos la colina mediante la función definida por el usuario.

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():
turn_left()
turn_left()
turn_left()

turn_left()
move()
turn_right()
move()
move()
turn_right()
move()
turn_left()
turn_off()

Función def turn_right():


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

Notas para resolver


problemas
Contenidos de aprendizaje 04

Se denomina enunciado condicional a la instrucción que solo se ejecuta


cuando se cumple la condición dada.

1 Enunciado condicional

Se denomina enunciado condicional a la instrucción que solo se ejecuta cuando se cumple


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
ejecución 2. En este momento, el “enunciado else” se puede omitir según la condición.

expresión condicional if 1:
ejecución de instrucción 1 // cuando la expresión
else: condicional 1 es verdadera

ejecución de instrucción 2 // cuando la expresión condicional 1 es falsa

El flujo de código 11 cuando el enunciado condicional 1 es verdadero

Enunciado condicional simple 3


¡Hacia
1
if on_beeper(): 1 adelante!
¿Hay un beeper?
turn_left()
turn_left() 2
turn_left()

else:
turn_left()

move() 3

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

Enunciado condicional si
mple
if on_beeper(): 1
turn_left() 1
turn_left() ¿Hay un beeper?
turn_left()

else:
2
turn_left()

move() 3

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

3 ¡Hacia
adelante! Girar a la
izquierda

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
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():
turn_off()
move()
repeat(f,5)
2 Enunciado if anidado

Un enunciado if anidado se refiere a la estructura de otro enunciado condicional dentro de un


enunciado condicional. Para ejecutar <execution instruction 2>, la expresión condicional 1 y la
expresión condicional 2 tienen que ser verdaderas.

expresión condicional if 1:
ejecución de instrucción 1 // cuando la expresión condicional 1 es verdadera

expresión condicional if 2:
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

Enunciado if anidado
if front_is_clear():
if on_beeper():
pick_beeper()
move()

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

¿Hay un beeper?
Levanta el beeper

¡Hacia
adelante!

Girar a la
izquierda
Práctica de
manipulación
de robots
05 Aspiradora robótica
Hagamos que el robot recoja todos los beepers del suelo a medida que se mueve hacia
el muro derecho.

El programa para que el robot recoja todos los beepers en la línea 1 (Street: 1) y se dirija hacia el
muro se puede escribir de la siguiente manera. Si el beeper está en la línea 1 (Street:1), funciona
sin importar donde se encuentra. Pero solo un beeper se coloca en un solo lugar.

def f():
if on_beeper():
pick_beeper()
if front_is_clear():
move()
else:
turn_off()

repeat(f,5)

Notas para resolver problemas


3 Cómo nombrar las funciones

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
control del enunciado elif, y si la condición del enunciado elif tampoco es verdadera, ejecuta
el enunciado else. En este momento, el enunciado if se puede usar varias veces según la
condición, pero la expresión condicional debe estar escrita.

expresión condicional if 1:
ejecución de instrucción 1 // cuando el enunciado condicional 1 es verdadero
expresión condicional if 2:
instrucción de ejecución 2 // cuando el enunciado condicional 1 es falso y el enunciado condicional 2 es verdadero
else:
instrucción de ejecución 3 // cuando el enunciado condicional 1 y el enunciado condicional 2 son falsos

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()

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?

Cuando muestras relaciones lógicas entre los operadores en el programa, se


usa un operador lógico. Los operadores lógicos muestran el resultado con
verdadero (0) o falso (1) cuando hay conjunciones (AND), disyunciones (OR) y
negaciones (NOT).

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


(AND) (OR) (NOT)

1 Negación (NOT)
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.
Práctica de
manipulación
de robots
06 Completar el blanco con el robot
Hagamos que el robot coloque el beeper en el lugar sin el beeper a medida que
se mueve a la derecha.
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.

def f():
if not on_beeper():
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
Avenue Avenue
La variable, un recipiente para gu
Contenidos de aprendizaje 06

1 Definición de variable

La variable es un espacio de memoria en el que se puede guardar un valor. Si usas una


variable, varias acciones se pueden realizar fácilmente, como contar números y calcular una
fórmula.
Para crear dicha variable, debes declarar el nombre, que es un nombre único que la representa.
En RUR-PLE, la declaración de una variable se completa cuando escribes el nombre
(nombre=información). Si usas el nombre de una variable no declarada, la computadora no
sabe a qué información se refiere el nombre correspondiente y causa un error.

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


¡Guardar a guardó en a.
como 10! aa == 10
10

¡Muy bien! Le
Restar 2 de a. Cómo cambiar la restaré 2 a a.
variable
a = 10
a = a-2

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


valor guardado en a? riable guardó en a!
a = 10
a = a-2
print a
Print
uardar información

2 Características de una variable

En Python, la variable se denomina nombre. En general, las formas


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
sin necesidad de declarar el tipo de información de la variable como >>> a 3
en otros lenguajes, la declaración de la variable se completa si >>> print(a) 3
escribes “nombre de la variable = información”. Si ves el ejemplo de >>>
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
de número entero por el número entero designado, que es 3.

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.

El nombre de la variable distingue mayúsculas y minúsculas.

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


Cuando declaras una variable, la variable correspondiente o el rango para usar la variable
cambia según la posición de la variable declarada. Las variables se pueden clasificar como
variables locales o variables globales.

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
según la cantidad una variable a.
indicada en el valor programa
guardado en a def f():
a = 10

while(a):
move()
a = a-1

Como la variable que


¿Qué quieres declaramos anteriormente es
Código del
decir? A está una variable local, no se puede
declarada en la def f():programa usar fuera de la función.
función f()
a = 10

while(a):
move()
a = a-1

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.
Práctica de
manipulación 07 Jugar con la variable
de robots

Usemos la variable global en una función

Como declaramos n como variable global, aumentaremos el valor dentro y fuera de la


función por 1 y luego lo mostraremos.

n=3
def f():
global n
n=n+1
print n
f()
n=n+1
print n
turn_off()

*Cuando muestras información en


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

Notas para resolver problemas


Contenidos de aprendizaje 07 Ingresar y mostrar información

Si ingresas información, el resultado se muestra según el programa. Guardar


(designar) un valor en la variable al ingresar una instrucción se denomina
“ingresar información”, y mostrar las variables guardadas (designadas) en la
pantalla mediante la instrucción print se denomina “mostrar información”. Por lo
general, cuando ingresas o muestras información, se usan unidades de entrada
y salida, como el teclado, el ratón y el monitor.

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
>>> type(n) >>> n2=input()
<type 'int'> <-- 20
>>> print n 3 >>> print n1+n2 30

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

Función de entrada de string de caracteres


Las cuatro operaciones matemáticas
Contenidos de aprendizaje 08 fundamentales con el programa

El operador que realiza el cálculo con las cuatro operaciones matemáticas


fundamentales en el programa se denomina operador aritmético. A diferencia
de otros lenguajes de programación, Python (RUR-PLE) se clasifica en
operadores que descartan el punto decimal en la división (//) y que no
descartan el punto decimal (/).

División de
Significado Suma Resta Multiplicación números reales

Ejemplo

División de números
Significado enteros
Potenciación Resto

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


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
>>>
Práctica
de 09 Operaciones matemáticas para expertos
manipulación
de robots
Averigüemos el área del triángulo mediante la entrada de la base y la altura.

Crearemos un programa para averiguar el área del triángulo después de ingresar la longitud de la base y
la altura de un triángulo.

Ejemplo de entrada Ejemplo de salida

13 19.5
3

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

Base * altura * 0.5 (o base * altura / 2.0)

Cómo transformar los tipos de información


Los tipos de información se pueden transformar mediante la expresión de tipos de
información.
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.

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
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.

Método para transformar información Método para transformar información mediante


mediante la expresión de la información el valor de la información

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


<-- 13 <-- 13
>>> b=input() >>> b=input()
<-- 3 <-- 3
<<< print (a*b)/float(2) 19.5 <<< print (a*b)*0.5 19.5
Contenidos de aprendizaje 09 Varias formas de datos

1 ¿Qué son los tipos de información?

Los tipos de información se clasifican en dos tipos. Existen dos tipos de información: los
números enteros y el string . Pero, ¿por qué se clasifica la información?

La computadora puede calcular que 1+1 es 2 rápidamente, pero no sabe qué hacer con
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.

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.

Declaración de la variable en el lenguaje C

// 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


char c = ‘a’;

Declaración de variables en Python

i=0
c = ‘a’

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


2 y números complejos

Número Entero Float Complejo Octal Hexadecimal

Ejemplo de
1+2j
uso
Práctica
de 10 Combinar operadores aritméticos
manipulación
de robots
Averigüemos el área del círculo al ingresar del radio.

Crearemos un programa para averiguar el área el círculo mediante el radio (r). (PI se calcula como 3,14).

Ejemplo de entrada Ejemplo de salida

5 78.5

Fórmula para hallar el área del círculo

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

Método para multiplicar dos veces Método para usar la potencia


>>> r=input() >>> import math
<-- 5 >>> r=input()
>>> print r*r*3.14 78 <-- 5
.5 >>> print pow(r,2)*3.14 7
>>> 8.5
>>>

Notas para resolver problemas


3 Información del tipo de carácter

En Python, el string de caracteres se expresa mediante las


>>> a="the"
comillas (‘ o “). El string de caracteres también se puede >>> b=" Call"
sumar o multiplicar. >>> a+b 'the Call'
>>> a*2 'thethe'
Para expresar el string de caracteres, se usan comillas simples >>> b*2
(‘) y tres comillas dobles o simples seguidas (“””””” o ‘’’’’’) ' Call Call'

durante la suma además de las comillas dobles (“”).

Está contando desde


la izquierda.
¡Comienza desde 0!

¿Por qué Y es 1 y no 2
cuando es la segunda
letra?

No olvides que el
espacio en blanco
también se considera
una letra.

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
manipulación
de robots
Mostremos parte de un string de caracteres.

Crearemos un programa para mostrar parte del string de caracteres después de


ingresar el string “secret garden” (jardín secreto).

>>> str="secret garden"


>>> str[0] 's'
>>> str[5:9]
't ga'
>>> str[10:12]
'de'
>>> str[3:] 'ret garden'
>>> str[:7] 'secret '
>>>

0 1 2 3 4 5 6 7 8 9 10 11 12

s e c r e t g a r d e n

Str[5:9] # se refiere a una serie de letras desde el primer índice hasta (el segundo índice -1). (9-5=4 letras)
Str[3:] # se refiere a una serie de letras desde el tercer índice hasta el final.
Str[:7] # se refiere a una serie de letras desde el primer índice hasta el 6to (7-1) índice.

Notas para resolver problemas


4 Información del tipo de lista
Guarda a todas
las personas que
asistieron a la Código del programa ¡Guau! Hay muchas variables.
reunión de hoy
como variables.
a = “Dr. Kim”
b = “Dr. Lee”
c = “Dr. Choi”

Código del programa ¡Es simple!


Entonces, ¿lo
guardamos como a = [“Dr. Kim”, “Dr. Lee”,
lista? “Dr. Choi”]

La lista es una forma de información que contiene cierta cantidad de información. Si usas la lista, es
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
puede mostrar si el número de índice de la información correspondiente se coloca dentro del corchete [ ].

) En la lista, se puede colocar la lista misma y la información individual. Tener otra lista dentro de la lista
a veces se denomina “lista bidimensional”. Cuando existe una lista dentro de la lista, la información se
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]]).

>>> 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
>>>
1) Operador de lista y modificación

>>> x=[1,2,3]
>>> y=[4,5,6]
>>> x[0]+x[2] 4
>>> x[0]+y[1] 6
>>> a=['a','b','c']
>>> a[0]
'a'
>>> a[0]=4
>>> a
[4, 'b', 'c']

2) Funciones relacionadas a la lista


Puedes usar varias funciones relacionadas a la lista al agregar ‘.’ detrás del nombre de la lista.

■ List name.append(x): función que agrega el valor


>>> a=[4,3,2,5,1,6]
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
[4, 3, 8, 2, 5, 1, 6, 10]
de X que aparece primero en la lista.
>>> a.remove(3)
■ List name.pop(): función que elimina el último >>> a
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
valor de la lista. [4, 8, 2, 5, 1, 6]
>>> a.append(8)
■ List name.count(x): función que cuenta la
>>> a
cantidad del valor X en la lista. [4, 8, 2, 5, 1, 6, 8]
>>> a.count(8) 2
■ List name.sort(): función que ordena los valores
>>> a.sort()
de la lista en orden ascendente.
>>> a
■ List name.reverse(): función que invierte el orden [1, 2, 4, 5, 6, 8, 8]

de los valores en la lista.


Los trabajos repetitivos se pueden
Contenidos de aprendizaje 10 realizar de forma conveniente

Cuando tienes cierta instrucción que se repite en alguna condición, puedes usar
la instrucción llamada “enunciado de repetición”. Si usas el enunciado de
repetición cuando tienes que repetir el mismo trabajo varias veces, es
conveniente que escribas un programa, ya que la parte que se superpone se
puede escribir una sola vez.

¿Hay un Ir adelante
muro? Código del programa
¡Estoy tan
if front_is_clear(): ocupado!
¿Hay un
muro?
move()
if front_is_clear():
Ir adelante move()
if front_is_clear():
move() ¡Estoy tan
if front_is_clear(): ocupado!
move()
if front_is_clear():
move()

Código del programa


while front_is_clear():
move() ¡Estoy tan
ocupado!

¡Estoy tan
ocupado!
Continúa moviéndose
hacia adelante si no
hay un muro.

Existen dos instrucciones para los enunciados de repetición: while y for.


Los enunciados while se usan principalmente cuando se repiten las instrucciones al cumplir con cierta condición.
Necesitas expresiones condicionales para fijar la cantidad de repeticiones para evitar caer en un bucle infinito.

Los enunciados for pueden reducir el largo del código ya que se puede usar el valor inicial, y el incremento y
decremento del operador, que se describe individualmente en el enunciado while una sola vez.
1 Enunciado de bucle básico

Como una estructura con un enunciado de repetición, un enunciado de bucle básico se refiere a la forma
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.

Configuración de valor inicial


Expresión condicional while:
Instrucción
Operador de incremento y decremento

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”.

Cuando creas estructuras de enunciados de repetición básicas para for, puedes usar la función range() o lista.

Para variables en range(valor inicial, valor final, valor de incremento y decremento): la instrucción

for repite la instrucción según el resultado fijado en range().

¿Qué es el operador de incremento y decremento?


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.

i=0
while i<10: # conditional expression
# instruction
i=i+1 # increment and decrement operator

Si lo escribes como se indica anteriormente, i comienza desde 0 y aumenta en 1 cada vez que se ejecute
la orden. Si el valor de i llega a 10 al repetir la orden de esta manera, el enunciado de repetición finalizará.

Cuando domines Python, podrás escribir el código de la siguiente manera para expresar operadores de
incremento y decremento de forma más simple.

while i<10: # Conditional expression


# instruction
i+=1 # increment and decrement operator
Práctica de
manipulación 12 Robot para construir un camino
de robots

Haremos que el robot se mueva hacia la derecha mientras suelta el beeper.

Crearemos un programa que repita el proceso en el que el robot suelta el beeper en la


posición en la se encuentra y se mueve cuatro veces.
i=1
while i<=4:
put_beeper() move()
i=i+1
turn_off()

Es conveniente si usas el enunciado for para crear estructuras de repetición mediante la lista o la
función range().

Enunciado while Enunciado for


i=1 for i in range(1,5):
while i<=4: put_beeper()
put_beeper() move()
move() turn_off()
i=i+1
turn_off()

Función range()
La función range( ) fija el rango del valor dentro de la lista de una vez.

Rango ([valor inicial], valor final, [valor de incremento y decremento])

*El valor inicial y el valor de incremento y decremento se pueden omitir. (al omitir un valor, el valor inicial es 0,
el valor de incremento y decremento es 1 y se ejecuta hasta (final value-1))
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(1, 11))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> list(range(0, 30, 5))
[0, 5, 10, 15, 20, 25]
>>> list(range(0, 10, 3))
[0, 3, 6, 9]
>>> list(range(0, -10, -1))
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> list(range(0)) []
>>> list(range(1, 0)) []
2 Enunciado de bucle anidado

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


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

i=2 2*1=2
while i<=9: 2*2=4
Tabla de
j=1 2*3=6
multiplicaciones while j<=9: 2*4=8
utilizando bucle print i,"*",j,"=",i*j 2 * 5 = 10
while 2 * 6 = 12
j=j+1
2 * 7 = 14
i=i+1 2 * 8 = 16
turn_off() 2 * 9 = 18
3*1=3
for i in range(2,10): 3*2=6
Tabla de 3*3=9
multiplicaciones for j in range(1,10):
utilizando 3 * 4 = 12
bucle for print i,"*",j,"=",i*j 3 * 5. = 15
turn_off()
.

Práctica de
manipulación
de robots
13 La lotería
Buscaremos un valor al azar según la condición.

1. Cómo encontrar un número entero al azar


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]
ejecución

Para utilizar la función aleatoria (radint( )), deberás utilizar el módulo aleatorio.
Para agregar un valor a la lista, la lista debe estar declarada como list=[ ] para crear una lista vacía.

La función para agregar un valor a la lista es append( ).

import random
list=[ ]
for i in range(1,11):
list.append(random.randint(1,10))
print list
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.

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

La función que alinea los valores de la lista en orden ascendente es sort( )

list.sort()
print list

3. Cómo alinear el valor de una lista almacenada en orden descendente.


Ahora, crearemos un programa para alinear los valores de una lista guardada en orden
descendente.
Resultado
de la
ejecución
[10, 9, 8, 7, 6, 6, 4, 2, 1, 1]

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
en orden ascendente utilizando sort( ) y luego utilizar la función reverse( ).

list.sort()
print list
list.reverse()
print list

4. Mostrar los 3 valores más bajos


Crearemos un programa para encontrar y mostrar los tres valores más bajos de entre los valores de la
lista almacenada. Solo
los valores mostrados se eliminarán de la lista.
Resultado
de la 1 for i in range(3):
ejecución 1 print list.pop()
2 print list
[10, 9, 8, 7, 6, 6, 4]

La función pop( ) implementará el proceso de retirar los valores almacenados en la pila, que
es una unidad de almacenamiento de datos, como una función. Al explicar la estructura de la
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

Los operadores que comparan el tamaño de dos valores, como mayor que (>),
menor que (<) o igual que (>=), menor o igual que (<=), igual que (==), y distinto
de (!=) se conocen como operadores de comparación. Al utilizar un operador de
comparación, se compara el valor real o el valor que el nombre indica y muestra
el resultado como verdadero (true) o falso (false).

Signos Significado Ejemplo (when a=10, Signos


b=50)

Igual

Distinto de

Menor que

Menor o igual

Mayor que

Mayor o igual que

Práctica de
manipulación 14 Robot inteligente
de robots

Haremos que el robot encuentre la suma de las cantidades de beepers.

Crearemos un programa para encontrar la suma de la cantidad de beepers ubicados en dos


posiciones.

i=0 n=1
while n<=2:
move()
while on_beeper():
pick_beeper()
i=i+1
n=n+1
move()
while carries_beepers():
put_beeper()
move()
turn_off()
Contenidos de aprendizaje 12 Crear un clon de robot

En RUR-PLE, puedes crear y utilizar distintos robots. La orden para crear un


robot es UsedRobot( ) y puedes designar propiedades como el nombre del
robot, la posición, el color y la dirección hacia la que apunta. Las instrucciones
para crear un robot y las propiedades de cada uno son las siguientes:

La coordenada X donde se La dirección a la que apuntará el clon de robot El nombre del clon de robot que deseas
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
avenue)

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
deseas crear (coordenada street)
deseas crear blue/purple/green)

* Para el clon de robot no se pueden utilizar las funciones del sensor left_is_clear() y right_is_clear().

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)
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()
n=n+1
R5.move()
print n
turn_off()
Antes de ejecutar el programa Después de ejecutar el programa

4
Street

1 2 3 4 5
Avenue

Se crea en la posición (Avenue:2,


Street:1) apuntando hacia el valor
predeterminado, el este (E).

Se crea en la posición (Avenue:2,


Street:3) apuntando hacia el valor
predeterminado, el este (E).

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


apuntando a la dirección determinada, el sur
(S). El color del robot se fija a verde (green).

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()
Práctica de
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
enteros del 0 al 10 y se muevan según ese valor.

import random 5

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

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

d=random.randrange(10)
2
b=random.randrange(10)
g=random.randrange(10) 1

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):
RB.move() 5
for k in range(g):
RG.move() 4

for l in range(y):
Street

3
RY.move()
turn_off() 2

RB.turn_off() 1
RG.turn_off()
1 2 3 4 5 6 7 8 9 10
RY.turn_off() Avenue

* 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


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-1 1-2

¡AY!

¡Puedo subir
fácilmente la
colina!

1. Entregar el periódico Nivel

1-1. Quiero girar a la derecha

En realidad, no tenemos una función para girar a la derecha, únicamente tene


mos una función
Utilizando paraturn_left(),
la función girar a la izquierda.
¿podrías hacernos girar a la derecha?
Notas para resolver problemas

1-2. Quiero girar a la derecha


¡Ahora puedo subir la colina! ¿Qué tal si escribimos sobre cómo realizar movimientos?

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
1-3
Me pregunto si estarán
realizando bien las entregas
.

Llevemos el periódico a la
casa del abuelo!

1. Entregar el periódico Nivel

1-3. Debo ir a entregar los periódicos

¡Ahora puedo ir a cualquier parte! Crearemos un programa para entregar periódicos (


beepers) a abuelo en la colina y regresar utilizando la función turn_right() que creamos anteriormente.
la casa del

LISTO COMPLETADO

5 5

4 4

3 3

2 2

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

Notas para resolver problemas


¡Los alcanzar
é!

!
2- ¡Bien! ¡Un nuevo récord
!
1

2. Saltar obstáculos Nivel

2-1. Seré un vallista


¡Oh! Están practicando deportes por aquí. Hay algunas vallas. ¿Qué tal si
creamos un programa para saltar las vallas utilizando la función definida por
el usuario? ¡Intentémoslo!

LISTO COMP
LETA
5 5 DO

4 4

3 3

2 2

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

Notas para resolver problemas


¡Oh, no! ¡Está bloquead

3--
o!

1
Debería regresa
r por hoy.

3. Visitar la tienda Nivel

3-1. Regresaré si la ruta está bloqueada

Me duelen las piernas hoy, creo que no podré saltar el muro. ¿Podrías crear un pr
ograma
para regresar si me topo con un muro?

LISTO COMPLETADO

5 5

4 4

3 3

2 2

1 2 3 4 5 1 2 3 4 5

Notas para resolver problemas


(1
Oh, ¿está
cerrado hoy?

¡SÍ!
3-2
¡Ji, ji! Ir de
compras es
divertido.
¿Tiene buenos
productos?

3. Visitar la tienda Nivel

3-2. Iré de compras a la tienda

Necesito ir a comprar a la tienda. ¿Qué debería hacer si la tienda está cerrada?


Por favor,crear un programa para regresar cuando la puerta de la tienda (muro) e
¿Podrías
stépuerta
la cerrada y para
esté saltar
abierta? cuando
Haz que la condición de la puerta cambie aleatoriamente (0
o 1).
(utiliza randrange() de una biblioteca aleatoria)

LISTO ABIERTO Cuando la condición CERRADO Cuando la condición para


para la puerta sea 1 la puerta sea 0.

5 5 5

4 4 4

3 3 3

2 2 2

1 2 3 4 5 1 2 3 4 5 1 2 3 4 5

Notas para resolver problemas


Ok
¡Ok!
4-1 ¡Ok!

Amigos, marquemos
los muros
colapsados.

4. Reparar el centro comercial Nivel

4-1. Necesito marcar los muros colapsados

¿Qué es esto? Algunos muros han colapsado alrededor del centro comercial y son muy peli
grosos. Si los muros colapsados con un beeper, el personal de mantenimiento los arreglará.
marcamos
Crea un programa para recoger el beeper si el beeper está en el suelo mientras doy vueltas
alrededor del centro comercial y para marcar el muro con un orificio al dejar caer el beeper.

LISTO COMPLETADO

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 1 1 2 3 4 5 6 7 8 9 1
0 0

Notas para resolver problemas


¿Dos beepers?
Debo girar a la izquierda. ¡Mi corazón
palpita!

5-1

5. Verificar el semáforo Nivel

5-1. Quiero aprender a leer el semáforo


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
cuando encuentre dos beepers, podré llegar al concierto. Crea un programa para
llegar al concierto.

LISTO COMPLETADO

La señal se configura según la


5 5
cantidad de beepers colocados
4 4 aleatoriamente por el usuario
en la intersección.
3 3

· 1 beeper: Girar a la derecha


2 2
· 2 beepers: Girar a la izquierda
· 3 beepers: Ir en línea recta
1 2 3 4 5 1 2 3 4 5 · 4 beepers: Regresar

Notas para resolver problemas


¡Estoy muy
emocionado!
6-1

Si sigo estas marcas


podré llegar al concierto.

6. Ir al concierto en la ribera Nivel

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á
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
llegar al concierto.

LISTO COMPLETADO

8 8 Para distinguir las señales,


7 7 ¿qué instrucciones
6 6 necesitamos?
5 5
4 4 ¿Cómo trabajamos
3 3 con más de dos co
2 2 ndiciones?

1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 ¿Qué tipos de movimientos


repetitivos existen?

Notas para resolver problemas


¡Ok!

6-2

Vamos a limpiar todo Fue un concierto muy


rápidamente. divertido.

6. Ir al concierto en la ribera Nivel

6-2. Limpiaré el lugar del concierto

Fue un concierto muy divertido, ¿no? Pero las personas dejaron demasiada basura.
Necesito recoger toda la basura (beepers) y luego reunirla en un solo lugar.
¿Podrías crear un programa con estas instrucciones?

LISTO COMPLETADO

5 5

4 4
Street

Street

3 3

2 2

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

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


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

1
¿verdad?

¡Guau! ¡Había dinero


en el suelo!

7. Entrada en calor Nivel

7-1. Quiero recoger los objetos que están en el suelo


¡Había dinero en el suelo! Primero lo levantaremos. Decidiré qué hacer después de levantarlo.
Crea un programa para que el robot recoja el dinero (beeper) y continúe moviéndose
hasta el final.

LISTO COMENZAR COMPLETADO

5 5 5

4 4 4

3 3 3

2 2 2

1 2 3 4 5 1 2 3 4 5 1 2 3 4 5

Notas para resolver problemas


¿Cuánto tiempo
No olviden queda?
entrar en calor primero.

7-2

7. Entrada en calor Nivel

7-2. ¿Qué tal si intento una carrera corta?

Creo que necesito entrar en calor antes de jugar al béisbol. Si fijas el número del beeper
a (Avenue:1, Street:1), correré hasta el muro. Sabes que ahora debes
crear un programa con todo esto, ¿verdad?

LISTO CO COMP
ME LETAD
5 5 NZ 5O
AR
4 4 4

Street
Street
Street

3 3 3

2 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


¡Jonrón! ¡Corre a la base del bateador!

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

8. Jugar al béisbol Nivel

8-1. Batearé un jonrón

¡Viva! Llegó el momento que tanto esperé, ¡hora de jugar al béisbol! Batearé un jonrón.
Crea un programa para ir a la primera, segunda y tercera base y regresar a la base
del bateador por adelantado, ya que estoy seguro de que batearé un jonrón.

LISTO COMP
LETA
DO
5 5

4 4

3 3

2 2

1 2 3 4 5 1 2 3 4 5

Notas para resolver problemas


¡Uf!
¡BIEN!
¡CORRE!

¡Bam!
¡Oh! ¡Bateó
la pelota!
8-1

8. Jugar al béisbol Nivel

8-2. Puedo batear la pelota

¡Ok! Comencemos con el juego. Crea un programa para hacerme avanzar según
el bateo
Si el tipo de bateo está fijado con un beeper en (Avenue:2, Street: 1). Luego de
avanzar, necesito mirar hacia el frente para el siguiente bateo, ¿no?

LISTO COMPLETADO

5 5

4 4
Street

Street

3 3

2 2

1 2 3 4 5 1 2 3 4 5
Avenue Avenue

El tipo de bateo se configura según la cantidad de beepers colocados frente al robot.


· 1 beeper: Bateo
· 2 beepers: bateo y carrera a segunda base
· 3 beepers: bateo y carrera a tercera base
· 4 beepers: Jonrón

Notas para resolver problemas


¿Tal vez?

Puedo jugar después de


limpiar esta área,
¿verdad?
9-1

9. Limpiar el parque de diversiones Nivel

9-1. Limpiemos la basura del parque de diversiones


El parque de diversiones es muy divertido. Pero también hay mucha basura.
Hay montones de basura acumulados en un lugar. Creo que deberíamos
limpiar un poco. Crea un programa para recoger toda la basura (beepers)
y llevar la basura al basurero (Avenue:1, Street:2).

LISTO COMPLETADO

5 5

4 4
4 Street
Street

3 3
3
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

¿Qué debería hacer para recoger una cantidad de beepers? (usar bucle while)
¿Cómo encontraré la basura?
¿Qué haré para encontrar la basura hasta toparme contra un muro? (usar bucle while)

Notas para resolver problemas


Limpiar todo el
parque de diversiones
Realmente es
es demasiado trabajo.
muy grande.

Lo es. 9-2

9. Limpiar el parque de diversiones Nivel

9-2. Limpiaré todo el parque de diversiones

Ya terminé de limpiar esta área. Ya que estoy limpiando, ¿qué tal si limpio
todo el parque de diversiones? Se puede hacer rápido si utilizo el enunciado
de repetición. Puedes crear un programa con todo esto, ¿verdad? No olvides
que el basurero está en (Avenue:1, Street:2).
LISTO COMPLETADO

5 5

4 Street 4
Street

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

¿Qué debería hacer para recoger una cantidad de beepers? (usar bucle while)
¿Cómo encontraré la basura?
¿Qué haré para encontrar la basura hasta toparme contra un muro? (usar bucle while)

Notas para resolver problemas


¡Qué hermosa
¡Qué hermosavista!
vist
a!
10-1

Por favor, yo quiero ir también

10. Construir un helipuerto Nivel

10-1. Necesito dibujar un cuadrado grande


Oh. No podemos transportar tanta basura sin utilizar el helicóptero. Crea un programa
para dibujar un helipuerto cerca de aquí. Primero deberás dibujar un cuadrado,
el largo de cada lado es la cantidad de beepers colocados en (Avenue:1, Street:2),
a partir de (Avenue:2, Street:2).

LISTO COMPLETADO

7 7

6 6

5 5
Street

Street

4 4

3 3

2 2

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

El beeper colocado en (Avenue:2, Street:1) se fija de manera aleatoria por


el usuario (5 o 6).
Notas para resolver problemas
80

PASO 2
81

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
ETAPA A
Prepárense para esta
etapa
¡OK!

¡Los robots
son
geniales!

¡Uf! ¿Cuándo es
Soy la esfinge. Dibuja el
la fecha límite?
triángulo necesario para
construir una pirámide.
¡No sean Si no lo haces, ¡te comeré!
holgazanes y
apresúrense!

¿Cuál es la mejor manera


1-1 de deshacernos de la
basura en el sitio de
Empieza a verse construcción?
como un triángulo.

¡Vamos a
Debería irme luego limpiar de
de limpiar toda la inmediato!
basura.
2-1

Solicitud 1 Solicitud 2

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


de la pirámide
1. Diseñar una pirámide Nivel

1-1. Necesito dibujar un triángulo

Recibí la primera solicitud. Es una solicitud para diseñar la pirámide en el


sitio de construcción. Lee la solicitud atentamente y crea un programa.

Solicitud

· 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.
· Provee suficientes beepers para el robot.

LISTO COMPLETADO

7 7

6 6

5 5
Street
Street

4 4

3 3

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?

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
Notas para resolver problemas
ETAPA B

¿Por qué la audiencia


está llena de zombis?

¡Oh! ¡Escucho
la música!

Si sigo el espiral, llegaré


al lugar del festival.

3-1
¡GUAU!
¡Uf! ¿Cuánto más
van a seguirme?

Solicitud 3

Dibujar un espiral
3. Dibujar un espiral Nivel

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.
· Provee suficientes beepers para el robot.

LISTO COMPLETADO

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 1 2 3 4 5 6 7 8 9

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

Notas para resolver problemas


ETAPA C
Quiero que
quede hermoso
como este.

Por favor,
¡crezcan
rápido!
¡Plantaremos
semillas en
intervalos regulares!
4-1

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

¡Oh, no! ¡Ayúdenme!

5-1

¡Voy en
camino!
¿Alguien
pidió pizza?

Solicitud 4 Solicitud 5

Entregar pizzas a los apartamentos


Cultivar flores en un oasis
del hormiguero
4. Cultivar flores en un oasis Nivel

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.

Solicitud

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


Street:5).
· Si ya hay una semilla (beeper) en el mismo lugar, deja una y recoge el resto.
· Para los lugares sin semillas (beepers), deja una semilla (beeper).

LISTO COMPLETADO

6 6

5 5

4 4

3 3

2 2

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

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


Notas para resolver problemas
ETAPA D

¡Lo haremos juntos!


¡Ja, ja, ja!
Si no resuelven el
problema, ¡prepárense
para más problemas! ¡Ayuda!
¡Ok!
6-1

Je, je. Es fácil. ¡Está bien!

¡Oh, no!
Estoy
atrapado

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

7-1
Puedes contar Resiste un
conmigo. minuto, Princesa.

¡Esta vez el problema es más difícil!


¡Ja, ja! ¿Podrán responder
correctamente?

¡Viva! ¡Logré pasar!

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
6. Repeler a la araña camello, la guardiana de la cueva Nivel

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.

Solicitud

· Ahuyenta a la araña camello resolviendo el problema de suma con dígitos simples.


· Muestra la respuesta con beepers al sumar los números ubicados en (Avenue:4,
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).

LISTO COMPLETADO

5 5

4 4
Street
Street

3 3

2 2

1 2 3 4 5 1 2 3 4 5
Avenue Avenue

¿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?
Para utilizar la cantidad de beepers recolectados en una función diferente,
¿qué variable deberías declarar?

Notas para resolver problemas


7. Repeler al escorpión gigante, el guardián de la salida Nivel

7-1. Enséñame a sumar con dos dígitos, también

¡De la sartén al fuego! A la salida de la cueva, un escorpión gigante bloquea el paso


con un problema de suma más difícil. Escribamos un programa para ahuyentarlo.

Solicitud

· Ahuyenta al escorpión gigante al resolver el problema de suma con dos números de dos dígitos.
· Al sumar un número de dos dígitos (por ej., 29) que aparece en (Avenue:3, Street:3). y (Avenue:4, Street:3
y otro número de dos dígitos (por ej., 96) que aparece en (Avenue:3, Street:2) y (Avenue:4, Street:2).
muestra el resultado con un beeper.
· Coloca el beeper para mostrar el lugar de las centenas en (Avenue:2, Street:1), las decenas
en (Avenue:3, Street:1) y las unidades en (Avenue:4, Street:1) para que los números
sean visibles.

LISTO COMPLETADO

5 5

4 4
Street
Street

3 3

2 2

1 2 3 4 5 1 2 3 4 5
Avenue Avenue

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)
22 move()
23 repeat (put_beeper ,carry)
24 4
25 def compute():
26 repeat(pick,2)
27 repeat(turn_left,2)
28 repeat(move,2)
29 result_put()
30
31 repeat(move,3)
32 turn_left()
33 compute()
3). 34 repeat(turn_left,3)
35 sum += carry
36 compute
37 move()
38 turn_off()

1 Si el robot encuentra el beeper, ¿qué instrucción debe seguir?



2 ¿Cómo debería utilizarse la variable a, que almacenó la cantidad de beepers que el robot recogió?

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

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

Notas para resolver problemas


8. Salvar a la princesa atrapada en el laberinto Nivel

8-1. Necesito encontrar a la princesa


Es una solicitud de emergencia. La princesa había salido a pasear cuando quedó
atrapada en el laberinto. Crea un programa para llegar a la princesa explorando el
laberinto, ¡rápido!
Solicitud
Solicitud

· Haz que el robot explore el laberinto automáticamente y llegue a la princesa (beeper).

LISTO COMPLETADO

7 7

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
El programa de ejemplo anterior es un método para salir del laberinto con
la regla de la mano derecha. Escribiremos un programa utilizando la regla
de la mano derecha.
1
2
3
4
5
6
7
8

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

¡Qué bien
huelen las flores!

Hay que retirar las


9-1 flores secas.

¡Hay que regar


las flores marchitas! Cuiden muy bien
de mi jardín de flores

Quiero averiguar
La habitación de el tamaño de esta
la princesa está aquí. habitación.

Huelo un dulce aroma. 10-1

¡Mi corazón
palpita!
No hay
problema.

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
9. Cuidar el jardín de flores de la princesa Nivel

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

· Planta tulipanes en los lechos vacíos.


· Retira las flores secas y planta rosas en su · 1 beeper: flor seca
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). · 5 beepers: rosa
· Provee suficientes beepers para el robot.

LISTO COMPLETADO

8 8
7 7
6 6
Street
Street

5 5
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

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

Notas para resolver problemas


10. Calcular el tamaño de la habitación de la Nivel

princesa 10-1. Necesito contar la cantidad de muros

La princesa ha enviado una nueva solicitud. Esta vez, es una solicitud para medir el
perímetro de la habitación. Es un nuevo tipo de solicitud, pero tú puedes hacerlo, ¿verdad?

Solicitud
· Haz que el robot calcule cuántos muros rodean a la habitación y muestre el resultado.
· Haz que el robot comience con un beeper para marcar la posición de inicio.
· Es una solicitud para contar la cantidad de muros, no la cantidad de beepers. Necesitas
comprender la función facing_north()※.

LISTO COMPLETADO

7 7

6 6

5 5

4 4

3 3

2 2

1 2 3 4 5 6 7 1 2 3 4 5 6 7
※ 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.

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
22
23 elif front_is_clear(): Pantalla
24 move()
25 1 i=
26 else: 2 count =
27 turn_left() 3 i=
28 count = 4 4 count =
29 5 i=
30 while not on_beeper(): 6 count =
31 count += travel_wall() 7 i=
32 if left_is_clear(): 8 count =
33 turn_left() 9 i=
34 move() 10 count =
35 elif not right_is_clear(): 11 i=

36 turn_around() 12 count =

37 count += 2 13 i=
38 else: 14 count =
39 turn_right() 15 i=
40 count += 1 16 count =
41 17 i=
print "count = ", count 2
18 count =
42
43 19 perimeter wall count =
44 pick_beeper()
45
46 while not facing_north():
47 turn_left()
48 count += 1
49
50 turn_right()
51 print "perimeter wall count = ", count 3
turn_off()

Notas para resolver problemas


ETAPA F
Hemos completado todas
las solicitudes de despacho
Eso es
Ángel, ¿cómo realmente
estás? increíble.

Las flores están


creciendo bien porque
salió el sol.
12-1

Supongo que los ángeles


también aman las flores.

Colocaré las flores


secas en un solo lugar

¡Guau! ¡Los robots


tienen la habilidad de
duplicarse!

11-1
¡Vamos a limpiar la
Torre del cielo! ¡Anímense!

Colocaremos la Colocaremos
basura la basura
en el basurero en el basurero

Solicitud 9 Solicitud 10

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


11. Limpiar la torre del cielo Nivel

11-1. Necesito limpiar con un clon de robot

La princesa debe estar satisfecha con el resultado de la solicitud. Recibí una solicitud de
un ángel por recomendación de la princesa. Lee la solicitud atentamente y crea un programa.

Solicitud

· Limpia todas las plumas (beepers) del suelo de la Torre del cielo.
· Haz que cada robot limpie la mitad de la torre utilizando la función UsedRobot() para una
limpieza más rápida,
LISTO COMPLETADO

6 6

5 5

Street
4 4
Street

3 3

2 2

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

Cómo utilizar la función UsedRobot()

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

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
name el nombre del robot que deseas crear (no deben repetirse)
colour el color del clon de robot que deseas crear (grey [valor predeterminado]/yellow/blue/light blue/purple/green)

Notas para resolver problemas


12. Cuidar el jardín de flores del cielo Nivel

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


Notas para resolver problemas
106

PASO 3
107

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

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


1-3. Código de respuesta
2. Cómo resolver la capacitación virtual 1

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

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
2-3. Código de respuesta
3. Cómo crear una capacitación virtual 2

Crearemos un problema para un mundo grande de más de 5x5

3-1. Definición del problema

SOLICITUD

2-2. Composición del mundo


LISTO COMPLETADO
3-3. Código de respuesta
4. Cómo resolver la capacitación virtual 2

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

4-1. Definición del problema

SOLICITUD

4-2. Composición del mundo


LISTO COMPLETADO

Notas para resolver pro


blemas
4-3. Código de respuesta
5. Guía de tareas

Nombre de la tarea: oo Robot despachado

Guía de tareas

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.
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 proye

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

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
6. Cuadro de asignación de roles

Nombre del equipo

Líder del equipo

Nombre del miembro Rol

ecto en forma de
ra cada equipo
7. Plan de ejecución de proyecto en equipo

Nombre del equipo

Miembro

Tiempo Plan
8. Hoja de sinopsis de la actividad

Nombre del equipo

Miembro

Problema Sinopsis

Problema 1

Problema 2

Problema 3
9. Ficha

Nombre del equipo

Miembro

9-1. Definición del problema

Guía de tareas

9-2. Pantalla del problema


LISTO COMPLETADO
10. Formulario de evaluación del equipo

Nombre del equipo

Miembro

Clasificación Contenidos

Nombre del
equipo
a evaluar

Puntos fuertes

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