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 - nosferacento

Páginas: 1 ... 10 11 12 13 14 [15] 16 17 18 19 20 ... 23
281
PREGUNTA:

Supongamos el fragmento de código en C/C++:

void CuaCubo (int &x, int &x2, int &x3){
x2 = x*x;
x3 = x*x*x;}
……… B = 1; A = 4; CuaCubo (A, A, B);



Después de la ejecución de este fragmento:


a)   A vale 16 y B vale 64

b)   A vale 16 y B vale 4096

c)   A vale 4 y B vale 1

d)   A vale 16 y B vale 1




RESPUESTA: la opción correcta es la b). Recorramos el código. Las variables x, x2 y x3 se pasan por referencia al procedimiento ya que están precedidas del símbolo &. La llamada al procedimiento se realiza con A=4, B=1 e invocación CuaCubo (A, A, B) lo cual supone que x y x2 referencian a la misma posición de memoria. En la primera línea x2, que en nuestra invocación es A, pasa a valer x*x, que en nuestra invocación es A*A, resultando x2 = 4*4 = 16, y A=16. En la segunda línea x3 = A*A*A = 16*16*16 = 4096 y B= 4096. Conclusión: después de la ejecución del fragmento A vale 16 y B vale 4096. Esta pregunta no puede decirse que sea complicada. Lo único que hay que tener claro es el concepto de paso por valor y paso por referencia de variables y sus diferencias.

282
PREGUNTA: En C/C++ el modelo de programación que se sigue es:

a) El modelo de programación funcional

b) El modelo de programación imperativa

c) El modelo de programación de flujo de datos

d) El modelo de programación lógica





RESPUESTA: la opción correcta es la b). La programación funcional (p.ej. lenguaje Haskell), de flujo de datos (p.ej. labView) y lógica (p.ej. Prolog) corresponden a otros paradigmas y lenguajes.

283
PREGUNTA: En C/C++ ¿qué operación de las siguientes es correcta?:

a)   25 * 3,5

b)   33.7 % 5.0

c)   33 / 5.3

d)   10,5 % -15,4E2





RESPUESTA: La opción correcta es la c). La a) la desechamos por no usar separador decimal el punto. La b) y d) usan el operador módulo o mod, que devuelve el resto de una división entre números enteros. Al intervenir en ambos casos números no enteros, no serían correctas. Nos queda como opción viable la c).

284
PREGUNTA: En C/C++ para convertir el carácter 5 en el número entero correspondiente usaría la sentencia:

a) int('5') – int ('0')

b)   int ( int(5))

c)   int ('5')

d)   char(5)






RESPUESTA: la opción correcta es la c. Esto es una cuestión de mera sintaxis, un caracter en C/C++ se escribe entre comillas simples. Cada carácter tiene un número entero asociado, y esta es una forma para conocerlo. No es lo mismo el carácter '5' que el valor numérico 5.

285
En C/C++ el símbolo &:

a)   Es un símbolo que se utiliza para pasar argumentos por referencia.

b)   Es un identificador predefinido que se utiliza para declarar variables.

c)   Es un símbolo que se utiliza para pasar argumentos por valor.

d)   Es un identificador predefinido que se utiliza para pasar argumentos por valor.







RESPUESTA: La opción correcta es la a). Se usa para pasar argumentos a procedimientos o funciones por referencia. En caso de no incluirse & los argumentos se pasarían por valor.

286
PREGUNTA: Dado el siguiente bucle for en C/C++:

for (int i=-5; i>=-7; i--){
   printf (“Hola”);
}


El número de veces que aparecerá la palabra hola será:


a)   0

b)   3

c)   2

d)   Existe un error de tipos






RESPUESTA: la opción correcta es la b. El bucle avanza de -5 a -7 e imprime hola para los casos -5, -6 y -7, es decir, tres veces. Cuando la variable de control toma valor -8 no se cumple la condición y no se imprime hola.

287
EJERCICIO DE PROGRAMACIÓN (PARTE PRÁCTICA DEL EXAMEN)

Realizar en C/C++ un TAD para gestionar una tarjeta monedero. La información de la tarjeta es el saldo y las 10 últimas operaciones. La información de cada operación es fecha (día-mes-año), cantidad (float) y tipo de operación (cargar, sacar, consultar). Las operaciones a realizar son:

1.- Cargar una cantidad.
2.- Sacar una cierta cantidad, si hay saldo disponible.
3.- Consultar el saldo y todas las últimas operaciones.




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


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

Archivo tarjetamonedero.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: gestordefechas.h, gestordefechas.cpp y programa_principal_gestiontarjetas.cpp. Con estos archivos podemos hacer la ejecución en nuestro ordenador para comprobar que esté todo ok.

288
PREGUNTA: En el lenguaje C/C++, la sentencia continue:

a) Finaliza la iteración en curso y el bucle

b) No se puede utilizar dentro de un bucle for

c) Finaliza la iteración en curso de un bucle

d) No se puede utilizar dentro de una sentencia condicional






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

289
Tienes que comprobar que tienes la base de datos y que se guarda y actualiza la información correctamente en ella. Normalmente existen programas interfaces que permiten acceder a la base de datos, en este caso concreto no la he probado.

Mira: http://commons.wikimedia.org/wiki/File:Hsql.png

http://hsqldb.org/doc/2.0/util-guide/dbm-chapt.html

http://sourceforge.net/projects/hsqldbmanager/files/

Tienes que acceder a la base de datos y verificar lo que tienes ahí, si no tienes la información no puedes extraerla.

290
¿Verificaste que la información se rescate correctamente de la base de datos? Es, decir, ¿Si ejecutas esto se muestra por pantalla la información rescatada (a través de la línea con el System.out.println)?

private void cargarlista() {
   // TODO Auto-generated method stub
      Connection conn = null;     
       String   sql = null;
       ResultSet rs = null;
       Statement  st = null;     
     
       try {
             Class.forName("org.hsqldb.jdbcDriver" );
             conn = DriverManager.getConnection("jdbc:hsqldb:file:/home/bladimir/Pacientes/Pacientes", "bladimir", "2704");
              st = conn.createStatement();
              rs = st.executeQuery ("SELECT nombre FROM PACIENTES");

            while(rs.next()){
               String tmpStrObtenido = rs.getString("nombre");
               System.out.println (tmpStrObtenido.toString());
               choice1.addItem(tmpStrObtenido);
           }
          conn.close();
         } catch (Exception e) {
             System.out.println("ERROR: failed to load HSQLDB JDBC driver.");
             e.printStackTrace();
             return;
         }       
                   
      }

291
Pienso que puedas tener un conflicto de nombres.

¿Por qué declaras private java.awt.Choice choice1;?

¿No sería lógico declarar private javax.swing.JComboBox choice1;?

Y luego lo inicializarías simplemente como: choice1 = new JComboBox();

en lugar de como JComboBox choice1 = new JComboBox();

Después de la inicialización probar a hacer

choice1.addItem("Prueba1");
choice1.addItem("Prueba2");

Para ver si se visualiza lo que se añade como prueba.

292
PREGUNTA:
Supongamos el fragmento de código en C/C++:

int a;
........ ........
void Func_1(int & b) {
a= 3;
b = a*b;
}
..........
a=2;
Func_1(a);


Después de la ejecución de este fragmento:



a) La variable a vale 3

b) La variable a vale 2

c) La variable a vale 6

d) La variable a vale 9







RESPUESTA: La opción correcta es la d). Un poco liosa la pregunta, vamos a verla con calma.

Lo primero a tener en cuenta es que la declaración de la función como void Func_1(int & b) supone que el parámetro b se pasa por referencia (siendo conocido y modificable dentro de la función, cosa que no ocurriría si lo pasáramos por valor).

Recorramos ahora el código. Se declara la variable entera a (queda con valor 0). Se define la función. Se hace la valor a igual a 2 y se invoca la función pasándole por referencia la variable a, con valor inicial 2.

En la función se modifica el valor de a y se establece en 3, y se calcula b como a*b = 3*3 = 9, pero b es un parámetro que apunta por referencia a la variable a, con lo cual al modificarse el parámetro dentro de la función se está modificando la variable que se ha pasado por referencia. En consecuencia, al concluir la ejecución la variable a queda con valor 9.

Pregunta enredada, la clave está en ver que a la función le entra la variable a pasada por referencia, al ocurrir esto a y b dentro de la función apuntan al mismo espacio de memoria, primero se establece a (y b) con valor 3 y luego se establece b (y a) con valor 9. La variable b desaparece una vez concluye la ejecución de la función, quedando la variable a con valor 9.  ::)

293
Otra cosa a comprobar es que se esté rescatando bien la información de la base de datos.

¿Si ejecutas esto se muestra por pantalla la información rescatada?

private void cargarlista() {
   // TODO Auto-generated method stub
      Connection conn = null;     
       String   sql = null;
       ResultSet rs = null;
       Statement  st = null;     
     
       try {
             Class.forName("org.hsqldb.jdbcDriver" );
             conn = DriverManager.getConnection("jdbc:hsqldb:file:/home/bladimir/Pacientes/Pacientes", "bladimir", "2704");
              st = conn.createStatement();
              rs = st.executeQuery ("SELECT nombre FROM PACIENTES");

            while(rs.next()){
               String tmpStrObtenido = rs.getString("nombre");
               System.out.println (tmpStrObtenido.toString());
               choice1.addItem(tmpStrObtenido);
           }
          conn.close();
         } catch (Exception e) {
             System.out.println("ERROR: failed to load HSQLDB JDBC driver.");
             e.printStackTrace();
             return;
         }       
                   
      }

294
Déjame ver el código completo, es decir, donde tienes definida la creación de la ventana o formulario y del propio JComboBox, es posible que tengas algo mal definido.

295
Al método addItem le tienes que pasar un tipo Object. Prueba algo así:

private void cargarlista() {
   // TODO Auto-generated method stub
      Connection conn = null;     
       String   sql = null;
       ResultSet rs = null;
       Statement  st = null;     
     
       try {
             Class.forName("org.hsqldb.jdbcDriver" );
             conn = DriverManager.getConnection("jdbc:hsqldb:file:/home/bladimir/Pacientes/Pacientes", "bladimir", "2704");
              st = conn.createStatement();
              rs = st.executeQuery ("SELECT nombre FROM PACIENTES");

            while(rs.next()){
               String tmpStrObtenido = rs.getString("nombre");
               choice1.addItem(makeObj(tmpStrObtenido));
           }
          conn.close();
         } catch (Exception e) {
             System.out.println("ERROR: failed to load HSQLDB JDBC driver.");
             e.printStackTrace();
             return;
         }       
                   
      }



private Object makeObj(final String item)  {
     return new Object() { public String toString() { return item; } };
   }

296
Yo cambiaría la repetición que haces de extracción de información dentro del bucle. Si te fijas estás ejecutando dos veces rs.getString("nombre"), cada vez que lo ejecutas se extrae un valor con lo cual el resultado no será el deseado. Prueba a almacenar cada extracción en una variable temporal que después añadas al combo, de esta forma no repites la extracción. Algo así:


private void cargarlista() {
   // TODO Auto-generated method stub
      Connection conn = null;     
       String   sql = null;
       ResultSet rs = null;
       Statement  st = null;     
     
       try {
             Class.forName("org.hsqldb.jdbcDriver" );
             conn = DriverManager.getConnection("jdbc:hsqldb:file:/home/bladimir/Pacientes/Pacientes", "bladimir", "2704");
              st = conn.createStatement();
              rs = st.executeQuery ("SELECT nombre FROM PACIENTES");

            while(rs.next()){
               String tmpStrObtenido = rs.getString("nombre");
               choice1.addItem(tmpStrObtenido);
           }
          conn.close();
         } catch (Exception e) {
             System.out.println("ERROR: failed to load HSQLDB JDBC driver.");
             e.printStackTrace();
             return;
         }       
                   
      }

297
PREGUNTA: El valor que determina la selección en la sentencia switch en C/C++ no puede ser de tipo:

a) int

b) float

c) Enumerado

d) char






RESPUESTA: la opción correcta es la b). switch puede usarse con valores enteros (int) o que sean asimilables a enteros, como son los enumerados y los char. En cambio, los float son reales, continuos y no discretos, no asimilables a enteros.

298
PREGUNTA: ¿Cuál de las siguientes funciones NO puede llamarse desde otro fichero de implementación en C/C++?

a) void mifuncion() { ... }

b) static void mifuncion() { ... }

c) extem void mifuncion() { ... }

d) const void mifuncion() { ... }






RESPUESTA: La opción correcta es la b). Llamamos módulo a un fragmento de un programa desarrollado de forma independiente. Para un programa podemos definir:

a) Un módulo de especificación (interfaz) que dice qué se hace (en C/C++, el fichero .h), es decir, define abstracciones.

b) Un módulo de realización (implementación) que define cómo se hace (en C/C++ fichero .cpp), donde se desarrollan las abstracciones declaradas.

La palabra clave static dentro de un módulo restringe la visibilidad de una variable o función al fichero fuente del módulo, de modo que esas variables o funciones no pueden ser llamadas desde fuera.

299
PREGUNTA: En el lenguaje C/C++, un argumento de tipo vector abierto pasado por valor se especifica:

a) const Tipo v[]

b) Tipo v[]

c) const Tipo v[n]

d) Tipo v[n]






RESPUESTA: la opción correcta es la a). En C/C++ no es posible declarar vectores abiertos (sin un número de elementos predefinido), pero sí es posible incluirlos como argumentos de subprogramas siempre que al mismo tiempo se pase como argumento al subprograma un parámetro que represente el número de elementos de que consta el vector que se pasa. Las formas de hacer esto son (ponemos ejemplos):

TratarVector (float v[], int n)  ... el vector se pasa por referencia

TratarVector (const float v[], int n)  ... el vector se pasa por valor

Las cadenas de texto (vectores de caracteres) son un caso especial que no se atienen exactamente a lo expuesto.

300
En el lenguaje C/C++, los registros con variantes necesitan:

a) Sólo la definición de un tipo struct

b) Sólo la definición de un tipo union

c) La definición de al menos un tipo struct y un tipo unión

d) La definición de varios tipos struct o bien de un único tipo union






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

Hay ocasiones en que nos puede interesar que una variable 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. Ejemplo:

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


Las llaves se cierran con un ;. Una vez definido el tipo podemos usarlo así por ejemplo:

Numerico numeroaprocesar;
numeroaprocesar.entero = 243;
printf ("El valor de numeroaprocesar es %d", numeroaprocesar);


Solo puede haber en uso en un momento dado una de las alternativas del union.

Un tipo union se puede introducir dentro de un tipo struct y a esto se le denomina "registro con variantes". Por tanto para definir un registro con variantes necesitamos un tipo union y un tipo struct al menos, como indica la opción c).

Páginas: 1 ... 10 11 12 13 14 [15] 16 17 18 19 20 ... 23

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