cuestionario nº 1 respuesta correcta= 1...

23
CUESTIONARIO Nº 1 Respuesta correcta= 1 pto Respuesta incorrecta= -0,25 pto No respuesta = 0 ptos Pag.1 1.1.- En programación, cuál de las siguientes afirmaciones es correcta: a) Los valores reales son siempre exactos. b) Los valores enteros siempre son exactos. c) Los valores enteros y reales siempre son exactos. d) Los valores enteros y reales nunca son exactos. 1.2.- Que valor devuelve la expresión char(int(‘c’)): a) Error. b) El ASCII correspondiente al carácter ‘c’. c) Una variable en memoria. d) El carácter ‘c’. 1.3.- Que resultados devuelven las siguientes expresiones y como las expresarías de forma más clara (tened en cuenta el Manual de estilo): a) 35.3 * 5.1 + 4.5 / 7.6 b) Float(25) / -6.2 * 5.4 / 2.4 c) 25.5 * int(3.5) d) 334 / 6 % 4 – 5 * 4 1.4.- Una de las siguientes afirmaciones no siempre es cierta en C+/-: a) ‘t’ es un valor constante b) Int(dias/2.0) es un valor constante c) 43.2 es un valor constante d) “Hola” es un valor constante 1.5.- La sentencia de asignación: a) Precisa de variables a ambos lados. b) Emplea una expresión a su izquierda. c) Emplea expresiones a ambos lados d) Necesita una variable a su izquierda 1.6.- La declaración int AND; a) Es correcta. b) Es incorrecta por utilizar sólo mayúsculas. c) Es incorrecta por el tipo utilizado. d) Es incorrecta por el identificador utilizado. 1.7.- ¿Cuál es la ristra de caracteres incorrecta en C+/- ?; a) “Datos: %d # %f ” b) “abcd”e”efg” c) “abcd’efg”

Upload: trinhtram

Post on 12-Oct-2018

231 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CUESTIONARIO Nº 1 Respuesta correcta= 1 ptodrago.intecca.uned.es/download/aW50ZWNjYS51bmVkLmVz_66680... · No respuesta = 0 ptos Pag.6 3.6.- ... Numero] Cadenas correctas del lenguaje

CUESTIONARIO Nº 1 Respuesta correcta= 1 pto Respuesta incorrecta= -0,25 pto No respuesta = 0 ptos

Pag.1

1.1.- En programación, cuál de las siguientes afirmaciones es correcta:

a) Los valores reales son siempre exactos. b) Los valores enteros siempre son exactos. c) Los valores enteros y reales siempre son exactos. d) Los valores enteros y reales nunca son exactos.

1.2.- Que valor devuelve la expresión char(int(‘c’)):

a) Error. b) El ASCII correspondiente al carácter ‘c’. c) Una variable en memoria. d) El carácter ‘c’.

1.3.- Que resultados devuelven las siguientes expresiones y como las expresarías de forma más clara (tened en cuenta el Manual de estilo):

a) 35.3 * 5.1 + 4.5 / 7.6 b) Float(25) / -6.2 * 5.4 / 2.4 c) 25.5 * int(3.5) d) 334 / 6 % 4 – 5 * 4

1.4.- Una de las siguientes afirmaciones no siempre es cierta en C+/-:

a) ‘t’ es un valor constante b) Int(dias/2.0) es un valor constante c) 43.2 es un valor constante d) “Hola” es un valor constante

1.5.- La sentencia de asignación:

a) Precisa de variables a ambos lados. b) Emplea una expresión a su izquierda. c) Emplea expresiones a ambos lados d) Necesita una variable a su izquierda

1.6.- La declaración int AND;

a) Es correcta. b) Es incorrecta por utilizar sólo mayúsculas. c) Es incorrecta por el tipo utilizado. d) Es incorrecta por el identificador utilizado.

1.7.- ¿Cuál es la ristra de caracteres incorrecta en C+/- ?;

a) “Datos: %d # %f ” b) “abcd”e”efg” c) “abcd’efg”

Page 2: CUESTIONARIO Nº 1 Respuesta correcta= 1 ptodrago.intecca.uned.es/download/aW50ZWNjYS51bmVkLmVz_66680... · No respuesta = 0 ptos Pag.6 3.6.- ... Numero] Cadenas correctas del lenguaje

CUESTIONARIO Nº 1 Respuesta correcta= 1 pto Respuesta incorrecta= -0,25 pto No respuesta = 0 ptos

Pag.2

d) Todas son correctas 1.8.- En la asignación A = B;

a) Tanto A como B deben ser variables b) A debe ser variable y B constante c) Debe haber compatibilidad de tipos entre A y B d) A y B deben ser de tipo simple

1.9.- En los comentarios

a) No se pueden incluir palabras clave b) No se pueden emplear identificadores ya empleados c) Se pueden incluir cualquier ristra de caracteres d) No se puede incluir la ‘ñ’

PROBLEMA Dadas las variables código, cantidad y precio de un producto en el almacén (deberán pedirse al usuario para que las introduzca), realizar una pequeña aplicación en C+/- usando la técnica de refinamientos sucesivos para extraer en pantalla: Código_Producto Cantidad Precio Importe Base Imponible IVA Total

Page 3: CUESTIONARIO Nº 1 Respuesta correcta= 1 ptodrago.intecca.uned.es/download/aW50ZWNjYS51bmVkLmVz_66680... · No respuesta = 0 ptos Pag.6 3.6.- ... Numero] Cadenas correctas del lenguaje

CUESTIONARIO Nº 2 Respuesta correcta= 1 pto Respuesta incorrecta= -0,25 pto No respuesta = 0 ptos

Pag.3

2.1.- Después de la palabra clave else { if:

a) Siempre hay una condición. b) Siempre hay una acción. c) Puede haber una acción o condición. d) Acaba la selección.

2.2.- De un subprograma que devuelve siempre los mismos resultados se puede decir:

a) Que es robusto. b) Que es funcional. c) Nada. d) Que es eficiente

2.3.- La ingeniería del software aporta fundamentalmente a la programación:

a) Modelos abstractos de cómputo más sofisticados. b) Técnicas organizativas para desarrollos a gran escala. c) Mejores lenguajes de programación. d) El desarrollo automático de grandes programas.

2.4.- Ordenar los conceptos CLARIDAD, EFICIENCIA y CORRECCIÓN:

a) Eficiencia, claridad y corrección. b) Todos igual importancia. c) Corrección, eficiencia y claridad. d) Corrección, claridad y eficiencia.

2.5.- Dado el siguiente fragmento de código for (int cont1 = -1; cont1 <= 1; cont1++) { for (int cont2 = 1; cont2 <= cont1; cont2++) { Printf (“Hola\n”): } } El número de veces que Hola aparece en pantalla es:

a) 1. b) Hay un error de tipos. c) 3. d) 0.

2.6.- Dado el siguiente fragmento de código:

Page 4: CUESTIONARIO Nº 1 Respuesta correcta= 1 ptodrago.intecca.uned.es/download/aW50ZWNjYS51bmVkLmVz_66680... · No respuesta = 0 ptos Pag.6 3.6.- ... Numero] Cadenas correctas del lenguaje

CUESTIONARIO Nº 2 Respuesta correcta= 1 pto Respuesta incorrecta= -0,25 pto No respuesta = 0 ptos

Pag.4

for (int cont1 = -1; cont1 <= 10; cont1++) { for (int cont2 = 1; cont2 <= cont1; cont2++) { Printf (“Hola\n”): } } El número de veces que Hola aparece en pantalla es:

a) 1. b) 55. c) Hay un error de tipos. d) 53.

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

2.8.- Dado el siguiente fragmento de código: int n = 0; if (n < 2) { n++; } Después de su ejecución n contiene el valor:

a) 1. b) 3. c) 2. d) 0.

2.9.- Para imprimir una ristra de caracteres utilizando printf emplearemos:

a) Selección. b) Ordenación. c) Búsqueda. d) Iteración.

2.10.- Cual de estas sentencias es de iteración:

a) if…{…} else{ b) while…{…} c) Begin{…}End d) A=B

Page 5: CUESTIONARIO Nº 1 Respuesta correcta= 1 ptodrago.intecca.uned.es/download/aW50ZWNjYS51bmVkLmVz_66680... · No respuesta = 0 ptos Pag.6 3.6.- ... Numero] Cadenas correctas del lenguaje

CUESTIONARIO Nº 3 Respuesta correcta= 1 pto Respuesta incorrecta= -0,25 pto No respuesta = 0 ptos

Pag.5

3.1.- Nos encontramos con la siguiente sentencia: Dato = 3; Dato = 4.3; ¿Qué estamos manejando?:

a) Dos campos variantes con el mismo identificador. b) Un error. c) Una variable multitipo. d) Una redefinición.

3.2.- El dato “hola” es:

a) Una constante cuyo identificador es “hola”. b) Es un ARRAY de CHAR. c) Es un valor constante. d) Es un CHAR.

3.3.- Dado el siguiente fragmento de código: int A () { int A; return A; } int main () { int A; …………………….. ¿Qué estamos manejando?:

a) Error, identificador reutilizado. b) Correcto, es una redefinición de identificadores. c) Correcto, las reglas de visibilidad deciden. d) Error, por paralelaje de identificadores.

3.4.- Los aspectos de estilo:

a) Muestran la creatividad de cada programador. b) No dependen del lenguaje utilizado. c) Sólo tienen en cuenta encolumnado y comentarios. d) Los fija el lenguaje utilizado.

3.5.- La complejidad de un algoritmo:

a) Depende del programador. b) Depende del anidamiento de bucles. c) Depende del invariante. d) Aumenta con el uso de la recursividad.

Page 6: CUESTIONARIO Nº 1 Respuesta correcta= 1 ptodrago.intecca.uned.es/download/aW50ZWNjYS51bmVkLmVz_66680... · No respuesta = 0 ptos Pag.6 3.6.- ... Numero] Cadenas correctas del lenguaje

CUESTIONARIO Nº 3 Respuesta correcta= 1 pto Respuesta incorrecta= -0,25 pto No respuesta = 0 ptos

Pag.6

3.6.- La complejidad…:

a) Determina la corrección de un programa. b) Depende del anidamiento de bucles. c) Mide la robustez de un programa. d) Se calcula a partir del invariante.

3.7.- Dadas las siguientes reglas de producción: Letra ::= {a|b} Numero ::= {1|2} Cadena ::= [Letra|Numero] Cadenas correctas del lenguaje generado por esta gramática serán:

a) a1 y b1. b) aab y 121. c) 2aa y b22. d) ab12 y bb22.

3.8.- Una expresión condicional…:

a) Sólo se puede usar en sentencias IF, WHILE y FOR. b) Sólo se puede usar en la sentencia IF. c) Siempre emplea operadores de comparación. d) Siempre da como resultado un BOOLEAN.

3.9.- El invariante de una iteración es la condición que se debe cumplir siempre:

a) Antes y después de cada nueva repetición. b) Sólo tras cada repetición. c) Sólo antes de cada repetición. d) En cualquier parte del bucle iterativo.

3.10.- Cuál de las siguientes parejas de operadores tienen siempre resultados del mismo tipo:

a) ||, =. b) *, +. c) *, isascii. d) &&, <=.

3.11.- Los metasímbolos son:

Page 7: CUESTIONARIO Nº 1 Respuesta correcta= 1 ptodrago.intecca.uned.es/download/aW50ZWNjYS51bmVkLmVz_66680... · No respuesta = 0 ptos Pag.6 3.6.- ... Numero] Cadenas correctas del lenguaje

CUESTIONARIO Nº 3 Respuesta correcta= 1 pto Respuesta incorrecta= -0,25 pto No respuesta = 0 ptos

Pag.7

a) Elementos de la notación BNF. b) Elementos de la programación lógica. c) Elementos de la programación funcional. d) Parte del modelo de flujo de datos.

3.12.- Dado el siguiente fragmento de código: for (int i =0; i<=1; i=i+0.1) { printf (“Esto se escribe 10 veces\n”); /*Esto se escribe 10 veces y salta a la línea siguiente*/ }

a) Puede dar lugar a resultados inesperados. b) El cuerpo del bucle se ejecuta 10 veces. c) La frase se escribe una vez, pero al incrementar el índice se produce

error. d) Aunque no hay errores, el cuerpo del bucle nunca se ejecuta.

3.13.- Dado el siguiente fragmento de código: float distancia (float X1, float Y1, float X2, float Y2) { X1 = X2 – X1; Y1 = Y2-Y1; return sqrtf (X1 * X1+Y1 * Y1); }

Y sea el código de llamada: xA = 23.5; yA=12.3; xB = 5.7; yB = 2.6; distanciaBA = distancia (xA, yA, xB, yB); Después de esta llamada la variable xA vale:

a) 5.7 – 23.5 b) 23.5 c) 23.5 * 23.5 d) 23.5 – 7.5

3.14.- En C+- las funciones deben devolver un valor…:

a) De un tipo estructurado b) De un tipo simple c) De cualquier tipo d) De un tipo que no sea declarado por el usuario

3.15.-Dada la siguiente declaración: const float v1 = 3.0; int v3; char v2;

y la invocación Param (v1, v2, v3); la cabecera correcta del subprograma Param es:

a) void Param (float & v1, char v2, int v3);

Page 8: CUESTIONARIO Nº 1 Respuesta correcta= 1 ptodrago.intecca.uned.es/download/aW50ZWNjYS51bmVkLmVz_66680... · No respuesta = 0 ptos Pag.6 3.6.- ... Numero] Cadenas correctas del lenguaje

CUESTIONARIO Nº 3 Respuesta correcta= 1 pto Respuesta incorrecta= -0,25 pto No respuesta = 0 ptos

Pag.8

b) void Param (float v1, char & v2, int & v3); c) void Param (float & v1, char v2, int & v3); d) void Param (float & v1, char & v2, int v3);

3.16.- Un intérprete:

a) Simula una máquina virtual b) Traduce de un lenguaje fuente a un lenguaje objeto c) Analiza la red de operadores d) Mejora la eficiencia de un programa

3.17.- Dado el siguiente procedimiento: int Calcular (int & A, int B) { A = B % 2; B = A * A + 3 * B - 6; return A + B; }

El valor de x tras ejecutar: x = 4; x = Calcular (x, x); /*Fenómeno de doble referencia*/

será:

a) 4 b) 0 c) 6 d) 12

PROBLEMA 3.1 Realizar un programa que calcule la altura de una torre conociendo que cuando el sol forma un ángulo α la distancia sombreada desde la base de la torre vale A. Se podrán utilizar solamente las funciones sinf (x) y cosf (x) del módulo <math.h>. PROBLEMA 3.2 Escribir un subprograma tal que dada una fecha con tres datos de tipo entero (día, mes y año), nos indique si esta es correcta comprobando:

− Que los tres números son positivos (> 0) y el año es mayor de 1900. − Que el mes es correcto (1…12). − Que el día se encuentra dentro del máximo para el mes (tener en cuenta los años

bisiestos).

Page 9: CUESTIONARIO Nº 1 Respuesta correcta= 1 ptodrago.intecca.uned.es/download/aW50ZWNjYS51bmVkLmVz_66680... · No respuesta = 0 ptos Pag.6 3.6.- ... Numero] Cadenas correctas del lenguaje

CUESTIONARIO Nº 4 Respuesta correcta= 1 pto Respuesta incorrecta= -0,25 pto No respuesta = 0 ptos

Pag.9

4.1.- Una de las siguientes reglas BNF genera la producción ab:

a) {a} | {b}. b) [a] | [b]. c) {b} | {a}. d) {a | b}.

4.2.- De la sentencia A = Tpalabra{ Ordenar(dato) }; podemos decir

a) Es una sentencia de asignación correcta. b) Ordenar devuelve una formación. c) Dato debe ser de tipo referencial. d) Es incorrecta la invocación.

4.3.- A descomponer un problema en subproblemas se conoce:

a) Reutilización. b) Redefinición. c) Refinamiento. d) Reasignación.

4.4.- La Reutilización se puede lograr mediante desarrollo:

a) Ascendente y descendente. b) Sólo descendente. c) Sólo ascendente. d) Específico.

4.5.- Dado el siguiente fragmento de código: typedef enum tipo {A, B, C}; tipo Prueba (tipo & p1, tipo p2) { ………………………………… Return p1; }

a) Se produce error por incompatibilidad de tipos. b) Es correcto. c) La cabecera del subprograma es incorrecta. d) Sería correcta si lo fuese la definición del tipo enumerado.

4.6.- Dada la siguiente declaración: Tipodias T; del siguiente fragmento de código: Dato == dias [T]; Podemos decir que:

a) Dato debe ser una constante. b) Es una expresión condicional. c) Es una sentencia de asignación. d) Es una definición de tipo.

4.7.- Dado el siguiente fragmento de código:

Page 10: CUESTIONARIO Nº 1 Respuesta correcta= 1 ptodrago.intecca.uned.es/download/aW50ZWNjYS51bmVkLmVz_66680... · No respuesta = 0 ptos Pag.6 3.6.- ... Numero] Cadenas correctas del lenguaje

CUESTIONARIO Nº 4 Respuesta correcta= 1 pto Respuesta incorrecta= -0,25 pto No respuesta = 0 ptos

Pag.10

switch (j) { case enero: case febrero: case junio: j++; break; case diciembre: case julio: j--; break; default: ; }

a) La variable j debe ser de un tipo ordinal para ser correcto. b) Es necesario default. c) La sentencia default no se puede usar dentro de switch. d) Los rangos establecidos son incorrectos.

4.8.- Dado el siguiente procedimiento: void proc (int a, int b) { int aux; aux = a + b + c; c = aux; } Para que fuese puro:

a) Todas las variables, incluida aux, deben pasarse por referencia. b) Es ya un procedimiento puro. c) Bastaría pasar las variables a y b por referencia. d) La variable c debiera pasarse por referencia.

4.9.- Sabiendo que en C+- existe el tipo predefinido bool: typedef enum bool {false, true}; Se puede afirmar:

a) int(false) == 0. b) int(false) == 1. c) El tipo bolean no es un tipo ordinal. d) Con los tipos predefinidos no se puede utilizar int.

4.10.- Una de las siguientes afirmaciones no siempre es cierta en C+-:

a) ‘t’ es un valor constante. b) Dias {lunes} es un valor constante. c) 43.2 es un valor constante. d) “Hola” es un valor constante.

4.11.- Dado el siguiente fragmento de código: char a; typedef enum char {‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’}; char b; … b = ‘3’; a = b;

Page 11: CUESTIONARIO Nº 1 Respuesta correcta= 1 ptodrago.intecca.uned.es/download/aW50ZWNjYS51bmVkLmVz_66680... · No respuesta = 0 ptos Pag.6 3.6.- ... Numero] Cadenas correctas del lenguaje

CUESTIONARIO Nº 4 Respuesta correcta= 1 pto Respuesta incorrecta= -0,25 pto No respuesta = 0 ptos

Pag.11

a) Se produce un error en la asignación a = b. b) La declaración de variables es incompatible. c) Se produce un error en la asignación b = ‘3’. d) Es correcto.

4.12.- Dado el siguiente fragmento de código: Dato = dias [L]; Podemos decir que:

a) Dato no tiene tipo. b) L puede ser una variable o constante. c) dias es el nombre del tipo referencial. d) dias [L] es un valor constante.

Page 12: CUESTIONARIO Nº 1 Respuesta correcta= 1 ptodrago.intecca.uned.es/download/aW50ZWNjYS51bmVkLmVz_66680... · No respuesta = 0 ptos Pag.6 3.6.- ... Numero] Cadenas correctas del lenguaje

CUESTIONARIO Nº 5 Respuesta correcta= 1 pto Respuesta incorrecta= -0,25 pto No respuesta = 0 ptos

Pag.12

5.1.- La compilación separada:

a) Garantiza la compilación segura. b) Facilita el trabajo en equipo. c) Es exclusiva de C+-. d) Está ligada a los tipos abstractos.

5.2.- Dado el siguiente fragmento de código TipoPunt pt1; TipoReg reg; pt1 = new TipoPunt; reg.dato = 2; (*pt1).dato = 3; podemos decir:

a) Pt1 es memoria dinámica y reg es memoria estática. b) 2 y 3 están en memoria dinámica. c) 2 está en memoria estática y 3 en memoria dinámica. d) 2 y 3 están en memoria estática.

5.3.- A la vista únicamente de la siguiente declaración: Tipo_nodo * secuencia, siguiente; En C+- podemos decir:

a) Es incorrecta. b) secuencia es de tipo anónimo. c) secuencia y siguiente son datos ocultos. d) Secuencia y siguiente son tipos abstractos.

5.4.- Los datos encapsulados:

a) Son de acceso secuencial. b) Son datos persistentes. c) Son punteros. d) Son TAD.

5.5.- El siguiente fragmento de código: FOR (int c1 = 1; c1 <= 4; c1++) { puntero = new TipoPuntero; *puntero = c1; } FOR (int c1 = 1; c1 <= 4; c1++) { Printf(“%d”, *puntero); }

Page 13: CUESTIONARIO Nº 1 Respuesta correcta= 1 ptodrago.intecca.uned.es/download/aW50ZWNjYS51bmVkLmVz_66680... · No respuesta = 0 ptos Pag.6 3.6.- ... Numero] Cadenas correctas del lenguaje

CUESTIONARIO Nº 5 Respuesta correcta= 1 pto Respuesta incorrecta= -0,25 pto No respuesta = 0 ptos

Pag.13

Imprime por pantalla:

a) 3333. b) 4444. c) 1234. d) 4.

5.6.- Dada la siguiente declaración: typedef enum Subletras {“A”, “B”, “C”}; typedef Subletras* Tconj; typedef Tconj Conjsubletras[7]; Conjsubletras a; La instrucción correcta en C+- es:

a) a[1] = “C”. b) *a = “C”. c) a[1][1] = “C”. d) Está expresamente prohibido.

5.7.- Respecto a la sentencia: *p = p->siguiente / 23; Se puede decir:

a) Hay incompatibilidad de tipos en la operación división. b) Es correcta. c) No es correcta p->siguiente. d) Hay incompatibilidad de tipos en la asignación.

5.8.- El subprograma Ordena devuelve, cualquier vector de letras que se le pasa como parámetro, ordenado. Su cabecera podrá ser:

a) Ordena: const letras v. b) Ordena (letras v[], int numLetras). c) Ordena (const letras v[], int numLetras). d) Ordena (TipoVectLetras, int numLetras).

5.9.- Respecto a la sentencia: *p = p->siguiente + 1; Se puede decir:

a) Es correcta. b) Es correcta cuando siguiente es puntero. c) Es incorrecta. d) Es correcta cuando siguiente es de tipo integer.

Page 14: CUESTIONARIO Nº 1 Respuesta correcta= 1 ptodrago.intecca.uned.es/download/aW50ZWNjYS51bmVkLmVz_66680... · No respuesta = 0 ptos Pag.6 3.6.- ... Numero] Cadenas correctas del lenguaje

CUESTIONARIO Nº 5 Respuesta correcta= 1 pto Respuesta incorrecta= -0,25 pto No respuesta = 0 ptos

Pag.14

5.10.- Dado el siguiente fragmento de código: typedef enum integer {0..10}; typedef integer TipoVector[10]; TipoVector k; … K[10] = 10; Se puede decir:

a) El acceso al elemento 10 es incorrecto. b) El tipo de datos integer utilizado en la declaración es incorrecto. c) Es correcto. d) La asignación produce un error por incompatibilidad de tipos.

PROBLEMA Dada una tabla de hasta 10 puntos del plano (x, y): 1.-Construir un tipo de datos que te parezca idóneo para plantear el problema. 2.-Realizar una función que determine si algún punto coincide con el primero devolviendo su posición en la tabla. 3.-Realizar una función que sume la longitud de los segmentos entre los puntos sucesivos de la tabla desde uno inicial a otro final. 4.-Calcular el perímetro del polígono cerrado formado por el punto inicial y los sucesivos puntos hasta el primero de la tabla que coincida con el inicial.

Page 15: CUESTIONARIO Nº 1 Respuesta correcta= 1 ptodrago.intecca.uned.es/download/aW50ZWNjYS51bmVkLmVz_66680... · No respuesta = 0 ptos Pag.6 3.6.- ... Numero] Cadenas correctas del lenguaje

CUESTIONARIO Nº 6 Respuesta correcta= 1 pto Respuesta incorrecta= -0,25 pto No respuesta = 0 ptos

Pag.15

6.1.- Dado el siguiente interfaz de módulo Ajedrez: #pragma once /*Directiva para evitar la duplicación de elementos de distintos módulos que se importan varias veces bien directa o indirectamente desde otro*/ typedef enum Cuadro {caballo, torre, alfil}; void Jugar (); Identificar la sentencia correcta que se debe emplear en el módulo principal, supuesto #include “Ajedrez.h”

a) Ficha = Cuadro ( (int(torre) -1+3) % 3). b) Ajedrez.Jugar. c) INC(Cuadro). d) Ajedrez.Cuadro = torre.

6.2.- Dado el siguiente interfaz de módulo Juegos: #pragma once typedef enum TipoRumbo {Este, Norte, Oeste, Sur}; typedef struct TipoDato{ /*Un TAD se representa muy bien mediante una estructura de tipo registro, en el que se agrupan una colección de valores y operaciones que los manipulan*/ void Poner (int x, int y, TipoRumbo rumbo); void Avanzar(), void GirarDerecha(); void GirarIzquierda(); private: int xx, yy; TipoRumbo sentido; }; Identificar la sentencia correcta que se debe emplear en el módulo principal, supuesto #include “Juegos.h”

a) Seguir = TipoDato.Avanzar(). b) rumbo.GirarIzquierda (). c) TipoDato.GirarDerecha(). d) rumbo.xx = 3.5.

6.3.- Dado el siguiente interfaz de módulo Primero: #pragma once typedef struct TipoFecha{ /* Obtener el contenido de un dato fecha */ int Dia(), int Mes(); int Anno(); private: /*Ocultación de los datos a continuación, esto significará que estos datos si bien pueden ser utilizados desde su módulo de realización, no se pueden utilizar desde otro módulo externo*/ int dia. mes, anno; };

Page 16: CUESTIONARIO Nº 1 Respuesta correcta= 1 ptodrago.intecca.uned.es/download/aW50ZWNjYS51bmVkLmVz_66680... · No respuesta = 0 ptos Pag.6 3.6.- ... Numero] Cadenas correctas del lenguaje

CUESTIONARIO Nº 6 Respuesta correcta= 1 pto Respuesta incorrecta= -0,25 pto No respuesta = 0 ptos

Pag.16

Si en el módulo de realización Juegos.cpp, …. void Poner (int dia, int mes, int anno) { /* Dar valor a un dato fecha */

a) Poner es de tipo anónimo. b) Poner es de tipo referenciado. c) Nadie podrá utilizar Poner. d) No tiene sentido definir Poner.

6.4.- Dado el siguiente interfaz de módulo Juegos: typedef struct TipoJuegos{ void InicioJuego(); void FinJuego(); }; InicioJuego y FinJuego manipulan la variable jugadores. ¿Dónde se debe inicializar esta variable?.

a) En las sentencias de inicialización del módulo de implementación. b) En las sentencias de inicialización del módulo interfaz. c) En el bloque ejecutivo de los procedimientos. d) En la parte ejecutiva de los módulos que los usen.

6.5.- ¿Cúal de las siguientes afirmaciones es correcta?:

a) Los tipos encapsulados son TAD. b) Los datos encapsulados son tipos opacos. c) Los tipos anónimos son datos encapsulados. d) Los tipos abstractos son tipos encapsulados.

6.6.- En el módulo de interfaz, de un dato encapsulado:

a) Se utilizan subprogramas y declaración de variables. b) Se utilizan subprogramas, declaración de variables y tipos. c) Sólo se utilizan subprogramas. d) Se utilizan todos los elementos de definición.

6.7.- Para encapsular un dato, se podrá hacer:

a) Dentro del interfaz. b) Dentro de un TRY-CATCH. c) Dentro de un subprograma. d) Dentro de un registro.

Page 17: CUESTIONARIO Nº 1 Respuesta correcta= 1 ptodrago.intecca.uned.es/download/aW50ZWNjYS51bmVkLmVz_66680... · No respuesta = 0 ptos Pag.6 3.6.- ... Numero] Cadenas correctas del lenguaje

CUESTIONARIO Nº 6 Respuesta correcta= 1 pto Respuesta incorrecta= -0,25 pto No respuesta = 0 ptos

Pag.17

PROBLEMA MODULAR En el módulo Juegos, se dispone del TAD CartaBaraja, que representa una carta de la baraja española. También se dispone de dos operaciones asociadas: PonerPalo y PonerTriunfo. PonerPalo, establece el palo de la carta: oros, copas, espadas o bastos. Por ejemplo: PonerPalo(carta, oros). PonerTriunfo, establece el triunfo de la carta: as, dos,…, sota, caballo o rey. Por ejemplo: PonerTriunfo(carta, rey) Se pide crear en el módulo principal una baraja de 40 cartas y la operación Vencer. Una carta vence a otra cuando su triunfo es mayor, excepto cuando una de las cartas es de la “pinta” que entonces gana aún cuando su triunfo sea menor. Si dos cartas tienen igual triunfo vence cualquiera de las dos. Ejemplo: carta1 es el dos de copas, carta2 es el rey de bastos y la “pinta” es copas. Vencer(carta1, carta2, copas) devuelve cierto; Vencer(carta2, carta1, copas) devuelve falso; Vencer(carta1, carta2, bastos) devuelve falso. PROBLEMA MODULAR Realizar un TAD para resolver un sistema de traducción automático entre dos idiomas. El TAD almacenará las palabras equivalentes en dos idiomas, por ejemplo, para el francés-inglés, almacenará pares: (voiture-car) ó (maison-house), etc. El TAD dispondrá de dos operaciones: el procedimiento AlmacenarPar que permite introducir un par de palabras equivalentes y la función Traducir que tiene como argumentos el idioma y la palabra, y devuelve la palabra traducida en el otro idioma disponible. (NOTA: para realizar la comparación de dos palabras se debe usar la función strcmp(c1, c2) del módulo STRING que recibe dos palabras y devuelve valor 0 si son iguales, < 0 si c1 precede sintácticamente a c2 y >0 si c2 precede a c1. También el procedimiento strcpy(c1, c2) que copia c2 en c1).

Page 18: CUESTIONARIO Nº 1 Respuesta correcta= 1 ptodrago.intecca.uned.es/download/aW50ZWNjYS51bmVkLmVz_66680... · No respuesta = 0 ptos Pag.6 3.6.- ... Numero] Cadenas correctas del lenguaje

CUESTIONARIO Nº 7 Respuesta correcta= 1 pto Respuesta incorrecta= -0,25 pto No respuesta = 0 ptos

Pag.18

7.1.- Cual de estas operaciones no es válida en C+-:

a) if (lado = ancho). b) ladoMayor >= largo. c) int(C1)+1+int(C2)*10. d) VolumenCubo( ladoCubo ) > 27.

7.2.- En una secuencia apuntada el número máximo de elementos que la integran lo determina:

a) El cursor de la secuencia. b) El índice de la secuencia. c) No hay número máximo. d) Su declaración.

7.3.- De la sentencia: while (c != NULL && c->valor < numero) {…

a) Tiene errores de compilación. b) Puede corresponder a una operación de búsqueda. c) Nunca se ejecuta el cuerpo del bucle. d) Es un bucle infinito.

7.4.- La realización de un TAD en C+- lleva implícito el uso de:

a) Un sólo módulo de implementación. b) Un solo módulo de interfaz. c) Datos predefinidos. d) Un módulo de interfaz y otro de realización.

7.5.- Del módulo de interfaz <Simple.h>: void Uno; void Dos; se puede afirmar:

a) Faltan argumentos a los procedimientos. b) Falta una declaración de tipo. c) Es un tipo abstracto. d) Es un dato encapsulado.

7.6.- Del fragmento: switch (n.clase){ case Entero: printf( “%d”, n.valor.valorentero): break; case Real: printf( “%f”, n.valor.valorReal):

Page 19: CUESTIONARIO Nº 1 Respuesta correcta= 1 ptodrago.intecca.uned.es/download/aW50ZWNjYS51bmVkLmVz_66680... · No respuesta = 0 ptos Pag.6 3.6.- ... Numero] Cadenas correctas del lenguaje

CUESTIONARIO Nº 7 Respuesta correcta= 1 pto Respuesta incorrecta= -0,25 pto No respuesta = 0 ptos

Pag.19

break; case Fraccion: printf( “%d/%d”, n.valor.valorRacional.numerador, n.valor.valorRacional.denominador); break; default: printf( “?????”); } se puede afirmar:

a) n es una variable del tipo union. b) n.valor es de un tipo union. c) n.valor.valorentero es un tipo de dato union. d) n.clase es un tipo de dato union.

7.7.- Para que en C+-, la siguiente definición de tipo sea la de una tabla: typedef TipElem TipVect[TipInd];

a) TipInd debe ser un tipo ordinal definido por el usuario y TipElem de cualquier tipo.

b) TipInd debe ser cualquier tipo predefinido y TipElem struct. c) TipInd debe ser un tipo ordinal y TipElem struct. d) TipInd debe ser un tipo struct y TipElem de cualquier tipo.

7.8.- La compilación segura:

a) Mejora la reutilización. b) Produce un programa objeto más eficiente. c) Tiene como objetivo comprobar la compatibilidad de tipos. d) Necesita un módulo de interfaz.

7.9.- Dado el siguiente fragmento de código: typedef struct t1 { float c1; float c2; }; typedef float* t1; typedef t1* t3; t1 a; t2 b; t3 c;………..

a) c->c1 = a.c2. b) b = c->c1. c) a = c.

Page 20: CUESTIONARIO Nº 1 Respuesta correcta= 1 ptodrago.intecca.uned.es/download/aW50ZWNjYS51bmVkLmVz_66680... · No respuesta = 0 ptos Pag.6 3.6.- ... Numero] Cadenas correctas del lenguaje

CUESTIONARIO Nº 7 Respuesta correcta= 1 pto Respuesta incorrecta= -0,25 pto No respuesta = 0 ptos

Pag.20

d) c.c1 = a.c2. 7.10.- Dado la siguiente declaración de variables: T1 c1; T2 c2; ……….. Después de ejecutar Leer(c1); Leer(c2) Las variables c1 y c2 toman los valores “esto” y “aquello” respectivamente. A la vista del resultado, el procedimiento Leer tendrá como argumento:

a) (char v[]) b) (T1 a, T2) c) (const char v) d) (const char v[])

EJERCICIO DE PROGRAMACIÓN Construir un dato encapsulado que sea una tabla de 50 elementos, en las que se almacenan los datos de una persona: nombre, apellido1, apellido2, dirección y teléfono. Las operaciones serán añadir un elemento, eliminar un elemento y un procedimiento de búsqueda selectiva por nombre o por número de teléfono. Si se encuentra la persona en la tabla se devolverá cierto y se mostrará toda la información disponible para esa persona y sino se devolverá falso.

Page 21: CUESTIONARIO Nº 1 Respuesta correcta= 1 ptodrago.intecca.uned.es/download/aW50ZWNjYS51bmVkLmVz_66680... · No respuesta = 0 ptos Pag.6 3.6.- ... Numero] Cadenas correctas del lenguaje

CUESTIONARIO Nº 8 Respuesta correcta= 1 pto Respuesta incorrecta= -0,25 pto No respuesta = 0 ptos

Pag.21

8.1.- Dado el siguiente fragmento de código: typedef enum int {‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’}; typedef int TipoVector [3]; TipoVector k; … K[3] = 2;

a) La redefinición del tipo INTEGER es incorrecta. b) La declaración de la variable k es incorrecta. c) K[3] accede al tercer elemento del vector k. d) Es correcto

8.2.- Dada la siguiente declaración: typedef int* Tp_Entero; typedef float* Tp_Real; … p1 = new int; p2 = new float; La sentencia correcta sera:

a) p1 = int(p2); b) *p1 = int(*p2); c) p1 = p2; d) p2 = float(p1);

8.3.- Dada la siguiente declaración: typedef int TipoVector[10]; TipoVector dato; con la siguiente sentencia for (int cont = 0; cont < 10; cont++) { dato [cont] = dato [cont+1]; }

a) Manipulamos el índice del vector por referencia. b) Trasladamos los elementos del vector una posición hacia la izquierda. c) Trasladamos los elementos del vector una posición hacia la derecha. d) Cometemos un error de acceso a los elementos del vector

8.4.- Después de ejecutar el siguiente fragmento de código: typedef float* Tp_Real; Tp_Real pt1, pt2, pt3; …

Page 22: CUESTIONARIO Nº 1 Respuesta correcta= 1 ptodrago.intecca.uned.es/download/aW50ZWNjYS51bmVkLmVz_66680... · No respuesta = 0 ptos Pag.6 3.6.- ... Numero] Cadenas correctas del lenguaje

CUESTIONARIO Nº 8 Respuesta correcta= 1 pto Respuesta incorrecta= -0,25 pto No respuesta = 0 ptos

Pag.22

pt1 = new float; *pt1 = 3.0; pt2 = pt1; pt3 = pt2; delete pt2; pt2 = NULL; /*para que no quede apuntando a un lugar que ya no existe*/

a) Sólo se libera pt3 b) Se liberan pt1, pt2 y pt3 c) Sólo se liberan pt3 y pt2. d) Se produce un error y no se libera memoria.

8.5.- La definición completa de un dato encapsulado:

a) Se realiza en el módulo de implementación b) Se realiza en el módulo principal c) Se realiza en el interfaz d) Se realiza entre el módulo de implementación e interfaz

8.6.- Dado el siguiente módulo: #pragma once void Previo (tipodato & dato); …

a) Es correcto, tipodato es un dato encapsulado b) Es erróneo, se necesita la declaración de tipodato c) Es erróneo, tipo dato es un tipo anónimo d) Es erróneo, dato debiera ser por valor

8.7.- La cabecera del subprograma printf para imprimir cadenas de caracteres podría ser:

a) void printf (char & a); b) void printf (const char a[1000]); c) void printf (const char a); d) void printf (const char a[]);

EJERCICIO DE PROGRAMACIÓN Desarrollar en C+- un tipo de dato que represente la velocidad, altura y rumbo: Norte, Sur, Este y Oeste, que lleva un avión. Con las operaciones: LeerRumbo, LeerAltura, LeerVelocidad. Sólo se pide el interfaz. Úsese el dato definido para crear en un módulo principal un subprograma que imprima por pantalla los datos de 20 aviones.

Page 23: CUESTIONARIO Nº 1 Respuesta correcta= 1 ptodrago.intecca.uned.es/download/aW50ZWNjYS51bmVkLmVz_66680... · No respuesta = 0 ptos Pag.6 3.6.- ... Numero] Cadenas correctas del lenguaje

CUESTIONARIO Nº 8 Respuesta correcta= 1 pto Respuesta incorrecta= -0,25 pto No respuesta = 0 ptos

Pag.23

EJERCICIO DE PROGRAMACIÓN Escribir el interfaz Pintarfiguras con los tipos de datos que se consideren necesarios (TipoPunto, TipoRadio, etc.) y tres únicas operaciones: PintaCirculo, PintaCuadrado y PintaEquilatero. Importando el módulo definido anteriormente, escribir un programa principal que pinte la siguiente figura:

LongLado Las operaciones se definirán los más simples posibles teniendo en cuenta la figura que se quiere pintar:

1. Menor número de argumentos. 2. Argumentos lo más simples posibles y basados en los tipos elegidos en el

interfaz. EJERCICIO DE PROGRAMACIÓN Implementar mediante un TAD un vector de longitud 3 tal que en los extremos contenga colores básicos (rojo, amarillo o azul), mientras que en el centro almacene la mezcla de dichos colores (rojo+amarillo = naranja, rojo+azul = violeta, amarillo+azul = verde). El TAD dispondrá del procedimiento Mezclar Vector, que al recibir un vector con colores en los extremos rellenará la posición central, tal como se indica en el ejemplo:

Azul Amarillo MezclarVector

Azul Verde Amarillo

EJERCICIO DE PROGRAMACIÓN Realizar un TAD para el juego de las TRES EN RAYA. Cada casilla del tablero podrá estar vacío o ocupado sólo por una ficha blanca o negra. Las operaciones serán:

1. Poner ficha en 1 cuadrícula comprobando que no está ocupada (sólo para poner). 2. Quitar una ficha de una cuadrícula. 3. Comprobar si se produce 3 en raya e indicar si es de blancas o negras.