Autor Tema: Implementando una boletería de cine en Java: películas, entradas, estadísticas  (Leído 22842 veces)

keylatmnt24

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 3
    • Ver Perfil
Hola! Agradezco profundamente la ayuda recibida en un anterior ejercicio planteado.
Tengo este nuevo ejercicio que no logro entender cómo realizarlo, agradecería su ayuda 

:-[ :'( Gracias de antemano.

Descripción inicial:

La lista de películas es Fija. La cartelera actual es la siguiente:

• Ready Player One
• AVENGERS Infinity war
• Viaje en el tiempo

El costo de las entradas es el siguiente:

• Jubilados y adultos mayores (más de 55 años) pagan media entrada
• Adultos pagan S/.30
• Menores de 12 años pagan S/.10

Si el pago es en efectivo, debe sumarse el IGV ( 18% )
Si es pago es con tarjeta debe agregarse 3.5% de comisión y sobre ese monto, agregar el IGV.

Nota:
• Por cada película hay 20 asientos (es una sala super VIP).
• Se debe ingresar la película, y la cantidad de entradas por tipo de usuario así
como la forma de pago.
• El sistema llevará el control de la capacidad de la sala, las ventas por entradas y la
estadísticas de tipos de usuario que será mostradas al cierre del día (CERRAR es
una opción del menú).
« Última modificación: 22 de Febrero 2019, 20:43 por Ogramar »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re:Implementando una boletería de cine en Java
« Respuesta #1 en: 07 de Septiembre 2018, 02:17 »
Hola.

Puede haber varias formas de resolverlo.
Puesto que la información con la que nos interesa trabajar es todo relacionado con la sala de cine: titulo de la pelicula que se proyecta en la sala, asientos disponibles, tipo de personas que han comprado entrada....

Parece que la entidad "sala" es el centro clave de este ejercicio, así que podríamos crear una clase llamada Sala.
Esta clase se encargaría por si sola de la gestión de sus asientos. Es decir, ella se encargaría de controlar cuantos asientos quedan disponibles, contar los tipos de persona que han comprado entrada para luego poder mostrar estadisticas, mostrar la estadística cuando se lo pidamos,  y sobre todo gestionar la venta: preguntar cuantas entradas quiere el usuario, para que tipo de usuario, comprobar que hay suficientes asientos, preguntar método de pago...

Así que ves pensando que atributos necesitaría esta clase Sala.
Algunos son muy evidentes, como el título de la película que proyecta o los asientos disponibles, que empezarían con valor 20 e irían disminuyendo según se venden entradas.
Otros no son tan evidentes, pero probablemente nos interesaría tener contadores para cada tipo de cliente (jubilados, adultos y menores) para luego poder mostrar estadisticas

Piensa también que posibles método podríamos necesitar. EL más importante sin duda sería el de hacer la venta, ya que pide toda la informacion, comprueba si es posible realizar la venta con los asientos que hay disponibles, calcula el importe de la venta final y actualiza todos los contadores que podamos necesitar.

Ves pensándolo, yo intentaré hacer una por mi parte y a ver si mañana sobre esta misma hora puedo compartirla por aquí.

Una vez tengamos esta clase Sala. Desde otra clase con un metodo main() podemos crear tres objetos de la clase Sala, uno por cada película y crear el menu para que el usuario elija para cuál Sala quiere comprar entrada.

Si lo piensas, hay otras "entidades" en el ejercicio: Jubilados, Adultos y Menores que podrían ser clases herederas de una clase abstracta llamada Persona, puesto que todos son personas.

Sin embargo, para este ejercicio, no resulta necesario crear clases para estas entidades ya que apenas necesitamos tener información sobre ellos. Básicamente solo queremos contarlos para las estadísticas y aplicarles el precio que les corresponda. Nada más.

Si el ejercicio nos pidiera más información sobre estas Personas, como por ejemplo tener un listado de clientes asociados al cine, saber su nombre, su documenteo de identidad, saber si ha comprado algún bono que por ejmplo le permitiera ver 10 peliculas a precio reducido, saber cuantas entradas de ese bono ha gastado ya, etc...
entonces si sería necesario crear clases para estas entidades.

Pero no es el caso, y con crear una clase para la entidad Sala, es más que suficiente
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re:Implementando una boletería de cine en Java
« Respuesta #2 en: 09 de Septiembre 2018, 01:37 »
Hola, ¿cómo lo llevas?
Tengo un código ya escrito y funcionando, pero el ejercicio has de hacerlo tú.

Si el conjunto del ejercicio te parece demasiado grande y abrumador, ves afrontándolo en pequeñas partes.
Por ejemplo, olvida el "todo" y piensa sola y unicamente en como podría ser el algoritmo que hace la venta de entradas.
No tienes ni que pensarlo en código Java, puedes hacerlo con un simple pseudocódigo, sin pensar en "convencionalismos". Escríbelo a tu modo, como tu lo entiendas mejor.
Por ejemplo:
Citar
precio = 0
si asientosLibres = 0
    escribir "No hay asientos libres"
sino
    escribir "Indique tipo cliente: J - Jubilado / A - Adulto / M - Menor"
    leer tipoCliente
    escribir "Indique cuantas entradas quiere"
    leer cantidadEntradas
    si cantidadEntradas > asientosLibres
        escribir "No hay suficientes asientos"
    sino
        escribir "Elija metodo de pago: E - Efectivo / T - Tarjeta"
        leer metodoPago;
        si tipoCliente = "J"
            precio = //Calcular precio para jubilados
        si tipoCliente = "A"
            precio = //Calcular precio para adultos
        si tipoCliente = "M"
            precio = //Calcular precio para menores
        finsi
        si metodoPago = "T"
            precio = precio  + 3.5% //Comision por tarjeta
        finsi
        precio = precio + 18% //Impuesto
        escribir "Venta realizada. Precio final: " + precio
finsi

Esto es parte de lo que este algoritmo, que sería un método de la clase Sala, tiene que hacer.
No está completo, por ejemplo tendría que actualizar contadores (que serían atributos de Sala) para saber cuantos asientos libres quedan tras esta venta y contar el tipo de cliente al que se le ha hecho la venta para posteriormente mostrar estadisticas.

Intenta completarlo y de ahí luego intentar saca un código Java.
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

keylatmnt24

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 3
    • Ver Perfil
Re:Implementando una boletería de cine en Java
« Respuesta #3 en: 10 de Septiembre 2018, 04:47 »
Hola! Estoy tratando de realizar el código en Java pero no logro determinar dónde poner los contadores ... y también me salen dos errores que no comprendo porque surgen ... Agradecería su ayuda  :'(

Código: [Seleccionar]
package boleteria_cine;

import java.util.Scanner;

public class Sala {
Scanner cine = new Scanner (System.in);
int precio = 0;
int asientosLibres = 0;
int cont = 0;

if (asientosLibres == 0) {
System.out.println("NO HAY ASIENTOS LIBRES");
} else {
System.out.println("Indique tipo cliente: J - Jubilado o adulto mayor (mayor a 55) / A - Adulto / M - Menor (menores de 12)");
String tipoCliente = cine.nextLine();
System.out.println("Indique cuantas entradas desea: ");
int cantidadEntradas = cine.nextInt();
if (cantidadEntradas > asientosLibres) {
System.out.println("NO HAY ASIENTOS LIBRES");
} else {
System.out.println("Elija metodo de pago: E - Efectivo / T - Tarjeta");
String metodoPago = cine.nextLine();
if (tipoCliente.equalsIgnoreCase("J")) {
precio = 15;
}
if (tipoCliente.equalsIgnoreCase("A")) {
precio = 30;
}
if (tipoCliente.equalsIgnoreCase("M")) {
precio = 10;
}
}
}
if (metodoPago.equalsIgnoreCase("T")) {
precio = (int) (precio + precio*0.18);
System.out.println("VENTA REALIZADA. PRECIO FINAL: " + precio);
}
cont ++;
if (cont <= asientosLibres) {
cont = asientosLibres;
System.out.println("QUEDAN " + (int) (asientosLibres - cont) + "asientos.");

}
}
« Última modificación: 22 de Febrero 2019, 20:44 por Ogramar »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re:Implementando una boletería de cine en Java
« Respuesta #4 en: 11 de Septiembre 2018, 01:57 »
Estás escribiendo código directamente en el cuerpo de la clase Sala.
Esto no es correcto.
Sala es una clase, una entidad, que va a representar algo y que tiene determinadas funcionalidades.
Estas funcionalidades, por ejemplo vender una entrada/boleto de cine, solo ha de ejecutarse cuando se lo pidamos. Por lo tanto, esta parte del código ha de estar escrita en un método, para que solo se ejecute cuando invoquemos a este metodo.

Es decir, esta clase ha de tener unos atributos, un constructor y los métodos que pueda necesitar para cumplir con su cometido

Pensemos en los atributos. ¿Que propiedades tiene una sala? Mejor dicho, ¿que propiedades de una sala son las que nos interesan?
Porque una sala tiene unas dimensiones, tiene cierta cantidad de puertas de emergencia, tiene una moqueta de un determinado color.... pero todo esto no nos interesa.

También tiene una película en proyección. Esto sí nos interesa, queremos un atributo que guarde el nombre de la película que está proyectando. Este atríbuto es el que permite diferenciar una sala de otra. Porque nuestro ejercicio final va a trabajar de hecho con 3 salas distintas al mismo tiempo. Y cada una tendrá sus clientes, sus ventas y su propia recaudación.

Tiene una cantidad determinada de asientos. 20 asientos para ser más exactos.
Esto también nos interesa. Otro atributo más.

Luego además, la sala tiene clientes. Esto también nos interesa contarlos, para poder hacer una estadística de clientes. Hay tres tipos de clientes distintos, así que como atributos usaremos tres contadores distintos, uno para cada tipo de cliente.

Por último, la sala tiene una recaudación que va aumentando con cada entrada/boleto que se vende. Esto también nos interesa contabilizarlo.

Así pues, estos podrían ser los atributos de nuestra clase Sala
Código: [Seleccionar]
private String nombrePelicula;
private int asientosLibres = 20;
private int contJubilados = 0;
private int contAdultos = 0;
private int contMenores = 0;
private double recaudacion = 0;

El contador de asientos lo he llamado asientosLibres y lo he iniciado en 20.
También podríamos haberlo llamado asientosOcupados e iniciarlo con valor 0.
Ambas opciones serían válidas, es cuestión de gustos.

Ya tenemos atributos. Pensemos en un constructor.
No hay mucho que pensar la verdad. El valor de los atributos siempre van a ser los mismos al crear un objeto Sala. Da igual si creamos 500 objetos Sala, todos empezarán con el contador de asientos en 20 y el resto de contadores en 0.
El único atributo que será distinto para cada objeto Sala, sería el nombre de la película que va a proyectar. Ergo, este es el único valor que queremos recibir mediante el constructor.

Código: [Seleccionar]
public Sala(String nombre) {
nombrePelicula = nombre;
}

De este modo, cuando instanciemos objetos Sala desde otra clase con metodo main, le indicaremos a cada una el nombre de la pelicula que proyecta.

Y ahora viene lo "complicado". Los métodos para esta clase.
Se podría empezar poniendo los típicos setters y getters. Pero lo cierto es que en principio no los vamos a necesitar ya que la mayoría de los atributos se van a gestionar dentro de la clase, no van a ser solicitados(get) y mucho menos modificados(set) desde otras clases. Así que podemos ahorrarlos.
Como mucho, un get para el nombre de la película. Así cada objeto Sala podrá indicar que película está proyectando:
Código: [Seleccionar]
public String getNombrePelicula() {
return nombrePelicula;
}

Pasemos a los métodos importantes. Necesitaremos uno que lleve a cabo la gestión de la venta de entradas.
Y otro que nos muestre estadísticas de venta de la sala.

Centrémonos, únicamente en el de la venta.
El código que habías escrito pinta bastante bien. Uno de los errores que te da es cuando preguntas por el valor de la variable metodoPago casi al final.

Esta variable solo la declaras si hay suficientes asientos libres para cubrir la demanda del cliente.
Si no hay asientos,
    no declaro variable metodoPago;
si hay asientos
    sí la declaro;


Esto es correcto.
Pero luego intentas acceder a esta variable desde un punto del programa que da por hecho que la variable está declarada independientemente de si hay asientos o no.
Es decir, "te has salido del alcance de esta variable"

Te marco en verde el "alcance" (scope) de la variable metodoPago.
Y en rojo la parte donde intentas acceder a ella, estando ya fuera de su alcance.

Citar
if (asientosLibres == 0) {
         System.out.println("NO HAY ASIENTOS LIBRES");
      } else {
         System.out.println("Indique tipo cliente: J - Jubilado o adulto mayor (mayor a 55) / A - Adulto / M - Menor (menores de 12)");
         String tipoCliente = cine.nextLine();
         System.out.println("Indique cuantas entradas desea: ");
         int cantidadEntradas = cine.nextInt();
         if (cantidadEntradas > asientosLibres) {
            System.out.println("NO HAY ASIENTOS LIBRES");
         } else {
            System.out.println("Elija metodo de pago: E - Efectivo / T - Tarjeta");
            String metodoPago = cine.nextLine();
            if (tipoCliente.equalsIgnoreCase("J")) {
               precio = 15;
            }
            if (tipoCliente.equalsIgnoreCase("A")) {
               precio = 30;
            }
            if (tipoCliente.equalsIgnoreCase("M")) {
               precio = 10;
            }
         }
         }

      if (metodoPago.equalsIgnoreCase("T")) {
         precio = (int) (precio + precio*0.18);
         System.out.println("VENTA REALIZADA. PRECIO FINAL: " + precio);
      }

      cont ++;
      if (cont <= asientosLibres) {
         cont = asientosLibres;
         System.out.println("QUEDAN " + (int) (asientosLibres - cont) + "asientos.");
      }

La variable metodoPago solo "existe" en la porción marcada en verde, ese es el límite de su alcance.
Esta porción verde, solo se ejecutaría si se cumple una determinada condición (que haya suficientes asientos libres)
Por lo tanto es posible que no se ejecute.
Si no se ejecuta, no se declara la variable metodoPago. Y si no se declara, no puedes preguntar por ella.
Y esto es lo que estás haciendo en la porción marcada en rojo, estás preguntando por una variable que posiblemente NO se ha declarado.
Por eso el compilador Java muestra un warning. Si permitiese ejecutarse el código tal y como está escrito, cuando ocurriese que alguien pide más asientos de los que quedan libres, se produciría un error fatal porque el programa preguntaría por una varaible que no se ha llegado a declarar.

Para corregir esto, tienes dos opciones.
Una, declarar la variable al principio del método, para asegurarte de que va a existir siempre, ante cualquier posibilidad.
Esto aumentaría el alcance de la variable a todo el método completo. Marco en verde todo su alcance, vamos, el método al completo
Citar
      String metodoPago;
      if (asientosLibres == 0) {
         System.out.println("NO HAY ASIENTOS LIBRES");
      } else {
         System.out.println("Indique tipo cliente: J - Jubilado o adulto mayor (mayor a 55) / A - Adulto / M - Menor (menores de 12)");
         String tipoCliente = cine.nextLine();
         System.out.println("Indique cuantas entradas desea: ");
         int cantidadEntradas = cine.nextInt();
         if (cantidadEntradas > asientosLibres) {
            System.out.println("NO HAY ASIENTOS LIBRES");
         } else {
            System.out.println("Elija metodo de pago: E - Efectivo / T - Tarjeta");
            metodoPago = cine.nextLine();
            if (tipoCliente.equalsIgnoreCase("J")) {
               precio = 15;
            }
            if (tipoCliente.equalsIgnoreCase("A")) {
               precio = 30;
            }
            if (tipoCliente.equalsIgnoreCase("M")) {
               precio = 10;
            }
         }
         }
      if (metodoPago.equalsIgnoreCase("T")) {
         precio = (int) (precio + precio*0.18);
         System.out.println("VENTA REALIZADA. PRECIO FINAL: " + precio);
      }
      cont ++;
      if (cont <= asientosLibres) {
         cont = asientosLibres;
         System.out.println("QUEDAN " + (int) (asientosLibres - cont) + "asientos.");
      }
   }

Segunda opcion.
Más correcta a mi entender. Introducir la porción de código que antes habíamos marcado en rojo, dentro de la parte que solo se ejecuta si hay suficientes asientos.
Es más correcta porque lo cierto es que, si no hay suficientes asientes, no haremos ninguna venta. Y si no hacemos ninguna venta, no necesitamos preocuparnos del método de pago, ya que no ha habido ningún pago en realidad.

Citar
if (asientosLibres == 0) {
         System.out.println("NO HAY ASIENTOS LIBRES");
      } else {
         System.out.println("Indique tipo cliente: J - Jubilado o adulto mayor (mayor a 55) / A - Adulto / M - Menor (menores de 12)");
         String tipoCliente = cine.nextLine();
         System.out.println("Indique cuantas entradas desea: ");
         int cantidadEntradas = cine.nextInt();
         if (cantidadEntradas > asientosLibres) {
            System.out.println("NO HAY ASIENTOS LIBRES");
         } else {
            System.out.println("Elija metodo de pago: E - Efectivo / T - Tarjeta");
            String metodoPago = cine.nextLine();
            if (tipoCliente.equalsIgnoreCase("J")) {
               precio = 15;
            }
            if (tipoCliente.equalsIgnoreCase("A")) {
               precio = 30;
            }
            if (tipoCliente.equalsIgnoreCase("M")) {
               precio = 10;
            }
            if (metodoPago.equalsIgnoreCase("T")) {
               precio = (int) (precio + precio*0.18);
               System.out.println("VENTA REALIZADA. PRECIO FINAL: " + precio);
            }

         }

Otra cosa importante que hay corregir. La parte final donde contabilizamos los asientos que quedan libres (o que están ocupados).
Esto que has puesto:
Código: [Seleccionar]
cont++;
if (cont <= asientosLibres) {
cont = asientosLibres;
System.out.println("QUEDAN " + (int) (asientosLibres - cont) + "asientos.");
}

No tiene mucho sentido. Parece que cuentas los asientos de uno en uno. Cada oper acion de venta, un asiento (cont++);
Pero no es así, porque en una operación de venta el usuario puede pedir 5 asientos, 10 asientos, incluso los 20 asientos de toda la sala, para el solito.

No necesitas ninguna varaible cont, porque ya sabemos gracias a la variable cantidadEntradas, cuantos asientos tenemos que restar del atributo asientosLibres.
Y esto, además, solo ha de hacerse en el caso de que se haya completado la venta.
Por lo tanto, también iría en la misma parte de código que hemos modificado antes.

El metodo quedaría así, ahora ya sí, libre de errores de compilación.
Y subrayo lo de compilación, porque el método aún tiene fallos y carencias, las menciono despues.
Citar
   public void venderEntrada() {
      Scanner cine = new Scanner (System.in);
      int precio = 0;
      
      if (asientosLibres == 0) {
         System.out.println("NO HAY ASIENTOS LIBRES");
      } else {
         System.out.println("Indique tipo cliente: J - Jubilado o adulto mayor (mayor a 55) / A - Adulto / M - Menor (menores de 12)");
         String tipoCliente = cine.nextLine();
         System.out.println("Indique cuantas entradas desea: ");
         int cantidadEntradas = cine.nextInt();
         if (cantidadEntradas > asientosLibres) {
            System.out.println("NO HAY ASIENTOS LIBRES");
         } else {
            System.out.println("Elija metodo de pago: E - Efectivo / T - Tarjeta");
            String metodoPago = cine.nextLine();
            if (tipoCliente.equalsIgnoreCase("J")) {
               precio = 15;
            }
            if (tipoCliente.equalsIgnoreCase("A")) {
               precio = 30;
            }
            if (tipoCliente.equalsIgnoreCase("M")) {
               precio = 10;
            }
            if (metodoPago.equalsIgnoreCase("T")) {
               precio = (int) (precio + precio*0.18);
               System.out.println("VENTA REALIZADA. PRECIO FINAL: " + precio);
            }
            asientosLibres = asientosLibres - cantidadEntradas;
            System.out.println("QUEDAN " + asientosLibres + "asientos.");

         }
      }
      cine.close();
   }

Como decía, este método ya compila. Pero hay alguna cosilla por corregir:

- Hay que contar los tipos de cliente. Es decir, una vez finalizada la venta, hay que aumentar el contador asignado a cada tipo de cliente según la cantidad de entradas que acaba de comprar.
Si un jubilado ha comprado entradas --> contJubilados = contJubilados + cantidadEntradas;

- El cálculo de precios no es correcto. Aunque se le pregunta la cantidadEntradas que quiere, luego en el precio siempre se le cobra el valor de una sola entrada.
Hay que multiplicar el precio por la cantidadEntradas que ha pedido el usuario.

-El calculo de suplemento e impuestos no es correcto
 Si paga el usuario con tarjeta, se le carga un 3.5% de suplemento extra.
Y ya luego, se le añade el 18% de impuestos, sea cual sea el método de pago.

- No estamos usando el tipo de dato double para el calculo del precio.
Puesto que estamos trabajando con "tantos por ciento", divisiones y decimales... y además el dinero del mundo real es fraccionable (30$ no es lo mismo que 30.75$ ) lo correcto sería usar el tipo double para calcular el precio y no el int.
Es cierto que el tipo double tiene el inconveniente de que luego en pantalla pueden salirnos número muy feos, con un montón de decimales que no necesitamos.
Y que bueno, esto es un ejercicio de aprendizaje y tampoco es demasiado importante.
El inconveniente este de los decimales en pantalla en realidad es fácil de corregir, usando el metodo format() de la clase String.
Pero yo propongo que esto de momento lo dejemos de lado. Si quieres, seguimos haciendo casting a int como has hecho aquí:
Citar
precio = (int) (precio + precio*0.18);
y ya luego al final, cuando el programa ya esté funcionando, si quieres lo cambiamos para usar el tipo double y vemos como formatear el resultados para que solo nos muestre dos decimales en pantalla.

Dejo aquí la clase al completo tal y como la tenemos ahora. Falta corregir estas cosas que he mencionado. Y luego añadir otro método más que se encargue de mostrar estadísticas.

Código: [Seleccionar]
package boleteria_cine;

import java.util.Scanner;

public class Sala {

//Atributos
private String nombrePelicula;
private int asientosLibres = 20;
private int contJubilados = 0;
private int contAdultos = 0;
private int contMenores = 0;
private double recaudacion = 0;

//Constructor
public Sala(String nombre) {
nombrePelicula = nombre;
}

//Metodos
public String getNombrePelicula() {
return nombrePelicula;
}

public void venderEntrada() {
Scanner cine = new Scanner (System.in);
int precio = 0;

if (asientosLibres == 0) {
System.out.println("NO HAY ASIENTOS LIBRES");
} else {
System.out.println("Indique tipo cliente: J - Jubilado o adulto mayor (mayor a 55) / A - Adulto / M - Menor (menores de 12)");
String tipoCliente = cine.nextLine();
System.out.println("Indique cuantas entradas desea: ");
int cantidadEntradas = cine.nextInt();
if (cantidadEntradas > asientosLibres) {
System.out.println("NO HAY ASIENTOS LIBRES");
} else {
System.out.println("Elija metodo de pago: E - Efectivo / T - Tarjeta");
String metodoPago = cine.nextLine();
if (tipoCliente.equalsIgnoreCase("J")) {
precio = 15;
}
if (tipoCliente.equalsIgnoreCase("A")) {
precio = 30;
}
if (tipoCliente.equalsIgnoreCase("M")) {
precio = 10;
}
if (metodoPago.equalsIgnoreCase("T")) {
precio = (int) (precio + precio*0.18);
System.out.println("VENTA REALIZADA. PRECIO FINAL: " + precio);
}
asientosLibres = asientosLibres - cantidadEntradas;
System.out.println("QUEDAN " + asientosLibres + "asientos.");
}
}
cine.close();
}
}
« Última modificación: 11 de Septiembre 2018, 02:05 por Kabuto »
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

 

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