Академический Документы
Профессиональный Документы
Культура Документы
Yusneyi Carballo
Escuela de Computacin - Algoritmos y Programacin Julio 2007, Oct. 2014
GUA DE EJERCICIOS N 8
EJERCICIOS RESUELTOS TIPO EXMEN PARCIAL 3
TEMAS TIPOS DE DATOS ESTRUCTURADOS Y PROG. ORIENTADA A OBJETOS
Espero que esta gua con propuestas de solucin para ejercicios tipo parcial 3 les sea de ayuda. Mis
mayores deseos de xito en las evaluaciones de la prxima semana y los prximos semestres.
Con aprecio, Profa. Yusneyi.
1. Dado un archivo con informacin de empleados (CI, nombre, edad, sexo y sueldo neto mensual)
escriba un algoritmo que permita establecer por sexo cuantos empleados son menores de 21
aos, cuantas empleadas son mayores de 65 aos y cual(es) empleados tienen el mayor sueldo
neto anual
Considere: no se suministra la cantidad de empleados, varios empleados pueden tener el mayor
sueldo, el archivo de entrada debe ser recorrido una sola vez y se pueden utilizar archivos
auxiliares.
PROPUESTA DE RESPUESTA MODIFICADA Y CORREGIDA
Accin Principal
// se define el tipo registro RegEmp a fin de que sea un tipo conocido globalmente en todo el algoritmo
Tipo Registro RegEmp
Entero CI;
String Nombre;
Entero Edad;
Carcter Sexo;
Real SueldoMensual;
FRegistro;
// mtodos
pblico Accin InfoEmpleado(Entero Ced, SM; String Nom; Entero E; Carcter S)
// Guarda la informacin del empleado en una instancia del objeto
Emp.CI = Ced; Emp.Nombre = Nom; Emp.Edad= E; Emp.Sexo = S; Emp.SueldoMensual = SM;
FAccin;
Pg. 1
Universidad Central de Venezuela. Recopilacin y Preparacin Profa. Yusneyi Carballo
Escuela de Computacin - Algoritmos y Programacin Julio 2007, Oct. 2014
// Se abre y manda a llenar el archivo con la informacin de los empleados que suministra el usuario
AbrirArchivo(ArchE, empleados.bin, Escritura y Binario); LlenarArchivo(ArchE);
CerrarArchivo(ArchE); // al cerrarlo agregamos la marca de fin de archivo (FDA)
Repetir
Si RegEmpAct.Edad < 21 Entonces
Si RegEmpAct.Sexo == M Entonces cantMmenos21 = cantMmenos21 + 1;
Sino cantHmenos21 = cantHmenos21 + 1;
FSi;
FSi;
Si RegEmpAct.Edad > 65 y RegEmpAct.Sexo == M Entonces
cantMmas65 = cantMmas65 + 1;
FSi;
nuevoAnual = RegEmpAct.Sueldo * 12; // se calcula el sueldo neto anual
Si nuevoAnual == maxNetoAnual Entonces
//agrego el obj empleado al archivo auxiliar de los que tienen mximo sueldo
EscribirArchivo(ArchEAux, Emp1);
Sino
Si nuevoAnual > maxNetoAnual Entonces
CerrarArchivo(ArchEAux); // cierro el archivo aux y lo abro de nuevo para
// sobrescribirlo desde su inicio con nuevos empleados con sueldo mximo
AbrirArchivo(ArchEAux, empleaAux.bin, Escritura y Binario);
EscribirArchivo(ArchEAux, Emp1);
maxNetoAnual = nuevoAnual; // actualizo con el nuevo sueldo mximo anual
FSi;
FSi;
LeerArchivo(ArchE, Emp1); // leo el siguiente objeto del archivo de empleados
RegEmpAct = Emp1.ConsultarEmpleado; // guardo los datos del obj. en un registro
Hasta FDA(ArchE);
CerrarArchivo(ArchE); CerrarArchivo(ArchEAux);
Pg. 2
Universidad Central de Venezuela. Recopilacin y Preparacin Profa. Yusneyi Carballo
Escuela de Computacin - Algoritmos y Programacin Julio 2007, Oct. 2014
Escribir(Los siguientes empleados tienen el mayor sueldo neto anual, el cual es: + maxNetoAnual);
Repetir
LeerArchivo(ArchEAux, Emp1);
RegEmpAct = Emp1.ConsultarEmpleado;
Escribir(Cd. Ident.: + RegEmpAct.CI + Nombre: + RegEmpAct.Nombre );
Hasta FDA(ArchAux);
FSi; // fin del si donde se verifica que se hayan suministrados registros de empleados
// accin interna a TratarInfoEmpleados encargada de solicitar los datos y llenar el archivo de empleados
Accin LlenarArchivo(Ref Archivo ArchE);
// solicita al usuario los datos de cada empleado, los valida, crea la variable tipo objeto Empleado y
// escribe (incluye) a los objetos Empleado dentro del archivo ArchE
Repetir // solicita los datos de cada empleado hasta que el usuario dice no
Repetir
Escribir(Suministre la CI, nombre, edad, sexo y sueldo mensual del empleado);
Leer(RE.CI, RE.Nombre, RE.Edad, RE.Sexo, RE.SueldoMensual);
Faccin LlenarArchivo;
FinClase TratarInfoEmpleados;
Accin Principal
Pg. 3
Universidad Central de Venezuela. Recopilacin y Preparacin Profa. Yusneyi Carballo
Escuela de Computacin - Algoritmos y Programacin Julio 2007, Oct. 2014
2. Dado un archivo con no ms de 1000 cuentas bancarias, pertenecientes a una entidad financiera,
se desea que usted calcule el monto disponible por cada cliente (cada cliente puede tener ms de
una cuenta) y almacene esta informacin en un nuevo archivo con una estructura sugerida por
usted.
PROPUESTA DE RESPUESTA
Clase CuentaBancaria
Privado Entero Saldo;
Privado String NroCuenta;
Privado Entero CI;
Privado String Titular;
FinClase CuentaBancaria;
Clase Disponible
Privado Entero Saldo;
Privado Entero CI;
Pg. 4
Universidad Central de Venezuela. Recopilacin y Preparacin Profa. Yusneyi Carballo
Escuela de Computacin - Algoritmos y Programacin Julio 2007, Oct. 2014
Clase Principal
Accin Principal
Cuentas c; Entero totalcuentas;
totalcuentas = CapturarCuentas (c);
OrdenarCuentas (c, totalcuentas);
GenerarDisponible(c, totalcuentas);
Faccin;
Pg. 5
Universidad Central de Venezuela. Recopilacin y Preparacin Profa. Yusneyi Carballo
Escuela de Computacin - Algoritmos y Programacin Julio 2007, Oct. 2014
3. Dado un arreglo de 1000 nmeros enteros (todos entre -100 y 100), haga una accin que escriba
cul(es) es el nmero(s) que ms se repite entre ellos. Por ejemplo, si el arreglo contiene -2, 4,
1, 0, 1, 5, -2, 0 la salida debe ser: -2 1 0
PROPUESTA DE RESPUESTA
Pg. 6
Universidad Central de Venezuela. Recopilacin y Preparacin Profa. Yusneyi Carballo
Escuela de Computacin - Algoritmos y Programacin Julio 2007, Oct. 2014
EJEMPLO DE SOLUCIN
Estructura de datos propuesta: Como no sabemos cual es el nmero mximo de estaciones incluidas en la
estadstica, no podemos definir de entrada un arreglo; utilizaremos entonces un archivo para almacenar
registros con la informacin de cada estacin. Para guardar los resultados de los clculos utilizaremos variables
de tipo real o string segn se necesite.
Accin ProcesarEstaciones
//0. Aqu deberamos incluir las acciones/funciones internas a esta accin, p.ejemplo, LlenarArchivo (ver 9.)
Estacin Est; // variable del tipo registro Estacin, la usaremos en las lecturas y escrituras en el archivo
Archivo ArchEst de Estacin; // declaramos la variable ArchEst, un archivo de registros tipo Estacin
Si FDA(ArchEst) entonces
// el archivo fue suministrado sin datos, as que tenemos que llenarlo
CerrarAchivo(ArchEst); // cerramos el archivo, ya que para llenarlo a continuacin debemos
// abrirlo nuevamente pero de escritura
LlenarArchivo(ArchEst, Est); // llamamos a la accin para llenar el archivo
LeerArchivo(ArchEst, Est);
// esta lectura nos permite obtener (sacar) un registro del archivo, almacenarlo en la variable
// de tipo registro Est y avanzar a la prxima posicin del archivo
// calculamos el monto promedio de las ventas de gasolina por mes para la zona Metropolitana
Si Est.Zona == Metropolitana Entonces //tenemos una estacin de la zona Metropolitana
Si (Est.Mes==1) Entonces //procesamos ventas de enero
ContEnero = ContEnero + 1;
ResEnero = ResEnero + (Est.Cantlitros91 + Est.Cantlitros95);
FSi;
// 7. Calculamos los montos totales y los promedios (una vez sumados todos los registros)
MontoTotal91 = CantTotal91 * Precio91; MontoTotal95 = CantTotal95 * Precio95;
ResEnero = ResEnero / ContEnero; ResFeb = ResFeb / ContFeb; ResMarzo = ResMarzo / ContMarzo;
Escribir(La estacin donde se vendi la mxima cantidad de litros en febrero es: + CodEstMaxFeb );
Escribir(Siendo la cantidad mxima: + LitrosMaxFeb + litros.);
Escribir(Para la zona Metropolitana, el monto promedio de las ventas en enero es: + ResEnero);
Escribir(Para la zona Metropolitana, el monto promedio de las ventas en febrero es: + ResFeb);
Escribir(Para la zona Metropolitana, el monto promedio de las ventas en marzo es: + ResMarzo);
Pg. 8
Universidad Central de Venezuela. Recopilacin y Preparacin Profa. Yusneyi Carballo
Escuela de Computacin - Algoritmos y Programacin Julio 2007, Oct. 2014
// salimos con datos vlidos con los cuales armar el registro que luego agregamos al archivo
E.Cdigo = Co; E.Zona =Zo; E.Cantlitros91 = C91; E.Cantlitros95 = C95; E.Mes = M;
EscribirArchivo(Ar, E); //escribimos, es decir incluimos, el registro con datos en el archivo
FAccin ProcesarEstaciones;
5. Desarrolle una clase Inventario con informacin sobre libros y con mtodos que permitan
resolver los siguientes requerimientos:
5.1. Solicitar los datos de un libro y almacenarlos en una estructura de datos definida por usted.
5.2. Actualizar el inventario luego de la venta de un libro.
5.3. Cada libro es identificado a travs de su cdigo. En caso de que la cantidad existente luego de cada
venta llegue a cero (0), debe indicarse que el libro se agot
5.4. Consultar los datos de un libro a partir de su cdigo.
5.5. Indicar cuales son los 3 libros con costo ms alto.
5.6. Almacenar, antes de terminar el algoritmo, los datos finales en un archivo de salida.
Asuma que:
El usuario le indicar el nmero de libros diferentes existentes en la tienda.
La informacin de cada libro es: Cdigo, Ttulo, Autor, Precio y Cantidad existente.
Los datos de entrada no son suministrados ordenados.
Pg. 9
Universidad Central de Venezuela. Recopilacin y Preparacin Profa. Yusneyi Carballo
Escuela de Computacin - Algoritmos y Programacin Julio 2007, Oct. 2014
Clase Libro
//En esta clase nos permitir guardar la informacin de un libro, modificarla y consultarla.
// 1. Declaracin de los atributos, indicando su modo de acceso, tipo de dato e identificador.
// Estos atributos guardarn la informacin de cada objeto Libro del inventario
Privado Entero Cdigo; // al ser privados, slo podrn ser consultados a travs de mtodos
Privado String Ttulo; Privado String Autor; Privado Real Precio; Privado Entero CantidadExistencia;
// 2. Declaracin de los mtodos de la clase Libro, indicando modo de acceso, si es accin o funcin, nombre y
parmetros si aplican.
Accin VenderLibro();
// verificamos si queda el libro en existencia (el libro con que fue invocado el mtodo en el alg. principal)
// de ser as actualizamos el inventario disminuyendo el nmero de libros y revisando que no se agote
//verificamos que queden libros
Si CantidadExistencia == 0 Entonces
Escribir(El libro solicitado est agotado, no hay en existencia.);
Sino
CantidadExistencia = CantidadExistencia - 1; // disminuyendo un libro del atributo Cantidad
Accin ConsultarLibro(Ref Entero Cod, CantEx; Ref String T, A; Ref Real P);
// Informa los valores de los atributos del objeto a travs de los parmetros que pasamos por referencia.
Cod = Cdigo; T = Ttulo; A = Autor; P = Precio; CantEx = CantidadExistencia;
Faccin ConsultarLibro;
Pg. 10
Universidad Central de Venezuela. Recopilacin y Preparacin Profa. Yusneyi Carballo
Escuela de Computacin - Algoritmos y Programacin Julio 2007, Oct. 2014
FClase Libro;
Clase InventarioLibros
// usa la clase Libro y objeto de esa clase, almacena objetos Libro en estructuras como arreglos y archivos
// viene a ser nuestro algoritmo principal
// como tengo dudas de s tambin se puede guardar un archivo de objetos, guardemos mejor registros
// equivalentes a los objetos Libro, estos son campos de un registro, por eso no llevan modo de acceso
Archivo Salida de Lib; // declaramos el archivo de salida que tendr registros RegL
// 2. Solicitamos los datos del libro, validamos y almacenamos en el arreglo, repitiendo para los N libros
// para la variable L1 de la clase Libro, llamamos al constructor con valores para sus atributos
Libro L1 = GuardarLibro(Co, CE, Ti, Au, Pr);
//3. Consultamos los datos de un libro cuyo cdigo nos da el usuario y lo vendemos si el usuario lo indica.
Repetir // este ciclo permite consultar ms de un libro
Encontrado = Falso; i = 1; // inicializamos las variables para la bsqueda de cada libro
// 5. Consultar los 3 primeros libros con precio ms alto. Esto lo podemos hacer de varias formas:
// (1) ordenamos descendentemente el arreglo por precio y luego imprimimos las 3 primeras posiciones,
los 3 primeros libros de precio ms alto. Pueden usar cualquiera de los algorit. vistos en clase
// (2) vamos recorriendo el arreglo y en variables guardamos los cdigos de los 3 libros con precio mayor
// hacemos las comparaciones buscando los 3 primeros libros con precio ms alto
Si Pr > PMax1 Entonces // encontramos uno con precio mayor a PMax1
PMax3 = PMax2; PMax2 = PMax1; PMax1 = Pr;
CodMax3 = CodMax2; CodMax2 = CodMax1; CodMax1 = Co;
Sino Si Pr > PMax2 Entonces // encontramos un precio menor a PMax1, pero mayor a PMax2
PMax3 = PMax2; PMax2 = Pr;
CodMax3 = CodMax2; CodMax2 = Co;
Sino Si Pr > PMax3 Entonces // un precio menor a PMax1 y PMax2, pero mayor a PMax3
PMax3 = Pr; CodMax3 = Co;
FSi;
FSi;
FSi;
FPara;
// Consultamos los datos los libros, siempre y cuando el cdigo sea distinto de 99
Lactual.ConsultarLibro(CodMax1, CE, Ti, Au, Pr);
Pg. 12
Universidad Central de Venezuela. Recopilacin y Preparacin Profa. Yusneyi Carballo
Escuela de Computacin - Algoritmos y Programacin Julio 2007, Oct. 2014
Escribir(Los datos del 1er libro de precio ms alto son, Cdigo: + CoMax1 );
Escribir( Ttulo: + Ti + Autor: + Au + Precio: + Pr + Cant. Exist.: + CE);
// Antes validamos que el cdigo fue actualizado, piensa en que ocurrira en un arreglo slo 1 o 2 libros
Si CodMax2 99 Entonces
Lactual.ConsultarLibro(CodMax2, CE, Ti, Au, Pr);
Escribir(Los datos del 1er libro de precio ms alto son, Cdigo: + CoMax2 );
Escribir( Ttulo: + Ti + Autor: + Au + Precio: + Pr + Cant. Exist.: + CE);
Fsi;
Si CodMax3 99 Entonces
Lactual.ConsultarLibro(CodMax3, CE, Ti, Au, Pr);
Escribir(Los datos del 1er libro de precio ms alto son, Cdigo: + CoMax3 );
Escribir( Ttulo: + Ti + Autor: + Au + Precio: + Pr + Cant. Exist.: + CE);
Fsi;
FClase InventarioLibros;
Pg. 13
Universidad Central de Venezuela. Recopilacin y Preparacin Profa. Yusneyi Carballo
Escuela de Computacin - Algoritmos y Programacin Julio 2007, Oct. 2014
Pg. 14
Universidad Central de Venezuela. Recopilacin y Preparacin Profa. Yusneyi Carballo
Escuela de Computacin - Algoritmos y Programacin Julio 2007, Oct. 2014
Pg. 15
Universidad Central de Venezuela. Recopilacin y Preparacin Profa. Yusneyi Carballo
Escuela de Computacin - Algoritmos y Programacin Julio 2007, Oct. 2014
FClase Fraccin
Clase Prueba_Fraccin
Accin Principal
Entero N1, N2; // variables para solicitar los valores de la fraccin
Fraccin F1, F2, F3, FC; // se declaran las variables objeto de la clase Fraccin
Fraccin FSum, FMul, FDiv; // se declaran las variables objeto de la clase Fraccin para los resultados
Escribir (Indique dos valores enteros para el numerador y el denominador de la fraccin 1);
Leer(N1); Leer(N2);
Mientras N2 == 0 hacer // se valida que el denominador no sea 0
Escribir (El denominador no debe ser cero, por ello indique otro valor);
Leer(N2);
FMientras;
F1.CrearFraccin(N1, N2); // se crea la fraccin 1
Escribir (Indique dos valores enteros para el numerador y el denominador de la fraccin 2);
Leer(N1); Leer(N2);
Mientras N2 == 0 hacer // se valida que el denominador no sea 0
Escribir (El denominador no debe ser cero, por ello indique otro valor); Leer(N2);
FMientras;
F2.CrearFraccin(N1, N2); // se crea la fraccin 2
Escribir (Indique dos valores enteros para el numerador y el denominador de la fraccin 3);
Leer(N1); Leer(N2);
Mientras N2 == 0 hacer // se valida que el denominador no sea 0
Escribir (El denominador no debe ser cero, por ello indique otro valor); Leer(N2);
FMientras;
Pg. 16
Universidad Central de Venezuela. Recopilacin y Preparacin Profa. Yusneyi Carballo
Escuela de Computacin - Algoritmos y Programacin Julio 2007, Oct. 2014
FSum = F1.Sumar(F2);
FSum = FSum.Sumar(F3); // es equivalente a FSum F3.Sumar( F1.Sumar(F2) );
Escribir(El resultado de F1+F2+F3 es: + FSum.toString );
FMult = F1.Multiplicar(F3);
Escribir(El resultado de F1*F3 es: + FMult.toString );
FDiv = F2.Multiplicar(F1);
Escribir(El resultado de F2/F3 es: + FDiv.toString );
// ejemplo de la comparacin de las fracciones F1 y F3, primero las simplificamos para llevarlas a su
// mnima expresin
F1 = F1.Simplificar;
F3 = F3.Simplificar; // luego las comparamos el informamos el resultado
// ejemplo del uso de Copiar y de la consulta de los atributos de la fraccin resultante de la copia
FC.Copiar(F2);
// mediante la copia se inicializan los atributos num y den de FC, con los mismos valores num y den de F2
FAccin Principal;
FClase Prueba_Fraccin;
Pg. 17
Universidad Central de Venezuela. Recopilacin y Preparacin Profa. Yusneyi Carballo
Escuela de Computacin - Algoritmos y Programacin Julio 2007, Oct. 2014
2. Dada la siguiente especificacin de mtodos para una clase llamada Vector3D que permite manipular vectores
de tres componentes (coordenadas x, y, z):
Mtodo Descripcin
Sumar(Vector3D v) Suma el vector v al vector invocante
Producto_Escalar(Vector3D v) El producto de dos vectores se puede definir como la suma del producto de
cada uno de los componentes de los vectores. Ejemplo:
Vector A = (1,2,5)
Vector B = (3,4,6)
AxB = 1*3 + 2*4 + 5*6 = 3 + 8 + 30 = 41
Norma Permite obtener la norma del vector. La norma se puede definir como la raz
cuadrada, de la suma de los cuadrados de los elementos del vector. Ejemplo:
Vector A = (1, 2, 5)
La norma de A = ( 1^2 + 2^2 + 5^2 ) ^ (1/2) = (1 + 4 + 25) ^ (1/2) = 30 ^ (1/2)
Accin Vector3D
// Crea un vector en el origen
X = 0; Y = 0; Z = 0;
FAccin;
Pg. 18
Universidad Central de Venezuela. Recopilacin y Preparacin Profa. Yusneyi Carballo
Escuela de Computacin - Algoritmos y Programacin Julio 2007, Oct. 2014
Pg. 19
Universidad Central de Venezuela. Recopilacin y Preparacin Profa. Yusneyi Carballo
Escuela de Computacin - Algoritmos y Programacin Julio 2007, Oct. 2014
FClase Vector3D;
Escribir(Introduzca los valores enteros de las coordenadas x,y,z del vector 1);
Leer(x, y, z); // se leen los valores suministrados por el usuario
Vector3D V1 = nuevo Vector3D(x,y,z); // se declara y se construye el objeto vector 1
Escribir(Introduzca los valores enteros de las coordenadas x,y,z del vector 2);
Leer(x, y, z);
Vector3D V2 = nuevo Vector3D(x,y,z); // se declara y se construye el objeto vector 2
PEs = V1.Producto_Escalar(V2);
Escribir(El resultado de producto escalar de V1xV2 es: + PEs );
Nor = V3.Norma;
Escribir(La norma del vector 3 es: + Nor );
FAccin Principal
FClase Prueba_Vector
Pg. 20
Universidad Central de Venezuela. Recopilacin y Preparacin Profa. Yusneyi Carballo
Escuela de Computacin - Algoritmos y Programacin Julio 2007, Oct. 2014
Accin Clculos_Iterados
Accin Principal
Entero op, n, k, temp; Real medArm;
op = MostrarMenClculos; // se llama a una funcin que muestra al usuario un men con los clculos
// posibles, le solicita al usuario que indique su opcin, la lee y la retorna
Seleccin
op == 1: medArm = MediaA(100);
// MediaA utiliza a la funcin MediaArmnica para calcular la media de N pares
// en este caso la media de 100 pares de valores
Escribir(La media armnica de los 100 pares de valores es + medArm );
Pg. 21
Universidad Central de Venezuela. Recopilacin y Preparacin Profa. Yusneyi Carballo
Escuela de Computacin - Algoritmos y Programacin Julio 2007, Oct. 2014
op == 3: Escribir(Indique un valor entero positivo para calcular la suma de los productos por un
factor k; un entero negativo, para calcular el producto de los cuadrados
de las sumas; indique cero, para calcular las primeras P potencias de N);
Leer(n);
Si n > 0 Entonces
Escribir(Indique un valor para el factor k);
Leer(k);
Si k == 0 Entonces
Escribir(El resultado de la suma de los productos * 0 es: 0);
Sino
temp = SumaProductos(n, k);
Escribir(La suma de los productos por el factor k= + k + es: + temp );
Fsi;
Sino
Si n < 0 Entonces
temp = ProductoCuadradosSumas(n); // desarrollar funcin segn 3.3.3
Escribir(El producto de los cuadrados de las sumas de los primeros n
nmeros enteros es: + temp );
Sino
Repetir
Escribir(suministre un entero positivo k para las potencias);
Leer(k);
Hasta k>0;
temp = PotenciasdeN(k, n); // desarrollar funcin segn 3.3.3
Escribir(La suma de las primeras k potencias de n es: + temp );
FinSeleccin;
FAccin Principal;
FAccin Clculos_Iterados;
Pg. 22
Universidad Central de Venezuela. Recopilacin y Preparacin Profa. Yusneyi Carballo
Escuela de Computacin - Algoritmos y Programacin Julio 2007, Oct. 2014
1.1. Para que el ciclo Repetir se realice, la evaluacin de la condicin de parada debe tener
valor lgico verdadero.
Falso, la estructura iterativa Repetir evala la condicin de parada al final y se detiene
cuando la condicin de parada es verdadera.
1.2. Un ciclo Para puede ser detenido antes de que complete todos los ciclos inicialmente
acordados.
Falso, la estructura iterativa Para se detiene cuando se han realizado todas las iteraciones
contempladas, desde el valor inicial hasta alcanzar el valor final.
1.4. Una invocacin a funcin puede colocarse como parmetro en una invocacin a un
mtodo.
Cierto, dado que las funciones retornan un valor, es posible colocar la invocacin a una
funcin como parmetro en un mtodo, siempre y cuando el parmetro formal este
pasado por valor.
1.5. Suponga que se tiene una accin con pase de parmetro por referencia, pero
internamente nunca se modifican los valores referenciados. Es esta situacin
exactamente igual a hacer un pase de parmetro por valor?
Falso, a nivel del computador al indicar un pase de parmetros por valor se hace una
copia del valor del parmetro actual, por lo que utilizara un espacio en memoria
innecesario. Ahora, a nivel de resultado si es exactamente lo mismo.
1.6. La expresin
mientras n>0 hacer
n = n div 10;
fmientras
Pg. 23
Universidad Central de Venezuela. Recopilacin y Preparacin Profa. Yusneyi Carballo
Escuela de Computacin - Algoritmos y Programacin Julio 2007, Oct. 2014
a. Realice la corrida del algoritmo, indicando el estado de las variables en cada paso de la
ejecucin.
Pg. 24
Universidad Central de Venezuela. Recopilacin y Preparacin Profa. Yusneyi Carballo
Escuela de Computacin - Algoritmos y Programacin Julio 2007, Oct. 2014
(30 minutos)
3. Considerando como dato de entrada un nmero de cdula de identidad, utilice un slo ciclo para
separar los dgitos de la cdula dada, calcular e indicar:
3.1. Los dgitos pares,
3.2. Los dgitos impares,
3.3. Los dgitos que son nmeros primos,
3.4. Si el primer dgito (el primero de la derecha) es divisor del ltimo (el primero de la
izquierda).
ltimo primero
Pg. 25
Universidad Central de Venezuela. Recopilacin y Preparacin Profa. Yusneyi Carballo
Escuela de Computacin - Algoritmos y Programacin Julio 2007, Oct. 2014
4. Escriba una clase Tiempo, que permita realizar operaciones con instantes de tiempo y que
contenga los siguientes mtodos: (5 puntos)
Pg. 26
Universidad Central de Venezuela. Recopilacin y Preparacin Profa. Yusneyi Carballo
Escuela de Computacin - Algoritmos y Programacin Julio 2007, Oct. 2014
n i
j2
i=1 j=1
Accin Principal
Entero i, j, n, prod, suma;
prod = 1;
suma = 0;
Repetir
Escribir(Suministre un valor positivo para n); Leer(n);
Hasta n >=1;
prod = 1;
Para j = 1 hasta i en 1 hacer
prod = prod * j ^ 2;
fpara;
suma = suma + prod;
fpara;
Escribir(El resultado de la sumatoria de los productos cuadrados es + suma);
Faccion;
(7 minutos)
GDAyP
Pg. 28
Universidad Central de Venezuela. Recopilacin y Preparacin Profa. Yusneyi Carballo
Escuela de Computacin - Algoritmos y Programacin Julio 2007, Oct. 2014
1. Indique si los siguientes enunciados son verdaderos o falsos, justificando en cada caso:
Valor: 0.5 c/u, 2 Puntos
1.3. Un objeto de la subclase solo posee los atributos y mtodos que en ella se
definen y los atributos y mtodos pblicos y protegidos que hereda de la
superclase.
Respuesta:
Falso. Cuando un objeto hereda de otra clase, hereda todos los atributos o mtodos, sean
pblicos, privados o protegidos, pero slo puede utilizar los definidos como protegidos o
pblicos, y siempre y cuando, en la subclase estos mtodos no hayan sido redefinidos
(por sobrecarga o por polimorfismo)
1.4. Un registro no puede contener elementos del mismo tipo, pues se convertira en
arreglo.
Respuesta:
Falso. Un registro es un tipo de datos estructurado cuyos elementos o campos pueden no
ser del mismo tipo (pueden, no es obligatorio). Un registro se diferencia de un arreglo en
que sus campos pueden almacenar distintos tipos de datos, pero la definicin no prohbe
que el registro tenga todos los campos del mismo tipo.
Pg. 29
Universidad Central de Venezuela. Recopilacin y Preparacin Profa. Yusneyi Carballo
Escuela de Computacin - Algoritmos y Programacin Julio 2007, Oct. 2014
2. Dada una matriz de NxM de enteros que representa una plataforma, construya un algoritmo que
la recorra segn la figura 2.1 para verificar lo siguiente:
2.1. Si el borde externo de la plataforma est completo.
El borde es incompleto si en alguna de sus posiciones hay un agujero (representado con
un cero (0)). En la figura 2.2 los elementos de la parte sombreada en gris representan el
borde de la plataforma (B) y en la figura 2.3 se muestra un ejemplo de borde externo
completo.
inicio
B B B B B 1 8 3 5 5
B x x x B 7 0 6 2 4
B x x x B 5 3 4 4 3
B B B B B 4 2 7 9 2
2.2. En caso de que la plataforma tenga su borde externo completo, indicar cules son las posiciones
internas seguras. Una posicin interna es aquella que no pertenece al borde externo. Una posicin
interna es segura, si no posee agujeros a su alrededor.
En el ejemplo de la figura 2.3, las posiciones [2,2] [2,4] y [3,4] (con sombra gris) son seguras ya
que no pertenecen al borde exterior y tampoco tienen agujeros a su alrededor, mientras que la
posicin [2,3] no es segura porque tiene un agujero a la izquierda. Valor: 6 Puntos
Repetir
Escribir(suministre la cantidad de filas y columnas de la matriz, estas cantidades deben ser mayores o
iguales a 2 para hacer el recorrido en espiral);
Hasta M>= 2 y N>= 2;
Arreglo Plataforma de Entero [1..M, 1..N]; // se declara la matriz con las dimensiones suministradas
LlenarMatriz(Plataforma, M, N); // accin encargada de llenar la matriz con valores enteros
Pg. 30
Universidad Central de Venezuela. Recopilacin y Preparacin Profa. Yusneyi Carballo
Escuela de Computacin - Algoritmos y Programacin Julio 2007, Oct. 2014
FSi;
Sino // vamos a verificar matrices con M>=2 N>=2 donde si hay posiciones internas
BordeCompleto = VerificarBorde(Plataforma, M, N, 1, 1);
//verifica en espiral si el borde externo est completo
Si BordeCompleto == Falso Entonces
Escribir(El borde externo de la plataforma est incompleto, tiene al menos 1 agujero);
Sino
Escribir(El borde externo de la plataforma est completo, es decir, no tiene agujeros);
Escribir(Pasamos ahora a verificar las posiciones internas seguras);
VerificarInternasSolucion1(Plataforma, M, N);
// verifica, recorriendo en espiral, las posiciones internas seguras y las escribe
FSi;
FSi;
// ------------- .. ----------
// Acciones y funciones utilizadas dentro de la accin principal de la solucin 1
Entero i, j, Izq, Der, Sup, Inf; // Sup, Inf, Izq y Der indican hasta donde se debe recorrer la
matriz
Lgico hay; hay = falso; // cambiar a verdadero en caso de que la posicin no sea segura
Izq = 2; Der = C-1; Sup = 2; Inf = F-1;
FAccin VerificarInternasSolucion1;
Pg. 31
Universidad Central de Venezuela. Recopilacin y Preparacin Profa. Yusneyi Carballo
Escuela de Computacin - Algoritmos y Programacin Julio 2007, Oct. 2014
FAccin Principal;
-------------------
SOLUCIN 2: RECORRIENDO BORDE EXTERNO Y POSICIONES INTERNAS EN ESPIRAL
Accin Principal2
// recorre en espiral los elementos de la matriz Plataforma, buscando los agujeros (0) el borde externo
// en caso de no encontrar agujeros en el borde externo, verifica cuales son las posiciones internas seguras
Repetir
Escribir(suministre la cantidad de filas y columnas de la matriz, estas cantidades deben ser mayores o
iguales a 2 para hacer el recorrido en espiral);
Hasta M>= 2 y N>= 2;
Arreglo Plataforma de Entero [1..M, 1..N]; // se declara la matriz con las dimensiones suministradas
LlenarMatriz(Plataforma, M, N); // accin encargada de llenar la matriz con valores enteros
VerificarInternas(Plataforma, M, N);
// verifica, recorriendo en espiral, las posiciones internas seguras y las escribe
FSi;
FSi;
Accin RecorrerFila (Arreglo P de Entero [1..M, 1..N]; Entero i, j, k, inc; Ref Lgico hay)
// busca las posiciones con agujero (0) por fila
FAccin RecorrerFila;
Accin RecorrerColumna (Arreglo P de Entero [1..M, 1..N]; Entero i, j, k, inc; Ref Lgico hay)
// busca las posiciones con agujero (0) por columna
FAccin RecorrerColumna;
Entero i, j, Izq, Der, Sup, Inf; // Sup, Inf, Izq y Der indican hasta donde se debe recorrer la
matriz
Lgico hayAgujero; hayAgujero = falso; // cambia a verdadero cuando se encuentre un 0 o
agujero
Izq = Iz; Sup = Su; Der = C; Inf = F; // dimensiones matriz donde se revisar el borde externo
i = Sup; j = Izq; // i se mueve en las filas y j en las columnas
Pg. 33
Universidad Central de Venezuela. Recopilacin y Preparacin Profa. Yusneyi Carballo
Escuela de Computacin - Algoritmos y Programacin Julio 2007, Oct. 2014
FFuncin VerificarBorde;
Pg. 34
Universidad Central de Venezuela. Recopilacin y Preparacin Profa. Yusneyi Carballo
Escuela de Computacin - Algoritmos y Programacin Julio 2007, Oct. 2014
FAccin RecorrerColumna2;
Entero i, j, Izq, Der, Sup, Inf; // Sup, Inf, Izq y Der indican hasta donde se debe recorrer la
matriz
Izq = 2; Der = C-1; Sup = 2; Inf = F-1;
Mientras Sup <= Inf y Izq <= Der hacer // se recorren todas las posiciones internas en
espiral
FAccin VerificarInternas;
FAccin Principal2;
Pg. 35
Universidad Central de Venezuela. Recopilacin y Preparacin Profa. Yusneyi Carballo
Escuela de Computacin - Algoritmos y Programacin Julio 2007, Oct. 2014
Para ocultar la informacin que se transmite en una comunicacin puede utilizarse tcnicas de
encriptacin de datos, por ejemplo, el uso de un diccionario. Esta tcnica consiste en sustituir cada
dato del archivo a enviar, por su equivalente del diccionario.
Supongamos el siguiente caso:
Archivo Diccionario: % $ # = m + & - * (un smbolo para cada dgito, 0 al 9)
Contenido archivo de datos a enviar: 1 4 1 5 2 3 4 5 9 6 2 8 4 ...
Contenido archivo de de datos encriptados: % = % m $ # = m * + $ - =
(se sustituye el 0 por , 1 por %, el 2 por $, el 3 por #, el 4 por =, el 5 por m ...
Dado un archivo que contiene dgitos a transmitir y otro archivo que contiene el diccionario,
construya un algoritmo que encripte el mensaje original y escriba el mensaje final en clave. Valor:
4 Puntos
Accin Principal
Arreglo dicc de Carcter [0..9];
fAccin Encriptar;
Pg. 36
Universidad Central de Venezuela. Recopilacin y Preparacin Profa. Yusneyi Carballo
Escuela de Computacin - Algoritmos y Programacin Julio 2007, Oct. 2014
fAccin EscribirDatosArchivo;
fAccin Principal;
Pg. 37
Universidad Central de Venezuela. Recopilacin y Preparacin Profa. Yusneyi Carballo
Escuela de Computacin - Algoritmos y Programacin Julio 2007, Oct. 2014
3. Disea una clase CD, donde un objeto CD representa un nico CD de msica Qu tipo de
informacin te interesa reflejar u obtener sobre un CD? De esta informacin cules son mtodos
y cuales atributos. Cmo representaras en tu esquema los CDs que pertenecen a una
coleccin?
Pg. 38