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

Páginas: [1] 2 3
1
Muchas gracias por tú aclaración Ogramar, me ha resultado de gran utilidad y tendré en cuenta tus consejos en el futuro.

Un saludo! ;D

2
Hola! muy buenas a todos.

No te acostarás sin aprender algo nuevo... no sabía que se podía crear una clase dentro de otra clase :o. Estoy empezando con Java en particular y con la POO en general, asi que hay muchisimas cosas que todavía desconozco ;D. Eso sí, la respuesta de Ogramar me ha aclarado bastantes dudas al respecto.

Sin embargo, en su segundo post, me ha surgido otra duda al ver el código del compañero "palotes" (jajaja, que bueno el nick). Él declara el campo o atributo "iterador", que entiendo es una lista de tipo "Iterator", ¿no?. Hasta ahí todo bien (aunque todavía no conozco este tipo de objetos), mi duda es: ¿Por qué no lo inicializa en el constructor?. Estoy en esta parte del curso de iniciación de Java, y dicho curso indica que se deben inicializar todos los atributos de la clase en el constructor. ¿Ha sido un lapsus del compañero "palotes"? ¿Este tipo de objeto no se inicializa como los demás... y de ser así, por qué? ¿Hay más tipos de objetos o algún tipo de objeto que no se debe inicializar?.


Muchas gracias a todos por vuestras respuestas, que seguro serán de gran ayuda.



3
Hola a todos!

Armandokevin, la palabra resumen en los temas solo esta referida a la línea en la que se encuentra. Sirven para resumir de forma breve que contiene cada tema, supongo que para facilitar su búsqueda si necesitaras revisarlos en el futuro (para esto además estan los códigos de cada tema) y también te pueden servir para ampliar conocimientos, ya que googleando con estos "subtítulos" se encuentra gran cantidad de información relacionada con un tema en concreto.

Los temas pueden parecer cortos (algunos abarcan más de un página), pero el contenido que ofrecen no es pequeño precisamente, ya lo verás ;D. Y aunque la parte teórica sea "pequeña", ponerlo en práctica conlleva mucho tiempo, hay que dedicarle muchas horas.

Por otro lado debes tener en cuenta que son cursos de iniciación a la programación, no cursos de programación avanzada (con alguna excepción por supuesto). Por ello van al grano e intentan "no dar rodeos y marear la perdiz" y no volverse repetitivos.

Un saludo y espero que mi comentario te haya resultado útil.

4
Hola ZID y feliz año nuevo!

Perdón por la tardanza en responder. He parado poco en casa estas fiestas.

Es solo una recomendación. Puedes seguir nombrando el parámetro del método set igual que el atributo de la clase. Pero es recomendable añadirle un prefijo para poder distinguir ambos dentro del método. Como he dicho, si solo es una asignación del parámetro al atributo es prácticamente imposible que surja un error. Sin embargo, si tienes que realizar alguna operación con el parámetro dentro del método antes de asignarlo al atributo, si que pueden sugir errores. De todos modos, con el uso de la palabra clave "this" cuando utilizas un atributo de la clase, deja de ser importante como denomines al parámetro del método, puesto que siempre que llames al atributo estará precedido de dicha palabra clave, evitando así cualquier confusión o error. Por este motivo es solo una recomendación y no algo obligatorio.

Personalmente prefiero evitar tener dos variables denominadas de la misma forma dentro de una ecuación o un algoritmo, sea cual sea la ecuación o el algoritmo. Pero es solo mi opción personal, eres libre de hacerlo como más te guste a ti. Otra cosa distinta es utilizar variables locales con el mismo nombre pero en distintos ámbitos a lo largo de un programa, como por ejemplo la típica "i" como contador de iteraciones.

Un saludo!

5
Hola Sofia.

¡Esa ortografía, que eres periodista! Jajaja, nada, es broma ;).

Existen muchas páginas similares a codeacademy. Si googleas un poco encontrarás artículos en varios periódicos nacionales relacionados con el tema. También aparecerán blogs que hablan sobre estas páginas.

En general, estas webs son fantásticas para aprender la sintáxis de un nuevo lenguaje y para dar tus primeros pasos en el mundo de la programación. Sin embargo, por mi experiencia personal, no son el mejor camino para iniciarse en la programación. ¿Por qué? Como he dicho, son fantásticas para aprender la sintáxis de un lenguaje de una forma amena, prácticamente te llevan de la mano. El problema viene cuando te sientas "solo/a" delante del ordenador e intentas plantear por ti mismo tú primer programa/aplicación/aplicación web o lo que sea. En ese momento te dices a ti mismo: "vale, ¿y ahora qué hago? ¿Por dónde empiezo? ¿Cómo planteo esta herramienta?". Tienes unos estupendos conocimientos de un lenguaje, pero no tienes ni idea de como plantear un problema de programación. Tras dar muchas vueltas por la red y por muchos libros, he llegado a la conclusión de que el primer paso en la programación debe ser estudiar algoritmia básica y fundamentos de programación. Aprender a traduccir un problema del mundo real a pseudocódigo y de ahí pasar a un lenguaje de programación propiamente dicho. Es decir, aprender a plantear un problema de programación. Una vez consigas esto, puedes pasar a estudiar el lenguaje de programación que quieras, que más te llame la atención, o que más necesites según el caso.

Puedes buscar libros relacionados con algoritmia de programación, y también puedes realizar el curso de Bases de la Programación I y II que ofrece aprender a programar. Después puedes seguir con el resto de cursos de aprenderaprogramar, con codeacademy o con otras webs si lo deseas, y será más productivo para ti lo que aprendas en ellas, ya lo verás.

Te adjunto el link a "Lo más básico para aprender a programar": https://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=23&Itemid=80

El itinerario que propone aprenderaprogramar.com, para iniciarse en la programación: https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=88&Itemid=176

Aquí el link al curso de Bases de la Programación I: https://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=28&Itemid=59

Cualquier duda que tengas, no te cortes y pregunta.

Un saludo!

6
Muchas gracias por tu respuesta Mario.

Desde un principio la idea era aprender programación orientada a objetos, pero a mi llegada a aprenderaprogramar Alex Rodríguez me recomendo empezar por los cursos de fundamentos (gran consejo por su parte, por cierto). Así pues, por supuesto que voy a continuar con el curso de Java, de hecho ya lo he empezado jejeje. Espero encontrar las respuestas a las inquietudes que he expuesto en el anteior post... y de paso aprender programación orientada a objetos ;D.

Respecto al curso de Java, veo que esta orientado a realizarlo con BlueJ. Ya intenté hace tiempo aprender POO con el libro "Programación Orientada a Objetos con Java - Una introducción prática usando BlueJ" en inglés "Object First with Java - A Practical Introduction using BlueJ", que si no me equivoco es de los propios creadores de BlueJ. No tuve muy buenos resultados con el libro, porque daba por sentado que poseias algún conocimiento de programación, y porque estaba orientado a trabajar con él en clase, teniendo un profesor a mano que ampliara los conocimientos y explicaciones que contiene. ¿Crees que este libro seria un buen complemento para el curso de aprenderaprogramar, para recurrir a él mientras completo el curso?¿O sería mejor dejarlo a un lado hasta completar el curso?

Es una lástima que no puedas darme ninguna indicación sobre las máquinas de estado. Creo que es un recurso muy importante para un programador. Supongo que se convertirá en mi objetivo tras finalizar el curso de Java, no es algo indispensable en este momento para mi.

Un saludo y gracias.

7
Hola Lmgz y bienvenido a aprenderaprogramar.com.

Cualquier edad es buena para iniciarse en el mundo de la programación. Otra cosa es que nos cueste más aprender a una determinada edad, ya sea programación o cualquier otra cosa. Pero en tú caso particular creo que es una edad excelente para iniciarse en la programación. Tienes más predisposición a absorver conocimientos, y en teoría debería resultarte más fácil retener dichos conocimientos. El mayor consejo que puedo darte en este sentido, porque todos hemos pasado por esa edad, es la constancia y la perseverancia. Bajo mi punto de vista es más importante ser constante, que tener capacidades innatas para programar. Es mejor dedicarle una hora todos los días, que pegarte una paliza de 8 horas un día y no volver a programar en un mes. Con el tiempo los resultados llegarán, ya lo verás. Por otro lado debes ser realista con los objetivos que te impongas. No esperes crear la próxima red social de moda en un par de meses... ni en un año... tal vez en unos cuantos años, quien sabe ;D. Tampoco esperes crear el próximo Call of Duty (por poner un ejemplo de videojuego de éxito). Sí eres realista con tus objetivos, casi con toda seguridad los alcanzarás.

Otra cosa que supongo te estarás preguntando: ¿Qué nivel de matemáticas es necesario?. Realmente no hace falta tener un doctorado en matemáticas para poder programar. Sí que es cierto que una buena base de matemáticas ayuda bastante. En este sentido, por el curso en el que estas, tal vez todavía no hayas estudiado algunos conceptos básicos para la programación, por ejemplo las matrices. Si mal no recuerdo yo no vi las matrices hasta 4º de la ESO. Tampoco necesitas tener un conocimiento profundo de las matrices para dar tus primeros pasos en la programación. Y más que como una desventaja, puedes verlo como una ventaja... el año que viene cuando lo estudies en clase, ya sabrás de que va el tema ;).

Con respecto a libros o que estudiar, como no puede ser de otra forma, en aprenderaprogramar.com "barremos" para casa. Así pues, yo te recomendaría empezar por los cursos de Bases de la Programación I y II que ofrece aprenderaprogramar. Sí puedes permitirte la modalidad de pago dispondrás de un tutor, se te enviará un libro impreso con todo el curso, además de otras ventajas. De no ser tu caso, siempre puedes hacer la modalidad gratuita y puedes postear tus dudas en el foro, siempre habrá alguien para responderte. También puedes optar por buscar alguno de los libros publicados por Mario Rodriguez Rancel, administrador de aprenderaprogramar. Pero en general yo te recomiendo que busques documentación sobre algoritmia y fundamentos de programación básicos y generales, que no sean inherentes a un lenguaje en particular, si no para todos en general.

En la sección "Cursos" de la web tienes más información sobre las modalidades y los cursos que ofrece aprenderaprogramar. Además en esta sección podrás encontrar el itinerario de formación básica que propone aprenderaprogramar.

Link al itinerario: https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=88&Itemid=176

Link al curso Bases de la programación I: https://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=28&Itemid=59

Un saludo y mucha suerte con tú iniciación en el apasionante mundo de la programación ;D.

8
Hola, muy buenas a todos!

Ya he finalizado los 2 cursos de fundamentos de la programación y el de Visual Basic. Aunque debo admitir que no he realizado los ejercicios opcionales que se plantean al final de cada curso. Los del segundo curso de fundamentos, aunque los comprendo, se escapan a mi nivel actual de matemáticas... ojalá algún día consiga plantear algo como eso jejeje. En cuanto al de Visual Basic (ordenación de series de números), prefiero plantearlo más adelante con otro lenguaje. El objetivo era conseguir y asentar unas bases sólidas de programación y creo que lo he conseguido, aunque estoy seguro que tendré que repasar algunos de los temas en el futuro. En este sentido simplemente quiero expresar mi gratitud a los que habeís participado de una forma u otra en la realización y divulgación de estos cursos.

Dicho esto todavía me quedan algunas dudas que expondré a continuación:

Los únicos bucles condicionales que no había visto hasta llegar a este curso son los bucles while...loop y do...loop. Me ha quedado claro la diferencia entre uno y otro. Básicamente do...loop debe ejecutarse siempre hasta que se cumple una condición de salida y while...loop puede ejecutarse sino se cumple la condición o mientras se cumpla una condición, y se ejecutará hasta que está se cumpla o deje de cumplirse. Mi duda es respecto a cuando usar while o until. No me ha quedado nada claro, no sé si es una opción del programador o hay alguna regla que te indique cuando usar uno u otro. Por ejemplo:

Hacer Mientras A sea distindo de 10 ...... Repetir
Hacer Hasta que A sea igual a 10 ...... Repetir

Para mi estos dos bucles hacen básicamente lo mismo. Sé que en algunos problemas puntuales será evidente dependiendo del resultado buscado, sin embargo en muchos de los ejercicios planteados en el curso podría haberse usado uno u otro indistintamente variando un poco la condición y obteniendo el mismo resultado, es decir, el resultado esperado.

Cambiando de tema, hay en general muchas cosas que no muestra el curso sobre el lenguaje. Entiendo que es un curso de iniciación y que seguramente en el curso de java o de otros lenguajes si que aparezcan. Pero hay una serie de cosas que me habría resultado interesante ver en este curso de iniciación. Entre ellas las siguientes:

El ArrayList. Se da una explicación extensa del Array, pero no se menciona nada sobre el ArrayList. ¿Podría alguien explicarme que es un ArrayList y que lo diferencia de un Array?. Como he mencionado antes, creo que en el curso de Java es explicado el ArrayList. De ser así, con el enlace a su explicación será suficiente para mi.

Las estructuras. Es uno de los temas que llevo tiempo buscando y me ha desilusionado que solo sean mencionadas de forma testimonial en el ejercicio opcional del curso de Visual Basic.

Los enum. Realmente no tengo practicamente ninguna noción de ellos, es más, no sé si son "enunciados" o "enumerados" jajaja. Es otro de los temas que llevo tiempo buscando.

Y para terminar, habría sido interesante ver una pequeña introducción a que es y como funciona una máquina de estados.

Muchas gracias a todos por vuestro tiempo y por vuestras respuestas.

Un saludo!

9
Muchas gracias por tu respuesta Ogramar.

La última línea que me indicas es la que se ajusta exactamente a lo que preguntaba:

- If nombreDelArray IsNot Nothing el array ha sido redimensionado

Las otras soluciones que me has planteado seguramente se puedan aplicar a otros lenguajes, pero Visual Basic no te permite acceder al límite superior e inferior del array hasta que este haya sido redimensionado al menos una vez, aunque se redimensione a cero (está expuesto al final del tema además). Tampoco es posible utilizar la longitud del array, parece que para Visual Basic sencillamente el array dinámico no existe hasta que es redimensionado al menos una vez.

Tomo nota del uso que haces del contador, ya que esa "técnica" puede utilizarse como una especie de "contador universal" que puede ser de gran ayuda en una gran amplitud de problemas, ya sea como una variable local a un método, al ambito de una clase o incluso global para todo un programa.

De nuevo muchas gracias por tu ayuda.

Un saludo!

10
Hola a todos!

En el tema CU00346A del curso de Visual Basic se nos propone crear una aplicación que permita añadir un dato a un array dinámico, borrar un dato del array, mostrar el número total de datos del array (tamaño del array) e imprimir todos los valores del array en pantalla. He logrado crear el programa sin mayores problemas. Realizando esta tarea se me ha presentado una duda: ¿Cómo podemos comprobar si un array dinámico ha sido o no ha sido redimensionado por primera vez, en Visual Basic?.

He encontrado alguna función axuliar por la red que comprueba si el array ya ha sido redimensionado por primera vez devolviendo una booleana, pero son para Visual Basic 6 o inferiores, y en Visual Basic 2010 que es la versión que estoy utilizando no funcionan.

Un saludo y muchas gracias a todos por vuestras respuestas.

11
Hola Papipanchi.

El ejercicio cumple con todo lo que solicita el enunciado del problema y funciona correctamente. El único apunte que te hago es que no era necesario denominar la clase de otra forma. Si lo que querías era ponerle un nombre que la diferenciara de la clase de otro ejercicio o para futuras revisiones, podrías haberle puesto un nombre más descriptivo como "BombaMotor", "MotorBomba", "MotorFluidos", "BombaFluidos", etc etc. Algo que con solo ver el nombre te permita saber que clase es, o de que ejercicio se trata.

Un saludo!.

12
Hola otra vez Papipanchi.

Respecto al constructor con parámetros te digo lo mismo que en el anterior ejercicio. Debes incluir parámetros para los atributos booleanos. Por lo demás el ejercicio esta perfectamente desarrollado.

Además, aunque el ejercicio no lo pida o no lo indique, acostumbrate a crear siempre un constructor que no reciba parámetros e inicialice los atributos por defectos. No siempre será utilizado, pero nunca esta demás tenerlo declarado.

Un saludo!

13
Hola Papipanchi.

Me alegra ver que sigues progresando, me alegro mucho por ti.

Tú ejercicio esta casi perfecto y muy bien comentado e indentado, te felicito por ello. El "casi" perfecto es porque en el constructor número uno, el que recibe parámetros, se te ha olvidado incluir los parámetros para los atributos de tipo booleano "casado" y "especialista". En este caso, tendrías que incluir dos parámetros más de tipo booleano. Debes incluir un parámetro por cada atributo que tenga la clase.

Por lo demás todo esta genial, enhorabuena y continúa por este camino.

Un saludo!

14
Aprender a programar desde cero / Re:(CU00641B)
« en: 11 de Diciembre 2014, 13:49 »
Hola aleexx1724.

Ciñendonos al planteamiento del ejercicio veo varios errores en tú código. La clase "SalonCasa" esta correctamente planteada. La clase que tú denominas "Cocina", debería llamarse "CocinaCasa", por lo demás esta clase esta correctamente planteada.

Donde más errores veo es en la clase "Casa". Vayamos por partes:

Veo los métodos setDireccion y setSuperficie, pero no has incluído los métodos getters respectivos.

El método setSalonCasa no debería existir, puesto que si necesitamos variar algún atributo del salón, podemos recurrir a los métodos setters y getters de su propia clase. Dejando a un lado que no debería existir este método... si lo has incluído... ¿Por qué no has incluído su método get y los métodos set y get para la cocina?...

Continuando con los errores, los métodos infoSalon e infoTelevisores no deberían existir, por un lado el ejercicio no los pide y por otro, de querer crearlos, deberían estar en la clase "SalonCasa", no en la clase "Casa". Además, si la intención de estos métodos es simplemente imprimir valores por consola, ¿Por qué retornan una cadena?, no es necesario, con métodos void lo puedes hacer igualmente, como lo has hecho en el método infoCasa.

Para finalizar, en el método infoCasa puedes imprimir por consola todos los valores, tanto del salon, como de la cocina y la propia casa, haciendo así innecesario (en lo que a este ejercicio concierne) la creación de los método infoSalon e inforTelevisores. En este método ibas por buen camino, has pedido y guardado los valores de los atributos de la clase "Cocina", pero no los has imprimido por consola.

Un saludo!

15
Hola ZID.

Tú ejercicio esta resuelto correctamente. Por mi parte solo te haré algunas pequeñas indicaciones.

No sé si a esta altura del curso ya has visto la diferencia entre declarar una variable como public o private. De una forma u otra, los atributos de la clase se deben declarar como private.


Por otro lado, creo que seria más conveniente no incluir el método main en la misma clase que DiscoMusical_24. Porque esta clase corresponde a un tipo de objeto concreto y el método main digamos que es el "cuerpo" del programa y por norma general estará incluído dentro de una clase principal que controlará todo el flujo del programa. Yo habría creado por ejemplo una clase llamada GaleriaMusical o BibliotecaMusical y dentro de está incluiría el método main.


No importa en que orden declares los métodos y los constructores de una clase. Pero para facilitar la lectura y para que quede más ordenado es recomendable declarar el constructor de la clase justo después de declarar los atributos de la clase. Esto solo es una indicación, como he dicho, el orden en el que los pongas no afecta al funcionamiento del programa. Otra cosa más que me gustaría añadir sobre los constructores: no he leído el ejercicio, la verdad, asi que no se que pide exactamente, pero veo que solo has declarado un constructor con parámetros. Es recomendable crear también un constructor que no reciba parámetros e inicialice los atributos por defecto: las variables strings vacias, las variables numéricas a cero y las variables booleanas a false. Puede que nunca se llegue a utilizar este constructor, pero nunca esta demás tenerlo declarado.


Para terminar una indicación sobre la declaración de los parámetros de los métodos y los constructores. En los métodos set, declaras como parámetro exactamente la misma palabra que utilizas como atributo. Aunque esto no afecta a la funcionalidad, si que puede dar lugar a errores. Ahora mismo solo haces una asignación a un atributo, pero si tuvieras que realizar más operaciones podría crearte confusiones a ti como programador el tener dos variables que se denominan exactamente igual dentro de un método, una que corresponde a un atributo de la clase y otra que corresponde a la variable que utilizamos como parámetro del método. Por ello es recomendable utilizar una palabra distinta para el parámetro, o añadirle un prefijo o un sufijo para poder distinguirlos. En el caso de los métodos setters, el curso recomienda añadir el prefijo "valor" al nombre del atributo. Por ejemplo para el atributo "titulo", en su método set utilizariamos el parámetro "valortitulo" o "valorTitulo".


Un saludo y espero haberte servido de ayuda.

16
Efectivamente Papipanchi. Tienes que ver las clases y los objetos que crean las clases de una forma más abstracta. A mi es algo que me ha costado y me sigue costando mucho asimilar, es uno de los motivos principales por el que he llegado a aprenderaprogramar.com. Entiendo perfectamente el problema del compañero sergiomusan, puesto que a mi también me cuesta plantear una clase con todos sus atributos, campos y métodos necesarios. Siempre se me olvida algo jejeje. Sobre todo si son objetos abstractos que no existen de forma física en el mundo real.

Sin embargo no debes dejar de utilizar la impresión de variables, o más bien del valor de variables por consola. Es un método de testeo muy eficaz. Pero es para eso, para testear, en el código final debe quitarse.

Un consejo que puedo darte y que a mi me esta funcionando mucho es plantear el problema con pseudocódigo antes de empezar a programar propiamente dicho. Crear diagramas de flujo a partir del pseudocódigo también ayuda mucho a ver el problema desde otro punto de vista. En el curso de fundamentos de la programación nivel I explican muy bien como plantear pseudocódigo y como crear e interpretar diagramas de flujo.

Un saludo!

17
Hola a todos!

Con vuestro permiso, me gustaría añadir algo más sobre la duda de Papipanchi. Voy a decir básicamente lo mismo que ha dicho Ogramar en su último post, pero utilizando un ejemplo, a ver si así queda más claro.

Papipanchi, imagina que ya hemos creado un objeto "Rueda" y sus atributos ya están establecidos, todos tienen un valor asignado distinto de cero o "vacio". Bien, ahora imagina que un tiempo después de haberse creado dicho objeto necesitas saber, apartir de su diámetro, que tipo de rueda es. Tal y como has planteado tu método set, estos serían los pasos que tendríamos que dar:

1º Invocar el método getDiametro(), puesto que como hace tiempo que creamos el objeto "Rueda", ya no recordamos el valor del diámetro.
2º Apuntar dicho valor o guardarlo en alguna variable nueva... es decir, memorizarlo.
3º Volver a asignar el mismo valor al diámetro del objeto "Rueda" mediante el método setDiametro(), para que al asignarlo nuevamente nos informe del tipo de rueda con el que estamos tratando.

Como ves es un tanto engorroso y redundante, al tener que volver a reestablecer el valor del diámetro, ir por esta vía. Sin embargo, si creamos un método comprobarDimensiones(), estos serían los pasos a dar:

1º Invocar el método comprobarDimensiones()... y ya está ;D.


Tal vez estes pensando: bueno, yo puedo hacer la comprobación en el método setDiametro() y después crear el método comprobarDimensiones(). Una cosa no quita la otra, ¿no?. Pero esto seria redundante porque estaríamos duplicando código innecesariamente.

¿Qué opciones tienes para realizar la comprobación automática del diámetro? Puedes crear el método comprobarDimensiones() y llamarlo dentro del método setDiametro(), pero esto no es "elegante", no es un diseño correcto por las razones que te ha indicado Ogramar, aunque si funcional. Tal vez lo más correcto es llamar al método setDiametro() y justo después al método comprobarDimensiones(), en el punto del código en el que te es necesario establecer el diámetro. Incluso podrías crear un bucle while que no permita salir del mismo hasta que el diámetro tenga un valor adecuado para cada situación.

!Hay que compartimentar ;)! Cada función o método debe tener su objetivo. Divide y vencerás. Esto nos permite crear códigos claros, limpios y versátiles.

Un saludo!

18
Hola geoman777.

Antes de comentar tu ejercicio e intentar aclarar tu duda quisiera hacerte una aclaración. Para facilitar la lectura del código que se adjunta en un post debes incluirlo en un "cuadro" de código. Para ello debes pulsar el botón #, que aparece entre las herramientas que tienes disponibles cuando escribes un post. Después debes pegar el código entre los campos de código que te aparecen: [ code] Aquí pegas tú código [ /code]. Si el código es muy grande o son varios archivos puedes optar por adjuntar directamente los archivos a tu post. Te adjunto el siguiente link de otro tema del foro para mayor aclaración:
https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

Tú ejercicio está perfectamente planteado, al menos yo no veo ningún error ni nada que señalarte.

Sobre tú duda con las variables boolean... las variables pueden adquirir el valor que tú como programador creas necesario o conveniente en cada caso. También puede ser que la tarea que estes llevando a cabo te obligue a establecer unos valores determinados. Y también puede darse el caso que tras realizar algunas operaciones necesarias para resolver un problema en concreto, estas adquieran un valor calculado por el código.
En este caso en particular, como estas creando un constructor que no recibe parámetros y que solo inicializa los atributos (variables) de la clase, por norma general estos se inicializan vacios o a cero, y en el caso de una variable boolean a false. Más adelante el curso te mostrará como crear un constructor que recibe parámetros, y dichos parámetros establecerán los valores de cada atributo de la clase, cuando un objeto de dicha clase sea creado.

Te expongo un ejemplo sencillo de una utilidad que podría tener esta clase "Persona". Supongamos que estas realizando el censo de una población, como mínimo tendrás: por un lado una clase "ListaDePersonas", que agrupará en una lista o tabla a todas las personas, y por otro lado tendrás la propia clase "Persona". Al inicio del programa se creará un objeto del tipo "ListaDePersonas", que contendrá todos los objetos "Persona" que se creen. A veces crearemos un objeto "Persona" delante de la puerta de una casa, antes de hablar con una persona real, pero ya sabemos que vamos a censar al menos a una persona, aunque no conocemos sus datos. En este caso crearíamos un objeto "Persona" con un constructor sin parámetros, puesto que no conocemos ningún dato de dicha persona real, y por supuesto todos sus atributos estarán vacios hasta el momento en el que la persona real nos diga sus valores (los rellenaremos con los métodos setters). Otras veces llamaremos a la puerta y hablaremos con la persona real antes de crear un objeto "Persona". Ella nos dará sus datos y podremos usarlos como parámetros para crear un objeto "Persona" con todos sus atributos "llenos", es decir, sabremos su nombre, apellidos, si está casado (true) o sino lo está (false), en el momento exacto en el que creamos el objeto "Persona".

Espero haberte servido de ayuda. Si tienes más dudas no te cortes y pregunta lo que quieras.

Un saludo!

19
Aprender a programar desde cero / Re:(CU00633B)
« en: 03 de Diciembre 2014, 14:18 »
Hola aleexx1724.

Tú método es correcto y funciona como debe, aunque yo hubiera creado una variable más para diferenciar el multiplo que queremos del resultado de la operación. Algo similar a esto:

Código: [Seleccionar]
public void calculoParaMultiploEdad(){  //Ojo con las equivocaciones de las letras, aquí habias puesto Mulriplo, en vez de Multiplo
        int multiplo = 5;
        int resultado = 0;

        resultado = edad % multiplo;
     
        if(resultado == 5)
        {
               System.out.println("El doctor de nombre " + nombre + " con especialidad en " + especialidad + " tiene una edad múltiplo de " + multiplo);
        }
        else
        {
               System.out.println("El doctor de nombre " + nombre + " con especialidad en " + especialidad + " tendra una edad múltiplo de " + multiplo + " en " + (multiplo - resultado) + " años" );
        }
}


De esta forma añadimos claridad al código, y también versatilidad, puesto que si en el futuro necesitamos variar el multiplo será muy sencillo. Incluso podríamos añadir un parámetro al método indicando el valor que debe adquirir el múltiplo, y simplemente igualariamos la variable "multiplo" a dicho parámetro.

Además de la indicación del error con la letra en el nombre del método, fijate que he eliminado el prefijo "set" del mismo, puesto que esto es un método que realiza un cálculo, no un método que establece el valor de un atributo o variable de la clase.

Un saludo!

20
Hola stevito.

Antes de nada me gustaría hacerte una indicación. En general tu solución al ejercicio esta correctamente planteada, excepto por un pequeño error que hay en el constructor. Cuando inicializas la variable o atributo "digital", debes inicializarlo con un único valor, o es true, o es false... pero no los dos. No puedes utilizar un operador de comparación directamente para asignar un valor a una variable. Habría que crear una sentencia condicional, y si se da un caso se aplica un valor, y si se da otro distinto se aplica otro valor. No voy a entrar más en detalle porque el curso te lo explicará muy bien cuando avances un poco más, ya lo verás ;). Simplemente en este caso en particular, ya que inicias el resto de variables "vacias" o a cero, lo más apropiado seria iniciar esa variable como false. Más adelante también verás como crear un constructor con parámetros, y podrás iniciar todos los atributos con los valores que tú quieras o que sean necesarios para tú código.

Sobre tú duda... no sé si es correcto proponerte una solución a ella en el punto del curso en el que te encuentras, porque tendría que utilizar el método Main, declarar e inicializar el constructor y después llegaríamos a la sentencia condicional. Y creo que te crearía más dudas jejeje. Sin embargo te puedo poner un pseudocódigo para que veas por donde van los tiros:

If digital = true then
{
     Imprimir por consola("El disco es digital");
}
else
{
    Imprimir por consola("El disco no es digital");
}

Recuerda, esto es pseudocódigo, no código compilable. Podría haber incluído "else if digital = false then", en lugar de usar solo else, pero como la variable "digital" solo tiene dos posibles valores esto sería redundante.

No te preocupes que todo esto lo verás poco a poco a lo largo del curso perfectamente explicado.

Un saludo!

Páginas: [1] 2 3

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