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 - Alex Rodríguez

Páginas: 1 ... 68 69 70 71 72 [73] 74 75 76 77 78 ... 93
1441
Aprender a programar desde cero / Re:ENTREGA CU00634B
« en: 28 de Agosto 2014, 09:46 »
Hola, está todo bien excepto el apartado k

Para los valores: valores A = 5, B = 3, C = -12

k) C / B == -4 es verdadero y tú has indicado false.

Saludos

1442
Aprender a programar desde cero / Re:Practica (CU00619B)
« en: 28 de Agosto 2014, 09:22 »
Y ya que estoy por aquí, comentarte que el ejercicio lo veo bien. Sigue avanzando con el curso, a medida que vayas haciendo más ejercicios irás cogiendo más soltura. Saludos,

1443
Aprender a programar desde cero / Re:Practica (CU00619B)
« en: 28 de Agosto 2014, 09:18 »
Por favor no crear temas duplicados. Para enviar una nueva redacción de un ejercicio, continuar en el mismo tema abierto. El tema duplicado lo he unificado aquí. Saludos,

1444
Aprender a programar desde cero / Re:ENTREGA:CU00633B
« en: 27 de Agosto 2014, 17:38 »
Hola, el código funciona bien pero hay muchos detalles a comentar y corregir.

- Lo primero (ya se ha comentado varias veces en el foro pero lo repetimos) : cuando se vaya a pegar código pulsar el botón # del editor del foro. Una vez aparezcan las etiquetas [ code ] ... [ / code] pegar el código entre esas dos etiquetas.

- Cuando se tenga el mensaje preparado pulsar en Previsualizar para ver si todo sale bien. Si todo está bien pulsar en publicar, si no corregir y volver a pulsar en previsualizar.

Sobre el código en sí:

- El nombre de la clase no es adecuado por dos cosas: los nombres de clase deben empezar en mayúsculas, no en minúsculas (no es obligatorio pero así lo hacen todos los programadores). Y por otro lado el nombre de clase debe ser alusivo a lo que representa la clase: esta clase representa un médico, por tanto el nombre de clase podría ser Medico ó MedicoConCalculador pero no calculoedad porque eso no indica qué representa la clase.

- En el constructor: lo más normal es iniciar los valores a 0 si son numéricos, "" si son Strings, false si son booleanos, etc.

Por tanto en vez de:

casado=true ;
    edad=29;
    dd=5;

Lo más normal sería:

casado=false ;
    edad=0;
    dd=0;


Los nombres de métodos deben intercalar mayúsculas cada vez que empieza una palabra. Por ejemplo debe ser getNombre en lugar de getnombre.

Los nombres de métodos deben ser descriptivos de lo que hace el método. getced no indica bien qué es lo que hace el método. Mejor sería getCedula, así queda más claro.

Los prefijos set y get están reservados para métodos que establecen o devuelven atributos.

El nombre setmult no es adecuado porque no es un método para establecer un atributo.

En este método tienes esto:

public void  setmult()
{
    int aa;
    aa=edad%5;
    dd=5-aa;
   System.out.println("FALTA "+ dd +" AÑOS PARA QUE SEA MULTIPLO DE 5");
   
}

aa es un nombre de variable que no describe para qué sirve esa variable. Tienes que intentar que los nombres sean descriptivos, por ejemplo en vez de aa poner añosQueFaltanParaMultiplo5

Lo mismo ocurre con dd

Otra cosa: dd es un valor que se calcula a partir de la edad. dd no debe ser un atributo de la clase. Un médico debe saber su edad, debe llevar esa información (como atributo), pero no tiene por qué llevar dd, eso no es importante para representar al médico.

Repitiendo ejercicios y haciendo más te irás acostumbrando a muchas de las cosas comentadas, adelante y a por ello

1445
Hola Thieba, las cosas a corregir son las siguientes: public debe escribirse en minúsculas; Cuando escribes varias palabras la primera es minúsculas y cada vez que empiece una nueva debe ser mayúsculas, por ejemplo getDuracionCancion; el último método que has puesto sería public void setAñadirCancion (String titulo, int duracionCancion) y es de tipo procedimiento. ¿Por qué es un procedimiento? Porque no devuelve nada, simplemente se encarga de recibir una información que va a ser almacenada, pero no tiene que devolver una información que se le pide.

No te preocupes si te cuesta, trata de seguir avanzando y haciendo los ejercicios. Si no sabes cómo hacerlos pregunta para que te echemos una mano o te digamos lo que tienes que repasar.

Saludos

1446
Creo que ya te han respondido aquí: https://www.aprenderaprogramar.com/foros/index.php?topic=1161

Y una vez más, recordar que no se dupliquen las preguntas en distintos foros o un moderador podrá bloquear al usuario duplicador...

1447
Hola juan, como veo que eres nuevo te recuerdo algo que solemos repetir:

Para pegar código usa el botón # del editor del foro, lo pulsas y una vez te aparece [ code ] ... [ / code] pegas el código entre estas dos etiquetas, luego pulsas previsualizar y si se ve correcto pulsas en "publicar".

Y en los títulos de los temas no poner algo genérico como "ayuda con codigo" sino algo lo más específico posible como "ayuda codigo programa C++ gestion libros biblioteca" o algo así... de esta manera los temas resultan localizables e identificables, si no lo hacemos así nos perdemos todos.

Saludos.

1448
Hola toni, respuestas y código las veo correctas.

A la pregunta: ¿Es posible sin utilizar una invocación a super ni un método get?


Podríamos responder con que es tanto válido:

{ return 925 + super.añosConsolidados * 33.25d + 47.80d * añosEmerito; }

Como:

{ return 925 + añosConsolidados * 33.25d + 47.80d * añosEmerito; }


Esto siempre que añosConsolidados esté declarada como protected, si se declara private no es posible el acceso de una forma ni de otra, ya que aparecería el mensaje de error "añosConsolidados has private access in Profesor"

Saludos

1449
Bueno, cada cual que cierre o que deje los temas abiertos según su parecer. No quiero ponerle medallas a BlueJ ni quitárselas, ni digo que pueda ser mejor o peor que otros ides. Yo por mi parte el tema lo dejo abierto porque cualquier cosa que cierre (y más en programación) la tengo que volver a abrir al cabo de un tiempo así que prefiero no cerrar nada...  ::)

1450
Aprender a programar desde cero / Re:Quiero aprender a programar
« en: 06 de Agosto 2014, 23:48 »
Hola, también te recomendaría que pienses como opción en el curso tutorizado on-line de fundamentos de programación nivel I que ofrecemos en esta web (ver http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=64&Itemid=87). Este curso es de pago, pero tienes un programa de estudios bien definido y un tutor que te guiará. El interés de este curso es no perderse en una maraña de conceptos y contenidos, sino tomar la base con la ayuda de un libro pensado para el aprendizaje de los fundamentos de programación y de alguien experimentado y que eso sirva de trampolín para después seguir progresando de forma autónoma. Es cierto que muchas personas aprenden de forma autodidacta, pero la opción de contar con este tipo de ayuda es algo que conviene valorar. No existe una solución mágica igual para todas las personas, cada uno debe pensar que es lo más adecuado para sí mismo. Saludos.

1451
Hola, ya que se habla de BlueJ quiero hacer una pequeña aportación. BlueJ se eligió como entorno de desarrollo para el curso java desde cero por varios motivos: es un entorno con fines educativos, tiene muy buenas posibilidades para la didáctica de la programación orientada a objetos, y es ligero comparado con otros ides. Al mismo tiempo, tiene toda la potencia de Java (ni más ni menos que otros ides). Por eso y después de varias discusiones respecto a qué podía ser lo más conveniente se eligió BlueJ. Es cierto que BlueJ en algún momento, si una persona continúa progresando como programador, deberá abandonarse a favor de otros ides con carácter profesional que aportan ciertas potencialidades de las que carece BlueJ. Pero creo que para el aprendizaje es ideal y que casi todo el que haya aprendido con BlueJ quedará agradecido de haber encontrado ese entorno... Saludos.

1452
No, al título no le veo nada de malo... Es decir, cualquiera puede poner un título y hablar de lo que quiera, por ejemplo podríamos hablar del hacking de cuentas de facebook o de la gente que se dedica a ello si quisiéramos, y de las técnicas de hacking que se utilizan para ello. Pero una cosa es hablar sobre algo, que sin pasarse no tiene nada de malo, incluso podrías exponer que es un medio para detectar fallos de seguridad, y otra cosa es proponer cometer un delito, una inmoralidad, promoverlos, etc. Mucha gente se piensa que internet es el todo vale...  :-\



1453
Hola, como comenta dongo este mensaje sobra en un sitio como este (y mucho). A todos quienes quieran colaborar en evitar mensajes de este tipo les indico cómo se puede enviar una notificación a un moderador:

En el mensaje correspondiente, buscar el enlace al pie que pone "Reportar al moderador" y pulsar sobre él. En la siguiente ventana se pide introducir un comentario, basta con indicar por ejemplo "spammer" si es alguien que en vez de colaborar se dedica a molestar o a actividades ilegales, etc. Ese mensaje llegará a un moderador y lo revisará para eliminarlo y bloquear al usuario si es necesario.

Saludos.

1454
Hola, dongo comentarte que vb6 es una versión que ya no tiene soporte de microsoft ya que ha sido reemplazada por nuevas versiones (Visual Studio con VB 2005, 2008, 2010, 2012, etc.), sin embargo fue vb6 tuvo tanta aceptación que aún sigue siendo utilizado por miles de personas y empresas. Se puede instalar siguiendo las instrucciones de: https://www.aprenderaprogramar.com/foros/index.php?topic=286

A Jigsaw comentarle que trate de dividir los temas de forma que no se mezclen cosas, por ejemplo abrir un tema sobre una cuestión concreta de visual basic y otro tema sobre una cuestión concreta de php, si no lo hacemos así es casi imposible localizar los temas dentro del foro. Este tema ya está abierto así y da igual, pero si en el futuro no divide los temas los moderadores podremos bloquearle  :(. También que explique con el mayor detalle posible cuál es el problema, ya que revisar un proyecto puede llevar muchas horas, tendría que especificar concretamente cuál es el problema, en qué archivo y en qué líneas está el problema, de otra forma imposible revisar... Espero se pueda comprender  ::)

Saludos

1455
Curioso coincidir respondiendo al mismo tiempo  ::)


1456
Creo que al mismo tiempo que escribía por otro lado te ha respondido dongo, creo que en su respuesta tienes más información ya que como ves te explica la posibilidad de conversión. Y además dice una cosa muy cierta: para una lista de 12 meses es más lógico usar un array de tamaño fijo porque los de tamaño variables están pensados para cuando la colección puede aumentar y a no ser que como dice dongo un meteorito nos impacte los 12 meses van a ser fijos.

Saludos

1457
Hola, el código está todo bien aunque creo haber visto un marziano que no dice que haya que volver a introducir el mes.

Te voy a aclarar que array estático en el sentido en el que se usa en el curso es <<una colección de tamaño fijo a la que denominamos array estático, arreglo estático, formación o vector>>

String [] listaDeMeses = new String[12]; sería lo que se llama un array estático en el sentido de que tiene un número de elementos fijo. Es el array "más tradicional", digamos que de la programación de toda la vida.

ArrayList<String>lista = new ArrayList<String> (); sería lo que en el contexto del curso se llama una colección que puede considerarse un array dinámico: colección donde el número de elementos puede crecer y decrecer dinámicamente, no es fijo.  el ArrayList es dinámico, redimensionable, flexible, etc. al igual que otras clases de colecciones del api de java.

Al declarar String [] listaDeMeses = {"enero","febrero","marzo"... estás declarando un array estático, el número de elementos es fijo. Desde que uses [] piensa en que estarás usando arrays (o matrices) estáticas.

En muchas ocasiones se pueden usar tanto arrays estáticos como dinámicos y no tiene demasiada importancia usar uno u otro. Sin embargo, de modo general, podríamos decir que a no ser que usar un array dinámico conlleve alguna ventaja, será mejor usar uno estático. ¿Por qué? Porque la operación con arrays estáticas será más rápida y requerirá menos espacio de memoria, etc. , es decir, a igualdad de condiciones te recomendaría que uses el estático. Pero ten en cuenta que muchas veces dará igual uno que otro, y en otras ocasiones será recomendable usar uno dinámico.

En este ejercicio lo que se pretende es que se usen arrays estáticos (el propio enunciado indica mesSecreto = mes[9] ... ) pero también se puede resolver con arrays dinámicos pej. con ArrayList.

Saludos


1458
Hola, lo primero que no veo claro es por qué declaras abstract class Inmobiliaria en lugar de public abstract class Inmobiliaria

Después tengo que decirte que tus preguntas van en la buena dirección: estás viendo que hay una falta de coherencia como esa creación de un Array para cada tipo de inmueble.

El problema que veo, no queriendo criticar sino ayudar, es que lo que ocurre en el fondo es que están manejando conceptos que no acaban de entender y eso es algo así como pretender caminar en la oscuridad sin darse golpes contra las paredes. Sería más razonable buscar una linterna y aprender cómo usarla para poder avanzar. Inicialmente te puede retrasar un poco respecto a los compañeros que avanzan dándose porrazos, pero en cuanto aprendas a usar la linterna los alcanzarás y dejarás atrás. Eso en Java vendría siendo como aprender las bases de Java, por eso te hacía referencia a lo importante que es un curso sobre los fundamentos de Java.

Hablar de fundamentos llevaría mucho tiempo y eso es una tarea que tendrás que pensar tú mismo si acometes. Centrándonos en el problema que comentas, los objetos Inmobiliaria sí pueden y deben conocer métodos... Para ello se utilizan distintas técnicas, quizás es largo de explicar y ver algo de código sea más útil.

Aquí te dejo un ejemplo de cómo se puede acceder a métodos de subclases de una clase abstracta, básicamente dos técnicas (habría más, pero creo que éstas son válidas): sobreescritura de métodos abstractos y uso de instanceof. En el caso de sobreescritura, el compilador determina dinámicamente qué método es el que debe aplicar. Con instanceof, debes hacer casting para acceder al método de interés. Espero te sirva de ayuda...

CLASE INMOBILIARIA

Código: [Seleccionar]

public abstract class Inmobiliaria {
   protected String nombre;
   protected String direccion;
   protected float metros;
   protected int dormitorios;
   protected String estado;
   protected static int cod = 0;
 
   //constructor
   public Inmobiliaria(String nombre, String direccion, float metros, int dormitorios, String estado) {
        this.nombre = nombre; this.direccion = direccion;
        this.metros = metros; this.dormitorios = dormitorios;
        this.estado = estado; cod++;
    }
   
   protected abstract double precio();
   protected abstract boolean ascensor();
}


CLASE PISO
Código: [Seleccionar]
public class Piso extends Inmobiliaria{
   
    private String ubicacion;
    private String balcon;
    private int planta;
    private static final float pvpMetro = 300;
    //constructor
    public Piso(String nombre, String direccion, float metros, int dormitorios, String estado,String ubicacion, String balcon, int planta) {
        super(nombre, direccion, metros, dormitorios, estado);   
        this.ubicacion = ubicacion;
        this.balcon = balcon;
        this.planta = planta;
    }

    @Override
    protected double precio() {
    double precioTotal = 0;
      precioTotal = this.metros*pvpMetro;
      return precioTotal;
    }
   
    public boolean ascensor(){
        System.out.println ("Soy un ascensor piso - método sobreescrito");
        boolean ascensor = false;
        return ascensor;
    }
   
    public boolean ascensor2(){
        System.out.println ("Soy un ascensorian2 de piso - Método sólo de piso");
        boolean ascensor2 = false;
        return ascensor2;
    }
}

CLASE PISOS2
Código: [Seleccionar]
public class Pisos2 extends Inmobiliaria{
   
    private String ubicacion2;
    private String balcon2;
    private int planta2;
    private static final float pvpMetro = 300;
    //constructor
    public Pisos2(String nombre, String direccion, float metros, int dormitorios, String estado,String ubicacion, String balcon, int planta) {
        super(nombre, direccion, metros, dormitorios, estado);
        this.ubicacion2 = ubicacion;
        this.balcon2 = balcon;
        this.planta2 = planta;
    }

    @Override
    protected double precio() {
    double precioTotal = 0;     
      precioTotal = this.metros*pvpMetro;   
      return precioTotal;
    }
   
    public boolean ascensor(){
        System.out.println ("Soy un ascensor pisos2");
        boolean ascensor = false;       
        return ascensor;
    }
   
    public boolean dimeTrue() { return true;}   
}

CLASE TEST
Código: [Seleccionar]
import java.util.ArrayList;
import java.util.Iterator;
public class Test{
    public static void main (String [] args) {
        Inmobiliaria i1 = new Piso("juan", "calle 1", 3.22f, 4, "vendido", "norte", "si", 2);
        Inmobiliaria i2 = new Pisos2("jose", "calle flu", 6.22f, 2, "comprado", "sur", "no", 7);
        i1.ascensor();
        i2.ascensor();
        System.out.println ("Hemos accedido a los métodos ascensor de objetos Inmobiliaria...");
        ArrayList <Inmobiliaria> lista1 = new ArrayList<Inmobiliaria> ();
        lista1.add(i1);
        lista1.add(i2);
        Iterator<Inmobiliaria> it = lista1.iterator();
        while ( it.hasNext() ) {           //Utilizamos el método hasNext de los objetos tipo Iterator
            Inmobiliaria m1 = it.next();

            System.out.println ("Analizando elemento... " );
            m1.ascensor();                //Utilizamos el método next de los objetos tipo Iterator
            if (m1 instanceof Piso) {((Piso)m1).ascensor2();} else {
                System.out.println ("El objeto analizado no es tipo Piso");
            }
        }   
    } 
}

Pequeño comentario: la clase Piso y la clase Pisos2 heredan de la clase abstracta inmobiliaria.

En la clase test creamos un array de objetos Inmobiliaria y accedemos a los métodos propios de Piso y Pisos2...

1459
Aprender a programar desde cero / Re:Seis cocos
« en: 31 de Julio 2014, 00:44 »
Hola, aquí te dejo nuestra sugerencia: http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=57&Itemid=86

Depende del nivel de partida y de los objetivos, pero tienes donde elegir.

Saludos.

1460
Aprender a programar desde cero / Re:Entrega Ejercicio CU00665B
« en: 31 de Julio 2014, 00:40 »
Hola, el código funciona bien y resuelve lo que pide el ejercicio. Lo que te diría que hay que mejorar es lo siguiente:

ListaCantantesFamosos lista1 = new ListaCantantesFamosos("Cantantes introducidos por usuario");

¿Qué es el parámetro? Es el nombre de la lista de cantantes que estás creando

Sin embargo en el constructor de la clase ListaCantantesFamosos escribes lo siguiente:

public ListaCantantesFamosos(String nombreCantante)

cuando sería más correcto

public ListaCantantesFamosos(String nombreDeLaLista) ó public ListaCantantesFamosos(String tituloDeLaLista)

El problema de poner ahí nombreCantante es que crea confusión: una persona que revise el código no entenderá qué es lo que quieres hacer. El código debe ser claro y consistente, así es como lograrás que sea "bien valorado" por quien lo revise. En este caso tienes una inconsistencia...

Saludos.


Páginas: 1 ... 68 69 70 71 72 [73] 74 75 76 77 78 ... 93

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".