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 - Ogramar

Páginas: 1 ... 81 82 83 84 85 [86] 87 88 89 90 91 ... 100
1701
Hola toni, para el CU00674 con incluir el código de las diferentes clases sería suficiente. Sobre el CU00675 lo veo todo bien, las preguntas ¿Qué tipo de datos almacena el array? ¿Qué tipo de datos almacena el ArrayList? veo que las has respondido dentro del código, así que perfecto.

Saludos!

1703
Hola, el código funciona bien. Sólo hay una pequeña cosa indebida: if (i > entradaTeclado.length()) { break;}

Normalmente break no debe usarse (excepto casos excepcionales). El control normalmente debe ir de la mano de las variables de control del bucle.

Además en este caso no es necesaria esa instrucción, con lo cual incluirla sería considerado un error o mala práctica del programador. Saludos!

1704
Hola, lo he chequeado y todo bien! Como dices al principio puede costar un poco comprender el funcionamiento de los ciclos e instrucciones pero a medida que más programes más agilidad irás teniendo. Saludos!

1705
Aprender a programar desde cero / Re:Revision Ejercicio CU00640B
« en: 19 de Julio 2014, 15:50 »
Hola, está todo bien, lo único que tendrías que mejorar es algunos nombres en vez de getcasado debes escribir getCasado.

Sobre los constructores es como dices, puedes tener tantos constructores con distintos parámetros como quieras, y puedes usar cualquiera de ellos para crear objetos. Aunque los constructores tengan el mismo nombre cada constructor creará objetos diferentes según hayas especificado en ellos. Saludos!

1706
Aprender a programar desde cero / Re:Entrega ejercicio CU00657B
« en: 19 de Julio 2014, 15:46 »
Hola! El código está bien, aunque contiene un defecto: duplicas el código de comprobación de la longitud de la cadena. Duplicar código se considera una mala práctica de programación, nunca se debe duplicar (excepto casos excepcionales) ¿Cómo se mejoraría este código? Por un lado comprobar la longitud y crear un fragmento del mensaje de respuesta, por otro lado comprobar si comienza por a y crear el otro fragmento del mensaje de respuesta. Finalmente unir los dos fragmentos y mostrar el resultado final. De esta manera mejorarías el diseño evitando la duplicación. Saludos!

1707
Aprender a programar desde cero / Re:Ejercicio! entrega CU00640B
« en: 19 de Julio 2014, 15:40 »
Hola el código está bien; te recomendaría que mejoraras algunas cosas. Nombres de atributo como v_nombre son más confusos que simplemente nombre, por tanto mejor cuanto más simple. Y en los constructores que no reciben parámetros normalmente los valores booleanos se inicializan a false en vez de a true, es decir, v_casado = false; en lugar de v_casado = true; (excepto si por algún motivo específico se considera necesario inicializar a true).

Saludos!

1708
Hola! El código debes ponerlo entre medio de las etiquetas [ code ] ... [ / code], no después porque entonces no se pega como código.

He chequeado tu código y está bien, la única cosa que tendrías que corregir es que los nombres de clases deben empezar por mayúsculas, mientras que los nombres de atributos deben empezar por minúsculas.

Por ejemplo en vez de String Titulo; debe ser String titulo;

De resto todo bien. Saludos!

1709
Hola! Para pegar el código pulsa el botón # del editor del foro y pégalo entre las etiquetas [ code ] ... [ / code] que te aparecerán.

El programa planteado parece sencillo pero tiene sus pequeñas complicaciones. Para que funcione correctamente es recomendable:

Inicializar las variables

Para obtener un valor decimal tipo double ( o float si se prefiere) debemos hacer casting (convertir) uno de los valores enteros al tipo decimal, por ejemplo: return (double)a/b;

El código quedaría así:

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int numero1=0;;
int numero2=0;
double resultado=0.0;

double division(int a,int b); /*PROTOTIPO DE FUNCION*/

int main() {
    printf("Introduce un numero entero: ");
    scanf("%d", &numero1);
    printf("Introduce otro numero entero: ");
    scanf("%d", &numero2);
    resultado = division(numero1,numero2); /*llama a la funcion y pasa los argumentos numero1 y numero2*/
    if (resultado!=-1) {
    printf("\nla division de %d entre %d es %lf", numero1,numero2,resultado);}
}

double division(int a,int b) { /*DEFINICION DE FUNCION*/
    if(b != 0) {return (double)a/b;}
    else {
        printf("La division entre cero no esta permitida. ");
        return -1;
    }
         /*regresa la division de los dos numeros introducidos*/
    return 0;
}

Saludos!

1710
Aprender a programar desde cero / Re:Revision Ejercicio CU00639B
« en: 18 de Julio 2014, 10:17 »
El constructor sirve para darle unos valores iniciales a los atributos. Los setters sirven para establecer los valores de los atributos en cualquier momento, pudiendo cambiar los valores iniciales. Si no tienes métodos setters, el objeto quedará con unos valores fijos de los atributos (los que se hayan especificado en el constructor). Saludos!

1711
Aprender a programar desde cero / Re:Revision ejercicio CU00638B
« en: 18 de Julio 2014, 10:15 »
Hola, para pegar código usa por favor el botón # del foro y pega el código entre las etiquetas [ code ] ... [ / code]

En el código tienes mal esto: void  dimeSiMotorEsParaAgua()

Si el método va a devolver algo no puedes poner void, tienes que poner lo que va a devolver, por ejemplo:

public boolean dimeSiMotorEsParaAgua()

No olvides poner public.

Siempre tienes que pensar si el método va a devolver algo (en ese caso has de poner el tipo de lo que devuelve) o no ( en ese caso has de poner void)

Saludos!

1712
Ahora sí está correcto. En el código sí puedes alterar el orden (es decir, puedes poner los getters y los setters delante o detrás que te va a funcionar igual). Lo que sí debes hacer es cuando vayas a probar el programa, primero establecer el valor de los atributos invocando los métodos set sobre los objetos creados en BlueJ para después invocar otros métodos, si no lo haces así el objeto no tiene valores de atributos y los otros métodos no responderán bien. Saludos.

1713
Hola, viendo los cambios:

Reorganización del código y las clases: bien.

Nombres de las clases: intenta mejorarlos, por ejemplo NumeroValido no dice tanto sobre lo que hace la clase como ValidadorNumero (indica que la clase valida) o ComprobadorNumero (indica que la clase comprueba).

Sobre la pregunta: ¿La existencia de este método desvirtúa la 'concreción' de la clase?

Este método no mantiene cohesión: está haciendo al mismo tiempo el trabajo de un método set y otro proceso. Un método no debe mezclar cosas. Creo que donde estás fallando es en pensar que una clase siempre tiene que tener atributos y trabajar en base a sus atributos. En esta clase, que podríamos llamar ValidadorNumero, no tienes por qué usar atributos. La tarea de la clase va a ser recibir un número (desde fuera), realizar ciertas operaciones con ese número y devolver un resultado. Por tanto te basta con recibir la información desde fuera, no necesitas atributos. No todas las clases han de tener atributos. Aunque normalmente una clase tiene atributos y métodos, algunas clases son para operar con información que reciben desde fuera y pueden carecer de atributos. Es más lógico eliminar el atributo, eliminar los constructores, eliminar los getters y setters y dejar únicamente el método devuelve (que tampoco es un buen nombre, sería mejor comprobarNumero por ejemplo. El método devuelve trabajaría recibiendo un parámetro y con ese parámetro trabaja, no tiene por qué trabajar con un atributo de la clase.

Saludos!

1714
No parece normal, puede ser que no tengas bien instalado el jdk o algún problema de configuración. Sigue las instrucciones del curso desde el principio para comprobar que tengas bien configurado todo. Saludos.

1715
Hola, tienes el código bien menos el método setdimeTipoMotor donde hay algunos errores.

El primer error es el nombre del método, no debe ser setdimeTipoMotor porque set es un prefijo que indica que el método es para establecer el valor de un atributo (información) de la clase. En este caso no es para establecer el valor de un atributo sino para hacer una comprobación, el nombre del método debe ser tal como dice el enunciado <<Crea un método tipo procedimiento denominado dimeTipoMotor() >>

Otro error es que pongas un parámetro para el método:

   public void setdimeTipoMotor(int ValorMotor){//4
       
        motor=ValorMotor;
   
        switch(motor){//5

Esto no es correcto. Se trata de que el objeto tendrá una información (que contiene él mismo) almacenada. Si la información está almacenada no hay que pasársela como parámetro al método, ya que se puede recuperar sin necesidad de recibirla como parámetro.

Por tanto debes basarte en la información almacenada en el objeto así:

 public void dimeTipoMotor(){
     switch (tipoBomba){


Haciendo esas correcciones ya lo tendrías todo bien. Saludos!

1716
Aprender a programar desde cero / Re:Revision Ejercicio CU00636B
« en: 17 de Julio 2014, 09:37 »
Hola, a mí me funciona bien y el código lo veo bien. Para hacer las comprobaciones primero tienes que establecer el valor de diametro y grosor usando los métodos set, y después invocar el método comprobarDimensiones. Si no lo haces en este orden el objeto no tiene diametro y grosor y no se pueden hacer las comprobaciones. Saludos!


1717
Hola! Cuando vayas a pegar código pulsa el botón # que aparece en el editor del foro y pega el código entre [ code ] ... [ / code]

A mí no me aparece mensaje de error, ni incluyendo método main ni sin incluirlo. ¿Estás usando BlueJ para escribir el código o estás usando otro programa?


1718
Hola, lo he chequeado y el programa va bien. No me parece del todo acertado en la clase Circulo tener métodos para calcular el área del círculo y la longitud de circunferencia según el valor del atributo radio del objeto y por otro lado según un parámetro recibido por otro método. Una clase debe tener cohesión: representar algo concreto, no varias cosas a la vez, por tanto en mi opinión deberías tener una clase que se basa en su atributo y no en parámetros recibidos, o al revés. Pero no una clase que mezcla ambos conceptos. Podrías tener dos clases, una Circulo (para basarse en sus atributos) y otra GestorCirculos (para recibir parámetros), así quedaría claro qué hace cada clase.

En la clase con el método main tienes un método numeroValido para comprobar si una entrada es un número válido. Desde el momento en que esto no forma parte de la gestión del flujo del programa, sería mejor tenerlo en una clase independiente que podrías llamar ComprobadorNumeroValido.

La respuesta a la pregunta es como dices si es constante no se puede modificar

Saludos!

1719
Aprender a programar desde cero / Re:CU00623B
« en: 05 de Julio 2014, 10:12 »
Hola, todo está correcto, la única recomendación que te diría para que la tengas en cuenta es que el constructor define los valores iniciales de los atributos cuando se crean objetos de ese tipo. Tal y como tú lo has puesto todos los objetos de este tipo van a tener una edad inicial de 10 por ejemplo, pero esto no es lógico. Como realmente no sabemos la edad que va a tener cada objeto lo que se suele hacer es inicializar los atributos con valores 0 para numéricos, false para booleanos y "" para tipo String. De este modo si ves que el objeto está con atributos 0, false y "" sabes que todavía no tiene los atributos establecidos. Salu2s

1720
Aprender a programar desde cero / Re:Ejercicio CU00654B
« en: 05 de Julio 2014, 10:06 »
Hola, tienes que revisar el código porque no estás creando bien los constructores.

En el primer constructor this.nombre = nombre; significa que el atributo nombre toma el valor del parámetro nombre (ahí this te sirve para diferenciar una cosa y otra).

En el segundo constructor this.nombre = nombre; es lo mismo que escribir nombre = nombre; , es decir, que eso no significa nada. this sirve para diferenciar cuándo te refieres a un atributo y cuándo a un parámetro o variable local, pero si no hay parámetro ni variable local this.nombre es lo mismo que nombre.

Cuando el constructor recibe parámetros, servirán para inicializar los atributos con esos parámetros. Cuando el constructor no recibe parámetros, tendrás que inicializarlos a unos valores de defecto (normalmente cadenas vacías, ceros y false).

Salud2s

Páginas: 1 ... 81 82 83 84 85 [86] 87 88 89 90 91 ... 100

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