Universidad Nacional de San Agustín
Escuela Profesional de Ingeniería de Sistemas
Fundamentos de Programación II
Practica de Laboratorio 1:
Arreglos
I
OBJETIVOS
Crear e inicializar arreglos
Uso del atributo length de arreglos
Copiar valores de un arreglo a otro mediante System.arraycopy()
Crear métodos que reciban arreglos como parámetros
II
MARCO TEORICO
1.
Creación e Inicialización de Arreglos
Un arreglo representa una colección de elementos del mismo tipo bajo un mismo nombre. En la Figura 1 se
muestra el arreglo phoneList que contiene 5 elementos.
Figura 1: Ejemplo de arreglo de 5 elementos
Para acceder a los elementos de un arreglo se hace uso de los índices. El primer índice siempre es el 0. En la
figura 2 se muestra como se accede a los elementos del arreglo
2.
Creación e Inicialización de Arreglos
Estilo 1:
Estilo 2:
3.
Valores por defecto
4.
Propiedad length de los arreglos
Suponga que creamos e inicializamos un arreglo con 5 elementos:
Para imprimir el contenido tenemos dos formas de hacerlo
Versión 1: utilizando un número
5.
Copia de Arreglos
Podríamos crear nuestros propios métodos que copien elemento a elemento
Pero también podemos usar
System.arraycopy
Permite copiar un número de elementos desde cualquier lugar en un arreglo a cualquier lugar en otro
arreglo
System.arraycopy(preciosEnero,0,preciosFebrero,0,6);
preciosFebrero[1]=10.99;
Argumentos:
o
Nombre arreglo origen
o
Índice del primer elemento del origen a copiar
o
Nombre del arreglo de destino
o
Índice del primer elemento a reemplazar en el destino
o
Número total de elementos a copiar
6.
Comparación de Arreglos
Se podría pensar en usar a.equals(b), pero eso sólo comparará las referencias
Usamos métodos booleanos de la clase
Arrays
Arrays.equals()
para unidimensionales y
Arrays.deepEquals()
para bidimensionales
boolean Arrays.deepEquals(Object[] a1, Object[] a2)
II
CONSIDERACIONES DE EVALUACIÓN
No deberá utilizar constructores no vistos en clase
No podrá modificar el código base entregado para este laboratorio Deberá utilizar nombre de variables significativos
Deberá realizar pruebas adicionales
El alumno deberá indicar en su código con quien colaboró
El alumno será requerido de realizar modificaciones en su código y responder a preguntas sobre el mismo Todos los ejercicios deberán traerse terminados en caso de ser tarea para la casa
Si tiene ejercicios sin terminar no importa, se revisará el avance y se discutirá sobre las dificultades encontradas.
III
revisiones es probable que se le pida realizar modificaciones y justificar sus decisiones de programación. Cada uno de sus ejercicios debe iniciar de la siguiente forma
IV
INDICACIONES GENERALES
a. Todos los ejercicios deberán ser guardados en el mismo Proyecto
b. El Proyecto deberá tener el nombre del Laboratorio y el nombre del alumno, así por ejemplo: Laboratorio 1 – Juan Perez
c. Cada Clase deberá tener el nombre del ejercicio, así por ejemplo: Ejercicio1
d. Utilice nombres de variables significativos e. Su código deberá estar correctamente indentado f. Deberá pasar TODOS los casos de prueba
V
ACTIVIDADES
1. ADN
El Ácido Desoxirribonucleico (ADN) es un ácido nucleico que contiene las instrucciones genéticas utilizadas en el desarrollo y funcionamiento de todo ser vivo y algunos virus. El rol principal de las moléculas de ADN es almacenar la información. El ADN es casi siempre comparado con un conjunto de planos, esto porque contiene las instrucciones necesarias para construir o componer otras células, tales como proteínas y moléculas RNA. Los segmentos de ADN que llevan la información genética son llamados genes, pero otras secuencias del ADN tienen propósitos estructurales, o están involucrados en el uso de esta información genética. (Wikipedia).
Durante la reproducción de células o bajo la exposición a ciertos efectos (como la luz ultravioleta) pueden ocurrir mutaciones a un segmento del ADN. Mientras más mutaciones ocurran, puede ser desastroso (causar cáncer), también pueden ocurrir mutaciones ventajosas con un resultado evolutivo beneficioso.
En este ejercicio queremos simular los efectos de mutaciones en una cadena ADN. Por simplicidad, solo consideraremos un subconjunto seleccionado de mutaciones de cromosomas. Simularemos las siguientes mutaciones simplificadas.
o Amplificación (amp): este inserta una copia duplicada de la región especificada junto a ella.
o Eliminación (del): elimina una región seleccionada.
o Inversión (inv): invierte la orientación de una región especificada.
La primera línea de ingreso corresponde a una cadena que representa la secuencia ADN. La segunda línea consiste en un entero positivo n que representa el número de mutaciones. Las siguientes n líneas especifican las mutaciones, cada una en una sola línea.
(1) el comando de mutación (el cual puede Ser amp, del o inv),
(2) el índice de inicio (incluido), y
(3) el índice de fin (incluido). El primer carácter en la secuencia ADN tiene índice 0. Todos los comandos son en letra minúscula.
Nota: Deberá utilizar System.arraycopy
Ejemplos de Ejecución
Ejemplo de ejecución 1:
Ingrese cadena adn -> “AAAGGGGGCC” Cantidad de mutaciones -> 1
Ingrese mutacion -> amp 3 7
AAAGGGGGGGGGGCC
Ejemplo de ejecución 2:
Ingrese cadena adn -> “AAAGGGGGCC” Cantidad de mutaciones -> 1
Ingrese mutacion -> del 3 7
AAACC
Ejemplo de ejecución 3
Ingrese cadena adn -> “AAAGGGGGCC” Cantidad de mutaciones -> 1
Ingrese mutacion -> inv 3 8
AAACGGGGGC
Ejemplo de ejecución 4
Ingrese cadena adn -> AAAGGCCTTAGCTTAGATTACGATCG Cantidad de mutaciones -> 3
Ingrese mutacion -> amp 2 7 Ingrese mutacion -> del 10 12 Ingrese mutacion -> del 0 2
Código Parcial
import java.util.*;
public class Laboratorio 1 {
public static char [] amplifica(char [] adn, int inicio, int fin) {
}
public static char [] delete(char [] adn, int inicio, int fin) {
}
public static char [] invertir(char [] adn, int inicio, int fin) {
}
public static void main(String [] args) {
int inicio, fin; String tipoMutacion;
Scanner sc = new Scanner(System.in); String adn = sc.next();
int adnLargo = adn.length(); char[] adnArray = new char[50];
for (int i = 0; i < adn.length(); i++) {
adnArray[i] = adn.charAt(i); }
System.out.println("Ingrese inicio: "); inicio = sc.nextInt();
System.out.println("Ingrese fin: "); fin = sc.nextInt();
System.out.println("Tipo de mutacion"); tipoMutacion = sc.next();
2. JUEGO DEL AHORCADO
En este ejercicio se le solicita a usted implementar el juego del ahorcado utilizando el código parcial que
se le entrega.
Deberá considerar que:
El juego valida el ingreso de letras solamente. En caso el usuario ingrese un carácter equivocado
le dará el mensaje de error y volverá a solicitar el ingreso
El juego no permite al usuario ingresar una letra ingresada previamente
El método ingreseLetra() debe ser modificado para incluir las consideraciones de validación
Puede crear métodos adicionales
// Version del ahorcado al 70%
import java.util.Scanner; public class Ejercicio4 {
public static String getPalabraSecreta(String [] lasPalabras) {
String palSecreta; int ind;
int indiceMayor = lasPalabras.length -1; int indiceMenor =0;
ind = (int) ((Math.random() * (indiceMayor - indiceMenor + 1) + indiceMenor);
return lasPalabras[ind]; }
public static void mostrarBlancos(String palabra) {
for(int i=0; i< palabra.length(); i++) System.out.print("_ " );
}
public static String ingreseLetra() {
String laLetra;
Scanner sc = new Scanner(System.in);
System.out.println("Ingrese letra: "); laLetra = sc.next();
while(laLetra.length()!= 1) {
System.out.println("Ingrese letra: "); laLetra = sc.next();
}
return laLetra;
// Este metodo debe completarlo
public static boolean letraEnPalabraSecreta(String letra, String palSecreta ){
return false; }
//Este metodo debe completarlo
public static void mostrarBlancosActualizados(String letra) {
System.out.println("PROCESANDO..."); }
public static void main(String []args) {
String ahor1 = " +---+ \n"+ " | | \n" + " | \n" + " | \n" + " | \n" + " | \n" + "========= ";
String ahor2 = " +---+ \n"+ " | | \n"+ " O | \n"+ " | \n"+ " | \n"+ " | \n"+ "=========";
String ahor3 = " +---+ \n"+ " | | \n"+ " O | \n"+ " | | \n"+ " | \n"+ " | \n"+ "=========";
String ahor4 = " +---+ \n"+
" | | \n"+
" O | \n"+
" /| | \n"+
" | \n"+
" | \n"+
"=========";
String ahor5 = " +---+ \n"+
" | | \n"+
" O | \n"+
" /|\\ | \n"+
" | \n"+
" | \n"+
"=========";
String ahor6 = " +---+ \n"+
" | | \n"+
" O | \n"+
" /|\\ | \n"+
" / | \n"+
" | \n"+
String ahor7 = " +---+ \n"+ " | | \n"+ " O | \n"+ " /|\\ | \n"+ " / \\ | \n"+ " | \n"+ "=========";
String [] figuras ={ahor1, ahor2, ahor3,ahor4,ahor5,ahor6,ahor7}; int contador = 1;
String letra;
String [] palabras = {"programacion", "java", "identacion", "clases", "objetos", "desarrollador", "pruebas"};
String palSecreta = getPalabraSecreta(palabras);
System.out.println(palSecreta);
System.out.println(figuras[0]);
mostrarBlancos(palSecreta);
System.out.println("\n");
while(contador <= 6) {
letra = ingreseLetra();
if ( letraEnPalabraSecreta(letra, palSecreta ) )
mostrarBlancosActualizados(letra); else
System.out.println(figuras[contador]);
contador = contador +1;
}
System.out.println("\n");