You are on page 1of 9

Universidad Nacional de San Agustín

Escuela Profesional de Ingenieríai de Sistemas


Fundamentos de Programación II
Practica de Laboratorio 1:
Arreglos

OBJETIVOS

 Crear e inicializar arreglos


 Uso del atributo length de arreglos
 Copiar valores de un arreglo a otro mediante System.arraycoy()
 Crear métodos que reciban arreglos como parámetros.
II

MARCO TEORICO

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

Figura 2: Ejemplo de acceso a elementos mediante el índice

Ing. Elizabeth Vidal Duarte, In. Marco Aedo López 1


Creación e Inicialización de Arreglos

Estilo 1:

Estilo 2:

Valores por defecto

Propiedad length de los arreglos

Suponga que creamos e inicializamos un arreglo con 5 elementos:

Para imprimir el contenido tenemos dos formas de hacerlo

Version 1: utilizando un número

Versión 2: utilizando length

Ing. Elizabeth Vidal Duarte, In. Marco Aedo López 2


System.arraycopy

There is also a method in the System class, System.arraycopy(), that will copy a section of elements from one
array to another (it also works correctly, copying elements within a single array). If the number of elements to
copy is large, System.arraycopy() will probably be faster than your hand-written for-loop
System.arraycopy(source-array, source-index, dest-array, dest-index, length-to-copy);

Arrays.equals(), deepEquals()

 The default "a.equals(b)" does not do a deep comparison for arrays, it just compares the two pointers.
This violates the design principle of least surprise, but we're stuck with it for backwards compatibility for
now.

 Use the static equals() in the Arrays class -- Arrays.equals(a, b) -- this checks that 1-d arrays contain the
same elements, calling equals() on each pair of elements. For multi-dimensional arrays, use
Arrays.deepEquals() which recurs to check each dimension.

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

POLITICA DE COLABORACION
La política del curso es simple, a menos que se exprese lo contrario en el laboratorio, siéntase libre de colaborar con sus
compañeros en todos los laboratorios, pero debe notificar expresamente con quien ha colaborado. La colaboración con
alumnos, que no están matriculados en el curso está prohibida. Los laboratorios y asignaciones han sido desarrollados para
ayudarlo a comprender el material. Conozca su código y esté preparado para revisiones individuales de código. Durante las
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

Ing. Elizabeth Vidal Duarte, In. Marco Aedo López 3


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

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 mas 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.
Ing. Elizabeth Vidal Duarte, In. Marco Aedo López 4
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.

Cada línea representando una mutación consiste en

(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 cadeana adn -> “AAAGGGGGCC”


Ingrese mutacion -> amp 3 7

AAAGGGGGGGGGGCC

Ejemplo de ejecución 2

Ingrese cadeana adn -> “AAAGGGGGCC”


Ingrese mutacion -> del 3 7

AAACC

Ejemplo de ejecución 3

Ingrese cadeana adn -> “AAAGGGGGCC”


Ingrese mutacion -> inv 3 8

AAACGGGGGC

Ing. Elizabeth Vidal Duarte, In. Marco Aedo López 5


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();

}
}

Ing. Elizabeth Vidal Duarte, In. Marco Aedo López 6


2.JUEGO DEL AHORCADO

En este ejercicio a usted se le solicita 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.floor(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 ){
Ing. Elizabeth Vidal Duarte, In. Marco Aedo López 7
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"+
"=========";

Ing. Elizabeth Vidal Duarte, In. Marco Aedo López 8


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");

}
}

Ing. Elizabeth Vidal Duarte, In. Marco Aedo López 9

You might also like