Laboratorio 15 Arreglos Unidimensionales

ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS FUNDAMENTOS DE PROGRAMACIÓN I 2016 I LABORATORIO 15 - ARREGLOS UNIDIMENSIO

Views 99 Downloads 0 File size 135KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS FUNDAMENTOS DE PROGRAMACIÓN I 2016 I LABORATORIO 15 - ARREGLOS UNIDIMENSIONALES MUTACIONES ADN (NATIONAL UNIVERSITY OF SINGAPORE) I  

OBJETIVOS Familiarizar al alumno con la creación de métodos TIEMPO ESTIMADO:4 horas II CONSIDERACIONES DE EVALUACIÓN



No deberá utilizar constructores no vistos en clase



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

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 15– 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 Este laboratorio requiere el desarrollo de un ejercicio. No deberá utilizar sintaxis y constructores que no han sido cubiertos en teoría. Un consejo: Programe Incrementalmente. Esto es ahora más importante que nunca. Nuestros programas se vuelven ahora mas largos y complicados. No trate de terminar el programa en un solo intento. Avance poco a poco y vaya compilando. Note que: o

Debe asumir que los datos de ingreso son correctos

o

Debe utilizar la clase Scanner con System.in System.out para salida de datos.

o

Debe utlizar println() en vez de print() para la ultima línea que su programa genera como salida.

o

Solo debe utilizar un único objeto de la clase Scanner, esto es no deben haber mas de una variable de esta clase.

o

Pruebe sus programas con sus propios datos.

para ingreso de datos y

1.1 Objetivos de aprendizaje 

Utilización de Arreglos (Libro 10.1 - 10.6)



Copiando un Arreglo (Libro 10.5)



Iteración y (Libro 4.3, 4.8, 4.9, 4.10)

1.2 Tarea 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.

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.

Por ejemplo "amp 2 4" en "AGCTAGATT" resulta en "AGCTACTAGATT". Como CTA es la porcion de ADN a ser duplicada la parte duplicada se muestra en azul para su referencia y mayor comprensión. Lo siguiente es siempre verdadero acerca del ingreso del ADN en cada punto de tiempo: 

Siempre hay un comando, seguido por un espacio, seguido por un entero (denotando un índice de inicio), seguido por un espacio, seguido por un entero (denotando un índice final)



Siempre hay solo un espacio entre el comando y el índice de inicio



Siempre hay solo un espacio entre el índice de inicio y el índice de fin.



Todos los índices son inclusivos.



El índice inicial es siempre menor o igual que el índice final.



Todas las cadenas ADN consisten solamente en 4 posibles caracteres mayúsculas que son 'A', 'T', 'C', 'G'.



El número de comandos es siempre exactamente igual a n.



El largo de la cadena ADN siempre será al menos 1 o a lo mucho 1000.



El ingreso de los comandos de mutación son SIEMPRE en letras minúsculas.



Las mutaciones han sido ampliamente simplificadas y debe programarlas de acuerdo a la descripción dada.

La salida consiste en una sola línea contiendo la cadena ADN mutada. No tiene permitido trabajar con métodos de la clase String. Tampoco tiene permitido trabajar con la clase StringBuffer (Vea 1.5 Notas Importantes). Para ser más especifico, solo puede trabajar con un arreglo de caracteres (char)

1.3 Ejemplos de Ejecución Ejemplo de ejecución 1 Ingrese cadeana adn -> “AAAGGCCTTAGCTTAGATTACGATCG” Cantidad de mutaciones -> 1 Ingrese mutacion -> amp 2 7 AAAGGCCTAGGCCTTAGCTTAGATTACGATCG

Ejemplo de ejecución 2 Ingrese cadena adn ->AAAGGCCTTAGCTTAGATTACGATCG Cantidad de mutaciones ->2 Ingrese mutacion -> amp 2 7 Ingrese mutacion -> del 10 12 AAAGGCCTAGTTAGCTTAGATTACGATCG Nota aclaratoria: Para una mejor compresión se muestra a continuación paso a paso las transformaciones de la cadena ADN Ingrese cadena adn ->AAAGGCCTTAGCTTAGATTACGATCG amp 2 7 AAAGGCCTAGGCCTTAGCTTAGATTACGATCG del 10 12 AAAGGCCTAGTTAGCTTAGATTACGATCG

Ejemplo de ejecución 3 Ingrese cadena adn -> AAAGGCCTTAGCTTAGATTACGATCG Cantidad de mutaciones -> 3 Ingrese mutacion -> amp 2 7 Ingrese mutacion -> del 10 12 Ingrese mutacion -> del 0 2 GGCCTAGTTAGCTTAGATTACGATCG

Ejemplo de ejecución 3 Ingrese cadena adn -> GGCCTTAGCTTAGATTACGATCG Cantidad de mutaciones -> 1 Ingrese mutacion -> inv 1 5 GTTCCGAGCTTAGATTACGATCG

1.5 Notas importantes Los Strings son inmutables – esto significa que una vez que un objeto String ha sido creado, este no puede ser modificado. Cuando realizamos la concatenación de dos cadenas, realmente estamos creando un nuevo string. Por ejemplo, si tenemos el bucle mostrado a continuación: String s = "ABCDE"; String output = "";

for (int i = 0; i < s.length; i++) { output += "" + s.charAt(i) + s.charAt(i); } System.out.println(output); Realmente se estarán creando múltiples objetos String en cada iteración del bucle en la línea azul. Esto es bastante ineficiente en manejo de memoria, especialmente para strings bastante largos. El largo de la cadena ADN es alrededor de de 3 billones de pares base. 

Usted no tiene permitido realizar excesivas concatenaciones (como las mostradas en el ejemplo).



No tiene permitido utilizar los métodos de la clase String (esto buscando garantizar el objetivo de la práctica: manipular un arreglo de chars).



La nota será CERO si usted no utiliza un arreglo de caracteres.



Debe asumir que el largo de la cadena ADN es entre 1 y 1000 caracteres. Esto significa que la cadena ADN nunca excederá los 1000 caracteres.



Debe asumir que los comandos de mutación no deben resultar en un mensaje de error "array index out of range" (error de índice de arreglo fuera de rango).

Se le proporciona una código parcial que no deberá ser modificado import java.util.*; public class Mutaciones { // Se recomienda crear tres metodos // amplificar() // eliminar() //invertir public static void main(String[] args) { Scanner sc = new Scanner(System.in); String adn = sc.next(); int contador = sc.nextInt(); // numero de mutaciones

int adnLargo = adn.length(); char[] adnArray = new char[20]; for (int i = 0; i < adn.length(); i++) { adnArray[i] = adn.charAt(i); } /* * Aqui se escribe su solucion * asegurese de actualizar la variable adnLargo */

} }

String adnMutado = new String(adnArray); adnMutado = adnMutado.substring(0, adnLargo); System.out.println(adnMutado);