1. Considere la sucesión de números de Fibonacci que se inicia con

Anuncio
UNIVERSIDAD CENTRAL DE VENEZUELA
FACULTAD DE CIENCIAS
ESCUELA DE COMPUTACIÓN
SEMESTRE II-2014
PRÁCTICA #1
INTRODUCCIÓN AL LENGUAJE JAVA
1. Considere la sucesión de números de Fibonacci que se inicia con los siguientes elementos: 0, 1, 1, 2, 3,
5, 8, 13, 21, 34, … La sucesión de números de Fibonacci se define matemáticamente por la siguiente
relación de recurrencia:
Fn+2 = Fn+1 + Fn- para n 0, con F0 = 0 y F1 = 1
A continuación se presenta un algoritmo en pseudocódigo para calcular y escribir los elementos de esta
sucesión.
Clase Fibonacci {
/* Imprimir por consola los primeros
public main () {
Entero i, n, a, b, c;
n = 5; // la variable n representa
a= 0; // la variable a representa
b = 1; // la variable b representa
// la variable c representa a Fn+2
i = 1;
Escribir("La sucesión de fibonacci
Mientras (i
n) Hacer
Si (i == 1) entonces
c = a;
Sino
Si (i == 2) entonces
c = b;
Sino
c = a + b;
a = b;
b = c;
Fsi;
Fsi;
Escribir( c );
i = i+1;
FMientras;
n valores en la secuencia de Fibonacci */
el número de elementos de la sucesión
a F n en la relación recursiva
a F n+1 en la relación recursiva
en la relación recursiva
es:");
Realice lo que se indica a continuación:
a) Generar un programa en Java que implemente el pseudocódigo utilizando una estructura de control
while.
b) Modifique el programa que obtuvo en la parte (a) de manera que el valor de la variable n se introduzca
por consola.
c) Modifique el programa que obtuvo en la parte (b) para obtener un programa equivalente utilizando
una estructura de control for en lugar de la estructura de control while.
d) Modifique el programa que obtuvo en la parte (c) para obtener un programa equivalente que utilice una
estructura de selección múltiple switch en lugar de la estructura de selección compuesta anidada.
2. Para la estimación del esfuerzo de desarrollo cuando aun no se ha desarrollado el código de un
producto de software, una manera de estimar el esfuerzo de desarrollo se basa en el concepto conocido
como puntos de función. Los puntos de función miden el número de funcionalidades que tiene un sistema
de acuerdo con lo que se describe en su especificación. En la especificación de un sistema, los elementos
de interés para la estimación del esfuerzo son: entradas externas (data o información de control que se
genera en el exterior del sistema. Por ejemplo, número de archivos que no se generan en el sistema, pero
que el sistema requiere); salidas externas (un proceso elemental, es decir un conjunto de acciones dentro
del sistema, que genera data o información de control para utilizarla en el exterior del sistema. Por
ejemplo, número de reportes y/o mensajes al usuario); información externa (número de entradas
interactivas que requieren una respuesta como resultado de recuperar la data. La respuesta no contiene
data derivada, es decir transformaciones sobre la data, que reside en el sistema); archivos externos
(número de archivos que se generan para otros sistemas); archivos internos (número de archivos que no
son visibles ni utilizados fuera del sistema). Es fundamental determinar el número de cada uno de los
elementos de interés. A cada uno de estos, se le asigna una complejidad subjetiva en términos de si esta es
simple (s), promedio (p) o compleja (c). Dada la variedad de elementos de interés, es usual que cada
elemento tenga un factor de peso diferente dependiendo de la complejidad. En la Tabla 1 se presentan los
valores del factor de peso de la complejidad para cada uno de los elementos de interés.
Tabla 1. Factores de pesos.
Elemento de interés
Simple
Promedio
Compleja
(s)
(p)
(c)
entradas externas
3
4
6
salidas externas
4
5
7
información externa
3
4
6
archivos externos
5
7
10
archivos internos
7
10
15
Una vez que se ha cuantificado cada elemento de interés (EI), se le asocia el factor de peso (peso)
correspondiente y se calcula los puntos de función no ajustados UFC que se define a través de la siguiente
expresión:
UFC =
archivos _ int ernos
∑ EI
i
i = entradas _ externas
x
pesoi
De manera informativa, para calcular el número de puntos de función FP se multiplica UFC por lo que se
conoce como factor de complejidad técnica TCF. Sin embargo, para este ejercicio el interés se centra en
automatizar el cálculo de UFC. Para esto asuma lo siguiente:
Sea un archivo factorDePesos.txt que contiene números enteros positivos, separados por un espacio, que
representan los factores de pesos según la Tabla 1. Es decir, tres números consecutivos en el archivo (a b
c)i representan el valor del factor de peso de la complejidad simple (a), promedio (p) y compleja (c) de un
elemento de interés i, donde i se refiere al i-ésimo elemento del conjunto de tipos de elementos de interés.
Los tipos de elementos de interés son: {entradas externas, salidas externas, información externa, archivos
externos, archivos internos}. Ejemplo: factorDePesos.txt = {3 4 6 4 5 7 3 4 6 5 7 10 7 10 15}.
a) Se requiere un programa en Java que lea desde el archivo los números que representan las
complejidades de los elementos de interés y los almacene en un arreglo.
b) Modifique el programa que obtuvo en la parte (a) de manera que utilice las clases definidas en el
paquete java.util, que usted considere convenientes, por ejemplo Vector, ArrayList o List, para la
implementación del arreglo.
c) Incorpore en el programa que obtuvo en la parte (b) instrucciones para solicitar la entrada por consola
de los números de elementos de cada tipo de elemento de interés i y su complejidad j asignada, donde j
puede ser ‘s’ (simple), ‘p’ (promedio) o ‘c’ (compleja) y almacénelo en un archivo especificacionData.txt.
d) Incorpore en el programa que obtuvo en la parte (c) instrucciones para calcular UFC.
e) Ejecute el programa que obtuvo en (d) con las siguientes entradas: 4 archivos de entradas externas y
de complejidad p, 5 salidas externas de complejidad p, 4 información externa de complejidad s, 10
archivos externos de complejidad c y 7 archivos internos de complejidad p. Muestre el resultado del
cálculo de UFC por consola.
3. Se requiere de un programa en Java que implemente la autenticación de usuarios. El sistema solicita
por consola el login del usuario que es un campo de 6 caracteres alfanuméricos. Una vez que el usuario
suministro su login. Si el login es válido, el sistema le solicita la clave y verifica que la clave coincida con
la clave que tiene almacenada. Si coincide, el sistema imprime por consola el mensaje “autenticación
exitosa”, en caso contrario “clave invalida”. Si el login no es válido, el sistema imprime por consola
“login inválido”. El sistema mantiene el conjunto válido de login-clave.
a) Defina un objeto que implemente el conjunto valido de login-clave del sistema.
b) Defina una clase Cliente con el método estático main().
c) En el cuerpo del método estático main() incluya instrucciones para:
i) ingresar por consola una secuencia de 6 caracteres que representa el login.
ii) ingresar por consola una secuencia de 6 caracteres alfanuméricos que representa la clave.
iii) crear instancia de la clase Autenticacion. La clase Autenticacion define como atributos login y
clave y los métodos verificarLogin y verificarClave. El método verificarLogin tiene el parámetro login y
retorna un booleano. El método verificarClave tiene dos parámetros: login y clave y retorna un booleano.
iv) Imprimir por consola el resultado de cada autenticación.
d) Ejecute el programa con varios pares login-clave de manera que se imprima al menos cada uno de los
tres mensajes indicados en el enunciado.
Descargar