You are on page 1of 7

ESCUELA PROFESIONAL DE INGENIERA DE SISTEMAS

FUNDAMENTOS DE PROGRAMACIN I
2016 I
LABORATORIO 15 - ARREGLOS UNIDIMENSIONALES
MUTACIONES ADN
(NATIONAL UNIVERSITY OF SINGAPORE)
I

OBJETIVOS
Familiarizar al alumno con la creacin de mtodos
TIEMPO ESTIMADO:4 horas
II
CONSIDERACIONES DE EVALUACIN

No deber utilizar constructores no vistos en clase

Deber utilizar nombre de variables significativos

Deber realizar pruebas adicionales

El alumno deber indicar en su cdigo con quien colabor

El alumno ser requerido de realizar modificaciones en su cdigo y responder a preguntas sobre el


mismo

Todos los ejercicios debern 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 poltica del curso es simple, a menos que se exprese lo contrario en el laboratorio,
sintase libre de colaborar con sus compaeros en todos los laboratorios, pero debe
notificar expresamente con quien ha colaborado. La colaboracin con alumnos, que no
estn matriculados en el curso est prohibida. Los laboratorios y asignaciones han sido
desarrollados para ayudarlo a comprender el material. Conozca su cdigo y est
preparado para revisiones individuales de cdigo. Durante las revisiones es probable
que se le pida realizar modificaciones y justificar sus decisiones de programacin. Cada
uno de sus ejercicios debe iniciar de la siguiente forma

IV
INDICACIONES GENERALES
a. Todos los ejercicios debern 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 cdigo 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 teora.
Un consejo: Programe Incrementalmente. Esto es ahora ms 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

Debe utilizar la clase Scanner con System.in


System.out para salida de datos.

Debe utlizar println() en vez de print() para la ultima lnea que su


programa genera como salida.

Solo debe utilizar un nico objeto de la clase Scanner, esto es no deben


haber mas de una variable de esta clase.

Pruebe sus programas con sus propios datos.

para ingreso de datos y

1.1 Objetivos de aprendizaje

Utilizacin de Arreglos (Libro 10.1 - 10.6)

Copiando un Arreglo (Libro 10.5)

Iteracin 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 genticas utilizadas en el desarrollo y funcionamiento de todo ser vivo y
algunos virus. El rol principal de las molculas de ADN es almacenar la informacin. El
ADN es casi siempre comparado con un conjunto de planos, esto porque contiene las
instrucciones necesarias para construir o componer otras clulas, tales como protenas
y molculas RNA. Los segmentos de ADN que llevan la informacin gentica son
llamados genes, pero otras secuencias del ADN tienen propsitos estructurales, o
estn involucrados en el uso de esta informacin gentica. (Wikipedia).
Durante la reproduccin de clulas o bajo la exposicin a ciertos efectos (como la luz
ultravioleta) pueden ocurrir mutaciones a un segmento del ADN. Mientras mas
mutaciones ocurran, puede ser desastroso (causar cncer), tambin 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

Amplificacin (amp): este inserta una copia duplicada de la regin especificada


junto a ella.

Eliminacin (del): elimina una regin seleccionada.

Inversin (inv): invierte la orientacin de una regin especificada.

La primera lnea de ingreso corresponde a una cadena que representa la secuencia


ADN. La segunda lnea consiste en un entero positivo n que representa el nmero de
mutaciones. Las siguientes n lneas especifican las mutaciones, cada una en una sola
lnea.
Cada lnea representando una mutacin consiste en
(1) el comando de mutacin (el cual puede Ser amp, del o inv),
(2) el ndice de inicio (incluido), y
(3) el ndice de fin (incluido). El primer carcter en la secuencia ADN tiene ndice 0.
Todos los comandos son en letra minscula.

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 comprensin.
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


maysculas que son 'A', 'T', 'C', 'G'.

El nmero 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 mutacin son SIEMPRE en letras


minsculas.

Las mutaciones han sido ampliamente simplificadas y debe programarlas


de acuerdo a la descripcin dada.

La salida consiste en una sola lnea contiendo la cadena ADN mutada.


No tiene permitido trabajar con mtodos de la clase String. Tampoco tiene permitido
trabajar con la clase StringBuffer (Vea 1.5 Notas Importantes). Para ser ms
especifico, solo puede trabajar con un arreglo de caracteres (char)

1.3 Ejemplos de Ejecucin


Ejemplo de ejecucin 1
Ingrese cadeana adn -> AAAGGCCTTAGCTTAGATTACGATCG
Cantidad de mutaciones -> 1
Ingrese mutacion -> amp 2 7
AAAGGCCTAGGCCTTAGCTTAGATTACGATCG

Ejemplo de ejecucin 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 compresin se muestra a continuacin paso
a paso las transformaciones de la cadena ADN
Ingrese cadena adn ->AAAGGCCTTAGCTTAGATTACGATCG
amp 2 7
AAAGGCCTAGGCCTTAGCTTAGATTACGATCG
del 10 12
AAAGGCCTAGTTAGCTTAGATTACGATCG

Ejemplo de ejecucin 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 ejecucin 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 concatenacin de dos
cadenas, realmente estamos creando un nuevo string.
Por ejemplo, si tenemos el bucle mostrado a continuacin:
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 estarn creando mltiples objetos String en cada iteracin del bucle en la
lnea 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 mtodos de la clase String (esto buscando


garantizar el objetivo de la prctica: 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 mutacin 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 cdigo 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);