Está en la página 1de 24

Universidad Central de Venezuela. Recopilación y Preparación Prof.

Yusneyi Carballo
Escuela de Computación - Algoritmos y Programación Octubre 08
Algoritmos y Programación
Ejemplos de Ejercicios para Parcial 2 o Parcial 3

1. Dado los n vértices de un polígono, se puede obtener su área a partir de la siguiente fórmula

A = 1 abs[ ( x1 + x 2 )( y1 − y 2 ) + ( x 2 + x3 )( y 2 − y 3 ) + ( x3 + x 4 )( y 3 − y 4 ) + ... + ( x n + x1 )( y n − y1 ) ]
2
En la que x i e y i denotan la abscisa y ordenada respectivamente, del vértice vi ,con
1≤i ≤ n.
a. Escriba una función que calcule el área para un pentágono
b. Escriba una función que determine la longitud de un lado o distancia entre los puntos
A=(x1, y1) y B=(x2, y2):

c. Escriba una función que calcule el perímetro, recuerde que el perímetro es la suma de los
lados del polígono.
Nota: Recuerde que la función de valor absoluto viene definida como:

2. Dada una serie de fechas representadas con tres enteros < día, mes, año > entre los años
1900 y 2100, ambos inclusive, y terminada en 0,0,0
a. Escriba una función que retorne el día de la semana que le corresponde conociendo que el
1 de enero de 1900 fue domingo. Por ejemplo:
<3,10,2004> es domingo
b. Escriba una función que retorne la posición del día que le corresponde dentro del año. Por
ejemplo:
<30,1,1919> = 30
<31,12,2002> = 365
<31,12,2004> = 366 por ser año bisiesto
Considere y valide en funciones que:
1. El usuario suministra valores cualesquiera como datos de entrada.
2. Hay meses de 30 o de 31 días, y en caso de los años bisiestos, febrero tiene 29 y no 28
días. Un año es bisiesto si es divisible por cuatro, excepto los años divisibles por 100,
quienes para ser bisiestos deben de ser divisibles también por 400

3. En una acción principal dado dos enteros positivos a y b, validar que así sea y :
a. Escriba una función que solicite un valor n y devuelva en “res” el resultado del cálculo del
binomio de Newton:
 n  n 0  n  n −1 1  n  1 n −1  n  0 n
( a + b) n
=0 a b + 
1 
a b + ... +  n −1 
a b + n 
a b
       
n  n!
donde la combinatoria se define como  m   = m!( n − m )! y a su vez el factorial como
 
n! = n( n −1)! determine cada uno en funciones separadas
b. Escriba una acción que imprima el resultado del binomio de Newton expresado en letra,
por ejemplo:
1.037.535, el resultado será “un millón treinta y siete mil quinientos treinta y cinco”
Nota: Asuma que el numero está entre 1 y 5.000.000
1
Universidad Central de Venezuela. Recopilación y Preparación Prof. Yusneyi Carballo
Escuela de Computación - Algoritmos y Programación Octubre 08
c. Escriba una acción que determine si los valores de a, b y res (resultado del binomio de
Newton) son perfecto, es decir, si la suma de su divisores es igual a su producto, no
considerándose a si mismo como divisor. Por ejemplo:
6 es un número perfecto ya que 1+2+3=1*2*3
d. Escriba una función para reducir una fracción (siendo a el numerador y b el denominador).
Ayuda: Utilizar una función que calcule el m.c.m de dos números m.c.m(a, b)
e. Escriba acciones que muestren las operaciones con quebrados: suma(a, b), resta(a, b),
multiplicación(a, b) y división(a, b)

4. Dados dos números en base B, pudiendo ser 2,3,5,8 y 16 calcule:


a. El valor entero de ambos números en base 10
b. La suma de ambos números en base B, NO es válido convertir los número a base 10 y
luego convertir el resultado a base B. Por ejemplo: Suma en base 8

1010 Acarreo
2437 +
6712
11351

7+2+0(acarreo)=9, 9 mod 8 = 1 primer digito y 9 div 8= 1 (segundo acarreo)


3+1+1(acarreo) = 5, 5 mod 8 = 5 segundo digito y 5 div 8 = 0 (tercer acarreo)
4+7+0(acarreo) = 11, 11 mod 8 =3 tercer digito y 11 div 8 = 1 (cuarto acarreo)
2+6+1(acarreo) = 9, 9 mod 8 = 1 cuarto digito y 9 div 8 = 1 (quinto acarreo)
1 quinto dígito por ser el acarreo

c. Imprimir el resultado en base 10

Nota: Recuerde que el rango de los números en base 8 están entre 0 y 7, los de base 2 están
entre 0 y 1, los de base 16 entre 0 y 15 (siendo A =10, B =11,..,F =15), y así sucesivamente
con las otras bases. Utilice una función antes de hacer la suma para validar que los dígitos de
los números introducidos pertenezcan al rango de la base B dada.

5. El cajero de una tienda cuenta con monedas de 1, 2, 5, 10, 20 y 50 para dar el vuelto a los
clientes. Se requiere que usted escriba el cuerpo de la siguiente acción:
Acción Dar_Vuelto (Entero precio, Entero pago)
/*Algoritmo que imprime el monto del vuelto a dar al cliente y el numero de monedas de cada
denominación a entregar.
precio: monto de la venta
pago: monto cancelado por el cliente*/

El cantidad de monedas a entregar debe ser la mínima, por ejemplo: para un precio de 83 y
un pago de de 90 el vuelto será de 2 monedas: una de 5 y una de 2.

Asuma que el número de monedas para dar el vuelto es infinito.

6. Se desea que construya un algoritmo que lea un segmento de recta de la forma S={(xi,yi),
(xf,yf)} y un conjunto de triángulos isósceles de la forma TI={ (ax, ay), (bx,by), (cx,cy)} y
determine la cantidad de triángulos que S intersecta. La longitud de S es siempre mayor a la
longitud de un lado del triángulo. Si los tres puntos de TI son iguales entonces la lectura de los
triángulos termina.
7. El algoritmo escrito por Lothar Collatz produce una secuencia de enteros (Secuencia de
2
Universidad Central de Venezuela. Recopilación y Preparación Prof. Yusneyi Carballo
Escuela de Computación - Algoritmos y Programación Octubre 08
Collatz), los pasos del algoritmo son:
7.1. Se escoge un entero positivo A como primer valor de la secuencia
7.2. Si A = 1 entonces se detiene
7.3. Si A es par, entonces se reemplaza A por A/2 y se regresa al paso 2
7.4. Si A es impar, entonces se reemplaza A por 3 * A + 1 y se regresa al paso 2

Elabore un algoritmo que calcule la cantidad de términos generados por el algoritmo de


Collatz dado A y L, siendo L el valor límite para A, es decir, si A es mayor que L entonces el
algoritmo culmina.
Por ejemplo:
.- Para A = 75 y L = 250, entonces el número de términos es 3
.- Para A = 3 y L = 100, entonces el número de términos es 8

8. Escriba un algoritmo que encuentre el 1er número de una secuencia de números reales
acabada en 0 que sea igual al producto de los números impares que lo preceden en la
secuencia. Si no existe ningún número en la secuencia que cumpla dicha condición, el
algoritmo debe informar al usuario que no existe ningún número en la secuencia que sea igual
al producto de los números impares que lo preceden.

9. Escriba una función entero_sin_2_4_6(n) que devuelva el entero


obtenido al eliminar los dígitos de n que sean igual a 2, 4 o 6. Utilice dicha función en un
algoritmo principal que solicite un entero x al usuario, y escriba el número obtenido al eliminar
las cifras que sean 2, 4 o 6 de x.

10. Se me ocurriría, por ahora, que escribieran un algoritmo que dado un N ingresado por el
usuario generará como salida una figura impresa como la que esta en el archivo adjunto.
Puede ser esa u otra mas sencilla o complicada. Sigue el mismo concepto del rombo de la
práctica, pero al ser otra figura la lógica para escribirla es diferente.

Para N=6 Para N=4 Para N=2

Salida: **** ***


* *
****** * ***
* ****
*
*
*
******

11. Se desea que realice una solución algorítmica a la siguiente ecuación, donde a y n son
constantes introducidas por el usuario al inicio del programa:

c(x) = ∑ (i=0, n) ( f(i*a)^i / i! )

donde: f(k)= cos(k)*k! cos(x) = 1 - (x^2)/2! + (x^4)/4! - (x^6)/6! + ... +/- (x^k)/k!

Les desea éxito, GDAlgyProg. Ciudad Universitaria, 15 de Junio de 2007

3
Universidad Central de Venezuela. Recopilación y Preparación Prof. Yusneyi Carballo
Escuela de Computación - Algoritmos y Programación Octubre 08

Caracas, 05-Diciembre-2006

PROPUESTAS PARA QUIZ O PARCIAL 2

1. Responda y justifique brevemente cada una de las siguientes preguntas (0,5 pto. c/u)
1.1. En pseudoformal, el tamaño de un arreglo en qué momentos se especifica?.
1.2. El algoritmo de ordenamiento de burbujas podría hacer menos comparaciones que el resto de
los algoritmo de ordenamiento vistos en clases?. Si es cierto, indique por qué, y dé un ejemplo.
1.3. El algoritmo de búsqueda binaria es igual de eficiente que el algoritmo de búsqueda
secuencial.
1.4. Es bien sabido que un arreglo es una estructura de datos homogénea. En el enfoque
orientado a objetos, un arreglo puede almacenar objetos de clases distintas?. Adicionalmente, en
caso afirmativo, dé un ejemplo.
1.5. Un arreglo puede ser almacenado en memoria principal, y puede ser almacenado memoria
secundaria.

PROPUESTAS DE PREGUNTAS DE YUSNEYI:


2. (VECTOR--) Se desea escribir un programa que lea una serie de valores numéricos de tipo Entero
suministrados por el usuario, los almacene en una estructura de datos conveniente y realice diferentes
procesamientos sobre ellos. (4ptos.)
2.1. Para indicar que terminaron los datos de entrada el usuario suministrará el valor –99.
2.2. Además de permitir la entrada y almacenamiento de los datos, el algoritmo deberá contar con
procedimientos (acciones / funciones) para imprimir los valores almacenados, calcular la suma de
ellos, calcular el promedio o media aritmética, y calcular la desviación estándar (es la diferencia
entre cada valor y la media).
2.3. Desde el algoritmo principal se deberá hacer llamadas a los procedimientos encargada de leer y
almacenar los datos, imprimirlos y realizar las operaciones sobre ellos.
2.4. Usted debe proponer y especificar también la(s) estructura(s) de datos más convenientes para
almacenar los datos y ser usada en su algoritmo.

3. (MATRIZ MxN--) Una empresa de venta de productos por correo desea realizar una estadística de las
ventas realizadas de cada uno de los productos a lo largo del año anterior. La empresa distribuye un total
de 100 productos y realizará sus estadísticas para los últimos 6 meses de año. (6ptos.)
Se desea que usted proponga una solución algorítmica con acciones o funciones que:
3.1. Especifique la estructura de datos más conveniente y la utilice en la solución propuesta.
3.2. Calcule el total de ventas de cada producto.
3.3. Calcule el total de ventas de cada mes.
3.4. Indique los 10 productos más vendidos en el mes de diciembre.
3.5. Indique el mes en que se realizaron más ventas y cuales fueron los 3 productos más vendidos.

4. (ARCHIVOS DE REGISTROS Y ARREGLOS--) Se desea desarrollar un sistema que permita realizar la


gestión de un almacén y los productos guardados en él. (8ptos.)
La información es almacenada en un archivo llamado Productos y los datos relevantes de cada producto
se reflejan en el siguiente registro:
Tipo Registro Producto=
4
Universidad Central de Venezuela. Recopilación y Preparación Prof. Yusneyi Carballo
Escuela de Computación - Algoritmos y Programación Octubre 08
Entero Código;
String Nombre;
Entero stockActual; // el stock es la cantidad de ese producto que hay en el almacén
Entero stockMínimo; // cantidad mínima que debe haber de ese producto
Entero stockMáximo; // cantidad máxima del producto que se puede almacenar
Entero IDProveedor; // número del proveedor para el producto
FRegistro

El sistema también almacena el Código, Nombre, Email y Teléfono de los trece (13) Proveedores con
que trabaja la empresa.

Se desea que usted proponga una solución algorítmica con acciones o funciones que:
4.1. Especifique las estructuras de datos más convenientes y utilícelas en la soluciones propuestas.
4.2. Lea e inicialice los datos a almacenar en el archivo de productos. Los datos será suministrados por el
usuario. La cantidad de productos a almacenar no es conocida previamente, ni es suministrada en el
archivo, siendo el usuario el encargado de indicar cuando termina la entrada de información.
4.3. Genere un archivo Pedidos en donde se almacene la información de los productos cuyo stockActual
es menor al stockMínimo. En el archivo Pedidos se desea mantener la mínima información que
identifique al producto, la cantidad a pedir y el proveedor que lo suministra. La cantidad a pedir
debe permitir que el nuevo stock del producto sea igual a su stock máximo.
4.4. Imprima información que permita contactar a los Proveedores de los productos que fueron
incluidos en el archivo Pedidos.

Éxito en su preparación
Profa. Yusneyi

5
Universidad Central de Venezuela. Recopilación y Preparación Prof. Yusneyi Carballo
Escuela de Computación - Algoritmos y Programación Octubre 08
Caracas, 25 de Julio de 2005

TERCER PARCIAL

5. Responda y justifique brevemente cada una de las siguientes preguntas


(0,5 pto. c/u, total 4 ptos)
5.1. El algoritmo de ordenamiento de burbujas podría hacer menos comparaciones que
el resto de los algoritmo de ordenamiento vistos en clases?. Si es cierto, indique por qué,
y dé un ejemplo.
5.2. Un arreglo puede ser almacenado en memoria principal, y puede ser almacenado
memoria secundaria.
5.3. Un objeto puede contener entre sus atributos un registro.
5.4. Para llevar a cabo la búsqueda binaria en un arreglo, éste debe estar ordenado.
5.5. ¿Un arreglo unidimensional puede usarse para representar un arreglo
bidimensional?, en caso afirmativo de un ejemplo.
5.6. Los archivos sólo almacenan tipos de datos estructurados.
5.7. Sea Arreglo A de String [1…10], y j una variable de tipo Entero inicializada en 0, la
expresión
Mientras j<10 hacer
Escribir (A[j]);
j ← j+1;
Fmientras

Muestra todos los elementos de A? En caso de ser falso, indique por qué y haga las
correcciones necesarias.
5.8. Un registro es exactamente igual a un objeto sin métodos.

6. Determinar si una matriz de MxM es un cuadrado mágico.


Se considera un cuadrado mágico a una matriz en la cual la suma de cada fila, de cada
columna, de la diagonal principal y de la diagonal secundaria son iguales.

Proponga una solución eficiente que implemente funciones o acciones (usted elige) que le
permitan calcular la suma de cada fila, la suma de cada columna, la suma de la diagonal
principal y de la diagonal secundaria, e invoque convenientemente a estas funciones o
acciones en el Algoritmo Principal para verificar que se tiene un cuadrado mágico.
Considere:
6.1. Usted debe especificar y crear la matriz con un tamaño M que le suministrará el usuario.
6.2. Como la matriz estará vacía, usted debe llenarla antes de proceder a verificar si es un
cuadrado mágico.
(valor 6ptos.)

7. El Observatorio “Parque Sierra Nevada” desea desarrollar un sistema que le permita


monitorear las temperaturas de los páramos venezolanos.
Para ello se recopila información en 21 puntos de observación ubicados a diferentes alturas en
la Cordillera Andina. Para cada día del mes se registra, en cada uno de los puntos, la
temperatura mínima y la temperatura máxima alcanzada y medida en ºC.

6
Universidad Central de Venezuela. Recopilación y Preparación Prof. Yusneyi Carballo
Escuela de Computación - Algoritmos y Programación Octubre 08
La información recopilada en un año le será suministrada en un archivo llamado
TemperaturasAnuales, el cual no está ordenado y en donde se tienen los siguientes datos:
- númeroMes: mes en el que fue tomada la temperatura.
- númeroDía: día en el que fue tomada la temperatura.
- codPtoObs: identificador del punto de observación. El código viene dado por 3
caracteres que hacen referencia al sitio de observación y 2 dígitos que indican el
número del punto de observación. Ej. PAG18, que indica que el punto de observación
es el Pico el Águila y que es el punto de observación número 18.
- tempMín: temperatura mínima registrada en el punto de observación.
- tempMáx: temperatura máxima registrada en el punto de observación.

Se desea que usted proponga una solución algorítmica con acciones y/o funciones que:
7.1. Especifique las estructuras de datos más convenientes y las utilice en la soluciones
propuestas.
7.2. Indique para cada mes la temperatura mínima, la temperatura máxima y donde fue
recopilada.
7.3. Almacene e indique los puntos que presentaron más de 30 observaciones con
temperaturas inferiores a los –4ºC.
7.4. Indique los puntos que presentaron la menor y la mayor temperatura del año, además en
que mes y día ocurrió.
El archivo TemperaturasAnuales, sólo puede ser recorrido una vez. Utilice las estructuras
auxiliares necesarias de forma eficiente.
(valor 10 ptos.)

Se les desea éxito!!


GDAyP.

7
Universidad Central de Venezuela. Recopilación y Preparación Prof. Yusneyi Carballo
Escuela de Computación - Algoritmos y Programación Octubre 08
Caracas, 03 de Marzo de 2005

PARCIAL 3

1. Responda y justifique brevemente cada una de las siguientes preguntas (1pto. c/u)

a) En pseudoformal, el tamaño de un arreglo en qué momentos se especifica?.


b) El algoritmo de ordenamiento de burbujas podría hacer menos comparaciones que el resto de los
algoritmo de ordenamiento vistos en clases?. Si es cierto, indique por qué, y dé un ejemplo.
c) El algoritmo de búsqueda binaria es igual de eficiente que el algoritmo de búsqueda secuencial.
d) Es bien sabido que un arreglo es una estructura de datos homogénea. En el enfoque orientado a
objetos, un arreglo puede almacenar objetos de clases distintas?. Adicionalmente, en caso afirmativo,
dé un ejemplo.
e) Un arreglo puede ser almacenado en memoria principal, y puede ser almacenado memoria
secundaria.

2. Dado un arreglo bidimensional S de NxM caracteres, escriba una función que determine si una
palabra dada en un arreglo P de k caracteres está dentro de la matriz. Sólo considere buscar de
izquierda a derecha (horizontal), y de arriba hacia abajo (vertical). En caso de que la palabra es
encontrada dentro de la matriz, indicar la posición (i,j) inicial de la palabra en la matriz, así como la
dirección (vertical u horizontal) de localización. Asuma que la palabra no puede aparecer más de una
vez. (5 ptos)

Función Existe(Arreglo S de Caracter S[1..N][1..M]; Arreglo P de Carácter[1..k])  Lógico

3. Dada un archivo llamado “GENTE.bin” que contiene: nombre, cédula, sexo y edad de un grupo de
personas, se desea generar otro archivo llamado “Menores.bin” que contenga sólo la información de las
mujeres menores en edad que la primera persona del archivo.
(5 ptos)
La estructura de datos que almacena la información de cada persona es la siguiente

Tipo Registro Persona


String Nombre;
Entero CI;
Entero Edad;
Carácter sexo; // sexo ‘M’ ó ‘F’
FRegistro;

4. La compañía T-shirt tiene 2 almacenes en Caracas: el almacén TRINITI, y el almacén


GUACAMAYA. Esta compañía está dedicada a la venta de franelas. En cada almacén se conocen las
tallas de franelas que tienen dentro del almacén. Suponiendo que no hay más de 50 tallas distintas, el
dueño de la compañía requiere saber qué tallas no están en los dos almacenes a la vez (tallas críticas).
Para ello, usted ha sido elegido para elaborar un algoritmo que, dado dos arreglos de tallas,
correspondientes a cada almacén, imprima las tallas críticas ordenadas descendentemente.

(5 ptos)

8
Universidad Central de Venezuela. Recopilación y Preparación Prof. Yusneyi Carballo
Escuela de Computación - Algoritmos y Programación Octubre 08
22/06/2005
SEGUNDO EXAMEN PARCIAL

1. Indique y justifique la veracidad y/o falsedad de cada una de las siguientes sentencias:
(0.5 puntos c/u, total 4 puntos)

a) Para que el ciclo Repetir se realice, la evaluación de la condición debe tener valor de
verdad verdadero.
b) Un ciclo Para puede ser detenido antes de que complete todos los ciclos inicialmente
acordados.
c) Un método debe tener al menos un parámetro.
d) Si en un algoritmo se tiene una instrucción de escritura -por ejemplo,
Escribir(“aprender estructuras iterativas es muy conveniente”)- y un ciclo Mientras, el mensaje
se escribirá 0 o más veces.
e) El crear ciclos infinitos siempre es un error de programación.
f) Una invocación a función puede colocarse como parámetro en una invocación a otro
método.
g) Suponga que se tiene una acción con pase de parámetro por referencia, pero
internamente nunca se modifican los valores referenciados. ¿Es esta situación exactamente
igual a hacer un pase de parámetro por valor?
h) La expresión mientras n>0 hacer
n ← n div 10;
fmientras

Puede ser convertida a una expresión equivalente, utilizando la estructura Repetir (si su
respuesta es positiva, escriba la expresión resultante).

2. Dado el siguiente algoritmo:

Clase Algohace Acción Acc2 (Entero k)


Privado Entero X; Entero C, es;
Mientras (k ≤ 20) hacer
Constructor()
C = k div 2;
X = 3;
Es = 1;
Acc2(X);
Acc1(k, es);
Fconstructor;
Si (es ==1) entonces
Escribir (k);
Acción Acc1 ( Entero E1, Ref Entero E2)
Fsi;
Entero h;
k = k+1;
h = 2;
fmientras;
Mientras(h ≤ C y E2 ≠ 0 ) hacer
faccion;
Si ((E1 mod h) == 0) entonces
fclase;
E2 = 0;
fsi
Clase Principal
h = h+1;
Acción Principal
fmientras;
faccion; Algohace P;
P.Algohace();
Faccion;
Fclase;

a) Realice la prueba del algoritmo, indicando el estado de las variables en cada paso de
la ejecución.

9
Universidad Central de Venezuela. Recopilación y Preparación Prof. Yusneyi Carballo
Escuela de Computación - Algoritmos y Programación Octubre 08
b) ¿Cuál es el objetivo del algoritmo? (5
puntos)

3. Considerando como dato de entrada su número de cédula de identidad, utilice un sólo ciclo
para separar los dígitos de la cédula, calcular e indicar: los dígitos pares, los impares, los
que son números primos y si el primer dígito (el primero de la derecha) es divisor del
último (el primero de la izquierda).
Por ejemplo, para la Cédula 11563989, los resultados serían:
- dígitos pares: 6, 8
- dígitos impares: 1, 1, 5, 3, 9, 9
- dígitos que son números primos: 1, 1, 5, 3
- primer dígito de la derecha es divisor del último: falso
(5 puntos)

10
Universidad Central de Venezuela. Recopilación y Preparación Prof. Yusneyi Carballo
Escuela de Computación - Algoritmos y Programación Octubre 08
Caracas, 21 de Enero de 2005

QUIZ #2

1.- Dado el siguiente Algoritmo, se quiere que muestre lo siguiente:


 Estado de las variables durante la corrida en frío del algoritmo
 Localidad/No localidad de las variables para cada uno de los métodos
 Impresiones del programa
Valor (8 puntos)
Clase Ejercicio1A Clase Ejercicio1B

Protegido Entero aux; Privado Ejercicio1A varA;


Público Real b; Privado Ejercicio1C varA2;

Público Constructor Ejercicio1A()


Aux=0; b=1; Privado Acción InstanciaVarA()
FConstructor; varA.Ejercicio1A(); //llama a la constructora
varA2.Ejercicio1C();
Público Acción buildE(Entero c, Facción;
Ref Real float)
Entero aux2; aux2=3; Privado Función FA(Entero A, Entero C, Real B): Entero
Float = b * aux2 + 100 / 50 + c; varA.buildE(A, B );
FAcción varA2.buildE2(A, B );
Retornar(C);
Público Acción PrintALL(Ref Real C, FFunción;
Entero H, Ref Real D)
Privado Función FA(Entero k, Ref Real aux): Real
buildE(H, C); varA.buildE(k, aux);
Escribir(D); varA.PrintALL(aux, k, aux);
Escribir(b); varA2.PrintALL(aux, k, aux);
Facción; varA2.buildE(varA2.b);
Retornar(aux);
FClase; FFunción

Clase Ejercicio1C Hereda de Ejercicio1A Público Acción Principal


Entero inter;
Público Constructor Ejercicio1C() Real C;
Aux = 0; b = 1; Entero back;
FConstructor
inter = 3;
Público Acción buildE2(Entero b, C = 3,5;
Ref Real una) Back = 3 * 5 − 3;
b = 2;
Escribir (una); InstanciaVarA();
Facción; Escribir (FA (back, inter, C));
Escribir (FA(back, C));
Público Acción buildE(Entero b) Escribir (C);
Escribir (b); Facción;
Facción; FClase;
FClase;

11
Universidad Central de Venezuela. Recopilación y Preparación Prof. Yusneyi Carballo
Escuela de Computación - Algoritmos y Programación Octubre 08
QUIZ #2 (Junio 2006)

1.- Dado el siguiente algoritmo se quiere que muestre lo siguiente:


Estado local de las variables durante la corrida en frío del algoritmo.
Localidad / No localidad de las variables para cada uno de los métodos.
Impresiones del programa

Clase ObjetoA Clase Ejercicio


Público Entero A, B; Público ObjetoB obj1;
Protegido Lógico C;
Privado Acción Inicializar (Entero X, Ref Entero Y)
Acción Constructor(Entero x, Ref Entero y) Obj1.ObjetoB(x, y);
A = 0; B = 1; Facción;
fAcción Constructor;

Protegido Acción Sumar(Ref Entero x) Privado Función Metodo1 (Entero x,


x = x + 1; Ref Entero Y) : Entero
fAcción; Retornar(Metodo2(x, y) + Metodo3 (x));
fClase ObjetoA; fFunción;

Clase ObjetoB hereda de ObjetoA Privado Función Metodo2 (Ref Entero y,


Acción Constructor(Entero x, Entero y) Entero x) : Entero
A = x * 2; Obj1.Calcular(y);
B = y + 1; Obj1.Mostrar();
y = A + B; Retornar(Obj1.Sumar(x, y));
fAcción Constructor; FFunción;

Público Acción Calcular(Entero x)


Si (x > 0) entonces Privado Función Metodo3(Ref Entero x) : Entero
C = Verdadero; Entero y;
Sino y = 2;
C = falso; x = y + Obj1.A + obj1.B;
Fsi; Retornar(x);
fAcción; FFunción;

Público Función Sumar(Entero x, Acción Principal


Entero y) : Entero Entero x, y;
A = A + y; x = 2; y = 1;
B = B + x; Inicializar (y , x);
Retornar( x + y ); Escribir (x + “, ” + y);
fAcción; Escribir (Obj1.Sumar ( Metodo1(x, y) );
Escribir (x + “, ” + y);
Público Acción Mostrar() Obj1.Mostrar();
Escribir(A); Escribir(B); FAcción;
Escribir(C); fClase Ejercicio;
fAcción;
fClase ObjetoB;

2.- Escribir un algoritmo que solicite repetidamente parejas de números, hasta que al menos un
número de la pareja sea cero. Por cada pareja el programa debe utilizar una función para
calcular la media armónica de los dos números.
Media Armónica = 2,0 * x * y / (x + y)

12
Universidad Central de Venezuela. Recopilación y Preparación Prof. Yusneyi Carballo
Escuela de Computación - Algoritmos y Programación Octubre 08
3.- Escribir una Clase Vector3D que permita manipular vectores de tres componentes
(coordenadas x, y, z) según los siguientes métodos:

Método Descripción
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)
Vector B = (3,4)
AxB = 1*3 + 2*4 = 3 + 8 = 11

Igual(Vector3D v) Retorna verdadero si el vector3D v es igual al vector invocante.

Norma() Permite obtener la norma del vector. La norma se puede definir


como la suma de todos los elementos del vector al cuadrado.
Ejemplo:
Vector A = (1, 2)
La norma de A = 1^2 + 2^2 = 5

aString() Devuelve un String con el vector llamante expresado de la forma


X, Y, Z

Escriba adicionalmente, un algoritmo principal que utilice la Clase Vector3D para almacenar 2
vectores dados por el usuario (V1, V2) y un vector cuyas componentes sean cero (V3), y calcule
la suma de V1 + V2 + V3, realice el productor escalar de V1 Y V2, y por último la norma del
Vector V3. Imprima los tres resultados.

Nota: Debe implementar un constructor por defecto cuyos valores de las coordenadas sean igual
a cero. Los ejemplos anteriores han sido realizados con un vector 2D.

4.- Una empresa de textiles posee sucursales en 18 puntos del país, suponiendo que se
almacenan las ventas mes por mes de cada punto, en una matriz de 18 filas (una por cada
sucursal) y 12 columnas (una por cada mes). Elabore: (Valor 6 ptos. Quiz 2 Dic 2007)

a. Una función que reciba como parámetro la matriz, y retorne las ventas totales de la
empresa textil.
b. Una función que reciba como parámetro la matriz y un entero que represente el número de
la sucursal, y retorne el monto total de venta para esa sucursal.
c. Una función que reciba como parámetro la matriz, y retorne un entero que represente el
número de la sucursal que vendió más durante todo el año.
d. Una función que reciba como parámetro la matriz y un entero que represente el mes
actual, y retorne el número de la sucursal que registró mayor ganancia en los últimos 3
meses.

13
Universidad Central de Venezuela. Recopilación y Preparación Prof. Yusneyi Carballo
Escuela de Computación - Algoritmos y Programación Octubre 08
QUIZ # 3

1. Dada las siguientes definiciones de tipos:

Tipo Registro Estudiante = Tipo Registro Nota =

String nombre; String materia;


Entero ci; Real nota;
Arreglo kardex de Nota [1..4];
FRegistro FRegistro

Considere un arreglo A que contiene 99 registros de tipo Estudiante, elabore acciones o funciones para
resolver cada uno de los siguientes requerimientos: (3 pts. c/u)

1) Inicializar el arreglo desde un archivo que contiene registros de tipo estudiante. Considere que el
archivo puede tener menos de 99 estudiantes.
2) Obtener el promedio de las notas de cada uno de los estudiantes.
3) Obtener el promedio de una materia dada por el usuario.
4) Ordenar el arreglo descendentemente por el campo ci (puede utilizar cualquiera de los algoritmos
de ordenamiento vistos en clase).

2. Una imagen puede ser representada como un arreglo bidimensional de números enteros, donde cada
número representa un punto o color (píxel) a pintar en pantalla.

Se desea que defina los atributos de una imagen, que puede tener cualquier tamaño por filas y columnas, e
implemente cada uno de los siguientes métodos: (4 pts. c/u)

VoltearHorizontalmente() Voltea el contenido de la imagen horizontalmente


VoltearVerticalmente() Voltea el contenido de la imagen verticalmente

Ejemplo para una imagen 3x4

P1 P2 P3 P4 P1 P2 P3 P4

P5 P6 P7 P8 P5 P6 P7 P8

P9 P10 P11 P12 P9 P10 P11 P12

Antes de voltear horizontalmente Antes de voltear verticalmente

P4 P3 P2 P1 P9 P10 P11 P12

P8 P7 P6 P5 P5 P6 P7 P8

P12 P11 P10 P9 P1 P2 P3 P4

Después de voltear horizontalmente


Después de voltear verticalmente

NOTA: El examen tiene una duración de dos (2) horas

GDAYP – Marzo 2005

14
Universidad Central de Venezuela. Recopilación y Preparación Prof. Yusneyi Carballo
Escuela de Computación - Algoritmos y Programación Octubre 08
GUÍA DE EJERCICIOS Nº 4
EJERCICIOS TIPO EXÁMEN PARCIAL 2 - TEMAS 1 AL 7
(HASTA PASE DE PARÁMETROS Y ESTRUCTURAS ITERATIVAS)

2. Indique la veracidad o falsedad de los siguientes enunciados y justifique


brevemente su respuesta (1/2 punto c/u)
a. Un método debe tener al menos un parámetro.
b. Una subclase hereda únicamente atributos y métodos públicos o protegidos de la
superclase.
c. Un método puede compartir sus datos locales con otro pasándoselos como
parámetros.
d. Una invocación a función puede colocarse como parámetro en una invocación a
otro método.
e. La estructura iterativa Para es utilizado cuando se conoce el número de iteraciones
que se deben hacer.
f. Considere un lenguaje que no soporta funciones. ¿Es posible simularlas con
acciones? Justifique y en caso afirmativo de un ejemplo.

3. Se desea que Usted escriba un algoritmo en lenguaje pseudo-formal, que verifique


e informe, para una secuencia de cantidades suministradas, cuáles son de cuatro
dígitos, cuáles cumplen con la condición de que la suma de sus dígitos impares es
igual a la suma de sus dígitos pares, cuáles cumplen con la condición de que sean
divisores de la primera cantidad suministrada y cuales cantidades cumplen que al
restarla a la cantidad que se suministró antes dan resultado negativo. Se le
suministrarán las cantidad una a una y se le indicará que ha llegado al final (es decir
que no se le suministrarán más cantidades) cuando se lea la cantidad –9999.

4. Escribir la clase Fracción que contenga los siguientes métodos:

Método Descripción
Fracción(N1,N2 Constructor que recibe valores enteros para el numerador (N1) y el
) denominador (N2)
Sumar(b) sumar la fracción b a la fracción invocante
Multiplicar(b) Multiplicar la fracción b por la fracción invocante
Dividir(b) Divide la fracción invocante entre la fracción b
Retorna verdadero si la fracción invocante es igual a b, sino retorna
Comparar(b)
falso
Copiar(b) copiar la fracción b en la fracción llamante
Simplificar() simplificar la fracción
Devuelve un String con la fracción llamante expresada en la forma
toString()
N1/N2

Escriba adicionalmente un algoritmo principal, que utilice la clase Fracción para


almacenar tres fracciones dadas por el usuario (F1, F2, y F3) y calcule la suma de

15
Universidad Central de Venezuela. Recopilación y Preparación Prof. Yusneyi Carballo
Escuela de Computación - Algoritmos y Programación Octubre 08
F1+F2+F3, la multiplicación de F1*F3, la división de F2 entre F1 e imprima los tres
resultados.

5. Dado el siguiente algoritmo, se quiere que realice una corrida “en frío” de sus
instrucciones y muestre lo siguiente:
a) Estado de las variables durante la corrida en frío del algoritmo
b) Impresiones del programa

Esta es la famosa corrida Horrorosa del 2004


¿Será que te corre? O ¿Tú la corres a ella?

16
Universidad Central de Venezuela. Recopilación y Preparación Prof. Yusneyi Carballo
Escuela de Computación - Algoritmos y Programación Octubre 08
Clase Ejercicio1A Clase Ejercicio1B
Protegido Entero aux; Privado Ejercicio1A varA;
Público Real b; Privado Ejercicio1C varA2;

Público Constructor Ejercicio1A() Privado Acción InstanciaVarA()


aux0; b1; varA.Ejercicio1A(); # llama al constructor
FConstructor varA2.Ejercicio1C();
FAcción
Público Acción buildE(Entero c, Var Real float)
Entero aux2; Privado Función FA(Entero A, Entero C, Real B)Entero
aux23; varA.buildE(A, B );
floatb * aux2 + 100/50 + c; varA2.buildE2(A, B );
FAcción C;
FFunción
Público Acción PrintALL(Var Real C, Entero H, Var Real D)
buildE(H, C); Privado Función FA(Entero k, Var Real aux) Real
Escribir(D); varA.buildE(k, aux);
Escribir(b); varA.PrintALL(aux, k, aux);
FAcción varA2.PrintALL(aux, k, aux);
varA2.buildE(varA2.b);
FClase  aux;
FFunción
Clase Ejercicio1C Hereda de Ejercicio1A
Público Constructor Ejercicio1C() Público Acción Principal
aux0; b1; Entero inter;
FConstructor Real C;
Entero back;
Público Acción buildE2(Entero b, Var Real una) inter 3;
b2; C3.5;
Escribir (una); back3*5−3;
FAcción
InstanciaVarA();
Público Acción buildE(Entero b) Escribir (FA (back, inter, C));
Escribir (b); Escribir (FA(back, C));
FAcción Escribir (C);
FAcción
FClase Ejercicio 1A FClase Ejercicio 1B

6. Desarrollar un algoritmo bajo el enfoque orientado a objetos, que permita calcular


las raíces de la ecuación de segundo grado ax 2+bx+c (sus 2 raíces reales y sus 2
raíces imaginarias), dados los coeficientes a, b y c, con a>0.
En este algoritmo debes considerar:
a) Calcular las raíces (reales e imaginarias) de una ecuación de segundo grado
ax2+bx+c, dados los coeficientes a, b y c, con a>0
b) Se considerará que cada ecuación tiene asociadas como atributos sus
raíces, los atributos r1, r2 como raíces reales, y los atributos i1, i2 como
raíces imaginarias.
17
Universidad Central de Venezuela. Recopilación y Preparación Prof. Yusneyi Carballo
Escuela de Computación - Algoritmos y Programación Octubre 08
c) Los atributos raíces de la ecuación deben ser calculadas por el método
Constructor a través de la llamada a una acción denominada Resolver. El
método Constructor tendrá tres parámetros, que permitirán inicializar los
coeficientes de la ecuación (a, b y c) quienes también son atributos.
d) La clase Ecuación2doGrado tendrá un método para escribir las raíces llamado
Imprimir. Este método no tendrá parámetros.
e) Usted debe decidir cual será el método de acceso de los métodos, pero los
atributos son privados.
f) Usted debe especificar tanto en el algoritmo como en el cuadro que representa
a la clase cómo es la especificación de los atributos y de los métodos.
g) Además del algoritmo de la clase Ecuación2doGrado usted debe crear un
algoritmo Principal_UsarEcuación en donde se soliciten al usuario y se lean
los valores iniciales de los coeficientes de cada ecuación, y se usen mensajes a
los métodos de la clase Ecuación2doGrado para crear 3 ecuaciones de
segundo grado, calcular sus raíces e imprimir los resultados.

18
Universidad Central de Venezuela. Recopilación y Preparación Prof. Yusneyi Carballo
Escuela de Computación - Algoritmos y Programación Octubre 08
UNIVERSIDAD CENTRAL DE VENEZUELA Miércoles, 07 de julio de 2004
FACULTAD DE CIENCIAS
ESCUELA DE COMPUTACIÓN
ALGORITMOS Y PROGRAMACIÓN

SEGUNDO EXAMEN PARCIAL

1. Indique la veracidad o falsedad de los siguientes enunciados y justifique brevemente


su respuesta. (1/2 punto c/u, Total 5 puntos)
1.1. Es mejor un algoritmo escrito con una sola acción principal, que definiendo
métodos.
1.2. Es recomendable definir todos los atributos y métodos de acceso público.
1.3. Para que un método de una clase pueda usar los atributos de la misma clase,
éstos deben ser pasados por referencia.
1.4. Al invocar un método, el parámetro formal sustituye, con su valor, al
parámetro real.
1.5. Si un método A funciona para objetos de clases distintas, se dice que es homo-
mórfico.
1.6. Un método puede compartir sus datos locales con otro.
1.7. En la relación de herencia, los errores de programación se transmiten entre
clases.
1.8. Los conceptos Objeto y Clase son sinónimos y representan exactamente lo
mismo.
1.9. La relación de herencia entre clases hace al código más eficaz.
1.10. El tipo de acceso a los atributos y métodos de una clase, ayuda al
encapsulamiento.

2. En el juego de dados “craps”, un jugador tira dos dados y se calcula la suma de los
puntos en las dos caras superiores. Si la suma es 7 u 11 en el primer tiro, el jugador
gana. Si la suma es 2, 3 o 12 en el primer tiro, el jugador pierde (es decir, la casa
gana). Si la suma es 4, 5, 6, 8, 9 o 10 en el primer tiro, esa suma se convierte en el
“punto” del jugador. Para ganar, el jugador debe seguir tirando los dados hasta que
salga otra vez “su punto” (es decir, que tire ese mismo valor de punto). El jugador
pierde si tira un 7 antes de llegar a su punto. Se desea que usted simule el juego
implementando la acción principal y los métodos LanzarDado, Cuadrado y Doble para:
(8 puntos)
• Permitir que el usuario haga una apuesta.
• Si se obtiene 7 u 11 en el primer lanzamiento, el premio es lo apostado elevado
al cuadrado. Por limitaciones técnicas, el cuadrado del monto debe ser
calculado con sumas sucesivas.
• Si se gana, pero no en el primer lanzamiento, el usuario recupera el monto
apostado y su equivalente por parte de la casa, es decir, recibe como pago a su
jugada el doble de lo apostado.
• Para lanzar el dado, se dispone de una función Aleatorio() que genera un
número entre 1 y 6. Ud. debe mostrar cómo sería el encabezado de dicha
función y luego usarla en su respuesta.

19
Universidad Central de Venezuela. Recopilación y Preparación Prof. Yusneyi Carballo
Escuela de Computación - Algoritmos y Programación Octubre 08
3. En el algoritmo de la siguiente página se desea que Ud. determine: (7 puntos)
3.1.Valores que se escriben. Cambios ocurridos sobre las variables involucradas.
(Traza del algoritmo).
3.2.Qué cambios se deberían hacer en el algoritmo para que dentro del constructor de
la clase Frame se puedan inicializar los atributos heredados, sin necesidad de
soportarse sobre el constructor de la clase Contenedor, pero sin permitir que la
clase Principal acceda directamente a dichos atributos. Justifique su respuesta.
3.3.Que cambios se deberían realizar en el algoritmo para que desde la acción
Principal se pudieran agregar las siguientes instrucciones, dentro de su secuencia
de operaciones:
C.largo 18; C.nombre “componente1”;
Justifique su respuesta.
UNIVERSIDAD CENTRAL DE VENEZUELA Miércoles, 04 de febrero de 2003
FACULTAD DE CIENCIAS
ESCUELA DE COMPUTACIÓN
ALGORITMOS Y PROGRAMACIÓN
SEGUNDO EXAMEN PARCIAL

1. Indique la veracidad o falsedad de los siguientes enunciados y justifique brevemente


su respuesta.
(1/2 punto c/u, total 5 puntos)
1.1. Utilizar acciones y/o funciones con datos globales es más portable que hacerlo
con parámetros.
1.2. La importancia del “ambiente de referenciación” es que indica el tipo de pase
de parámetros hacia una función o acción.
1.3. Si un parámetro se pasa por referencia, esto indica que al salir de la acción o
función que lo manipula, su valor original se conservará para otras unidades de
programa.
1.4. Si los parámetros se pasan por referencia, se podría decir que “la acción está,
de cierta forma, retornando valores”.
1.5. El uso de funciones y acciones hace más legible un programa.
1.6. Una unidad de programa puede compartir sus datos locales con otra.
1.7. El uso de variables locales hace a los subprogramas independientes.
1.8. Los parámetros formales son los utilizados en el cuerpo del algoritmo al
momento de invocar a una función o acción.
1.9. El pase de parámetros por valor es más eficiente que el pase por referencia.
1.10. Cuando un subprograma debe retornar un valor específico, es preferible definir
una función y no una acción

2. Dado el siguiente esquema de código

Entero min, complemen, iesimo; Acción EscribirResultados()


Escribir (“El mínimo dígito en “+ A + “es: ”+ min);
Función Mínimo (Entero X)  Entero Escribir (“El complemento de “ + A + “es: ”+ complemen);
# Retorna el mínimo de los dígitos que conforman a Escribir (“El elemento en la posición ” + i + “de “ + A + “es: ”
X + iesimo);
20
Universidad Central de Venezuela. Recopilación y Preparación Prof. Yusneyi Carballo
Escuela de Computación - Algoritmos y Programación Octubre 08
FFunción FAcción

Función Hallar_i (Entero X; Entero i)  Entero Acción Principal


# Retorna el i-ésimo de los dígitos que conforman a Entero A, j;
X Leer (A); Leer (j);
FFunción # Ei = {A y j son enteros de N dígitos}
min  Mínimo(A);
Función Complemento (Entero X)  Entero iesimo  Hallar_i(A,j);
# Retorna un entero conformado por los complemen  Complemento(A);
# complementos de los dígitos de X EscribirResultados();
FFunción
# Ef = {Se imprimieron los resultados}
FAcción Principal

Se desea que usted desarrolle las funciones Minimo, Hallar_i y Complemento (ver
próxima página) de acuerdo a lo que indican sus respectivas especificaciones.
(valor 3 puntos)
NOTA: Para obtener el complemento con base en 10, se toma y descompone un
número de k dígitos, se calcula lo que le falta a cada dígito para llegar a 9 y se
reconstruye el nuevo número con los complementos obtenidos.
Ejemplo: Si N= 3256, COMPLEMENTO = 6743
Y se calcula sumando a cada dígito lo que le falta para llegar a 9, es decir, lo que se le
suma a 3 para llegar a 9 (6), lo que se le suma a 2 para llegar a 9 (7), a 5 para llegar a
9 (4) y finalmente, lo que se le suma a 6 para llegar a 9 (3)

2. Un número perfecto, es un entero que es igual a la suma de los divisores positivos


menores que él mismo (divisores propios). Así, 6 es un número perfecto, porque sus
divisores propios son 1, 2 y 3; y 6 = 1 + 2 + 3. Los cuatro siguientes números
perfectos son 28, 496, 8128 y 33.550.336.
Si un número es mayor que la suma de sus divisores propios, se dice que es
excesivo: los divisores propios de 8 son 1, 2 y 4, 1 + 2 + 4 = 7 < 8, por tanto 8 es
excesivo.
Si la suma de los divisores de un número es mayor que él, entonces se dice que el
número es defectuoso, por ejemplo, 12 (cuyos divisores propios son 1, 2, 3, 4 y 6) es
defectuoso, ya que 12 < 16 = 1 + 2 + 3 + 4 + 6.
Se desea que usted construya una función que, dado un número entero, retorne como
resultado el tipo de número que es (“defectuoso”, “perfecto” o “excesivo”).
(valor 4 puntos)

3. Dado el siguiente algoritmo


Clase ejercicio acción cálculo (entero b, var entero a, var entero c)
Entero a, b, c; a ← a * 2 + b;
función número1 (var entero a, entero b) → entero c ← a + 1;
entero c; b ← c + 1;
c ← b + 2 + a + 3; escribir (a, b, c);
a ← c; c ← número2 (c, b);
b ← c; facción;
escribir (a, b, c); acción principal()
21
Universidad Central de Venezuela. Recopilación y Preparación Prof. Yusneyi Carballo
Escuela de Computación - Algoritmos y Programación Octubre 08
← a + c + b; entero a;
ffunción; a ← 3; b ← 2; c ← 1;
función número2 (var entero b, entero c) → entero cálculo (número1 (c, a), b, a);
a ← 1; escribir (a, b, c);
c ← b + 2 + a + 3; a ← número1 (b, a);
a ← b - c; escribir (a, b, c);
b ← 5 + a; facción
escribir (a, b, c); fclase ejercicio
← a + c + b + número1 (a, b);
ffunción;

Se desea que usted haga una corrida en frío del mismo, mostrando los valores que
van tomando las variables y la salida del programa. (4 puntos)

4. Elabore una función llamada contenido que, dados dos enteros positivos n y m,
devuelva verdadero si el número m está contenido en n y falso en caso contrario.
Utilizando esta función elabore un programa que, dada una secuencia de pares de
enteros positivos terminada en 0, escriba los pares que cumplan la condición de que
uno de los números está contenido en el otro. (4 puntos)
Ejemplo: Dada la secuencia: 34 534 35 876 2435 43 465 2978 6548 64
0
Se escribirá: 34 534 2435 43
GDAP

22
Universidad Central de Venezuela. Recopilación y Preparación Prof. Yusneyi Carballo
Escuela de Computación - Algoritmos y Programación Octubre 08
UNIVERSIDAD CENTRAL DE VENEZUELA JUNIO 2005
FACULTAD DE CIENCIAS
ESCUELA DE COMPUTACIÓN
ALGORITMOS Y PROGRAMACIÓN

QUIZ 2

1. Dado el siguiente algoritmo se quiere que muestre lo siguiente:


1.1. Estado local de las variables durante la corrida en frío del algoritmo.
1.2. Localidad / No localidad de las variables para cada uno de los métodos
(variable locales y no locales).
1.3. Impresiones del programa (resultados que se escriben)

Clase ObjetoA Clase Ejercicio


Público Entero A, B; Publico ObjetoB obj1;
Protegido Lógico C;
Privado Acción Inicializar (Entero X, Var Entero Y)
Constructor (Entero x, var Entero y) Obj1.ObjetoB(x, y);
A  0; B  1; FAcción
fConstructor
Privado Función Método1 (Entero x,Var Entero Y)  Entero
Protegido Acción Sumar (var Entero x)  Método2(x, y) + Método3 (x);
x  x + 1; fFunción
fAcción
fClase ObjetoA Privado Función Método2 (Var Entero y, Entero x)  Entero
Obj1.Calcular(y);
Clase ObjetoB hereda de ObjetoA Obj1.Mostrar();
Constructor (Entero x, Entero y)  Obj1.Sumar(x, y);
A  x * 2; FFunción
B  y + 1;
y  A + B; Privado Función Método3 (var Entero x)  Entero
fConstructor Entero y;
y  2;
Púlico Acción Calcular(Entero x) x  y + Obj1.A + obj1.B;
Si (x > 0) entonces  x;
C  Verdadero; FFunción
Sino
C  falso; Acción Principal
fsi Entero x, y;
fAcción x  2; y  1;
Inicializar (y , x);
Púlico Función Sumar(Entero x, Entero y) Escribir (x + “, ” + y);
 Entero Escribir (Obj1.Sumar (
A  A + y; Metodo1(x, y));
B  B + x; Escribir (x + “, ” + y);
 x + y; Obj1.Mostrar();
fAcción fAcción

Púlico Acción Mostrar() fClase Ejercicio


Escribir(A); Escribir(B);
Escribir(C);
fAcción
fClase ObjetoB

23
Universidad Central de Venezuela. Recopilación y Preparación Prof. Yusneyi Carballo
Escuela de Computación - Algoritmos y Programación Octubre 08
2. Escribir un algoritmo que solicite repetidamente parejas de números, hasta que al
menos un número de la pareja sea cero. Por cada pareja el programa debe utilizar una
función para calcular la media armónica de los dos números.
Media Armónica = 2,0 * x * y / (x + y)

3. Dada la siguiente especificación de métodos para una clase llamada Vector3D que
permite manipular vectores de tres componentes (coordenadas x, y, z):

Método Descripción
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

Igual (Vector3D v) Retorna verdadero si el vector3D v es igual al vector


invocante.
Norma() Permite obtener la norma del vector. La norma se puede
definir como la suma de todos los elementos del vector al
cuadrado. Ejemplo:
Vector A = (1, 2, 5)
La norma de A = 1^2 + 2^2 + 5^2 = 1 + 4 + 25 = 30
toString() Devuelve un String con el vector llamante expresado de la
forma X, Y, Z

Proponga algoritmos que utilicen la Clase Vector3D para:


3.1. Implementar dos constructores, uno al cual se le pasan parámetros con las
coordenadas del vector, y otro, al cual no se le pasan parámetros y permite crear
un vector3D con coordenadas iguales a cero (vector en el origen (0,0,0) )
3.2. Implementar los métodos antes especificados
3.3. Crear y almacenar 2 vectores dados por el usuario (V1, V2)
3.4. Crear y almacenar un vector cuyas componentes sean cero (V3),
3.5. Calcular la suma de V1 + V2 + V3,
3.6. Realizar el productor escalar de V1 Y V2
3.7. Calcular la norma del Vector V3.
3.8. Imprimir todos los resultados.

24

También podría gustarte