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 ... 37 38 39 40 41 [42] 43 44 45 46 47 ... 93
821
Hola josel el ejercicio pide que se devuelvan las dos primeras letras de la primera cadena y tu código devuelve las tres primeras letras, revísalo.

Saludos

822
Hola Camila comentarte que para pegar código en los foros debes hacerlo como se explica en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

Para ayudarte con los ejercicios debes darnos la referencia del ejercicio si se trata de un curso de aprenderaprogramar.com, por ejemplo CU00825B sería un ejemplo de referencia.

Saludos

823
Hola josel

Tu ejercicio es correcto, bien el código y bien los comentarios, aunque has resuelto el problema usando recursión (llamada a un método desde el propio método). La recursión la consideramos un elemento de programación avanzada y en el curso no se pide usar recursión (aunque se puede usar como en este caso si se hace correctamente).

El ejercicio también se puede resolver sin recursión, que es más fácil de comprender, por ejemplo como se hace en https://www.aprenderaprogramar.com/foros/index.php?topic=1972.0

Saludos

824
Hola, no te preocupes porque aquí estamos para aprender  :D

No se puede comparar usando == ni != por lo que se explica en http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=628:el-metodo-equals-en-java-diferencia-entre-igualdad-e-identidad-comparar-objetos-ejemplos-cu00662b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188

Citar
Llegamos a conclusiones importantes:

1) La comparación usando == no se debe usar para comparar el “contenido” de los objetos, sino únicamente para comparar la información de las variables apuntadoras. Usar == para comparar objetos es un error frecuente en programadores con poca experiencia.

2) Para comparar el contenido de los objetos hemos de usar, en general, un método especial del que disponen todos los objetos denominado equals.

Saludos

825
Hola, el uso que te he indicado es un uso habitual en programación orientada a objetos. Creas objetos cuando te sean necesarios, aunque no a lo loco. A medida que vayas adquiriendo experiencia irás adquiriendo mayor destreza para todo esto. Saludos.

826
Hola christagary, para incluir una solución a un ejercicio en los foros abre un nuevo hilo. Sólo responde sobre un hilo existente si vas a seguir una conversación abierta.

Tu ejercicio está correcto  :D

También puede resolverse sin usar startsWith como se hace en este hilo: https://www.aprenderaprogramar.com/foros/index.php?topic=2873.0

Saludos

827
Hola, perfecto, exactamente lo que se pedía, hacer una conversión del tipo de dato que evitara que saltara el error

Saludos

828
Hola David, esta condición while (respuesta != mesSecreto) está mal expresada. respuesta es un String (un objeto, no es un tipo primitivo) y los String no se pueden comparar usando == ni !=

Para comparar objetos hemos de usar equals

while (respuesta.equals( mesSecreto) == false)

También es válido while (!respuesta.equals( mesSecreto))

El cambio obliga a modificar ligeramente la lógica para que el programa funcione bien quedaría así:

Código: [Seleccionar]
import java.util.Scanner;
public class MesSecreto {
    // instance variables - replace the example below with your own
    private String registroTeclado;

    /**
     * Constructor for objects of class MesSecreto
     */
    public MesSecreto() { }

    public static void main (String [] arg)
    {
        Scanner  teclado = new Scanner (System.in);
        String  mes[] = {"enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"};
        String mesSecreto = mes[1];
        System.out.println("Adivine el mes secreto. Introduzca el nombre del mes en minúsculas: ");
        String respuesta="";

        while (!respuesta.equals( mesSecreto)) {
            respuesta=teclado.nextLine();
            if (respuesta.equals(mesSecreto))
            {   System.out.println("!Has acertado!");
                respuesta=mesSecreto;
            }
            else
            {
                System.out.println("No ha acertado. Intente adivinarlo introduciendo otro mes:");
            }
        }
    }
}

Saludos

829
Hola David, si no entiendes el código no te sirve como ejercicio ni como aprendizaje. Te recomiendo, aunque sea costoso, hacer lo siguiente. Empieza el ejercicio desde cero y vete escribiendo código (que entiendas bien lo que estás haciendo) hasta el momento donde no sepas resolver algo. En ese momento pega el código que tengas desarrollado y explica qué es lo que no sabes resolver o te da error. De esa manera te podremos aconsejar para que seas capaz tú mismo de completar el código y que realmente te sea útil para aprender.

Saludos

830
Hola anmaroso, pega el código de un fichero con datos de ejemplo (borra datos reales y reemplázalos por ficticios) e indica a dónde debes pasar los valores ¿Tratas de mostrarlos en pantalla?

Saludos

831
Ya está disponible el libro "Aprende a programar con pseudocódigo, diagramas de flujo y ejercicios de ejemplo resueltos en C. Algoritmos y lógica para aprender programación desde cero". Está disponible tanto en papel como en formato e-book



Libro dirigido al colectivo de personas que por interés personal, motivos profesionales o de estudios, deseen aprender programación partiendo desde cero. Todos los lenguajes de programación tienen una base común (algoritmos, lógica…), explicada en este libro con enfoque didáctico y paso a paso. Puedes leer toda la información pulsando en este enlace: http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=693&Itemid=211

832
Hola David dentro de la clase ListaCantantesFamosos puedes invocar un objeto VisualizadorDeMensajes. Pero tenemos dos alternativas para usarlo. Tú has declarado un VisualizadorDeMensajes como atributo de una ListaCantantesFamosos.

Pero otra opción (posiblemente preferible) es que el VisualizadorDeMensajes sea un atributo local al método.

El único atributo de la clase sería private ArrayList <String> listaDeCantantes;

El método quedaría así:

Código: [Seleccionar]
    public void listadoCompleto()   // Metodo que recorre todo el ArrayList y lo visualiza en pantalla
    {
        VisualizadorDeMensajes muestraEnPantalla = new VisualizadorDeMensajes();
        for (String nombre:listaDeCantantes)
        {
        muestraEnPantalla.listaPosicionYCantante (listaDeCantantes.indexOf(nombre),nombre);
        }   
    }

Si lo declaras como atributo, todo objeto ListaCantantesFamosos incorpora como atributo un VisualizadorDeMensajes, de este modo si creas diez listas de cantantes a su vez estarás creando diez visualizadores.

Si lo defines como atributo local al método, el visualizador se crea para ejecutar el método (temporalmente) y luego se destruye. En programación orientada a objetos es frecuente hacer esto.


Saludos

833
Hola David la idea es aprender bien más que aprender rápido, por eso puede ser conveniente detenerse, incluso volver atrás y repasar temas ya vistos cuando sea necesario.

Otra cosa interesante es repasar los ejercicios comentados en los foros, analizando esos ejercicios y leyendo los comentarios podrás aprender muchas cosas útiles. Para ello simplemente introduce el código del ejercicio en el buscador y revisa comentarios de otros compañeros.

El método public int seguirIntroduciendoDatos(String seguir) simplemente no debería estar en la clase RegistroTeclado. La clase RegistroTeclado simplemente se tiene que preocupar de representar una entrada de teclado. Una entrada de teclado no se preocupa de si el usuario debe seguir introduciendo datos, simplemente ha de representar una entrada de teclado. ¿Dónde debería estar entonces ese código? A falta de un sitio específico, en la clase con el método main.

Saludos

834
Hola, si quieres empezar a programar desde cero las bases de la programación son comunes para todos los lenguajes y aplicaciones (bueno en realidad no para todos pero sí para casi todos). Puedes leer algo sobre eso en https://www.aprenderaprogramar.com/foros/index.php?topic=1313.0

Para programar automatizaciones con control de máquinas hay muchos y diferentes tipos de soluciones. Una respuesta general es que necesitamos:

- Un programa de ordenador

- Una placa madre (microchip) controladora del motor de la máquina (con un microcontrolador tipo AVR, STM32 o similar)

- Conductores eléctricos que lleven la energía eléctrica para alimentar el motor

- Motores (servo-motores)

El programa de ordenador envía datos a la placa madre controladora, por ejemplo a través de una conexión usb. El microcontrolador procesa los datos y envía señales a los motores, digamos que activa su alimentación y los motores se ponen en marcha.

Los programas de ordenador que contienen la lógica de actuación se pueden escribir en diferentes lenguajes como C, C++, C#, Python u otros. En otros casos se usan metalenguajes específicos para una placa.

Llegar a tener todos los conocimientos necesarios para todo lo que implica programar y actuar sobre motores es muy complejo. Normalmente diferentes equipos de personas elaboran distintas partes que después se unen y permiten que los sistemas funcionen.

Si no tienes ningún conocimiento de programación te recomiendo aprender primero con un curso básico antes de pasar a cuestiones complejas.

Saludos.

835
Hola volcom, ¿algún motivo especial para usar Just Basic? El lenguaje con base de sintaxis Basis más usado es el Visual Basic, del que tenemos un tutorial completo en la web: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=37&Itemid=61

El programa que planteas no parece muy complejo, pero tampoco es algo propio de la iniciación en la programación ya que antes de trabajar con archivos es más habitual estudiar cosas básicas de los lenguajes como condicionales, bucles, etc.

De cualquier forma si sigues con Just Basic lo mejor será que sigas algún tutorial y vayas paso a paso, por ejemplo he visto este: http://justbasic.conforums.com/index.cgi?board=tutorial&action=display&num=1188308570 que aunque está en inglés parece que repasa las cosas básicas

Saludos

836
Hola Víctor, en primer lugar darte la bienvenida a los foros. También señalarte que para pegar código tenemos unas instrucciones indicadas en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0 donde se explica cómo hacerlo para que sea visualizable correctamente.

Respecto al código, he probado este código y me ha funcionado bien (para probarlo, crear un proyecto de Visual Basic con un picture box y escribir las rutas de imágenes correctas para nuestro pc):

Código: [Seleccionar]
Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.IO

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        MsgBox("eo")
        PictureBox1.Image = Image.FromFile("C:\Users\Micarpeta\imagen1.jpg")
        Dim miImagenBytes() As Byte = Imagen_Bytes(Image.FromFile("C:\Users\Micarpeta\imagen2"))
        PictureBox1.Image = Bytes_Imagen(miImagenBytes)

    End Sub

    Private Function Imagen_Bytes(ByVal Imagen As Image) As Byte()
        'si hay imagen
        If Not Imagen Is Nothing Then
            'variable de datos binarios en stream(flujo)
            Dim Bin As New MemoryStream
            'convertir a bytes
            Imagen.Save(Bin, Imaging.ImageFormat.Jpeg)
            Bin.Dispose()
            'retorna binario
            Return Bin.GetBuffer
        Else
            Return Nothing
        End If
    End Function

    Private Function Bytes_Imagen(ByVal Imagen As Byte()) As Image
        Try
            'si hay imagen
            If Not Imagen Is Nothing Then
                'caturar array con memorystream hacia Bin
                Dim Bin As New MemoryStream(Imagen)
                'con el método FroStream de Image obtenemos imagen
                Dim Resultado As Image = Image.FromStream(Bin)
                Bin.Dispose()
                'y la retornamos
                Return Resultado
            Else
                Return Nothing
            End If
        Catch ex As Exception
            Return Nothing
        End Try
    End Function

End Class

Saludos

837
Hola saulodavid

Para que el código quede correctamente visualizable en los foros es importante hacerlo como se explica en este hilo: https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

También es conveniente explicar todos los detalles posibles, en este caso dices que declaraste la variable pero no indicas a qué variable te refieres, e indicas que te da un error pero no los detalles ¿A qué variable te refieres? ¿En qué línea te da el error? ¿Cuál es el mensaje de error? ¿Qué es lo que estás intentando hacer?

Saludos

838
Hola, he estado haciendo alguna prueba y te paso el código que he probado a ver si te sirve:

Código: [Seleccionar]
Public Class Form1

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim fechaHora As Date = #10/14/2015 10:34:23 AM#
        Dim fechaStr As String = Format(fechaHora, "yyyy") & "-" & Format(fechaHora, "dd") & "-" & Format(fechaHora, "MM") & "T" & Format(fechaHora, "hh:mm:ss")
        MsgBox("Inicialmente: " & fechaHora & vbCrLf & "Formateado: " & fechaStr)

    End Sub
End Class

Para mantener el orden en los foros, reservamos cada hilo para un tema (en este caso este hilo para el asunto de las fechas y cómo convertirlas de formato). Para otras cosas, abrir un nuevo tema (como digo es con vistas a mantener un orden).

Saludos

839
Hola David, no es farragoso que pongas varias clases siempre que cada clase tenga un contenido mínimo (es decir, no tendría sentido crear una clase para poner sólo dos líneas por ejemplo) y siempre que sea adecuado para un buen diseño. Si es así, te sirve para practicar con programación orientada a objetos.

Sobre el ejercicio los comentarios serían:

MISMOS QUE PARA EL EJERCICIO ANTERIOR:

Incoherencia: tener un atributo en la clase ListaCantantesFamosos denominado nombreDeCantante. Ese atributo debería llamarse nombreDeLaLista.

private String nombreDeCantante; // Establecemos atributo nombre de la lista.

Preferible no usar eñes en nombres de atributos, clases o métodos. Por eso es mejor addDatos que añadeDatos

Los métodos en general deben ser public y no void, por ejemplo:

Mal: static void solicitudDeDatos(int veces,String tipoDeDatos)

Bien: public void solicitudDeDatos(int veces,String tipoDeDatos)

De este modo, para invocar un método antes tienes que crear un objeto usando new (no podrás hacerlo invocando directamente VisualizadorDeMensajes.solicitudDeDatos(...) ). ¡En la programación orientada a objetos se trabaja creando objetos, solo en algunas circunstancias especiales no se hace así!


PARA ESTE EJERCICIO EN CONCRETO

Un for extendido preferiblemente no lleva contador: leer este hilo, www.aprenderaprogramar.com/foros/index.php?topic=3210


En la clase ListaCantantesFamosos tienes un mal diseño que es este:

Código: [Seleccionar]
    public void añadeDatos (String valor_nombre) // Añade al ArrayList el nombre introducido.
    {
        listaDeCantantes.add (valor_nombre);
        listadoCompleto();  // Llama al metodo que muestra todo el contenido del ArrayList.
    } // Cierre del metodo.


Para hacer un buen diseño un método debe encargarse de hacer una cosa concreta, tener un fin concreto y no varios fines ni hacer varias cosas. El método añadeDatos o addDatos debe encargarse sólo de añadir datos, no es un buen diseño que en un método cuyo nombre indica que sirve para añadir datos pongamos una instrucción para mostrar datos por pantalla. ¿Mostrar algo por pantalla es añadir un dato? No, por lo tanto deben ser tareas separadas. Lo normal será que desde el main nos encarguemos primero de añadir el dato y luego de hacer que se muestre por pantalla.

Saludos

840
Hola David, la separación del código en clases la estás planteando por el buen camino, todavía tendrás que ir mejorando pero en general el diseño separado en clases te sirve para manejar los conceptos de la programación orientada a objetos. Te comento algunos detalles a mejorar:

Incoherencia: tener un atributo en la clase ListaCantantesFamosos denominado nombreDeCantante. Ese atributo debería llamarse nombreDeLaLista.

private String nombreDeCantante; // Establecemos atributo nombre de la lista.

Preferible no usar eñes en nombres de atributos, clases o métodos. Por eso es mejor addDatos que añadeDatos

Los métodos en general deben ser public y no void, por ejemplo:

Mal: static void solicitudDeDatos(int veces,String tipoDeDatos)

Bien: public void solicitudDeDatos(int veces,String tipoDeDatos)

De este modo, para invocar un método antes tienes que crear un objeto usando new (no podrás hacerlo invocando directamente VisualizadorDeMensajes.solicitudDeDatos(...) ). ¡En la programación orientada a objetos se trabaja creando objetos, solo en algunas circunstancias especiales no se hace así!

En un bucle el incremento de la variable del bucle no se suele escribir como numeroDeDatos = numeroDeDatos + 1 sino como numeroDeDatos++

Saludos

Páginas: 1 ... 37 38 39 40 41 [42] 43 44 45 46 47 ... 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".