Planteos Recursivos Resolución de Problemas y Algoritmos

Slides:



Advertisements
Presentaciones similares
Introducción al Teorema de Gödel Eduardo Alejandro Barrio UBA - CONICET 2do Cuatrimestre de 2009 Eduardo Alejandro Barrio UBA.
Advertisements

La aritmetización de la sintaxis
Diseño y análisis de algoritmos
Matemáticas Computacionales
SOLUCIÓN DE PROBLEMAS Problema Solución A B S T R C I Ó N C O N R E I
ALGORITMOS Y LENGUAJES Estructuras de Control CONDICIONAL
Tema: Decibilidad Integrantes: Ileana Rdguez Soto
SISTEMAS DE NUMERACIÓN
DIAGRAMAS DE FLUJO Y PSEUDOCÓDIGO
Curso de Matemáticas II
Notación Científica y Potencia de 10
DIAGRAMAS DE FLUJO Y PSEUDOCÓDIGO
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERIA DIVISIÓN DE INGENIERÍA ELÉCTRICA COMPUTACIÓN PARA INGENIEROS NOTA IMPORTANTE: Para complementar.
CÁLCULO DIFERENCIAL.
PROGRAMA DE ALGEBRA LINEAL
PARADIGMA Es un esquema de pensamiento que nos lleva a concebir las cosas de una manera determinada. el término paradigma puede indicar el concepto de esquema.
UNIVERSIDAD TECNOLOGICA DEL PERU DERIVADAS
Teoría de lenguajes y compiladores
Grado en Ingeniería electrónica y comunicaciones Facultad de Físicas Universidad Complutense P1 Fundamentos de Programación.
ESTRUCTURAS DE CONTROL
Grupo 6 Los Números Enteros.
Potencias de exponente natural mayor que 1
Programación de Computadores
3ER SEMESTRE PROGRAMACIÓN INGENIERIA AGROINDSTRIAL I Unidad Nº Técnicas de Programación 2.- Programación Estructurada 3.- Programación Orientada.
EXPONENTES Y RADICALES
Representación de Números en un Registro Binario
Semana 5 Subprogramas..
Academia de Informática
La Derivada. Ya vimos: los conceptos, métodos ó instrumentos necesarios para establecer el “comportamiento” de una función.  en un entorno de x o [ 

TEMA: ECUACIONES CUADRÁTICAS
CONCEPTOS BÁSICOS: Números Naturales
Algoritmos.
Sistemas decimal, binario, octal y hexadecimal
Sistemas de numeración
ALGORITMOS APROXIMADOS
Sesión 5 Sentencias de Selección y repetición Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
ESTRUCTURA DE DATOS ESD-243
Descomposición Factorial Unidad 5
Material de apoyo Unidad 4 Estructura de datos
Análisis de algoritmos
Estructuras de Control.
Unidad 1: FUNDAMENTOS DE COMPUTACIÓN Y PSEUDOLENGUAJE
Ecuaciones de segundo grado en una variable
Parte I. Estructuras de Datos.
Representación de Algoritmos
Sistema Numérico Binario Prof. Carlos Rodríguez Sánchez.
CALCULO DIFERENCIAL E INTEGRAL TAREA 12
Términos algoritmo diseñar algoritmo implementar algoritmo
ELEMENTOS DE COMPUTACIÓN Profesor: Guillermo Figueroa
Presente un cuestionario con los aspectos mas importantes sobre los
Matemáticas para la educación normal
LIC. JOSEPH RUITON RICRA
Metodología de la programación
tabla // tabla sumar del 7, del 0 al 9
JORNADA DE CAPACITACIÓN
Prueba de escritorio Computación y Sistemas de Información.
Lic. Carla Aguirre Montalvo
Logaritmos.
Algoritmos y Desarrollo de Programas I
“Análisis y Diseño de Algoritmos” 2a Entrega, Programa 6 Centro de Investigación y Estudios Avanzados del IPN Samuel Garrido Daniel 15-Abril-2004 México,
TEMA 4: USO DE EXPONENTES Y NOTACIÓN CIENTÍFICA 1 MATEMÁTICAS II POTENCIAS SUCESIVAS DE UN NÚMERO POTENCIAS SUCESIVAS DE UN NÚMERO ¡ CUIDADO CON LAS BACTERIAS.
Introducción Matemática Nivelatoria
Mini-video 2 de 5 Materia: Límites de funciones Continuidad de funciones Prácticas con Introducción a Funciones de una variable.
La programación modular es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible.
Potenciación La potenciación o exponenciación es una multiplicación de varios factores iguales, al igual que la multiplicación es una suma de varios.
MÁXIMO COMÚN DIVISOR  En matemáticas, se define el máximo común divisor(MCD) de dos o más números enteros al mayor número entero que los divide sin dejar.
Números y Fracciones 1.Los números naturales y los enterosLos números naturales y los enteros 2.Números primosNúmeros primos 3.Máximo común divisor y mínimo.
Sistema Numérico Binario Prof. Carlos Ortiz Muñoz.
LOS NÚMEROS ¿Existe algún número que multiplicado por 2 sea 1? ENTEROS
Transcripción de la presentación:

Planteos Recursivos Resolución de Problemas y Algoritmos Segundo Cuatrimestre 2014

La recursividad puede ser utilizada para resolver problemas que exhiban las siguientes propiedades: Resolver cualquier instancia del problema - excepto el caso trivial - requiere resolver una o varias instancias más pequeñas del mismo problema. La instancia más pequeña de un problema, el caso trivial, puede ser resuelto directamente. Este principio no sólo nos dice cuándo usar recursividad, sino también nos orienta acerca de cómo usarla. Para resolver un problema recursivo es necesario: Identificar el caso trivial, es decir, una instancia que pueda ser resuelta directamente. Identificar una o más instancias más pequeñas que puedan ser resueltas en forma más sencilla y usadas luego para resolver el problema original.

El planteo NO DEBE MOSTRAR detalles de implementación Una cuestión que puede resultar algo imprecisa es cómo determinar que un problema es más "pequeño" que el problema original, ilustraremos esta cuestión con ejemplos específicos. Para algunos de estos problemas existe una definición formal, posiblemente matemática, de la cual deriva directamente un planteo fácilmente implementable. En otros problemas no tenemos un planteo recursivo explícito en el enunciado. Deberíamos comenzar entonces escribiendo uno . El planteo NO DEBE MOSTRAR detalles de implementación

Problema: Calcular la potencia n de m, esto es mn , con m <>0 y n no negativo dada la definición: mn 1 n es 0 m x mn-1 n > 0 Identificar el caso trivial, es decir, una instancia que pueda ser resuelta directamente. Identificar una o más instancias más pequeñas que puedan ser resueltas en forma más sencilla y usadas luego para resolver el problema original.

Empezamos con un ejemplo Escriba el planteo recursivo que determine si los dígitos de un número natural están dispuestos de forma creciente, esto es, si N=dm dm-1….d2 d1 se verifica que di+1 <= di. Por ejemplo: para 1227, 359, 88 o 139 debería retornar verdadero Empezamos con un ejemplo CT: si N tiene un solo dígito, entonces es creciente Creciente (N) CR: si N tiene mas de un dígito, es verdadero si N’ es creciente y el último dígito de N es mayor o igual que el último dígito de N’, donde N’ es N sin su último dígito. Caso contrario es falso CR: si N tiene mas de un dígito, es verdadero si N’ es creciente y el último dígito de N es mayor o igual que el último dígito de N’, donde N’ es N sin su último dígito. Caso contrario es falso

Mostrar la secuencia S en orden inverso es: Leer una cadena de caracteres de longitud arbitraria finalizada en # y mostrar la cadena en orden inverso. Ej.: si se tipea animal# deberá imprimirse en pantalla lamina Empezamos con un ejemplo CT: No mostrar nada si la secuencia es vacía Mostrar la secuencia S en orden inverso es: CR: Mostrar la secuencia S’ en orden inverso y a continuación mostrar el primer elemento de la secuencia S, donde S’ es la secuencia S sin su primer elemento CR: Mostrar la secuencia S’ en orden inverso y a continuación mostrar el primer elemento de la secuencia S, donde S’ es la secuencia S sin su primer elemento

Escriba un planteo recursivo que dado un número entero E y un dígito D retorne cuantos dígitos de E son menores a D. Por ejemplo menores(123456, 4) retornará 3, menores(8756,5) retornará 0 y menores(123123,4) retornará 6 CB: si E tiene un solo dígito entonces si E < D es 1, en caso contrario es 0 Menores(E,D) CR: si E tiene más de un dígito, es la cantidad de dígitos menores a D en E’, mas 1 si el último dígito de E es > D; de lo contrario es la cantidad de dígitos menores a D en E’ (donde E’ es E sin su último dígito) CR: si E tiene más de un dígito, es la cantidad de dígitos menores a D en E’, mas 1 si el último dígito de E es > D; de lo contrario es la cantidad de dígitos menores a D en E’ (donde E’ es E sin su último dígito) CR: si E tiene más de un dígito, es Menores(E’,D)+1 si el último dígito de E es > D, ó Menores (E’,D) en caso contrario (donde E’ es E sin su último dígito)

En un planteo recursivo NO DEBEN UTILIZARSE frases como las siguientes: Llamo recursivamente Invoco a la función (o procedimiento) Y así sucesivamente Leo el primer elemento de…. Así recursivamente hasta que se haga … Por cada dígito del número lo comparo…. Por cada dígito analizo… hasta llegar a …

Menores(E,D) CB: si E tiene un solo dígito entonces si E < D es 1, en caso contrario es 0 CR: si E tiene más de un dígito, es la cantidad de dígitos menores a D en E’, mas 1 si el último dígito de E es > D; de lo contrario es la cantidad de dígitos menores a D en E’ (donde E’ es E sin su último dígito) CR: tiene mas de un dígito lo divido por 10, hasta que tenga 1 dígito y cuento por cada dígito del número que sea menor al dígito dado CT Si estoy en el ultimo dígito analizo si es menor a D, de ser así la cantidad aumenta en 1 CR: Por cada dígito de E, analizo si es menor a D y de ser asi la cantidad aumenta en 1 por cada uno de ellos CR: Dados É y D, llamar a la función contar, Si E dividido 10=0 y E> 0 entonces retornará contar=0

CR: se lo achica al número hasta que sea menor a 10 y después de eso comparo su módulo con el dígito ingresado CR: Si un número tiene mas de un dígito: evalúo del número si es menor que D cuento 1, caso contrario no cuento. Vuelvo a evaluar con el número reducido en un dígito CR: si tiene mas de un dígito a la función se le asigna el valor que tenía mas 1

La única manera de aprender a escribir planteos recursivos correctos… …es escribiendo planteos recursivos