TECNICAS DE PROGRAMACION Universidad Católica Los Angeles de Chimbote RECURSIVIDAD Y SOBRECARGA DE METODOS

Documentos relacionados
Metodología y Tecnología de la Programación

Guía - Taller # 2 (JAVA)

Tema 6. Reutilización de código. Programación Programación - Tema 6: Reutilización de código

8. Sentencia return y métodos

Tema 4. Excepciones en Java

FACULTAD DE INGENIERÍA

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas

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

5. Sentencias selectivas o condicionales

Ms. Marcelino Torres Villanueva 1

Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera. Fundamentos de programación

Java Básico. Métodos estáticos

PROBLEMAS DEL TEMA 7: Subprogramas y Modularidad

Introducción Programación Modular y a Métodos: Consideremos el siguiente ejercicio:

Prácticas: Introducción a la programación en Java. Informática (1º Ingeniería Civil) Curso 2011/2012

GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos.

Tema 7: Polimorfismo. Índice

Programcaión Básica. Secuencias de Control y Repetición. Arturo Vega González.

1. Manejo de memoria estática 2. Manejo de memoria dinámica

FUNCIONES PHP: DECLARACIÓN Y LLAMADAS. PARÁMETROS, RETURN. EJERCICIOS EJEMPLOS RESUELTOS. (CU00827B)

FUNDAMENTOS DE JAVA PARA LA CONCURRENCIA

Recursión Directa. Una función es de recursión directa si contiene una llamada explícita a si misma. return foo (y 1); Recursión Indirecta

Para leer la entrada de consola, lo primero que se hace es construir un Scanner que este asociado al flujo de entrada estándar System.

Programación Orientada a Objetos Métodos Guía de Ejercicios v9.7

Principios de Computadoras II

Aquí se declaran los. Aquí se declaran los métodos de la clase. *Atributos de la clase

Las plantillas permiten definir funciones genéricas.

Programación orientada a objetos. Resumen de Temas Unidad 4: Sobrecarga

Tema: FUNCIONES, PROCEDIMIENTOS Y RECURSIVIDAD.

Instrucciones de control

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

Lenguaje C Funciones. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.

Introduciendo datos desde el

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Clase adicional 2. Estructuras básicas de control. Temas

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Universidad Nacional del Santa FACULTAD DE INGENIERIA E.A.P. Ingeniería de Sistemas e Informática NETBEANS 7.0 MI PRIMER PROYECTO

Programación de Computadores 4 Iteraciones y Decisiones. Prof. Javier Cañas. Universidad Técnica Federico Santa María Departamento de Informática

Sistemas Operativos Practica 1: procesos y concurrencia.

Práctica 2: Java Remote Method Invocation (RMI)

FAMILIARIZANDONOS CON JAVA

Bloque 4. La descomposición funcional y el diseño descendente

Java Avanzado Facultad de Ingeniería. Escuela de computación.

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante)

CI 2125, Computación I

CÁTEDRA DE LENGUAJE DE PROGRAMACIÓN JAVA 2014

Pero nos están faltando otros operadores imprescindibles:

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

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

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Java: control de excepciones

Problemas de Recursividad

Presentación. Programación I. Conceptos Avanzados de Programación. :: Prof. Yeniffer Peña

La Plataforma J2SE (Java 7) PROGRAMA HOLA MUNDO

Titulo: Suma de N primeros números

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Tema: Introducción a Java y Netbeans

ESTRUCTURAS REPETITIVAS

Tema 2. El lenguaje JAVA

Los caracteres de Java pueden agruparse en letras, dígitos, espacios en blanco, caracteres especiales, signos de puntuación y secuencias de escape.

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación.

FACULTAD DE INGENIERÍA

Tecnologías de Programación Web Dr. Diego C. Martínez. Depto de Cs e Ing. de la Computación Universidad Nacional del Sur.

Introducción a la Programación Orientada a Objetos

Java para programadores

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO

Fundamentos de Programación. Flujo de Control I: Estructuras selectivas

INGRESAR DATOS CON UN CONTROL VISUAL EN JAVA. CLASE JTEXTFIELD Y MÉTODO GETTEXT. EJEMPLOS (CU00928C)

QUÉ ES UNA CLASE JAVA? ATRIBUTOS (PROPIEDADES O CAMPOS), CONSTRUCTOR Y MÉTODOS. (CU00623B)

LABORATORIO 3 ESTRUCTURAS REPETITIVAS WHILE / DO WHILE

CONCEPTOS BASICOS DEL LENGUAJE JAVA

Algoritmos y programas. Algoritmos y Estructuras de Datos I

11. Algunas clases estándar de Java (II)

LENGUAJE. Tema 2 Elementos de un programa

El concepto de función en programación se fundamenta en el concepto de función matemática 1

Capítulo 2: Recursividad.

Fundamentos de programación

Clase adicional 3. Métodos. Temas

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1.

EXAMEN PARCIAL 23 de Octubre de 2015 Programación I. Grado en Matemáticas e Informática ETSIINF UPM

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

Lo que necesitaremos para programar en Java, será un editor de texto o IDE y la JDK.

Funciones como Subprogramas en C++

Estructuras de Repetición (Repita para)

USO DE LOS OBJETOS JLABEL, JTEXTFIELD Y JBUTTON

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

Repaso de las características más importantes de la programación Java y su adaptación a Android

Conocimientos previos

Programación Orientada a Objetos Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC.

Metodología de la Programación II. Recursividad

Fundamentos de JAVA. Angel Kuri Enero, /2/2006

CAPÍTULO 3: PORCIONES Y NÚMEROS ENTEROS

Hoja de ejercicios del Tema 3

James Gosling, creador de Java

Estructuras de control repetitivas/iterativas

Programa Java. El lenguaje de programación Java. Comentarios. Programa Java. Palabras reservadas. Identificadores

Diseño de compiladores. Representación intermedia Ambientes de ejecución

La clase estándar Scanner

<tipo> Tipo de dato de los elementos del vector

Transcripción:

RECURSIVIDAD Y SOBRECARGA DE METODOS RECURSIVIDAD Un método es recursivo cuando se llama a si mismo ya sea directamente e indirectamente. Si un método recursivo se invoca con un caso base, simplemente devuelve un resultado. Si el método se invoca con un problema más complejo, divide el problema en dos o más partes conceptuales: una parte del método sabe como resolver y una versión un poco más pequeña del problema original. Dado que este nuevo problema se asemeja al problema original, el método emite una llamada recursiva para trabajar con el problema reducido. Para que la recursividad termine, cada vez que el método recursivo se llama a si mismo con una versión un poco más sencilla del problema original, la secuencia Docente: Ing. Martín Salcedo Quiñones Pagina: 1

de problemas cada vez menores debe convergir hacia el caso base. Cuando el método reconoce el caso base, devuelve el resultado a la llamada de método previa, y se inicia una secuencia de devoluciones que termina cuando la llamada del método original devuelve el resultado final. Recursividad vs Iteración Tanto la iteración como la recursión se basan en una estructura de control.: La iteración usa una estructura de repetición; la recursión una estructura de selección. Tanto la iteración como la recursión implican repetición: la iteración emplea explícitamente una estructura de repetición; la recursión logra la repetición mediante llamadas de métodos repetidas Tanto la iteración como la recursión incluyen una prueba de terminación; la iteración termina cuando deja de cumplirse la condición para continuar el ciclo; la recursión termina cuando se reconoce el caso base. PROGRAMAS RESUELTOS 1) Hacer un programa para calcular el factorial de un número. public class Recursividad01 public static int factorial(int n) if(n==0) return 1; else return n*factorial(n-1); Docente: Ing. Martín Salcedo Quiñones Pagina: 2

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int num; do System.out.print("Ingrese numero :"); num=integer.parseint(br.readline()); while(num<=0); System.out.println("El factorial es : "+factorial(num)); Interpretación de la programación: El método recursivo llamado factorial tiene un perímetro de tipo entero lalamado n. Se evalúa su valor si es igual cero usando la sentencia IF, si es falso se retorna el valor de n multiplicado con lo que retornará el método factorial al darle el valor de n disminuido en 1. Si observamos la figura que se coloca al incio de esta sesión: En la figura se observa el método Fact (que en nuestro programa se llama factorial) calcula el factorial de 3. En la primera llamada retorna 3 * Fact(3-1), el Fact(3-1) en la segunda llamada del método retorna 2 * Fact(2-1) y asi sucesivamente hasta que en la última llamada al aplicar Fact(1-1) devolverá el valor de 1. Docente: Ing. Martín Salcedo Quiñones Pagina: 3

En el método main se crea el objeto br de tipo BufferedReader (para lectura de datos), luego se declara la variable num de tipo entero. A través de la sentencia repetitiva se pide el ingreso del número para la variable num y sies un valor negativo se volverá a solictar nuevamente el ingreso de dicho número. Finalmente a través del método println se muestra el cálculo del método recursivo factorial teniendo como valor de entrada el contenido de la variable num. 2) Calcular la potencia de x elevado a la n en forma recursiva. x real y n entero positivo class recursividad02 public static double potencia(double x, double n) if(n==0) return 1; else return x*potencia(x,n-1); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n; double x; System.out.print("Valor de x :"); x= Double.parseDouble(br.readLine()); do System.out.print("valor de n : "); n=integer.parseint(br.readline()); while(n<=0); System.out.println(x+" elevado a la "+n+" es igual a "+potencia(x,n)); Docente: Ing. Martín Salcedo Quiñones Pagina: 4

3) Hacer un programa para que reporte los n términos de la serie de Fibonacci class recursividad03 public static int fibonacci(int n) if(n==1) return 1; else if(n==2) return 1; else return fibonacci(n-1) + fibonacci(n-2); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n,i ; do System.out.print("Número de terminos de la serie : "); n=integer.parseint(br.readline()); while(n<=0); for(i=1;i<=n;i++) System.out.print(fibonacci(i) + " "); System.out.println(); 4) Programa para calcular el máximo común divisor de dos números. class recursividad04 Docente: Ing. Martín Salcedo Quiñones Pagina: 5

public static int mcd(int a,int b) if(a%b==0) return b; else return mcd(b,a%b); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int x,y; do System.out.print("Ingrese primer numero :"); x=integer.parseint(br.readline()); while(x<=0); do System.out.print("Ingrese segundo numero :"); y=integer.parseint(br.readline()); while(y<=0); System.out.println("El mcd de "+x+" y "+y+" es : "+mcd(x,y)); 5) Programa para reportar un numero al reves class recursividad05 public static void reves(int n) System.out.print(n % 10); if( n/10!=0 ) reves(n/10); Docente: Ing. Martín Salcedo Quiñones Pagina: 6

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int num; do System.out.print("Ingrese numero :"); num=integer.parseint(br.readline()); while(num<=0); System.out.print("Numero al reves :"); reves(num); System.out.println(); 6) Programa para convertir un número de base 10 a base b (entre 2 y 9) class recursividad06 public static void conversionbase(int n, int b) if(n<b) System.out.print(n); else conversionbase(n/b,b); System.out.print(n%b); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int num,b; do System.out.print("Ingrese numero :"); Docente: Ing. Martín Salcedo Quiñones Pagina: 7

TECNICAS DE PROGRAMACION num=integer.parseint(br.readline()); while(num<=0); do System.out.print("Base a la que quiere convertir : "); b=integer.parseint(br.readline()); while(b<2 b>9); System.out.print("El numero "+num+" en base "+b+" es : "); conversionbase(num,b); System.out.println(); SOBRECARGA DE METODOS Java permite definir varios métodos con el mismo nombre en tanto dichos métodos tengan diferentes juegos de parámetros ( con base en el número y el orden de los parámetros). Esto se denomina sobrecarga de métodos. Cuando se invoca un método sobrecargado, el compilador de Java selecciona el método adecuado examinando el número, los tipos y el orden de los argumentos en la llamada. La sobrecarga de métodos suele utilizarse para crear varios métodos con el mismo nombre que realizan tareas similares, pero sobre datos de diferentes tipos. class sobrecarga01 public static int cuadrado(int x) return x*x; public static float cuadrado(float x) return x*x; Docente: Ing. Martín Salcedo Quiñones Pagina: 8

public static double cuadrado(double x) return x*x; int a=3; float b=3.4f; double c=12.5; System.out.println("El cuadrado de "+a+ " es : "+cuadrado(a)); System.out.println("El cuadrado de "+b+" es : "+cuadrado(b)); System.out.println("El cuadrado de "+c+" es : "+cuadrado(c)); EJECUTANDO LA PRIMERA APLICACION 1. Crea un proyecto denominado: Sesion03_Aplicaciones Docente: Ing. Martín Salcedo Quiñones Pagina: 9

Observa que debes crear la clase principal Recursividad01 dentro del paquete sesion03_aplicaciones. Luego dar clic en el botón de comando Terminar 2. Ahora se observa el entorno de NetBeans listo para colocar la programación de la primera aplicación. 3. Asi debe quedar luego de colocar las instrucciones de la primera aplicación. Docente: Ing. Martín Salcedo Quiñones Pagina: 10

4. Luego proceder a ejecutar la aplicación. Docente: Ing. Martín Salcedo Quiñones Pagina: 11

Posteriormente dar clic en Ejecutar archivo. Ingresar el valor numérico y se visualizará el factorial. Docente: Ing. Martín Salcedo Quiñones Pagina: 12