Sie sind auf Seite 1von 28

Curso Pre- ingreso 2011 Carrera Ingeniera en Computacin - Facultad de Informtica Facultad de Ingeniera

Captulo 2
Algoritmos y Lgica Introduccin al lenguaje del Robot

Objetivos
En este captulo se vern con mayor profundidad algunos de los conceptos utilizados anteriormente para la definicin de algoritmos. Adems se introducir el concepto de lenguajes de expresin de problemas y los tipos de lenguajes existentes. Se realizar la presentacin del sistema Visual Da Vinci (el Robot) que tiene un lenguaje especial, con el que comenzaremos a trabajar en la resolucin de problemas. Este captulo les permitir aplicar lo visto sobre estructuras de control, pero en el lenguaje previsto para el robot. Adems se introducirn y repasarn algunos conceptos bsicos de la lgica proposicional que permitirn representar condiciones complejas utilizadas en las estructuras del robot, aplicadas especficamente a problemas con el robot.

Temas a tratar
Lenguajes de Expresin de Problemas. Tipos de Lenguajes. Sintaxis y semntica en un Lenguaje. Visual Da Vinci (El Robot). Operaciones sobre el Robot. Estructura general de un programa. Estilo de Programacin. Ambiente de programacin. Estructuras de control en el Robot Revisin del tema: Proposiciones atmicas y moleculares, simbolizacin y tablas de verdad Conectivos lgicos: Conjuncin, Disyuncin y Negacin. Utilizacin del parntesis. Conclusiones Ejercitacin

U. N. L. P.

Introduccin a la Informtica

2.1 Lenguajes de Expresin de Problemas. Tipos de Lenguajes. Sintaxis y semntica en un Lenguaje.


En el captulo anterior se ha utilizado un lenguaje casi natural para especificar las instrucciones que deban llevarse a cabo. Esto, si bien facilita la escritura del algoritmo para quien debe decir como resolver el problema, dificulta la comprensin de dicha solucin por parte de quien debe interpretarla. En algunos de los ejemplos presentados hasta el momento, seguramente el lector debe haber tenido diferentes interpretaciones. Por qu? Fundamentalmente porque el lenguaje natural tiene varios significados para una palabra (es ambiguo) y porque admite varias combinaciones para armar un enunciado. Estas dos condiciones son indeseables para un lenguaje de expresin de problemas utilizable en Informtica. En el ejemplo 1.7: Qu sucede si la lmpara est en el centro de la habitacin y la escalera no es de dos hojas? Dnde se asegura que se dispone de lmparas nuevas? Alcanzar la lmpara equivale a tomar la lmpara con la mano para poder girarla? Cundo se deja la lmpara usada y se toma la nueva para el reemplazo?

Por medio de las preguntas anteriores nos damos cuenta que el significado de cada instruccin del lenguaje debe ser exactamente conocido y como consecuencia no se pueden admitir varias interpretaciones. Un lenguaje de expresin de problemas contiene un conjunto finito y preciso de instrucciones o primitivas utilizables para especificar la solucin buscada. Ntese que desde el punto de vista del diseo del algoritmo, el contar con un nmero finito de instrucciones posibles termina con el problema de decidir, de una forma totalmente subjetiva, el grado de detalle necesario para que los pasos a seguir puedan ser interpretados correctamente. El conjunto de instrucciones determinar cuales son los pasos elementales posibles que se utilizarn para el diseo de la solucin. Un lenguaje de expresin de problemas debe reunir las siguientes caractersticas: Debe estar formado por un nmero de instrucciones finito. Debe ser completo, es decir que todas las acciones de inters deben poder expresarse con dicho conjunto de instrucciones. Cada instruccin debe tener un significado (efecto) preciso. Cada instruccin debe escribirse de modo nico.

U. N. L. P.

Lenguaje de Expresin de Problemas

2.1.1 Tipos de Lenguajes No siempre los problemas se expresan con primitivas que representen un subconjunto preciso del lenguaje natural: se puede utilizar un sistema de smbolos grficos (tales como los de los diagramas de flujo que se observarn en algunos textos de Informtica); puede emplearse una simbologa puramente matemtica; puede crearse un lenguaje especial orientado a una aplicacin; pueden combinarse grficas con texto, etc. De todos modos, cualquiera sea la forma del lenguaje elegido ste siempre respetar las caractersticas mencionadas anteriormente. Por qu? Porque si se quiere que una mquina interprete y ejecute las rdenes del lenguaje, por mas sofisticada que sea, requerir que las rdenes diferentes constituyan un conjunto finito; que cada orden pueda ser interpretada de un modo nico y que los problemas solubles por la mquina sean expresables en el lenguaje. 2.1.2 Sintaxis y Semntica en un Lenguaje La forma en que se debe escribir cada instruccin de un lenguaje y las reglas generales de expresin de un problema completo en un lenguaje constituyen su sintaxis. Por ejemplo hay lenguajes que en su sintaxis tienen reglas tales como: Indicar el comienzo y fin del algoritmo con palabras especiales. Indicar el fin de cada instruccin con un separador (por ejemplo punto y coma). Encerrar, entre palabras clave, bloques de acciones comunes a una situacin del problema (por ejemplo todo lo que hay que hacer cuando la condicin es verdadera dentro de la estructura de control de seleccin). Indentar adecuadamente las instrucciones.

El significado de cada instruccin del lenguaje y el significado global de determinados smbolos del lenguaje constituyen su semntica. Dado que cada instruccin debe tener un significado preciso, la semntica de cada instruccin es una indicacin exacta del efecto de dicha instruccin. Por ejemplo, Cul sera el efecto de una instruccin del tipo: si (condicin) .. sino ......... como la vista en el Captulo 1? El efecto sera: 1. Evaluar la condicin. 2. Si la condicin es Verdadera, realizar las acciones indicadas antes del sino. 3. Si la condicin es Falsa realizar las acciones indentadas indicadas a continuacin del sino.
U. N. L. P.

Introduccin a la Informtica

2.2 Visual Da Vinci (El Robot). Operaciones sobre el Robot. Estructura general de un programa. Estilo de programacin. Ambiente de programacin.
A lo largo de este curso se trabajar con una mquina abstracta simple, un robot mvil controlado por un conjunto reducido de primitivas, que permite modelizar recorridos y tareas dentro de una ciudad. El robot que se utilizar posee las siguientes capacidades bsicas: 1. Se mueve. 2. Se orienta hacia la derecha, es decir, gira 90 grados en el sentido de las agujas del reloj. 3. Dispone de sensores visuales que le permiten reconocer dos formas de objetos preestablecidas: flores y papeles. Los mismos se hallan ubicados en las esquinas de la ciudad. 4. Lleva consigo una bolsa donde puede transportar flores y papeles. Est capacitado para recoger y/o depositar cualquiera de los dos tipos de objetos en una esquina, pero de a uno a la vez. La bolsa posee capacidad ilimitada. 5. Puede realizar clculos simples. 6. Puede informar los resultados obtenidos.

Figura 2.1: La ciudad del robot La ciudad, en la que el robot se desplaza, est formada por calles y avenidas. Se denominan avenidas a las arterias verticales y calles a las arterias horizontales. Como lo muestra la figura 2.1, la ciudad est formada por 100 calles y 100 avenidas.
U. N. L. P.

Lenguaje de Expresin de Problemas

Cada una de las esquinas est determinada por la interseccin de una avenida y una calle. Debe considerarse a las arterias como rectas y a la esquina como el punto de interseccin entre dichas rectas. La esquina se representar por dos coordenadas: la primera indicar el nmero de avenida y la segunda el nmero de calle. Por ejemplo, la esquina (2,4) es la interseccin de la avenida 2 y la calle 4. Las flores y los papeles se encuentran siempre en las esquinas. Pueden existir varias flores y varios papeles en cada esquina. En la bsqueda de reducir el problema del mundo real a los aspectos bsicos que debe cubrir el robot en el ambiente Visual Da Vinci, se han realizado las siguientes abstracciones: La ciudad queda reducida a un mbito cuadrado de 100 calles y 100 avenidas; El andar del robot queda asociado con un paso que equivale a una cuadra de recorrido; Se reducen los datos en el modelo para tratar slo con flores y papeles; Se aceptan convenciones (el robot solo inicia sus recorridos en la posicin (1,1) de la ciudad); Se supone que el robot ve y reconoce las flores y los papeles. No es de inters de este curso discutir cmo lo puede hacer.

Es interesante analizar el grado de exactitud del modelo y su relacin con los objetivos a cumplir. Est claro que en este ejemplo no se modelizan exactamente la ciudad ni los objetos que estn en ella. Tampoco se representa adecuadamente el movimiento de un robot real, que posiblemente tenga que dar un nmero grande de pasos para recorrer una cuadra. Se ignoran los detalles del proceso de reconocimiento de los objetos e incluso no se considera la posibilidad de que el robot confunda objetos. Sin embargo, dado que el objetivo planteado es escribir programas que permitan representar recorridos con funciones simples (contar, limpiar, depositar) el modelo esencial es suficiente y funciona correctamente. 2.2.1 Operaciones sobre el Robot El conjunto de acciones que el robot puede realizar es muy reducido. Cada una de estas acciones corresponde a una instruccin, entendible por el robot y que debe tener un modo unvoco de expresin, para que la mquina la interprete correctamente, y un significado nico, a fin de poder verificar que el resultado final de la tarea se corresponde con lo requerido. De esta manera se desplaza, recoge, deposita, evala algunas condiciones sencillas y hasta puede visualizar informacin. Este conjunto de instrucciones elementales que se detallan en la tabla 2.1 permite escribir programas con un objetivo bien definido, que tendrn una interpretacin y una ejecucin nica por el robot. En dicha tabla se indica para cada instruccin su sintaxis, es decir, cmo debe escribirse, y su semntica, esto es como se interpreta esa orden en el lenguaje del robot. Sintaxis
iniciar

Semntica
Instruccin primitiva que posiciona al robot en la esquina (1,1) orientado hacia el norte.

U. N. L. P.

Introduccin a la Informtica

derecha

Instruccin primitiva que cambia la orientacin del robot en 90 en sentido horario respecto de la orientacin actual. Instruccin primitiva que conduce al robot de la esquina en la que se encuentra a la siguiente, respetando la direccin en la que est orientado. Es responsabilidad del programador que esta instruccin sea ejecutada dentro de los lmites de la ciudad. En caso contrario se producir un error y el programa ser abortado. Instruccin primitiva que le permite al robot recoger una flor de la esquina en la que se encuentra y ponerla en su bolsa. Es responsabilidad del programador que esta instruccin sea ejecutada solo cuando haya al menos una flor en dicha esquina. En caso contrario se producir un error y el programa ser abortado. Instruccin primitiva que le permite al robot recoger un papel de la esquina en la que se encuentra y ponerlo en su bolsa. Es responsabilidad del programador que esta instruccin sea ejecutada solo cuando haya al menos un papel en dicha esquina. En caso contrario se producir un error y el programa ser abortado. Instruccin primitiva que le permite al robot depositar una flor de su bolsa en la esquina en la que se encuentra. Es responsabilidad del programador que esta instruccin sea ejecutada solo cuando haya al menos una flor en dicha bolsa. En caso contrario se producir un error y el programa ser abortado. Instruccin primitiva que le permite al robot depositar un papel de su bolsa en la esquina en la que se encuentra. Es responsabilidad del programador que esta instruccin sea ejecutada solo cuando haya al menos un papel en dicha bolsa. En caso contrario se producir un error y el programa ser abortado. Identificador que representa el nmero de avenida en la que el robot est actualmente posicionado. Su valor es un nmero entero en el rango 1..100 y no puede ser modificado por el programador. Identificador que representa el nmero de calle en la que el robot est actualmente posicionado. Su valor es un nmero entero en el rango 1..100 y no puede ser modificado por el programador. Proposicin atmica cuyo valor es V si hay al menos una flor en la esquina en la que el robot esta actualmente posicionado, F en caso contrario. Su valor no puede ser modificado por el programador. Proposicin atmica cuyo valor es V si hay al menos un papel en la esquina en la que el robot est actualmente posicionado, F en caso contrario. Su valor no puede ser modificado por el programador. Proposicin atmica cuyo valor es V si hay al menos una flor en la bolsa del robot, F en caso contrario. Su valor no puede ser modificado por el programador.

mover

tomarFlor

tomarPapel

depositarFlor

depositarPapel

PosAv

PosCa

HayFlorEnLaEsquina

HayPapelEnLaEsquina

HayFlorEnLaBolsa

U. N. L. P.

Lenguaje de Expresin de Problemas

HayPapelEnLaBolsa

Proposicin atmica cuyo valor es V si hay al menos un papel en la bolsa del robot, F en caso contrario. Su valor no puede ser modificado por el programador. Instruccin que requiere dos valores Av y Ca, cada uno de ellos en el rango 1..100, y posiciona al robot en la esquina determinada por el par (Av,Ca) sin modificar la orientacin del robot.

Pos

Informar

Instruccin que permite visualizar en pantalla un conjunto de valores.

Tabla 2.1: Sintaxis del robot Es importante remarcar que la sintaxis en este lenguaje es sensible a maysculas y minsculas. No es lo mismo escribir depositarFlor que DepositarFlor depositarflor. De las tres formas anteriores slo depositarFlor es correcta. 2.2.2 Estructura general de un programa Un programa escrito en el lenguaje del robot comienza con la palabra clave programa, la cual debe estar seguida por un identificador que determina el nombre del programa. El cuerpo del programa principal es una secuencia de sentencias, delimitada por las palabras claves comenzar y fin. La sintaxis a utilizar es la siguiente: programa nombre_del_programa comenzar sentencias que indican el recorrido del robot fin 2.2.2.1 Comentarios Lgicos Los problemas para poder ser resueltos, deben entenderse, es decir interpretarse adecuadamente. Esto requiere un enunciado preciso de los mismos. A su vez las soluciones que se desarrollaron y que se expresaron en un lenguaje preciso y riguroso, tambin deben entenderse por otros. Por qu? Porque no siempre se ejecuta la solucin. Porque a veces se debe modificar la solucin por un pequeo cambio del problema, y para esto se debe leer rpida y correctamente la solucin anterior. Porque en ocasiones se comparan soluciones de diferentes pensadores y se debe tratar de entenderlas en un tiempo razonable.

Para que esta claridad y legibilidad se logre, se deben utilizar comentarios aclaratorios adecuados. Un comentario dentro de un algoritmo no representa ni un dato, ni una orden. Sin embargo quienes desarrollan sistemas informticos coinciden en que un algoritmo adecuadamente
U. N. L. P.

Introduccin a la Informtica

escrito debera interpretarse slo leyendo los comentarios que el autor intercal a medida que construa la solucin. El trmino comentario lgico se refiere a que no se debe escribir un texto libre, sino expresar en forma sinttica la funcin de una instruccin o un bloque del algoritmo, tratando de reflejar la transformacin procesamiento de los datos que se logra con el mismo. Normalmente los comentarios se intercalan en el algoritmo con algn smbolo inicial que indique que se trata de un comentario. En el Visual Da Vinci los comentarios se indican por medio de llaves. Con la experiencia en Informtica se aprende que el mayor esfuerzo y costo asociado con los sistemas de software es su mantenimiento, es decir corregir y ajustar dinmicamente el algoritmo programa inicial a nuevas situaciones. Para reducir el costo de este mantenimiento es fundamental documentar adecuadamente nuestros desarrollos, y un punto importante de esta documentacin consiste en escribir comentarios lgicos adecuados a medida que se desarrolla la solucin. 2.2.3 Estilo de programacin La programacin en Visual Da Vinci utiliza ciertas reglas sintcticas adicionales las cuales son muy estrictas relacionadas con la indentacin y el uso de maysculas y minsculas. Estas reglas, aunque puedan resultar algo incmodas para el programador, buscan formar en el estudiante un buen estilo de codificacin. El objetivo de un estilo de programacin es mejorar, en todo lo posible, la legibilidad del cdigo de forma tal que resulte sencillo entenderlo, modificarlo, adaptarlo y reusarlo, ayudando as a maximizar la productividad y minimizar el costo de desarrollo y mantenimiento. En el cdigo textual se deben respetar las siguientes reglas de indentacin: La palabra clave programa debe comenzar en la primer columna. Las palabras claves comenzar y fin de un programa deben comenzar en la misma columna que la palabra clave programa. Las sentencias del cuerpo del programa debe comenzar dos columnas mas a la derecha que las palabras claves que lo delimitan: comenzar y fin. Las sentencias que pertenecen al cuerpo de una estructura de control deben comenzar dos columnas ms a la derecha que la palabra clave que identifica a la estructura de control. La indentacin es la nica forma de indicar si una sentencia esta dentro de una estructura de control o no. Por otro lado, todas las palabras claves definidas por el lenguaje, as como las primitivas y las estructuras de control, deben ser escritas siempre con letras minsculas, excepto que su nombre est compuesto por ms de una palabra, en cuyo caso, de la segunda palabra en adelante, cada una comienza con mayscula. Por ejemplo, iniciar, tomarFlor, mientras, numero.
U. N. L. P.

Lenguaje de Expresin de Problemas

Por el contrario, las variables del sistema y los procesos del sistema deben comenzar cada palabra que compone su nombre con una letra mayscula y las dems minsculas. Por ejemplo, PosAv, HayFlorEnLaBolsa, Pos, Informar. Tambin se recomienda la utilizacin frecuente de comentarios lgicos que aclaren el funcionamiento del algoritmo. 2.2.4 Ambiente de programacin Se denomina ambiente de programacin a la herramienta que permite cubrir las distintas etapas en el desarrollo de un programa, que van desde la codificacin del algoritmo en un lenguaje de programacin hasta su ejecucin, a fin de obtener los resultados esperados. Cada ambiente de programacin trabaja sobre un lenguaje especfico. En particular, el ambiente Visual DaVinci utiliza la sintaxis del robot descripta previamente. Para codificar un algoritmo en el lenguaje del robot es necesario realizar las siguientes tres etapas: 1. Escribir el programa utilizando el Editor de cdigo. El resultado de esto ser un archivo de texto. 2. Para lograr que la computadora ejecute el programa escrito en la etapa anterior es necesario traducirlo a un lenguaje que la computadora comprenda. Esto se realiza mediante la compilacin. En esta etapa se detectan los errores sintcticos. 3. Una vez que el programa ha sido compilado, puede ejecutarse. El ambiente Visual Da Vinci permite visualizar durante la ejecucin, el recorrido que realiza el robot. A continuacin se describe el funcionamiento del ambiente a fin de poder realizar cada una de las etapas mencionadas anteriormente. La figura 2.2 muestra el ingreso al ambiente formado por varias ventanas superpuestas. La ventana de presentacin se cierra automticamente luego de pasado un cierto tiempo.

U. N. L. P.

Introduccin a la Informtica

Figura 2.2: Ambiente de programacin Visual DaVinci El ambiente provee un Editor de Diagrama a fin de ingresar el programa a travs de una herramienta visual. Sin embargo, los programas sern ingresados a travs del Editor de Cdigo. Por lo tanto, se recomienda cerrar el Editor de Diagrama quitando el tilde de la opcin Ver \ Editor de Diagrama del men principal. Para comenzar a trabajar, debe ingresarse el programa que se desea ejecutar en el Editor de Cdigo, como lo muestra la figura 2.3

Figura 2.3: Editor de Cdigo

U. N. L. P.

Lenguaje de Expresin de Problemas

Si bien no es imprescindible, se recomienda salvar el programa ingresado mediante la opcin Archivo \ Guardar Como. All se deber indicar el nombre que se desea dar al programa. Los programas que se ejecutan dentro del ambiente Visual DaVinci poseen extensin vdv. A partir de este momento, en el extremo superior izquierdo del Editor de Cdigo aparecer el nombre que ha sido asignado al programa. Previo a la ejecucin, es necesario realizar el proceso de compilacin seleccionando la opcin Compilar del men principal. El proceso de compilacin se encargar de verificar la sintaxis del programa escrito y en caso de existir errores, visualizar los mensajes correspondientes. Si el programa ha sido correctamente escrito, puede ejecutarse mediante la opcin Ejecutar del men. En la ventana correspondiente a la Ciudad es posible ver cmo el robot efecta el recorrido indicado. A la izquierda de la pantalla aparece una ventana (ver Figura 2.4) que informa las coordenadas y la direccin del robot as como la cantidad de objetos que lleva en su bolsa. De ser necesario, la ejecucin del programa puede abortarse en forma manual usando la opcin Ejecutar\ Abortar. Esta opcin slo se encuentra habilitada cuando el programa est corriendo.

Figura 2.4: Variables del Robot Es posible indicar la cantidad inicial de flores y papeles tanto para la ciudad como para la bolsa del robot. Para ello se utiliza la opcin Opciones \ Ciudad. La figura 2.5 muestra la
U. N. L. P.

Introduccin a la Informtica

distribucin de las flores. Puede procederse de la misma forma para manejar la distribucin de papeles seleccionando la lengeta que dice Papeles (extremo inferior).

Figura 2.5: Opciones de la Ciudad Esta configuracin no se har efectiva hasta que no se ejecute el programa nuevamente.

2.5 Estructuras de Control


En esta seccin se detallar la sintaxis correspondiente a las estructuras de control utilizadas por el robot. Las mismas, han sido explicadas en forma detallada en el captulo 1. 2.5.1 Secuencia Est definida por un conjunto de instrucciones que se ejecutarn una a continuacin de otra. Ejemplo 2.1: Programe al robot para que camine desde (1,1) a (1,3) y desde all a (4,3). programa Cap2Ejemplo1 comenzar iniciar mover mover derecha mover mover mover fin La instruccin iniciar ubica al robot en (1,1) orientado hacia el norte (hacia arriba). Luego avanza dos cuadras en lnea recta por lo que queda posicionado en la calle 3. Dobla a la
U. N. L. P.

Lenguaje de Expresin de Problemas

derecha para seguir avanzando por la calle 3 y camina tres cuadras por lo que finaliza el recorrido parado en (4,3). El robot queda mirando hacia el este. Note que no existe en el lenguaje del robot una instruccin que permita detenerlo. Esto ocurrir naturalmente al terminar el programa. Ejemplo 2.2: Programe al robot para que recorra la avenida 4 desde la calle 4 hasta la calle 7. Al finalizar debe informar en qu esquina qued parado. programa Cap2Ejemplo2 comenzar iniciar Pos(4,3) mover mover mover Informar(PosAv, PosCa) fin La instruccin Pos(4,3) permite que el robot salte desde (1,1) hasta (4,3). A partir de all, camina tres cuadras en lnea recta, realizando el recorrido solicitado. Al terminar el programa el robot quedar ubicado en la esquina (4,6). La instruccin Informar(PosAv, PosCa) muestra los valores retornados por las instrucciones PosAv y PosCa. 1. Programe al robot para que recorra la calle 6 desde la avenida 11 a la avenida 13. 2. Programe al robot para que recorra la avenida 17 desde la calle 31 hasta la calle 25. 2.5.2 Seleccin Esta estructura permite al robot seleccionar una de dos alternativas posibles. La sintaxis es la siguiente: si (condicin) accin o bloque de acciones a realizar en caso de que la condicin sea verdadera sino accin o bloque de acciones a realizar en caso de que la condicin sea falsa Con respecto a la indentacin necesaria para identificar las acciones a realizar en cada caso, se utilizarn dos posiciones a partir del margen izquierdo como puede apreciarse en los ejemplos que aparecen a continuacin. Ejemplo 2.3: Programe al robot para que recorra la calle 1 desde la avenida 1 a la 2 depositando, si puede, una flor en cada esquina. Adems debe informar el nmero de avenida en las que no haya podido depositar la flor.

U. N. L. P.

Introduccin a la Informtica

programa Cap2Ejemplo3 comenzar iniciar derecha


{Evala la primera esquina}

si HayFlorEnLaBolsa depositarFlor sino Informar(PosAv) mover


{Evala la segunda esquina}

si HayFlorEnLaBolsa depositarFlor sino Informar(PosAv) fin

Notemos que es la indentacin la que permite reconocer que la instruccin mover no pertenece a la primera seleccin. Al terminar el recorrido el robot quedar parado en (2,1). Adems en caso de que haya flores en la bolsa, el robot ha depositado una sola flor en cada esquina. En caso de no necesitar realizar acciones cuando la condicin es falsa, puede omitirse la palabra sino junto con las instrucciones correspondientes; por lo que la sintaxis a utilizar sera la siguiente: si (condicin) accin o bloque de acciones a realizar en caso de que la condicin sea verdadera Ejemplo 2.4: Programe al robot para que recorra la avenida 15 desde la calle 12 a la calle 14 recogiendo, de ser posible, un papel en cada esquina.
programa Cap2Ejemplo4 comenzar iniciar Pos(15,12) si HayPapelEnLaEsquina tomarPapel mover si HayPapelEnLaEsquina tomarPapel mover si HayPapelEnLaEsquina tomarPapel fin

Programe al robot para que, si puede, deposite un papel en (1,2) y una flor en (1,3). Programe al robot para que intente recoger una flor de la esquina determinada por la calle 50 y la avenida 7. Solo si lo logra debe ir a la calle
U. N. L. P.

Lenguaje de Expresin de Problemas

51 y avenida 8 e intentar recoger all otra flor. Al finalizar debe informar en que esquina qued parado. 2.5.3 Repeticin Cuando se desea realizar una accin o un conjunto de acciones un nmero fijo de veces, N, puede utilizarse la siguiente estructura: repetir N accin o bloque de acciones a realizar Es importante remarcar que la cantidad de veces que se repite el bloque de acciones debe ser conocida de antemano. Una vez iniciada la repeticin la ejecucin no se detendr hasta no haber ejecutado el conjunto de acciones la cantidad de veces indicada por N. Si se analizan con ms detalle algunos de los ejemplos anteriores se ver que pueden resolverse utilizando una repeticin. Ejemplo 2.5: Programe al robot para que camine desde (1,1) a (1,3) y desde all a (4,3). Este problema fue resuelto utilizando una secuencia en el ejemplo 2.1. Ahora ser implementado utilizando la repeticin.
programa Cap2Ejemplo5 comenzar iniciar repetir 2 mover derecha repetir 3 mover fin

Comparemos los programas Cap2Ejemplo1 y Cap2Ejemplo5 verificando que el recorrido realizado en ambos casos es el mismo. A continuacin se muestra una segunda implementacin del ejemplo 2.3 utilizando una repeticin: El Ejemplo 2.3 deca: Programe al robot para que recorra la calle 1 depositando, si puede, una flor en cada esquina. Adems debe informar el nmero de avenida de aquellas esquinas en las que no haya podido depositar la flor.

U. N. L. P.

Introduccin a la Informtica

programa Cap2Ejemplo6 comenzar iniciar derecha repetir 2 si HayFlorEnLaBolsa depositarFlor sino Informar(PosAv) mover fin

Por qu al finalizar el recorrido, el robot no queda posicionado en el mismo lugar que en el ejemplo 2.3? Perjudica en algo este hecho a lo que debe ser informado?

A continuacin se muestra una variante del ejemplo 2.4: Ejemplo 2.7 (variante del 2.4): Programe al robot para que recorra la avenida 15 desde la calle 12 a la 14 recogiendo, de ser posible, un papel en cada esquina.
programa Cap2Ejemplo7 comenzar iniciar Pos(15,12) repetir 2 si HayPapelEnLaEsquina tomarPapel mover si HayPapelEnLaEsquina (*) tomarPapel fin

Las acciones realizadas por el robot en los programas Cap2Ejemplo4 y Cap2Ejemplo7 son iguales? Es posible incluir la instruccin (*) en la repeticin? Si es as indique la manera de hacerlo y que diferencias encuentra con el programa Cap2Ejemplo7.

Ejemplo 2.8: Programe al robot para que recorra la calle 4 dejando una flor en cada esquina. Para resolver este problema es necesario analizar las 100 esquinas que forman la calle 4. El recorrido ser efectuado de la siguiente forma:

U. N. L. P.

Lenguaje de Expresin de Problemas

programa Cap2Ejemplo8 comenzar {ubicar al robot en (1,4) orientado hacia la derecha} {Recorrer las primeras 99 esquinas de la calle 4} {depositar la flor (solo si tiene)} {avanzar a la prxima esquina} {Falta ver si se puede depositar la flor en la esquina (1,100)} fin

En la sintaxis del robot, este algoritmo se traduce en el siguiente programa:


programa Cap2Ejemplo8 comenzar iniciar derecha {ubicar al robot en (1,4) orientado hacia la derecha} Pos(1,4) repetir 99 {recorrer las primeras 99 esquinas de la calle 4} si HayFlorEnLaBolsa depositarFlor mover si HayFlorEnLaBolsa {falta la esquina (1,100)} depositarFlor fin

Notemos que la sentencia Pos(1,4) no modifica la orientacin del robot. En todos los casos la indentacin es lo que permite definir los bloques de instrucciones. Por ejemplo, la ltima seleccin no pertenece a la repeticin. Esto queda claramente indicado al darle a ambas estructuras de control la misma indentacin (el mismo margen izquierdo). 2.5.4 Iteracin Cuando la cantidad de veces que debe ejecutarse una accin o bloque de acciones depende del valor de verdad de una condicin, puede utilizarse la siguiente estructura de control. mientras (condicin) accin o bloque de acciones a realizar mientras la condicin sea verdadera A continuacin se muestran algunos ejemplos que permiten representar el funcionamiento de esta estructura. Ejemplo 2.9: Escriba un programa que le permita al robot recorrer la avenida 7 hasta encontrar una esquina que no tiene flores. Al finalizar debe informar en qu calle qued parado. Por simplicidad, suponga que esta esquina seguro existe. Tenga en cuenta que no se conoce la cantidad de cuadras que hay que recorrer para poder llegar a la esquina buscada. Para resolver este recorrido es preciso inspeccionar las esquinas una a una hasta lograr hallar la que no tiene flores. La solucin es la siguiente:

U. N. L. P.

Introduccin a la Informtica

programa Cap2Ejemplo9 comenzar iniciar Pos(7,1) mientras HayFlorEnLaEsquina mover Informar( PosCa ) fin

En este ltimo ejemplo, para visualizar el nmero de calle donde el robot qued parado debe utilizarse PosCa ya que no es posible calcular el valor a priori. Note que la ubicacin de las flores en las esquinas de la ciudad puede variar entre una ejecucin y otra. Adems del ejemplo se puede ver que por cada vez que el robot evala la condicin HayFlorEnLaEsquina avanza una cuadra, si la condicin es verdadera. Ejemplo 2.10: Programe al robot para que deposite en (1,1) todas las flores que lleva en su bolsa.
programa Cap2Ejemplo10 comenzar iniciar mientras HayFlorEnLaBolsa depositarFlor fin

Ejemplo 2.11: Programe al robot para que recoja todas las flores y todos los papeles de la esquina determinada por la calle 75 y avenida 3. El algoritmo a utilizar es el siguiente:
programa Cap2Ejemplo11 comenzar {Ubicar al robot en la esquina que se quiere limpiar} {Recoger todas las flores} {Recoger todos los papeles} fin

Dado que en una esquina no se conoce a priori la cantidad de flores y/o papeles que puede haber ser necesario utilizar dos iteraciones: una para recoger las flores y otra para recoger los papeles, de la siguiente forma:
programa Cap2Ejemplo11 comenzar iniciar Pos(3,75) {Recoger todas las flores} mientras HayFlorEnLaEsquina tomarFlor {Recoger todos los papeles} mientras HayPapelEnLaEsquina tomarPapel fin

U. N. L. P.

Lenguaje de Expresin de Problemas

Ejemplo 2.12: Programe al robot para que camine desde (4,2) hasta (4,4) y luego hasta (7,4). El algoritmo es de la forma:
programa Cap2Ejemplo12 comenzar {Posicionar al robot } {Avanzar dos cuadras } {Doblar a la derecha } {Avanzar tres cuadras } fin

Este algoritmo puede ser implementado de diferentes formas. Analice estas dos opciones:
programa Cap2Ejemplo12 comenzar iniciar Pos(4,2) repetir 2 mover derecha repetir 3 mover fin programa Cap2Ejemplo12 comenzar iniciar Pos(4,2) mientras (PosCa <= 4) mover derecha mientras (PosAv <= 6) mover fin

El robot realiza la misma cantidad de pasos en ambos programas? Cul solucin prefiere Ud.? Justifique su respuesta pensando en que ahora debe hacer que el robot camine desde (3,5) hasta (3,7) y desde all hasta (6,7).

Anlisis de la sintaxis del robot La tabla 2.2 resume la sintaxis del robot ejemplificada hasta el momento. Explique:
Sintaxis del robot iniciar mover derecha tomarFlor tomarPapel depositarFlor depositarPapel Pos Informar HayFlorEnLaEsquina HayPapelEnLaEsquina HayFlorEnLaBolsa HayPapelEnLaBolsa PosAv PosCa

Tabla 2.2: Resumen de la sintaxis del robot

U. N. L. P.

Expresin de Problemas y Algoritmos Qu funcin cumple la instruccin iniciar? Por qu todos los programas del robot deben comenzar con esta instruccin? Qu diferencia hay entre las instrucciones PosAv y PosCa y la instruccin Pos? Suponga que el robot se encuentra en (1,1) y se desea que salte a (3,4). Es posible realizar las siguientes asignaciones para lograrlo? PosAv := 3 PosCa := 4 Justifique su respuesta. Indique la manera correcta de resolver este problema. Es posible para el robot depositar una flor sin verificar primero si tiene al menos una flor en su bolsa? El robot est capacitado para decir si en una misma esquina hay varios papeles?

2.6 Proposiciones atmicas y moleculares, simbolizacin y tablas de verdad


Cuando se emplearon condiciones para definir las acciones a tomar en la seleccin y la iteracin no se indic la forma en que pueden combinarse. Como el lector habr notado, todos los ejemplos desarrollados hasta el momento fueron lo suficientemente simples como para poder ser resueltos con una pregunta sencilla. Sin embargo, en un problema real, esto no es as y se requiere combinar expresiones para poder representar una situacin a evaluar. Por este motivo se introducirn y repasarn algunos conceptos bsicos de la lgica proposicional que permitirn clarificar este aspecto, aplicados especficamente a problemas con el robot. Dos de las estructuras de control ya vistas, seleccin e iteracin, requieren para su funcionamiento, la evaluacin de una condicin. Estas condiciones se corresponden con lo que en trminos de lgica se conoce como proposiciones. Una proposicin es una expresin de la cual tiene sentido decir si es verdadera o falsa, o sea es posible asignarle un valor de verdad (verdadero o falso, pero no ambos). Ejemplos de proposiciones 1 + 4 = 5 (Verdad) La Pampa es una nacin. (Falso) Un tringulo es menor que un crculo. (No se le puede asignar un valor de verdad, por lo tanto no es proposicin) El color azul vale menos que una sonrisa (dem anterior) Hay una flor en la esquina (ser verdadero falso dependiendo de si la flor se encuentra o no en la esquina) 2.6.1 Proposiciones atmicas y moleculares En Lgica, el trmino atmico se utiliza con su significado habitual: algo que no puede ser dividido nuevamente.
U. N. L. P.

Lenguaje de Expresin de Problemas Una proposicin es considerada atmica si no puede ser descompuesta en otras proposiciones. Ejemplos La casa es roja. Hoy es lunes. He llegado al final del recorrido. Estoy ubicado a 3 metros de altura. Cuando en una expresin se unen varias proposiciones atmicas se forma una proposicin molecular o compuesta. Dicha unin se realiza mediante conectivos lgicos trminos de enlace. Estos trminos de enlace son de gran importancia. Tanto es as, que se estudiarn algunas reglas muy precisas para el uso de esta clase de trminos. Los trminos de enlace a utilizar son los siguientes: y, o, no. Los dos primeros se utilizan para conectar proposiciones atmicas; en tanto que el conectivo no, solamente se coloca frente a una proposicin atmica. Ejemplos No es cierto que la luna est hecha de queso verde. La vaca est cansada y no dar leche. Hace calor hay mucha humedad. Hay papel en la bolsa y hay papel en la esquina. Resumiendo: Una proposicin es atmica si no tiene conectivos lgicos, en caso contrario es molecular. 2.6.2 Simbolizacin As como en matemtica se simbolizan las cantidades para facilitar el planteo y solucin de problemas, tambin en este caso es importante simbolizar las proposiciones atmicas, las moleculares y los conectivos lgicos con el objeto de facilitar las operaciones. Conectivo y o no Simbolizacin en Visual Da Vinci & | ~

Tabla 2.3: Conectivos lgicos trminos de enlace

U. N. L. P.

Expresin de Problemas y Algoritmos Se utilizarn letras minsculas para simbolizar las proposiciones atmicas: Ejemplos de simbolizacin de proposiciones atmicas Ayer fue un da ventoso. Si se considera p = ayer fue un da ventoso, esta proposicin puede ser simbolizada como: p. Ese pjaro vuela muy alto. Si se llama q = ese pjaro vuela muy alto, la proposicin se simboliza como: q. PosCa < 100. Si se llama r = PosCa < 100, la proposicin se simboliza como: r. A continuacin se aplicar este mecanismo de simbolizacin a las proposiciones moleculares. El proceso para simbolizarlas consiste en: 1. Determinar cules son las proposiciones atmicas que la componen. 2. Simbolizar las proposiciones como se explic anteriormente. 3. Unir las proposiciones con los conectivos ya vistos. Por tal motivo, debe definirse un smbolo para cada uno de los conectivos. La tabla 2.3 muestra la simbolizacin a utilizar en cada caso. Ejemplos de simbolizacin de proposiciones moleculares Juan es estudiante y es jugador de ftbol. p = Juan es estudiante q = Juan es jugador de ftbol Simbolizando p & q No es cierto que PosCa = 100. p = PosCa=100 Simbolizando ~ p Hay flor en la esquina y hay papel en la bolsa, o hay papel en la esquina. p = Hay flor en la esquina q = hay papel en la bolsa r = hay papel en la esquina Analicemos, para resolver correctamente el ejemplo anterior debe tenerse en cuenta la aparicin de la coma, la cual separa las dos primeras proposiciones de la tercera. Cuando se obtiene la simbolizacin debe respetarse ese orden. Por lo tanto la simbolizacin sera: (p & q) | r No hay flor en la bolsa, pero hay flor en la esquina. p = hay flor en la bolsa
U. N. L. P.

Lenguaje de Expresin de Problemas q = hay flor en la esquina Simbolizando (~ p & q) Notemos que la palabra pero acta como el conectivo lgico y. 2.6.3 Tablas de verdad. Repaso Como se explic previamente, una proposicin es una expresin de la cual tiene sentido decir si es verdadera o falsa. Para poder analizar cualquier proposicin molecular y decir qu valor de verdad tiene, es usual hacerlo a travs de lo que se conoce como tabla de verdad. La tabla de verdad de una proposicin es, como su nombre lo indica, una tabla donde se muestran todas las combinaciones posibles de los valores de verdad de dicha proposicin. 2.6.3.1 Conjuncin. Tabla de verdad Dadas dos proposiciones cualesquiera p y q, la proposicin molecular p & q representa la conjuncin de p y q. La conjuncin de dos proposiciones es cierta nicamente en el caso en que ambas proposiciones lo sean. Dadas dos proposiciones cualesquiera p y q, si ambas son verdaderas, entonces p & q, que representa la conjuncin de p y q, es verdadera. Cualquier otra combinacin da como resultado una proposicin molecular falsa. La tabla 2.4 representa la tabla de verdad de la conjuncin p & q utilizando las cuatro combinaciones posibles de valores de verdad para p y q. Por lo tanto, si p & q es una proposicin verdadera entonces p es verdadera y q tambin es verdadera. En Lgica se pueden unir dos proposiciones cualesquiera para formar una conjuncin. No se requiere que el contenido de una de ellas tenga relacin con el contenido de la otra. p V V F F q p&q V V F F V F F F

Tabla 2.4: Conjuncin (p & q) Ejemplos 6 es un nmero par y divisible por 3. p = 6 es un numero par q = 6 es divisible por 3 p es verdadera y q tambin, por lo tanto p & q es verdadera.

U. N. L. P.

Expresin de Problemas y Algoritmos Suponiendo que el robot se encuentra situado en la esquina (1,1) p = PosCa=1 q = PosAv=2 p es verdadera y q es falsa, por lo tanto p & q es falsa. El siguiente ejemplo muestra la aplicacin de la conjuncin en un algoritmo: Ejemplo 2.13: Hacer que el robot deposite, de ser posible, una flor en la esquina (45,70) en el caso que en dicha esquina no haya flores.
programa Cap2Ejemplo13 comenzar iniciar Pos(45,70) si ((hayFlorEnLaBolsa) & ~(hayFlorEnLaEsquina)) depositarFlor fin

La seleccin utiliza la conjuncin de dos proposiciones que, como se explic anteriormente, para ser verdadera necesitar que ambas proposiciones lo sean simultneamente. Esto es, basta con que una de ellas sea falsa para que no se deposite una flor en la esquina. 2.6.3.2 Disyuncin. Tabla de verdad Dadas dos proposiciones cualesquiera p y q, la proposicin molecular p | q representa la disyuncin de p y q. La disyuncin entre dos proposiciones es cierta cuando al menos una de dichas proposiciones lo es. La disyuncin utiliza el trmino de enlace o en su sentido incluyente. Esto significa que basta con que una de las dos proposiciones sea verdadera para que la disyuncin sea verdadera. Dadas dos proposiciones cualesquiera p y q, su disyuncin, p | q, ser falsa cuando ambas proposiciones sean falsas. La tabla 2.5 representa la tabla de verdad de la disyuncin p | q utilizando las cuatro combinaciones posibles de valores de verdad para p y q. p V V F F q V F V F p|q V V V F

Tabla 2.3: Disyuncin (p v q) Ejemplos 2 es primo o es impar p = 2 es primo


U. N. L. P.

Lenguaje de Expresin de Problemas q = 2 es impar p es verdadera, q es falsa. Se deduce que p | q es verdadera Suponiendo que el robot se encuentra situado en la esquina (1,1) p = PosCa=8 q = PosAv=2 p es falsa, q es falsa. Se deduce que p | q es falsa. El siguiente problema puede resolverse aplicando la disyuncin: Ejemplo 2.14: hacer que el robot se mueva desde la esquina (45,70) a la esquina (45,74) en el caso que la esquina (45,70) no est vaca (se considera no vaca a aquella esquina que tiene al menos una flor o un papel).
programa Cap2Ejemplo14 comenzar iniciar Pos(45,70) si ((hayFlorEnLaEsquina) | (hayPapleEnLaEsquina)) repetir 4 mover fin

La seleccin utiliza la disyuncin de dos proposiciones que, como se explic anteriormente, para ser verdadera solo requiere que una de ellas sea verdadera. Note que si la esquina (45,70) tiene flor y papel, el robot avanza hasta la esquina (45,74). La nica forma de que el robot no avance es que la esquina est vaca, sin flor ni papel. 2.6.3.3 Negacin. Tabla de verdad Dada una proposicin p, su negacin ~ p, permitir obtener el valor de verdad opuesto. El valor de verdad de la negacin de una proposicin verdadera es falso y el valor de verdad de la negacin de una proposicin falsa es verdadero. Dada una proposicin p, la tabla 2.4 representa los posibles valores de verdad de dos valores de verdad posibles de p. p V F ~p F V

Tabla 2.4: Negacin (~ p) Ejemplos p = El nmero 9 es divisible por 3 La proposicin p es verdadera. La negacin de p es: ~ p = El nmero 9 no es divisible por 3 Se ve claramente que ~ p es falsa.

U. N. L. P.

Expresin de Problemas y Algoritmos Suponiendo que el robot se encuentra situado en la esquina (1,1) p = PosCa=1 La proposicin p es verdadera. La negacin de p es: ~p= ~PosCa=1. Se deduce que ~p es falsa. Ejemplo 2.15: el robot debe recorrer la calle 1 hasta encontrar una flor que seguro existe.
programa Cap2Ejemplo15 comenzar iniciar derecha mientras ~(hayFlorEnLaEsquina) mover fin

Note que la iteracin utiliza la negacin de la proposicin atmica hay flor en la esquina. De esta forma, el robot detendr su recorrido cuando encuentre una flor. 2.6.4 Utilizacin del parntesis Es frecuente encontrar proposiciones que tienen ms de un trmino de enlace. En estos casos, uno de los trminos de enlace es el ms importante, o el trmino dominante, porque acta sobre toda la proposicin. El operador ~ es el que tiene mayor prioridad, es decir, es el que primero es evala; seguido por & y |. Estos dos ltimos poseen igual prioridad. Ante una expresin que utilice varias conjunciones y/o disyunciones, se evaluaran de izquierda a derecha. Lo mismo ocurre en Matemtica. Si se considera la siguiente cuenta: 2 + 3 * 5, el resultado final, como es fcil de deducir, es 17. La primera operacin que se resuelve es el producto entre 3 y 5, y luego a su resultado se le suma 2. Ocurre as porque el operando * (por), igual que el operando / (dividido), se resuelve antes que el operando + (mas), o que el operando - (menos). Dada la siguiente proposicin p & ~ q, primero se resuelve la negacin y luego la conjuncin. En determinados casos se tiene la necesidad de alterar este orden natural de resolucin. Al igual que en matemtica, el uso de parntesis permite resolver este problema. Ejemplo ~ p | q es una disyuncin entre ~ p y q. ~ (p | q) es la negacin de una disyuncin. En el ejemplo anterior se muestra la manera de convertir una disyuncin en una negacin. Es decir, el operador de negacin se resuelve en forma posterior a la disyuncin.

U. N. L. P.

Lenguaje de Expresin de Problemas

2.7 Conclusiones
El uso de un lenguaje de programacin elimina la ambigedad que se produce al expresarse en lenguaje natural permitiendo que cada instruccin tenga una sintaxis y una semntica nicas. Se ha presentado un lenguaje de programacin especfico (Visual Da Vinci) que permite escribir programas que pueden ser ejecutados en una computadora. Adems, en este captulo, se ha realizado una breve introduccin a los conceptos de lgica proposicional y se han presentado numerosos ejemplos que muestran la utilidad de las proposiciones en el funcionamiento de las estructuras de control. Como pudo observarse, las proposiciones moleculares, formadas a travs de los conectivos lgicos, poseen una mayor potencia de expresin ya que permiten definir claramente el rumbo de accin a seguir. Por otra parte, estos ejemplos tambin muestran las distintas posibilidades de combinar las estructuras de control y encontrar soluciones ms generales a los problemas que se han planteado. Lograr adquirir el conocimiento y la habilidad para desarrollar algoritmos utilizando estas estructuras es una tarea que requiere prctica. El lector no debera desanimarse si inicialmente advierte cierta dificultad en su uso. Se requiere un cierto tiempo de maduracin para poder expresarse a travs de esta terminologa. El mecanismo para poder lograr adquirir las habilidades necesarias se basa en la ejercitacin por lo que se recomienda la resolucin de los problemas que se plantean a continuacin.

U. N. L. P.

Expresin de Problemas y Algoritmos

Ejercitacin
1. Escriba un programa que le permita al robot recoger una flor de la esquina (54,71) si existe. 2. Escriba un programa que le permita al robot recorrer la calle 92 desde la avenida 90 hasta la avenida 86 depositando un papel en cada esquina. Debe avanzar hasta el final aunque durante el recorrido se quede sin papeles. 3. Escriba un programa que le permita al robot recorrer el permetro del cuadrado determinado por (2,2) y (3,3). 4. Escriba un programa que le permita al robot recorrer el permetro del cuadrado determinado por (4,4) y (5,5) recogiendo, de ser posible, un papel en cada esquina. 5. Escriba un programa que le permita al robot dejar todos los papeles que lleva en su bolsa en la esquina (65,30). 6. Escriba un programa que le permita al robot recorrer la avenida 25 desde la calle 12 hasta la calle 20 recogiendo todas las flores que encuentre. 7. Escriba un programa que le permita al robot recorrer la avenida 10, depositando una flor en cada esquina. Si en algn momento del recorrido se queda sin flores en la bolsa, debe seguir caminando (sin depositar) hasta terminar la avenida. 8. Escriba un programa que le permita al robot recorrer la avenida 23 buscando una esquina sin papeles que seguro existe. Al encontrarla debe depositar, en esa esquina, todos los papeles que lleva en su bolsa. Informar en que calle dej los papeles. 9. Escriba un programa que le permita al robot recorrer la calle 17 depositando un papel en las avenidas impares. El recorrido termina cuando el robot llega a la esquina (100,17). 10. Programe al robot para que recorra la calle 11 depositando, de ser posible, una flor en cada esquina. Si durante el recorrido se queda sin flores debe intentar depositar papeles. Si no tiene ninguna de las dos cosas debe seguir caminando hasta terminar la calle. 11. Programe al robot para que recorra las 5 primeras avenidas juntando en cada esquina todas las flores y papeles. 12. Programe al robot para que recorra el permetro de la ciudad recogiendo todas las flores y papeles que encuentre y dejando en cada vrtice solo un papel. Puede ocurrir que algn vrtice quede vaco si el robot no tiene papeles en su bolsa para depositar. 13. Programe al robot para que recorra todas las calles depositando en cada esquina libre un papel. En caso de no tener ms papeles debe terminar el recorrido. 14. Programe al robot para que recorra la calle 1 buscando una flor en las avenidas impares. Cada vez que encuentre una flor deber realizar un cuadrado de lado 1 tomando como vrtice inferior izquierdo de dicho cuadrado, la esquina donde encontr la flor. 15. El robot debe realizar una limpieza de la calle 17 muy especial. Debe dejar solo flores en las avenidas impares y solo papeles en las pares. Para no cargar muchas cosas en su bolsa har lo siguiente: todos los papeles de una avenida impar sern trasladados a la avenida par siguiente y todas las flores de una avenida par sern trasladas a la avenida impar siguiente. Por simplicidad, considere que el robot comienza el recorrido con la bolsa vaca. 16. Programe al robot para que recorra el permetro de la ciudad hasta encontrar una flor (seguro existe).
U. N. L. P.

Das könnte Ihnen auch gefallen