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 ... 72 73 74 75 76 [77] 78 79 80 81 82 ... 100
1521
Hola Papichanchi, efectivamente un if y un switch son similares. De hecho, cualquier switch se puede sustituir y reemplazarlo por if. Usamos el switch cuando nos resulte cómodo.

Sobre qué se puede meter dentro de un método set: dentro de un método set debes meter sólo el código necesario para establecer (set) algo. Si para establecer algo necesitas un if o un switch, puedes usarlo. Lo que no debes es introducir código que sea para hacer otra cosa.

El ejemplo que se nombra en este hilo no es demasiado adecuado, es un simple ejemplo de código pero olvídate de él como ejemplo de método set. Recuerda esto: un método set se usa para establecer algo.

Salu2

1522
Hola, ahora tú código está perfecto !!!


Para colocar nuevos métodos puedes colocarlos después de los métodos y set y métodos get. En este caso te quedaría

setTipoBomba ...
setTipoFluido ...
setCombustible ...

getTipoBomba ...
getTipoFluido ...
getCombustible ...

dimeTipoMotor

No es obligatorio pero así queda mejor ordenado.

Sobre los métodos tipo procedimiento es como tú has dicho: todos comienzan con void ...

Salu2!

1523
Aprender a programar desde cero / Re:Como guardar estos registros
« en: 02 de Diciembre 2014, 23:26 »
Hola, ¿con qué lenguajes de programación estás trabajando?

Puedes guardar en base de datos usando php. Mira las entregas de este curso donde se explica el trabajo con base de datos: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

Salu2

1524
Hola, para contar las vocales de una frase tienes que tener en cuenta que:

- Una palabra es un array de caracteres que puedes recorrer con un bucle for

- Cada letra tiene un código numérico asociado (puedes ver una referencia en https://www.aprenderaprogramar.com/foros/index.php?topic=836)

En resumen, recorres el array y con if vas comprobando si el código numérico es de una vocal y lo vas contando.

Pega el código para revisarlo a medida que lo vayas haciendo.

Salu2

1525
Hola papichanchi, tu código tiene partes buenas pero no es correcto por los siguientes razones:

- No cumples lo que pide el enunciado, que es crear un método tipo procedimiento denominado dimeTipoMotor()

- Un método set debe usarse solo para establecer el valor de un atributo, no debe usarse para otras cosas (cada método debe tener sus responsabilidades, no hay que mezclarlas). Piensa que es como si ves un cartel en la calle y pone "Pescadería", no tendría lógica que entres en la tienda y luego vendan carne. Por eso un método set (que significa establecer) no debe usarse para otras cosas.

Aunque tu código te funcione eso no significa que si te lo revisara un supervisor lo considerara bueno.

Salu2

1526
Hola, no parece lógico tener una única clase. En programación orientada a objetos se trabaja normalmente con varias clases y además con una clase con el método main. Léete esto: http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=621:clase-con-el-metodo-main-clase-principal-iniciadora-o-programa-principal-en-java-concepto-cu00655b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188

De acuerdo con el enunciado del problema podríamos identificar las siguientes clases:

- Terreno (representa el terreno, también podrías llamarla TableroDeJuego o TableroDeSimulacion si quieres)

- Mina (representa una mina)

- Robot (representa al robot)

- Reloj (representa el reloj para el juego o simulación)

Además serán necesarias posiblemente las siguientes clases:

- ControladorDelJuego (o ControladorDeSimulacion): se encarga de supervisar el estado de la partida y finalizarla si se cumplen las condiciones para ello.

- ColocadorDeMinas: se encargará de colocar las minas sobre el tablero de juego.

- ControladorDeRobot: se encargará de controlar el movimento del robot. No tengo muy claro si el movimiento del robot lo debe controlar el usuario como si fuera un juego o si lo debe controlar el programa. Este es un aspecto importante, ya que haría variar bastante el código que hay que crear según sea una cosa u otra.

Y además de estas posiblemente sean necesarias algunas clases auxiliares más. Crear este programa con su entorno gráfico requiere bastante tiempo y conocimientos para poder codificarlo. No es sencillo (tampoco es una super complicación).

Saludos

1527
Hola, ¿velneo es un lenguaje de programación o una aplicación? Y si es una aplicación, ¿en qué lenguaje está desarrollada? Salu2

1528
Aprender a programar desde cero / Re:Donde aprender html5 y css3
« en: 29 de Noviembre 2014, 17:08 »
 ;D ;D ;D El problema tal y como dices es que todo es demasiado amplio. Te recomiendo la información y tutoriales de mozilla developer, por ejemplo https://developer.mozilla.org/es/docs/HTML/HTML5, el problema es que también son demasiado amplios  :-[

1529
Hola, sobre la cuestión del return ten en cuenta lo siguiente:

se devuelve lo que indique el primer return que se encuentre.

No pueden existir dos return, excepto si un return está dentro de un condicional. En ese caso sí tiene sentido que existan dos return, porque el método siempre ha de devolver algo y hay que tener previsto que pueda ocurrir que no se cumpla el condicional.



Sobre la otra cuestión, lo que devuelva return entradaTeclado.substring(0, i+1); depende del valor de i, y el valor de i va cambiando cada vez que se repite el bucle (empezará valiendo 0, luego 1, luego 2, ... así hasta el último índice de la palabra).



for (int i=0;i< entradaTeclado.length()-1;i++) {

El propósito es ir desde la primera letra (posición cero de la palabra) hasta la última letra de la palabra (posición igual al valor de longitud menos uno).

Crea un código de prueba y si obtienes un resultado que no entiendas pega el código y a partir de ahí intentaría aclarar las dudas ;)

1530
¿Pero no tienes el código ya creado? Es decir, ¿no tienes el método getCursoAcademico() ya definido?

Si sólo lo estás definiendo a nivel conceptual podrías hacerlo así:

 
Código: [Seleccionar]
public String toString() {
String res = getAsignatura() + "," + getCursoAcademicoAnyoInicio() + "-"
+ getCursoAcademicoAnyoFin() + "," + getConvocatoria() + ","
+ getValor() + "," + getCalificacion();
return res;

Este método te devolvería el año de inicio del curso académico: getCursoAcademicoAnyoInicio() y el otro lo mismo para el año de terminación.

Salu2

1531
Hola, ¿qué es lo que te devuelve el método getCursoAcademico? Pega el código donde podamos ver ese método para hacernos una idea...  ;D

Supongo que no te sirve:

Código: [Seleccionar]

public String toString() {
String res = getAsignatura() + ", 2014-2015" + "," + getConvocatoria() + ","
+ getValor() + "," + getCalificacion();
return res;

1532
Hola, puedes hacerlo con php usando la función file_get_contents y funciones para tratamiento de cadenas. No es sencillo, pero tampoco es superdifícil. Puedes ver la información sobre la función file_get_contents y funciones de cadenas aquí: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

Cuando vayas a pegar código hazlo como explica aquí!!: https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

Salu2

1533
Hola, puedes hacerlo de la siguiente manera. Supón que tienes una palabra como "ambulancia" en la celda A4 y otra como "nieve" en la celda A5, "ambulatorio" en la celda A6 y "reambiguación" en la celda A7.


Lo primero sería probar la sintaxis que nos permite encontrar una cadena de texto y nos indica en qué posición se encuentra dentro de una palabra.

Para ello escribimos =ENCONTRAR("amb";A4;1) y esto nos devuelve en qué posición se encuentra amb. Si usas la versión en inglés será =FIND("amb";A4;1)

El resultado será:

ambulancia   1
nieve   #¡VALOR!
ambulatorio   1
reambiaguación   3


Aquí lo que comprobamos es que si la palabra comienza por "amb" esta función nos devuelve 1 (es decir, que amb empieza en la primera letra de la cadena).

Ahora simplemente tenemos que introducir el condicional indicando que si la cadena empieza por amb nos muestre "verdadero" y si no comienza por amb nos muestre falso

=SI(A4="ambulancia"; "verdadero"; "falso") nos diría si la palabra es ambulancia (en inglés sería IF en lugar de SI)

Para saber si una palabra empieza por "amb" escribiremos:

=SI((ENCONTRAR("amb";A4;1)=1); "verdadero"; "falso")


Aplicando la fórmula a las distintas palabras obtenemos:

ambulancia   verdadero
nieve   #¡VALOR!
ambulatorio   verdadero
reambiaguación   falso


Pruébalo y ya nos comentas si te da resultado.

Salu2

1534
Hola, en este curso tienes explicada la ordenación de números, bucles, etc.: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=28&Itemid=59

Para este caso en concreto tenemos:

Comienza el bucle externo con j=1 y el bucle interno con k=0 hasta 7

A(0)=100, A(1)=20, se cumple a(k) > a(k+1) por lo que a(0)=20, A(1)=100


Ahora k=1

A(1)=100, a(2)=4, se cumple a(k) > a(k+1) por lo que a(1) = 4, a(2)=100


Ahora k=2

a(2)=100, a(3)= 8, se cumple a(k) > a(k+1) por lo que a(2)=8, a(3)=100

Ahora k=3 ... a(3)=7, a(4)=100

Ahora k=4 ... a(4)=23, a(5)=100

Ahora k=5 ... a(5)=85, a(6)=100

Ahora k=7 ... a(6)=37, a(7)=100

Fin del bucle interno. Ahora j = 2 y k=0 hasta 6

Ahora k=0, a(0)=20, a(1)=4 por lo que a(0)=4, a(1)=20

Ahora k=1, a(1)=20, a(2)=8 por lo que a(1)=8, a(2)=20

Ahora k=2, a(2)=20, a(3)=7 por lo que a(2)=7, a(3)=20

Ahora k=3, a(3)=20, a(4)=23 NO CUMPLE

Ahora k=4, a(4)=23, a(5)=85 NO CUMPLE

Ahora k=5, a(5)=85, a(6)= 37 por lo que a(5)=37, a(6) = 85

...

Si seguimos ejecutando el algoritmo vemos que:

los números más grandes llegan a la parte derecha de la lista y los más pequeños se quedan en la parte izquierda.

En cada iteración del bucle externo se coloca el elemento más grande a la derecha de la lista

... finalmente obtenemos la lista ordenada de menor a mayor:

El resultado será: 4, 7, 8, 20, 23, 37, 85, 100

Salu2

1535
La sintaxis depende de la base de datos que estés usando (¿qué base de datos es?). Una forma de comprobar la sintaxis es acceder al gestor de base de datos y ejecutar directamente la consulta comprobando los resultados. Una vez tengas la sintaxis chequeada en el gestor, trasládalo al código y comprueba que obtienes los mismos resultados  :D

1536
Hola, tienes que hacer consultas que pueden ser:

SELECT *
FROM   cliente
WHERE  cli_nombre LIKE 'a%' OR
       cli_nombre LIKE 'b%' OR
       cli_nombre LIKE 'c%' OR
       cli_nombre LIKE 'd%' OR
       cli_nombre LIKE 'e%' OR
   cli_nombre LIKE 'f%' OR
   cli_nombre LIKE 'g%' OR
   cli_nombre LIKE 'h%' OR
   cli_nombre LIKE 'i%' OR
   cli_nombre LIKE 'j%'


O usando expresiones regulares:

SELECT *
FROM   cliente
WHERE  cli_nombre REGEXP '^[a-j]';

Podrías intentarlo con between pero aquí seguramente fallaría si tuviera que entremezclar eñes por ejemplo:

SELECT *
FROM   cliente
WHERE  cli_nombre BETWEEN 'a%' AND 'j%'



Te recomiendo que hagas pruebas primero por si acaso.

Salu2

1537
Ahora lo del case mucho mejor. Lo que yo quiero decir en relación a cuestiones básicas sobre diseño en programación orientada a objetos lo tienes en: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188

Posiblemente también en alguno de esos libros que citas, pero no lo sé.

El diseño se debe ir aprendiendo poco a poco, a medida que vayas progresando. Ir aprendiendo desde ya no es un desperdicio, es hacer las cosas bien. No se trata de que te dediques únicamente al diseño ni de que en unos días pienses que vas a interiorizar todos los conceptos que hay en torno a la programación orientada a objetos. ¿Y cómo hacerlo? Como dice el refrán: si tienes prisa, vete despacio.

Salu2

1538
Hola, no quiero ser crítico "porque sí", en el código se ven cosas muy bien hechas, manejo de instrucciones y sentencias que utilizas bien, y otras cosas que no están bien hechas (al menos desde mi punto de vista). En concreto:

Sigues sin tener un diseño orientado a objetos. Tienes una única clase que lo hace todo, incluido el mostrar mensajes por consola. Por contra, la clase con el método main no hace nada. Esto denota que no estás haciendo un buen diseño orientado a objetos posiblemente porque te falta estudiar e interiorizar cómo se trabaja la orientación a objetos.

La otra cosa que llama la atención a cualquier programador experimentado y que podemos decir que está mal concebida es el uso de switch con una ristra de sentencias case detrás:

case 65:
letras[m] = "A";
break;
case 66:
letras[m] = "B";
break;
...
...
...

Cuando tienes case 65, case 66, case 67 ... y así sucesivamente esto sugiere un mal diseño del código: se ve que sería más adecuado usar un bucle que usar una ristra de cases. Para usar un bucle tienes que pensar cómo hacerlo, posiblemente debas usar instrucciones auxiliares que permiten obtener el valor numérico asociado a una letra y al revés (como Encoding.ASCII.GetBytes(cadena); ó (int)c donde c es un carácter)

Al ver esa ristra de cases, lo que induce a pensar es que las 50 líneas que has empleado se podrían reducir a 10 si usas un bucle y las instrucciones adecuadas. No te hablo que siempre sea así, habrá casos en que no sea posible, pero en general ver algo así indica un fallo en la concepción del código.

Salu2!

1539
Hola, te doy una referencia:

Modificadores de acceso: http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=665:public-private-y-protected-javatipos-de-modificadores-de-acceso-visibilidad-en-clases-subclases-cu00693b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188 (tendrías que buscar los modificadores que existen en el lenguaje que estés usando)

Método toString(): http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=666:sobreescribir-metodos-tostring-y-equals-en-java-ejemplos-y-ejercicios-resueltos-comparar-objetos-cu00694b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188 (tendrías que ver los detalles en el lenguaje que estás usando)

Este método sera invocado cuando se construya el objeto. -- > Significa que debes incluirlo en el constructor. El código del constructor es el código que se ejecuta cuando se crea un objeto.

Métodos set: http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=440:tipos-de-metodos-en-java-metodos-consultores-o-de-acceso-getters-y-modificadores-setters-cu00626b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188

mostrar la información de cada objeto: para ello tienes que usar el método toString, que lo que hace es precisamente mostrar la información de un objeto.

Salu2

1540
Posiblemente porque hay aspectos de configuración que no hayas introducido. Por ejemplo cuando creas un datagrid puedes establecer a través de menús de configuración con qué base de datos va a estar ligado el datagrid, si no lo has especificado, no te reconocerá la base de datos con la que enlaza y te dará errores. Igual que esto hay otros aspectos de configuración que se pueden establecer a través de menús gráficos y eso no figura en el código. Salu2

Páginas: 1 ... 72 73 74 75 76 [77] 78 79 80 81 82 ... 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".