Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Xerelo

Páginas: [1]
1
Bueno gente, antes que nada muchas gracias por la ayuda en los anteriores problemas, estoy agradecido que pierdan minutos de su vida en mi.

Ahora pasando a un tema que me esta volviendo loco jejeje..

Es la primera vez que veo recursividad y yo solo pensaba que solo repetía código un bucle.

Pero veo que no...

Entonces esto me mosquea mucho... :asco:

A ver un método recursivo es hacer un ejercicio mas chico, hasta llegar a la base?

Por ejemplo el factorial de un número

3! = 3 * 3 * 3

Con un bucle for lo haría así:

Código: [Seleccionar]
Public int GetFactorialConCiclo(int n){
int acomulado = 1;
for(int i = n; i >= 1;i--){
acomulado * = 1;
}
return acumulado;

}


Pero no sabía yo que se podía hacer esto sin usar un solo bucle, solamente un método y llamandolo en el método princiapal :stress:


Que sería asi:

Código: [Seleccionar]
public int GetFactorialRecursivo(int n){
if(n == 0){
return 1;
}
else{
return n * GetFactorialRecursivo(n-1);
}
}

El segundo es mas limpio, pero tengo muchas dudas

No entiendo la recursividad, tampoco entiendo por que el bucle actúa como un bucle,tampoco entiendo como sabe el mismo método que tiene que llegar hasta el final del numero factorial...

Si me lo explicas te estaré agradecido, si vas a poner un enlace a otra dirección web, porfavor que sea en español

Gracias.

2
Bueno, antes que nada, gracias por la ayuda que me ofrece este sitio, estoy agradecido.

Ahora vamos al lío:

Ejercicio:

El problema planteado consiste en hallar la edad en años a partir de la fecha de nacimiento y la fecha actual.


Aquí mi código:

Subclase Fecha_Años:

Código: [Seleccionar]
package poo;

public class Fecha_Años {

int dia_Nacimiento;
int mes_Nacimiento;
int año_Nacimiento;

int dia_Actual;
int mes_Actual;
int año_Actual;

public Fecha_Años(int dia_Nacimiento,int mes_Nacimiento,int año_Nacimiento,int dia_Actual,int mes_Actual,int año_Actual){
this.dia_Nacimiento = dia_Nacimiento;
this.mes_Nacimiento = mes_Nacimiento;
this.año_Nacimiento = año_Nacimiento;

this.dia_Actual = dia_Actual;
this.mes_Actual = mes_Actual;
this.año_Actual = año_Actual;


}

public int Calcular_Años(){

int Edad_Años = 0;

if(dia_Actual < dia_Nacimiento && mes_Actual <= mes_Nacimiento){
Edad_Años = (año_Actual - año_Nacimiento)-1;
}
if(dia_Actual < dia_Nacimiento && mes_Actual > mes_Nacimiento){
Edad_Años = (año_Actual - año_Nacimiento);
}
if(dia_Actual >= dia_Nacimiento && mes_Actual >= mes_Nacimiento ){
Edad_Años = (año_Actual - año_Nacimiento);
}
if(dia_Actual >= dia_Nacimiento && mes_Actual < mes_Nacimiento ){
Edad_Años = (año_Actual - año_Nacimiento)-1;
}
   


return Edad_Años;
}



}

Clase padre Configurar_FechaAño:

Código: [Seleccionar]
package poo;

public class Configurar_FechaAño {

public static void main(String[] args) {
// TODO Auto-generated method stub

Fecha_Años ConfigurarFecha = new Fecha_Años(2,3,1995,2,3,2015);

System.out.println("La edad en años es: "+ConfigurarFecha.Calcular_Años());
}

}

Aquí va la pregunta:

¿Como ves el algoritmo que uso? es decir, están bien definido los nombres de las clases? uso bien el constructor? ¿tu lo harías de otra forma? ¿Si no uso getter y setters esta mal la clase? etc etc...

En definitiva si esta bien o mal y lo que este mal decirmelo

Gracias a todos los que contesten:corazon:

3
Bueno quiero saber si el concepto que tengo de polimorfismo es el adecuado o no...

A ver..

Si tenemos 2 clases y A es la superclase y b es la subclase

A y B

y esas 2 clases tienen el mismo Método, por ejemplo llamado: DimeEdad();
y en la clase A el método DimeEdad devuelve un 3
y en la clase B el metodo DimeEdad devuelve un 4

Lo que hace el polimorfismo es(esto es un ejemplo muy abstracto):

A Prueba1 = new B();


y bueno hay lo que mostraría es un 4  no?

Y mi pregunta es, si todo lo que dije es cierto ¿Para que sirve el polimorfismo? que es lo que lo hace importante?

Si no es así podrías intentarlo explicarmelo porfavor?.

4
Ogramar compañero, pero lo que realmente quiero saber es:

Si el paradigma que uso en esa clase esta bien o tu lo harías de otra forma? es decir harias mas métodos o algo? o esta bien como la tengo yo?


5
Nadie contesta mi pregunta porfavor?

6
Hola, yo no lo llamaría un getter porque no sirve para recuperar un atributo de la clase ni para recuperar algo. Lo llamaría "método tipo función", que hace unos cálculos y devuelve un resultado en base a esos cálculos. Salu2

Hola pero no es obligatorio usar getter y setters en los programas? eso es lo que confunde un poco. ???

Yo hice este programa, y en este programa con un solo método me sirve... y quiero saber si esta bien creada la clase si ves bien el paradigma que uso:

Código: [Seleccionar]
package Timing;

public class Peliculas_Datos {
private int minutos;
private int tamaño;
private int velocidad;

public Peliculas_Datos(int minutos,int tamaño,int velocidad){
this.minutos = minutos;
this.tamaño = tamaño;
this.velocidad = velocidad;
}
public String Pelicula_Entrada_Lectura(){ // Getter
int tamaño_total = 60 * minutos;
double tamaño_kb = tamaño * 1000;
int pelicula_tamaño_kb = velocidad * tamaño_total;
double porcentaje = 0;
if(pelicula_tamaño_kb > tamaño_kb){

return "Pelicula se ve sin cortes";
}else{
tamaño_kb = (pelicula_tamaño_kb / tamaño_kb)*100;
porcentaje = (int)(tamaño * tamaño_kb) / 100;
porcentaje = tamaño - porcentaje;
porcentaje = (porcentaje / tamaño)*100;
return "Pelicula se ve con cortes, tienes que esperar hasta el porcentaje: "+(int)porcentaje+"%";

}

}





}

Y esta es la clase principal:

Código: [Seleccionar]
package Timing;

public class Pelicula_Configurar_Datos {

public static void main(String[] args) {
Peliculas_Datos Configurar_Datos = new Peliculas_Datos(120,5200,1000);
System.out.println(Configurar_Datos.Pelicula_Entrada_Lectura());

}

}

¿Como ves el paradigma? lo hago bien?

7
Código: [Seleccionar]
package Timing;

public class Peliculas_Datos {
private int minutos;
private int tamaño;
private int velocidad;

public Peliculas_Datos(int minutos,int tamaño,int velocidad){
this.minutos = minutos;
this.tamaño = tamaño;
this.velocidad = velocidad;
}
public String Pelicula_Entrada_Lectura(){ // Getter
int tamaño_total = 60 * minutos;
int tamaño_kb = tamaño * 1000;

if(tamaño_total > tamaño_kb){
return "Pelicula se ve sin cortes";
}else{
return "Pelicula se ve con cortes";
}

}





}

Amigos tengo una duda, quiero saber si el metodo Pelicula_Entrada_Lectura es Getter o setter o si  combine getter y setter en el mismo método jejeje..

Yo creo que es Getter, por que no modifico los campos

Estoy en lo cierto no? :P

ojo: El programa todavía no esta terminado, solo quiero saber eso.

8
Aprender a programar desde cero / Re:Empezar en java Duda
« en: 02 de Marzo 2015, 21:11 »
Hola amigo, pero ese curso  es el curso de java del basico hasta el avanzado? o hasta que nivel es?

9
Bueno pues eso, no soy nuevo en Java, ya había programado antes... quiero empezar a programar código, es decir no quiero Pseucodigos para entender la programación, por que ya la entiendo...

Veo que los cursos estan catalogados por nivel no?

Es decir, estan el basico el normal y el avanzado si es así ¿podrian facilitarmelo porfavor?

Páginas: [1]

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".