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

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
técnica de desarrollo refinamientos sucesivos
« Respuesta #60 en: 19 de Febrero 2013, 11:59 »
PREGUNTA: La técnica de desarrollo mediante refinamientos sucesivos consiste en:

a) Descomponer acciones en otras más simples en pasos sucesivos

b) Depurar los errores del código en pasos sucesivos

c) Reducir el tiempo de compilación de un programa en pasos sucesivos

d) Reducir el tiempo de ejecución de un programa en pasos sucesivos








RESPUESTA: la opción correcta es la a). La pregunta es quizás más de memorizar que de otra cosa. De todas formas después de haber leído los contenidos de la asignatura b), c) y d) son más o menos fácilmente descartables.
« Última modificación: 20 de Marzo 2014, 10:31 por nosferacento »

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
analogías entre tipos de datos y estructuras de programación en C/C++
« Respuesta #61 en: 26 de Febrero 2013, 13:23 »
PREGUNTA: El esquema de datos formación se corresponde con el esquema de acción:

a) Secuencia

b) Iteración

c) Selección

d) Tupla






RESPUESTA: la opción correcta es la b). Esta pregunta implica que tenemos que haber memorizado algunas cosas. En primer lugar que "formación" equivale a "array". En segundo lugar lo siguiente: si consideramos que los esquemas de acción son secuencia, selección e iteración la analogía entre esquemas de datos y acciones sería la siguiente:

Secuencia <---> Tupla o registro

Selección <---> Union

Iteración <---> Formación (array)

Tratando de buscarle algo de lógica a esto, podríamos pensar que un registro nos permite definir una secuencia de variables, un union nos permite seleccionar entre tipos alternativos, y un array nos permite iterar una variable valiéndonos de índices.
« Última modificación: 20 de Marzo 2014, 10:31 por nosferacento »

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
copiar un vector en otro en C/C++
« Respuesta #62 en: 28 de Febrero 2013, 08:27 »
PREGUNTA: Dadas las variables A y B de tipo vector de tres elementos, si queremos copiar todos los elementos de A en B, en C/C++ escribimos:

a) B=A;

b) for(int i=1; i<=3; i++){ B[ i ] = A[ i ]; }

c) A=B;

d) for(int i=0; i<3; i++){ B[ i ] = A[ i ]; }






RESPUESTA: la opción correcta es la d). Según esta opción se asigna a cada elemento de B el contenido correspondiente de cada elemento de A. En algunos lenguajes se puede asignar directamente el contenido de un vector a otro, pero en C/C++ no. En C/C++ hemos de realizar la asignación elemento a elemento recorriendo el vector con un for. Recordar que los índices de vectores en c/c++ comienzan en cero, por lo que la opción b) no es correcta.


« Última modificación: 20 de Marzo 2014, 10:31 por nosferacento »

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
paso por argumento o por valor en C/C++
« Respuesta #63 en: 04 de Marzo 2013, 10:35 »
PREGUNTA: En C/C++, dentro de un subprograma, un argumento:

a) No puede cambiar de tipo

b) Puede cambiar de tipo si se pasa por referencia

c) Puede cambiar de tipo si se pasa por valor

d) Nunca puede cambiar de valor







RESPUESTA: La opción correcta es la a). Si analizamos las otras opciones, el paso por referencia o valor afecta a que un argumento pueda ser modificado en su valor, pero nunca podrá ser modificado en su tipo. Por tanto las opciones b, c y d no son correctas.

« Última modificación: 20 de Marzo 2014, 10:31 por nosferacento »

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
PREGUNTA: ¿Qué características tienen los elementos locales?


a) Son visibles en su ámbito y fuera

b) Son invisibles en su ámbito y fuera

c) Son invisibles en su ámbito y visibles fuera

d) Son visibles en su ámbito e invisibles fuera







RESPUESTA: La opción correcta es la d). Analicemos una por una. Los elementos locales son visibles en su ámbito y no son visibles fuera de su ámbito luego la a) es incorrecta y la b) y c) también. Un "elemento local" típico es una variable declarada dentro de una función. Puede haber algo de confusión si pensamos en parámetros (que se pueden pasar por valor o por referencia), pero el asunto aquí está en pensar que un parámetro es un parámetro y un elemento local una variable local.

« Última modificación: 20 de Marzo 2014, 10:32 por nosferacento »

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
concepto de programación lógica
« Respuesta #65 en: 21 de Marzo 2013, 08:15 »
PREGUNTA: El modelo de programación lógica:


a) Imita la arquitectura de Von Newmann

b) Se basa en el uso de funciones

c) Se basa en la declaración de hechos y reglas

d) Es el que utiliza C/C++







RESPUESTA: La opción correcta es la c). La programación lógica es un tipo de programación declarativa: se basa en declarar hechos y reglas que permiten resolver, por inferencia lógica, un problema. Es un tipo de programación bastante peculiar (y con más uso en investigación que en el mercado laboral donde prácticamente no se trabaja con ella).
« Última modificación: 20 de Marzo 2014, 10:32 por nosferacento »

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
identificadores de tipo y de variable en C/C++
« Respuesta #66 en: 22 de Marzo 2013, 13:36 »
PREGUNTA: En C/C++, cuando se utiliza:

typedef struct Uno{Dos Tres; Cuatro Cinco;};



a) Uno y Cuatro son identificadores de tipo

b) Tres y Cinco son identificadores de tipo

c) Dos y Cinco son identificadores de tipo

d) Uno y Tres son identificadores de tipo







RESPUESTA: la opción correcta es la a). Uno define el tipo registro que consta de dos variables internas, una variable denominada Tres que es de tipo Dos y una variable denominada Cinco que es de tipo Cuatro. La opción b) es incorrecta porque Tres no es un identificador de tipo, sino un nombre o identificador de variable. La opción c) no es correcta porque Cinco no es un identificador de tipo, sino un nombre o identificador de variable. La opción d) no es correcta porque Tres no es un identificador de tipo, sino un nombre o identificador de variable. En resumen, los identificadores de tipo son Uno, Dos y Cuatro. Todas las opciones donde interviene Tres y Cinco son incorrectas. La dificultad de esta pregunta está en los nombres de variables y tipos que se utilizan: parece un trabalenguas.
« Última modificación: 20 de Marzo 2014, 10:32 por nosferacento »

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
procedimiento y paso de parámetros por variable en C/C++
« Respuesta #67 en: 24 de Marzo 2013, 14:23 »
PREGUNTA: Tras la ejecución del siguiente fragmento de código en C/C++:

int a;

void proc (int &b, int &c){
b = 2;
c = a%2;
b = a+b * c;
}

a = 1;
proc (a,a);
printf ("Variable a = %d , a);



a) La variable a vale 3

b) La variable a vale 2

c) La variable a vale 1

d) La variable a vale 0







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

Analicemos el código, empezando por el procedimiento proc. Este procedimiento recibe dos parámetros que se pasan por variable: parámetros b y c. El parámetro b (y la variable asociada) toman valor 2. A continuación el parámetro c (y la variable asociada) toman el valor del resto de dividir el valor que tenga la variable a entre 2, que puede ser 0 si a es par ó 1 si a es impar. En este caso a se declara en la parte inferior del código y vale 1, es decir, es impar, con lo cual c toma valor 1. A continuación se establece que b es igual a -- > a+b*c que será en nuestro caso 1+b*1, es decir, b termina con un valor igual a b+1 mientras que c termina con un valor 1.

El problema o dificultad radica en que el procedimiento se invoca pasándole a como parámetro con lo cual tenemos que atender a lo que pasa a medida que evoluciona el código. Dado que a se pasa por referencia tanto como parámetro b como como parámetro c, a será sobreescrita cada vez que se modifique b o c. En la primera línea b = 2 con lo cual a toma valor 2. En la segunda línea del procedimiento c = 2%2 = 0 con lo cual a toma valor cero; En la tercera línea b toma valor a + b*c = 0 + b * 0 = 0, con lo cual a=0, b=0, c=0. Un poco lioso, pero analizándolo con detenimiento se puede sacar.

« Última modificación: 20 de Marzo 2014, 10:32 por nosferacento »

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
EJERCICIO DE PROGRAMACIÓN (PARTE PRÁCTICA DEL EXAMEN)

Realizar en C/C++ un TAD, con fichero de interfaz y de implementación, capaz de almacenar hasta 50 valores enteros. El TAD dispondrá de un único subprograma: Moda, que devuelve la moda de los números enteros almacenados en el TAD. Por ejemplo, la moda de {1,6,2,5,4,2,1,3,4,2} es 2 porque es el valor que aparece más veces (3 veces). En caso de que haya varias modas, se devolverá una cualquiera de ellas.

Nota: este fue el ejercicio de examen de febrero de 2013 (1ª semana, tipo A)


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


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

Archivo arrayConModa.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. El archivo para comprobación es: programa_arrayConModa.cpp. Con este archivo podemos hacer la ejecución en nuestro ordenador para comprobar que esté todo ok.

Nota: leer los comentarios adicionales incluidos en el pdf para tener una mejor orientación de cómo afrontar un problema de este tipo en situación de examen "real".


elasfaltoesgris

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 4
    • Ver Perfil
Gracias por este foro.
No pude presentarme en Febrero este año y estoy preparando la asignatura para Septiembre. No te imaginas cuanto me estás ayudando.
Por favor, continúa.


Una última petición:
¿Podrías subir más ejercicios de programación de la parte práctica del examen, resueltos?
Son dificilísimos de rastrear, de hecho, creo que en tu foro es donde he encontrado el mayor número de ellos y por esa misma razón te estaría inmensamente agradecida si todavía hubiese más. Ya sabes como somos, nos ofrecen la mano y pedimos el brazo.

Gracias otra vez

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
Sí, sí, claro que continuo... si ves la fecha del primer post sobre la asignatura POO es de « : 04 de Septiembre 2011, 11:14 », es decir, que voy ampliando el catálogo poco a poco. El asunto es que tengo que ir sacando tiempo en ratos libres para hacer esto, de ahí que no pueda ir más rápido  :-\, pero iré subiendo más cosas, entre ellas más ejercicios resueltos de programación de la parte práctica del examen  ;)


nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
pragma once en compiladores C/C++
« Respuesta #71 en: 22 de Junio 2013, 11:41 »
Continuamos con otra tanda de 10 preguntas y problema de examen.

PREGUNTA: En C/C++, cuando se utiliza:         #pragma once


a) Se debe indicar un nombre del módulo
b) Tenemos una directiva del programa
c) Es una declaración del módulo
d) Hay una expresión del programa







RESPUESTA:

Un fichero .h (interfaz de un TAD) debe comenzar con las palabras clave #pragma once. ¿Pero qué es pragma once y para qué sirve? En los lenguajes de programación C y C++, #pragma once es una directiva del preprocesador. Está diseñada para asegurar que el código no se cargue múltiples veces, sino solo una vez, aunque sea invocado muchas veces.

La opción a) es falsa. Las opciones b, c y d podríamos decir que son un tanto confusas en el enunciado. La opción d) vamos a considerarla no válida ya que no se trata de una “expresión”, sino en todo caso de una directiva o una declaración. Suponiendo que el término declaración lo reservamos para declarar variables, constantes, etc. responderíamos la opción b). No obstante, ante preguntas que se vean de enunciado “dudoso” recomendamos incluir una hoja de aclaración en el examen dejando constancia de lo que hemos entendido y por qué hemos respondido lo que hemos respondido. Es la única oportunidad para poder reclamar después en caso de que efectivamente se pueda considerar que la redacción de la pregunta era ambigua o confusa. En este caso respondemos la b) ya que formalmente pragma once es una directiva, pero en un examen quizás no tengamos claro si puede haber un error en el enunciado de la pregunta, de ahí el comentario que hemos hecho.
« Última modificación: 20 de Marzo 2014, 10:33 por nosferacento »

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
Ejecución de un código de ejemplo en C/C++
« Respuesta #72 en: 24 de Junio 2013, 00:18 »
PREGUNTA: ¿Qué se muestra por pantalla después de ejecutar el siguiente código en C/C++?

#include <stdio.h>

int main(){

int i, j;
i = 0;
j = 12;
do {
printf("%d-" ,i*j);
i = i+2;
j = j-2;
} while(i != j);
}


a)  0-16-24-

b) 0-20-32-

c) 0-20-24-

d) Se ejecuta infinitamente







RESPUESTA: la respuesta correcta es la b), se muestra 0-20-32-

Analicemos por qué. Inicialmente i vale cero y j vale 12. Comienza el bucle do y se muestra por pantalla el resultado de la operación 0*12 seguido de un guión, es decir, 0-.

A continuación i vale 2  y j vale 10. Se evalúa la condición del bucle y al ser i distinto de j se produce la repetición. En esta pasada se muestra 2*10 que es 20 junto al guión, ya tenemos 0-20-. Ahora i vale 4 y j vale 8. No se cumple que sean iguales y se repite el bucle. Se muestra el resultado de 4*8 seguido de un guión y ya tenemos 0-20-32-.

Ahora i vale 6 y j vale 6. Al ser iguales no cumplen la condición de repetición y la ejecución termina.

Esta pregunta es básica, quien no la tenga clara es que le falta estudio o práctica!

« Última modificación: 20 de Marzo 2014, 10:34 por nosferacento »

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
esquemas de la programación estructurada
« Respuesta #73 en: 25 de Junio 2013, 12:14 »
PREGUNTA: La programación estructurada sugiere el uso de tres esquemas generales denominados:

a) Secuencia, selección y objetos
b) Selección, recursividad y objetos
c) Secuencia, selección y recursividad
d) Secuencia, selección e iteración







RESPUESTA: La opción correcta es la d). Esta pregunta es básica, quien no la tenga clara es que le falta estudio o práctica!


« Última modificación: 20 de Marzo 2014, 10:34 por nosferacento »

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
función recursiva en C/C++
« Respuesta #74 en: 26 de Junio 2013, 10:35 »
PREGUNTA: Dada la siguiente función en C/C++:

int suma (int x) {
if (x == 0) { return 0; }
else { return (x+suma(x-1) - 1); }
}



a) La llamada suma(5) devuelve 0

b) La llamada suma(5) devuelve 5

c) La llamada suma(5) devuelve 10

d) La llamada suma(5) devuelve 15







RESPUESTA: la opción correcta es la c), la llamada devuelve 10.

Esta pregunta es un tanto compleja porque es un caso de recursión (función que se llama a sí misma). No te desesperes si no lo ves a la primera porque la recursión es algo trabajoso incluso para programadores con muchos años de experiencia. En esta función el caso base que da lugar a la terminación de la recursión es que el parámetro pasado valga cero. Para analizar la recursión tenemos:

Primera invocación: no estamos en el caso base ya que x vale 5 y el resultado obtenido es 5 + suma(4) -1

Segunda invocación: el resultado obtenido es 4 + suma(3) -1

Tercera invocación: el resultado obtenido es 3 + suma(2) -1

Cuarta invocación: el resultado obtenido es 2 + suma(1) – 1

Quinta invocación: el resultado obtenido es 1 + suma(0) – 1, en este caso estamos en el caso base y salimos directamente y podemos decir que suma(1) vale 1 + 0 - 1 = 0

Salida de la cuarta invocación: 2 + 0 – 1 = 1

Salida de la tercera invocación: 3 + 1 -1 = 3

Salida de la segunda invocación: 4 + 3 -1 = 6

Salida de la primera invocación: 5 + 6 - 1 = 10

Por tanto el valor devuelto es 10. Si no lo entiendes a la primera, trata de hacerlo paso a paso siguiendo la traza del algoritmo.
« Última modificación: 20 de Marzo 2014, 10:34 por nosferacento »

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
definición o concepto de complejidad en computación
« Respuesta #75 en: 01 de Julio 2013, 13:04 »
PREGUNTA: La complejidad es una medida:

a) De la eficiencia de un programa

b) De la memoria utilizada en un programa

c) Del coste de desarrollo de un programa

d) De la dificultad de comprensión de un programa








RESPUESTA: la opción correcta es la a), es una medida de la eficiencia de un programa.

En este caso podemos responder por descarte, ya que un programa puede tener muy poca complejidad y consumir gran cantidad de memoria luego la b) es falsa. Tampoco mide el coste de desarrollo, un programa puede ser costoso simplemente por ser extenso o por manejar muchos datos, no por ser complejo. Finalmente la dificultad de comprensión no tiene que ver con la complejidad ya que un programa donde los nombres de variables están deliberadamente puestos para confundir puede ser muy difícil de comprender y sin embargo su complejidad computacional ser baja.

También podemos responder si recordamos la definición de complejidad: la función de complejidad es aquella que nos indica la eficiciencia de un programa (generalmente medida en términos de tiempo de ejecución) en función del tamaño del problema.


« Última modificación: 20 de Marzo 2014, 10:34 por nosferacento »

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
registros con variantes en C/C++ con struct y union
« Respuesta #76 en: 04 de Julio 2013, 13:23 »
PREGUNTA:  Para declarar un registro con variantes:   

a) Uno de los campos del tipo struct debe ser un tipo union

b) Uno de los campos del tipo union debe ser un tipo struct

c) Todos los campos del tipo struct deben ser un tipo union

d) Todos los campos del tipo union debe ser un tipo struct







RESPUESTA: la opción correcta es la a)

Un tipo union se puede introducir dentro de un tipo struct y a esto se le denomina registro con variantes.

El tipo union permite declarar un tipo donde existe un campo indicador de qué variante de las previstas es la actual en un momento dado. Ejemplo: declaramos un union como:

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


Además declaramos otro tipo: typedef char TipoCadena[40];

Luego declaramos un registro con variantes por ejemplo:

Typedef struct Parametro {
Numerico valorNumerico;
TipoCadena valorCadena;
}


En el registro con variantes, uno de los campos del struct es de tipo union. Un poco de trabalenguas…

« Última modificación: 20 de Marzo 2014, 10:35 por nosferacento »

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
código confuso en C/C++
« Respuesta #77 en: 05 de Julio 2013, 11:00 »
PREGUNTA: En C/C++, cuando se utiliza:

void Uno(Dos Tres, Cuatro Cinco)


a) Uno es un identificador de función

b) Tres y Cinco pueden ser el mismo identificador

c) Uno es un identificador de variable

d) Dos y Cuatro pueden ser el mismo identificador







RESPUESTA:

Pregunta bastante enrevesada, hasta difícil de entender. Dado que los nombres son bastante confusos, si le ponemos nombres razonables es más fácil responder a esta pregunta. Por ejemplo: void Calcular (int Preciokg, double Pesokg) sería una posible declaración de procedimiento. Calcular es un identificador de procedimiento, no de función, luego la respuesta a) es falsa. ¿Preciokg y Pesokg pueden ser el mismo identificador? En principio diremos que no porque son parámetros a usar en el procedimiento y habría una colisión de nombres, de hecho si intentas compilar esto:

void Calcular(int Preciokg, double Preciokg) {
printf("Hola");
}


El resultado es error: tipos en conflicto

Calcular es un identificador de función luego la c) es falsa. ¿Dos y Cuatro pueden ser el mismo identificador? Podríamos escribir void Calcular (double Preciokg, double Pesokg) de modo que Dos y Cuatro serían el mismo identificador. Respondemos esta por descarte de las anteriores, porque si quisiéramos darle vueltas nos podríamos aquí pasar un rato discutiendo… para llegar a la conclusión de que este enunciado es un tanto confuso, y por tanto no merece la pena pararse demasiado en él  ::)
« Última modificación: 20 de Marzo 2014, 10:35 por nosferacento »

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
operadores lógicos en C/C++ y su precedencia
« Respuesta #78 en: 06 de Julio 2013, 11:28 »
PREGUNTA:  Si a = true, b = true, y c = true, ¿cuál de las siguientes expresiones se evalúa como verdadera?

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

b)   a && !c || b

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

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







RESPUESTA: La opción correcta es la b). Veamos por qué.

Para la opción a) empezamos evaluando por partes. !a es false, c es true y !b es false. Por tanto dentro del paréntesis tenemos (false OR true OR false) y esto es true. Al aplicar la negación el resultado es que a) resulta false.

Para la opción b) tenemos true AND false OR true. Debemos recordar la prioridad de operadores que es conjunción > disyunción. Por tanto hacemos true AND false resultando false. false OR true es lo que evaluamos a continuación por lo que resulta true.

Para la opción c) tenemos dentro del paréntesis (false OR true AND true) que resulta (true AND true) que resulta true. Con la negación inicial obtenemos false.

Para la opción d) tenemos dentro del paréntesis (true OR false) que resulta true, pero con la negación que precede al paréntesis queda en false. Ahora nos queda true AND false resultando false.
« Última modificación: 20 de Marzo 2014, 10:35 por nosferacento »

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
paso de argumentos por referencia en C/C++
« Respuesta #79 en: 07 de Julio 2013, 12:26 »
PREGUNTA: Cuando un argumento se pasa por referencia en C/C++:

a) No se podrá usar una expresión como argumento real

b) No se puede modificar el argumento real en el subprograma

c) Es siempre una variable global

d) Sólo puede ser de tipo entero







RESPUESTA: La opción correcta es la a)

El argumento real es el valor o expresión que se pasa a un subprograma cuando se invoca. Cuando se pasa un argumento por valor el subprograma recibe un valor y esto puede hacerse pasándole una variable o una expresión, o un número, un carácter, etc. ya que este argumento no es modificado en el subprograma. Cuando se pasa un argumento por referencia ha de pasarse una variable que podrá ser modificada en el subprograma. No se puede pasar una expresión ya que esto no tendría sentido en un paso por referencia.

La opción b) es falsa, si se pasa por referencia, el argumento real que es la variable sí se puede modificar en el subprograma.
La opción c) no es cierta, no tiene por qué ser una variable global.
La opción d) no es cierta, no tiene por qué ser un tipo entero, puede ser otro tipo.

« Última modificación: 20 de Marzo 2014, 10:35 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".