• No se han encontrado resultados

Universidad Nacional de San Agustín Escuela Profesional de Ingeniería de Sistemas Fundamentos de Programación II Practica de Laboratorio 1: Arreglos

N/A
N/A
Protected

Academic year: 2019

Share "Universidad Nacional de San Agustín Escuela Profesional de Ingeniería de Sistemas Fundamentos de Programación II Practica de Laboratorio 1: Arreglos"

Copied!
9
0
0

Texto completo

(1)

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)

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

(3)

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

(4)

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.

(5)

(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

(6)

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

(7)

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;

(8)

// 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"+

(9)

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

Figure

Figura 1: Ejemplo de arreglo de 5 elementos

Referencias

Documento similar

Cedulario se inicia a mediados del siglo XVIL, por sus propias cédulas puede advertirse que no estaba totalmente conquistada la Nueva Gali- cia, ya que a fines del siglo xvn y en

No había pasado un día desde mi solemne entrada cuando, para que el recuerdo me sirviera de advertencia, alguien se encargó de decirme que sobre aquellas losas habían rodado

Abstract: This paper reviews the dialogue and controversies between the paratexts of a corpus of collections of short novels –and romances– publi- shed from 1624 to 1637:

Después de una descripción muy rápida de la optimización así como los problemas en los sistemas de fabricación, se presenta la integración de dos herramientas existentes

por unidad de tiempo (throughput) en estado estacionario de las transiciones.. de una red de Petri

Por lo tanto, en base a su perfil de eficacia y seguridad, ofatumumab debe considerarse una alternativa de tratamiento para pacientes con EMRR o EMSP con enfermedad activa

The part I assessment is coordinated involving all MSCs and led by the RMS who prepares a draft assessment report, sends the request for information (RFI) with considerations,

De hecho, este sometimiento periódico al voto, esta decisión periódica de los electores sobre la gestión ha sido uno de los componentes teóricos más interesantes de la