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 - César Krall

Páginas: 1 ... 18 19 20 21 22 [23] 24 25 26 27 28 ... 68
441
Hola!

Tu código funciona bien, aunque no te has atenido a lo que pedía el ejercicio, por ejemplo el ejercicio pedía crear una función validacionConExpReg y no la has creado, aunque has hecho algo equivalente y todo correcto.

Sobre el uso de atributos html5 efectivamente, pueden usarse pero eso sería objeto de otro curso, en este curso los objetivos se centran en el aprendizaje de JavaScript.

Sobre el uso del evento onfocusout para que cada vez que se cambien de campo se verifique la idea es buena, pero te recomendaría usar el evento onblur o una combinación de ambos o buscar una solución que ofrezca compatibilidad con todos los navegadores, porque puede haber algunos eventos que no sean detectados por todos los navegadores y podría ocurrir esto con el focusout.

Saludos!

442
Hola!

Aunque es más complejo que esto, thread a la hora de controlar una animación se usuaría para definida la animación al completo por ejemplo mediante un bucle, detener la ejecución cada cierto intervalo de tiempo de modo que podamos ver cómo evoluciona la situación. Aquí hay un ejemplo con una animación de un cohete en lanzamiento https://www.aprenderaprogramar.com/foros/index.php?topic=1699.0

Los Timers son objetos que se usan para establecer que algo debe ejecutarse una única vez después de cierta demora, o bien para establecer que algo debe ejecutarse repetidamente, aquí una aplicación típica sería actualizar la visualización-estado de un componente periódicamente.

Una regla aproximada que puede seguirse es:

- Usar Timer siempre que se trate de una aplicación con interfaz gráfica (como en este caso) que deba detectar eventos. Si se usa Thread.sleep lo que haríamos sería "detener" el programa por unos instantes, de modo que no se detectaría por ejemplo una pulsación de tecla y parecería que el programa no funciona. Esto con Timer no ocurre.

Para cambiar el color de una figura cuando hagas click sobre ella te puedes guiar por este ejemplo: https://www.aprenderaprogramar.com/foros/index.php?topic=3530.0

Saludos!

443
Este es un ejemplo de cómo dibujar formas geométricas con java (círculo, cuadrado) y hacer que su color cambie cuando hagamos click sobre la figura:

Código: [Seleccionar]
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Rectangle2D;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class DemoShapes {
    public static final Color DEFAULT_COLOR = Color.BLUE;

    public DemoShapes() {
        List<ShapeItem> shapes = new ArrayList<ShapeItem>();
        shapes.add(new ShapeItem(new Rectangle2D.Double(110, 1, 100, 100),
                DEFAULT_COLOR));
        shapes.add(new ShapeItem(new Rectangle2D.Double(110, 110, 100, 100),
                DEFAULT_COLOR));
        shapes.add(new ShapeItem(new Ellipse2D.Double(1, 1, 100, 100),
                DEFAULT_COLOR));
        shapes.add(new ShapeItem(new Ellipse2D.Double(1, 110, 100, 100),
                DEFAULT_COLOR));

        JFrame frame = new JFrame("Shapes");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        ShapesPanel panel = new ShapesPanel(shapes);
        frame.add(panel);

        frame.setLocationByPlatform(true);
        frame.pack();
        frame.setVisible(true);
    }

    class ShapeItem {
        private Shape shape;
        private Color color;

        public ShapeItem(Shape shape, Color color) {
            super();
            this.shape = shape;
            this.color = color;
        }

        public Shape getShape() {
            return shape;
        }

        public void setShape(Shape shape) {
            this.shape = shape;
        }

        public Color getColor() {
            return color;
        }

        public void setColor(Color color) {
            this.color = color;
        }
    }

    class ShapesPanel extends JPanel {
        private List<ShapeItem> shapes;
        private Random rand = new Random();

        public ShapesPanel(List<ShapeItem> shapesList) {
            this.shapes = shapesList;

            addMouseListener(new MouseAdapter() {
                    @Override
                    public void mouseClicked(MouseEvent e) {

                        Color color = getRandomColor();
                        for (ShapeItem item : shapes) {
                            if (item.getShape().contains(e.getPoint())) {
                                item.setColor(color);
                            }
                        }
                        repaint();
                    }
                });
        }

        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);

            Graphics2D g2 = (Graphics2D) g.create();

            for (ShapeItem item : shapes) {
                g2.setColor(item.getColor());
                g2.fill(item.getShape());
            }

            g2.dispose();
        }

        @Override
        public Dimension getPreferredSize() {
            return new Dimension(300, 300);
        }

        private Color getRandomColor() {
            return new Color(rand.nextFloat(), rand.nextFloat(),
                rand.nextFloat());
        }
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    new DemoShapes();
                }
            });
    }
}

Saludos!

444
Comunidad / Re:Me presento!
« en: 19 de Noviembre 2015, 08:03 »
Hola Hquinn!

Bienvenida y mucho ánimo con el ciclo. Desde aquí intentamos ayudar en todo lo que podemos y también esperamos que quienes siguen los cursos vayan colaborando respondiendo a otros usuarios en los foros a medida que vayan teniendo conocimientos suficientes.

Saludos!

445
Hola!

Una vez subido el archivo al servidor (dentro de la carpeta adecuada) basta escribir la ruta en el navegador para poder visualizar el archivo que hemos subido.

En el curso http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=69&Itemid=192 está explicado (en concreto en la entrega CU00730B)

También en el curso está explicada la creación de hipervínculos

Saludos!

446
Hola!

La división entera (div) en C++ se haría usando el operador / siendo los dos términos de la operación enteros.

Partiendo de analizar la expresión (X^2 + 8 MOD 2 DIV Y / (3 – 4)) / (8 - X / 7 + Z * 11 MOD 3)

voy a dividirla en partes. El orden de prioridad para los operadores en programación suele ser el que se explica en http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=276:prioridad-entre-operadores-orden-de-prelacion-exponenciacion-mod-div-logicos-etc-cu00133a&catid=28:curso-bases-programacion-nivel-i&Itemid=59

Primera parte: (X^2 + 8 MOD 2 DIV Y / (3 – 4))

Aquí en la parte superior de la fracción tenemos X^2 + 8 MOD 2 DIV Y que se escribiría ¿X^2 + 8 % 2 / Y? Mejor X^2 + (8 % 2) / Y ya que de esta manera estamos considerando asociatividad izquierda para los operadores mod y div y que ambos tienen igual precedencia. Si no hacemos esto posiblemente tome la expresión dando preferencia a la división con lo que quedaría como X^2 + 8 % (2 / Y)

Nos queda ((X^2 + (8 % 2) / Y) / (3 – 4))



Segunda parte: (8 - X / 7 + Z * 11 MOD 3)

nos queda (8 - X / 7 + Z * 11 % 3)

La unión: ((X^2 + (8 % 2) / Y) / (3 – 4)) / (8 - X / 7 + Z * 11 % 3)


El error que te está dando posiblemente se deba a que el denominador toma valor 0. En una división por ejemplo a/b si el denominador toma valor 0 el resultado es indeterminación (error, más o menos infinito).

Imagina que introduces x = 56, z = 3

Al operar 8 - (56/7) + (3*11) % 3 obtendríamos 8 - 8 + 33%3 = 0, al tener 0 en el denominador nos devolvería error.

Saludos!

447
Hola!

Ahora lo veo bien! Para quienes revisen el ejercicio tener en cuenta que el atributo tipoContrato no se pedía en el ejercicio, es "un añadido"

Saludos!

448
Hola Pedro!

El ejercicio 1 lo veo bien resuelto

El ejercicio 2 también. Si se quiere conseguir una animación más "realista" podemos cambiar document.onkeyup = moverDiv; por document.onkeypress = moverDiv; de este modo el div se mueve manteniendo pulsada la tecla flecha sin necesidad de pulsar cada vez que queramos moverlo. El centrado del div teniendo este margins es más complejo de lo que parece por lo que modificaremos el enunciado para no exigir este punto.

Saludos!

449
Hola Chopi! Creo que leyendo este enlace te quedará claro: https://www.aprenderaprogramar.com/foros/index.php?topic=3407

Si tienes dudas consulta

Saludos!

450
Hola Pedro!

Consultado y es como tú planteas, debía hacerse con mousemove, el único cambio sería:

document.getElementById('caja').onmousemove = mostrarPosicionPuntero;

Todo bien!

451
Hola flpe45! Por si no lo has leído en otros hilos, siempre recomendamos poner un título conteniendo la descripción del problema y las palabras clave, esto se explica en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

Si no lo haces así quien ve el mensaje en el foro no sabe de qué trata el tema y con ello te resultará más difícil que alguien te ayude.

Te indico cuál sería la lógica del juego:

Supongamos que el número pensado debe estar entre 1 y 100.

El computador debe generar un número aleatorio entre 1 y 100 y preguntar, ¿es mayor, menor o exacto?

Si el usuario responde menor, el computador debe calcular el valor medio entre 1 el número introducido y preguntar de nuevo si es mayor, menor o exacto. Debe llevarse una variable con limiteSuperior y otra con limiteInferior

Se sigue procediendo de la misma manera hasta que el usuario responde exacto y el computador responde ¡Por fin lo he conseguido!

Ejemplo: el número pensado es 88. Inicialmente limiteInferior=1 y limiteSuperior=100. El computador genera como aleatorio el 22 y pregunta ¿es mayor, menor o exacto?

Respondemos mayor. Ahora limiteInferior=22 y limiteSuperior=100 El siguiente número es (22+100) / 2 = 61 y el computador pregunta ¿es mayor, menor o exacto?

Respondemos mayor. Ahora limiteInferior=61 y limiteSuperior=100 El siguiente número es (61+100)/2 = 81.5 redondeo hacia abajo 80 y el computador pregunta ¿es mayor, menor o exacto?

Respondemos mayor. Ahora limiteInferior=80 y limiteSuperior=100 El siguiente número es (80+100)/2 = 90 y el computador pregunta ¿es mayor, menor o exacto?

Respondemos menor. Ahora limiteInferior=80 y limiteSuperior=90 El siguiente número es (80+90)/2 = 85 y el computador pregunta ¿es mayor, menor o exacto?

Respondemos mayor. Ahora limiteInferior=85 y limiteSuperior=90. el siguiente número es (85+90)/2 = 87.5 redondeo inferior 87 y el computador pregunta ¿es mayor, menor o exacto?

Respondemos mayor. Ahora limiteInferior=87 y limiteSuperior=90. El siguiente número es (87+90)/2 = 88.5 redondeo inferior 88 y el computador pregunta ¿es mayor, menor o exacto?

Respondemos exacto y el computador responde ¡Por fin lo he conseguido! y termina el programa

Si no sabes cómo implementar esta lógica recomendable seguir el curso http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188

Saludos!

452
Hola bermartinv!

Para el primer ejercicio indicarte que aunque no genera un error veo preferible seguir siempre la norma de incluir paréntesis vacíos cuando se invoca new, por ejemplo medico.prototype=new persona(); en lugar de medico.prototype=new persona;

Para el segundo ejercicio veo algunas cosas que habría que mejorar:

a) En el código de Persona incluyes la función saludar y en la función saludar invocas this.tipo

Si hago esto:

      var persona1 = new Persona('Antonio');
      persona1.saludar();


Obtengo esto:

Soy  Antonio profesor undefined


Este resultado no es correcto, ¿por qué ocurre? Porque no has respetado el esquema de herencia. Una persona no puede saber si va a ser creada directamente o si simplemente va a facilitar sus métodos y atributos en la cadena de herencia. Por tanto no debe usar atributos que no le corresponden.

b) Otra cosa que no veo correcto es el uso del atributo tipo ¿Está eso en el esquema de herencia que plantea el ejercicio? Además como parámetro no parece necesario. Si se crea un profesor titular, este atributo podrías establecerlo sin necesidad de recibirlo como parámetro, por el simple hecho de que el objeto es profesor titular, sin necesidad de recibirlo como argumento.

Entiendo que lo has hecho para hacer el saludo más completo, pero si lo planteas de esa manera tendrías que eliminar la referencia a atributos inferiores en el esquema de herencia, o hacer una comprobación de tipos antes de usar esos atributos.

Saludos!

453
Hola!

Parece que tienes algún error como $menaje.="</body><footer><p><

pero debería ser $mensaje.="</body><footer><p><

Es recomendable hacer pruebas del código por ejemplo créate un usuario supón que tiene id=455, escribe una condición de modo que solo se le envíe el email a ese usuario por ejemplo SELECT email FROM inscripcion WHERE estado="activado AND id=455

Pruébalo todo y cuando lo tengas probado quitas el AND para que comience a enviarse al resto de usuarios.

Otra cosa que deberías pensar es el número de usuarios que tienes. Si por ejemplo tienes 30 o 40 usuarios no hay problema en usar un bucle y enviar un mail a cada uno, pero si tienes 300 o 400 ó mas será más eficiente mandar un solo mail y poner los destinatarios como destinatarios ocultos (con copia oculta, BCC). Repetir el envío del mismo mail cientos de veces además de ser ineficiente te puede generar problemas, por ejemplo que te encuentres con limitaciones en tu servidor y que éste rechace el envío.

Si no quieres que los destinatarios vean los correos de los demás, te puedes poner a tí misma (la administración de la página web) y al resto de destinatarios como BCC (copia oculta).

Saludos!

454
Hola Juan el ejercicio está incompleto, faltan por ejemplo los métodos getter y setter que debes incluir en todos los ejercicios. Revisa estos hilos para orientarte:

Ejercicio CU00641B: https://www.aprenderaprogramar.com/foros/index.php?topic=1220

Ejercicio CU00642B: https://www.aprenderaprogramar.com/foros/index.php?topic=1238.0

Saludos!

455
Hola Juan, el ejercicio pedía 3 clases y no has incluido el código de 3 clases. El código que has incluido también está incompleto. Revísalo pues está incompleto. Saludos!

456
Hola Enzo!

Tu ejercicio está bien respondido. Sobre tu pregunta de cómo nombrar packages, por convención se recomienda nombrarlos empezando con minúsculas (aunque al igual que otras normas para dar nombres, no es estrictamente obligatorio).

Por tanto para nombrar packages usar siempre nombres que empiecen por minúsculas.

Saludos!

457
Hola neroeazurro en este curso tienes explicado todos los conceptos de bases de la programación y pseudocódigo: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=28&Itemid=59

Dentro de los ejercicios del curso tienes resueltos ejercicios similares a los que planteas.

El curso anterior se complementa con este otro: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=36&Itemid=60

Saludos!

458
Hola neroeazurro en este curso tienes explicado todos los conceptos de bases de la programación y pseudocódigo: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=28&Itemid=59

Dentro de los ejercicios del curso tienes resuelto lo que planteas, por ejemplo en la entrega CU00158A y en otros ejercicios resueltos del curso.

Saludos!

459
Hola Juan como único detalle escribir setNombre en lugar de setnombre

Saludos!

Páginas: 1 ... 18 19 20 21 22 [23] 24 25 26 27 28 ... 68

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