Errores comunes en programación y sistemas

1 ¿Cuál de las siguientes afirmaciones es cierta? ( )En un sistema de numeración posicional existen tantos símbolos como la base del sistema.
2 ¿Cuál de las siguientes afirmaciones es falsa? ( ) Con un código alfanumérico se pueden representar letras mayúsculas y minúsculas, números del 0 al 9, símbolos especiales, caracteres gráficos, pero no permite representar caracteres de control.
3
La función de buscar la instrucción en la memoria principal, interpretarla y ejecutarla, generando señales de control es la misión de: ( ) Unidad de Control.
4 La jerarquía de la memoria según el número de accesos vaya de mayor a menor es: ( ) Registros, caché, memoria principal, caché de disco, disco magnético, disco óptico.
5
En los primeros computadores solo existía un único bus denominado «Bus del sistema». Este bus se caracterizaba por ser un bus: ( ) Multiplexado
6
El mecanismo para permitir o denegar el acceso de un proceso a un determinado recurso, entra dentro de las funciones del sistema operativo de: ( ) Gestión de seguridad.
7
Indicar cuál de las siguientes funciones no está asociada directamente a la gestión de procesos por el SO: ( ) Decidir qué procesos se cargarán en memoria cuando haya espacio disponible.
8
¿Cuál de las siguientes afirmaciones es falsa? ( ) No se puede tener en una tabla una clave principal formada por más de un campo
9
¿Qué proceso debe seguir una base de datos para estar bien estructurada? ( ) Crear base de datos – Crear tablas – Crear relaciones – Crear consultas – Crear formularios – Crear informes
10
¿Qué muestra en pantalla la compilación y ejecución del siguiente programa? main() { float f=2.3; int i=f; printf(«%d»,i); } ( ) 2
11 ¿Qué muestra en pantalla la compilación y ejecución del siguiente programa? main() { int x=1,y; y=1+x++; printf(«%d»,x); } ( ) 2
12 ¿Qué muestra en pantalla la compilación y ejecución del siguiente programa después de teclear la frase:»Hola verano[Enter]»? main() { char vector[10]; scanf(«%s»,vector); printf(«%s»,vector); } ( ) Hola

13 ¿Qué muestra en pantalla la compilación y ejecución del siguiente programa? main() { int i,n=10; for(i=1;i;i=i*2);>16

14 Un puntero se considera un tipo de dato ( ) Estructurado
15 Si la técnica que usamos para escribir un algoritmo consiste en utilizar una descripción del proceso a realizar mediante palabras dentro de símbolos específicos unidos por líneas, se trata de: ( ) Diagrama de flujo
16 ¿Cuándo se puede sustituir una sentencia condicional múltiple SI ENTONCES por la sentencia CASO variable ? ( ) Cuando la variable que se evalúa en la condición tenga un numero entero y finito de valores.
17 Cuando un proceso tiene que repetirse un número indeterminado de veces, en función de un dato interno del programa y el proceso se realizará al menos una vez. Hay que utilizar la estructura: ( ) do while
18 En las conversiones de tipos de datos. ¿Cuál de las siguientes afirmaciones es cierta? ( ) Cuando en una expresión intervienen variables y constantes de tipos de datos diferentes, los operandos de menor precisión se igualan a los de precisión más alta.

ón>

1) (0.5p) Calcular el número decimal, octal y hexadecimal del numero binario: 1111111101010,0101111111 Nota: el valor decimal expresarlo con 10 decimales

Sol: Decimal: 212+211+210+29+28+27+26+25+0+23+0+21+0+0+2-2+0+2-4+2-5+2-6+2-7+2-8+2-9+2-10 = = 8170,3740234375(10 Octal: 001 111 111 101 010 , 010 111 111 100 = 17752,2774(8 Hexadecimal: 0001 1111 1110 1010 , 0101 1111 1100 = 1FEA,5FC(16

2) (1p) Representar el número expresado en base 4 : -3201,0023 en sistema binario con formato punto flotante (signo-exponente-mantisa) de simple precisión (32 bits). El exponente (8 bits) se representará en exceso y la mantisa en complemento a la base. Nota: el valor decimal expresarlo con 8 decimales Sol: B4 -> B10 -> B2 Decimal: 3*43+2*42+1*40+2*4-3+3*4-4 = 225,04296875(10 Binario: 225(10 = 11100001(2 0,04296875(10 = 00001011(2 11100001,00001011(2 Normalizamos : 0,1110000100001011 * 28 Exponente : 8 Exceso : 2n-1 = 27 = 128 Exponente en exceso: 8+128 = 136(10 => 10001000(2 Mantisa : 11100001000010110000000 Mantisa en C2 : 00011110111101010000000 Signo : (-) : 1 Representación en punto flotante de simple precisión: 1 10001000 00011110111101010000000

3) (0.5p) Evalúa cada uno de los operadores de la expresión para a=2 b=5 c=7 : ((((a>=b)and(a=c)or(b<><>c))))

Sol: (((F and V) or (F or V)) and ((V and V) or (F or F))) ((F or V) and (V or F)) V and V V

4) (0.5p) Completa los recuadros del programa para que la salida por pantalla sea: La variable vale 65 o A o 41 Sol. 1: main() { char variable = ‘A’ ; printf («\n La variable vale %d o %c o %x \n», variable, variable, variable); } Sol. 2: main() { int variable = 65 ; printf («\n La variable vale %d o %c o %x \n», variable, variable, variable); }

5) Un programa tiene que crear un fichero para gestionar un almacén de productos. De cada producto se conoce el número de unidades, precio unitario, código y la descripción del producto. Realizar: a) (0,5p) La declaración de todas las variables necesarias en el programa para gestionar el fichero de productos, sabiendo que el código tomará uno de los siguientes valores (P, p, M, m, G, g, L, l, X, x) y la descripción del producto ocupará un máximo de 50 caracteres. Sol: FILE *pf; int unidades; float precio; char código; char descripción [50];

b) (0,5p) Escribir las 2 instrucciones necesarias para que el usuario del programa sea informado e introduzca todos los datos del producto por teclado en una sola línea, separando cada dato con el carácter # . Sol: printf («\n Introduzca para cada artículo: unidades, precio, código (P, p, M, m, G, g, L, l, X, x) y descripción (máximo 50 caracteres), separando los datos con # \n»; scanf («%d#%f#%c#%s», &unidades, &precio, &código, descripción);

c) (0,5p) Escribir la instrucción con la que se grabarán todos los datos referidos a un producto en el fichero, teniendo en cuenta que el precio ocupará un máximo de 9 dígitos enteros y 3 decimales, los datos se escriben en el fichero separados por un espacio en blanco. Sol: fprintf (pf, «%d %9.3f %c %s «, unidades, precio, código, descripcion);

6) Para el siguiente programa: main() { int dato,veces,j; printf («\nRealizar para el entero : «); scanf («%d»,&dato ); for ( j=1 ; j<=dato ;=»» j++)=»» for=»» (=»» veces=»0″ ;=»»>=dato>
a) (0.5p) Realizar la traza (valor de las variables durante la ejecución) para dato=5 b) (0.5p) Escribir cual sería la salida en pantalla para dato=5 c) (0.5p) Modificar el programa sustituyendo las sentencias for por otras estructuras cíclicas

Sol. a) dato: 5 j:1 veces: 0,1 j:2 veces: 0,1,2 j:3 veces: 0,1,2,3 j:4 veces: 0,1,2,3,4 j:5 veces: 0,1,2,3,4,5 j:6 b) salida en pantalla: 122333444455555
c) main() { int dato,veces,j; printf («\nRealizar para el entero : «); scanf («%d»,&dato ); j=1; while (j<=dato) { veces=0; while (veces>=dato) {


7) Un programa escribe en pantalla la tabla de multiplicar de un número cualquiera entre el 0 y el 9 (ambos incluidos). a) (0.5p) Análisis b) (0.5p) Algoritmo c) (0.5p) Fragmento del programa en C que implementa el control de entrada Sol:
Análisis Entrada: número Proceso: – Repetir leer número hasta que número sea mayor o igual que cero y menor o igual a 9 – Dar valor inicial cero a contador de tabla – Repetir mientras contador de tabla sea menor o igual a 10: (calcular producto, escribir el producto y el resultado en una línea, incrementar el contador de tabla) Salida: tabla de multiplicar
Algoritmo Inicio Tabla de multiplicar Repetir Leer numero Hasta (numero>=0 y numero<=9) repetir desde contador=0 hasta contador=10 escribir ( numero ,“x”, contador, “=», numero*contador) contador=contador+1 fin_repetir fin_hasta fin_repetir fin_hasta

Codigo en C: do { printf («\nIntroduce un numero 0<><=9 «); scanf («%d», &n);} while (n>=9><0 || n=»»>9);


8) (3p) Escribir un programa que lea un carácter desde teclado y lo grabe en un fichero si este carácter es numérico. Este proceso se repetirá hasta que se graben en el fichero 100 caracteres numéricos.

#include #include main ( ) { FILE *pf; char c; int cont=0; pf = fopen («D:/FICHERO.TXT», «w»); if (pf==NULL) printf(«Error opening file»); else { printf(«\n escribo en el fichero 100 digitos numéricos \n»); c=getchar(); while (cont<101) { switch (c){ case ‘0’: { putc (c, pf); cont++; break;} case ‘1’: { putc (c, pf); cont++; break;} case ‘2’: { putc (c, pf); cont++; break;} case ‘3’: { putc (c, pf); cont++; break;} case ‘4’: { putc (c, pf); cont++; break;} case ‘5’: { putc (c, pf); cont++; break;} case ‘6’: { putc (c, pf); cont++; break;} case ‘7’: { putc (c, pf); cont++; break;} case ‘8’: { putc (c, pf); cont++; break;} case ‘9’: { putc (c, pf); cont++; break;} } c=getchar(); } } fclose (pf); }

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.