 |
Programación I, 1ª Semana, Tipo B, Febrero 2000:
Test
- Dado el siguiente fragmento de codigo:
FOR c1:=1 TO 4 DO NEW(puntero);puntero^:=c1;END;
FOR c1:=1 TO 4 DO WriteInt(puntero^,3);END;
El resultado generado será:
- A.3333
***
B.4444
- C.1234
- D.4
- Cuál de las siguientes notaciones BNF generará la cadena ab
- A.{a} | {b}
- B.[a] | [b]
- C.{b} | {a}
***
D.{a | b}
- Dado el siguiente modulo de definición
DEFINITION MODULE Ajedrez;
Var Cuadro (caballo, torre, alfil);
PROCEDURE Jugar();
END Ajedrez.
Si importamos el modulo con la sentencia IMPORT Ajedrez cual de las
siguientes sentencias es correcta
- A.DEC(torre);
***
B.Ajedrez.Jugar;
- C.INC(cuadro);
- D.Ajedrez.cuadro:=torre;
TYPE subletras["A".."C"];
Conjsubletras=SET OF subletras;
Tconj=POINTER TO Conjsubletras;
VAR a:Tconj;
¿Cuál de las siguientes asignaciones es correcta?
***
A.a^:=Conjsubletras{"C"};
- B.a:= Conjsubletras{"C"};
- C.a^:=subletras{"C"};
- D.a:=subletras{"C"};
DEFINITION MODULE Juegos;
TYPE TipoDato;
---
END Juegos.
Señalar la afirmación correcta:
***
A.TipoDato es un dato opaco
- B.Nadie podrá declarar variables del tipo TipoDato
- C.La asignación entre variables de tipo TipoDato no está permitida;
- D.La definición es incorrecta
- Dada la siguiente instrucción
A:= Tpalabra{Ordenar(Dato)};
Podemos decir
***
A.Es correcta
- B.Ordenar devuelve un conjunto
- C.Dato es del tipo referencial
- D.Es incorrecta
DEFINITION MODULE Primero;
TYPE TipoDato; END Primero.
IMPLEMENTACION MODULE Primero;
PROCEDURE Magico(dato:TipoDato);
END Primero.
- A.Magico es anónimo
- B.Magico es opaco
***
C.Nadie podrá usar Magico
- D.No tiene sentido definir Magico
- Dado
CONST V1=3.0
VAR V3:INTEGER;
V2:CHAR;
Y la siguiente invocación
Param(V1,V2,V3);
La cabecera correcta es
- A.PROCEDURE Param(VAR v1:REAL; VAR v2:CHAR; VAR v3:INTEGER);
***
B.PROCEDURE Param(v1:REAL; VAR v2:CHAR; VAR v3:INTEGER);
- C.PROCEDURE Param(VAR v1:REAL; v2:CHAR; VAR v3:INTEGER);
- D.PROCEDURE Param(VAR v1:REAL; VAR v2:CHAR; v3:INTEGER);
- La definición de un conjunto siempre está basada en un referencial de tipo:
***
A.Enumerado o subrango
- B.Enumerado, subrango u otro conjunto
- C.Enumerado u otro conjunto
***
D.Enumerado, subrango o escalar predefinido
- Un interprete
***
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
|
|
Programación I, 1ª Semana, Febrero 2000:
Ejercicio Práctico
Definir en un modulo un tipo de dato que contenga la siguiente información altura, velocidad y
rumbo (Norte, Sur, Este, Oeste) y los procesos LeerVelocidad, LeerAltura, LeerRumbo. Desarrollar
solamente el módulo de definición. A continuación desarrollar un Programa que haga uso del tipo
definido y que imprima por pantalla la información referente a 20 aviones.
DEFINITION MODULE VelAltRu;
TYPE
TipoRumbo=(Norte, Sur, Este, Oeste);
TipoVelAltRu= RECORD
Velocidad:CARDINAL;
Altura: CARDINAL;
Rumbo: TipoRumbo;
END;
PROCEDURE LeerRumbo(AvionaEvaluar:TipoVelAltRu):TipoRumbo;
PROCEDURE LeerVelocidad(AvionaEvaluar:TipoVelAltRu):CARDINAL;
PROCEDURE LeerAltura(AvionaEvaluar:TipoVelAltRu):CARDINAL;
END VelAltRu.
MODULE Aviones;
FROM InOut IMPORT WriteCard, WriteString, WriteLn, WriteInt;
IMPORT VelAltRu;
CONST NumAviones=20;
TYPE TipodatosAvion=ARRAY [1..NumAviones] OF VelAltRu.TipoVelAltRu;
VAR
Avion: TipodatosAvion;
Contador: INTEGER;
PROCEDURE ImprimirDatos
(AvionaImprimir: VelAltRu.TipoVelAltRu, IdAvion: INTEGER)
VAR
Altura, Velocidad: CARDINAL;
Rumbo: VelAltRu.TipoRumbo;
BEGIN
Altura:=VelAltRu.LeerAltura(AvionaImprimir);
Velocidad:= VelAltRu.LeerVelocidad(AvionaImprimir);
Rumbo:= VelAltRu.LeerRumbo(AvionaImprimir);
WriteInt(IdAvion,5); WriteCard(Altura,8);
WriteCard(Velocidad,8);WriteString(" ");
CASE Rumbo OF
VelAltRu.Norte: WriteString("Norte")|
VelAltRu.Sur: WriteString("Sur")|
VelAltRu.Este: WriteString("Este")|
VelAltRu.Oeste: WriteString("Oeste")|
END;
WriteLn;
END ImprimirDatos;
BEGIN
WriteString("Avion Altura Velocidad Rumbo");WriteLn;
FOR Contador:=1 TO NumAviones DO
ImprimirDatos(Avion[Contador];Contador);
END;
END;
|