Top Banner

of 24

Karel (1).pdf

Feb 20, 2018

Download

Documents

Paco García
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • 7/24/2019 Karel (1).pdf

    1/24

    OLIMPIADA MEXICANA DE INFORMTICA

    EN QUINTANA ROO

    COMPENDIO DE EJERCICIOS

    PARA LOS ENTRENAM IENTOS

    Tulum Quintana Roo Julio 2015

  • 7/24/2019 Karel (1).pdf

    2/24

    Fase 2: Programando a Karel el Robot 2

    CONTENIDO

    FASE 21. PROGRAMANDO A KAREL EL ROBOT2. INTRODUCCIN

    2.1.QU ES?2.2.EL MUNDO DE KAREL2.2.1.CALLES2.2.2.AVENIDAS2.2.3.ESQUINAS2.2.4.ZUMBADORES2.2.5.MUROS2.2.6.ORIENTACIN2.2.7.MOCHILA (BOLSA) DE ZUMBADORES

    3. VENTANAS DEL SIMULADOR

    3.1.MUNDO3.2.PROGRAMA3.3.EJECUTAR

    4. PROGRAMACIN EN KAREL4.1.ESTRUCTURA DEL PROGRAMA4.2.COMANDOS BSICOS4.3.VARIABLE DE KAREL4.4.CONDICIONES DE KAREL4.5.OPERADORES LGICOS

    4.6.SENTENCIAS DE CONTROL4.6.1.SI / ENTONCES4.6.2.SI / ENTONCES / SINO4.6.3.REPETIR / VECES4.6.4.MIENTRAS / HACER

    4.7.FUNCIONES4.7.1.DEFINE-NUEVA-INSTRUCCIN / COMO4.7.2.RECURSIVIDAD

    5. PROGRAMAS EJEMPLO

  • 7/24/2019 Karel (1).pdf

    3/24

    Fase 2: Programando a Karel el Robot 3

    KAREL EL ROBOT

    QU ES KAREL EL ROBOT?

    Karel es una herramienta de aprendizaje que presenta los conceptos de una forma visual, lo

    cual es menos abstracto que programar en un lenguaje como Pascal o C, es un Robot simpleque vive en un mundo simple y debido a que Karel y su mundo son simulados, nosotrospodemos realmente ver los resultados de un programa en accin.

    EL MUNDO DE KAREL

    El mundo de karel est formado por Calles y Avenidas, en las cuales tiene que desplazarsey hacer las tareas que le indiques.

    Karel puede orientarse en una de las cuatro direcciones: este, oeste, norte y sur. Slo gira90 cada vez, por tanto no puede orientarse hacia el nordeste. En el mundo de Karel, lascalles van de este a oeste, y son numeradas comenzando por 1. No hay nmeros de calleigual a 0 o negativos. Las avenidas van de norte a sur, y tambin estn numeradasempezando por 1. Tampoco hay nmeros de avenida igual a 0 o negativos. Se le llamaesquina a la interseccin de una calle con una avenida. Karel va de una esquina a lasiguiente en un solo movimiento.

    Figura 01: Elementos del Mundo de Karel

    Las calles y avenidas se pueden limitar utilizando muros, que se pueden colocar al norte,sur, este y oeste y evitan que Karel se salga de su mundo.

    Otro elemento de inters en el mundo de Karel son los zumbadores. Un zumbador es unaforma de marca que Karel puede escuchar slo cuando se encuentra en la misma esquina

    CALLES

    AVENIDAS

    ZUMBADORES

    MUROS

    DESPLAZADORESNo. DE ZUMBADORES

  • 7/24/2019 Karel (1).pdf

    4/24

    Fase 2: Programando a Karel el Robot 4

    que el zumbador. Karel tiene una bolsa que puede utilizar para poner los zumbadores quevaya cogiendo. Tambin puede hacer lo contrario, es decir, sacar los zumbadores de subolsa y depositarlos en las esquinas por las que va pasando. Puedes ajustar el nmero inicialde zumbadores en cada esquina con el control Zumbadores.

  • 7/24/2019 Karel (1).pdf

    5/24

    Fase 2: Programando a Karel el Robot 5

    VENTANAS DEL SIMULADOR KAREL

    El ambiente de trabajo de Karen esta formado por tres ventanas con las cuales sedesarrollan diferentes ejercicios de variadas complejidades.

    VENTANA MUNDO

    Karel vive en mundo simple el cual podemos crear utilizando la ventana Mundo, en estaventana definimos el espacio en el cual puede transitar Karel agregando muros yzumbadores.La definicin del mundo de Karel nos permitir hacer mas fcil o complejas las diferentesactividades que le encarguemos al robot Karel.

    A continuacin definiremos las partes de la ventana de karel

    Figura 02: Ventana Mundo del Simulador Karel el Robot

    Funciones de los botones

    Haga clic en este botn para crear un nuevo mundo en blanco en el cual seagregaran los muros y zumbadores

  • 7/24/2019 Karel (1).pdf

    6/24

    Fase 2: Programando a Karel el Robot 6

    Al hacer clic en este botn se muestra el cuadro de dialogo guardar comode Windows que nos permite guarda el mundo de Karel.

    Figura 03: Cuadro de dialogo Guardar como

    El archivo generado tiene la extensin .mdo

    Permite guardar un mundo que ya existe con otro nombre. Al hacer clic eneste botn se abre el cuadro de dialogo de la figura 03.

    Con este botn abrimos los mundos que tenemos creados previamente. Alhacer clic en este botn se abre el cuadro de dialogo Abrir de Windows en el cualseleccionaremos la ubicacin y el nombre del mundo que se desee abrir

  • 7/24/2019 Karel (1).pdf

    7/24

    Fase 2: Programando a Karel el Robot 7

    Figura 04: Cuadro de dialogo Abrir.

    En esta opcin se escribe la cantidad de zumbadoresque tendr inicialmente Karel en la mochila al ejecutar el programa.

    Estos botones de navegacin permiten desplazarnos en el mundo de

    Karel para visualizar las calles y avenidas que no se alcancen a mostrar en la ventana delmundo de Karel.

    Agregar y quitar muros

    Para agregar un muro hacemos clic en la calle o avenida que deba existir un muro, y paraeliminarlo hacemos clic en el muro.

    Figura 05: Muros del mundo de Karel.

  • 7/24/2019 Karel (1).pdf

    8/24

    Fase 2: Programando a Karel el Robot 8

    Agregar y quitar zumbadores

    Los zumbadores estn representados con un nmero el cual indica la cantidad exacta dezumbadores que existe en una esquina (interseccin de una avenida y una calle).

    Para agregar zumbadores hacemos clic con el botn derecho del ratn en la esquina en lacual requerimos uno o ms zumbadores, del men emergente (figura 06) hacemos clic en laopcin que nos convenga.

    Figura 06: Men emergente

    La opcin N zumbadores despliega un cuadro en el cual podemos escribir el numero dezumbadores. (mximo 99)

    Para Borrarlos zumbadores hacemos clic en los zumbadores con el botn derecho y en laopcin 0 zumbadoresdel men emergente. (Ver figura 06)

    Como situar a Karel

    Karel se representa con una flecha gruesa y se le puede situar en cualquier esquina en unade las cuatro siguientes orientaciones al Norte, Este, Sur o al Oeste. La punta de la flechaindica la orientacin y direccin en la cual se desplazara Karel.

    Para situar y orientar a Karel haga clic en una de las esquinas con el botn derecho y en elmen emergente apunte en la opcin Situar a Karely clic en una de las cuatro opciones deorientacin, vea la figura 07.

  • 7/24/2019 Karel (1).pdf

    9/24

    Fase 2: Programando a Karel el Robot 9

    Figura 07: Opciones de orientacin de Karel

    Orientado al Norte Orientado al Este Orientado al Sur Orientado al Oeste

    Figura 08: Ejemplos de orientacin de Karel

    VENTANA PROGRAMA

    El objetivo es el de ensear a Karel a realizar diferentes actividades en su mundointeractuando con sus diferentes elementos como son los muros, zumbadores, calles yavenidas.

    Para ensear a Karel a realizar una actividad se debe codificar un programa el cual puedetener la estructura de Pascal o Java, para lo cual nos servir esta ventana.

    La venta esta formada por dos partes: una barra de botones y un rea de codificacin en lacual se escribe el cdigo programa, la cual esta representada por un recuadro blanco el cualen la parte izquierda se numeran las lneas de cdigo.

  • 7/24/2019 Karel (1).pdf

    10/24

    Fase 2: Programando a Karel el Robot 10

    Figura 09: Ventana Programa

    Funciones de los Botones

    Elimina lo que exista el rea de codificacin y genera un nuevo espacio de

    codificacin con la estructura principal programa el cual depender del lenguajeseleccionado. (Ver figura 09)

    Al hacer clic en este botn se abre el cuadro de dialogo Abrir de Windowsmediante el se recupera recuperar un programa previamente guardado

  • 7/24/2019 Karel (1).pdf

    11/24

    Fase 2: Programando a Karel el Robot 11

    Figura 10: Cuadro de dialogo Abrir de Windows

    Permite guardar en disco un programa, utilizando el cuadro de dialogoGuardar como de Windows.

    Figura 11: Cuadro de dialogo Guardar como de Windows.

    Los programas se guardan con la extensin .txt indistintamente del lenguaje en que se hayacodificado

  • 7/24/2019 Karel (1).pdf

    12/24

    Fase 2: Programando a Karel el Robot 12

    Guarda un programa con otro nombre

    Compila el programa que se haya escrito preparndolo para su ejecucin. Siel cdigo del programa tiene algn error de sintaxis, el compilador nos muestra el error y laposible lnea en la que se encuentra el error, en caso de no existir ningn error de sintaxismuestra el mensaje programa compilado.

    Nota: Siempre que se realice una modificacin al cdigo del programa se debe compilarantes de ejecutarlo.

    Opcin para indicar en que lenguaje se codificara y compilara elprograma.

    VENTANA EJECUAR

    Esta ventana es una de las caractersticas que podemos resaltar de Karel debido a que nospermite ver la forma en que se ejecuta el cdigo del programa y las acciones que realizaKarel por cada lnea de cdigo.

    La ventana esta formada por tres partes:

    En la parte superior una barra de botones que nos permite controlar la ejecucin, un panelizquierdo en el cual se muestra la ejecucin del cdigo del programa y un panel derecho enel que se muestra las acciones que realiza Karel en su mundo.

  • 7/24/2019 Karel (1).pdf

    13/24

    Fase 2: Programando a Karel el Robot 13

    Figura 12; Ventana Ejecutar

    Funciones de los Botones

    Sita a Karel en la posicin y orientacin inicial para el mundo abierto en laventana mundo, y agrega a la mochila la cantidad de zumbadores indicada en la ventana

    mundo.

    Ejecuta una lnea de cdigo cada vez que hacemos clic en este botn.

    Ejecuta todo el programa.

    Detiene la ejecucin del programa.

    Muestra la cantidad de zumbadores que tiene Karel enla mochila.

    En este recuadro se establece la velocidad en que seejecutara el programa. A menor cantidad mayor rapidez y a mayor cantidad la ejecucinser ms lenta. La velocidad esta dada en milisegundos.

  • 7/24/2019 Karel (1).pdf

    14/24

    Fase 2: Programando a Karel el Robot 14

    PROGRAMACIN EN KAREL

    La programacin de Karel se puede realizar en los lenguajes Pascal o Java, en el caso de este manual severa la forma de programar en Pascal el cual es un lenguaje estructurado.

    Kerel cuenta con pocas condiciones y comandos. Las actividades que puede realizar son avanzar,recoger y dejar zumbadores, al combinar esta simples actividades se pueden realizar innumerablesactividades desde las ms simples como es el avanzar por una avenida o calle hasta las ms complejascomo son operaciones matemticas, ordenamientos entre otras.

    ESTRUCTURA DEL PROGRAMA

    El lenguaje que utilizaremos es Pascal, el cual pertenece a la clasificacin de los lenguajesestructurados.

    El programa se divide principal mente en dos bloques:Uno para definir nuevas instrucciones (funciones) comprendido entre las palabras reservadas iniciar-programae inicia-ejecucion.Y el principal donde se escriben las instrucciones que debe realizar el programa, este bloque estadelimitado por las palabras reservadasInicia-ejecuciony termina ejecucion

    El programa esta delimitado por las palabras reservadas iniciar-programayfinalizar-programa.

    Bloque general del programa:

    Iniciar-programa

    (* Definicin de nuevas instrucciones*)

    Inicia-ejecucin

    (* Bloque principal de programa*)

    Termina-ejecucionFinalizar-programa

    Sintaxis general:- Todas las instrucciones deben terminar con un punto y coma (;).- No distingue entre minsculas y maysculas.- Los identificadores (nombre de las instrucciones, comandos y funciones) no deben llevar:

    espacios en blanco acentos, - Las instrucciones que se pongan despus de la palabra Finalizar-programa no se consideran

    parte del programa.- Los comentarios se empiezan con los caracteres (* y finaliza con *), ejemplo (* Esta es una

    lnea de comentario *) y no se consideran parte del cdigo del programa.

  • 7/24/2019 Karel (1).pdf

    15/24

    Fase 2: Programando a Karel el Robot 15

    COMANDOS BSICO.

    Karel solo puede realizar cinco acciones bsicas.

    Comando Descripcin de la accinavanza Avanza una esquina en la direccin en la que se encuentregira-izquierda Gira 90 grados a la izquierdacoge-zumbador Toma un zumbador y lo agrega a su mochiladeja-zumbador Saca un zumbador de su mochila y lo deja en la esquina

    sobre la que esta ubicadoapagate Desconecta a Karel

    Consideraciones:- Si intentamos avanzar atreves de una pared karel marca un error y se desconecta- Karel solo puede girar a la izquierda, por lo cual si queremos que gira a la derecha debemos

    hacer que Karel gire 3 veces.- Si intentamos dejar un zumbador cuando la mochila esta vaca Karel marca un error y se detiene

    el programa.

    VARIABLE DE KAREL

    Karel solo cuenta con una variable que es su mochila en la cual podemos agregar o dejar zumbadores.

    No se puede agregar otra variable.

    CONDICIONES DE KAREL

    La condicin es una funcin de la situacin actual de Karel, a medida que se ejecuta el programa.

    Estas funciones retornan dos posibles valores, Falso o Verdadero los cuales indican si Karel seencuentra o no en la situacin indicada por la condicin.

    Listado de las condiciones de Karel

    Detecta si existe o no unmuro

    Detecta si hay o no un zumbador en la esquinao en su mochila

    Detecta la orientacinactual

    frente-libre junto-a-zumbador orientado-al-este

    frente-bloqueado no-junto-a-zumbador orientado-al-oeste

    izquierda-libre algun-zumbador-en-la-mochila no-orientado-al-norte

  • 7/24/2019 Karel (1).pdf

    16/24

    Fase 2: Programando a Karel el Robot 16

    izquierda-bloqueada ningun-zumbador-en-la-mochila no-orientado-al-sur

    derecha-libre orientado-al-norte no-orientado-al-este

    derecha-bloqueada orientado-al-sur no-orientado-al-oeste

    Las condiciones se deben utilizar con las estructura de control.

    OPERADORES LGICOS

    Las condiciones de Karel se pueden combinar utilizando los operadores lgicos siguiente

    Operador lgico Y (and en otros lenguajes)Operador lgico O (or en otros lenguajes)

    Para agrupar comparaciones se utilizan los parntesis.

    Sintaxis:Condicin operador-lgicocondicin

    Ejemplo:mientras frente-libre Y derecha-bloqueada Y izquierda-bloqueada hacer inicio

    deja-zumbador;avanza;

    fin;

    SENTENCIAS DE CONTROL

    Las sentencias de control se usan para elegir qu hacer, y/o cuantas veces hacerlo. Sin embargo, por sisolos no causan que ocurra algo. Simplemente controlan la ejecucin de otras sentencias o fragmentosde cdigo. A continuacin se lista una serie de sentencias de control de Karel:

    - Si / Entonces- Si / Entonces / Sino- Repetir / Veces- Mientras / Hacer

    Siempre a continuacin de las sentencias de control entonces, veces, sino, y hacervan seguidas de lapalabra iniciopara iniciar el grupo de sentencias a ser realizado. El grupo de sentencias va seguido de

    la palabra fin.Utilizamos el par inicio/fin para un slo parmetro o para varios, no importa el nmero de ellos. Elcompilador devolver una advertencia en caso de que no se siga este estilo.

    Nota: Un punto y coma no debe estar a continuacin de un inicio, pero s es necesario a continuacinde un fin(excepto cuando precede una sentencia sino).

  • 7/24/2019 Karel (1).pdf

    17/24

    Fase 2: Programando a Karel el Robot 17

    Sentencia Si / Entonces

    Utilizamos esta sentencia cuando queremos que Karel realice algo solo en ciertas condiciones

    La forma general de la sentencia si es:

    Si xxx entonces inicioyyy;

    fin;

    Donde xxx es una condicin, yyy son sentencias a realizar si xxx es verdadero.

    indica que puede haber ms sentencias antes o despus

    Ejemplo:...Si orientado-al-sur entonces inicio

    gira-izquierda;gira-izquierda;gira-izquierda;

    fin ;...

    En este ejemplo si Karel se encuentra orientado al sur girara tres veces y quedara orientado al este.

    Sentencia de control Si / Entoces / sino

    Utilizamos esta sentencia cuando requerimos que Karel realiza una u otra accin dependiendo de lacondicin en la que se encuentre.

    Forma general:

    Si xxx entonces inicioyyy;

    finsino inicio

    zzz;fin ;

    Donde xxx es una condicin, yyy son sentencias a realizar si xxx es verdadero, y zzz son las sentenciasa ejecutar si xxx es falso.

    Ejemplo:

  • 7/24/2019 Karel (1).pdf

    18/24

    Fase 2: Programando a Karel el Robot 18

    Si frente-bloqueado y derecha-bloqueada y izquierda-bloqueada entonces iniciomedia-vuelta;alfombra-cuarto;

    finsino inicio

    media-vuelta;avanza-por-el-cuarto;

    fin;

    En este ejemplo si las condiciones son verdaderas Karel ejecuta las funciones media-vuelta y alfombra-cuarto (previamente definidas por el programador) y si son falsas se ejecutan las funciones media-vuelta y avanza-por-el-cuarto.

    Sentencia de control Repetir / Veces

    Es til cuando se sabe exactamente cuantas veces se debe de realizar una cosa.

    Forma general:

    Repetir xxx veces inicioyyy;

    fin;

    Donde xxx debe ser un nmero entero positivo, y yyy representa cualquier nmero de sentencias deKarel.

    Ejemplo:...repetir 14 veces inicio

    avanza ;fin ;...

    En este ejemplo Karel avanza 14 esquinas a partir de su ubicacin actual en la direccin en la que esteorientado.

    Sentencia de control Mientras / Hacer

    Extremadamente valiosa cuando no se sabe de antemano exactamente cuantas veces se necesita realizaruna tarea.

  • 7/24/2019 Karel (1).pdf

    19/24

    Fase 2: Programando a Karel el Robot 19

    La sentencia mientras/hacer nos permite repetir pasos mientras se cumple una condicin, y esto nos vaa permitir programar a Karel para que no sea un chico tan rgido!.

    Forma general:

    Mientras xxx hacer inicioyyy;

    fin;

    Donde xxx debe ser una condicin (una de las funciones booleanas listadas anteriormente), y yyyrepresenta cualquier nmero de sentencias de Karel.

    Ejemplo:Mientras frente-libre hacer inicio

    avanza;fin;

    En este ejemplo Karel avanzara desde su posicin actual hasta que se encuentre con una pared, siencuentra una pared deja de avanzar.

    FUNCIONES

    Hasta ahora, le hemos dicho a Karel exactamente lo que tena que hacer tal como necesitbamos que lohiciese. Esto funciona bien, pero se podrn haber dado cuenta de que siempre se utilizan secuencias desentencias similares. Un ejemplo es cuando Karel tiene que girar a la derecha, y nosotros le decimos"gira-izquierda; gira-izquierda; gira-izquierda;". No sera ms fcil si le pudiramos decirsimplemente "gira-derecha"?.En otras palabras, diciendo " gira-derecha; " Karel girara tres veces hacia la izquierda para alcanzarnuestro objetivo. Es posible.

    Una de las razones de crear nuevas instrucciones, es por evitar escribir tanto. Otra es para documentarmejor cual es nuestro objetivo, cuando nosotros mismos u otra persona leen el programa. Como seestarn dando cuenta, programar es una tarea muy sencilla, y necesitamos toda la ayuda necesaria parahacer las cosas correctamente!

    En si una funcin es un segmento de programa que podemos utilizar tanta veces como sea necesario ycon tan solo hacer una llamada al nombre de la funcin desde cualquier parte del programa.

    Sentencia Define-nueva-instruccion

    Las sentencias define-nueva-instrucion estn situadas en un sitio especial dentro de un programa deKarel, justo despus de la sentencia iniciar-programa.

  • 7/24/2019 Karel (1).pdf

    20/24

    Fase 2: Programando a Karel el Robot 20

    Forma gerenal:

    Define-nueva-instruccion nnn como inicioyyy;

    fin;

    Donde nnn es el nombre de la funcin, y yyy representa cualquier numero de sentencias.

    Nombre de la funcin:- Debe empezar con una letra.- El nombre de la funcin se pude formara con las letras del abecedario (acepcin de la ),

    nmeros y los caracteres guin alto (-) y guin bajo ( _ ) para separa las palabras.- No debe tener espacios en blanco o cualquier carcter no valido para identificadores como

    pueden ser: acentos, , /, ?, *, entre otros

    Las sentencias se pueden anidar, es decir pueden existir una o ms funciones dentro de otra funcin.

    Define-nueva-instruccion nnn1 como inicioDefine-nueva-instruccion nnn2 como inicio

    yyy;fin;

    yyy;

    fin;

    Ejecutar una funcin

    Para ejecutar una funcin basta con escribir el nombre de la funcin seguida de punto y coma, en ellugar que desee ejecutar dicha funcin, puede ser dentro de otra funcin o el bloque principal delprograma.

    Ejemplo:

    Programa que hace que Karel avance desde la esquina calle 1 avenida 1 hasta un muro y regrese y sedetenga hasta que encuentre un muro.

    Nombre del programa: Funcion_manual.txt

    iniciar-programa

    (* se crea una funcin que da media vuelta *)define-nueva-instruccion media-vuelta como iniciogira-izquierda;gira-izquierda;

  • 7/24/2019 Karel (1).pdf

    21/24

    Fase 2: Programando a Karel el Robot 21

    fin;

    (* se crea una funcin que avanza mientras no exista un muro*)define-nueva-instruccion Avanza-hasta-muro como inicio

    mientras frente-libre hacer inicioavanza;

    fin;

    fin;inicia-ejecucion

    (* se realiza una llamada a la funcin avanza muro *)Avanza-hasta-muro;

    (* Se realiza una llamada funcion media-vuelta *)media-vuelta;

    (* Se realiza una segunda llamada a la funcin Avanza-hasta-muro *)Avanza-hasta-muro;

    apagate;termina-ejecucion

    finalizar-programaEl siguiente es un programa vlido para Karel:

    Figura 13: Mundo del ejemplo funcion_manual.txt

    Recursividad

    La recursividad es la propiedad que tienen las funciones de realizar llamadas as misma.

    Una definicin podra ser la siguiente:

  • 7/24/2019 Karel (1).pdf

    22/24

    Fase 2: Programando a Karel el Robot 22

    Recursividad:Vea Recursividad.

    Es decir es una funcin que se ejecuta a si misma un numero indeterminado de veces.

    Cuado se realiza una llamada a una funcin (llammosla hija) la funcin que realiza la llamada(llammosla padre) queda inconclusa y requiere que la funcin que fue llamada (funcin hija) terminepara que termine la funcin padre.

    Con la siguiente grafica intentaremos mostrar el proceso de recursividad, inicio y finalizacin de lasllamadas de a la misma funcin.

    Funcin original IniciaPrimera llamada inicia copia 1

    Segunda llamada inicia copia 2Tercera llamada inicia copia 3

    No se cumple la condicin de llamadaTermina copia 3

    Termina copia 2Termina copia 1

    Termina funcin original

    Debemos tener cuidado al utilizar la recursividad y definir claramente cuando termina la funcin, si nopodemos crear un ciclo infinito y nunca terminara el programa.

    Le sugerimos que la llamada a la funcin debe estar dentro de una sentencia de control si / entonces o si/ entonces / sino mediante la cual controle si se realiza o no la llamada.

    Debemos utilizar la recursividad cuando la solucin del problema as lo requiera y no exista otra formade dar solucin ya que utiliza una gran cantidad de recursos (memoria y procesamiento) y hace mslenta la ejecucin del programa.

    Ejemplo de recursividad:

    Este programa le indica a Karel que avance hasta que encuentre un muro y regrese a la ubicacinexacta en la que inicio.

    Nombre del programa recursividad_ejemplo.txt

    iniciar-programa

    (* Crea la funcin media-vuelta *)define-nueva-instruccion media-vuelta como inicio

    gira-izquierda;gira-izquierda;

  • 7/24/2019 Karel (1).pdf

    23/24

    Fase 2: Programando a Karel el Robot 23

    fin;

    (* Crea la funcin avanza-y-regresa *)define-nueva-instruccion avanza-y-regresa como inicio

    si frente-libre entonces inicioavanza;

    (* Realiza una llamada as misma *)avanza-y-regresa;

    finsino inicio

    (* Realiza una llamada a la funcion media-vuelta *)media-vuelta;

    fin;avanza;

    fin;

    inicia-ejecucionsi frente-libre entonces inicioavanza;

    fin;

    (* Se realiza la primera llamada a la funcin avansa-y-regresa *)avanza-y-regresa;

    media-vuelta;apagate;

    termina-ejecucionfinalizar-programa

    Figura 14: Mundo del programa recursividad_ejemplo.txt

  • 7/24/2019 Karel (1).pdf

    24/24

    11 Olimpiada Mexicana de Informtica 2006.

    3.- FASE RESOLVIENDO PROBLEMAS CON UN LENGUAJE DE

    PROGRAMACIN

    En esta seccin se busca que los alumnos comprendan los conceptos de un lenguaje de

    programacin especfico, como puede ser Pascal, C y C++, que son los lenguajes deprogramacin oficiales en la Olimpiada Mexicana de Informtica.

    Se pretende tambin introducir a los alumnos en las metodologas utilizadas en para resolverproblemas con un lenguaje de programacin especfico, como son, bsquedas,ordenamientos, recursividad, entre otros.

    Los temas que aqu se presentan pueden ser aplicables a cualquier lenguaje deprogramacin oficial de la Olimpiada Mexicana de Informtica. Adems presenta ejemplospara res implementados en los lenguajes oficiales y algunos temas de reflexin sobre lasmetodologas de programacin

    Presenta tambin algunos temas sobre estructuras de datos, que son utilizados para resolverproblemas de la Olimpiada, como los arreglos unidimensionales y multidimencionales, laspilas, las colas y los archivos, donde todos los datos de entrada para los programas se hacena travs de archivos de texto, as como las salidas, tomando en cuenta que tanto lasentradas como las salidas de los programas tienen un formato especial que tienen quecumplir, ya que sino lo hacen el programa es descartado y tiene un resultado de cero.

    Un dato curioso que hay que tomar en cuenta es el nombre que tiene el programa, ya quetambin debe de ser el que se indica en el examen, as como el nombre de lo archivos desalida, por que sino lo hacen as tambin son descartados.