Autor Tema: Exámenes resueltos Fundamentos de programación UNED Ingeniería Informática 1ero  (Leído 151028 veces)

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
paso de vectores abiertos por valor o por referencia en C/C++
« Respuesta #20 en: 10 de Diciembre 2012, 08:25 »
PREGUNTA: Los argumentos de tipo vector abierto:

a)   Solo pueden pasarse por referencia

b)   Pueden pasarse por valor y por referencia

c)   Solo pueden pasarse por valor

d)   Solo pueden utilizarse en funciones






RESPUESTA: La opción correcta es la b). En C/C++ los argumentos que se pasan a procedimientos o funciones en general pasan por valor. Los vectores son una excepción y como argumentos pasan por defecto por referencia aunque no se indique explícitamente. Para pasar vectores por valor debe usarse la palabra clave const antecediendo al tipo. Por ejemplo: void OperarVector (const TipoVector v) { ... }

En C/C++ no es posible declarar vectores abiertos (con un número de elementos indefinidos) pero sí es posible incluirlos como argumentos de subprogramas siempre que al mismo tiempo se pase al subprograma (función o procedimiento) como argumento un parámetro que represente el número de elementos de que consta el vector que se pasa. Ejemplo: TratarVector (int v[], int n) es una llamada donde el vector pasa por referencia.
TratarVector (const float v[], int n) es una llamada donde el vector pasa por valor.

Las cadenas de texto (vectores de caracteres) son un caso especial donde no hace falta especificar el número de elementos de que constan.
« Última modificación: 20 de Marzo 2014, 10:23 por nosferacento »

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
expresiones booleanas en C/C++
« Respuesta #21 en: 11 de Diciembre 2012, 08:15 »
PREGUNTA:   Si a = true, b = false, c = false señale la expresión verdadera:

a)   !(! a || c || !b)

b)   !(! c || b && a)

c)   a && ! (a || ! c)

d)   a && ! c || b






RESPUESTA: la opción correcta es la d).

Si analizamos las opciones, para la a) el interior del paréntesis es (falso ó falso ó verdadero), devuelve verdadero, y con la negación exterior resulta falso. Para la b el interior del paréntesis devuelve verdadero ó ... que es verdadero y con la negación exterior resulta falso. La opción c): el paréntesis devuelve verdadero ó ... que resulta verdadero, al negarlo nos queda falso y a && falso es falso. La opción d) es verdadero y verdadero ó falso, lo cual resulta verdadero.
« Última modificación: 20 de Marzo 2014, 10:24 por nosferacento »

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
problema examen fundamentos programación heladería
« Respuesta #22 en: 12 de Diciembre 2012, 08:40 »
EJERCICIO DE PROGRAMACIÓN (PARTE PRÁCTICA DEL EXAMEN)


ENUNCIADO: Una heladería ofrece cucuruchos con bolas de 25 gramos de tres sabores distintos a escoger entre chocolate, vainilla, fresa, limón, pistacho y menta. Construya un Tipo Abstracto de Datos (TAD) en C+- que almacene la cantidad de helado disponible de cada sabor e implemente las siguientes operaciones:

-IncrementarHelado: añade una cantidad de helado de un determinado sabor.

-EsPosibleCucurucho: recibe como entrada 3 sabores e indica si hay helado suficiente para confeccionar el cucurucho.

-CucuruchosDisponibles: imprime en pantalla qué tipos de cucuruchos pueden confeccionarse con los helados disponibles.





RESPUESTA: La solución está disponible en el archivo adjunto a este post (archivo problema_examen_sep10_resuelto.pdf, pulsar sobre el nombre o icono para descargarlo estando logeado). En la solución tenemos varias partes:


Archivo helado.h: código del .h, el módulo de especificación o interfaz que define qué se hace.

Archivo helado.cpp: código del .cpp, el módulo de implementación que define cómo se hace.

Archivos para comprobación: código de lo que serían archivos que contienen código que no es necesario escribir en el examen, pero que son necesarios para poder ejecutar el programa. Cuando estemos estudiando o trabajando con nuestro ordenador es adecuado que después de escribir el código del .h y del .cpp escribamos el código necesario para poder ejecutar y comprobar que lo que hayamos preparado está bien. Los archivos para comprobación son en este caso solo uno: programa_principal_gestion_helados.cpp. Con este archivo podemos hacer la ejecución en nuestro ordenador para comprobar que esté todo ok.

Ejemplo de respuesta del programa: ejemplo de los resultados que se obtendrían al ejecutar el programa. Sirve de referencia para saber si al ejecutar en nuestro ordenador se ejecuta correctamente.

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
paso de parámetros por valor o referencia C/C++
« Respuesta #23 en: 13 de Diciembre 2012, 08:32 »
PREGUNTA:   Dado el siguiente subprograma en C/C++:

int Oper (float x, float & y){
   x = x/2.0 + y*2.0;
   y = y + x;
   return int (y);
}


Si a = 5.0 y b = 3.0, los valores de a y b después de la llamada Oper(a,b) son respectivamente:


a)   8.5 y 11.5

b)   5.0 y 11.0

c)   5.0 y 11.5

d)   8.5 y 11.0







RESPUESTA: La respuesta correcta es la c). a se pasa por valor, b se pasa por referencia. En la primera línea a=2.5 + 6=8.5; en la segunda línea b=3+8.5=11.5; Se devuelve 11.5. Pero ¡atención! Hay que prestar atención a si nos pregunta qué valor devuelve la función o con qué valor se quedan las variables. En este caso la función devuelve 11 (parte entera de 11.5) pero la variable b se había pasado por referencia y la a por valor. a se queda valiendo 5 pues no se modifica mientras que b se queda valiendo 11.5. Un poco lioso, pero si se piensa con calma, sale.
« Última modificación: 20 de Marzo 2014, 10:24 por nosferacento »

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
Re:Preguntas examen Fundamentos de programación UNED Ingeniería Informática
« Respuesta #24 en: 14 de Diciembre 2012, 08:30 »
PREGUNTA:   ¿Cuál de las siguientes afirmaciones es falsa?:

a) Con los módulos se definen tipos abstractos.

b) Todo dato encapsulado es de tipo abstracto.

c) Todo tipo static es de tipo abstracto.

d) Todo tipo abstracto es dato encapsulado.






RESPUESTA: La respuesta correcta es d). Ojo al error más habitual que podemos cometer con una pregunta de este tipo: no darnos cuenta de que preguntan por la falsa en vez de por la verdadera (que es lo habitual). Si preguntan cuál es falsa se supone que quiere decir que hay tres verdaderas y hay que responder la falsa. En consecuencia: a), b) y d) son verdaderas (o se supone, porque esta pregunta es un poco confusa).

Nota: en algunas ocasiones hay erratas en los enunciados de los exámenes, es decir, preguntas mal formuladas. En ese caso, la pregunta puede ser invalidada una vez hecho el examen cuando se descubre la errata. De cualquier manera recomendación: no te centres en tratar de determinar si hay una errata o no (perder el tiempo), céntrate en estudiar y tratar de responder lo mejor posible. 
« Última modificación: 20 de Marzo 2014, 10:24 por nosferacento »

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
tipos enumerados en C/C++
« Respuesta #25 en: 17 de Diciembre 2012, 08:32 »
PREGUNTA:   Dada la declaración typedef enum TipoColor {rojo, amarillo, azul, negro); señalar la expresión verdadera:

a) TipoColor(int(rojo)) = amarillo;

b)   TipoColor(int(TipoColor(2)) = 1;

c)   TipoColor(0) = rojo;

d)    int(azul) = 3;






RESPUESTA: La opción correcta es la c)

La declaración que se presenta es la de un tipo enumerado en C/C++. Los tipos enumerados son ordinales, es decir, tienen un orden y equivalente numérico que en este caso son 0 para el rojo, 1 para el amarillo, 2 para el azul y 3 para el negro. La opción a) sería suponer que TipoColor(0) = amarillo, lo cual es falso. La opción b) sería suponer que TipoColor(int(azul)) = 1, lo cual es falso. La opción 3 es verdadera. La opción d) es falsa ya que el azul se corresponde con el 2.
« Última modificación: 20 de Marzo 2014, 10:24 por nosferacento »

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
uso de static para declarar variables privadas o locales en C/C++
« Respuesta #26 en: 18 de Diciembre 2012, 08:38 »
PREGUNTA: En C/C++ un tipo static se declara sólo en el módulo:

a) De implementación

b) De definición

c) Principal del programa

d) Principal y en el de definición







RESPUESTA: La correcta es la opción a). Llamamos módulos no principales a los módulos de un programa que no contienen la función main() y no permiten generar un ejecutable por sí solos. Su código está destinado a ser usado por el programa principal o por otros módulos. Un módulo no principal consta de dos sub-módulos o ficheros: el .h, interfaz o "parte pública" y el .cpp, implementación o parte "privada". Si son necesarias variables privadas (locales) en el sub-módulo de implementación se declararán usando la palabra clave static, por ejemplo static int miNumero = 33;

Para acordarse de esto, memoria y haber hecho unos cuantos ejercicios porque si no difícil acordarse de algo así.  ???
« Última modificación: 20 de Marzo 2014, 10:25 por nosferacento »

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
tres bucles anidados en C/C++
« Respuesta #27 en: 21 de Diciembre 2012, 08:54 »
PREGUNTA: ¿Cuánto vale la variable x después de ejecutar el siguiente código?:

x = 0;
for (int i = 1; i <= 10; i++){
   for (int j = 1; j <= 10; j++){
      for (int k = 1; k <= 10; k++){
         x++;
         }
         x--;
      }
      if (x % 2 !=0){
         x--;
      }
}



a) 890

b) 900

c) 895

d) 899







RESPUESTA: La opción correcta es la b). Si recorremos el código tenemos lo siguiente: x comienza valiendo cero. Partimos con i=1, j=1, k=1 y x toma valor 10 con el bucle k y se reduce a 9 al terminar el bucle j. En el siguiente paso i=1, j=2, K=1 y se repite el proceso hasta que x termina valiendo 9+9 = 18 ... se repite el proceso hasta que x termina valiendo 9*10 = 90. A continuación se alcanza la parte final del bucle i y se evalúa si x es impar, como 90 es par el valor de x no se reduce, es decir, no se ejecuta el código asociado al condicional if. La repetición del proceso 10 veces (bucle i) da lugar a que x termine con el valor 900. Nota: es recomendable marcar con fluorescente el alcance de cada for: no hay que dejarse llevar por las tabulaciones (nos las pueden poner mal establecidas). Lo que determina la ejecución son las llaves de apertura y cierre que delimitan el alcance de cada bucle o condicional. En este caso el condicional if está asociado al bucle más exterior.
« Última modificación: 20 de Marzo 2014, 10:25 por nosferacento »

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
registro con variantes (struct y union) en C/C++
« Respuesta #28 en: 14 de Enero 2013, 00:29 »
PREGUNTA: En C/C++ al usar un registro con variantes en un programa:

a) Puede omitirse el nombre del discriminante
b) Puede omitirse el tipo del discriminante en la declaración
c) Es obligatoria la alternativa final con ELSE
d) El uso de variantes no consistentes con el valor del discriminante es detectado por el compilador



RESPUESTA: La opción correcta es la d).

Hay ocasiones en que nos puede interesar que una varible funcione según las circunstancias como si fuese de un tipo u otro. En estos casos hacemos una declaración typedef union Nombre donde typedef union funciona como palabra clave.

Un tipo union se puede introducir dentro de un tipo struct y a esto se le denomina registro con variantes. Es habitual que exista un campo indicador de qué variante de las previstas en el tipo union es la actual en un momento dado.

La variante actual del union se denomina discriminante y solo puede haber una. Por ejemplo, si el union es:

typedef union Numerico {
   int entero;
   float real;
};


Y luego usamos:

Numerico numeroaprocesar;
numeroaprocesar.entero = 243;


El discriminante ahora es "entero".

Una invocación ahora a numeroaprocesar.real sería errónea y detectada por el compilador porque un tipo union tiene alternativamente un tipo de valor u otro, pero no existen los dos valores simultáneamente.

Pregunta un poco enrevesada...

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
operador % (mod o resto de división entera) en C/C++
« Respuesta #29 en: 15 de Enero 2013, 08:22 »
PREGUNTA: En C/C++ el operador %…

a) Puede dar error para valores de tipo cardinal

b) Nunca da error para valores de tipo int

c) Nunca da error para valores de tipo float

d) Está definido para cualquier tipo de datos





RESPUESTA: la opción correcta es la b). El operador % es el operador módulo o mod, que devuelve el resto de una división sólo permitiéndose el uso de enteros. Si analizamos respuesta a respuesta tenemos lo siguiente: números cardinales son 1, 2, 3, 4 ... por tanto no dan error. Los tipo float (opción c) no son enteros y no se pueden usar con el operador %. Respecto a la opción d) es falsa por lo que hemos expuesto anteriormente.
« Última modificación: 20 de Marzo 2014, 10:25 por nosferacento »

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
doble referencia en programación C/C++
« Respuesta #30 en: 16 de Enero 2013, 08:18 »
PREGUNTA: La doble referencia se produce cuando:

a) Un mismo elemento se utiliza con dos nombres distintos

b) Dos punteros apuntan al mismo tipo de elemento

c) Se produce una redefinición de elementos

d) Dos índices indexan al mismo elemento de una formación






RESPUESTA: La opción correcta es la a). Esta pregunta alude a una definición y por tanto lo que hay es que sabérsela de memoria, ya que si no lo hacemos así podría pensarse que cualquier respuesta es válida. ¿Qué significa que un mismo elemento se utiliza con dos nombres distintos? Pues una variable por ejemplo referencia a un espacio de memoria. Supongamos que el espacio de memoria denominado @363H3 tiene por contenido "jota". Si las variables A y B referencian al mismo espacio de memoria, ambas son una misma cosa con dos nombres distintos.
« Última modificación: 20 de Marzo 2014, 10:25 por nosferacento »

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
concepto de puntero en C/C++
« Respuesta #31 en: 17 de Enero 2013, 14:01 »
PREGUNTA: En C/C++ respecto a los punteros podemos decir:

a) No se pueden utilizar
b) Son elementos de programación de muy alto nivel
c) No están tipados
d) Su valor no es representable como un número o texto






RESPUESTA: la opción correcta es la d. Si analizamos las alternativas, la a) es falsa ya que sí se pueden utilizar. La b) es falsa, ya que son elementos de programación de bajo nivel. Nos quedan dos opciones.

La definición de puntero (referencia) es la siguiente: "variable simple específica que apunta a una variable dinámica. Su contenido es una referencia no representable como número o texto". Con esto queda claro que la opción correcta es la d) y que para poder responder esta pregunta necesitamos haberla memorizado porque si no lo hemos hecho... difícil de responder. De la opción c) diríamos que los punteros sí están tipados: su tipo es "puntero".
« Última modificación: 20 de Marzo 2014, 10:26 por nosferacento »

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
uso de notación BNF para sintaxis de lenguajes
« Respuesta #32 en: 18 de Enero 2013, 14:06 »
PREGUNTA:   La regla sintáctica para la cual es válida el valor E5.0, siendo digito::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 es:

a) Real ::= {digito}E{digito}

b) Real ::= digito{digito}.{digito}[E digito {digito} ]

c) Real ::= {digito}[E]{digito}[.]{digito}

d) Real ::= {digito}.digito[E[+|-]digito.{digito}







RESPUESTA: la opción correcta es la c). Para responder a esta pregunta tenemos que recordar la notación BNF (notación basada en metasímbolos que sirve para definir la sintaxis de lenguajes de programación). En este sentido, ::= es el metasímbolo de definición, | es el metasímbolo de alternativa, {} es el metasímbolo de repetición (los elementos dentro del metasímbolo se pueden repetir o no), [] es el metasímbolo de opción y () es el metasímbolo de agrupación. La opción a) no es válida porque nos falta el punto. La opción b) no es válida porque obliga a empezar con un dígito y E5.0 no empieza por un dígito. La opción c) satisface la expresión, ya que el que aparezca un dígito opcional repetido n veces es opcional, y cumple lo establecido. La opción d) obliga a empezar con un punto o con un dígito, aspecto que no se cumple en la expresión propuesta.
« Última modificación: 20 de Marzo 2014, 10:26 por nosferacento »

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
problema examen fundamentos programación precio oro 5 monedas
« Respuesta #33 en: 21 de Enero 2013, 11:36 »
EJERCICIO DE PROGRAMACIÓN (PARTE PRÁCTICA DEL EXAMEN)

ENUNCIADO

Realizar el tipo abstracto de datos PrecioOro para guardar el precio de la onza de oro en 5 monedas diferentes (Dólar, Euro, Yen, Libra, Yuan). La operación NuevoPrecio guarda el nuevo precio en una determinada moneda. La operación CambioOro entre dos monedas devuelve los cambios unitarios de cada moneda en función de la otra tomando como base el precio del oro. La operación ListarPrecios escribe en pantalla la tabla de precios de la onza de oro en cada moneda.



RESPUESTA


La solución está disponible en el archivo adjunto a este post (archivo Problema_examen_Feb10A_resuelto.pdf, pulsar sobre el nombre o icono para descargarlo estando logeado). En la solución tenemos varias partes:


Archivo precio_oro.h: código del .h, el módulo de especificación o interfaz que define qué se hace.

Archivo precio_oro.cpp: código del .cpp, el módulo de implementación que define cómo se hace.

Archivos para comprobación: código de lo que serían archivos que contienen código que no es necesario escribir en el examen, pero que son necesarios para poder ejecutar el programa. Cuando estemos estudiando o trabajando con nuestro ordenador es adecuado que después de escribir el código del .h y del .cpp escribamos el código necesario para poder ejecutar y comprobar que lo que hayamos preparado está bien. Los archivos para comprobación son en este caso solo uno: programa_principal_programa_monedas_oro.cpp. Con este archivo podemos hacer la ejecución en nuestro ordenador para comprobar que esté todo ok.

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
PREGUNTA: ¿Cuál de las siguientes afirmaciones es CORRECTA?


a) El tipo int es exacto y sin límites

b) El tipo int es exacto pero con límites

c) El tipo float es exacto y sin límites

d) El tipo float es exacto pero con límites







RESPUESTA: La opción correcta es la b). int es exacto al carecer de decimales. La a) es falsa porque int sí tiene límites (no puede superarse determinado valor). La c) es falsa porque float también tiene límites y no es exacto al representar valores decimales o fraccionarios. La d) es falsa porque float no es exacto.
« Última modificación: 20 de Marzo 2014, 10:26 por nosferacento »

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
instrucción de asignación en C/C++
« Respuesta #35 en: 25 de Enero 2013, 10:41 »
PREGUNTA: En la instrucción de asignación en C/C++ definida por A=B:

a) A debe ser variable y B constante

b) Tanto A como B deben ser variables

c) Debe haber compatibilidad de tipos entre A y B

d) A y B deben ser de tipo simple








RESPUESTA: la opción correcta es la c). Si analizamos las posibilidades, la a) no tiene por qué ser así. La B tampoco tiene por qué ser así, uno de los dos puede ser constante. La d) no se sabe muy bien a qué se refiere. La c es cierta: debe haber compatibilidad de tipos para realizar una asignación.
« Última modificación: 20 de Marzo 2014, 10:26 por nosferacento »

elasfaltoesgris

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 4
    • Ver Perfil
GRACIAS, GRACIAS, GRACIAS.
Me has ayudado más tú que cualquier libro, tutor o momento de inspiración.
Por favor, continúa.
¿He mencionado que te estoy inmensamente agradecida?

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
Gracias a tí y a todos los que valoran el esfuerzo, porque esto lleva su trabajito... y se agradecen mensajes de aliento. Continúo claro, pero voy como una hormiguita poquito a poco. Trato de ayudar pero la ayuda principal es que cada uno sea capaz de organizarse por sí mismo, estudiar "sobre el papel" e - importante - practicar delante del ordenador. Suerte a todos los que se estén preparando el examen!

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
concepto de verificación de programas
« Respuesta #38 en: 27 de Enero 2013, 10:26 »
PREGUNTA: En la práctica, la verificación:

a) Garantiza que en el programa no hay ningún error

b) Se hace mediante ensayos del programa

c) Aumenta la complejidad del programa

d) Garantiza la eficiencia del programa






RESPUESTA: la opción correcta es la b). La c) es claramente falsa ya que verificar un programa no hace que tenga mayor ni menor complejidad. La d) también es falsa, ya que con la verificación se trata de comprobar la corrección del programa, es decir, que cumpla con los objetivos de la especificación, no su eficiencia. Tampoco garantiza que en el programa no exista algún error. Esta pregunta se basa en conceptos teóricos que hay que saberse de memoria porque de otra manera no podremos responder porque la terminología es un poco ambigua.
« Última modificación: 20 de Marzo 2014, 10:27 por nosferacento »

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
concepto de procedimiento puro y transparencia referencial
« Respuesta #39 en: 29 de Enero 2013, 08:35 »
PREGUNTA: Dado el siguiente procedimiento en C/C++:

void proc( int a,int b, int & c)
{
int aux;
aux=a+b+c;
c=aux;
}


Para que fuese puro:


a) Es ya un procedimiento puro

b) bastaría con pasar las variables a y b por referencia

c) la variable c se debería pasar por referencia

d) Todas las variables, incluida aux, deben pasarse por referencia







RESPUESTA: la opción correcta es la a). ¿Por qué? Para poder responder esto tendremos que conocer la definición de "procedimiento puro" porque si no está difícil :) Muchos programadores profesionales no sabrían responder a esto porque es algo bastante teórico, pero veamos la definición. Para ello tenemos que ver algún concepto previo:

Transparencia referencial: existe transparencia referencial si el resultado de una llamada a un subprograma puede predecirse con la información del código de la llamada, es decir, si siempre que se pasan los mismos argumentos se obtienen los mismos resultados. La transparencia referencial se garantiza si el subprograma utiliza solo variables o elementos locales. Si un subprograma modifica una variable externa (global) se dice que está produciendo efectos secundarios o laterales (side effects) y que no existe transparencia referencial.

Procedimiento puro: el que no tiene efectos laterales, es decir, el que es tranparente referencialmente. No se exige el paso de argumentos por valor para considerar un procedimiento puro (en cambio para considerar una función pura sí se exige el paso de argumentos por valor).

En resumen, el procedimiento propuesto es puro porque solo usa elementos o variables locales (independientemente de que reciba dos parámetros por valor y uno por referencia). Si fuera una función, no sería pura.
« Última modificación: 20 de Marzo 2014, 10:27 por nosferacento »

 

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