Recursividad Programación II Recursividad.

Slides:



Advertisements
Presentaciones similares
Funciones y recursividad
Advertisements

Procedimientos y Funciones
Funciones en lenguaje C
FUNCIONES EN C.
CI TEORIA semana 8 Subprogramas o funciones Definición de funciones.
Semana 5 Subprogramas..
FUNCIONES EN C.
APUNTADORES EN C. MENU DEL DIA Repaso clase anterior Apuntadores. Eso pa que? Solución al problema: Funciones. Ventajas de trabajar un programa usando.
APRENDIZ: SANDRA L. CAICEDO C. ORDEN: 20194
USO DE ARGUMENTOS Y PARÁMETROS EN LOS PROGRAMAS Preparado por Prof. Nelliud D. Torres Material Original Prof. Antonio Huertas Uso de argumentos y parámetros.
Principios de programación LIA. Suei Chong Sol, MCE. Sentencias de Control Repetitivas.
INTRODUCCION A LA PROGRAMACION
LENGUAJE “C” Programación.
Desarrollador Profesional de Juegos Programación III Unidad II Introdución a threading en windows.
1 Clase 23: técnicas (3/4) orden recursivo iic1102 – introducción a la programación.
Análisis de los algoritmos Unidad 7. Análisis La resolución práctica de un problema – algoritmo o método de resolución – y por otra un programa o codificación.
Manuel Torres Guerrero Tecnologiías 2º E.S.O. El proyecto técnico: el documento que explica como hemos hecho nuestro trabajo. I.E.S. ”María Inmaculada”
Clase 3: primeros programas (1ª parte) iic1102 – introducción a la programación.
¿Qué es un Diagrama de Flujo? UN DIAGRAMA DE FLUJO, TAMBIÉN LLAMADO FLUJOGRAMA DE PROCESOS O DIAGRAMA DE PROCESOS, REPRESENTA LA SECUENCIA O LOS PASOS.
PROGRAMACIÓN ORIENTADA A OBJETOS SEGUNDA UNIDAD: “CLASES, OBJETOS Y MÉTODOS” IRVING YAIR SALAS CHÁVEZ ING. EN SISTEMAS COMPUTACIONALES - ITSLP.
Funciones en lenguaje C 2 Funciones Definición: – Las funciones son los bloques de construcción básicos de C. Dentro de ellas se da toda la actividad.
Pase de parámetros a funciones
Programación 1 Curso: 5to. I TT
Ciclos condicionales y exactos Estructura de control de ciclos
“POLIMORFISMO PARAMETRICO”
Diagramas de Flujo Algoritmos.
RECURSIVIDAD.
Paul Leger CICLOS: For Paul Leger
FUNCIONES Y PROCEDIMIENTOS
Estructuras de Datos Recursividad.
Complejidad Programación II de febrero de 2009.
INDICE computadora hardware Partes de hardware.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
TUTORIAL PSeint.
2.2 Procedimientos recursivos
CODIGOS DE BLOQUE LINEALES
ALGORITMOS es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos.
Unidad 2. Algoritmos Unidad 4. Control de flujo
Unidad 3. Introducción a la programación
ELEMENTOS DE COMPUTACIÓN Profesor: Guillermo Figueroa
Scratch Presentado por: Sharon Daniela Bustos Barón. 901 J.M.
HERRAMIENTAS DE PROGRAMACIÓN
Introducción a las ciencias de la computación Antonio López Jaimes
U NIVERSIDAD S AN P EDRO F ILIAL B ARRANCA F ACULTAD DE I NGENIERÍA E SCUELA P ROFESIONAL DE I NG. I NFORMÁTICA Y DE S ISTEMAS C URSO : ALGORITMOS Tema.
Esquema para Organizar un Trabajo de Grado basado en un Diseño propio de la Investigación Documental Pagina de Titulo Pagina de Constancia de Aprobación.
Guía interactiva de usuario final operativo
CURSO PROGRAMACIÓN BÁSICA SEMANA 3 ¿Qué es un programa?
Funciones y Procedimientos(Pseudocódigo)
Recursividad Estructura de datos 2005.
El entorno de Desarrollo de Dev-C++
ACCIONES Y ESTRUCTURAS
Docente: Ing. Francisco Rodríguez
M. en TI. Omar Téllez Barrientos DOCENTE DE INFORMÁTICA GENERACIÓN DE PSEUDOCÓDIGOS Y ALGORITMOS
FUNCIONES Y PROCEDIMIENTOS
CURSO LOGICA DE SISTEMAS. Lógica Es una ciencia formal que estudia los principios de la demostración e inferencia válida. Una inferencia es una evaluación.
PROGRAMANDO EN C Estructura de un programa. 1 variables globales main(){ variables locales secuencia de sentencias } f1(){ variables locales secuencia.
CICLOS EN JAVA FOR, WHILE, DO WHILE Un ciclo en Java o bucle en Java (como prefieras llamarlo) permite repetir una o varias instrucciones cuantas veces.
MC Beatriz Beltrán Martínez Verano 2018
TUTORIAL PS EINT FUNDAMENTOS DE PROGRAMACIÓN Ing. Elizabeth Díaz Orea.
TUTORIAL PS EINT FUNDAMENTOS DE PROGRAMACIÓN Ing. Elizabeth Díaz Orea.
Recursividad 1 Análisis de algoritmos. Matrushka La Matrushka es una artesanía tradicional rusa. Es una muñeca de madera que contiene otra muñeca más.
Informática Ingeniería en Electrónica y Automática Industrial
Tema 2 Estructura de un programa en C. IWI Tema 2 Programa en C U n programa en C es una serie de instrucciones en un lenguaje muy especifico (similar.
MANEJO DE UBUNTU COMANDOS SHELL / TERMINAL.
Programación Modular Programación de Computadoras - Hugo Vega Grupo2: Reina Rodríguez Miriam Salluca.
Sentencias de Control Repetitivas
UNIVERSIDAD JUÁREZ AUTÓNOMA DE TABASCO Nombres: Isaac Sánchez García Teofilo Martinez Garcia Ricardo Del Carmen Paz López Vanesa Anahí Pérez Lizárraga.
UNIDAD V ESTRUCTURA REPETITIVA (Mientras)
ESTRUCTURA DE LOS SISTEMAS OPERATIVOS - MENDOZA MOLINA ARIANA
Transcripción de la presentación:

Recursividad Programación II Recursividad

¿Qué es la recursividad? Importante! No olvidar que… Índice Introducción ¿Qué es la recursividad? Importante! No olvidar que… Programación II Recursividad

Introducción Esta presentación tiene como objetivo abordar el estudio de algoritmos recursivos. Se centra en los aspectos conceptuales de la recursividad. Obviamos los detalles correspondientes a la definición de estructuras y tampoco abordamos los criterios sobre cuándo debemos implementar una solución recursiva. Ante cualquier duda releer el módulo sobre recursividad. Para explicar qué es la recursividad, primero hay que explicar qué es la recursividad. Sin caso base, ¿es correcta esta afirmación? Solución al final de la presentación Programación II Recursividad

¿Qué es la recursividad? Una rutina se considera recursiva cuando dentro del cuerpo de la rutina existe una llamada a sí misma (o a otra rutina que a su vez llama a esta primera). Debemos tener en cuenta que esta acción genera otra instancia de la misma rutina, en un área de memoria diferente y con variables locales independientes de la instancia anterior. Para hacernos una idea gráfica realizaremos una animación de la ejecución del siguiente algoritmo: void main () void MostNumMedios (int iN1,int iN2, int &iResult) int iNum1,iNum2, iRes; //Objetivo: Mostrar los valores intermedios dado dos números //incluyendo los extremos y devolver la suma de los mismos. Nota: La siguiente animación parte desde la llamada a la rutina “MostNumMedios”. (suponiendo ya ejecutadas las tres primeras asignaciones del programa principal) Programación II Recursividad

¿Qué es la Recursividad? En la primera isntancia recibo como parámetros (1,3,0). Muestro iN1 y me llamo a mí mismo. Observen que todavía me quedan instrucciones por ejecutar. iN1 iN2 iResult 1 3 * 1° Llamada iN1 iN2 iResult 4 3 * 4° Llamada En la cuarta instancia recibo como parámetros (4,3,0). No hago nada ya que 4 no es menor a 3. ¡Al fin alcancé el caso base! Vuelve a tomar el control la rutina que me llamó -3º Instancia- Termino mi ejecución y vuelve a tener el el programa principal que ejecutará la impresión iRes. Ahora puedo culminar mi ejecución acumulando en iResult, o sea en iRes. Fin de la Animación Noten que recibo dos parámetros por valor y el tercero por dirección. De modificar “iResult” estaría modificando “iRes”. En la segunda instancia recibo como parámetros (2,3,0). Muestro iN1, me llamo a mí mismo y quedo a la espera En la tercera instancia recibo como parámetros (3,3,0). Muestro iN1, me llamo a mí mismo y quedo a la espera. Ahora puedo culminar mi ejecución acumulando en iResult, o sea en iRes. Vuelve a tomar el control la rutina que me llamó -1º Instancia- Ahora puedo culminar mi ejecución acumulando en iResult, o sea en iRes. Vuelve a tomar el control la rutina que me llamó -2º Instancia- iN1 iN2 iResult 2 3 * 2° Llamada iN1 iN2 iResult 3 * 3° Llamada 1 3 6 5 3 iNum1 iNum2 iRes Main Animar Memoria RAM 1 2 3 6 (Continúe clickeando para ir avanzando en la presentación) Pantalla Programación II Recursividad

Importante! No olvidar que… Aquellas variables que pasan por valor a la rutina recursiva son copiadas en nuevas direcciones de memorias y liberadas -se pierden- cuando la instancia se termina. Aquellas variables que fueron pasadas por dirección siguen manteniendo la referencia y cualquier cambio que le realicemos afectará a la variable original asociada. Sin un caso base dentro de nuestra rutina recursiva entraremos en un ciclo infinito de llamadas recursivas. Siempre necesitaremos una sentencia condicional que no realice ninguna llamada recursiva para poder frenar. Programación II Recursividad

Fin “Para explicar qué es la recursividad, primero hay que explicar qué es la recursividad…” Sin un caso base estaríamos contando el cuento de la buena pipa… Pero claro, seguro ya te habías dado cuenta de esto antes que yo. Espero haberte sido de utilidad. Saludos! Y hasta la próxima. iN1 iN2 iResult 1 3 * iN1 iN2 iResult 1 3 * Programación II Recursividad