Lenguaje de Programación: Usos comunes de la Recursión

Documentos relacionados
Estuardo Roehrs # Cristian Chau # Algoritmos y Programación básica. Sección 60

Repetir. Por ejemplo, para indicarle a Karel que debe caminar cinco posiciones hacia adelante, debemos escribir:

UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO.

Como programar en Karel

fundamentos de programación (unidad 4) programación estructurada en Java

Algoritmos glotones. mat-151

L M X J V S D MIGUEL BALLESTA Avda.Guillermo Reyna,14. JAIME JIMENEZ Avda.Guillermo Reyna,24. JOSE SOTO CAPARROS C/ Dr.


Guía práctica de estudio 03: Algoritmos

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Manejo de módulos y recursión en programación. Pseudocódigo. (CU00204A)

Herramientas de Programación. M.C. Juan Carlos Olivares Rojas

UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO

NOTAS MUSICALES Para terminar de añadir sonidos en el pentagrama vamos a introducir otras tres notas a las que ya conocemos:

Hacer un juego de Flappy Bird

Clasificación de residuos

Análisis de Algoritmos

Manual del recogepelotas

Gobierno de Puerto Rico DEPARTAMENTO DE HACIENDA Área de la Contabilidad Central de Gobierno San Juan, Puerto Rico

Guía práctica de estudio 05: Diagramas de flujo

VII Olimpiada de Informática del estado de Guanajuato Tercer Examen Selectivo (Parte 2: Karel)

LABORATORIO 3 ESTRUCTURAS REPETITIVAS WHILE / DO WHILE

LABORATORIO TIC 2 Primer Parcial Etapas 1 y 2.

MANUAL DE INICIO DE CURSO EN PLATAFORMA E-LEARNING

CONFIGURACIÓN DEL DISPOSITIVO

Herramientas Google Aplicadas a Educación. Primera parte

MANUAL DE INSTALACIÓN DEL DIMM FORMULARIOS. Macintosh. IMPORTANTE: Su computador debe contar con el entorno de ejecución JAVA versión 1.6.

FACULTAD DE INGENIERÍA

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

TEMA 4. ESTRUCTURAS DE CONTROL

NATIONAL SOFT HOTELES GUÍA DE MIGRACIÓN DE BASE DE DATOS

CURSO VIRTUAL CIO VESTA CONTROL GUIA DE APRENDIZAJE SESION 4 CONTROL DE OBRA

PROGRAMAS PARA LA CLASSPAD MANAGER.

Aplicativos: Cómo se realiza la descarga e instalación de Aplicativos AFIP?

Estructuras de Control

Ciclos. Recordando Estructuras de Control Básicas: SELECCIÓN (condición) SECUENCIAL

Todo un éxito el Congreso Internacional de Informática Aplicada CIIA 2012

INFORMACIÓN SOBRE LAS PRUEBAS PARA LA OBTENCIÓN DE LA NACIONALIDAD BIENVENIDOS AL CENTRO DE ESTUDIOS HISPÁNICOS (CEH) UNIVERSIDAD ROVIRA I VIRGILI

Agradecimiento: A Javier Lomelín Urrea por su dedicación y esmero en este proyecto. Manuel Fernando Guzmán Muñoz Presidente OMIJal

WRO Costa Rica Categoría B. Clasificación de residuos

1. SKYPE 4.1. Skype 4.1 Es una aplicación para internet que permite establecer gratuitamente entre dos o más personas conversaciones de tipo:

VII Olimpiada de Informática del estado de Guanajuato Karel en la Granja

OBEDECER A DIOS (A.2.2.5)

NOMBRE DEL PROCEDIMIENTO: ACCIONES CORRECTIVAS, PREVENTIVAS Y DE MEJORA PROCESO MEJORAMIENTO CONTINUO VIGENCIA 20 MAY 2013 TABLA DE CONTENIDO

MANUAL USO CUENTAS PERSONALES ASOCIADAS/OS AEIHM

Algoritmos de Ordenamiento

Manual de Usuarios: Sistema de Registro de Alfabetizados y Cursos del Plan Nacional de Alfabetización Tecnológica (PNAT)

WINDOWS MOVIE MAKER. Realizado por Silvia Nicosia 1

Tema 3: Recursión. Índice

GUIA RÁPIDA PARA LA PRESENTACIÓN DE TESIS Y TRABAJOS DE GRADO EN FORMATO DIGITAL

MATRÍCULA ON-LINE V1.3 Manual V 1.0

Lleve a casa lo juegos de matematicas a casa

Tema 8 Gestión de la memoria en tiempo de ejecución.

MANUAL DE USUARIO DR001

Sistemas Operativos Practica 1: procesos y concurrencia.

TIPOS DE DATOS EN ABAP

Práctica de laboratorio b Creación de zonas primarias y secundarias de búsqueda hacia adelante

6.2 Interfaz del Programa de Diseño de una Guía Circular.

PRUEBAS LIBRES TÉCNICO EN FARMACIA Y PARAFARMACIA

MANUAL DE USUARIO SISTEMA DE INGRESO DE CALIFICACIONES EN LÍNEA

Normalmente usamos la palabra "combinación" descuidadamente, sin pensar en si el orden de las cosas es importante. En otras palabras:

Validación De Certificados - Autoridad De Registro 01/ Configuraciones Previas:

LIBRO DE CLASES ELECTRÓNICO Curso Introductorio Unidad II - Instalación de componentes

Karel y Recursión. I. Entendiendo la Recursión

Juego Jarras con Agua Guía del Usuario

Distinguir las diferentes estructuras de repetición utilizadas en problemas con bucles: mientras, repetir mientras, para.

Historia. Problema. Consideraciones. Karel Traviesa

Todas las letras serán igual de grandes. Dejaré espacio suficiente entre palabra y palabra. Si me equivoco, borraré sin dejar manchas.

Dpto. Lenguajes y Ciencias de la Computación E.T.S.I. Telecomunicación. Laboratorio de Programación Uso del depurador en Dev-C++

Guía para cambio y solicitud de contraseña de acceso a los Sistemas Académicos Institucionales

Configuración de INFINITUM en Windows XP con módem Manta

Cuando usamos el pretérito imperfecto del subjuntivo, las terminaciones era/ -ese son equivalentes

HRS-9 Batch Processing Tool. HRS-9 Houston Texas 2011

SERVICIO NACIONAL DE APRENDIZAJE SENA

4.- Leer tres números y escribirlos en orden decreciente

Semana de las Matemáticas e Ingeniería. Desarrollo de algoritmos recursivos empleando la aplicación PseInt

Introducción a C++ y Code::Blocks

Estructuras de control

FACULTAD DE INGENIERIAS PROGRAMAS INFORMATICOS PROGRAMACION DE PRIMEROS EXAMENES PARCIALES LUNES 27 DE SEPTIEMBRE A SABADO 2 DE OCTUBRE DE 2010

La última versión disponible cuando se redactó este manual era la 5 Beta (versión ), y sobre ella versa este manual.

Herramientas computacionales para la matemática MATLAB: Estructuras de control

Quinc. En el siguiente cuadro encuentras las pruebas que vas a resolver, el número de preguntas y el tiempo disponible para contestarlas.

Actualización de una libreta de cómputos en Microsoft Excel Parte I

INFORMACIÓN PARA DIRECTIVOS, ADMINISTRATIVOS Y PROFESORES

Ejercicios ejemplo: verificación de algoritmos del valor suma de una sucesión matemática. (CU00238A)

la solución a una ecuación cuadrática solicitando al usuario los términos de dicha ecuación.

OFICINA DE ENLACE CON LA SECRETARIA DE RELACIONES EXTERIORES. Versión 1 TRAMITE DE PASAPORTE. Página 1 de 15. Procedimiento detrámite de Pasaporte

TEST DE AJEDREZ. 1.- Cuántos jugadores participan en una partida de ajedrez? 1. Uno 2. Dos 3. Los que quieran 4. Normalmente cuatro

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Transcripción:

UG KAREL Lenguaje de Programación: Usos comunes de la Universidad de Guanajuato Agosto 2010 Lenguaje de Programación: Usos comunes de la

Propiedades de las funciones recursivas El proceso para escribir una función recursiva es muy parecido al que usamos para escribir un ciclo: 1 Hay que encontrar la condición de paro o caso base. Para esto hay que intentar responder la pregunta Cuál es el caso más simple que puede resolverse? 2 Qué es lo que Karel tiene que hacer en el caso base? 3 Encontrar una manera de revolver un pedazo pequeño del problema cuando no estemos en el caso base. Esto es llamado reducir el problema al caso general. 4 Asegurarse que la reducción nos lleve al caso base. Lenguaje de Programación: Usos comunes de la

NOTA La diferencia más importante entre las soluciones recursivas y las iterativas es que un ciclo iterativo tiene que terminar cada iteración antes de poder empezar la siguiente. Mientras que una instrucción recursiva generalmente inicia una nueva copia antes de haber completado la actual. En esos casos, la copia actual es suspendida temporalmente esperando a que termine la nueva copia y cuando eso suceda la copia actual podrá continuar la ejecución de sus instrucciones. Lo que generalmente sucede es que la nueva copia no se completa sin antes generar otra nueva copia. Cada copia debe ser finalizada en orden, siendo la primera que se creó la última en terminar. Lenguaje de Programación: Usos comunes de la

Contar pasos Pasos Para motivar el ingenio de Karel, el Dr. Isaac le prometió una docena de beepers si lograba realizar el siguiente reto: debe caminar hasta topar con el primer beeper y luego caminar, al norte, tantas veces como caminaste desde tu punto inicial hasta el beeper. Problema Karel se encuentra a n pasos de una esquina X marcada con un beeper. Karel debe colocarse en la esquina que esta justamente a n pasos al norte de la esquina X. Lenguaje de Programación: Usos comunes de la

Consideraciones No importa en que posición y orientación tenga que finalizar Karel al finalizar. Desconoces la distancia entre Karel y el beeper. Desconoces la orientación de Karel. Solo sabes que esta mirando al beeper. No importa la orientación final de Karel, solo su posición inicial. Lenguaje de Programación: Usos comunes de la

Veamos los 4 pasos 1 Cuál es el caso base? Karel está sobre el beeper. 2 Qué es lo que tiene que hacer Karel en el caso base? Voltear al norte. 3 Cuál es el caso general y que hay que hacer en el? Karel no está sobre el beeper. Lo que hay que hacer es dar un paso al frente y luego llamar a la función recursiva, para después dar otro paso al frente. Este segundo paso será dado en todas las copias excepto en la que sea el caso base, ocasionando con esto que Karel de tantos pasos como los que tuvo que dar para llegar al caso base pero después de haber encontrado este, lo cual significa que Karel ya está viendo al norte. 4 La reducción nos lleva al caso base? Si, si hay un beeper enfrente de Karel. Lenguaje de Programación: Usos comunes de la

Moviendo beeper Ahora imaginemos que en lugar de ir al norte del beeper, quiere llevárselo al doble de la distancia entre el inicio y el beeper. Cuál es el caso base? Por supuesto es el mismo, es cuando Karel está sobre el beeper. 1 Qué hay que hacer en el caso base? Recoger el beeper. 2 Qué hay que hacer en el caso general? Dar un paso, buscar beeper y luego caminar dos pasos más. 3 La reducción nos lleva al caso base? Si, si hay un beeper enfrente de Karel. Lenguaje de Programación: Usos comunes de la

La función quedaria así: define doble distancia beeper() { if(nexttoabeeper) pickbeeper(); else { move(); doble distancia beeper(); move(); move(); } } Lenguaje de Programación: Usos comunes de la

Contar beepers Clonando El Dr. Karelov es muy estudioso pero siempre requiere hacer copias de los montones de beepers que investiga. Hacer copias significa colocar la misma cantidad de beepers, que hay en una esquina, en otra esquina. Problema Karel como buen robot que es, debe hacer una copia del montón de beepers sobre el que esta. La copia la debe dejar en la esquina que tiene enfrente. Consideraciones Dos y dos son cuatro, cuatro y dos son seis. Karel lleva los suficientes beepers para hacer la clonación. No importa la posición final ni orientación de Karel. El montón clonado debe ser la esquina que tiene enfrente Karel cuando inicia. Lenguaje de Programación: Usos comunes de la

Esta es una de las aplicaciones más usadas en Karel para recursión Figura: Esquina con 6 beepers Figura: Estado final Lenguaje de Programación: Usos comunes de la

1 Cuál es el caso base? No hay ningún beeper. 2 Qué hay que hacer en el caso base? Moverse a la siguiente esquina. 3 Cuál es el caso general? Hay beepers en la esquina. 4 Qué hay que hacer en el caso base? Para reducir, hay que recoger un beeper. Luego llamar a la recursión, y después poner un beeper en cada una de las esquinas. Lenguaje de Programación: Usos comunes de la

Código define pon beeper y regresa() { putbeeper(); halfturn(); move(); } define copia cantidad() { if(nexttoabeeper) { pickbeeper(); copia cantidad(); pon beeper y regresa(); pon beeper y regresa(); } else move(); } Lenguaje de Programación: Usos comunes de la

Edgar Alfredo Duéñez Guzmán & Edgar Said Hernández Sánchez & Marte Alejandro Ramírez Ortegón Los Dilemas de Karel. CIMAT, Mayo 2006. Lenguaje de Programación: Usos comunes de la