Índicerecursos.ort.edu.ar/static/archivos/docum/1054766/142158.pdf · 2019. 5. 28. ·...

27

Upload: others

Post on 31-Oct-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ÍNDICErecursos.ort.edu.ar/static/archivos/docum/1054766/142158.pdf · 2019. 5. 28. · cro-ordenador con una unidad central, memoria, alimentación y los interfaces para acceder
Page 2: ÍNDICErecursos.ort.edu.ar/static/archivos/docum/1054766/142158.pdf · 2019. 5. 28. · cro-ordenador con una unidad central, memoria, alimentación y los interfaces para acceder

ÍNDICE

Bienvenida

1. Introducción

2. Características de un robot

3. Representación de un algoritmo con diagramas de flujo

4. Algoritmos con decisiones y bucles

5. Introducción al lenguaje y entorno Robomind

6. Robomind: uso de bucles y la estructura “repetir”

7. Robomind: uso de estructuras condicionales

8. Robomind: uso de expresiones condicionales

9. Procedimientos

1

Page 3: ÍNDICErecursos.ort.edu.ar/static/archivos/docum/1054766/142158.pdf · 2019. 5. 28. · cro-ordenador con una unidad central, memoria, alimentación y los interfaces para acceder

2

¡Les damos la bienvenida a la unidad didáctica! En ella encontrarás contenidos explicativos y propuestas de actividades. ¿Cómo está organizada la unidad? Por un lado encontrarás textos explicativos propios de la mate-ria y, por otro, los espacios de producción con actividades que invitan a aplicar lo previamente explicado. Éstas últimas están resaltadas en color: para que puedas encon-trarlas e identificarlas más sencillamente. En algunas de las actividades vas a encontrar propuestas que pueden involucrar herramientas 2.0. Para ello, contás con los insumos del anexo que tu docente descargó previamente. Para que lo puedas visualizar correctamente, es importante que descargues este archivo y lo abras con la última versión de Adobe Acrobat. ¡Mucha suerte! ¡A trabajar!

Editorial ORTMaterial creado para uso educativo y no [email protected](011) 4789-6491 / 6392

Page 4: ÍNDICErecursos.ort.edu.ar/static/archivos/docum/1054766/142158.pdf · 2019. 5. 28. · cro-ordenador con una unidad central, memoria, alimentación y los interfaces para acceder

3

1. Introducción

Hoy resulta común escuchar hablar sobre inteligencia artificial, impresión 3D, robótica... pero, ¿qué representa exactamente la robótica? ¿Qué es un robot? ¿y qué cosa no lo es? ¿Qué partes componen a un robot? ¿En qué campos de aplicación se han utilizado o se podrían utilizar robots? ¿La automatización nos afecta a todos? ¿Existen robots en la actualidad cuyas tareas eran realizadas por personas en el pasado? ¿La persona que no se prepare en robótica va a que-dar afuera del mundo laboral? El tema es fascinante, novedoso y se lo podría enfocar desde diferentes puntos de vista. Para tratar de enmarcarlo, vamos a construir una visión compartida comenzando por conocer qué ideas previas tenes sobre la robótica. En la prime-ra actividad, podrás contarnos tus ideas.

Fuente: goo.gl/7ih9Eo

¡Desafiando ideas previas!

Respondé el siguiente cuestionario donde tu docente

lo indique. Es importante que previamente debatas en

grupo, utilizando tus conocimientos e ideas previas:

1. ¿Cuál te parece que es la diferencia entre "robot" y

"máquina"? ¿Una máquina de coser, por ejemplo, dirías

que es un robot? ¿Y un taladro eléctrico?

2. ¿Te parece que una compañía que produce ropa pue-

de usar robots para fabricar sus productos, qué tareas

podrían realizar?¿Qué diferencias te parece que podría

haber entre estos y una máquina de coser?

3. ¿Todas las máquinas son robots? ¿Todos los robots

son máquinas?

4. Los semáforos pueden ser programados para mostrar

distintas secuencias de luces, y además funcionan por

su cuenta, sin ayuda de ninguna persona ¿Te parece

que los semáforos son robots?

5. Pensá tres objetos o máquinas que uses usualmente

que te parezcan que podrían ser mejores si fueran ro-

bots. Por ejemplo los autos, convirtiéndolos en robots,

podrían manejarse solos.

2. Características de un robot

Definición La definición más común de un robot es aquella que dice que es una máquina que cumple simultáneamente tres condiciones:

Fuente: goo.gl/oimmp1

Page 5: ÍNDICErecursos.ort.edu.ar/static/archivos/docum/1054766/142158.pdf · 2019. 5. 28. · cro-ordenador con una unidad central, memoria, alimentación y los interfaces para acceder

4

1. Es automática: que funciona por sí solo. Realiza total o parcialmente un proceso sin ayuda humana. 2. Reacciona a su entorno: dispone de ele-mentos (sensores) que le permiten reconocer el entorno y reaccionar frente a los obstáculos. 3. Es programable: puede reprogramarse para que su comportamiento varíe.

Elementos que lo componen Para poder cumplir estas condiciones, un robot ha de tener los siguientes elementos: 1. Controlador: el controlador es el ce-rebro físico del robot y básicamente es un mi-cro-ordenador con una unidad central, memoria, alimentación y los interfaces para acceder a los elementos externos. En robótica se puede utilizar prácticamente cualquier controlador que cuente con una unidad central lo suficientemente potente. 2. Actuadores: los actuadores o motores son los responsables de hacer que nuestro robot se mueva. Existe una amplia gama de motores ya sea específicos de un modelo de robot, como son los de LEGO o genéricos en cuyo caso hemos de comprobar que son compatibles, es decir que se pueden accionar, con el controlador que hayamos elegido. 3. Sensores: los sensores permiten que el robot detecte las condiciones del entorno y pue-da, de acuerdo con su programación, responder ante cambios de condiciones, obstáculos, etc. La gama de sensores es muy amplia.

Estructura de un robot La estructura es el esqueleto y, en algunos casos, la piel del robot. La estructura proporciona rigidez mecánica a nuestro robot, soporta el res-

to de elementos físicos (controlador, actuadores, etc.) y le confiere personalidad al robot. En el caso de la robótica la estructura se adapta a la función del robot. Así tenemos por ejemplo robots aspira-dores o robots que recorren ductos pequeños en espacios donde no podría entrar una persona. En un cuadricóptero, que es un caso par-ticular de vehículo no tripulado o dron, se utili-zan cuatro motores con hélices para volar y tras-ladarse. Este robot estabiliza su vuelo de forma autónoma mediante sensores y a su vez, puede realizar recorridos predeterminados o hacer un seguimiento de un objeto o persona con el uso de cámaras. En este caso los sensores son de gravedad, velocidad, orientación, GPS y cámaras. Los actua-dores son los motores que impulsan las hélices, y el controlador es el ordenador que a partir de las mediciones de los sensores, decide la velocidad correspondiente para cada motor en función del recorrido que debe realizar el robot.

Programación y diseño del algoritmo Para empezar a entender cómo se puede programar un robot, primero debemos conocer el concepto del algoritmo. Los algoritmos son se-cuencias ordenadas de instrucciones a realizar, una lista de pasos a seguir, de manera similar a una receta. Para programar un robot, el proceso de elaboración es similar al de cualquier otro progra-ma informático. Primero será necesario estable-cer el algoritmo que permita al robot llevar a cabo las tareas para las que ha sido diseñado. Después se debe traducir dicho algoritmo en un progra-ma, mediante el uso de un entorno y un lenguaje de programación. El entorno transformará dicho programa en un conjunto de instrucciones que

Page 6: ÍNDICErecursos.ort.edu.ar/static/archivos/docum/1054766/142158.pdf · 2019. 5. 28. · cro-ordenador con una unidad central, memoria, alimentación y los interfaces para acceder

5

puedan ser ejecutadas por el controlador del ro-bot. Este lenguaje debe permitir expresar de for-ma clara y sencilla las tareas que debe realizar el robot.

3. Representación de un algoritmo con diagramas de flujo

Para comenzar a diseñar los algoritmos, resulta muy útil poder representarlos de forma gráfica. Esta representación es conocida como diagrama de flujo, donde se ordena verticalmente la ejecución de instrucciones, utilizando la simbo-logía que figura en el cuadro de la página 23. Ejemplo: veamos cómo esta estructura de representación puede ser usada para mostrar el algoritmo de un montacargas que debe trasladar y almacenar una carga en un almacén:

Para este ejemplo se propuso el siguien-te algoritmo que lleva y deposita la carga en el primer estante:

El algoritmo indicado puede funcionar, pero no toma en cuenta la posibilidad de que el primer estante esté ocupado. Incorporando la posibilidad de tomar decisiones en el algoritmo, podemos hacer que nuestro robot se adapte a di-ferentes situaciones con las que se puede llegar a encontrar. En la robótica, y en particular en la toma de decisiones, se utiliza información pro-veniente de los sensores de los robots y que, a partir de ella, se propone que los robots realicen diversas acciones.

Page 7: ÍNDICErecursos.ort.edu.ar/static/archivos/docum/1054766/142158.pdf · 2019. 5. 28. · cro-ordenador con una unidad central, memoria, alimentación y los interfaces para acceder

6

Veamos como podría ser un algoritmo que incorpore una decisión para analizar si el primer estante está libre o no:

Supongamos la situación en donde un ro-bot montacargas debe trasladar una caja, y para ello debemos diseñar un algoritmo para que rea-lice esta tarea. Imaginemos las acciones que debe realizar el móvil. Son las mismas que si estuviera tripulado. Para esto contamos con las siguientes instrucciones, que van a facilitar nuestro trabajo para realizar la programación textual: - adelante (n): avanza la cantidad de casi-llas indicadas por un número entre los paréntesis

- atrás (n): retrocede la cantidad de casillas indicadas por un número entre los paréntesis - derecha: gira sobre sí mismo, en el lugar, en sentido horario un cuarto de vuelta - izquierda: gira sobre sí mismo, en el lu-gar, en sentido antihorario un cuarto de vuelta - tomar: toma la caja que se ubica en la ca-silla directamente en frente al robot y comienza a moverse junto con el robot. - poner: deposita la caja en la casilla direc-tamente en frente al robot. Como un primer ejemplo veamos qué ha-cer si partimos de la posición que se muestra en la imagen y queremos que el robot traslade la caja hasta la casilla inferior derecha. Posición de partida:

Posición final:

Page 8: ÍNDICErecursos.ort.edu.ar/static/archivos/docum/1054766/142158.pdf · 2019. 5. 28. · cro-ordenador con una unidad central, memoria, alimentación y los interfaces para acceder

7

¡Diseñando algoritmos!

Para cada situación presentada, diseñá un algoritmo y

representalo mediante un diagrama de flujo para que el

robot realice la tarea de trasladar cada caja a la casilla

del mismo número.

Situación N° 1

Situación N° 2

Situación N° 3

Expresiones condicionales Hasta ahora utilizamos las instrucciones adelante, atrás, derecha, izquierda, tomar y po-

4. Algoritmos con decisiones y bucles

Page 9: ÍNDICErecursos.ort.edu.ar/static/archivos/docum/1054766/142158.pdf · 2019. 5. 28. · cro-ordenador con una unidad central, memoria, alimentación y los interfaces para acceder

8

ner, pero éstas sólo nos permiten plantear algo-ritmos con acciones definidas y no con acciones a realizar en base a la toma de decisiones. Si quere-mos que el robot pueda adaptarse en diferentes situaciones necesitará incorporar la toma de de-cisiones. Éstas estarán compuestas por una pre-gunta, y en función de cómo sea evaluada, la res-puesta permitirá realizar una acción u otra. Para poder incorporar estas decisiones en nuestros algoritmos deberemos utilizar expresiones con-dicionales. Estas expresiones se incorporan en preguntas de resultado binario (resultado “si” o “no”, también definidos como “verdadero” o “fal-so”). Nuevamente, para facilitar nuestro trabajo para cuando realicemos la programación textual, vamos a usar las siguientes expresiones condicio-nales: - frenteEsObstaculo: esta expresión es verdadera si adelante del robot hay una pared u obstáculo. - frenteEsClaro: esta expresión es verda-dera si adelante del robot no hay una pared u obstáculo. - frenteEsCaja: esta expresión es verdade-ra si adelante del robot hay una caja. Veamos ejemplos donde se utilicen estas estructuras condicionales:

Con este algoritmo, el robot podría hacer algo distinto dependiendo de la situación inicial. A continuación, observarán dos situaciones dis-tintas y sus correspondientes resultados al ejecu-tar este algoritmo. Situación N°1:

Si resulta verdadero

Page 10: ÍNDICErecursos.ort.edu.ar/static/archivos/docum/1054766/142158.pdf · 2019. 5. 28. · cro-ordenador con una unidad central, memoria, alimentación y los interfaces para acceder

9

Situación N°2:

Si resulta falso

Bucles Las estructuras condicionales también nos sirven para poder hacer bucles en nuestro algoritmo si queremos que una acción se pueda repetir.

Como ejemplo podemos pensar en que nuestro robot debe avanzar hasta antes de cho-car con una pared o con una caja. Pero nuestro desafío ahora es que realmente no conocemos a qué distancia se encuentran esos obstáculos. Como el caso de la figura:

¿Qué hacer? Si tuvieras que avanzar a cie-gas, ¿qué harías? Podrías avanzar paso a paso chequeando si hay o no un obstáculo. En este caso, el algo-ritmo podría incluir un bucle de repetición con la expresión condicional frenteEsClaro. Si el resul-tado de la evaluación es verdadero, el robot avan-zará un casillero y volverá a preguntar en base a la misma expresión.

Page 11: ÍNDICErecursos.ort.edu.ar/static/archivos/docum/1054766/142158.pdf · 2019. 5. 28. · cro-ordenador con una unidad central, memoria, alimentación y los interfaces para acceder

10

Esta estructura de control de flujo, se uti-liza para repetir una acción hasta satisfacer la condición deseada, en este caso una condición basada en la detección frontal de una caja. También podemos utilizar bucles para re-petir una instrucción una cantidad determinada de veces.

A su vez, es posible realizar varias acciones dentro de un mismo bucle e incluso incluir nuevas estructuras condicionales o bucles de repetición dentro de otros.

¡Diseñando robots!

1. Una empresa que se dedica a hacer trabajos de de-

marcaciones viales sobre calles pavimentadas utiliza

tecnología robótica. Para llevar a cabo estos trabajos,

utilizan un robot al que deben programar previamente.

Page 12: ÍNDICErecursos.ort.edu.ar/static/archivos/docum/1054766/142158.pdf · 2019. 5. 28. · cro-ordenador con una unidad central, memoria, alimentación y los interfaces para acceder

11

Como programador de la empresa, te solicitan la si-

guiente prueba de funcionamiento: Pintar las iniciales

mayúsculas de tu/s nombre/s y apellido/s

- Diseñar el algoritmo y representarlo mediante un dia-

grama de flujo tomando en cuenta el siguiente proble-

ma: no se conoce la posición inicial del robot, por lo que

primero deberán encontrar un punto de referencia (por

ejemplo una esquina) para después poder pintar las le-

tras correspondientes.

- Una vez representado el algoritmo, deberán ponerlo

en práctica. En este caso, utilizarán el simulador “Robo-

mind”. Para aprender a usar el simulador, consultá <In-

troducción al lenguaje y entorno Robomind>. De lo con-

trario, representalo donde tu docente lo indique.

- Utilizando el mapa OpenArea, creá el código (progra-

ma) del algoritmo diseñado. Ingresá el código en el cam-

po de programación y ejecutá el programa. Observá el

comportamiento del robot.

Nota: en robótica es muy usual el uso de una "posición

de origen", esta es una posición conocida a partir de la

cuál se pueden realizar el resto de los movimientos y de

esta forma siempre empezar desde el mismo lugar.

2. Un robot montacargas debe recorrer todo el contor-

no, bordeando las paredes internas, de un depósito.

- Diseñá un algoritmo y representarlo mediante un

diagrama de flujo para los siguientes casos:

1. El robot se encuentra en el depósito cuadrado

2. El robot se encuentra en el depósito rectangular

3. El robot se encuentra en uno de los 2 depósitos pero

no se sabe en cuál. El mismo algoritmo debe funcionar

para ambas opciones.

- Vamos a probar los algoritmos utilizando el simulador

Robomind. Para aplicar decisiones y bucles de repetición

en el simulador, consultá <Robomind: Uso de Bucles y la

estructura “repetir”> - <Robomind: Uso de estructuras

condicionales>. y <Robomind: Uso de expresiones con-

dicionales>

Page 13: ÍNDICErecursos.ort.edu.ar/static/archivos/docum/1054766/142158.pdf · 2019. 5. 28. · cro-ordenador con una unidad central, memoria, alimentación y los interfaces para acceder

12

Usando el mapa OpenArea, hacé que el robot pinte de

negro el contorno de los planos de cada una de las situa-

ciones propuestas (a); (b) y (c) del punto anterior.

Ingresá el código en el campo de programación. Ejecu-

tá (presionando el botón PLAY ubicado en la barra de

control de ejecución) el programa y observá el compor-

tamiento del robot. De lo contrario, realizá la actividad

donde tu docente lo indique.

3. El robot montacargas debe avanzar de a un casillero

por vez, revisando a cada paso si a su izquierda se en-

cuentra una caja. Si encuentra una caja, debe tomarla,

dar media vuelta y soltarla. Si no logra encontrar una

caja y llega hasta el final del mapa, entonces el robot

debe dejar de avanzar.

- Diseñar un algoritmo y representarlo mediante un dia-

grama de flujo.

- Probá el algoritmo utilizando el simulador Robomind.

Para la situación en que encuentra una pared se pue-

de utilizar el mapa OpenArea. Para la situación en que

encuentra una caja se puede utilizar el mapa findSpot1

aunque en este mapa de Robomind, en lugar de haber

una caja, hay un punto blanco en el piso por lo que en

vez de trasladar la caja se debe pintar de negro el cami-

no. De lo contrario, realizá la actividad donde tu docen-

te lo indique.

4. El robot montacargas avanza hasta encontrar un obs-

táculo, pero no sabe la distancia que debe avanzar hasta

encontrarlo. Además, el obstáculo puede ser una caja

o la pared. Si es una caja, la toma, gira a la derecha y la

suelta dos pasos más adelante. Si es la pared, el robot

gira media vuelta y regresa a la posición de donde partió.

- Diseñar un algoritmo y representarlo mediante un dia-

grama de flujo.

Situación: encuentra una pared

Page 14: ÍNDICErecursos.ort.edu.ar/static/archivos/docum/1054766/142158.pdf · 2019. 5. 28. · cro-ordenador con una unidad central, memoria, alimentación y los interfaces para acceder

13

Situación: encuentra una caja

- Probá el algoritmo utilizando el simulador Robomind.

Para la situación: Encuentra una pared se puede utili-

zar el mapa: OpenArea. Para la situación: Encuentra una

caja, buscá mapas que tengan un obstáculo. De lo con-

trario, realizá la actividad donde tu docente lo indique.

5. Un robot debe realizar un recorrido indefinidamente

por la planta de una fábrica que esta pintado en el piso.

Los dueños de la fábrica quieren tener la posibilidad de

cambiar el recorrido pintado sin que haya que volver a

programar el robot, es decir que el algoritmo se tiene

que adaptar a distintos recorridos pintados. Para este

programa se pueden utilizar las expresiones condiciona-

les frenteEsBlanco, izquierdaEsBlanco y derechaEsBlan-

co.

- Diseñá un algoritmo y representarlo mediante un dia-

grama de flujo.

- Probá el algoritmo utilizando el simulador Robomind.

Debés utilizar el mapa "Recorrido.map" que aparece

como archivo adjunto. De lo contrario, realizá la activi-

dad donde tu docente lo indique.

6. Utilizando el procedimiento giro180(), diseñá un al-

goritmo, representalo mediante un diagrama de flujo y

escribí el código en Robomind, para que un robot autó-

nomo que vigila una fábrica siguiendo una línea blanca

de extremo a extremo, recorra constantemente la línea

en un sentido y luego en otro.

Te damos el siguiente código para ayudarte:

Nota: si querés copiar el código para pegarlo en la zona

de programación del Robomind, deberás hacer un paso

intermedio. Primero pegalo en un bloc de notas. Selec-

cioná nuevamente el código pero esta vez del bloc de

notas. Ahora sí, pegá el código en la zona de

programación.

Page 15: ÍNDICErecursos.ort.edu.ar/static/archivos/docum/1054766/142158.pdf · 2019. 5. 28. · cro-ordenador con una unidad central, memoria, alimentación y los interfaces para acceder

14

# map: default.map

derecha()

pintarBlanco()

adelante(8)

detenerPintar()

repetir()

{

#acá va tu codigo en el que vas a hacer el llamado al

procedimiento giro180

}

#declaración del procedimiento

procedimiento giro180()

{

derecha()

derecha()

}

De lo contrario, realizá la actividad donde tu docente lo

indique.

7. En general, los robots, antes de realizar una nueva ta-

rea deben posicionarse en una posición de inicio porque

no se sabe en qué punto quedó de la actividad anterior.

Esta actividad implica la búsqueda de ese punto de ini-

cio, e inclusive, podría incluír que el robot recorra toda

la periferia de su campo de acción.

- Utilizando el mapa OpenArea, diseñá un algoritmo,

representalo mediante un diagrama de flujo y escribí

el código en Robomind, para que un robot autónomo,

partiendo de cualquier lugar del mapa y orientado hacia

cualquier lado, busque una esquina y luego recorra el

borde interior completo, buscando un cajón cuya ubica-

ción, en una de las esquinas, marca el punto de arranque

del robot. Cuando encuentra el cajón, se debe detener

y lo debe tomar.

5. Introducción al lenguaje y entorno Robomind

A continuación, vamos a aprender acerca de la programación textual. Consiste en la escri-tura de un algoritmo en un lenguaje que puede ser entendido por una computadora, para que luego dicho programa sea transferido a un robot. Para ello, se utiliza una sintaxis o forma de es-critura rigurosa, donde se deben respetar ciertas pautas. Hay muchos lenguajes de programación posibles que pueden ser utilizados para esta ta-rea, nosotros vamos a usar el entorno educativo Robomind, el cual incorpora su propio lenguaje de programación. A su vez, el entorno incluye un simulador que permite probar nuestro programa mediante un robot virtual. Al ejecutar el programa nos encontrare-mos con la siguiente imagen:

Podrán ver referencias a diferentes es-pacios del entorno. Entre ellas, destacamos la zona donde editaremos el código (indicada como ZONA DE PROGRAMACIÓN) y la zona donde veremos cómo se comporta el robot al ejecutar nuestro programa ( identificada como MAPA). Si hacemos clic derecho en el área de acción del ro-bot, podremos hacer zoom in y out para poder tener una mejor vista de la misma. Para abrir los diferentes mapas en el sec-tor MAPA, seguí los siguientes pasos:

Page 16: ÍNDICErecursos.ort.edu.ar/static/archivos/docum/1054766/142158.pdf · 2019. 5. 28. · cro-ordenador con una unidad central, memoria, alimentación y los interfaces para acceder

15

Para ejecutar el código cargado en la zona de programación, se debe presionar el botón PLAY ubicado en la barra de control de ejecución.

Para nuestro robot existen las siguientes instrucciones básicas que podés leer en la página 24. Comentarios # texto libre que ayuda al programador a recordar qué se está programando. Todo texto que aparezca después del sim-bolo '#' no se interpretará como instrucción. Esto es utilizado en programación para incorporar tex-tos que expliquen y/o ayuden a recordar lo que se está programando. El robot procederá con la siguiente línea en el texto del programa, llamado en inglés “script”. Utiliza esta función para hacer anotaciones sobre partes del script como nota recordatoria para ti mismo sobre cómo algo fun-ciona. Ejemplo:

# Este programa fue hecho por Nicolás y Federico

Caso particular: Los Mapas El comentario #map: indica el nombre de mapa a utilizar. Existen varios mapas que podés investigar utilizando la opcion “abrir mapa” Ejemplo:

#map: openarea.map

6. Robomind: uso de bucles y la estructu-ra “repetir”

Ahora vamos a conocer como utilizar los bucles de repetición en el simulador Robomind. Utilizaremos dos tipos de estructuras de repeti-ción: 1. Repetir una cantidad indefinida de veces:

repetir(){...instrucciones… }

Repite las instrucciones entre las { llaves } indefinidamente. Ejemplo:

# avanza hacia adelante indefinidamente

# (aunque al final se quedará golpeando la pared)

repetir()

{

adelante()

}

Page 17: ÍNDICErecursos.ort.edu.ar/static/archivos/docum/1054766/142158.pdf · 2019. 5. 28. · cro-ordenador con una unidad central, memoria, alimentación y los interfaces para acceder

16

2. Repetir una cantidad definida de veces:

repetir(n){...instrucciones… }

Repite las instrucciones entre las { llaves } exactamente n veces. Ejemplo:

# un cuadrado de 2x2

repetir(4)

{

adelante(2)

derecha()

}

7. Robomind: uso de estructuras condicionales

1. Bucle Condicional

repetirMientras ( condición ){...instrucciones...}

Repetí las instrucciones entre las {llaves} siempre y cuando la condición sea VERDADERA. La condición debe ser siempre una EXPRESIÓN (por ejemplo frenteEsClaro()) Ejemplo:

# Avanza hacia adelante se detiene cuando no puede

continuar

repetirMientras ( frenteEsClaro() )

{

adelante(1)

}

Este bucle condicional "repetirMientras" cumple la misma función que el bucle de los dia-gramas de flujo:

2. Tomando decisiones: Estructura “SI”

si ( condición ){...instrucciones...} El robot realizará las instrucciones entre {llaves} si la condición es VERDADERA. Si la con-dición es FALSA, el robot seguirá realizando las instrucciones que se encuentren inmediatamente después de la llave de cierre. La condición debe ser EXPRESIÓN (por ejemplo frenteEsClaro() Ejemplo:

Page 18: ÍNDICErecursos.ort.edu.ar/static/archivos/docum/1054766/142158.pdf · 2019. 5. 28. · cro-ordenador con una unidad central, memoria, alimentación y los interfaces para acceder

17

# si ves pintura blanca a tu izquierda, pintar de negro

si (izquierdaEsBlanco())

{

pintarNegro()

detenerPintar()

}

Otra opción de la Estructura “SI”

si ( condición ){...instrucciones...}otro{...instrucciones...} El robot realizará las instrucciones entre el primer par de {llaves} si la condición es VER-DADERA. Las instrucciones entre las segundas {llaves} o bloque otro (segunda instrucción) no se realizarán. Cuando la condición es FALSA, el ro-bot realizará entonces las instrucciones del blo-que otro (segunda instrucción). Una vez que haya realizado una de las dos instrucciones, continua-rá realizando las instrucciones que se encuentren después de la última llave. La condición debe ser una EXPRESIÓN (por ejemplo frenteEsClaro()) Ejemplo:

# si ves pintura blanca a la izquierda, pintar de negro

# sino avanza unos pasos hacia adelante

si ( izquierdaEsBlanco() )

{

izquierda()

adelante(1)

pintarNegro()

detenerPintar()

hacia atras(1)

derecha()

}

otro

{

adelante(3)

}

La estructura de "si" y "otro" cumplen la misma función que las decisiones hechas con el símbolo de rombo de los diagramas de flujo. Las instrucciones que aparecen en "si" representan el resultado verdadero y las instrucciones que apa-recen en "otro" representan el resultado falso:

3. Interrupción Te permite interrumpir un bucle (por ejem-plo: repetir()) y asi dejar de realizar las instruccio-nes entre las llaves. El robot reanudará la realiza-ción de las instrucciones que queden después del la llave de cierre del bucle. Ejemplo:

Page 19: ÍNDICErecursos.ort.edu.ar/static/archivos/docum/1054766/142158.pdf · 2019. 5. 28. · cro-ordenador con una unidad central, memoria, alimentación y los interfaces para acceder

18

# sigue hacia adelante, hasta que no pueda avanzar más

repetir()

{

si(frenteEsObstáculo())

{

interrumpir

}

otro

{

adelante(1)

}

}

Aclaraciones importantes: - Las condiciones deben ponerse entre paréntesis, y, también, las expresiones llevan pa-réntesis al final, por ejemplo: si(derechaEsObstaculo()){instrucciones…} esto puede resultar molesto pero es necesario recordar poner los paréntesis y cerrar las llaves. - Recomendamos revisar cada vez que abrimos un paréntesis o una llave, verificar que se cierren. - Para ver todas las expresiones condi-cionales del Robomind, consultá la tabla de ex-presiones condicionales que se encuentra en el próximo artículo.

8. Robomind: uso de expresiones condicionales

Nuestro robot tiene la capacidad de “ver” el entorno que lo rodea. Ésta capacidad está limi-tada a un espacio de una cuadricula al frente y a ambos costados. Puede detectar: Obstáculos, pintura ne-gra, pintura blanca, balizas (una “pelota” que pue-de agarrar el robot) o un espacio vacío. Los obstáculos generan “condiciones” con

las que se enfrenta el robot, las condiciones en cada situación pueden ser “verdaderas” o “Fal-sas”. Las condiciones se expresan con diferentes expresiones. La siguiente lista detalla las expresiones utilizadas para conocer el mundo que rodea al robot:

Izquierda Frente Derecha

izquierdaEsObstaculo()

izquierdaEsClaro()

izquierdaEsBaliza()

izquierdaEsBlanco()

izquierdaEsNegro()

frenteEsObstaculo()

frenteEsClaro()

frenteEsBaliza()

frenteEsBlanco()

frenteEsNegro()

derechaEsObstaculo()

derechaEsClaro()

derechaEsBaliza()

derechaEsBlanco()

derechaEsNegro()

Todas las instrucciones comienzan en ro-bomind con letras minúsculas, las mayúsculas se utilizan para separar palabras. Estas expresiones no son instrucciones, ya que no pueden indicarle un movimiento u otra acción al robot. Las expresiones pueden ser VER-DADERAS O FALSAS y son utilizadas en conjun-to con algunas estructuras llamadas: ESTRUCTU-RAS CONDICIONALES

Page 20: ÍNDICErecursos.ort.edu.ar/static/archivos/docum/1054766/142158.pdf · 2019. 5. 28. · cro-ordenador con una unidad central, memoria, alimentación y los interfaces para acceder

19

Ejemplo: en la imagen que vemos a la iz-quierda la expresión frenteEsObstaculo() es VER-DADERA, así como también derechaEsClaro() (Claro significa vacío). Por otro lado, el resultado de derechaEs-Negro() es FALSO.

9. Procedimientos

¡A veces programar robots podría ser más sencillo de lo que parece! Cuando diseñamos la programación de un robot, es muy común que se presenten situacio-nes en las que una misma tarea (estructura, ruti-na) se repite una y otra vez a lo largo del mismo programa. Por ejemplo, analicemos el diseño que está en la página 25.

Habrás observado que la estructura re-cuadrada, que hace que el robot avance paso por paso hasta que se encuentra con un obstáculo, aplica, en este ejemplo, por lo menos dos veces. Mirá el ejemplo de la página 26.

Para no tener que escribir, una y otra vez, el código de la estructura que se repite, la reem-plazamos cada vez llamando a una especie de "operación". Pero, claro, para que el programa re-conozca esa "operación", debemos definir y pre-sentar, por lo menos una vez, el código de dicha "operación". La "operación" es el procedimiento. El có-digo del procedimiento se escribe y presenta solo una vez. Esto se llama declaración del procedi-miento. Cada vez que el robot deba realizar la ta-rea del procedimiento, simplemente hacemos el llamado al procedimiento. En nuestro ejemplo, este procedimiento lo denominamos “AdelanteHastaObstáculo”.

Entonces, la programación del robot se lo puede pensar así:

Utilizaremos dos tipos de procedimientos: - Si un procedimiento tiene parámetros. - Si un procedimiento NO tiene paráme-tros. Vamos a analizar ejemplos, con Robomind, de programas que utilizan procedimiento: 1º Ejemplo: cuando el procedimiento NO tiene parámetros Imaginemos tener que programar un robot que dibuja letras. El código para que el robot di-buje la letra T es el que sigue:

pintarBlanco()

adelante(4)

izquierda()

adelante(2)

atras(4)

detenerPintar()

Ahora, para que el robot pinte la sigla ITT, cada vez que tenga que pintar la misma letra T (en

Page 21: ÍNDICErecursos.ort.edu.ar/static/archivos/docum/1054766/142158.pdf · 2019. 5. 28. · cro-ordenador con una unidad central, memoria, alimentación y los interfaces para acceder

20

este caso solo dos veces), el código del programa tendría que tener escrito la misma secuencia de instrucciones. En nuestro caso las que se enun-ciaron antes. Para simplificar la programación del ro-bot, podriamos declarar (escribir) el código como procedimiento, solo una vez. Entonces, cada vez que se necesite ejecutarlo (pintar la misma letra), se debe hacer la llamada al procedimiento con el nombre correspondiente y escrito de manera idéntica. Nos ahorramos, así, tener que escribir el mismo código reiteradas veces. Nota: el procedimiento puede estar decla-rado antes o después de su llamada, el Robomind lo ejecutará igual. Probá el siguiente programa para que el robot pinte la sigla ITT.

#el robot se posiciona para centrar el trabajo

izquierda()

adelante(5)

derecha()

#el robot pinta la letra I y se posiciona para la siguiente

letra

pintarBlanco()

adelante(4)

atras(4)

derecha()

detenerPintar()

adelante(3)

izquierda()

#llamamos al procedimiento declarado para que el robot

pinte la letra T y se posiciona para la siguiente letra

LetraT()

izquierda()

adelante(4)

izquierda()

adelante(3)

izquierda()

#volvemos a llamar al procedimiento declarado para que

el robot pinte la segunda letra T y se posiciona para la

siguiente letra

LetraT()

izquierda()

adelante(4)

izquierda()

adelante(3)

izquierda()

#declaramos un procedimiento para que el robot dibuje

de una letra T de un tamaño determinado

#el nombre del procedimiento puede ser cualquiera que

le quieras dar, pero siempre es conveniente que sea re-

presentativo y esté relacionado con la tarea que va a rea-

lizar.

procedimiento LetraT()

{

pintarBlanco()

adelante(4)

izquierda()

adelante(2)

atras(4)

detenerPintar()

} 2º Ejemplo: cuando el procedimiento SÍ tiene parámetros Imaginemos tener que programar un robot que hace la demarcación rectangular de bordes

Page 22: ÍNDICErecursos.ort.edu.ar/static/archivos/docum/1054766/142158.pdf · 2019. 5. 28. · cro-ordenador con una unidad central, memoria, alimentación y los interfaces para acceder

21

en lotes y en predios. Por ejemplo si tuviera que pintar un rectángulo de 4x2, el código, resuelto con bucle de repetición, sería:

#map: openarea.map

#posicionamos el robot

izquierda()

adelante(3)

derecha()

#El robot empieza a pintar

pintarNegro()

repetir(2)

{

adelante(4)

derecha()

adelante(2)

derecha()

}

En otra situación, el robot debe realizar otra demarcación. Ahora tiene que pintar un rectángulo de 6x3. Modificamos el programa anterior para que el robot dibuje un rectangulo de 6x3:

#map: openarea.map

#posicionamos el robot

izquierda()

adelante(3)

derecha()

#El robot empieza a pintar

pintarNegro()

repetir(2)

{

adelante(6)

derecha()

adelante(3)

derecha()

}

Podemos observar que en ambos casos, el código es prácticamente el mismo. Solo tuvimos que cambiar las medidas. Y así para cada rectán-gulo que el robot tenga que pintar de diferente medida. Nuevamente se nos presenta la situación de tener que escribir, una y otra vez, el mismo có-digo aunque, ahora, con los "valores" de las medi-das cambiados. Podemos, nuevamente, pensar en definir, como procedimiento, un código genérico que haga que el robot pinte un rectángulo cuyas me-didas sean genéricas. El procedimiento, como ya vimos, debe ser declarado solo una vez. En la de-claración del procedimiento, a los valores gené-ricos de las medidas las declaramos como pará-metros y deben ser expresados entre ( ). Puede haber tantos parámetros como sea necesario. En nuestro ejemplo se utilizan dos parámetros: (ancho,alto). Las medidas definitivas (cualesquiera sean) las vamos a definir, según la necesidad de cada caso, en los respectivos llamados al procedimien-to. Se expresan como argumentos que represen-tan los valorres que se le pasan los parámetros de procedimiento cuando se llama al procedimiento. Se deben expresar entre ( ) y respetando el mis-mo orden como fueron declarados los correspon-dientes parámetros. Utilizando procedimiento, el programa para que el robot pinte en diferentes situaciones rectángulos de diferentes medidas sería:

Page 23: ÍNDICErecursos.ort.edu.ar/static/archivos/docum/1054766/142158.pdf · 2019. 5. 28. · cro-ordenador con una unidad central, memoria, alimentación y los interfaces para acceder

22

#map: openarea.map

#posicionamos el robot

izquierda()

adelante(3)

derecha()

#declarmos el procedimiento rectángulo donde se define

cómo dibujar un rectángulo

procedimiento rectangulo(ancho,alto)

{

pintarNegro()

repetir(2)

{

adelante(alto)

derecha()

adelante(ancho)

derecha()

}

detenerPintar()

}

#Hasta ahora solo declaramos el procedimiento para que

pinte un rectángulo cuyas medidas faltan definir y son los

argumentos, es decir pueden ser cualesquieras o las que ne-

cesites pintar

#Ahora vamos a llamar al procedimiento rectangulo para

que pinte un rectángulo de 4x2 o sea argumentos (4,2)

rectangulo(4,2)

Para la otra situación que se necesitaba que el robot realice la demarcación de un rectán-gulo de 6x3, abrí el archivo anterior donde decla-raste el procedimiento para que pinte un rectán-gulo y lo llamás con las nuevos argumentos.

rectangulo(6,3)

Resumiendo: Trabajar con procedimientos requiere de dos etapas separadas: declaración y los llamados. Un procedimiento es una estructura que sirve para agrupar un conjunto de instrucciones bajo un nombre. El procedimiento debe ser de-clarado una vez y puede ser “llamado” dentro del código del programa en diferentes ocasiones sin necesidad de volver a escribir esas instrucciones. La declaración debe presentar la siguiente sintaxis: - Cuando el procedimiento NO tiene pará-metros: Procedimiento nombre(){...instrucciones...} - Cuando el procedimiento SÍ tiene pará-metros: Procedimiento nombre(parametro1, para-metro2, ….. ){...instrucciones...} Los llamados al procedimiento, cada vez que se necesite ejecutarlo, deben hacerse con idéntico nombre y tantos argumentos y en el mis-mo orden como parámetros se hayan enunciados en la declaración del procedimiento. Deben presentar la siguiente sintaxis: - Cuando el procedimiento NO tiene pa-rámetros (no te olvides de abrir y cerrar parén-tesis”()” luego de escribir el nombre del procedi-miento): nombre() - Cuando el procedimiento SÍ tiene pará-metros: nombre(argumento1 = valor del parame-tro1, argumento2 = valor del parametro2, ….. )

Page 24: ÍNDICErecursos.ort.edu.ar/static/archivos/docum/1054766/142158.pdf · 2019. 5. 28. · cro-ordenador con una unidad central, memoria, alimentación y los interfaces para acceder

23

Simbología

Óvalo o Elipse: inicio y final (abre y cierra el dia-grama).

Rectángulo: acción (representa la ejecución de una o más instrucciones o procedimientos).

Rombo: decisión (evalúa una pregunta y permite tomar un camino en base al resultado de la de-cisión).

Círculo: conector (representa el enlace de un ca-mino con otro, unificándolos).

Hexágono: bucle (formula una pregunta y si re-sulta verdadera, repite el conjunto de acciones contenidas. A su vez, puede repetir las instruc-ciones una cantidad definida de veces).

Page 25: ÍNDICErecursos.ort.edu.ar/static/archivos/docum/1054766/142158.pdf · 2019. 5. 28. · cro-ordenador con una unidad central, memoria, alimentación y los interfaces para acceder

24

Instrucciones básicas

Movimiento

adelante(n)Mover n pasos hacia delante

atrás(n)Mover n pasos hacia atrás

izquierda()Girar a la izquierda de 90 grados

derecha()Girar a la derecha de 90 grados

Pintar

pintarBlanco()Usar brocha blanca para pintar el suelo

pintarNegro()Usar brocha negra para pintar el suelo

detenerPintar()Dejar de pintar, escon-der brocha

Tomar

tomar()Tomar la baliza delante del robot

poner()Poner la baliza delante del robot

Page 26: ÍNDICErecursos.ort.edu.ar/static/archivos/docum/1054766/142158.pdf · 2019. 5. 28. · cro-ordenador con una unidad central, memoria, alimentación y los interfaces para acceder

25

Diseño 1

Page 27: ÍNDICErecursos.ort.edu.ar/static/archivos/docum/1054766/142158.pdf · 2019. 5. 28. · cro-ordenador con una unidad central, memoria, alimentación y los interfaces para acceder

26

Diseño 1